20135337朱荟潼 Linux第六周学习总结——进程的描述和进程的创建
2016-03-29 14:13
453 查看
朱荟潼 + 原创作品转载请注明出处 + 《Linux内核分析》MOOC课http://mooc.study.163.com/course/USTC 1000029000
2.PCB task_struct中包含
3.通过唯一的进程标识PID来区别每个进程。
4.进程状态
5.理解task_struct数据结构
1.分析fork函数。
2.创建一个新进程
3.新进程执行起点:return_from_fork,只复制了内核堆栈一部分,int指令和save_all压到内核栈的内容,参数、系统调用号等都进行压栈。
由于虚拟机是32位转化为64位发生溢出现象。
第六周 进程的描述和进程的创建
一、 进程的描述
1、 进程控制块PCB——task_struct
1.操作系统的三大管理功能包括进程管理 内存管理 文件系统
2.PCB task_struct中包含
进程状态 进程打开的文件 进程优先级信息
3.通过唯一的进程标识PID来区别每个进程。
4.进程状态
5.理解task_struct数据结构
二、 进程的创建
1.分析fork函数。
2.创建一个新进程
通过调用fork()来创建一个新进程----->通过复制当前进程来实现的------>先复制一个PCB——task_struct------>再给新进程分配一个新的内核堆栈------>修改复制过来的进程数据(如pid、进程链表等)
3.新进程执行起点:return_from_fork,只复制了内核堆栈一部分,int指令和save_all压到内核栈的内容,参数、系统调用号等都进行压栈。
三、实践
使用gdb跟踪创建新进程
由于虚拟机是32位转化为64位发生溢出现象。
总结
创建一个新进程在内核中的执行过程
1.使用系统调用clone、fork、vfork均可创建一个新进程,但都是通过调用do_fork来实现进程的创建; 2.复制父进程PCB--task_struct来创建一个新进程,要给新进程分配一个新的内核堆栈; 3.修改复制过来的进程数据,比如pid、进程链表等等执行copy_process和copy_thread 4.p->thread.sp = (unsigned long) childregs; //调度到子进程时的内核栈顶 p->thread.ip = (unsigned long) ret_from_fork; //调度到子进程时的第一条指令地址
相关文章推荐
- 嵌入式Linux之我行——S3C2440上MMC/SD卡驱动实例开发讲解(一)
- CentOS 6.3下配置LVM(逻辑卷管理)
- CentOS7下Firewall防火墙配置用法详解
- RedHat下yum命令安装
- RedHat下rz/sz命令安装及使用方法
- Linux下运行Python脚本显示“: 没有那个文件或目录”问题
- Linux常用命令―ls
- Linux 命令 rpm 、 yum
- 学习osv原理需要操作系统启动流程
- 学习嵌入式linux开发板之iTOP-4412 开发板如何操作GPIO
- 2016-3-29 linux基础学习——vim编辑器的使用
- Linux内核分析 读书笔记 (第十八章)
- 使用信号量控制Linux线程同步
- arm-linux-gcc的配置
- CentOS6.5配置网易163做yum源
- [整理]Centos6.5 + hadoop2.6.4环境搭建
- linux下删除空行的几种方法
- Linux入门
- 【Java学习-J.160328.0.2】笔记1-Linux基础
- linux修改max user processes limits