操作系统复习提纲(2)

2020-05-04 15:53

5.Virtual machines 虚拟机 6.Exokernels 外核 虚拟机存在的意义? 1.同一台机器上的不同操作系统上运行服务器 2.Web托管 3.用户希望使用多个操作系统 4.云(量化服务,服务可计算) 外核

1.对机器进行分区,给每个用户整个资源的子集

2.一个称为外核(exokernel)的程序在内核态中运行,为虚拟机分配资源,并检查试图使用这些资源的企图,以确保么有机器会使用他人的资源 3.减少了映像层

例如虚拟机认为自己有独立的磁盘,虚拟机监控程序维护一张表,进行磁盘地址映像,外核中就不需要了

第二章:进程和线程p1

注:进程的定义上一章提到

进程是OS提供的最重要的抽象概念 1.是对CPU的抽象,将一个物理的CPU变换成多个虚拟的CPU,从而提供宏观并发操作的能力

2.是对正在运行的程序的抽象,每个进程都有自己的虚拟程序计数器、寄存器和变量的当前值 3.操作系统的最底层是调度程序,在它上面有许多进程,所有关于中断处理、启动进程和停止进程的具体细节都隐藏在调度程序中

注:进程是单处理器伪并行(宏观并行)

顺序进程(进程)

1.一个进程就是一个正在执行程序的实例,包括程序计数器、寄存器和变量的当前值,每个进程拥有自己的虚拟CPU 2.每个 程序被抽象为有自己逻辑程序计数器的进程 3.实际上只有一个物理程序计数器

4.每个程序运行时,把它的逻辑程序计数器装入实际的物理程序计数器中,程序执行结束或暂停时,物理程序计数器的值被保存在内存中该进程的逻辑程序计数器中。

程序运行时:逻辑程序计数器 ? 物理程序计数器 程序停止:物理程序计数器 ? 逻辑程

序计数器。 如何实现进程的创建? 系统调用fork() 有4种主要事件导致进程的创建: 1.系统初始化 2.正在运行的进程发出系统调用创建进程 3.用户请求创建一个新进程 4.一个批处理作业的初始化 导致进程终止的事件: 1.正常退出 (自愿的)

exit(exitProcess),面向屏幕的程序提供关闭或退出按钮或菜单 2.出错退出 (自愿的) 例如参数错误、操作对象文件不存在,给用户显示错误信息 3.严重错误 (非自愿的) 例如除数为零,有些时候程序自行处理错误,捕获信号处理,没有处理时,默认结束进行 4.被其他进程杀死(非自愿的) 一个进程执行系统调用kill通知操作系统杀死某个进程 进程的三种状态 1.运行态:该时刻进程实际占用CPU 2.就绪态:可运行,但是其他进程正在占用CPU 3.阻塞态:等待某个事件,例如等待输入数据 课后习题,第1题 1.阻塞态直接到运行态是可能的,例如I/O完成,刚好时间片允许调度给该进程 2.就绪态到阻塞态是不可能的,只有运行时需要外部事件才会被阻塞

进程的实现。

1.为了实现进程模型,OS维护着一张表格:进程表 process table

2.每个进程对应一个进程表项(进程控制块 PCB Process Control Block)

包含进程状态的重要信息:程序计数器、堆栈指针、内存分配状况、所打开文件的状态、 账号和调度信息和进程由运行态转换到就绪态或阻塞态时必须保存的信息 保证该进程能再次启动,就像未被中断过一样

多道程序设计模型

采用多道程序设计的目的? 提高CPU的利用率

如果进程用于计算的平均时间是进程在内存中停留时间的20%,且内存中同时有5个进程,那么CPU是否满负载运行呢? 1.理想情况是CPU利用率为100%

2.但是也可能发生5个进程都在等待I/O的情况

Probabilistic Model (概率模型)

p:一个进程等待I/O操作的时间与其停留在内存中的时间比 n:内存中同时存在的进程数量 所有n个进程都在等待I/O的概率是

计算题目:

假设计算机有512MB的内存,OS占128MB,每个用户程序也占用128MB,该内存最多同时允许多少个用户程序?3 如果80%的时间用于I/O等待,则CPU的利用率是多少?1 – 0.8^3 = 49% 如果增加512MB内存呢?79% 1 - 0.8^7=79% 再增加512MB内存呢?91%

1.一个进程地址空间中伪并行运行多个控制线程 像分离的进程,但是共享进程的地址空间 2.多线程的必要性 1.并行实体共享同一地址空间和可用数据的能力是进程所不具备的(进程彼此有不同的地址空间)

