share your ideas
分类: LINUX
2013-08-25 11:39:17
进程的属性:
1. 并发性:进程可以同时并发,相互之间互不干扰。
2. 动态性:进程有完整的生命周期,状态不断变化,动态的地址空间(代码,数据,进程控制块,)。
3. 交互性: 在执行过程中会与其他的进程进行直接或者间接地交互操作,同步和互斥,添加一些进程处理机制。
4. 独立性: 有一个完整的资源分配和调度的基本单位,进程的地址空间是相互独立的,只有采用某些通信机制才能实现进程间的通信。
5. 异步性 :独立,与不可预知性。
进程的类型:
1. 交互进程: 经常与用户交互,花时间等待用户的操作(shell 命令进程,文本编辑器,图形应用程序的运行)
2. 批处理进程: 不必与用户交互,后台运行,(编译,搜索)
3. 实时进程: 时间的调度要求较高,响应时间快,
进程的结构“
1. 指令和数据,程序计数器,处理器的所有寄存器,存储临时数据的进程堆栈,正在处理的进程包含处理器的一切活动。
2. Linux 是多进程的os 必须分配等待,调度。
3. 所有的进程存放在双向的循环链表中,(进程链表),头是init_task 描述符。每一项类型是task_struct 称为 进程描述符的结构。
进程的状态:
1. 运行,可中断的等待,不可中断的等待,停止太,僵尸态。
进程的小结:
1. Pid 内核之中唯一的标识一个进程。Short 的字节长度 2的16次方减1 可以再/proc/sys/kernel/pid_max 来确定。
2. 有一个指向task_struct 的currnet的指针记录正在执行的进程。
3. Fork 函数采用的写时复制页技术,内核创建进程时其资源没有没有复制过来,资源的复制仅仅是在需要写入时才复制。此前一直是共享数据。
4. 进程的终止必须保证占用资源的回收。并且通知父进程。Linux 先将其设为僵尸态,进程无法投入运行,他的存在只是为父进程提供死亡的信息。申请死亡。父进程得到进程信息,调用wait 族函数终止进程,子进程占用的多有资源被释放。
5. 进程的内存结构:
a) . linux os 采用虚拟内存管理技术,4Gb 的线性虚拟空间。用户看到的和接触的是这虚拟空间。用户(0~ 3GB) 内核空(3GB~ 4GB),不能访问内核空间,只有用户调用系统调用才可以访问内核空间,(用户进程在内核态执行),内核负责地址空间的映射。
b) . 只读段: 程序源码和只读的数据
c) 数据段: 全局和静态变量。其中可读可写的数据段已经存放在.data段 ,bbs 数据段存放在未初始化数据段(全局和静态变量)。
d) 堆栈段: 系统自动分配,释放,存放函数的参数,局部和返回地址。
e) 堆: 放动程序员态分配的数据,
f) 共享库的内存映射区,动态连接器和共享库的映射区域。
g) Linux 下的每一个进程都会在/proc 文件系统下与之对应一个目录。
Linux 下线程的分类:
1. 用户级线程: 上下文切换问题,调度算法和调度全过程有用户自行选择。Os 提供了一个线程创建,调度,撤销的功能,内核任然只对进程进程进行管理。若某个进程和总的线程调用了一个阻塞的系统调用,进程中的其他线程也同时阻塞。缺点是无法发挥多处理器的优势
2. 轻量级的进程: 内核支持的进程。内核线程的抽象对象。一个线程有多个轻量级的进程,每个轻量级的进程绑定在内核线程上
3. 内核线程: 允许不同进程中的线程按照统一调度方法调度,发挥多处理器的优势。