【MOOC EXP】Linux内核分析实验六报告

时间:2021-09-08 09:51:22

程涵 

原创博客

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


进程的描述和进程的创建

知识点梳理:

一、 进程的描述

(1)操作系统的三大管理功能包括

  • 进程管理

  • 内存管理

  • 文件系统

(2)PCB task_struct中包含

  • 进程状态

  • 进程打开的文件

  • 进程优先级信息

(3)通过唯一的进程标识PID来区别每个进程。

(4)进程状态(代码分析)

http://codelab.shiyanlou.com/xref/linux-3.18.6/include/linux/sched.h#1235

【MOOC EXP】Linux内核分析实验六报告

由以上代码可以看到task_struct的运行状态,进程标识符flags。

【MOOC EXP】Linux内核分析实验六报告

由以上代码可以看到地址空间。

【MOOC EXP】Linux内核分析实验六报告

可以看到进程父子关系。

(5)分析fork函数对应的内核处理过程sys_clone

【MOOC EXP】Linux内核分析实验六报告

dup_thread复制父进程的PCB

【MOOC EXP】Linux内核分析实验六报告

copy_process修改复制的PCB以适应子进程的特点

二、 进程的创建

1.进程的创建概览及fork一个进程的用户态代码

(1)进程的起源

  • 道生一(start_kernel...cpu_idle)
  • 一生二(kernel_init和kthreadd)
  • 二生三(即前面的0、1、2三个进程)
  • 三生万物(1号进程是所有用户态进程的祖先,2号进程是所有内核线程的祖先)

(2)0号进程手工写,1号进程复制、加载init程序

(3)shell命令行是如何启动进程的

2.Linux中创建进程一共有三个函数:

  • fork,创建子进程
  • vfork,与fork类似,但是父子进程共享地址空间,而且子进程先于父进程运行。
  • clone,主要用于创建线程

  Linux中得线程是通过模拟进程实现的,较新的内核使用的线程库一般都是NPTL。

  • 复制一个PCB——task_struct

err = arch_dup_task_struct(tsk, orig);
  • 给新进程分配一个新的内核堆栈

ti = alloc_ thread_ info_ node(tsk, node);
tsk->stack = ti;
setup_ thread_ stack(tsk, orig); //这里只是复制thread_ info,而非复制内核堆栈
  • 要修改复制过来的进程数据,比如pid、进程链表等。具体见copy _process内部
  • 从用户态的代码看fork(),函数返回了两次,即在父子进程中各返回一次。

实验内容及截图

编译内核,可以看到fork命令

【MOOC EXP】Linux内核分析实验六报告

启动gdb调试,并对主要的函数设置断点

【MOOC EXP】Linux内核分析实验六报告

【MOOC EXP】Linux内核分析实验六报告

执行一个fork,会发现只输出一个fork的命令描述,后面并没有执行,因为它停在了sys_ clone这个位置。

【MOOC EXP】Linux内核分析实验六报告

新进程是从ret_from_fork开始执行的,决定了新进程的第一条指令地址。

因为在ret_ from_ fork之前,也就是在copy_ thread()函数中* childregs = * current_ pt_ regs();该句将父进程的regs参数赋值到子进程的内核堆栈。

* childregs的类型为pt_ regs,里面存放了SAVE_ ALL中压入栈的参数,因此在之后的RESTORE ALL中能顺利执行下去。

【MOOC EXP】Linux内核分析实验六报告的更多相关文章

  1. Linux内核分析实验六

    Linux内核分析实验六 进程控制块PCB——task_struct(进程描述符) 为了管理进程,内核必须对每个进程进行清晰的描述,进程描述符提供了内核所需了解的进程信息. struct task_s ...

  2. 【MOOC EXP】Linux内核分析实验八报告

    程涵  原创博客 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 进程的切换和系统的一般执行过程 知识点 ...

  3. 【MOOC EXP】Linux内核分析实验七报告

    程涵  原创博客 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 可执行程序的装载 知识点梳理 一.预处 ...

  4. 【MOOC EXP】Linux内核分析实验一报告

    程涵  原创博客 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000  [反汇编一个简单的C程序]   实验 ...

  5. 【MOOC EXP】Linux内核分析实验二报告

    程涵  原创博客 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000  [操作系统是如何工作的]   教学内 ...

  6. 【MOOC EXP】Linux内核分析实验三报告

     程涵  原创博客 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 [跟踪分析Linux内核的启动过程] ...

  7. 【MOOC EXP】Linux内核分析实验四报告

    程涵  原创博客 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 [使用库函数API和C代码中嵌入汇编代 ...

  8. 【MOOC EXP】Linux内核分析实验五报告

    程涵  原创博客 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 分析system_call中断处理过程 ...

  9. &OpenCurlyDoubleQuote;Linux内核分析”实验一报告

    张文俊 + 原创作品转载请注明出处 + <Linux 内核分析> MOOC 课程 实验要求: 1.总结部分要求阐明自己对“计算机是如何工作的”理解: 2.博客中需要使用实验截图: 实验内容 ...

随机推荐

  1. SQL Server 大数据搬迁之文件组备份还原实战

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 解决方案(Solution) 搬迁步骤(Procedure) 搬迁脚本(SQL Codes) ...

  2. paper 130:MatLab分类器大全&lpar;svm&comma;knn&comma;随机森林等&rpar;

    train_data是训练特征数据, train_label是分类标签.Predict_label是预测的标签.MatLab训练数据, 得到语义标签向量 Scores(概率输出).1.逻辑回归(多项式 ...

  3. Uwp Windows10获取设备位置(经纬度)

    先在Package.appxmanifest中配置位置权限 2. 创建LocationManager类 using System; using System.Collections.Generic; ...

  4. js控制div是否显示

    <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...

  5. ZOJ-1649 Rescue---BFS&plus;优先队列

    题目链接: https://vjudge.net/problem/ZOJ-1649 题目大意: 天使的朋友要去救天使,a是天使,r 是朋友,x是卫兵.每走一步需要时间1,打倒卫兵需要另外的时间1,问救 ...

  6. &period;net core 接口返回图片并且进行压缩

    背景:  .net core 中默认已经取消可以直接访问图片,因为这样不安全. 导致我们上传的图片无法直接通过url访问. 解决方案:  一: 通过修改项目配置,使可以直接通过url访问.(方法略,可 ...

  7. AngularJS2&plus;调用原有的js脚本&lpar;AngularJS脚本跟本地原有脚本之间的关系&rpar;

    昨天一个话题说关于AngularJS2以后版本的两个小技巧,不料引出了另外一个话题,话题起始很简单: "很多的前端框架并不复杂,比如JQuery,引入即用,实时看到效果,多好.到了Angul ...

  8. 钢琴培训班课程、课时及费用管理系统已提供ACM3&period;0新版下载

    中小型艺术培训班课程.课时及费用管理系统. 2014新版 ACM3测试版下载:http://www.cnblogs.com/Charltsing/p/ACM3.html 您有任何功能需求,欢迎QQ 5 ...

  9. 【codeforces 175D】 Plane of Tanks&colon; Duel

    http://codeforces.com/problemset/problem/175/D (题目链接) 题意 A,B两人玩坦克大战,坦克有生命值,射击间隔,伤害范围,未命中的概率.问A赢的概率是多 ...

  10. 更改mac系统语言及其软件

    如图,把所用语音置顶 https://support.apple.com/zh-cn/HT202036 1.firefox需要下载英文版,同时可以保留中文版,两个不能同时启动.如果你只是为了切换浏览器 ...