首页 技术 正文
技术 2022年11月6日
0 收藏 996 点赞 550 浏览 1050 个字

第六章

进程的描述和进程的创建

学习笔记

1.操作系统的三大管理功能:

  • 进程管理
  • 内存管理
  • 文件系统

2.操作系统最核心的功能是进程管理。

3.为了管理进程,内核要描述进程的结构,也成为进程描述符,进程描述符提供了进程相关的所有信息。

  • task_struct数据结构非常庞大

2019-2020-1 20199301《Linux内核原理与分析》第七周作业

4.就绪态和运行态都是TASK_RUNNING

5.操作系统原理中的进程有就绪态、运行态、阻塞态这三种基本状态,与实际的Linux内核管理的进程状态不同

  • Linux内核中是否在运行取决于它有没有获得CPU的控制权
  • 一个正在运行的进程在等待特定的事件或资源时会进入阻塞态。
  • 阻塞态分为两种TASK_INTERRUPTIBLE(可以被信号和wake_up()唤醒)和TASK_UNINTERRUPTIBLE(只能被wake_up()唤醒)。

2019-2020-1 20199301《Linux内核原理与分析》第七周作业

6.进程的标识符PID也很重要,在进程描述中用pid和tgid标识进程。

7.struct list_head tasks 用于管理进程数据结构的双向链表

2019-2020-1 20199301《Linux内核原理与分析》第七周作业

8.fork.vfork和clone这三个系统调用和kernel_thread内核函数都可以创建一个新进程,而且都是通过do_fork函数来创建进程的,只是传递的参数不同。

实验

  • 删掉menu,克隆一份新的,把test.cgei覆盖掉。

2019-2020-1 20199301《Linux内核原理与分析》第七周作业

  • 在sys_clone,do_fork,dup_task_struck,copy_process,copy_thread,ret_from_fork处设置断点

2019-2020-1 20199301《Linux内核原理与分析》第七周作业

  • 在MenuOS中执行fork,就会发现fork函数停在了父进程中

2019-2020-1 20199301《Linux内核原理与分析》第七周作业

  • 继续执行 停在了do_fork的位置
  • 继续追踪

2019-2020-1 20199301《Linux内核原理与分析》第七周作业

  • 在copy_thread中得到初始化

2019-2020-1 20199301《Linux内核原理与分析》第七周作业

总结

Linux中,fork、vfork和clone三个系统调用都是通过调用do_fork来实现进程的创建,而fork()系统调用产生的子进程在系统调用处理过程中从ret_from_fork处开始执行。fork会产生父子进程,在父进程中,返回值是子进程的进程号;在子进程中,返回值为0。因此可通过返回值来判断当前进程是父进程还是子进程。使用fork函数得到的子进程是父进程的一个复制品,它从父进程处复制了整个进程的地址空间,包括进程上下文,进程堆栈,内存信息,打开的文件描述符,信号控制设定,进程优先级,进程组号,当前工作目录,根目录,资源限制,控制终端等。而子进程所独有的只是它的进程号,资源使用和计时器等。可以看出,使用fork函数的代价是很大的,它复制了父进程中的代码段,数据段和堆栈段里的大部分内容,使得fork函数的执行速度并不快。

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,000
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,512
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,358
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,141
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,771
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,849