计算机操作系统编写(第3章)
- 格式:doc
- 大小:366.00 KB
- 文档页数:23
第三章一、问答题1、用户级线程与内核级线程的区别是什么?2、PCB中包含哪些信息?进程状态属于哪类信息?3、什么是操作系统的内核?4、简述时间片轮转调度算法的基本思想。
5、某系统采用时间片轮转调度算法的处理机调度算法,某个时刻根据用户要求创建了一个进程P,进程P在其存在过程中依次经历了:进程调度选中了进程P 占用处理机运行,进程P运行中提出资源申请,要求增加内存使用量,没有得到;进程等待一段时间后得到内存;进程调度再次选中了进程P占用处理机运行;进程P的时间片到;一段时间后,进程P再次占用处理机;有紧急进程Q进入,系统停止进程P的运行,将处理机分配进程Q;进程Q运行完,进程调度再次选中了进程P占用处理机运行;进程P运行完。
请分析进程P在其整个生命过程中的状态变化。
进程调度选中了进程P占用处理机运行(就绪→运行),进程P运行中提出资源申请,要求增加内存使用量,没有得到(运行→阻塞);进程等待一段时间后得到内存(阻塞→就绪);进程调度再次选中了进程P占用处理机运行(就绪→运行);进程P的时间片到(运行→就绪);一段时间后,进程P再次占用处理机(就绪→运行);有紧急进程Q进入,系统停止进程P的运行,将处理机分配进程Q(运行→就绪);进程Q运行完,进程调度再次选中了进程P占用处理机运行(就绪→运行);进程P运行完。
请分析进程P在其整个生命过程中的状态变化。
6、试比较进程与程序的异同。
7、引起创建进程的事件通常有哪些?简述进程的创建过程。
8、简述进程的阻塞过程。
911、简述操作系统的三级调度。
12、为什么要了解进程间的家族关系?因为父进程和子进程之间是隶属关系,子进程可以继承使用父进程的资源;如果父进程被撤销,还应撤销其所有的子孙进程。
13、什么是进程?。
14、试比较进程和线程的区别。
15、简述进程的基本状态,画出其状态转换图。
二、计算题1、若程序Pa,Pb和Pc单独执行时间分别Ta,Tb和Tc,Ta=1小时,Tb=1.5小时,Tc=2小时,其中处理机工作时间分别为Ta=10分钟,Tb=15分钟,Tc=35分钟。
第三章进程管理一、选择题:1、下面过于程序的描述,正确的是()A. 程序执行的最终结果受到外界因素的影响,跟初始条件无关B. 程序执行的最终结果跟速度有关C. 程序是按前后次序相继地进行计算机操作序列集合,是一个静态的概念;D. 程序只能通过顺序执行2、程序的顺序执行有以下特点()A. 顺序性、封闭性、独立性B. 顺序性、封闭性、可再现性C. 顺序性、封闭性、随机性D. 顺序性、随机性、独立性3、程序A、B共享变量N,执行次A都要操作变量N,N=N+1,每执行次B都要print(N),N=0,初始值为N=0。
若执行顺序为先A后B,其结果为()A. 1 1 0B. 0 1 0C. 1 0 1D. 0 0 14、如上题13所述,执行先B后A,其结果为()A. 1 1 0B. 0 1 0C. 1 0 1D. 0 0 15、如上题所述,执行为A在B中间,起结果为.()A. 1 1 0B. 0 1 0C. 1 0 1D. 0 1 16、下面关于进程描述完全的是()A. 进程是可以并发执行的计算部分;B. 进程是一个独立的调度活动.C. 进程是一个抽象实体.D. 进程是并发执行的过程中分配和管理资源的基本单位。
7、现代操作系统的特点()A. 程序的并发执行;B. 系统所拥有的资源被共享;C. 用户随机地使用系统资源;D. 以上三者都是。
8、进程和程序的区别是()A. 进程是一个动态的概念,而程序则是一个静态的概念;B. 进程具有并发性而程序没有;C. 进程是一个独立的调度活动.D. A和B都正确。
9、多道程序系统中的程序执行的特点为()A. 独立性、随机性、资源共享性;B. 顺序性、封闭性、可再现性;C. 顺序性、封闭性、随机性;D. 顺序性、随机性、独立性;10、描述信息所包括的下列描述不正确的是()。
A. 进程名B. 用户名C. 家族关系D. 用户资源11、现代oc的3个特点不包括()。
A. 程序并发执行B. 进程优先级C. 系统所拥有的资源共享D. 用户随即使用系统资源12、与进程优先级有关的PCB表项不包括()。
计算机操作系统慕课版第三章课后答案
1、高级调度与低级调度的主要任务是什么?为什么引入中级调度?
(1)、高级调度的主要任务是将外存的作业调入内存,又称作业调度。
低级调度的主要任务数为内存中处于就绪态的作业分配处理机。
(2)、为了提高内存的利用率与系统吞吐量。
ps:(中级调度是将作业调出掉回,高级调度是掉入,作业一次掉入,多次掉回,所以中级调度频次更高)
2、何谓作业和JCB?
作业是一组程序与数据和作业说明书,是高级调度的基本单位。
JCB是作业控制块,是作业存在的表示,包含管理,调度所需的全部信息。
ps:(对作业的控制是JCB和作业说明书一起的)
3、在什么情况下需要使用JCB?JCB通常包含了哪些内容?(1)作业进入系统。
(2)包含系统对作业调度,管理的全部信息。
4、在作业调度中应如何确定接纳多少作业和接纳哪些作业?
取决于多道程序度和调度算法。
5、试说明低级调度的主要功能?
从就绪队列中根据调度算法选择一个进程分配处理机。
6、简述引起进程调度的原因?
时间片完了、阻塞了、运行完了、被抢占了。
7、在抢占式调度算法中,应遵循的原则?
优先级、短进程优先、时间片原则。
8、在选择调度算法时应该遵循哪些规则?
公平性、资源利用率、平衡性、强制执行
9、何谓静态优先级?何谓动态优先级?确定优先级的依据是什么?
(1)、静态优先级创建进程时就确定,动态优先级随着时间与环境变化而改变。
(2)、用户要求,进程对cpu io等资源的要求,进程类型。
第三章处理机调度与死锁1,高级调度与低级调度的主要任务是什么?为什么要引入中级调度?【解】(1)高级调度主要任务是用于决定把外存上处于后备队列中的那些作业调入内存,并为它们创建进程,分配必要的资源,然后再将新创建的进程排在就绪队列上,准备执行。
(2)低级调度主要任务是决定就绪队列中的哪个进程将获得处理机,然后由分派程序执行把处理机分配给该进程的操作。
(3)引入中级调度的主要目的是为了提高内存的利用率和系统吞吐量。
为此,应使那些暂时不能运行的进程不再占用宝贵的内存空间,而将它们调至外存上去等待,称此时的进程状态为就绪驻外存状态或挂起状态。
当这些进程重又具备运行条件,且内存又稍有空闲时,由中级调度决定,将外存上的那些重又具备运行条件的就绪进程重新调入内存,并修改其状态为就绪状态,挂在就绪队列上,等待进程调度。
3、何谓作业、作业步和作业流?【解】作业包含通常的程序和数据,还配有作业说明书。
系统根据该说明书对程序的运行进行控制。
批处理系统中是以作业为基本单位从外存调入内存。
作业步是指每个作业运行期间都必须经过若干个相对独立相互关联的顺序加工的步骤。
作业流是指若干个作业进入系统后依次存放在外存上形成的输入作业流;在操作系统的控制下,逐个作业进程处理,于是形成了处理作业流。
4、在什么情冴下需要使用作业控制块JCB?其中包含了哪些内容?【解】每当作业进入系统时,系统便为每个作业建立一个作业控制块JCB,根据作业类型将它插入到相应的后备队列中。
JCB 包含的内容通常有:1) 作业标识2)用户名称3)用户账户4)作业类型(CPU 繁忙型、I/O芳名型、批量型、终端型)5)作业状态6)调度信息(优先级、作业已运行)7)资源要求8)进入系统时间9) 开始处理时间10) 作业完成时间11) 作业退出时间12) 资源使用情况等5.在作业调度中应如何确定接纳多少个作业和接纳哪些作业?【解】作业调度每次接纳进入内存的作业数,取决于多道程序度。
操作系统1.1 操作系统的基本概念1.11操作系统的基本概念(1) 什么是操作系统有效:操作系统在资源管理方面要考虑到系统运行效率和资源的利用率。
合理:操作系统对于不同的用户程序要”公平”,以保证系统不发生”死锁”或”饥饿”的现象。
方便:用户使用界面和程序设计接口两方面的易用性,易学性,和易维护性。
(2) 操作系统的重要作用A 管理系统中的各种资源纪录资源的使用情况确定资源的分配策略实施资源分配回收资源B 为用户提供良好的界面(3) 操作系统的特征A 并发性:用户程序与用户程序之间并发执行;用户程序与操作程序之间并发执行。
B 共享性:操作系统与多个用户程序共用系统中的各种资源。
互斥共享同时共享C 随机性: 系统无法知道运行着的程序会在什么时候做什么事情。
1.12 操作系统的功能1. 进程(线程)管理:对于cpu的管理,解决处理器分配调度策略,分配实施和回收等问题。
2. 储存管理:管理内存资源,如何为多道程序分配内存空间,使程序和数据彼此隔离,同时又能保证一定条件下的共享,解决内存扩充问题。
3. 文件管理:对于外存储器的管理,有效的支持文件的储存,检索和修改等操作,解决文件的共享,保密和保护等问题,使用户方便安全的访问文件。
4. 设备管理: 对所有输入输出设备的管理,还包括对控制器,通道等支持设备的管理。
负责外部设备的分配,启动和故障处理。
采取中断技术,通道技术,虚拟设备技术和缓冲技术。
并提供良好的界面。
5. 用户接口:向用户提供使用它自己的手段。
实时系统可以及时响应外部事件,在严格的时间范围内完成处理,具有高可靠性。
实时控制系统实时信息处理系统个人计算机系统类似于分时系统1.14 操作系统与用户的接口(1) 程序级接口:由一组系统调用命令组成,用户程序借助于系统调用命令来向操作系统提出各种资源要求和服务要求。
(当用户程序运行到调用指令时,就转到系统调用的处理程序,在用户程序中给出系统调用命令号----→访问系统调用入口表-------→找到相应子程序执行并返回值)包括设备管理类,文件管理类,进程控制类,进程通信类,存储管理类。
第三章处理机调度与死锁1,高级调度与低级调度的主要任务是什么?为什么要引入中级调度?【解】(1)高级调度主要任务是用于决定把外存上处于后备队列中的那些作业调入内存,并为它们创建进程,分配必要的资源,然后再将新创建的进程排在就绪队列上,准备执行。
(2)低级调度主要任务是决定就绪队列中的哪个进程将获得处理机,然后由分派程序执行把处理机分配给该进程的操作。
(3)引入中级调度的主要目的是为了提高内存的利用率和系统吞吐量。
为此,应使那些暂时不能运行的进程不再占用宝贵的内存空间,而将它们调至外存上去等待,称此时的进程状态为就绪驻外存状态或挂起状态。
当这些进程重又具备运行条件,且内存又稍有空闲时,由中级调度决定,将外存上的那些重又具备运行条件的就绪进程重新调入内存,并修改其状态为就绪状态,挂在就绪队列上,等待进程调度。
3、何谓作业、作业步和作业流?【解】作业包含通常的程序和数据,还配有作业说明书。
系统根据该说明书对程序的运行进行控制。
批处理系统中是以作业为基本单位从外存调入内存。
作业步是指每个作业运行期间都必须经过若干个相对独立相互关联的顺序加工的步骤。
作业流是指若干个作业进入系统后依次存放在外存上形成的输入作业流;在操作系统的控制下,逐个作业进程处理,于是形成了处理作业流。
4、在什么情冴下需要使用作业控制块JCB?其中包含了哪些内容?【解】每当作业进入系统时,系统便为每个作业建立一个作业控制块JCB,根据作业类型将它插入到相应的后备队列中。
JCB 包含的内容通常有:1) 作业标识2)用户名称3)用户账户4)作业类型(CPU 繁忙型、I/O芳名型、批量型、终端型)5)作业状态6)调度信息(优先级、作业已运行)7)资源要求8)进入系统时间9) 开始处理时间10) 作业完成时间11) 作业退出时间12) 资源使用情况等5.在作业调度中应如何确定接纳多少个作业和接纳哪些作业?【解】作业调度每次接纳进入内存的作业数,取决于多道程序度。
三、内存管理(一)内存管理基础1.内存管理概念内存是指处理器可以直接存取指令和数据的存储器,内存和处理器都是计算机系统的一种重要资源。
在多道程序设计技术出现以后,对存储管理提出了更高的要求。
内存管理的主要任务是为多道程序的运行提供良好的环境,方便用户使用存储器,提高存储器的利用率以及从逻辑上扩充存储器。
在操作系统中,将一个用户的源程序变为一个可在内存中执行的进程,通常要经过以下几步:1)编译。
由编译程序将用户源代码编译成若干个目标模块;2)链接。
由链接程序将编译后形成的一组目标模块,以及它们所需要的库函数链接在一起,形成一个完整的装入模块;3)装入。
由装入程序将装入模块装入内存。
(1)程序的链接源程序经过编译后,可得到一组目标模块,这时需要利用系统中链接程序将这组目标模块链接在一起,形成装入模块。
根据链接时间的不同,可以分成三种链接方式,即静态链接、装入时的动态链接和运行时的动态链接。
1)静态链接。
在程序运行前,先将各目标模块及它们所需的库函数,链接成一个完整的装配模块,以后不再拆开。
静态链接方式需要解决两个问题:外部调用符号到相对地址的转换;相对地址到绝对地址的的转换;2)装入时的动态链接。
在将目标模块装入内存时,采用边装入边链接的方式。
该方式具有以下优点:便于目标模块的修改和更新;便于实现对目标模块的共享。
3)运行时的动态链接。
事先不对各个模块进行链接,而是在程序执行中当需要该模块时,再将该模块调入内存,并进行链接。
采用这种方式,凡在执行过程中没有用到的目标模块,都不会被调入内存,这样不仅可加快程序的装入过程,而且可以节省大量的内存空间。
(2)程序的装入程序的装入方式有三种,它们分别是绝对装入方式、可重定位的装入方式以及动态装入方式,现介绍如下。
1)绝对装入方式在编译时,如果知道程序将驻留在内存的什么位置,那么编译程序将产生包含有内存绝对地址(也称实际地址)的目标代码。
这样装入程序就会按照目标代码中的地址,将程序和数据装入到内存的实际位置。
程序中使用的绝对地址,既可以在编译或汇编时给出,也可由程序员直接赋予。
但因为需要程序员熟悉当前内存的使用情况,所以要求较高。
2)可重定位的装入方式在多道程序的环境下,所得到的目标模块的起始地址通常是从0开始的,程序中的其它地址都是相对于起始地址进行计算的。
此时应采用重定位装入方式,根据内存的当前情况,将装入模块装入到内存的适当位置。
由于装入模块中的所有地址与实际装入内存的物理地址不同,所以需要进行地址变换(在原先相对地址的基础上加上内存装入位置的地址)。
如下图所示通常,把在装入程序时对目标模块中的指令和数据的地址变换过程称为重定位。
又因为地址变换是在装入时一次完成的,所以称为静态重定位。
3)动态运行时的装入方式动态运行时的装入程序,在把装入模块装入内存后,并不立即将其中的相对地址转换为绝对地址,而是把地址转换推迟到程序执行前再进行。
因此,装入内存后的所有地址都仍是相对地址。
(3)逻辑地址与物理地址空间;由编译程序所产生的所有目标模块中,使用的都是相对地址,即其起始地址为0,每个模块中的地址都是相对于起始地址计算的。
而物理地址是指内存中的实际的地址空间。
(4)内存保护保证进入内存的各道作业都在自己的存储空间内运行,互不干扰。
既要防止一道作业由于发生错误而破坏其他作业,也要防土破坏系统程序。
这种保护一般由硬件和软件配合完成2.交换与覆盖交换技术就是把暂时不用的某个程序及数据部分(或全部)从内存移到外存中去,以便腾出必要的内存空间,或把指定的程序或数据从外存读到相应的内存中,并将控制权交给它,使其在系统上运行的一种内存扩充技术。
覆盖技术,就是把一个大的程序划分为一系列覆盖,每个覆盖就是一个相对独立的程序单位,把程序执行时并不要求同时装入内存的覆盖组成一组,称为覆盖段,这个覆盖段分配到同一个存储区域,这个存储区域称为覆盖区,它与覆盖段一一对应。
交换技术不要求程序员给出程序段之间的覆盖结构,而且交换主要是在进程或作业之间进行;而覆盖则主要在同一个作业或进程中进行。
另外,覆盖只能覆盖与覆盖程序段无关的程序段。
3.连续分配管理方式连续分配方式,是指为用户程序分配一个连续的内存空间。
可分为单一连续分配方式和分区分配方式两大类。
(1)单一连续分配这是一种最简单的存储管理方式,只能用于单用户、单任务的操作系统。
采用该方式时,可把内存分为系统区和用户区两部分,系统区位于内存的低址部分,供OS使用;用户区是除系统区以外的全部内存空间,是供用户程序使用的部分。
单一连续分配方式的主要特点是管理简单,只需要很少的软件和硬仍支持。
且便于用户了解和使用。
但采用这种存储分配方式,内存中只能装入一道作业运行,从而导致各类资源的利用率都不高。
(2)分区分配分区式分配是能满足多道程序设计需要的一种最简单的存储管理技术。
通常,按照分区的划分方式,它又可分为固定分区分配、动态分区分配以及可重定位的分区分配等三种方式。
1)固定分区分配固定式分区法是一种最简单的可运行多道程序的存储管理方式。
它将用户的内存空间划分为若干个固定大小的区域,在每个分区中只装入一道作业,这样,用户空间被划分为几个分区,便允许有几道作业并发运行。
当有一个空闲分区时,便可以再从外存的后备作业队列中选择—个适当大小的作业装入该分区,当该作业结束时,又可再从后备作业队列中找出另一作业调入该分区。
可用下述两种方法将内存的用户空间划分为若干个固定大小的分区:a)分区大小相等,就是使所有的内存分区大小相等。
其缺点是缺乏灵活性,即当程序太小时,会造成内存空间的浪费;当程序太大时,一个分区又不足以装入该程序,致使该程序无法运行。
尽管如此,这种划分方式仍被用于利用一台计算机去控制多个相同对象的场合,因为这些对象所需的内存空间是大小相等的。
例如,炉温群控系统,就是利用一台计算机去控制多台相同的冶炼炉。
b)分区大小不等。
为了克服分区大小相等而缺乏灵活性的这个缺点,把内存区划分成含有多个较小的分区、适量的中等分区及少量的大分区。
这样,便可根据程序的大小为之分配适当的分区。
2)动态分区分配动态分区分配是在作业装入和处理过程中建立的分区,要求分区的容量能正好适应作业的大小。
在作业进入系统前,根据作业的大小来申请所需存储容量,然后由系统实施分配。
为了实现分区分配,系统中必须设置相应的数据结构,常用的有两种形式:空闲分区表和空闲分区链。
为把一个新作业装入内存,须按照一定的分配算法,从空闲分区表或空闲分区链中选出一分区分配给该作业。
目前常用的有以下三种分配算法。
a)首次适应算法。
以空闲分区链作为数据结构,在分配内存时,从链首开始顺序查找,直至找到一个大小能满足要求的空闲分区为止,从该分区中划出一块内存空间分配给请求者,余下的空闲分区仍留在空闲链中。
如果从链首直至链尾都不能找到满足要求的分区,则此次内存分配失败。
b)循环首次适应算法。
该算法是由首次适应算法演变而成的。
在为进程分配内存空间时,不再是每次都从链首开始查找,而是从上次找到的空闲分区的下一个空闲分区开始查找。
这种分配方式的优点是,使得内存中的空闲分区分布的更均匀,减少查找空闲分区的开销。
c)最佳适应算法。
该算法要求将所有的空闲分区按其容量从小到大的顺序形成一个空闲分区链,这样,从链首开始查找时,第一次找到的合适分区,就是既能满足要求又是最小的空闲分区。
3)可重定位分区分配在连续分配方式中,必须把一个作业装入连续的内存空间,时间长了,内存中会出现很多内存碎片,而重定位式分区分配是解决碎片问题的简单而有效的办法。
共基本思想是移动内存中的所有作业使之成为一个连续区域,继而留下一个较大的空白内存区。
这种过程我们称之为“拼接”或“紧凑”。
由于经过紧凑后的某些用户程序在内存中的位置发生了变化,所以还需要对程序和数据的地址进行修改,这叫做重定位。
4.非连续分配管理方式连续分配方式会形成许多“碎片”,虽然可通过“紧凑”方法将许多碎片拼接成可用的大块空间,但需要为之付出很大开销。
如果允许将一个进程直接分散地装入到许多不相邻接的分区中,则无须再进行“紧凑”。
基于这一思想而产生了离散分配方式。
(1)分页管理方式所谓分页管理方式,是允许将一个进程直接分散地装入到许多不相邻接的分区中,分配的基本单位是页。
1)页面与页表页面。
分页存储管理是将一个进程的逻辑地址空间分成若干个大小相等的片,称为页面,并为各页加以编号。
相应地,把内存空间也分成与页面相同大小的若干个存储块,称为(物理)块。
在为进程分配内存时,以块为单位将进程中的若干个页分别装入到多个可以不相邻接的物理块中。
一个页的地址分成两部分:页号和位移量,如下图页表。
在分页系统中,为了能在内存中找到每个页面所对应的物理块。
系统又为每个进程建立了一张页面映像表,简称页表。
在进程地址空间内的所有页,依次在页表中有—页表项,其中记录了相应页在内存中对应的物理号。
如图3-2所示2)地址变换机构为了能将用户地址空间中的逻辑地址变换为内存空间个的物理地址,在系统中必须设置地址变换机构。
由于页内地址和物理地址是一一对应的,因此,地址变换任务就是借助于页表来完成的。
基本地址变换。
在系统中只设置一个页表寄存器,用来存放页表在内存中的始址和页表的长度。
当进程要访问某个逻辑地址中的数据时,分页地址变换机构会自动地将地址分为页号和页内地址两部分,再以页号为索引去检索页表。
在检索前先将页号与页表长度相比较,判断是否有效。
然后将页表始址与页号和页表项长度的乘积相加,便得到该表项在页表中的位置,进而得到该页的物理块号。
3)具有快表的地址变换机构为了提高地址变换速度,可在地址变换结构中,增设一个具有并行查寻能力的特殊高速缓冲寄存器,称为快表。
地址转换方式变为,将逻辑地址先在快表中查询转换,如失败,再访问内存中的页表。
访问结束后,将该表项存入快表,以备下次查询。
4)两级页表和多级页表现代的大多数计算机系统,都支持非常大的逻辑地址空间(232一264)。
在这样的环境下,页表就变得非常大,要占用相当大的内存空间。
解决的方法有二级页表和多级页表。
对于要求连续的内存空间存放页表的问题,可利用将页表进行分页,并离散地相各个页而分别存放在不同的物理块中的办法来加以解决,同样也要为离散分配的页表再建立一张页表,称为外层页表,在每个页表项中记录了页表页面的物理块号。
为了地址变换实现上的方便起见,在地址变换机构中同样需要增设一个外层页表寄存器,用于存放外层页表的始址,并利用逻辑地址中的外层页号,作为外层页表的索引,从中找到指向页表分页的地址。
多级页表如果对外层页表再进行分页,并设置更高的页表来记录外层页表分页的存储情况。
就构成了三级或多级页表。
(2)分段管理方式所谓分段管理方式,是允许将一个进程直接分散地装入到许多不相邻接的分区中,分配的基本单位是段。