计算机操作系统(慕课版)第二章课后题答案

news2024/12/24 2:36:36

一、简答题
(1)什么是前趋图?试画出下面四条语句的前趋图.
S1:a=x+y;
S2:b=z+1;
S3:c=a-b;
S4:w=c+1;
在这里插入图片描述
答:前趋图(Precedence Graph)是一个有向无循环图,记为DAG(DirectedAcyclicGraph),用于描述进程之间执行的前后关系。

(2)什么是进程? OS中为什么要引入进程?它会产生什么样的影响?

答:进程: 一段可并发执行的具有头独立功能的程序,是关于某个数据集的一次执行过程。也是os进行资源分配和保护的基本单位 影响:
实现多个程序的并发执行(传统的程序不能与其他程序并发执行,只有在为之创建了进程后,其才能与其他程序并发执行)。极大提高了资源利用率和系统吞吐量

(3)进程最基本的状态有哪些?哪些事件可能会引起不同状态间的转换?

答:运行态、就绪、阻塞
1.运行→等待:等待使用资源或某事件发生
2.等待→就绪:资源得到满足或某事件已经发生
3.运行→就绪:时间片到,或者有更高优先级进程到达
4.就绪→运行:CPU空闲时间调度选中一个就绪进程需要其运行

(4)为什么要引入进程的挂起状态?

答:挂机,实际上就是一种静止状态。被挂起后,无论是否处于就绪状态,系统都不会分配处理机。引入挂起的原因:①终端用户的需要②父进程请求③负荷调节的需要④os的需要

(5)叙述组成进程的基本要素,并说明它们的作用。

答:基本要素:PCB、程序块、数据块、堆栈
作用:PCe的作用是进程创建时建立PCB、进程撒销时回收PCB;程序块即被执行的程序;数据块即程序运行时需加工处理的对象;堆栈:每个进程都将捆绑一个堆栈

(6)请给出PCB的主要内容。描述当进程状态发生转换(就绪一运行、运行一阻塞)时、Os需要使用/修改PCB的哪些内容?

答:PCB主要用于描述进程的基本情况以及进程的运行变化过程,是进程存在的唯一标志。 PCB的内容可以分成【调度信息】和【现场信息】两部分
PCB的内容:进程名、进程号、存储信息、优先级、当前状态、资源清单、家族关系、消息队列指针等。
现场信息:用于保留运行进程所需保存的CPU现场信息。内容包括通用寄存器、控制寄存器的内容等等
Os需要使用/修改的PCB内容包括:就绪→运行;运行→就绪

(7)试说明引起进程创建的主要事件。

答:用户登录、作业调度、提供服务、应用请求

(8)在创建一个进程时,os需要完成的主要工作是什么?

答:调用进程创建原语→申请一个空白PCB→填写用于控制和管理进程的信息→分配运行时所需的资源→把PCB转入就绪状态→插入到就绪队列中

(9)试说明引起进程终止的主要事件。

答:正常结束、异常结束、外界干预

(10)在终止一个进程时,os要完成的主要工作是什么?

答:(1)根据被终止进程标识符.从PCB集中检索出指定进程的PCB
(2)若被终止进程处于执行状态,则立即终止该进程的执行,置调度标志为真,用于指示该进程被终止后应重新进行调度;(3)若该进程还有子孙进程,则将其所有子孙进程也都予以终止以防它们成为不可控的进程;
(4)将被终止进程拥有的全部资源或者归还给其父进程,或者归还给系统;
(5)将被终止进程的PCB从所在队列或链表中移出等待其他程序来搜集信息。

(11)试说明引起进程阻塞或被唤醒的主要事件。

答:①向系统请求共享资源失败(运行→阻塞) ②等待完成某种操作(阻塞) ③尚未到达新的数据(阻塞) ④等待到达新任务(阻塞)

(12)试比较进程间的低级与高级通信工具

答:低级通信工具:效率低,通信对用户不透明,所有的操作必须由程序员实现 高级通信工具:直接利用Os提供的—组通信命令来高效地传送大量数据

(13)当前有哪几种高级通信机制?

答案:①共享存储器系统通信机制 ②管道通信系统通信机制 ③消息传递系统通信机制 ④客户机-服务器系统通信机制

(14)试说明使用管道文件( pipe文件)进行通信的优缺点。

答:优点:进程间可以不断传送大量信息,且无需占用宝贵的内存控件
缺点:进程间地信息传递需要启动读/写磁盘,相对于消息缓冲队列而言通信速度缓慢;需要时间开销

(15)试比较直接通信方式和间接通信方式。

答:【发送原语和接收原语的区别】 直接通信: send(receiver , message) receive(sender ,
message)简介通信: send(mailbox , message) receive(mailbox , message)
【提供给对方的标识符、通信链路、实时性】

(16)为什么要在OS中引入线程?

答:为了减少进程在并发执行时所付出的时空开销
进程是分配资源的基本单位,线程是系统调度的基本单位〈即进程还是作为资源分配的基本单位,但是不作为调度的基本单位)

(17)试说明线程的属性。

