期末复习——进程与线程

Posted sectumsempra

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了期末复习——进程与线程相关的知识,希望对你有一定的参考价值。

MEMO

  1. PCB块:进程存在唯一唯一唯一!标志
  2. 程序静态,进程动态
  3. 每个进程有
    UID:用户ID,进程创建者的ID;通常大于500
    EUID:有效用户ID,表示进程对文件资源的访问权限;
  4. setuid:对二进制文件执行setuid,任何用户执行时都以setuid程序文件所属用户权限去执行;(用户uid执行passwd命令时,euid=root ID=0)
  5. PC程序计数器: PC总是指向下一条将要取指的指令地址。CPU总是按照PC的指向对指令序列进行取指、译码和执行。PC决定了程序运行流向。

进程

一次只有一个进程在一个处理器上运行。

  • PCB块:包含①进程状态(5种)、②进程编号、③PC程序计数器、④寄存器、⑤内存界限、⑥打开文件列表……还有CPU调度信息内存管理信息、记账信息(CPU时间、等等)、I/O状态信息(分配到的I/O设备列表、打开文件列表)
  • 进程的内存结构:①栈(向低地址生长)、②堆(向高地址生长)、③数据段(全局变量)、④文本段/代码段、⑤PC程序计数器的值

进程调度

调度队列

  • 作业队列:所有进程
  • 就绪队列;
  • 设备队列:每个设备都有自己的设备队列,e.g.I/O设备队列:等待I/O操作。

进程调度选择

调度器/调度程序执行。

  • 长期调度程序(作业调度):从缓冲池选择进程加入内存。选择合适的I/O、CPU密集型进程组合,使得V创建进程 = V进程离开系统
    频率低
  • 短期调度程序(CPU调度程序):从ready队列中取出一个进程,并分配CPU
    频率高。
  • 中期调度程序(内存调度):swap 降低多道程序程度,提高内存利用率、吞吐量挂起一些暂时不能运行的进程到外存等待(阻塞态),后面再调回来加入ready队列(就绪态)。

进程状态切换

  • 运行态:正在占用CPU运行ing;

  • 就绪态:在ready就绪队列中排队等待CPU

  • 阻塞态:e.g.在等待I/O

  • 创建态:new正在创建

  • 终止态:进程完成执行。

  • 就绪态-->运行态:被CPU调度,获得CPU资源开始运行;

  • 运行态-->就绪态:时间片用完、更高优先级进程抢占

  • 运行态-->阻塞态主动、请求某一资源、等待I/O操作完成

  • 阻塞态-->就绪态被动I/O完成、中断结束

CPU上下文切换/进程间CPU切换

上下文切换:从进程A切换到进程B运行;
PCB信息:寄存器值、进程状态、内存管理信息等等

  • 上下文切换流程:A状态保存、B状态恢复

    1. 进程0running,挂起进程0:保存状态到PCB0
    2. 进程1执行,从PCB1加载状态
    3. CPU跳转到PCB1的PC指向位置执行
  • 上下文切换 与 进程调度:调度是一种决策行为,决定资源分配给哪个进程;
    而上下文切换是执行行为。懂了吧

  • 进程间CPU切换:中断/陷阱(异常)

    1. 进程0running,中断or系统调用;
    2. 挂起进程0:保存状态到PCB0;
    3. 进程1执行,从PCB1加载状态;
    4. 中断or系统调用;
    5. 挂起进程1:保存状态到PCB1;
    6. 进程0恢复执行,从PCB0加载状态

上下文切换时间是纯粹的时间开销,与硬件支持密切相关。

进程运行

创建进程

  1. 申请空白PCB块
  2. 分配资源
  3. 初始化PCB块
  4. 加入ready队列

以上是关于期末复习——进程与线程的主要内容,如果未能解决你的问题,请参考以下文章

川农操作系统期末复习题

《操作系统》期末复习

《操作系统》期末复习

java程序设计期末复习总结&复盘

期末复习——同步互斥死锁

操作系统期末复习