现在的位置: 首页 > 综合 > 正文

linux进程管理知识点概要

2017年02月23日 ⁄ 综合 ⁄ 共 597字 ⁄ 字号 评论关闭

1.进程与线程间的关系

    进程是处于执行期间的程序以及相关资源的总称,比如打开的文件描述符,挂起的信号,内核内部数据结构,处理器状态,用来存放全局变量的数据段。
    进程提供两种虚拟机制:虚拟处理器和虚拟内存。
    对linux而言,线程是一种特殊的进程,线程之间可以共享虚拟内存,但每个线程拥有各自的虚拟处理器。

2.linux如何存放和表示进程

    进程描述符:struct task_struct;放在一个任务队列里,这个任务队列是一个双向循环链表。
    linux通过slab分配器分配task_struct结构,这样能达到对象复用和缓存着色的目的。内核通过一个唯一的进程标识值或PID来标识每个进程。
    在寄存器不富裕的x86体系中,在内核栈的尾端创建thread_info结构,其中的task指向该任务实际的task_struct,可以通过计算偏移地址间接的找到task_struct结构。

3.如何创建进程

fork()====>clone()====>do_fork()====>copy_process()
(1)linux的fork()使用写时拷贝(copy-on-write)
(2)linux通过clone()系统调用实现fork()
if((pid = fork()) < 0)
{
    err;
} else if(pid == 0)  /*child*/
{
    exec();
}
waitpid();
exit();
【上篇】
【下篇】

抱歉!评论已关闭.