Linux内核分析第六周总结

进程控制块PCB——task_struct

操作系统的内核里的三大功能:

  • 进程管理
  • 内存管理
  • 文件系统

进程描述符——task_struct

进程管理是最核心的内容

然而Linux进程的状态与操作系统原理中的描述的进程状态似乎有所不同,就绪状态和运行状态都是TASK_RUNNING,这两个TASK_RUNNING都是可运行的,但他们的区别在于是否获得CPU的控制权

进程描述符——task_struct的数据结构


所有进程都被这个双向循环链表strcut list_head tasks连起来

双向链表的操作:

进程间的父子关系:

进程的创建概览及fork一个进程的用户态代码

进程创建的回顾:
道生一(start_kernel...cpu_idle),一生二(kernel_init和kthreadd),二生三(即前面是0、1和2三个进程),三生万物(1号进程是所有用户态进程的祖先,2号进程是所有内核态线程的祖先)

fork系统调用在父进程与子进程各返回一次

系统调用回顾:

fork()函数系统调用的情况:

子进程copy了父进程的所有信息进行修改

实验

与上周一样的实验步骤:

进行gdb的过程:

总结:

Linux通过复制父进程来创建一个新进程,通过调用do_fork来实现,Linux为每个新创建的进程动态地分配一个task_struct结构,fork()函数被调用一次,但返回两次。

posted @ 2016-03-30 23:56  20135330张若嘉  阅读(301)  评论(0编辑  收藏  举报