答:线程是一个轻型实体、可独立调度和分派的基本单位;线程可并发执行,可以共享所属进程的资源

(18)何谓用户级线程和内核支持线程?

答:用户级线程:仅存在于用户空间中的线程,无需内核支持,无需利用系统调用实现
内核支持线程:在内核支持下运行的线程,在内核空间中每个内核还被设置了TCB线程控制块

(19)用户级线程和内核支持线程有何区别?

答:用户级线程:用户空间中,TCB在用户空间中,用户空间中完成对线程的操作,可以在不支持线程的OS中实现,CPU执行时间相对于内核线程更少
内核支持线程:内核支持下,TCB在内核中,系统功能调用相应的程序,必须在支持线程的oS实现,可以得到更多的CPu执行时间

(20)试说明用户级线程和内核支持线程的实现方法。

答:用户级线程:运行在【运行时系统】和【内核控制线程】的中间系统上。
内核支持线程:分配任务数据区PTDA,包括若干个TCB空间一创建一个线程则分配一个TCB→写入信息到TCB,分配必要资源。当PTDA中的TCB用完,而进程又有新的线程时,只要所创建的线程数目未超过系统允许值,则系统可再为之分配新的TCB。

二、综合应用题
(21)试从调度、并发、拥有资源和系统开销这4个方面对传统进程和线程进行比较。

答:(1)调度性:在传统的操作系统中,拥有资源的基本单位独立调度和分派的基本单位都是进程,而在引入线程的操作系统中,把线程作为调度和分派的基本单位进程,只是拥有资源的基本单位,而不再是调度和分派的基本单位。

(2)并发性:在引入进程的操作系统中,不仅进程之间可以并发执行,而且在一个进程中的多个线程之间亦可并发执行,因此,比传统的操作系统具有更好的并发性。

(3)拥有资源:在这两种操作系统中,拥有资源的基本单位都是进程,线程除了一点在运行中必不可少的资源,本身并不拥有系统资源,但他可共享其隶属进程的资源。

(4)独立性:每个进程都能独立的申请资源和独立运行,但是同一进程中的不同线程则共享进程的内存地址空间和资源,他们之间的独立性比进程之间的独立性低。
(5)系统开销:在创建或撤销进程时,系统都要为之配和回收资源,在进程切换时所要保存和设置的线程信息也明显多于线程,因此,操作系统在创建、撤销和切换进程时所付出开销显著大于线程。

(22)(考研真题)
(1)为支持多进程的并发执行,系统必须建立哪些关于进程的数据结构?

答:PCB(进程控制块)、队列结构(就绪队列、等待队列、运行指针)

(2)为支持进程状态的变迁,系统至少应提供哪些进程控制原语?

答:创建、阻塞、唤醒、撤销原语

(3)在执行每一个进程控制原语时,进程状态会发生什么变化?相应的数据结构会发生什么变化?

答:①创建原语:创建PCB并初始化→进程变为就绪状态,加入到就绪队列 ②阻塞原语:运行变为阻塞状态→阻塞进程的PCB插入相应的阻塞队列
③唤醒原语:阻塞变为就绪状态→阻塞队列中删除该进程,插入到就绪队列中 ④撤撒销原语:运行变为消亡状态→系统撤销该进程的PCB

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/549978.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能Python-pythondataframe取出一列

用 Python Dataframe 取出一列 数据分析中,用到的数据往往是有多列多行的。而在实际的分析过程中,我们需要针对其中的某一列进行处理。这个时候,Python中的Dataframe就成了我们的利器。 在这篇文章中,我们将教你如何使用Python …

chatgpt赋能Python-pythongit

PythonGit:使Git操作更加高效 Git作为目前最流行的版本控制工具之一,已经被广泛应用于软件开发、Web开发等领域。PythonGit则是一个基于Python编写的Git客户端库,可以让开发者们更加高效地进行Git操作,提高开发效率。 PythonGit…

Qt Quick系列(2)—核心元素类型(1)

作者:CCAccept 专栏:Qt Quick 文章目录 前言ItemRectangleTextImageMouseArea 总结 前言 Qt Quick的元素分为 1、视觉元素(如Rectangle)具有几何属性 2、非视觉元素(如Timer)提供一般功能,用…

learn C++ NO.5 ——类和对象(3)

日期类的实现 在前面类和对象的学习中,由于知识多比较多和碎,需要一个能够将之前所学知识融会贯通的东西。下面就通过实现日期类来对类和对象已经所学的知识进行巩固。 日期类的基本功能(.h文件) //Date.h//头文件内容 #includ…

makefile 学习(4): makefile基础

0. 官方文档 GNU Make 官方网站: https://www.gnu.org/software/makeGNU Make 官方文档下载地址: https://www.gnu.org/software/make/manual/Makefile Tutorial:https://makefiletutorial.com/ 1.基本要求 1.1 基本格式 targets : prerequisties [tab键] command target : …

一、MongoDB简介

文章目录 一、MongoDB简介1、NoSQL简介2、什么是MongoDB ?3、MongoDB 特点4、安装mongodb5、MongoDB 概念解析5.1 数据库5.2 文档5.3 集合5.4 MongoDB 数据类型 6、适用场景 一、MongoDB简介 1、NoSQL简介 NoSQL(NoSQL Not Only SQL),意即反SQL运动,…

