第二章:
一、简答题:
1.什么是前趋图?请画出下列4条语句的前趋图。
前趋图:有向无环图,描述进程之间执行的先后顺序
2.什么是进程?OS中为什么要引入进程?它会产生什么样的影响?
进程是程序的执行过程,是系统进行资源分配和调度的一个独立单位
3.进程最基本的状态有哪些?那些事件可能会引起不同状态间的转换?
就绪、执行、阻塞
处于就绪状态的进程,在调度程序为之分配处理机之后便可执行,相应的便可以从就绪状态转换为执行状态
处于执行状态的进程,如果因分配给其的时间片已完而被剥夺处理机执行程序时,其状态便会由执行状态转换为就绪状态
如果因发生某事件而致使当前进程的执行受阻(例如进程访问某临界资源而该资源又正在被其他进程访问),使之无法继续执行,则该进程将由执行状态变为阻塞
具体如图所示
4.为什么要引入进程的挂起状态?
在许多操作系统中,为了满足系统和用户观察与分析进程的需要,除了就绪、执行和阻塞3种基本的状态外,故而引入挂起
5.叙述组成进程的基本要素?
控制块 程序块 数据块 和堆栈
6.请给出PCB的主要内容。描述当进程状态发生转换(就绪->运行、运行->阻塞)时,OS需要使用/修改PCB的哪些内容?
PCB主要包含 进程标识符,处理机状态,进程调度信息,进程控制信息4个方面的信息
7.试说明引起进程创建的主要事件?
用户登录:在分时系统中,用户在终端键入登录命令后,若登录成功,则系统将会为该用户创建一个进程,并把它插入就绪队列中
作业调度:在多道批处理系统中,当作业调度程序按一定的算法调度到某个(或某些)作业时,便会将其装入内存,为其创建进程,并将其插入就绪队列中
提供服务:当运行中的用户陈鼓型提出某种请求后,系统将专门创建一个进程为其用户提供其所需要的服务,例如,用户进程要求打印文件,系统将为其创建一个打印进程,这样,不仅可使打印进程与该用户进程并发执行,还便于计算出完成打印任务所需花费的时间
应用请求:只针对“应用请求”该事件,则需要用户自己创建新进程,以使新进程以同创建进程并发执行的方式完成特定任务。例如:用户需要不断的地先从键盘终端读入数据,在对读入的数据进行相应的处理,最后将处理结果以表格的形式显示在屏幕上。该用户进程为使这几个操作能并发执行以加速完成任务,可以分别建立键盘输入进程、数据处理进程以及表格输出进程
8.在创建一个进程时,OS需要完成的主要工作是什么?
申请空白PCB
为新进程分配其运行所需的资源,包含各种物理和逻辑资源
初始化PCB
如果进程就绪队列能够接纳新进程,就将新进程插入就绪队列
9.试说明引起进程终止的主要事件?
正常结束:任务已经完成,准备推出运行
异常结束:进程在运行时,发生了某种异常事件,使程序无法正常运行
外界干预:进程应外界的请求而终止运行
10.在终止一个进程时,OS要完成的主要工作是什么?
当系统中发生要求终止进程的相关事件后,OS会调用进程终止原语,并且根据如下步骤进行操作:1.根据进程的标识符,从PCB集合中检索出该进程的PCB,并从该进程的PCB读出该进程的状态 2.若被终止进程正在处于执行状态,则立即终止该进程的执行,并置调度标志为真,以指示该进程被终止后应重新进行调度 3.若该进程还有子孙进程,则还应该终止其子孙继承,以防止其成为不可控的进程 4.将被终止的进程所拥有的全部资源,或归还给其父进程,或归还给系统 5.将被终止进程的PCB从所在队列(或链表)中移出,等待其他程序来搜索信息
11.试说明引起进程阻塞或被唤醒的主要事件
向系统请求共享资源失败 等待某种操作的完成 新数据尚未到达 等待新任务的到达
12.试比较进程间的低级与高级通信工具
低级进程通信:1.效率低,生产者每次只能向缓冲区投放一个产品,消费者每次只能从缓冲区中取得一个消息 2.通信对用户不透明,对用户的使用不方便,OS只为进程之间的通信提供了共享存储器,关于进程之间通信所需要的共享数据结构的设置,数据的传送,进程的互斥与同步等都必须由程序员去实现
高级进程通信:使用方便,OS隐藏了实现进程通信的具体细节,向用户提供了一组高级通信指令(原语),用户可以方便地直接利用其来实现进程之间的通信,或者说进程通信对用户是透明的,这样就大大减少了通信程序编制上的复杂性 ; 高效地传送大量数据,用户可以直接利用高级通信命令(原语)来高效地传送大量数据
13.当前有哪几种高级通信机制?
共享存储器系统 管道通信提供 消息传递系统 客户机—服务器系统和
14.试说明使用管道文件(pipe文件)进行通信的优缺点
优点:管道是指用于连接一个读进程和一个写进程以实现它们之间的一个共享文件,向管道(即共享文件)提供输入的发送进程(即写进程),则会从管道中接收(读)数据, 由于这种的方式发送能够有效地传送大量数据,因而又被应用于许多其他OS中
缺点: 管道机制必须提供互斥 同步 即确定对方的存在 3方面的协调能力
15.试比较直接通信和间接通信方式
直接消息传递系统采用直接通信方式,即发送进程利用OS提供的发送命令(原语),直接发消息发送给目标进程。
信箱通信采用间接通信方式,即进程之间的通信需要通过某种中间实体(如共享数据结构等)实现。该实体建立在随机存储器的共享缓冲区上,用来暂存发送进程发送给目标进程的消息;接收进程可以从该实体中去除发进程发送给自己的消息,通常把这种中间实体称为信箱,每个信箱都有一个唯一的标识符。消息在邮箱中可以被安全保存,只允许核准的目标和用户对其进行随时读取,因此利用信箱通信方式既可实现实时通信,又可实现非实时通信。
16.为什么要在OS中引入线程?
由于引入进程的目的是使多个程序能够并发执行,以提高资源的利用率和系统吞吐量,因此需要引入线程来减少程序在并发执行时所付出的时空开销,以使OS具有更好的并发性。
17.试说明线程的属性
轻型实体 独立调度和分派的基本单位 可并发执行 共享进程资源
18.何谓用户级线程和内核支持线程、
用户级线程 :
在用户空间中实现的,对线程的创建撤销同步与通信等功能都无须内核支持,与内核无关。且内核不知道用户级线程的存在。
内核支持线程:
在内核的支持下运行,相关的创建、阻塞、撤销和切换都是在内核控件实现。并且内核空间会为每个内核支持线程设置一个TCB,内核根据TCB感知线程的存在并加以控制。
19.用户级线程和内核支持线程有何区别?
用户级进程:与内核无关,且内核不知道其的存在
内核支持线程:与内核相关,且根据内核空间的TCB感知线程并且控制
20.试说明用户线程和内核支持线程的实现方法
KST的实现:在仅设置KST的OS中,系统在创建一个新进程时,便为其分配一个任务数据区,其中包括若干个TCB空间,在每个TCB中的信息相同,但是都被保存在了内核空间中。每当需要创建一个进程时,便会为新线程分配一个TCB,同时将有关信息填入该TCB中,并为之分配必要的资源,如为线程分配数百至数千字节的栈空间和局部存储区,于是新创建的线程便有条件立即执行。当PTDA中的所有TCB空间已用完而进程又要创建新的线程时,只要其所创建的线程数目未超过系统的允许值(通常数十至数百个),系统即可再为之分配新的TCB空间;再撤销一个线程时,也应回收线程的所有资源和TCB。
ULT的实现:有两种方式实现的中间系统
运行时系统,ULT由运行时系统中的线程切换过程来执行切换任务,该过程将线程的CPU状态保存在该线程的堆栈中,然后按照一定的算法选择一个处于就绪状态的新线程运行,并将新线程堆栈中的CPU状态装入CPU相应的寄存器中,一旦将指针和程序计数器切换后,便开始了新的运行,且由于ULT的切换无须进入内核,且操作简单,切换速度因此非常快。
核心线程:每一个进程都可拥有多个LWP,同YULT一样,每个LWP都有自己的数据结构(如TCB),其中包括吸纳成标识符,优先级,CPU状态等信息,另外还有栈和局部存储区等等。LWP也可以共享进程所拥有的资源,LWP可以通过系统调用来获得内核提供的服务,当一个ULT运行,只须连接到一个LWP上,便能具有KST的属性
二、
1.试从调度、并发、拥有资源和系统开销这4个方面对传统进程和线进程进行比较。
传统进程 |
线程 |
|
调度性 |
拥有资源的基本单位和和独立调度,分派的基本单位都是进程 |
把线程作为调度和分派的基本单位,把进程作为资源拥有的基本单位 |
并发性 |
进程间可以并发执行 |
不仅进程间可以并发执行,而且一个进程中的多个线程之间也可以并发执行 |
拥有资源 |
进程始终是拥有资源的基本单位 |
除了拥有一点运行时必不可少的资源外,本身不具备系统资源,但可以访问隶属进程的资源 |
系统开销 |
创建或撤销时,系统要为之分配和回收资源,进程切换时所需要保存和设置的现场信息明显多于线程 ,操作系统在创建撤销和切换进程时所付出的开销将显著地大于线程 |
创建或撤销时,系统 要为之分配和回收资源, |
2.现代OS一般都提供多进程(或称多任务)运行环境,回答下列问题。
(1)为支持多进程的并发执行,系统必须建立哪些关于进程的数据结构?
系统必须建立进程控制块(PCB),进程队列,进程调度表,内存管理表,文件描述符表
(2)为支持多进程状态的变迁,系统至少应提供那些进程控制原语?
创建进程, 终止进程, 挂起进程, 恢复进程, 阻塞进程, 唤醒进程, 进程同步, 进程间通信
(3)在执行每一个进程控制原语时,进程状态会发生什么变化?相应的数据结构会发生什么变化?
进程状态变化:进程的状态可能会从运行态切换到阻塞态或者就绪态,或者从阻塞态或就绪态切换到运行态,取决于原语的操作
数据结构变化:进程控制原语可能会更改相关的数据结构,以反映进程的状态变化,例如:可能会更新进程控制块PCB,就绪队列,阻塞队列等
文章浏览阅读3.8k次。1、将下载好的萤石js插件,添加到SoringBoot项目中。位置可参考下图所示。(容易出错的地方,在将js插件在html页面引入时,发生路径错误的问题)所以如果对页面中引入js的路径不清楚,可参考下图所示存放路径。2、将ezuikit.js引入到demo-live.html中。(可直接将如下代码复制到你创建的html页面中)<!DOCTYPE html><html lan..._ezuikit 测试的url
文章浏览阅读322次。第二步,在弹出的对话框选择,设备驱动—>PLC—>莫迪康—>ModbusRTU—>COM,根据配置软件选择的协议选期期,这里以此为例,然后点击“下一步”。第四步,把使用虚拟串口打勾(GPRS设备),根据需要选择要生成虚拟口,这里以选择KVCOM1为例,然后点击“下一步”设备ID即Modbus地址(1-255) 使用DTU时,为下485接口上的设备地址。第六步,Modbus的从机地址,与配置软件相同,这里以1为例,点击“下一步“第五步,Modbus的从机地址,与配置软件相同,这里以1为例,点击“下一步“_组态王ua
文章浏览阅读9.4k次,点赞22次,收藏19次。安装npm相当于安装node.js,Node.js已自带npm,安装Node.js时会一起安装,npm的作用就是对Node.js依赖的包进行管理,也可以理解为用来安装/卸载Node.js需要装的东西_npm安装配置
文章浏览阅读748次,点赞21次,收藏26次。大家好,小编来为大家解答以下问题,python基础训练100题,python入门100例题,现在让我们一起来看看吧!宝子们还在新手村练级的时候,不单要吸入基础知识,夯实自己的理论基础,还要去实际操作练练手啊!由于文章篇幅限制,不可能将100道题全部呈现在此除了这些,下面还有我整理好的基础入门学习资料,视频和讲解文案都很齐全,用来入门绝对靠谱,需要的自提。保证100%免费这不,贴心的我爆肝给大家整理了这份今天给大家分享100道Python练习题。大家一定要给我三连啊~
文章浏览阅读1k次。 为了在 Linux ( Ubuntu) 上安装sublime,一般大家都会选择常见的教程或是 sublime 官网教程,然而在国内这种方法可能失效。为此,需要用安装包安装。以下就是使用官网安装包安装的教程。打开 sublime 官网后,点击右上角 download, 或是直接访问点击打开链接,即可看到各个平台上的安装包。选择 Linux 64 位版并下载。下载后,打开终端,进入安装..._ubuntu 安装sumlime text打不开
文章浏览阅读563次,点赞13次,收藏6次。CrossOver24是一款类虚拟机软件,专为macOS和Linux用户设计。它的核心技术是Wine,这是一种在Linux和macOS等非Windows操作系统上运行Windows应用程序的开源软件。通过CrossOver24,用户可以在不购买Windows授权或使用传统虚拟机的情况下,直接在Mac或Linux系统上运行Windows软件和游戏。该软件还提供了丰富的功能,如自动配置、无缝集成和实时传输等,以实现高效的跨平台操作体验。
文章浏览阅读1.7k次。一个用聊天的方式让ChatGPT帮我写的线程安全的环形List_为什么gpt一写list就卡
文章浏览阅读336次。我们在前面的文章里曾写过Web应用中乱码产生的原因和处理方式,旧文回顾:深度揭秘乱码问题背后的原因及解决方式其中我们提到可以通过Filter的方式来设置请求和响应的encoding,来解..._filterconfig selectencoding
文章浏览阅读651次。转自:http://www.jb51.net/article/36480.htmencodeURI和decodeURI是成对来使用的,因为浏览器的地址栏有中文字符的话,可以会出现不可预期的错误,所以可以encodeURI把非英文字符转化为英文编码,decodeURI可以用来把字符还原回来_js encodeur decodeurl
文章浏览阅读1.9w次,点赞6次,收藏3次。前言在日常的Android开发当中,我们肯定要打包apk。但是今天我打包的时候遇到一个很奇怪的问题Android The destination folder does not exist or is not writeable,大意是目标文件夹不存在或不可写。出现问题的原因以及解决办法上面有说报错的中文大意是:目标文件夹不存在或不可写。其实问题就在我们的打包界面当中图中标红的Desti..._the destination folder does not exist or is not writeable
文章浏览阅读94次。一、配置代码编辑区的样式 <1>打开Eclipse,Help —> Install NewSoftware,界面如下: <2>点击add...,按下图所示操作: name:随意填写,Location:http://eclipse-color-th..._ecplise高大上设置
文章浏览阅读2.8k次。一,下载mysql:http://dev.mysql.com/downloads/mysql/; 打开页面之后,在Select Platform:下选择linux Generic,如果没有出现Linux的选项,请换一个浏览器试试。我用的谷歌版本不可以,换一个别的浏览器就行了,如果还是不行,需要换一个翻墙的浏览器。 二,下载完后解压缩并放到安装文件夹下: 1、MySQL-client-5.6.2_linux mysql 安装 mysql-5.6.24-1.linux_glibc2.5.x86_64.rpm-bundle