【408 操作系统】第二章 进程与线程 更新中

发布时间 2023-04-14 08:15:48作者: PigBrither666

第二章 进程与线程

2.1.1 进程的概念、组成与特征

2.1.1 进程的概念、组成与特征.pdf

本节总览
image.png

  1. PCB + 程序段(指令序列) + 数据段(数据、变量)
  2. 特征:动态、并发、独立(独立获得资源、独立接受调度) 异步、结构
  1. 进程是系统进行资源分配和调度的一个独立单位
  2. PCB 记录进程信息:status, envs context,cpu info,res
  3. 特征:五大特性,重要的有动态性,独立性,异步性

程序是静态的,进程是动态的

PID —— 进程的身份证
image.png

PCB —— 有关于进程的详细信息
image.png

有印象即可

进程的组成 —— PCB + 程序段 + 数据段
image.png

PCB 给操作系统用
程序段、数据段 给进程用

程序的运行 与 进程的创建
image.png
程序或数据属于某个进程?
严格来说 ,进程是动态的;进程实体(映像)是静态的,相当于快照

image.png
再次反思,PCB 是给系统用的,程序段和数据段是给进程本身用的
PCB 是进程存在的唯一标志

2.1.2 进程的状态与转换、进程的组织

2.1_2_进程的状态与转换、进程的组织.pdf
本节总览
image.png

  1. 进程有几种状态? 5 = 3+ 2
  2. 就绪态和阻塞态的区别:就绪态万事俱备,只欠cpu;阻塞态,缺其他资源或事件
  3. 进程状态间的转换:
    1. 就绪态 -> 运行态。 进程被调度,cpu 竭诚为您服务!
    2. 运行态 -> 就绪态。服务结束,请您先暂作休息。
    3. 运行态 -> 阻塞态。 没有系统资源,或主动等待一个事件发生。
    4. 阻塞态 -> 就绪态。 就等你pua了。不对,就等你cpu了

New and ready
image.png

  1. 进程正在被创建,那就是创建态 New
  2. 进程被创建完成,其他资源也分配给它了,但CPU资源还不能给它,便进入“就绪态”Ready

Are you ready? Come on~~

运行态 Running
image.png
cpu 正在为您服务

阻塞态 Block
image.png

  1. 等待系统其他资源的分配,或等待其他进程的效应 (有CPU资源,但却一些其他的系统资源)

我等待的外卖还没来~ 还不能上车。

终止态 terminated
image.png

exit 886

一鲸落万物生。不带走一片尘土。

进程状态的转换关系图
image.png

还没进入状态的 UNUSED

  1. 正在创建的 EMBRYO
  2. 整装待发的 RUNNABLE
  3. 正在运行的 RUNNING
  4. 晚高峰堵车的 SLEEPING
  5. 即将逝去的 ZOMBIE

5 = 3 + 2
image.png

  1. 为什么分成3 + 2
  2. state 记录进程状态

进程的组织 —— 链接方式
image.png
像不像线性表??像不像队列?

image.png

进程的组织——索引方式
image.png
有点像hash 表

2.1.3 进程控制

2.1_3_进程控制.pdf
本节总览
image.png

  1. 进程控制,控制的是什么? 控制的是进程的转态转换。
  2. 为什么原语那么重要?原语的应用场景?原语的实现原理 ?
    1. 原语,一气呵成,不可被中断,所以其具备可靠性。
    2. 原语的重要应用场景就包括本节要学的,进程的状态转换。
    3. 原语的实现原理—— 关中断与开中断之间的程序执行 不可被打扰

image.png

提问:为什么用原语?原语的实现原理是什么?
答:原语执行后将一气呵成,不可中断;原语利用了开、关中断

image.png

提问:为什么需要用到原语?如果不用原语会出现哪些翻车的情况?
答:原语一气呵成;如果不用原语,有可能会存在 进程状态字被修改,但所处队列还没改过来的情况。

image.png

提问:如何实现原语?
答:“关中断”到“开中断”之间的所有指令都不会被中断所干扰,这些指令会被cpu一气呵成地执行。期间接受的中断,会在开中断指令执行后才被处理。

image.png

cpu 执行关中断指令后,就不会再检查/例会中断信号。直到执行开中断指令后才会恢复中断检查。

image.png
创建原语

提问:什么情况下会创建进程?
答:
用户登陆:分时系统,用户登陆成功。(java 中学过多线程,用户登陆会创建一个新的线程,可以类比一下)
作业调度:多道批处理系统,为进入内存的新作业创建新进程
提供服务:操作系统创建新的进程为用户提供服务
应用请求:创建子进程

image.png
撤消原语

提问:什么情况下会终止进程?
答:
正常结束:exit
异常结束:exception 整数除以0等异常
外界干预:用户主动杀死进程 ctrl + alt + del

image.png
阻塞与唤醒原语

为什么阻塞原语和唤醒原语必须成对使用啊?
阻塞原语干了啥?
找到pcb
保护进程的现场,将state 设置成 阻塞态
将pcb 插入相应事件的等待队列
引起阻塞的原因
等待系统分配资源
配合其他进程
等待事件
进程的唤醒要干啥?
在阻塞队列中找到pcb
state 改为就绪态
将pcb 挪到就绪队列,等待被调度
何时被唤醒?
等待的事件发生了!

image.png
切换原语
:切换原语,是在运行态和就绪态之间的切换。前面的阻塞与唤醒,是在阻塞态和就绪态之间转换。
切换原语要保存运行环境的上下文。例如,切换前一时刻的PSW,PC 等寄存器 的值。

All in All
image.png

image.png

2.1.4 进程通信 IPC