2.比进程更轻量级,切换代价小 3 .比进程更易创建,快10-100倍

4.存在大量计算和I/O操作情况下加快应用程序执行速度(非计算密集型),即为高速的运算核心准备更多的待处理数据

一个线程与用户交互、另一个线程在后台得到通知后重新进行格式处理,第三个线程周期性的将RAM中的内容写到磁盘上

三个进程则不行,因为这三个线程需要再同一个文件上进行操作。 三个线程可以共享公共内存。 线程的使用 1.单线程进程(阻塞的系统调用) Web服务器的主循环得到请求,并在取下一个请求之前完成上一个请求的整个工作。即如果在等待磁盘操作时,服务器空转,不处理任何到来的其他请求,结果导致每秒钟只有很少的请求被处理 2.非阻塞的系统调用 1.设计者认为由于单线程所造成的性能低是不可接受的,采用非阻塞系统调用(例如非阻塞版read调用)

2.显示的保存和重新装入运行的状态

用单线程或多线程构造服务器有何优缺点? 1.单线程更适合计算机密集型任务,采用阻塞式系统调用,程序设计相对简单,但是没有实现并行性,性能较差

2.有限状态机使用非阻塞式系统调用和中断,实现了并行和高性能,但是增加了编程的复杂性,用一种复杂的方式模拟了线程及其堆栈,显示的保存和重新装入运行状态,使得“顺序进程”的模型概念消失

3.多线程使用阻塞式系统调用,程序设计较为简单,而且实现了并行性,还保留了顺序进程的思想。

线程是在CPU上被调度执行的实体

两种主要的方法实现线程库(包) 1.在用户空间实现 2.在内核空间实现

整个线程包的实现在用户空间完成,内核对线程包一无所知,从内核的角度,就是按照单线程进程的方式进行管理

一:在用户空间实现线程 优点:

1.用户级线程包可以在不支持线程的操作系统上实现。 2.允许每个进程有自己订制的线程调度算法

3.用户级线程有一定的空间扩展性(内核空间相对固定有限) 4.线程切换比进程切换要快一个数量级

如果读取磁盘文件的唯一途径是正常的阻塞式read系统调用,那么Web服务器的多线程方式能在用户空间实现吗? 1.一个线程阻塞,进程的其他所有线程都阻塞 2.线程切换无法实现 问题

如果一个线程执行系统调用,等待读取键盘,被阻塞,那么其他线程会怎样? 内网IP对外网可见,可用吗? 非阻塞式系统调用?

改应用程序,改过程库,改系统调用,违反了在用户空间实现线程的初衷 增加select系统调用?

检查只有系统调用不会阻塞时,才执行该系统调用,否则运行另一个线程,轮到下次调度

时再检查

一个线程因页面故障阻塞,也会阻塞所有线程

在内核空间实现 优点 1.不需要增加运行时系统和新的系统调用,不需要非阻塞式系统调用,采用通用的阻塞式系统调用

2.进程的某个线程阻塞,操作系统可以调度其他线程 这个和用户空间实现线程包不一样哦。

问题

开销大,需要额外的内核空间,相对运行时系统的线程管理,系统调用的代价比较大 一个多线程进程创建新进程时,需要复制进程的所有线程吗

进程可以接收信号,进程中的线程如何处理信号呢?两个线程同时关心(注册)一个信号怎么办?

三:混合方式实现 结合用户级和内核级线程的优点 内核识别内核级线程并对其进行调度。其中一些内核级线程会被多个用户级线程多路复用

第二章P2

竞争条件:两个或多个进程读写某些共享数据,而最后的结果取决于进程运行的精确时序

如何避免竞争条件?互斥

临界区:把对共享资源进行访问的程序片段称作临界区域(critical region)或临界区

问题: 避免竞争条件,同时保证使用共享数据的并发进程能够正确和高效的进行协作,需要满足以下4个条件: 1.任何2个进程不能同时处于临界区 2.对CPU的速度和数量不做任何假设

3.运行在临界区外的进程不能阻塞其它进程

4.不得使进程无限期等待进入临界区(任何进程总有机会可以进入其临界区)

实现互斥访问 1.忙等待的互斥

Disabling interrupts 屏蔽中断 Lock variables 锁变量

Strict alternation 严格轮换法 Peterson’s solution P解法


操作系统复习提纲(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:case study-香格里拉酒店

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: