linux内核学习之六 进程创建过程学习
一 关于linux进程概念的补充
关于进程的基本概念这里不多说,把自己的学习所得作一些补充:
1. 在linux内核中,系统最多可以有64个进程同时存在。
2.linux进程包含的关键要素:一段可执行的程序;专用的系统堆栈空间;内核中它的控制块(进程控制块);独立的存储空间。
3. 系统的第一个进程由系统初始化生成。
4. 内核通过一个唯一的进程标识号PID来标识每个进程。
5. 用数据结构task_struct表示一个进程,包括进程的属性和状态。task_struct 结构中的指向前后进程的指针形成了task数组。
6. 当新进程生成时,linux为新进程分配一个task_struct结构,然后将指针保存在task数组中。
二 调试
在前次实验的基础上,添加代码如下:

在menuos中运行结果,可以看到添加了fork命令:

设置断点:

程序停在第一个断点处:

模拟器显示:

继续运行,程序停在第二个断点处:

模拟器显示:

接着运行,停在第三个断点处:

第四个断点:

最后结果如上面的第二张图,不重复了。在menuos中命令行的方式输入fork,没有立即显示结果,在gdb中多次输入”c“后,打印pid信息。
三 分析总结
先附上一张自己理解的流程图:

自己的理解:
首先用户空间应用程序执行创建进程的系统调用fork(),vfork(),clone(),然后切换到内核空间(具体过程可见以前的博客),对于创建进程,内核都是执行的do_fork(),在do_fork()函数中调用函数copy_process(),该函数创建进程描述符以及子进程执行所需要的其他数据结构,初步复制父进程的信息如堆栈。但是子进程是从哪里开始执行的?从分析代码可知(p->thread.ip = (unsigned long) ret_from_fork;),子进程是从ret_from_fork标志处开始执行,在ret_from_fork 的末端执行了syscall_exit,结合上次的学习可知,该标志标识了从内核空间返回到内核空间过程。至此完成了fork()创建进程的过程。(细节还有待了解。。。)
by:方龙伟
原创作品 转载请注明出处
《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000
linux内核学习之六 进程创建过程学习的更多相关文章
- 《Linux内核分析》 week6作业-Linux内核fork()系统调用的创建过程
一.进程控制块PCB-stack_struct 进程在操作系统中都有一个结构,用于表示这个进程.这就是进程控制块(PCB),在Linux中具体实现是task_struct数据结构,它主要记录了以下信息 ...
- 《Linux内核分析》第八周学习总结
<Linux内核分析>第八周学习总结 ——进程的切换和系统的一般执行过程 姓名:王玮怡 学号:20135116 ...
- 《Linux内核分析》第七周学习总结
<Linux内核分析>第七周学习总结 ——可执行程序的装载 姓名:王玮怡 学号:20135116 一.理论部分总结 (一)可执行程序的装载 ...
- 《Linux内核分析》第六周学习总结
<Linux内核分析>第六周学习总结 ——进程的描述和进程的创建 姓名:王玮怡 学号:20135116 一.理论部分 (一)进程的描述 1 ...
- 《Linux内核分析》第八周学习笔记
<Linux内核分析>第八周学习笔记 进程的切换和系统的一般执行过程 郭垚 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163 ...
- 《Linux内核分析》第七周学习笔记
<Linux内核分析>第七周学习笔记 可执行程序的装载 郭垚 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/co ...
- 《Linux内核分析》第六周学习笔记
<Linux内核分析>第六周学习笔记 进程的描述和创建 郭垚 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/co ...
- 《Linux内核分析》第三周学习报告
<Linux内核分析>第三周学习报告 ——构造一个简单的Linux系统MenuOS 姓名:王玮怡 学号:201351 ...
- 《Linux内核分析》第三周学习笔记
<Linux内核分析>第三周学习笔记 构造一个简单的Linux系统MenuOS 郭垚 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.stud ...
随机推荐
- slideDoor(学习某编程网站的,仅作记录和学习)
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 单据UI界面设计开发
1.新建单据界面数据 2.创建数据模型,包括单据.单据行.设置应用缺省特性,每个模型树下只有一个红色项 3.新增动作,系统默认没有弃审支作按钮事件 4. 新增UI Form,选择对应的模型树及表单类别 ...
- MariaDB 在 Windows 下 noinstall 版本的安装和配置
1. 下载并解压 noinstall 压缩包,假设解压到 D:\APP\mariadb-10.0.17-winx64 目录 下载地址(MariaDB 10.0.17 Stable):llarian.n ...
- 特许金融分析师 (CFA) 持证人现在一般在做什么工作?职业分布是怎样的?
特许金融分析师 (CFA) 持证人现在一般在做什么工作?职业分布是怎样的? 陈雨桐 1. 全球范围: 根据 CFA 协会 2014 年 6 月的报告: CFA Institute has over ...
- 《爵迹》侵权链接多为个人用户分享到个人网盘 总结说明:推广途径为 网盘>微博>博客>贴吧>知道
网络侵权链接3318条.该片的侵权范围分布相对较均匀,其中微博/博客侵权链接630条.占比19%:贴吧778条.占比23.4%:知道513条.占比15.4%:网盘828条.占比25%:小网站410条. ...
- ArcGIS创建tpk切片缓存
一. 背景知识 1. tpk是什么? 从地图或底图生成切片,并将切片进行打包从而创建单个压缩的 .tpk 文件.切片包(.tpk)是在地图或栅格数据集中能作为 Web 切片或 Web 高程图层发布的一 ...
- Excel中提取最大值的问题
在使用excel的时候,碰到了一个如下的问题 意思是以每个字母为条件,取这个字母下面的数字中的最大值,需要注意一个问题是每个字母下面的数字个数不一定相等,例如d下面有四个数字,可以设置如下公式解决: ...
- BIND的进阶二:视图,日志,转发,子域的授权
实验分为4部分组成: 1:DNS的转发 2:DNS日志 3:子域的授权 4:智能DNS的简单配置根据网段来分配不同的ip地址 一:DNS的转发: 转发方式有两种:only (直接把客户端请 ...
- 简述linux的发行版,并描述不同发行版之间的联系与区别
bash命令行返回值和展开 标签(空格分隔): bash,命令,状态,展开 1.命令状态结果和执行结果 (1)命令执行的状态返回值,命令执行完成之后,其执行状态结果值保存于bash的特殊状态变量$?中 ...
- linux哲学思想
linux哲学思想 1.一切皆为文件 linux将所有的对象几乎都抽象为文件,无论是硬件设备.还是通讯接口都当做文件处理,这样可以设计统一的访问控制操作(read();write();delete() ...