操作系统进程管理(2)
计算机专业基础综合操作系统(进程管理)历年真题试卷汇编2
![计算机专业基础综合操作系统(进程管理)历年真题试卷汇编2](https://img.taocdn.com/s3/m/89ffcb12fe4733687f21aa38.png)
计算机专业基础综合操作系统(进程管理)历年真题试卷汇编2(总分:96.00,做题时间:90分钟)一、单项选择题(总题数:28,分数:56.00)1.单项选择题下列各题的备选答案中,只有一个是符合题意的。
__________________________________________________________________________________________2.下列几种关于进程的叙述,____最不符合操作系统对进程的理解。
【浙江大学2003年】A.进程是在多程序并行环境中的完整的程序√B.进程可以由程序、数据和进程控制块描述C.线程是一种特殊的进程D.进程是程序在一个数据集合上运行的过程,是系统进行资源分配和调度的一个独立单位综合考查进程的相关概念。
进程是程序在一个数据集合上运行的过程,是系统进行资源分配和调度的一个独立单位,不是完整程序,程序是在时间上按严格次序前后相继的操作序列,是一个静态的概念。
3.下面关于并发性的论述中,正确的是____。
【太原科技大学2006年】A.并发性是指若干个事件在同一时刻发生B.并发性是指若干个事件在不同时刻发生C.并发性是指若干个事件在同一时间间隔内发生√D.并发性是指若干个事件在不同时间间隔内发生考查并发性的定义,注意与并行性相区分。
并发性是指两个或多个事件在同一时间间隔内发生;并行性是指两个或多个事件在同一时刻发生。
4.并发进程指____。
【北京理工大学2002年】A.可平行执行的进程√B.可先后执行的进程C.可同时执行的进程D.不可中断的进程考查并发进程的定义。
并发进程是在同一时间段内运行。
从宏观上看,进程之间不是先后执行,而是平行执行;从微观上看,进程之间不是同时执行,而是按时间片轮转交替执行。
5.下面对进程的描述中,错误的是____。
A.进程是动态的集合B.进程有生命期C.进程是指令的集合√D.进程可以并发执行考查进程的概念。
6.一个进程释放了一台打印机后,有可能改变____的状态。
操作系统课件 第2章 进程
![操作系统课件 第2章 进程](https://img.taocdn.com/s3/m/38760abafd0a79563c1e72b2.png)
第二章 进 程 管 理
对于具有下述四条语句的程序段: S1: a∶=x+2 S2: b∶=y+4 S3: c∶=a+b S4: d∶=c+b 请画出前趋关系图。
S1 S3 S2 S4
第二章 进 程 管 理
2.2 程序并发执行时的特征
1) 间断性 相互制约性)-后面的模块等待前面的模块 间断性(相互制约性 - 相互制约性 传来的结果,然后才执行(如打印模块等待 计算模块完成)。走走停停。 2) 失去封闭性 :多个程序共享系统中的各种资源, 因而这些资源的状态将由多个程序来改变, 致使程序的运行已失去了封闭性。 结果是一个程序运行时会受到另一个程序的 结果是 影响。 3) 不可再现性 :程序在并发执行时,由于失去了封 闭性,也将导致失去其可再现性
第二பைடு நூலகம் 进 程 管 理
新进程
接纳
就绪 时间片完 I/O完成 进程调度
阻塞 I/O请求
执行
完成
结束
图 2-5 进程的三种基本状态及其转换
(教材讲5种)
第二章 进 程 管 理
作业调度
作业后备队列
阻塞队列
外存
进程就绪队列
一些 阻塞队列
内存
处理器 (CPU)
第二章 进 程 管 理
3.7五状态 五状态进程模型 五状态
第二章 进 程 管 理
3.4进程与程序的区别 进程与程序的区别
程序是静态的, 1)程序是静态的 进程是动态的; 是根本区别) 1)程序是静态的,进程是动态的;(是根本区别) 程序是有序代码的集合;进程是程序的执行。 程序是有序代码的集合;进程是程序的执行。 2)进程和程序不是一一对应的 2)进程和程序不是一一对应的 ; • 一个程序可对应多个进程 即多个进程可执行同一程序 ; 一个程序可对应多个进程,即多个进程可执行同一程序 • 一个进程可以执行一个或几个程序 3)进程是暂时的 程序的永久的:进程是一个状态变化的过程, 进程是暂时的, 3)进程是暂时的,程序的永久的:进程是一个状态变化的过程, 程序可长久保存。 程序可长久保存。 4)进程与程序的组成不同 进程的组成包括程序、 进程与程序的组成不同: 4)进程与程序的组成不同:进程的组成包括程序、数据和进程 控制块(即进程状态信息)。 控制块(即进程状态信息)。 5)进程具有创建其他进程的功能 而程序没有。 进程具有创建其他进程的功能, 5)进程具有创建其他进程的功能,而程序没有。
计算机操作系统 第二章 进程管理(2)
![计算机操作系统 第二章 进程管理(2)](https://img.taocdn.com/s3/m/ccceb74f69eae009581becce.png)
缺点:
(1)进程在等待进入临界区时也要耗费处理器时间, 不能实现“让权等待” (2)可能出现进程“饥饿”
2.3.2 信号量机制
新的同步工具——信号量和P、V操作。
信号量:是一种数据结构,代表可用资源实 体的数目。
信号量只能通过初始化和两个标准的原语: P(wait(S))、V((signal(S))来访问。 P原语相当于进入区操作,V原语相当于退 出区操作。
AND同步机制
AND同步机制的基本思想是:进程运行时所 需要的所有资源,要么全部分配给它,使用完 毕后一起释放;要么一个都不分配给它。实现 时,采用原子操作:要么全部分配到所有资源, 要么一个也不分配到。 称AND型信号量P原语为:
Swait(Simultaneous wait)
V原语为Ssignal(Simultaneous signal)。
SP原语描述
Swait(S1,S2,„,Sn) /* SP原语描述 */ {while(1) {if(S1>=1&&S2>=1&&„&&Sn>=1) {for(i=1;i<=n;i++) Si--; /* 先确信可满足所有资源要求再减1操作 */ berak; } else /* 资源不够时 */ {将进程放入第一个信号量小于1的阻塞队列Si.sqeue; 将PC中的地址回退到SP开始处; 阻塞进程; } } }
第二章 进程管理(2)
2.3 进程同步
多进程并发执行时,由于资源共享或进程合 作,使进程间形成间接相互制约和直接相互制 约关系,这需要用进程互斥与同步机制来协调 两种制约关系。 进程同步的主要任务:协调进程执行次序, 使并发执行的诸进程间能有效地共享资源和相 互合作,使程序的执行具有可再现性。
操作系统进程管理
![操作系统进程管理](https://img.taocdn.com/s3/m/e700cc88a98271fe910ef9ee.png)
Process Management
处理机管理是操作系统的基本管理功能之一,它所关心的是处理机的 分配问题。也就是说把CPU(中央处理机)的使用权分给某个程序。
通常把正准备进入内存的程序称为作业,当这个作业进入内 存后我们把它称为进程。处理机管理分为作业管理和进程管 理两个阶段去实现处理机的分配,常常又把直接实行处理机 时间分配的进程调度工作作为处理机管理的主要内容。
3、系统进程在管态下活动,而用户进程则在用户态 (目态)下活动。
另一种分类:计算进程,I/O进程等 注意:在UNIX系统中没有这样对进程进行分类。
动。 (4)在进程调度中,系统进程的优先级高于用
户进程。
2.5 进程的类型与区别
系统进程与用户进程的区别:
1、系统进程被分配一个初始的资源集合,这些资源 可以为它独占,也能以最高优先权的资格使用。用 户进程通过系统服务请求的手段竞争使用系统资源;
2、用户进程不能直接做I/O操作,而系统进程可以 做显示的、直接的I/O操作。
2.3进程的特征
5)结构特征:为能正确的执行并发,为每一个进程配置
了一个数据结构,称为进程控制块(PCB)。则一个进 程实体就由数据段、程序段、PCB三部分构成。
• 进程实体 = 数据段+程序段+PCB
PCB
私有 数据块
程 序 段
进程的结构
• 程序和进程不一定具有一一对应的关系。
2.4 与程序的区别
2、进程是一个独立的运行单位,能与其它进程并行(并 发)活动。而程序则不是。
3、进程是竞争计算机系统有限资源的基本单位,也是进 行处理机调度的基本单位。
4、一个程序可以作为多个进程的运行程序,一个进程也 可以运行多个程序。
操作系统实验二(进程管理)
![操作系统实验二(进程管理)](https://img.taocdn.com/s3/m/18e38266fc4ffe473268ab04.png)
操作系统进程管理实验实验题目:(1)进程的创建编写一段程序,使用系统调用fork( )创建两个子进程。
当此程序运行时,在系统中有一个父进程和两个子进程活动。
让每一个进程在屏幕上显示一个字符:父进程显示字符“a”;子进程分别显示字符“b”和字符“c”。
试观察记录屏幕上的显示结果,并分析原因。
(2)进程的控制修改已编写的程序,将每个进程输出一个字符改为每个进程输出一句话,在观察程序执行时屏幕上出现的现象,并分析原因。
(3)编制一段程序,使其实现进程的软中断通信。
要求:使用系统调用fork( )创建两个子进程,再用系统调用signal( )让父进程捕捉键盘上来的中断信号(即按Del键);当捕捉到中断信号后,父进程调用系统调用kill( )向两个子进程发出信号,子进程捕捉到信号后分别输出下列信息后终止: Child process 1 is killed by parent! Child process 2 is killed by parent! 父进程等待两个子进程终止后,输出如下的信息后终止: Parent process is killed! 在上面的程序中增加语句signal(SIGINT, SIG_IGN)和signal(SIGQUIT, SIG_IGN),观察执行结果,并分析原因。
(4)进程的管道通信编制一段程序,实现进程的管道通信。
使用系统调用pipe( )建立一条管道线;两个进程P1和P2分别向管道各写一句话: Child 1 is sending a message! Child 2 is sending a message! 而父进程则从管道中读出来自于两个子进程的信息,显示在屏幕上。
要求父进程先接收子进程P1发来的消息,然后再接收子进程P2发来的消息。
实验源程序及报告:(1)、进程的创建#include <stdio.h>int main(int argc, char *argv[]){int pid1,pid2; /*fork first child process*/if ( ( pid1=fork() ) < 0 ){printf( "ProcessCreate Failed!");exit(-1);}if ( ( pid1=fork() ) == 0 ){printf( "b\n" );}/*fork second child process*/if ( ( pid2=fork() ) < 0 ){printf( "ProcessCreate Failed!"); exit(-1);}if ( ( pid2=fork() ) == 0 ){printf( "c\n" );}/*parent process*/else{wait(NULL);printf( "a\n" );exit(0);}return 0;}(2)、进程的控制#include <stdio.h>int main(int argc, char *argv[]){ int pid1,pid2;/*fork first child process*/if ( ( pid1=fork() ) < 0 ){printf( "ProcessCreate Failed!");exit(-1);}if ( ( pid1=fork() ) == 0 ){printf( "This is my Unix OS program!\n" ); }/*fork second child process*/if ( ( pid2=fork() ) < 0 ){printf( "ProcessCreate Failed!");exit(-1);}if ( ( pid2=fork() ) == 0 ){printf( "This is the second Child process!\n" ); }/*parent process*/else{wait(NULL);printf( "This is the Parent process\n" );exit(0);}return 0;}(3)编制一段程序,使其实现进程的软中断通信。
操作系统第2章练习题1(进程管理)
![操作系统第2章练习题1(进程管理)](https://img.taocdn.com/s3/m/7be17edd3186bceb19e8bb35.png)
一、选择题1、从静态的角度看,进程是由(5)、(6)、(2)三部分组成的,其中(2)是进程存在的惟一标志。
当几个进程共享(5)时,(5)应当是可重入代码。
A,B,C:(1)JCB (2)PCB (3)DCB (4)FCB (5)程序段(6)数据段2、进程的三个基本状态是(3)、(4)、(2)。
由(3)到(4)是由进程调度所引起的;由(4)到(2)是正在执行的进程发生了某事件,使之无法继续执行而引起的。
A,B,C:(1)挂起(2)阻塞(3)就绪(4)执行(5)完成3、下列进程状态转换中,绝对不可能发生的状态转换是(5);一般不会发生的状态转换是(3)。
A,B:(1)就绪→执行(2)执行→就绪(3)就绪→阻塞(4)阻塞→就绪(5)阻塞→执行(6)执行→阻塞4、在一个单处理机系统中,存在5个进程,则最多有1个进程入于就绪队列,4个进程处于阻塞队列。
A,B:(1)5 (2)4 (3)3 (4)2 (5)1 (6)05、正在执行的进程由于其时间片用完被暂停执行,此时进程应从执行状态变为活动就绪状态;处于静止阻塞状态的进程,在进程等待的事件出现后,应变为静止就绪状态;若进程正处于执行状态时,因终端的请求而暂停下来以便研究其运行情况,这时进程应转变为静止就绪状态;若进程已处于阻塞状态,则此时应转变为静止阻塞状态。
A,B,C,D:(1)静止阻塞(2)活动阻塞(3)静止就绪(4)活动就绪(5)执行6、从下面对临界区的论述中,选出两条正确的论述。
(1)临界区是指进程中用于实现进程互斥的那段代码(2)临界区是指进程中用于实现进程同步的那段代码(3)临界区是指进程中用于实现进程通信的那段代码(4)临界区是指进程中用于访问共享资源的那段代码(5)临界区是指进程中访问临界资源的那段代码(6)若进程A与进程B必须互斥地进入自己的临界区,则进程A处于对应的临界区内时,仍有可能被进程B中断。
(7)若进程A与进程B必须互斥地进入自己的临界区,则进程A处于对应的临界区内时,便不能被进程B中断。
操作系统原理第二章进程管理
![操作系统原理第二章进程管理](https://img.taocdn.com/s3/m/7039d44c856a561252d36fc6.png)
2.1 前趋图和程序执行
例:有7个结点的前趋图。
P = { P1,P2,P3,P4,P5,P6,P7 } → = {(P1,P2),(P1,P3),(P1,P4), (P2,P5),
(P3,P5),(P4,P6),(P5,P7),(P6,P7)}
2
1 3
4
5
7 6
2.1 前趋图和程序执行
➢ 程序的顺序执行
打印三项操作。其程序段并发执行的前趋图:
I1 → I2 → I3 → I4 →
↘↘↘↘
C1 → C2 → C3 → C4 →
↘↘↘↘
P1 → P2 → P3 → P4 →
2.1 前趋图和程序执行
例2.Begin integer N:=0;
Cobegin
Program A : begin
Program B : begin
void popaddr (top) { top --; r=*top; return (r) }
void pushaddr(blk) { *top = blk; top++;
}
先执行 popaddr 的top--,接着执行pushaddr的*top=blk
2.1 前趋图和程序执行
➢ 程序并发执行过程及条件 (Bernstein条件)
果必相同。
2.1 前趋图和程序执行
➢ 程序的并发执行
➢ 程序执行环境
➢ 独立性,逻辑上是独立的。 ➢ 随机性:输入和执行开始时间都是随机的。 ➢ 资源共享:资源共享导致对进程执行速度
的制约。
2.1 前趋图和程序执行
➢ 程序的并发执行
并发执行是指两个程序执行时间上是重叠 的。凡是能由一组并发程序完成的任务,都 能由相应的单个程序完成。 例1:有一批程序,而每个程序需输入,计算,
《计算机操作系统》第2章 进程管理
![《计算机操作系统》第2章 进程管理](https://img.taocdn.com/s3/m/d481e2bf0740be1e640e9a3b.png)
2.1.3 进程的状态模型
新建
准许
准许
挂起
静止就绪
事件 发生
静止阻塞
激活 挂起
激活 挂起
活动就绪
事件 发生 活动 阻塞
分派 超时
运行
等待 事件
释放
退出
பைடு நூலகம்
图2-8 有挂起态的七状态模型
在新的状态模型中,比较重要的新转换如下: ►(1)活动阻塞→静止阻塞:当内存紧张而系统中又没有就绪进程时,一个阻塞
态进程就会被挂起。
分派
进入
非运行
运行
退出
暂停 图2-3 两状态模型
2.1.3 进程的状态模型
2. 三状态模型
三状态模型中进程的三种基本状态如下:
►(1)就绪状态(Ready)。一个进程获得了除处理机之外所需的一切资源,一 旦得到处理机即可运行。在系统中,将处于就绪状态的多个进程的PCB组织成一 个队列,或按照某种规则排在不同的队列中,这些队列称为就绪队列。
2.1.3 进程的状态模型
3. 五状态模型
新建态
进入就 绪队列
运行态
被调 度 时间片
用完
就绪态
事件
发生
退出态 等待事件 阻塞态
图2-6 五状态模型图
►为便于进程管理,有必要增加一种有用的状态,我们称为新建态,对应于刚刚创建 的进程,操作系统还没有把它加入到就绪队列中,通常是进程控制块已经创建但还 没有加载到内存中的新进程。
►同样,进程从系统中退出时,也增加一种有用的状态,进程被终止直到释放PCB所 处的状态,我们称为退出态。
2.1.3 进程的状态模型
五状态模型中的状态转换:
►(1)空→新建:创建一个程序的新进程。
电大操作系统实验2:进程管理实验
![电大操作系统实验2:进程管理实验](https://img.taocdn.com/s3/m/106f5dc1760bf78a6529647d27284b73f24236d4.png)
电大操作系统实验2:进程管理实验
实验目的:
1.加深对进程概念的理解,特别是进程的动态性和并发性。
2.了解进程的创建和终止。
3.学会查看进程的状态信息。
4.学会使用进程管理命令。
实验要求:
1.理解有关进程的概念,能够使用ps命令列出系统中进
程的有关信息并进行分析。
2.理解进程的创建和族系关系。
3.能够使用&,jobs,bg,at等命令控制进程的运行。
实验内容:
1.使用ps命令查看系统中运行进程的信息。
实验环境:
实验步骤和结果:
1.输入ps命令,可以报告系统当前的进程状态。
2.输入ps-e命令,可以显示系统中运行的所有进程,包括系统进程和用户进程。
3.输入ps-f命令,可以得到进程的详细信息。
进程控制:
1.后台进程
1) $grep "注册用户名" /etc/passwd。
/tmp/abc &
2.作业控制
1) 进程休眠60秒Sleep 60 &
2) 进程休眠30秒Sleep 30 &
3) 查看进程状态Jobs
4) 将睡眠30秒的sleep命令放在前台执行fg%2
3.发送中断信号
1) 后台运行sleep命令$sleep 120 &
2) 查看sleep进程的状态$ps-p pid
3) 终止sleep命令$kill -9 pid。
(完整版)操作系统第二章课后答案
![(完整版)操作系统第二章课后答案](https://img.taocdn.com/s3/m/47884d7bb8f67c1cfad6b8f2.png)
第二章进程管理2. 试画出下面4条语句的前趋图:S2: b:=z+1;S3: c:=a-b;S4: w:=c+1;3.程序在并发执行时,由于它们共享系统资源,以及为完成同一项任务而相互合作,致使在这些并发执行的进程之间,形成了相互制约的关系,从而也就使得进程在执行期间出现间断性。
4. 程序并发执行时为什么会失去封闭性和可再现性?因为程序并发执行时,是多个程序共享系统中的各种资源,因而这些资源的状态是由多个程序来改变,致使程序的运行失去了封闭性。
而程序一旦失去了封闭性也会导致其再失去可再现性。
5. 在操作系统中为什么要引入进程概念?它会产生什么样的影响?为了使程序在多道程序环境下能并发执行,并能对并发执行的程序加以控制和描述,从而在操作系统中引入了进程概念。
影响: 使程序的并发执行得以实行。
6. 试从动态性,并发性和独立性上比较进程和程序?a. 动态性是进程最基本的特性,可表现为由创建而产生,由调度而执行,因得不到资源而暂停执行,以及由撤销而消亡,因而进程由一定的生命期;而程序只是一组有序指令的集合,是静态实体。
b. 并发性是进程的重要特征,同时也是OS的重要特征。
引入进程的目的正是为了使其程序能和其它建立了进程的程序并发执行,而程序本身是不能并发执行的。
c. 独立性是指进程实体是一个能独立运行的基本单位,同时也是系统中独立获得资源和独立调度的基本单位。
而对于未建立任何进程的程序,都不能作为一个独立的单位来运行。
7. 试说明PCB的作用?为什么说PCB是进程存在的唯一标志?a. PCB是进程实体的一部分,是操作系统中最重要的记录型数据结构。
PCB中记录了操作系统所需的用于描述进程情况及控制进程运行所需的全部信息。
因而它的作用是使一个在多道程序环境下不能独立运行的程序(含数据),成为一个能独立运行的基本单位,一个能和其它进程并发执行的进程。
b. 在进程的整个生命周期中,系统总是通过其PCB对进程进行控制,系统是根据进程的PCB而不是任何别的什么而感知到该进程的存在的,所以说,PCB是进程存在的唯一标志。
操作系统教程Linux实例分析孟庆昌第2章进程管理讲课教案
![操作系统教程Linux实例分析孟庆昌第2章进程管理讲课教案](https://img.taocdn.com/s3/m/d7e22952f08583d049649b6648d7c1c709a10b48.png)
第2章 进程管 理
2. Thread结构
每个线程有一个Thread结构, 用于保存与线程有
关的信息, 主要由以下几个基本部分组成:
(1) 一个惟一的线程标识符。
2
描述处理器状态的一组状态寄存器的内容,
用于调度。
3
每个Thread结构有两个堆栈指针: 一个指向
核心堆栈, 一个指向用户堆栈。
4
一个私有存储区, 存放现场保护信息及其他
第2章 进程管 理
(5) 通信信息。 它反映该进程与哪些进程有什么样 的通信关系, 如等待哪个进程的信号等。
(6) 现场保护区。 当对应进程由于某个原因放弃使 用CPU时, 需要把它的一部分与运行环境有关的信息保 存起来, 以便在重新获得CPU后能恢复正常运行。
第2章 进程管 理
(7) 资源需求、 分配和控制方面的信息。 如进程 所需要或占有的I/O设备、 磁盘空间、 数据区等。
第2章 进程管 理
图2-5 进程状态及其变化
第2章 进程管 理
在很多操作系统中, 又添加了两种基本状态: 创 建 态和终止态。 创建态是指新进程正被创建时的状态,当 创建工作完成后它就进入到就绪态。 终止态是指进 程 正常或非正常终止时所处的状态, 它的必然结局是 从 系统中消失。 上述五种进程状态及其变迁情况如图 2-6 所示。
第2章 进程管 理
图2-8 PCB构成
第2章 进程管 理
1
进程名。 它是惟一标志对应进程的一个标志
符或数字。
(2) 特征信息。 它包括是系统进程还是用户进程, 进程映像是否常驻内存等。
(3) 进程状态信息。 它表明该进程的执行状态, 是运行态、 就绪态还是阻塞态。
(4) 调度优先权。 这表示进程获取CPU的优先级别。
21central_操作系统 第三章进程管理(死锁问题2)
![21central_操作系统 第三章进程管理(死锁问题2)](https://img.taocdn.com/s3/m/04f2ce2cd4d8d15abf234e99.png)
进
程 管
银行家算法
理
银行家算法是最有代表性的避免死锁算 法,是Dijkstra提出的银行家算法。这是 由于该算法能用于银行系统现金贷款的 发放而得名。为实现银行家算法,系统 中必须设置若干数据结构。
3
进
程 一、银行家算法中的数据结构
管 理
1 可利用资源向量Available
是一个含有m个元素,其中的每一个元素代
13
进
程 封锁进程:是指某个进程由于请求了超过了系 管 统中现有的未分配资源数目的资源,而被系统 理 封锁的进程。
非封锁进程:即没有被系统封锁的进程资源分 配图的化简方法:假设某个RAG中存在一个进 程Pi,此刻Pi是非封锁进程,那么可以进行如 下化简:当Pi有请求边时,首先将其请求边变 成分配边(即满足Pi的资源请求),而一旦Pi的所 有资源请求都得到满足,Pi就能在有限的时间 内运行结束,并释放其所占用的全部资源,此 时Pi只有分配边,删去这些分配边(实际上相 当于消去了Pi的所有请求边和分配边),使Pi 成为孤立结点。(反复进行)
7
要记住的一些变量的名称
1 Available(可利用资源向量) 某类可利用的资源数目,其初值是系统中所配置的该类全部可用 资源数目。 2 Max最大需求矩阵
某个进程对某类资源的最大需求数 3 Allocation分配矩阵 某类资源当前分配给某进程的资源数。
4 Need需求矩阵 某个进程还需要的各类资源数。
进
程
安全状态的例子
管
理 例:假定系统有三个进程P1、P2、P3,共有12台磁带机。 进程P1总共要求10台磁带机,P2和P3分别要求4台和九 台。设在T0时刻,进程P1、P2和P3已经获得5台、2台和
操作系统 实验2进程控制管理 实验报告
![操作系统 实验2进程控制管理 实验报告](https://img.taocdn.com/s3/m/a8cd895b3b3567ec102d8a8b.png)
{
while((p2=fork( ))= = -1); /*创建子进程p2*/
if(p2= =0)
for(i=0;i<10;i++)
printf("son %d\n",i);
else
for(i=0;i<10;i++)
printf("parent %d\n",i);
}
}
5.退出后,用同样方法查看此文件的代码内容。
2)修改上述程序,每一个进程循环显示一句话。子进程显示'daughter…'及'son……',父进程显示'parent……',观察结果,分析原因。
实验用到的软件(:)
虚拟机VMWare/Virtual Box
fedora15
实验内容及关键步骤(代码)Q3(15分)
1.按照上一次实验的步骤,进入后需要切换到管理员,输入“su root”,输入密码之后,可以输入“ls”查看目录下的文件。附加:为了熟悉上一节实验课内容,我先创建了一个myleb2的文件夹,然后再在这个文件夹里创建一个子文件夹love,再在里面编译。
6.查看无问题后,输入“gcc –o test2 test2.c”,修改运行文件名,然后查看该文件夹下的所有文件,能看到“test2”运行文件。
7.运行“test2”文件,输入“./test2”,可查看运行结果为“daughter 0,daughter 1,daughter 2,daughter 3….. daughter 9”。
3.首先是读入文件内容,再次是看文件有没有指定程序运行,如果有则运行,如果没有则输出出错的信息。
实验中的问题及解决办法:
操作系统第二、三章 进程管理习题
![操作系统第二、三章 进程管理习题](https://img.taocdn.com/s3/m/67e2c03e67ec102de2bd89cf.png)
第二、三章进程管理习题一、选择题1.从静态角度上看,进程是有A、B、C三部分组成,其中C是进程存在的唯一标志。
当几个进程共享A时,A应当是可重入代码。
A,B,C:(1)JCB;(2)PCB;(3)DCB;(4)FCB;(5)程序段;(6)数据段;(7)I/O缓冲区。
2.进程的三个基本状态是A、B、C。
由A到B是由进程调度所引起;由B到C是正在执行的进程发生了某事件,使之无法执行而暂停。
A,B,C:(1)挂起;(2)阻塞;(3)就绪;(4)执行。
3.产生死锁的四个必要条件是互斥条件、A、不剥夺条件和B。
A:(1)请求和阻塞条件;(2)请求和释放条件;(3)请求和保持(占有且等待)条件;(4)释放和阻塞条件;(5)释放和请求条件。
B:(1)线性增长条件;(2)环路条件;(3)无序释放条件;(4)有序释放条件;(5)无序请求条件。
4.A是一种只能由P和V操作所改变的整型变量,A可用于实现进程的B和C,B是排它性地访问临界资源。
A:(1)控制变量;(2)锁;(3)整型信号量;(4)记录型号量。
B,C:(1)同步;(2)通信;(3)调度;(4)互斥。
5.对于记录型信号量,在执行一次P操作时,信号量的值应当A;当其值为B时,进程应阻塞。
在执行V操作时,信号量的值应当C;当其值为D时,应唤醒阻塞队列中的进程。
A,C:(1)不变;(2)加1;(3)减1;(4)加指定数值;(5)减指定数值。
B,D:(1)大于0;(2)小于0;(3)大于等于0;(4)小于等于0。
6.我们如果为每一个作业只建立一个进程,则为了照顾短作业用户,应采用A,为照顾紧急作业的用户,应采用B,而能使短作业、长作业及交互作业用户都比较满意时,应采用C。
A,B,C:(1)FCFS调度算法;(2)短作业优先调度算法;(3)时间片轮转法;(4)多级反馈队列调度算法;(5)基于优先权的剥夺调度算法。
二、填空题1. 在单用户单任务环境下,用户独占全机,此时机内资源的状态,只能由运行程序的操作加以改变,此时的程序执行具有性和性。
全国自考操作系统(进程管理)模拟试卷2.doc
![全国自考操作系统(进程管理)模拟试卷2.doc](https://img.taocdn.com/s3/m/d8c83db75fbfc77da269b192.png)
(B)可以有多个
(C)不能被挂起
(D)必须在执行完后才能被撤下
5用户编写的C程序中的自动变量位于进程映像的_______部分。
(A)数据段
(Bபைடு நூலகம்用户栈
(C)正文段
(D)堆段
6在单CPU的操作系统中,如当前共有4个进程,其中1个进程在核心态下执行,至少有_______个进程处于核心态。
(A)1
(C)后者可并发执行,前者则不行
(D)前者是批处理的,后者是分时的
3某一进程从阻塞状态进入就绪状态可能原因之一是_______。
(A)现运行进程运行结束
(B)现运行进程执行了semWait操作
(C)现运行进程执行了semSignal操作
(D)现运行进程时间片用完
4在UNIX的单处理机系统中,处于SRUN状态的进程_______。
(B)2
(C)3
(D)4
7 UNIX的切换调度程序swtch的第一部分和第三部分涉及进程现场的保护和恢复,在该程序中保护和恢复的一般是_______的现场。
(A)系统进程
(B)用户进程
(C)同一个进程
(D)不同的进程
8在UNIX系统中,核心发现了可能更适合占用处理机的进程,设置了强迫调度标志_______。
(A)runout
(B)runin
(C)runrun
(D)flag
9父进程刚执行了系统调用fork创建一个子进程后,这个子进程的初始状态为_______。
(A)创建态
(B)睡眠态
(C)就绪态
(D)等待态
二、填空题
10作业控制方式有_______和_______。
11在图3—1中,①表示_______状态。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在生产者—消费者问题中应注意:首先,在每个程序中 用于实现互斥的wait(mutex)和signal(mutex)必须成对地出现;
其次,对资源信号量empty和full的wait和signal操作,同样需 要成对地出现,但它们分别处于不同的程序中。
最后,在每个程序中的多个wait操作顺序不能颠倒,应先执 行对资源信号量的wait操作,然后再执行对互斥信号量的 wait操作,否则可能引起进程死锁。
1.利用记录型信号量解决哲学家进餐问题
经分析可知,放在桌子上的筷子是临界资源,在一段时 间内只允许一位哲学家使用。为了实现对筷子的互斥使用, 可以用一个信号量表示一只筷子,由这五个信号量构成信号 量数组。其描述如下:
Var chopstick: array[0,…,4] of semaphore;
……
Var mutex,empty,full: semaphore:=1,n,0; buffer:array[0,…,n-1] of item; in out: integer:=0,0;
begin parbegin producer: begin repeat
produce an item in nextp;
2.利用AND信号量机制解决哲学家进餐问题
在哲学家进餐问题中,要求每个哲学家先获得两个临界
资源(筷子)后方能进餐,这在本质上就是前面所介绍的AND 同步问题,故用AND信号量机制可获得最简洁的解法。描述 如下:
Var chopsiick array of semaphore:=(1,1,1,1,1); processi repeat think; Sswait(chopstick[(i+1)mod 5],chopstick[i]); eat; Ssignat(chopstick[(i+1)mod 5],chopstick[i]); until false;
(2) get(item)过程。消费者利用该过程从缓冲池中取出一 个产品,当count≤0时,表示缓冲池中已无可取用的产品,消 费者应等待。
PC管程可描述如下:
type producer-consumer=monitor Var in,out,count: integer; buffer: array[0, …, n-1] of item; notfull,notempty:condition;
2.利用信号量集机制解决读者—写者问题
若最多只允许RN个读者同时读。需引入一个信号量L, 并赋予其初值为RN,通过执行wait(L,1,1)操作,来控制读 者的数目。每当有一个读者进入时,就要先执行wait(L,1, 1)操作,使L的值减1。当有RN个读者进入读后,L便减为0, 第RN+1个读者要进入读时,必然会因wait(L,1,1)操作失 败而阻塞。
wait(empty);
……
wait(mutex); buffer(in):=nextp; in:=(in+1) mod n; signal(mutex); signal(full); until false; end consumer: begin repeat
wait(full); wait(mutex); nextc:=buffer(out);
……
writer: begin repeat Swait(mx,1,1;L,RN,0); perform write operation; Ssignal(mx,1);
until false; end parend end
其中,Swait(mx,1,0)语句起着开关的作用。只要无writer 进程进入写,mx=1,reader进程就都可以进入读。但只要一 旦有writer进程进入写时,其mx=0,则任何reader进程就都无 法进入读。
第二章 进程管理 ( 2 )
2.4 经典进程的同步问题 2.5 进程通信 2.6 线程
2.4 经典进程的同步问题
2.4.1 生产者—消费者问题 1.利用记录型信号量解决生产者—消费者问题 可利用互斥信号量mutex实现诸进程对缓冲池的互斥使用。 利用信号量empty和full分别表示缓冲池中空缓冲区和满缓 冲区的数量。
(2) 仅当哲学家的左、右两只筷子均可用时,才允许他拿 起筷子进餐。
(3) 规定奇数号哲学家先拿他左边的筷子,然后再去拿右 边的筷子,而偶数号哲学家则相反。按此规定,将是1、2号 哲学家竞争1号筷子;3、4号哲学家竞争3号筷子。即五位哲 学家都先竞争奇数号筷子,获得后,再去竞争偶数号筷子, 最后总会有一位哲学家能获得两只筷子而进餐。
对利用信号量集来解决读者—写者问题的描述如下:
Var RN integer; L,mx: semaphore:=RN,1;
begin parbegin reader: begin repeat Swait(L,1,1); Swait(mx,1,0);
perform read operation;
Ssignal(L,1); until false; end
…
虽然,上述解法可保证不会有两个相邻的哲学家同时进餐, 但有可能引起死锁。假如五位哲学家同时饥饿而各自拿起左 边的筷子时,就会使五个信号量chopstick均为0; 当他们再 试图去拿右边的筷子时,都将因无筷子可拿而无限期地等待。 对于这样的死锁问题,可采取以下几种解决方法:
(1) 至多只允许有四位哲学家同时去拿左边的筷子,最终 能保证至少有一位哲学家能够进餐,并在用毕时能释放出他 用过的两只筷子,从而使更多的哲学家能够进餐。
Swait(empty,mutex); buffer(in):=nextp; in:=(in+1)mod n; Ssignal(mutex,full); until false; end
consumer:begin repeat Swait(full,mutex); Nextc:=buffer(out); Out:=(out+1) mod n; Ssignal(mutex,empty); consumer the item in nextc;
2.4.3 读者—写者问题
有两组并发进程: 读者和写者,共享一组数据区
要求: 允许多个读者同时执行读操作 不允许读者、写者同时操作 不允许多个写者同时操作
2.4.3 读者—写者问题 1.利用记录型信号量解决读者—写者问题
为实现Reader与Writer进程间在读或写时的互斥而设置 了一个互斥信号量wmutex。
parend end
out:=(out+1) mod n; signal(mutex); signal(empty); consumer the item in nextc; until false; end
生产者-消费者问题(续)
• 其中,mutex,empty,full的初始 值分别为1,n,0;
end
procedure entry get(item) begin if count<=0 then notempty.wait; nextc:=buffer(out); out:=(out+1) mod n; count:=count-1; if notfull.quene then notfull.signal; end
until false; end parend end
3.利用管程解决生产者—消费者问题
在利用管程方法来解决生产者—消费者问题时,首先便是 为它们建立一个管程,并命名为ProclucerConsumer,或简称 为PC。其中包括两个过程:
(1) put(item)过程。生产者利用该过程将自己生产的产品 投放到缓冲池中,并用整型变量count来表示在缓冲池中已有 的产品数目,当count≥n时,表示缓冲池已满,生产者须等待。
begin in:=out:=0; count:=0 end
在利用管程解决生产者—消费者问题时,其中的生产者 和消费者可描述为:
producer: begin repeat produce an item in nextp; PC.put(item); until false;
end consumer: begin
2.利用AND信号量解决生产者—消费者问题
对于生产者—消费者问题,也可利用AND信号量来解决, 即用Swait(empty,mutex)来代替wait(empty)和wait(mutex); 用 Ssignal(mutex , full) 来 代 替 signal(mutex) 和 signal(full) ; 用 Swait(full , mutex) 来 代 替 wait(full) 和 wait(mutex) , 以 及 用 Ssignal(mutex,empty)代替Signal(mutex)和Signal(empty)。利 用AND信号量来解决生产者—消费者问题的算法描述如下:
另外,再设置一个整型变量Readcount表示正在读的进程 数目。
又因为Readcount是一个可被多个Reader进程访问的临界 资源,因此,也应该为它设置一个互斥信号量rmutex。
读者—写者问题可描述如下: Var rmutex,wmutex: semaphore:=1,1; Readcount: integer:=0; begin parbegin Reader: begin repeat wait(rmutex); if readcount=0 then wait(wmutex); Readcount:=Readcount+1; signal(rmutex);
……
所有信号量均被初始化为1,第i位哲学家的活动可描述为: repeat wait(chopstick[i]); wait(chopstick[(i+1)mod 5]);
eat;
signal(chopstick[i]); signal(chopstick[(i+1)mod 5]);