第六章 进程的描述和进程的创建

(一)进程的描述

1、OS的三大管理功能:(1)进程管理(进程)(2)内存管理(虚拟内存)(3)文件系统(文件)
2、进程的描述:进程控制块PCB
3、在Linux内核中,struct task_struct描述进程,其中的变量state为进程状态,stack是堆栈。结构关系:进程状态,进程双向链表的管理,控制台tty,文件系统fs的描述,进程打开文件的文件描述符:files、内存管理的描述mm,进程间通讯的信号signal的描述等。
4、Linux进程的状态与操作系统原理中的进程状态的主要区别在于,Linux内核中的就绪态和运行态都
被称作TASK_RUNNING,在阻塞态的进程分为两种,一种是TASK_INTERUPTIBLE,可以被信号以及wake_up()唤醒,另一种是TASK_UNINTERUPTIBLE只能被wake_up()唤醒。i

5、进程的标识符PID,在进程描述符中用pid和tgid标识进程。
6、双向链表struct list_head tasks用于管理进程数据结构。

(二)进程的创建

1、init_task是第一个进程(0号进程)的进程描述结构体变量,它的初始化通过硬编码的方式固定下来,而其他进程的初始化都是通过do_fork复制父进程的方式初始化的。
2、内存管理相关代码。
mm和active_mm是和进程地址空间、内存管理相关的数据结构指针,包含多个数据段,代码段,堆栈段。
3、进程之间的父子、兄弟关系
struct task_struct数据结构中记录当前进程的父进程real_parent、parent,记录当前进程的子进程的是双向链表struct list_head children,记录当前进程的兄弟进程的是双向链表struct list_head sibling。父子兄弟之间复杂的链表关系都通过指针或者双向链表关联起来。
4、保存进程上下文中CPU相关一些状态信息的数据结构
struct thread_struct保存进程上下文中CPU相关的一些状态信息的数据结构。其中最重要的是sp和ip,在x86-32位系统中,sp用来保存进程上下文中的ESP寄存器状态,ip用来保存进程上下文中的EIP机寄存器状态。
5、进程的创建和过程分析
进程的创建大概就是把当前进程的描述符等相关进程资源复制一份,产生一个子进程,根据子进程的需要对复制的进程描述符做一些修改,然后将创建好的子进程放入运行队列(对应操作系统中的就绪队列)。

(三)分析进程创建过程


给menuOS添加断点,分别在sys_clone do_fork dup_task_struct copy_process``copy_thread处


在命令行中输入fork发现停在sys_clone处,说明系统调用函数是sys_clone继续执行会停在do_fork中

