Linux内核学习-进程管理

来源:互联网 发布:淘宝商品列表代码 编辑:程序博客网 时间:2024/06/06 05:32

    进程管理:

     线程,每一个线程都拥有一个独立的程序计数器,进程栈和一组进程寄存器。内核调度的对象是线程。

    进程提供两种机制:虚拟处理器和虚拟内存,给进程一种假象,感觉是在独享处理器和内存。

      程序并不是进程,进程是处于执行期的程序及其包含的资源的总称。

      内核把进程存放在任务队列(task list)的双向循环链表中,链表中的结构为task_struct(进程描述符),task_struct是通过slab分配器分配的

     pid最大值默认为32768,为了与老版本UNIX和Linux兼容

     进程的五种状态:运行,可中断,不可中断,僵死,停止

     所有的进程都是init进程的子进程,所有的进程都具有父进程。

     Linux的fork采用的是写实拷贝的机制,只有在写入操作是才会发生复制

    线程在内核的角度上来看,就是与其他进程共享某些资源的普通进程。每个线程都具有自己的进程描述符,对于那些支持线程的系统中,通常会有一个包涵四个不同线程的指针的统一进程描述符。线程的创建与进程创建的区别在于调用clone()的时候需要传递一些参数指明需要共享的资源

     内核线程:它和普通进程之间的区别在于没有独立的地址空间,只在内核空间运行,可以被调度和抢占。

     进程退出:内核释放其占有的所有资源,并把这一消息告知父进程,处于僵死状态,可以保留进程描述符,为父进程提供信息,父进程可以删除子进程的进程描述符,当父进程退出时,会给其子进程寻找进程组内的其他进程来作为父进程,或者之间让init进程做父进程。这样不会造成子进程僵死,白白耗费内存。

0 0