码迷,mamicode.com
首页 > 系统相关 > 详细

进程的描述和进程的创建

时间:2016-03-31 14:24:18      阅读:276      评论:0      收藏:0      [点我收藏+]

标签:

张潇月+《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000

进程描述符task_struct数据结构

进程描述符提供了内核所需要了解的内核信息。task_struct数据结构十分庞大。

Linux的进程状态和与操作系统原理中描述的进程状态似乎有所不同。本质上是一样的,就绪态,运行态,阻塞态。

技术分享

所有的进程状态

技术分享

进程标识符

技术分享

进程的链表

技术分享

它是一个双向链表,把所有的进程连接起来。链表是可以独立进行操作的,

每个进程有自己独立的进程地址空间。

父子关系

技术分享

这就是进程中父子关系的管理

技术分享

ptraced是调试用的。

进程的创建

fork系统调用在父进程和子进程各返回一次,这样就变成了两个进程。通过这个fork()系统调用就可以在用户态创建一个进程。

正常的系统调用:

技术分享

技术分享

调用fork()的时候

 技术分享

父进程还是和一般正常调用一般返回,而fork产生的子进程在内核里面返回。

fork、vfork、clone都可以创建新的进程,而且都是通过调用do_fork来实现进程的创建。

创建新进程是通过复制当前进程来实现的。

Linux通过复制父进程来创建一个新进程,那么为我们理解这个过程提供一个理想的框架:

技术分享

系统调用内核处理函数sys_fork、sys_vfork、sys_clone。

dup task struct——复制task struct。

子进程

技术分享

子进程是从return_from_fork开始执行的,然后挑战到syscall_exit,到系统调用中返回。

进程的描述和进程的创建

标签:

原文地址:http://www.cnblogs.com/20135131zxy/p/5340944.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!