2019-2020-1 20199302《Linux内核原理与分析》第七周作业的更多相关文章

  1. 2019-2020-1 20199329《Linux内核原理与分析》第九周作业

    <Linux内核原理与分析>第九周作业 一.本周内容概述: 阐释linux操作系统的整体构架 理解linux系统的一般执行过程和进程调度的时机 理解linux系统的中断和进程上下文切换 二 ...

  2. 2019-2020-1 20199329《Linux内核原理与分析》第二周作业

    <Linux内核原理与分析>第二周作业 一.上周问题总结: 未能及时整理笔记 Linux还需要多用 markdown格式不熟练 发布博客时间超过规定期限 二.本周学习内容: <庖丁解 ...

  3. 20169212《Linux内核原理与分析》第二周作业

    <Linux内核原理与分析>第二周作业 这一周学习了MOOCLinux内核分析的第一讲,计算机是如何工作的?由于本科对相关知识的不熟悉,所以感觉有的知识理解起来了有一定的难度,不过多查查资 ...

  4. 20169210《Linux内核原理与分析》第二周作业

    <Linux内核原理与分析>第二周作业 本周作业分为两部分:第一部分为观看学习视频并完成实验楼实验一:第二部分为看<Linux内核设计与实现>1.2.18章并安装配置内核. 第 ...

  5. 2018-2019-1 20189221 《Linux内核原理与分析》第九周作业

    2018-2019-1 20189221 <Linux内核原理与分析>第九周作业 实验八 理理解进程调度时机跟踪分析进程调度与进程切换的过程 进程调度 进度调度时机: 1.中断处理过程(包 ...

  6. 2017-2018-1 20179215《Linux内核原理与分析》第二周作业

    20179215<Linux内核原理与分析>第二周作业 这一周主要了解了计算机是如何工作的,包括现在存储程序计算机的工作模型.X86汇编指令包括几种内存地址的寻址方式和push.pop.c ...

  7. 2019-2020-1 20209313《Linux内核原理与分析》第二周作业

    2019-2020-1 20209313<Linux内核原理与分析>第二周作业 零.总结 阐明自己对"计算机是如何工作的"理解. 一.myod 步骤 复习c文件处理内容 ...

  8. 2018-2019-1 20189221《Linux内核原理与分析》第一周作业

    Linux内核原理与分析 - 第一周作业 实验1 Linux系统简介 Linux历史 1991 年 10 月,Linus Torvalds想在自己的电脑上运行UNIX,可是 UNIX 的商业版本非常昂 ...

  9. 《Linux内核原理与分析》第一周作业 20189210

    实验一 Linux系统简介 这一节主要学习了Linux的历史,Linux有关的重要人物以及学习Linux的方法,Linux和Windows的区别.其中学到了LInux中的应用程序大都为开源自由的软件, ...

  10. 2018-2019-1 20189221《Linux内核原理与分析》第二周作业

    读书报告 <庖丁解牛Linux内核分析> 第 1 章 计算工作原理 1.1 存储程序计算机工作模型 1.2 x86-32汇编基础 1.3汇编一个简单的C语言程序并分析其汇编指令执行过程 因 ...

随机推荐

  1. day12——生成器、推导式、简单内置函数

    day12 生成器 迭代器:python中内置的一种节省空间的工具 生成器的本质就是一个迭代器 迭代器和生成器的区别:一个是pyhton自带的,一个是程序员自己写的 写一个生成器 基于函数 在函数中将 ...

  2. JAVA知识点总结篇(三)

    抽象类 使用规则 abstract定义抽象类: abstract定义抽象方法,只有声明,不需要实现: 包含抽象方法的类是抽象类: 抽象类中可以包含普通方法,也可以没有抽象方法: 抽象类不能直接创建,可 ...

  3. STC单片机Flash做EEPROM的代码

    STC官方给出的建议: /***************************************************************Author:Liming*** * @brie ...

  4. 【数据结构】7.java源码关于LinkedList

    关于LinkedList的源码关注点 1.从底层数据结构,扩容策略2.LinkedList的增删改查3.特殊处理重点关注4.遍历的速度,随机访问和iterator访问效率对比 1.从底层数据结构,扩容 ...

  5. 怎么删除json 键值对

    var obj = { 'id': 1, 'name': 2 } delete obj.id delete obj['id'] console.log(obj) //{ 'name': 2 }

  6. python3的pip3安装

    ---恢复内容开始--- pip3的安装需要对应一整套python的编译工具库,所以安装好的pip3是这个样子: inear@Ai:~$ pip3 -V pip 18.1 from /usr/lib/ ...

  7. web API .net - .net core 对比学习-文件目录概述

    个人正在学习.net web Api的相关知识,因此用这一系列博客做一记录. 1. 首先我们分别创建 .net web api 项目和 .net core web api 项目. 2. 我们首先比较一 ...

  8. C# vb .net实现裁剪效果特效滤镜

    在.net中,如何简单快捷地实现Photoshop滤镜组中的裁剪效果效果呢?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码: 设置授权 第 ...

  9. 01、MySQL_简介

    数据库概念 数据库(Database)是按照数据结构来组织.存储和管理数据的建立在计算机存储设备上的仓库. 数据库:存储数据的仓库 数据库分类 网络数据库 网络数据库是指把数据库技术引入到计算机网络系 ...

  10. 【夯实基础】- https和http的主要区别

    HTTPS和HTTP的区别主要如下: 1.https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用. 2.http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输 ...