关于在spyder,jupyter notebook下创建虚拟环境(pytorch,tensorflow)均有效

anaconda下载地址 https://www.anaconda.com/download/ 下载完成后打开anaconda目录下的 anaconda prompt 在命令行中输入下面的命令创建一个叫tf2.0的虚拟环境(“tf2.0”是建立的Conda虚拟环境的名字,可以自拟) conda create -n tf2.0 p…

chatgpt赋能Python-pythonfor遍历

Python for 遍历:优雅地遍历数据结构 对于任何编程语言来说,遍历是一项基本操作。而在 Python 中,遍历是一项非常简单和优雅的操作。Python 提供了多种遍历数据结构的方法,包括 for 循环、while 循环、迭代器和生成器等。本文将介…

模板和STL【C++初阶】

目录 一、前言 二、函数模板 三、类模板 四、STL 一、前言 以前我们写swap函数时,对每一种类型的变量都要写一份swap函数,但是他们的格式都是一样的,未免有些麻烦 因此,我们今天学习的模板就可以针对广泛的类型而不是具体的类…

chatgpt赋能Python-pythondir

Python dir命令:探索Python模块的秘密 如果你是一名Python开发者,那么你一定或多或少接触过dir这个命令。但是,你了解dir到底能做什么吗?这篇文章将会介绍dir命令的用途、用法以及一些有趣的技巧。 什么是dir命令 简单来说&…

chatgpt赋能Python-pythonfind

Python文件搜索工具Pythonfind 在开发过程中,文件搜索工具是一个非常重要的工具。在大型项目中,可能需要查找特定类型的文件或者在代码库中查找特定的代码块。 Pythonfind是一个非常强大和灵活的python文件搜索工具,可以帮助我们简化这个过程…

chatgpt赋能Python-pythonforelse

Python For Else 详解:用 Python 的人都应该了解的语法结构 在 Python 中,一个常见的语法结构是 for...else。这种语法结构让循环变得更加直接明了,也让代码更加易读和易懂。 什么是 Python For Else 在 Python 中,for...else …

第13章_约束

第13章_约束 1. 约束(constraint)概述 1.1 为什么需要约束 数据完整性(Data Integrity)是指数据的精确性(Accuracy)和可靠性(Reliability)。它是防止数据库中存在不符合语义规定的数据和防止因错误信息的…

chatgpt赋能Python-pythondataframe转置

Python Dataframe 转置 - 了解 Pandas 中 DataFrame 转置的用法 数据分析是现代业务中的一个关键课题。当您在数据分析中使用 Pandas 时,往往会遇到需要转置 DataFrame 的情况。本文中,我们将介绍如何使用 Python 的 Pandas 库中的 DataFrame 转置来实现…

chatgpt赋能Python-pythondoc

PythonDoc:了解Python的文档工具 什么是PythonDoc? PythonDoc是Python官方文档。它是Python编程语言的权威指南和参考资料,提供丰富而全面的信息,从基础语法到高级主题,都有许多实用和详细的文档说明。 PythonDoc的…

chatgpt赋能Python-pythonddos

PythonDDoS:了解一下这种利用Python语言的攻击方式 PythonDDoS(Python分布式拒绝服务攻击)是一种利用Python语言编写的DDoS攻击技术,它利用了Python的强大处理能力,可以构建高效的攻击工具,让攻击者能够轻…

SpringMVC学习总结(路由映射、参数传递、转发和重定向...)

目录 1. MVC简介 2. SpringMVC简介 3. 路由映射注解 3.1 RequestMapping 3.2 GetMapping与PostMapping 4. 接收前端传递参数 4.1 接收单/多个参数 4.2 接收对象 4.3 接收JSON对象 4.4 后端参数重命名/映射 4.5 设置参数必传/非必传 4.6 获取URL中的参数 4.7 获取文…

学生考勤信息管理系统

系列文章 任务36 学生考勤信息管理系统 文章目录 系列文章一、实践目的与要求1、目的2、要求 二、课题任务三、总体设计1.存储结构及数据类型定义2.程序结构3.所实现的功能函数4、程序流程图 四、小组成员及分工五、 测试操作页面bk.txt信息录入:加入新出勤的信息查…

chatgpt赋能Python-pythonget

PythonGet:一个优秀的Python包管理器 PythonGet是一个优秀的Python包管理器,它可以帮助Python工程师安装、管理和更新Python包。本文将在介绍PythonGet的基本用法的同时,探讨PythonGet在SEO优化中的应用。 PythonGet的简介 PythonGet是Pyt…

不用魔法,快速、手摸手上线Midjourney!【附源码】【示例】

首先来一波感谢: 感谢laf提供赞助,目前可以免费使用Midjourney进行开发和测试。 感谢白夜、米开朗基杨sealos.io的耐心解答,让我对laf有了更多的使用与了解。 什么是laf?来了解下。 文末有【示例】 开始 废话不多说,…