Linux内核分析第六周总结

进程控制块PCB——task_struct

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

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

进程描述符——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号进程是全部内核态线程的祖先)3d

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

系统调用回顾:

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

子进程copy了父进程的全部信息进行修改blog

实验

与上周同样的实验步骤:
进程

进行gdb的过程:
内存

总结:

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

相关文章
相关标签/搜索