操作系统
文章平均质量分 75
RoyKuang07
这个作者很懒,什么都没留下…
展开
-
Linux系统编程基础知识-Linux进程地址空间和虚拟内存
转载自:Linux进程空间和虚拟内存一、虚拟内存先来看一张图(来自《Linux内核完全剖析》),如下:分段机制:即分成代码段,数据段,堆栈段。每个内存段都与一个特权级相关联,即0~3,0具有最高特权级(内核),3则是最低特权级(用户),每当程序试图访问(权限又分为可读、可写和可执行)一个段时,当前特权级CPL就会与段的特权级进行比较,以确转载 2016-05-06 11:13:18 · 507 阅读 · 0 评论 -
多进程和多线程的应用场景
大CC的博客内容目录:多进程模型多线程模型选用参考多线程和多进程模型的选用这里的线程指通过linux的pthread_create而产生的原生线程,线程资源很宝贵,能被操作系统的任务调度器看见的(不是python gevent、go gorouine里的概念); 我们讨论以下两种模型;多进程单线程模型(以下简称为多进程);单进程多线程模型(以下简转载 2016-08-24 09:18:50 · 9886 阅读 · 0 评论 -
进程间通信-消息队列
下面来说说如何用不用管道来进行进程间的通信,消息队列与命名管道有很多相似之处。一、什么是消息队列消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。 每个数据块都被认为含有一个类型,接收进程可以独立地接收含有不同类型的数据结构。我们可以通过发送消息来避免命名管道的同步和阻塞问题。但是消息队列与命名管道一样,每个数据块都有一个最大长度的限制。Linux用宏MSGMAX原创 2016-09-02 14:07:30 · 582 阅读 · 0 评论 -
进程间通信-命名管道
之前看过如何使用匿名管道来在进程之间传递数据,同时也看到了这个方式的一个缺陷,就是这些进程都由一个共同的祖先进程启动,这给我们在不相关的的进程之间交换数据带来了不方便。这里将会介绍进程的另一种通信方式——命名管道,来解决不相关进程间的通信问题。一、什么是命名管道命名管道也被称为FIFO文件,它是一种特殊类型的文件,它在文件系统中以文件名的形式存在,但是它的行为却和之前所讲的没有名字原创 2016-09-02 14:05:16 · 538 阅读 · 0 评论 -
进程间通信:管道和socketpair的区别
最近在总结之前做过的FTP服务器小项目时,突然想到服务进程和nobody进程之间的通信方式为什么不能采用其他方式时。查了点资料,总结就是socketpair和管道形式非常的类似,唯一的不同就是sockerpair支持全双工,这样在进程之间发送数据的时候变得非常的简单方便。管道pipe是半双工的,pipe两次才能实现全双工,使得代码复杂。socketpair直接就可以实现全双工socke原创 2016-09-13 15:44:51 · 3306 阅读 · 0 评论 -
进程和线程的简单解释-阮一峰老师
进程和线程的一个简单解释进程 (process)和 线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握。最近,我读到一篇 材料 ,发现有一个很好的类比,可以把它们解释地清晰易懂。1.计算机的核心是CPU,它承担了所有的计算任务。它就像一座工厂,时刻在运行。2.假定工厂的电力有限,一次只能供给一个车间使用。也转载 2016-08-23 09:25:37 · 1508 阅读 · 0 评论 -
线程安全和可重入
线程安全函数 • 概念: 线程安全的概念比较直观。一般说来,一个函数被称为线程安全的,当且仅当被多个并发线程反复调用时,它会一直产生正确的结果。 • 确保线程安全: 要确保函数线程安全,主要需要考虑的是线程之间的共享变量。属于同一进程的不同线程会共享进程内存空间中的全局区和堆,而私有的线程空间则主要包括栈和寄存器。因此,对于同一进程的不同线程来说,每个线原创 2016-08-22 21:53:33 · 413 阅读 · 0 评论 -
Linux守护进程创建
概述 守护进程是在需要在后台长期运行不受终端控制的进程,通常情况下守护进程在系统启动时自动运行,在服务器关闭的时候自动关闭;守护进程的名称通常以d结尾,比如sshd、xinetd、crond、atd等。守护进程编程规则 调用umask将文件模式创建屏蔽字设置为一个已知值(通常是0) 调用fork(),创建新进程,它会是将来的守护进程原创 2016-09-01 13:30:51 · 527 阅读 · 0 评论 -
Linux文件描述符表和文件的关系
转载1. 概述 在Linux系统中一切皆可以看成是文件,文件又可分为:普通文件、目录文件、链接文件和设备文件。文件描述符(file descriptor)是内核为了高效管理已被打开的文件所创建的索引,其是一个非负整数(通常是小整数),用于指代被打开的文件,所有执行I/O操作的系统调用都通过文件描述符。程序刚刚启动的时候,0是标准输入,1是标准输出,2是标准错误。如果此转载 2016-09-01 10:37:44 · 711 阅读 · 0 评论 -
程序员面试金典目录
转:程序员面试金典-快课网1.1 判断一个字符串中的字符是否唯一1.2 字符串翻转1.3 去除字符串中重复字符1.8 利用已知函数判断字符串是否为另一字符串的子串2.1 从链表中移除重复结点2.2 实现一个算法从一个单链表中返回倒数第n个元素2.3 给定链表中间某结点指针,删除链表中该结点2.4 求由两个链表结点组成的数之和转载 2016-08-22 09:17:55 · 660 阅读 · 0 评论 -
关于链接的总结
函数库、链接、载入编译过程一个编译过程包含如下步骤:预处理器语法和语义分析器代码生成器:将高级语言翻译成汇编语言(即狭义上的编译过程),并生成汇编文件(.s文件)优化器汇编程序:将汇编代码翻译成二进制代码(即汇编过程),并生成目标文件(.o文件)链接-载入器链接-载入器的用途载入目标文件,并确认main函数为初始进入点(即程序开始执行原创 2016-08-31 18:16:41 · 591 阅读 · 0 评论 -
main函数启动前和启动后的一些动作
一、main结束 不代表整个进程结束 (1)全局对象的构造函数会在main 函数之前执行, 全局对象的析构函数会在main函数之后执行; 用atexit注册的函数也会在main之后执行。 (2)一些全局变量、对象和静态变量、对象的空间分配和赋初值就是在执行main函数之前,而main函数执行完后,还要去执行一些诸如释放空间、释放资源使用权等操转载 2017-01-12 09:13:30 · 1322 阅读 · 1 评论