现代操作系统第二章复习重点
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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利用率】