计算机操作系统 左万利 第二章课后习题答案
1、为何引进多道程序设计,在多道程序设计中,内存中作业的道数是否越多越好?说明原因。
引入多道程序设计技术是为了提高计算机系统资源的利用率。在多道程序系统中,内存中作业的道数并非越多越好。一个计算机系统中的内存、外设等资源是有限的,只能容纳适当数量的作业。当作业道数增加时,将导致对资源的竞争激烈,系统开销增大,从而导致作业的执行缓慢,系统效率下降。
2、多道程序设计会带来那些问题?如何解决?
问题:
1、处理器资源管理问题
2、内存资源管理问题
3、设备资源管理问题
解决办法: 确定适当的分配策略,对资源进行管理。
3、什么是进程?进程具有哪些主要特性?试比较进程与程序之间的相同点和不同点。
进程:进程是具有一定独立功能的程序关于一个数据集合的一次运行活动。
特点:
- 并发性
- 动态性
- 独立性
- 交往性
- 异步性
- 结构性
相同点与不同点: 程序是静态的,进程是动态的;进程是有生存期的,而程序没有,一个程序可对应多个进程,而一个进程只能对应一个程序。
4、有人说,用户进程所执行的程序一定是用户自己编写的。这种说法对么?如果不对,举例说明
不对,例如 C编译程序以用户进程身份运行,但是C编译程序并不是用户自己编写的,字处理程序等工具软件也一样。
5、什么是进程上下文?进程上下文包括哪些成分?那些成分对目态程序是可见的?
进程的物理实体和支持进程运行的物理环境称为进程上下文 进程上下文包含三个组成部分:
- 用户级上下文。是由用户进程的程序块、用户数据块(含共享数据块)和用户堆栈组成的进程地址空间。
- 系统级上下文。包括进程控制块、内存管理信息、进程环境块,以及系统堆栈等组成的进程地址空间。
- 寄存器上下文。由程序状态寄存器、各类控制寄存器、地址寄存器、通用寄存器、用户堆栈指针等组成
其中用户级上下文以及部分的寄存器上下文对于目态程序可见
6、进程一般具有哪三个主要状态?举例说明状态转换的原因
三种状态:
- 运行态(Run) 进程占有处理机资源,正在运行。
- 就绪态(Ready)进程本身具备运行条件,但是处理机的个数少于可运行的进程个数,未投入运行,在等待处理机资源。
- 等待态(Wait)也称挂起态(Suspend)、封锁态(Blocked)、睡眠态(Sleep) 进程本身不具备运行条件,等待某个事件发生,比如等待某个资源被释放。
状态转换原因:
就绪进程获得处理机,状态转化为运行态
运行进程被剥夺处理机,比如用完时间片或者出现级别高于此进程的进程,状态转化为就绪
运行进程受阻时,比如申请资源被占用,启动I/O传输未完成,状态转换为等待;当所等待事件发生时,如得到申请资源,I/O传输完成,状态转化为就绪。
7、对于循环轮转进程调度算法、可抢占CPU的优先数进程调度算法、不可抢占CPU的优先数进程调度算法,分别画出进程状态转换图
8、有几种类型的进程队列?每类各应设置几个队列?
三种类型进程队列:
- 就绪队列(整个系统一个)
- 等待队列(每个等待事件一个)
- 运行队列(在单CPU系统中只有一个)
9、什么是进程控制块?进程控制块中一般包含哪些哪些内容?
进程控制块是标志进程存在的数据结构,其中包含系统对进程进行管理所需要的的全部信息。一般包括:进程标识、用户标识、进程状态、调度参数、现场信息、家族联系、程序地址、当前打开文件、消息队列指针、资源使用情况、进程队列指针等
10、什么是线程,图示线程与进程之间的关系
线程:进程中一个相对独立的执行流
线程与进程的关系
11、试比较进程状态与该进程内部线程之间的关系
进程状态是指每个进程在其生命周期中的当前状态,它是由进程内部线程综合所决定的。每个进程都由多个线程构成,每个线程都可以有不同的状态,这也就决定了进程状态的不同。举例来说,当进程中的一个线程在运行时,进程的状态就是“运行”;如果它的所有线程都处于等待状态,进程的状态就是“等待”。
12、什么是线程控制块? 线程控制块中一般包含哪些内容?
线程控制块是标志线程存在的数据结构,其中包含系统对线程进行管理所需要的全部信息 一般包含:线程标识、线程状态、调度参数、现场信息、链接指针等
13、同一进程中的多个线程有哪些成分是共用的。哪些成分是私用的?
共用:内存地址空间、文件句柄以及其他系统资源
私用:寄存器、线程栈以及其他状态信息
14、 试比较用户级别线程和核心级别线程间在以下几个方面的差别和各自的优缺点
(1)创建速度
(2)切换速度
(3)并行性
(4)线程控制块的存储位置
创建速度:用户级别线程的创建速度更快,因为它们受用户控制,而核心级别线程受内核控制,需要更多的准备工作,这需要时间。
切换速度:用户级别线程的切换速度更快,因为它们受用户控制,可以在用户空间执行,而核心级别线程受内核控制,需要切换到内核空间,这需要时间。
并行性:用户级别线程的并行性有限,因为它们运行在同一个进程中,而核心级别线程的并行性更高,因为它们可以在不同的进程之间共享资源。
线程控制块的存储位置:用户级别线程的线程控制块存储在用户空间,而核心级别线程的线程控制块存储在内核空间。优点:用户级别线程有更少的切换时间,更快的创建速度和更少的资源消耗,而核心级别线程有更高的并行性和可靠性。
缺点:用户级别线程有有限的并行性,而核心级别线程有更多的切换时间,更慢的创建速度和更多的资源消耗。
15、试比较linux系统中fork()和clone()两个系统调用之间的差异
fork()会创建一个新的进程,该进程与调用fork()的父进程完全相同,包括其内存空间、数据和状态。
fork()会返回一个整数值,用于区分父进程和子进程。
clone()也会创建一个新的进程,但这个新的进程可以从父进程中复制不同的部分,包括其栈、堆、文件描述符等。
clone()返回一个新的标识符,用于识别新进程。
16、何谓作业? 何谓作业步? 作业何时转变为进程
作业:用户要求计算机系统为其完成的计算任务的集合。
作业步:作业中一个相对独立的处理步骤
进入进程:根据作业步的要求建立进程。
17、 试分析作业、进程、线程三者之间的关系
联系:一个作业包含多个进程,一个进程包含多个线程;
区别:作业是计算机提交任务的任务实体,而进程是执行实体,是资源分配的基本单位,线程是处理机调度的基本单位。
18、何谓系统开销,举例说明
系统开销: 运行操作系统程序对系统进行管理而花费的时间和空间。如:作业调度、进程调度、进程切换。