现代操作系统第二章复习重点

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第二章进程与线程

·在早期计算机中,每个字节的读写直接由CPU处理(即没有DMA),对于多道程序而言这种组织方式有什么含义?

在这个读取任务中包括两个时间:CPU复制数据的时间和IO设备工作的时间。而早期IO设备的速度太慢了,IO 设备的工作时间远大于把数据存到内存中所需要的时间,CPU则会空转很长时间,此时多道程序设计就非常必要了。

进程是OS提供的最古老最需要的抽象概念,

它把来回切换的多道程序描述成一种多程序的并发。

2.1进程

多道程序设计

站在系统的角度——提高了CPU的利用率

站在用户的角度——可“同时”运行多个程序

对某个具体的任务而言——执行速度不变

单个CPU不能真正实现并行计算,其在任意时刻都只能执行一道指令。

(第一章到第六章都是以单个CPU来讲解的)

·如何解决这个矛盾:OS采用了一系列软件技术实现程序并发执行。

·什么是程序的并发执行【“大家注意把这个刻在脑子里”】

若干个程序段同时在系统中运行,这些程序段的执行在时间上是重叠的,一个程序段的执行尚未结束,另一个程序段的执行已经开始,即使这种重叠是很小的一部分,也称这几个程序段是并发执行的。

·什么是运行时间:程序在内存中的时间。

只有一个CPU,但是又希望有多个CPU

——虚拟出多个CPU。(“伪并行”,在任意时刻只有一个程序是活跃的)

面向每个任务虚拟出一个CPU,这就是进程。(CPU:从内存中取指令并执行)

虚拟出的CPU本质:对每个进程虚拟了程序计数器。

2.1.1进程模型

并行性:处理多个同时性活动的能力

并行处理:利用多个处理部件,为完成一个整体任务而同时执行

在任意时刻物理PC只对应一个程序的指令

底层:CPU在各个进程间来回切换

2.1.2进程的创建

有4种主要事件导致进程的创建:

1.系统初始化(foreground processes and daemons)

2.执行了正在运行的进程所调用的进程创建系统调用★

3.用户请求创建一个新进程

4.一个批处理作业的初始化

Fork子进程是父进程的精确副本。(但子进程的执行是独立的)

调用一次返回两次。

真正出现在代码中的不是系统调用程序,是系统调用的接口。

Pid=fork()

pid>0:父进程

pid=0:子进程

如果返回-1:代表创建子进程失败。

父进程子进程谁先执行谁后执行不能确定。

Execlp(替换子进程)

子进程复制了父进程的PC、正文、堆、栈等内容,包括输出缓冲。

Printf换行符:清空当前缓冲行;

Putchar():在创建子进程后,当前缓冲行没有被清空,则子进程也会输出父进程中Putchar()的内容。

希望父子进程共享地址空间——vfork()

Vfork会确保子进程先执行,子进程用exec或exit退出。(子进程不能用return(0)而是exit(0))

单CPU并行(多程序并发执行)与GPU并行的区别?

伪并行,不能提高CPU执行速度和效率

单CPU有空闲单CPU不够用

共同点:价值体现在CPU确实有事要忙(多任务)

2.1.5进程的状态

只有运行态和就绪态可以相互变迁,且都是由于系统调度。(CPU调度)

为了更好地管理进程,我们会对它建立数据结构,通常采用的数据结构就是队列。

就绪队列:就绪态

各个等待队列:阻塞态

·程序的并发执行?

两个程序在执行时间上有重叠。

·操作系统如何实现并发执行?

计算机上所有软件被组织成若干顺序进程,用调度算法使CPU在各个进程间来回切换。

进程的五种状态及转换关系图

2.1.6进程的实现

为了实现进程模型,即多任务并发执行,OS维护着一张表格(一个结构数组)——进程表;

每个进程对应一个进程表项(也叫进程控制块,PCB);

它包含进程状态的重要信息:PC、堆栈指针、内存分配状况、所打开文件的状态、账号和调度信息、其他进程由运行态转换到就绪态或阻塞态时必须保存的信息。

(PPT英文,找了课本的图)

CPU在各个进程间来回切换,切换时操作系统会保存现场。

保存线程——保存PCB

就绪队列——就绪态;

等待队列——堵塞态。(因为可能有不同堵塞原因,所以有多个等待队列)

·在单个CPU如何维持多个顺序进程的错觉?中断向量(Interrupt vector)的位置?

因为操作系统通过我们之前一系列技术实现的,这些技术离不开中断处理,因此中断处理会放在内存固定的地方,即靠近内存底部的固定区域,它包含中断服务程序的入口地址。

假设当一个磁盘中断发生时,用户进程A正在运行,则---

1.中断硬件将程序计数器、程序状态字、一个或多个寄存器压入堆栈,计算机随机跳转到中断向量所指示的地址(保存现场)

2.软件,特别是中断服务例程接管一切剩余的工作。

【多道程序设计模型】

怎么量化CPU的利用率呢?于是提出了概率模型

Probabilistic Model(概率模型)

p:一个进程等待I/O操作的时间与其停留在内存中的时间比

n:内存中同时存在的进程数量

·什么情况下多道程序设计最有价值?

最有价值:内存足够的情况下,我可以增加尽可能多的程序道数,而且在这一过程中,随着程序道数的增加,我的CPU利用率一直在上升。

——所以由图,80%I/O的时候最有价值。

【重要题型:CPU利用率】

相关文档
最新文档