标签:
第三章 进程管理
一、进程
1.进程就是处于执行期的程序,但并不局限于可执行代码。实际上,进程是正在执行的程序代码的实时结果。
2.执行线程是在进程中活动的对象
3.在现代操作系统中,进程提供两种虚拟机制:虚拟处理器和虚拟内存。
4.进程是调用fork()系统的结果,最后程序通过exit()系统调用退出执行。
二、进程描述符及任务结构
内核把进程的列表存放在叫做任务队列的双向循环链表中。链表中的每一项都是类型为task_struct、称为进程描述符的结构。
1.分配进程描述符
Linux通过slab分配器分配task struct,以达到对象复用和缓存着色的目的
2.进程描述符的存放
内核通过一个唯一的进程标识值或PID来标识每个进程,内核把每个进程的PID存放进它们各自的进程描述符中。
3.进程状态
进程描述符中的state域描述了进程的当前状态
4.进程上下文
当一个程序执行了系统调用或者触发了某个异常,它就陷入内核空间。此时,我们称内核“代表进程执行”并处于进程上下文中。
三、进程创建
1.UNIX的进程创建方式
2.写时拷贝
四、线程在Linux中的实现
1.线程机制提供了在同一进程内共享内存地址空间运行的一组线程,这些线程可以共享打开的文件和其他资源。Linux系统中并没有专门的线程机制,线程仅视为与其他进程共享某些资源的进程。
2.创建进程
3.内核线程
内核线程和普通进程区别在于内核线程没有独立的地址空间,只在内核空间运行,从来不切换到用户空间去。
五、进程终结
1.该任务大部分依赖于do_exit(),该函数永不返回
2.删除进程描述符
该任务是和清理工作分开进行的,因为这样在进程终结之后系统仍然可以获得它的信息
通过release_task()实现进程描述符的删除
3.解决孤儿进程
标签:
原文地址:http://www.cnblogs.com/5219hsw/p/5340200.html