Linux 进程详解

Linux内核的七大区间
1.进程管理(进程创建,进程的三种状态,进程间的调度,调度算法...)
2.内存管理(段式管理(Linux所有段都从0开始),页式管理--地址偏移量)
3.系统调用(C语言库函数的区别)
4.网络协议(TCP/IP协议)
5.UFS--虚拟文件系统==》Linux驱动总线模型
6.驱动管理(网络设备,块设备,字符设备...)
7ARCH(对各个硬件平台的支持...RAM x86 power pc)

 

进程数据结构
进程的静态描述:由三部分组成:PCB,有关程序段和该程序段对其进行操作的数据结构集
进程控制块(PCB):用于描述进程情况及控制进程运行所需的全部信息
代码段:是进程中能被进程调度程序在CPU上执行的程序代码段。
数据段:一个进程的数据段,可以是进程对应的程序加工处理的原始数据,也可以是程序执行后产生的中间或最终数据
进程是操作系统对资源的一种抽象:一个进程:代码段、数据段,堆栈段(内存四区)+进程控制块(PCB)
PCB是操作系统感知进程存在的一个重要数据结构。

 

fork函数和vfork函数
vfork()函数有个限制,子进程必须立刻执行_exit或者exec函数,
即使fork实现了copy on write,效率也没有vfork高,但是我们不推荐使用vfork,因为几乎每一个vfork的实现,
都或多或少存在一定的问题 结论:
1.fork子进程会写时拷贝父进程的数据段;vfork子进程与父进程共享数据段 2.fork父子进程的执行次序不确定;vfork子进程先运行,父进程后运行
vfork和exec函数在一起
execve替换进程映像(加载程序),注意execve是一个系统调用;替换意味着:代码段,数据段,堆栈段,进程控制块PCB全部替换

 

posted on 2016-11-14 20:52  寒魔影  阅读(566)  评论(0编辑  收藏  举报

导航