作业六:分析Linux内核创建一个新进程的过程
2016-03-28 16:22
435 查看
分析Linux内核创建一个新进程的过程
进程描述符PCB----task_struct数据结构
操作系统:1.进程管理 2.内存管理 3 文件系统
一、新进程如何创建和修改task_struct数据结构
1.复制当前进程(创建新进程通过复制当前进程来实现) 2.给新进程分配新的内核堆栈 3.修改复制过来的进程数据(如pid,状态链表,内核堆栈,ip,sp)
1.进程创建
1.fork系统调用在父子进程各返回一次,子进程的返回值=0,父进程的返回值=子进程的PID 2.fork、vfork、clone三个系统调用可创建一个新进程,最后通过do_fork实现进程创建。
2.新进程的开始执行地点
1.ret_from_fork开始执行。 2.int指令和SAVE_ALL压倒内核栈的内容 3.ENTRY(ret_from_fork){ ...jmp syscall_exit...} //跳转到system_call中的syscall_exit 4.由system_call中前面save_all判断,实际syacall_call之前的堆栈状态是一样,继续往下执行,返回用户态。不是父进程,而是子进程。
3.进程:处于执行期的程序以及相关的资源的总称。
1.fork()创建新进程,父进程用fork创建子进程。fork系统调用从内核返回两次:一次回到父进程,一次回到子进程。 2.在Linux内核中,fork()实际有clone()系统调用实现的。 3.程序通过exit()系统调用退出执行。最终中介进程并将其占用的资源释放掉。
4.进程描述符及任务结构
内核把进程的列表存放在任务队列的双向循环列表中 链表中每一项都是类型为task_struck,称为进程描述符的结构,该结构定义在<linux/sched.h>文件中
5.进程状态
(1)TASK_RUNNING(运行)——进程是可执行。进程在用户空间中执行的唯一可能的状态,也可以应用到内核空间中正在执行的 (2)TSK_INTERRUPTIBLE (3) TASK_UNINTERRUPTIBLE (4)_TASK_TRACED (5)_TASK_STOOPED
6.进程上下文
一般程序在用户空间执行。当一个程序调执行了系统调用或者触发了某个异常,它就陷入了内核空间。成内核“代表进程执行”,并处于进程上下文中。
7.进程家族数
所有的进程都是PID为1的init进程的后代,内核在系统启动的最后阶段启动init进程。
二、使用gdb跟踪分析一个fork系统调用内核处理函数sys_clone和分析fork函数对应的系统调用处理过程
三、总结部分
Linux系统创建一个新进程的理解1.fork实际开销是复制父进程的页表以及给子进程创建唯一的进程描述符** 2.Linux通过clone()系统调用实现fork()** 3.fork(),vfork(),和clone()库函数都是根据各自需要的参数标志去调用clone(),然后由clone()调用do_fork** do_fork函数调用了copy_process()函数,然后让进程执行 Linux通过复制父进程创建新进程,fork、vfork、clone都是通过do_exit实现进程的创建。 -A.复制一个PCB -B.给新进程分配一个新的内核堆栈(复制了thread_info,不是复制了内核堆栈) -C.修改复制的数据,即子进程初始化。 从用户态代码看父进程和子进程各返回一次,而子进程从ret_from_fork函数开始执行,从函数中跳转到syscall_exit,即system_call中的语句。
注明:郑伟 + 参考资料:《Linux内核设计与实现》 + 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000
相关文章推荐
- linux常用命令
- 正则表达式课堂笔记
- Linux内核源码阅读以及工具
- linux lcd设备驱动剖析四
- 正则表达式 课堂笔记
- linux lcd设备驱动剖析三
- linux lcd设备驱动剖析二
- linux lcd设备驱动剖析一
- linux平台总线驱动设备模型之点亮LED
- Linux平台总线驱动设备模型
- 查看linux服务器上mysql配置文件路径
- Linux C 读取文件夹下所有文件(包括子文件夹)的文件名
- 嵌入式Linux 下用户程序实现多任务的方法:多线程的实现
- linux:centos准备及安装
- Linux下面一个简单的虚拟platform驱动
- linux /sys目录下各个子目录的具体说明
- 解决Linux下安装thrift出现的Building Java Library ........ : no问题(以及其他安装thrift出现的问题)
- linux7 防火墙,firewall的说明及相关配置注释
- Linux下文件的mtime/atime/ctime研究
- Linux下文件的mtime/atime/ctime研究