操作系统第3章进程调度习题

操作系统第3章进程调度习题
操作系统第3章进程调度习题

第3章进程调度习题

【例】在三种基本类型的操作系统中,都设置了进程调度,在批处理系统中还应设置( )调度【答案】A

A 作业

B 进程

C 中级

D 多处理机

【例】下列算法中,()只能采用非抢占调度方式【解答】C

A 高优先权法

B 时间片轮转法

C FCFS调度算法

D 短作业优先算法【例】最适合分时系统的进程调度算法是()【解答】D

A FCFS

B SSJF

C 优先数法

D 轮转法

【例】进程调度是从()选择一个进程投入运行。【解答】A

A 就绪队列

B 等待队列

C 作业后备队列

D 提交队列

【例】进程调度主要负责()【解答】B

A 选作业进入内存

B 选一进程占有CPU

C 建立一进程

D 撤销一进程

【例】“可抢占”和“不可抢占”的优先级调度算法相比()【解答】B

A 前者开销小

B 前者开销大

C 两者开销大致相同

D 两者开销不能相比

【解析】因为“可抢占”优先级调度时钟保证在处理机上运行的是优先级最高的进程,这样,当处理机正在运行某个进程时,很可能会被其他优先级更高的进程抢占引起处理机调度,和不可抢占算法相比,前者的调度次数会更频繁,而每调度一次都会引起保护现场,恢复现场的工作,所以可抢占的优先级调度算法开销更大。

【例】()优先权是在创建进程时确定的,确定之后在整个进程运行期间不再改变

A 先来先服务

B 静态

C 动态

D 短作业

【答案】 B

【例】若进程P一旦被唤醒就能够投入运行,系统可能为( )

A 分时系统,进程P的优先级最高

B 抢占调度方式,就绪队列上的所有进程的优先级皆比P的低

C 就绪队列为空队列

D 抢占调度方式,P的优先级高于当前运行的进程

【分析】

1 在分析系统中,进程调度是按照轮转方式进行的。系统并不登记进程的优先级

2 在抢占调度方式中,P的优先级高于就绪队列上的所有进程,但不一定高于当前的运行进程,所以也不一定能立即运行

3 无论哪种调度方式,若就绪队列为空队列,P被唤醒并插入后都会成为该队列的唯一进程,但这并不是说P可以立即获得处理机。只有当前运行的进程释放了CPU,且就绪队列无其他进程时,P才可以立即使用CPU

4 在抢占调用调度中,一个新的进程P到来,若P的优先级高于当前进程时,可以抢占CPU,立即投入运行

【答案】D

【例】一个进程被P被唤醒后,()

A P就占有了CPU

B P 的PCB被移到就绪队列的对首

C P的优先级肯定最高

D P的状态变为就绪

【分析】

1 进程P被唤醒后,由于当前运行的进程正在使用CPU,是否立即放弃CPU还要由其他因素决定,所以P不一定能立即占有CPU

2进程P被唤醒后插入到队列的那个位置,要取决于管理程序和调度算法的实现方案。

如果系统采用的是最高优先级算法,则可以按照优先级顺序将P插入到队列中;如果采用FIFO,则按到达就绪队列的时间顺序被插入队列尾部。此外,其他调度方案也有不同处理

3 P被唤醒是因为它所等待的事件已经到来,并不是因为P的优先级最高

4 进程P被唤醒后,说明P已具备在CPU上运行的先决条件

【答案D】

【例】当系统中()时,系统将不会执行进程调度原语。【答案】C

A 一个新进程被创建

B 当前进程执行了P操作

C 在非抢占调度中,进程A正在运行而进程B恰好被唤醒

D 分时系统中的时间片用完

【例】下列进度调度算法中,()可能出现进程得不到调度的情况【答案】A

A 静态优先权发

B 抢占式调度中采用动态优先权算法

C 分时处理中的时间片轮转调度算法

D 非抢占式调度中采用FIFO算法

【例】在采用动态优先权的调度算法中,如果所有进程都具有相同优先权初值,则此时的优先权调度算法实际上和()相同【答案】A

A 先来先服务调度算法

B 短作业优先调度算法

C 时间片轮转调度算法

D 长作业优先导读算法

【例】下列进程调度算法中,()可能会出现进程长期得不到调度的情况。【解答】B

A 非抢占式静态优先权法

B 抢占式静态优先权法

C 时间片轮转调度算法

D 非抢占式动态优先权法

【例】为了照顾紧迫型作业,应采用()【解答】D

A 先来先服务调度算法

B 短作业优先调度算法

C 时间片轮转调度算法

D 优先权调度算法

【例】以优先级为基础的进程调度算法可以保证在任何时候正在运行的进程总是非等待状态下进程中优先级最高的进程,上述描述是______ 【答案】B

A 正确的

B 错误的

【例】进程调度方式有两种,一种是_____的,另一种是-_______

【答案】剥夺方式;非剥夺方式

【例】进程调度算法采用时间片轮转法时,时间片过大,就会使轮转法转化为()法【解答】FCFS(先来先服务)

【例】在操作系统中引起进程调度的因素有:现运行进程任务完成或出现异常情况;现运行进程在运行中又提出了新的资源申请,现运行进程由于之行某些原语,使进程由运行态变为阻塞态;在分时系统中,如果现运行进程给定的()用完了;在采用可剥夺式的调度方式时,当有更高()的进程进入就绪队列时,要引起重新调度。

【解答】时间片优先级

【例】若使当前运行进程总是优先级最高的进程,则应选择()进程调度算法

【解答】剥夺式优先级

【例】进程调度负责()的分配工作【解答】处理机

【例】一种最常用的进程调度算法是把处理机分配给具有最高优先权的进程。而确定优先权的方法概括起来不外乎是基于_____-特性和______特性两种方法。前者所得到的是_______优先权,后者所得到的是______优先权

【答案】静态;动态;静态;动态

【例】当进程调度未能选中一个进程运行时,就绪队列和阻塞队列一定为空。【解答】

当进程调度未能选中一个进程运行时,就绪队列为空,但阻塞队列不一定为空。因为调度时,阻塞状态的进程不受到影响。

【例】在分时系统中,是否应设置作业调度为什么

【解答】在分时系统中不需要设置作业调度。因为分时系统中的所有作业都由用户终端(键盘)输入到内存,然后系统立即为它建立进程,并将该进程插入到就绪队列。调度程序按时间片轮转法,对各终端作业进行调度,保证了在一较短时间内,各终端作业都能被处理,从而实现人机交互。反之,若将终端作业先送到外存输入井上,再等待作业调度后,方可将作业调入内存(创建相应进程),这样就难以保证人际交互的要求,且也是多此一举。

【例】某进程被唤醒时后立即投入运行,我们就说这个系统采用的是剥夺式调度方式,对么【解答】不对

当进程在唤醒前,CPU处于空闲状态时,某进程被唤醒后,系统会使它立即投入运行,但这不是剥夺调度方式。仅当它被唤醒后,立即抢占当前正在运行进程的CPU才可说系统采用的是剥夺式调度方式。

【例】在采用优先级进程调度时,运行进程是否一定是系统中优先级最高的进程

【解答】不一定。

因为高优先级的进程有可能正处于等待队列等待,进程调度就从就绪队列中选一个进程占用CPU,这个被选中的进程可能优先级较低

【例】在CPU按优先级调度的系统中

1 没有运行进程是否一定没有就绪进程为什么

2 没有运行进程或者没有就绪进程或者两者都没有,是否可能都是什么情况

3 运行进程是否一定是进程中优先级最高的

【解答】1 是。

因为当正在运行的进程由于某种原因放弃CPU,这时要调用调度程序,从就绪队列中挑选一进程投入运行。若就绪队列没有进程,则就无法挑选出进程。因此,无运行进程。

2 可能。即在某一段时间内,可能系统中有几个进程都暂时处于阻塞状态,正在运行I/O或I/O等待,这时没有运行进程或者没有就绪进程或者两者都没有

3 不一定。因为阻塞队列中的进程,其优先级可能比正在运行队列中的进程优先级高。

【例】什么叫抢占(剥夺)式处理调度和非抢占(非剥夺)式处理调度先来先服务发(FCFS),优先法(HPF)各属于哪种调度方式

【解答】剥夺方式是指当一进程正在处理机上运行时,当有更重要,更紧急或特殊要求的进程,即优先权更高的进程进入就绪队列时,就要终止现运行进程的运行,将CPU分配给更高优先权的进程。

非剥夺方式是指当一进程正在处理机上运行时,若有优先权更高的进程要求使用时,现行进程不予理睬,继续运行,知道它运行完或出现某种情况时才给其他进程使用先来先服务(FCFS)属于非剥夺方式

优先法(HPF)属于剥夺方式

【例】假设一个系统中有5个进程,它们的到达时间和服务时间如下。忽略I/O以及其他开销,若分别按先来先服务,非抢占及抢占的短进程优先,高响应比优先,时间片轮转调度算法进行CPU调度,请给出各进程的完成时间,周转时间,带权周转时间,平均周转时间和平均带权周转时间。

【解答】先来先服务选择最早进入就绪队列的进程投入运行ABCDE 到达时间结束时间周转时间带权周转时间

A 0 3 3-0=3 3/3=1

B 2 3+6=9 9-2=7 7/6

C 4 9+4=13 13-4=9 9/4

D 6 13+5=18 18-6=12 12/5

E 8 18+2=20 20-8=12 12/2=6

非抢占短进程优先选择最早进入就绪队列的进程投入运行ABECD 到达时间结束时间周转时间带权周转时间

A 0 3 3-0=3 3/3=1

B 2 3+6=9 9-2=7 7/6

C 4 11+4=15 15-4=11 11/4

D 6 15+5=20 20-6=14 14/6

E 8 9+2=11 11-8=3 3/2

抢占短进程优先

0时,A运行

2时,B达到,但不运行

3时,A运行结束,队列里面B,B开始运行

4时,C到达,B运行1小时,选择C运行,队列里面有B5

6时,D到达,队列里有B5,D5

8时,E到达,C运行完毕,队列里有B5,D5,E2,E开始运行

10时,E运行完毕,队列里由B5,D5,B运行

15时,B运行完毕,队列里有D5,D运行

20时,D运行完毕

到达时间结束时间周转时间带权周转时间

A 0 3 3-0=3 3/3=1

B 2 15 15-2=13 13/6

C 4 8 8-4=4 4/4

D 6 20 20-6=14 14/6

E 8 10 10-8=2 2/2【例】在OS中引入进程调度的主要因素有哪些

【解答】引入进程调度的主要因素有:

1 一个进程运行完毕

2 一个正在运行的进程被阻塞

3 在抢占式调度中,一个高优先级的进程被创建

4 在抢占调度中,一个高优先级进程由阻塞唤醒

5 在轮转式调度中,正在运行的进程运行完一个时间片。

操作系统实验报告--实验一--进程管理

实验一进程管理 一、目的 进程调度是处理机管理的核心内容。本实验要求编写和调试一个简单的进程调度程序。通过本实验加深理解有关进程控制块、进程队列的概念,并体会和了解进程调度算法的具体实施办法。 二、实验内容及要求 1、设计进程控制块PCB的结构(PCB结构通常包括以下信息:进程名(进程ID)、进程优先数、轮转时间片、进程所占用的CPU时间、进程的状态、当前队列指针等。可根据实验的不同,PCB结构的内容可以作适当的增删)。为了便于处理,程序中的某进程运行时间以时间片为单位计算。各进程的轮转时间数以及进程需运行的时间片数的初始值均由用户给定。 2、系统资源(r1…r w),共有w类,每类数目为r1…r w。随机产生n进程P i(id,s(j,k),t),0<=i<=n,0<=j<=m,0<=k<=dt为总运行时间,在运行过程中,会随机申请新的资源。 3、每个进程可有三个状态(即就绪状态W、运行状态R、等待或阻塞状态B),并假设初始状态为就绪状态。建立进程就绪队列。 4、编制进程调度算法:时间片轮转调度算法 本程序用该算法对n个进程进行调度,进程每执行一次,CPU时间片数加1,进程还需要的时间片数减1。在调度算法中,采用固定时间片(即:每执行一次进程,该进程的执行时间片数为已执行了1个单位),这时,CPU时间片数加1,进程还需要的时间片数减1,并排列到就绪队列的尾上。 三、实验环境 操作系统环境:Windows系统。 编程语言:C#。 四、实验思路和设计 1、程序流程图

2、主要程序代码 //PCB结构体 struct pcb { public int id; //进程ID public int ra; //所需资源A的数量 public int rb; //所需资源B的数量 public int rc; //所需资源C的数量 public int ntime; //所需的时间片个数 public int rtime; //已经运行的时间片个数 public char state; //进程状态,W(等待)、R(运行)、B(阻塞) //public int next; } ArrayList hready = new ArrayList(); ArrayList hblock = new ArrayList(); Random random = new Random(); //ArrayList p = new ArrayList(); int m, n, r, a,a1, b,b1, c,c1, h = 0, i = 1, time1Inteval;//m为要模拟的进程个数,n为初始化进程个数 //r为可随机产生的进程数(r=m-n) //a,b,c分别为A,B,C三类资源的总量 //i为进城计数,i=1…n //h为运行的时间片次数,time1Inteval为时间片大小(毫秒) //对进程进行初始化,建立就绪数组、阻塞数组。 public void input()//对进程进行初始化,建立就绪队列、阻塞队列 { m = int.Parse(textBox4.Text); n = int.Parse(textBox5.Text); a = int.Parse(textBox6.Text); b = int.Parse(textBox7.Text); c = int.Parse(textBox8.Text); a1 = a; b1 = b; c1 = c; r = m - n; time1Inteval = int.Parse(textBox9.Text); timer1.Interval = time1Inteval; for (i = 1; i <= n; i++) { pcb jincheng = new pcb(); jincheng.id = i; jincheng.ra = (random.Next(a) + 1); jincheng.rb = (random.Next(b) + 1); jincheng.rc = (random.Next(c) + 1); jincheng.ntime = (random.Next(1, 5)); jincheng.rtime = 0;

操作系统进程同步实验报告

实验三:进程同步实验 一、实验任务: (1)掌握操作系统的进程同步原理; (2)熟悉linux的进程同步原语; (3 )设计程序,实现经典进程同步问题。 二、实验原理: (1)P、V操作 PV操作由P操作原语和V操作原语组成(原语是不可中断的过程) ,对信号量进行操作,具体定义如下: P( S):①将信- 号量S的值减1,即S=S-1; ②如果S30,则该进程继续执行;否则该进程置为等待状态,排入等待队列。 V( S):①将信号量S的值加1,即S=S+1 ; ②如果S>0,则该进程继续执行;否则释放队列中第一个等待信号量的进程。 (2)信号量 信号量(semaphore )的数据结构为一个值和一个指针,指针指向等待该信号量的下一个进程。信号量的值与相应资源的使用情况有关。当它的值大于0时,表示当前可用资源的数量;当它的值小于0时,其绝对值表示等待使用该资源的进程个数。注意,信号量的 值仅能由PV操作来改变。 一般来说,信号量S30时,S表示可用资源的数量。执行一次P操作意味着请求分配一 个单位资源,因此S的值减1;当S<0时,表示已经没有可用资源,请求者必须等待别的进程释放该类资源,它才能运行下去。而执行一个V操作意味着释放一个单位资源,因此S 的值加1;若S均,表示有某些进程正在等待该资源,因此要唤醒一个等待状态的进程,使之运行下去。 (3)linux的进程同步原语 ①wait();阻塞父进程,子进程执行; ②#in clude #in clude key_t ftok (char*path name, char proj) ;它返回与路径path name 相对应的一个键值。 ③int semget(key_t key, int n sems, int semflg) 参数key是一个键值,由ftok获得,唯一标识一个信号灯集,用法与msgget()中的key 相同;参数nsems指定打开或者新创建的信号灯集中将包含信号灯的数目;semflg参数是一些标志位。参数key和semflg的取值,以及何时打开已有信号灯集或者创建一个新的信号灯集与msgget()中的对应部分相同。该调用返回与健值key相对应的信号灯集描述字。调用返回:成功返回信号灯集描述字,否则返回-1。 ④int semop(i nt semid, struct sembuf *sops, un sig ned n sops); semid是信号灯集ID , sops指向数组的每一个sembuf结构都刻画一个在特定信号灯上的操作。nsops为sops指向数组的大小。 ⑤int semctl(int semid , int semnum , int cmd , union semun arg) 该系统调用实现对信号灯的各种控制操作,参数semid指定信号灯集,参数cmd指定 具体的操作类型;参数semnum指定对哪个信号灯操作,只对几个特殊的cmd操作有意义;

操作系统实验-进程控制

实验一、进程控制实验 1.1 实验目的 加深对于进程并发执行概念的理解。实践并发进程的创建和控制方法。观察和体验进程的动态特性。进一步理解进程生命期期间创建、变换、撤销状态变换的过程。掌握进程控制的方法,了解父子进程间的控制和协作关系。练习Linux 系统中进程创建与控制有关的系统调用的编程和调试技术。 1.2 实验说明 1)与进程创建、执行有关的系统调用说明进程可以通过系统调用fork()创建子进程并和其子进程并发执行.子进程初始的执行映像是父进程的一个复本.子进程可以通过exec()系统调用族装入一个新的执行程序。父进程可以使用wait()或waitpid()系统调用等待子进程的结束并负责收集和清理子进程的退出状态。 fork()系统调用语法: #include pid_t fork(void); fork 成功创建子进程后将返回子进程的进程号,不成功会返回-1. exec 系统调用有一组6 个函数,其中示例实验中引用了execve 系统调用语法: #include int execve(const char *path, const char *argv[], const char * envp[]); path 要装入 的新的执行文件的绝对路径名字符串. argv[] 要传递给新执行程序的完整的命令参数列表(可以为空). envp[] 要传递给新执行程序的完整的环境变量参数列表(可以为空).

Exec 执行成功后将用一个新的程序代替原进程,但进程号不变,它绝不会再返回到调用进程了。如果exec 调用失败,它会返回-1。 wait() 系统调用语法: #include #include pid_t wait(int *status); pid_t waitpid(pid_t pid,int *status,int option); status 用 于保留子进程的退出状态 pid 可以为以下可能值: -1 等待所有PGID 等于PID 的绝对值的子进程 1 等待所有子进程 0 等待所有PGID 等于调用进程的子进程 >0 等待PID 等于pid 的子进程option 规 定了调用waitpid 进程的行为: WNOHANG 没有子进程时立即返回 WUNTRACED 没有报告状态的进程时返回 wait 和waitpid 执行成功将返回终止的子进程的进程号,不成功返回-1。 getpid()系统调用语法: #include #include pid_t getpid(void); pid_t getppid(void); getpid 返回当前进程的进程号,getppid 返回当前进程父进程的进程号 2)与进程控制有关的系统调用说明可以通过信号向一个进程发送消息以控制进程的 行为。信号是由中断或异常事件引发的,如:键盘中断、定时器中断、非法内存引

操作系统的进程调度 实验报告

《计算机操作系统2》实验报告 实验一题目:操作系统的进程调度 姓名:学号:12125807 实验日期:2014.12 实验要求: 1.设计一个有n个进程工行的进程调度程序。每个进程由一个进程控制块(PCB)表示。 进程控制块通常应包含下述信息:进程名、进程优先数、进程需要运行的时间、占用CPU的时间以及进程的状态等,且可按调度算法的不同而增删。 2.调度程序应包含2~3种不同的调度算法,运行时可任意选一种,以利于各种算法的分 析比较。 3.系统应能显示或打印各进程状态和参数的变化情况,便于观察诸进程的调度过程 实验目的: 1.进程是操作系统最重要的概念之一,进程调度又是操作系统核心的主要内容。本实习要 求学生独立地用高级语言编写和调试一个简单的进程调度程序。调度算法可任意选择或自行设计。例如,简单轮转法和优先数法等。本实习可加深对于进程调度和各种调度算法的理解。 实验内容: 1.编制和调试示例给出的进程调度程序,并使其投入运行。 2.自行设计或改写一个进程调度程序,在相应机器上调试和运行该程序,其功能应该不亚 于示例。 3.直观地评测各种调度算法的性能。 示例: 1.题目 本程序可选用优先数法或简单轮转法对五个进程进行调度。每个进程处于运行R(run)、就绪W(wait)和完成F(finish)三种状态之一,并假设起始状态都是就绪状态W。为了便于处理,程序进程的运行时间以时间片为单位计算。各进程的优先数或轮转时间片数、以及进程需要运行的时间片数,均由伪随机数发生器产生。 进程控制块结构如下:

PCB 进程标识数 链指针 优先数/轮转时间片数 占用CPU时间片数 进程所需时间片数 进程状态 进程控制块链结构如下: 其中:RUN—当前运行进程指针; HEAD—进程就绪链链首指针; TAID—进程就绪链链尾指针。 2.算法与框图 (1) 优先数法。 进程就绪链按优先数大小从高到低排列,链首进程首先投入运行。每过一个时间片,运行进程所需运行的时间片数减1,说明它已运行了一个时间片,优先数也减3,理由是该进程如果在一个时间片中完成不了,优先级应该降低一级。接着比较现行进程和就绪链链首进程的优先数,如果仍是现行进程高或者相同,就让现行进程继续进行,否则,调度就绪链链首进程投入运行。原运行进程再按其优先数大小插入就绪链,且改变它们对应的进程状态,直至所有进程都运行完各自的时间片数。 (2) 简单轮转法。 进程就绪链按各进程进入的先后次序排列,进程每次占用处理机的轮转时间按其重要程度登入进程控制块中的轮转时间片数记录项(相当于优先数法的优先数记录项位置)。每过一个时间片,运行进程占用处理机的时间片数加1,然后比较占用处理机的时间片数是否与该进程的轮转时间片数相等,若相等说明已到达轮转时间,应将现运行进程排到就绪链末尾,调度链首进程占用处理机,且改变它们的进程状态,直至所有进程完成各自的时间片。(3) 程序框图如下图所示。

操作系统实验实验1

广州大学学生实验报告 1、实验目的 1.1、掌握进程的概念,明确进程的含义 1.2、认识并了解并发执行的实质 2.1、掌握进程另外的创建方法 2.2、熟悉进程的睡眠、同步、撤消等进程控制方法 3.1、进一步认识并发执行的实质 3.2、分析进程竞争资源的现象,学习解决进程互斥的方法 4.1、了解守护进程 5.1、了解什么是信号 5.2、INUX系统中进程之间软中断通信的基本原理 6.1、了解什么是管道 6.2、熟悉UNIX/LINUX支持的管道通信方式 7.1、了解什么是消息 7.2、熟悉消息传送的机理 8.1、了解和熟悉共享存储机制 二、实验内容 1.1、编写一段程序,使用系统调用fork( )创建两个子进程。当此程序运行时,在系统 中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示'a',子进程分别显示字符'b'和字符'c'。试观察记录屏幕上的显示结果,并分析原因。 1.2、修改上述程序,每一个进程循环显示一句话。子进程显示'daughter …'及 'son ……',父进程显示'parent ……',观察结果,分析原因。 2.1、用fork( )创建一个进程,再调用exec( )用新的程序替换该子进程的内容 2.2、利用wait( )来控制进程执行顺序 3.1、修改实验(一)中的程序2,用lockf( )来给每一个进程加锁,以实现进程之间的互斥 3.2、观察并分析出现的现象 4.1、写一个使用守护进程(daemon)的程序,来实现: 创建一个日志文件/var/log/Mydaemon.log ; 每分钟都向其中写入一个时间戳(使用time_t的格式) ; 5.1、用fork( )创建两个子进程,再用系统调用signal( )让父进程捕捉键盘上来的中断信号(即按^c键);捕捉到中断信号后,父进程用系统调用kill( )向两个子进程发出信号,子进程捕捉到信号后分别输出下列信息后终止: Child process1 is killed by parent! Child process2 is killed by parent! 父进程等待两个子进程终止后,输出如下的信息后终止: Parent process is killed! 5.2、用软中断通信实现进程同步的机理

操作系统复习题(2)及答案

一.名词解释 抢占式进程调度进程状态系统调用中断响应线程联想存储器死锁通道地址重定位高速缓存可再入程序 抖动索引文件作业控制块目录项设备驱动程序虚存逻辑空间物理空间 二.填空题 1.现代操作系统的两个最基本的特征是(),(),()和() 2.操作系统是计算机系统中的一个(),它管理和控制计算机系统中的()3.允许多个用户以交互方式使用计算机的操作系统称为(),允许多个用户将多个作业提交给计算机集中处理的操作系统称为(),计算机系统能及时处理过程控制数据并做出响应的操作系统称为()。 4.用户与操作系统之间的接口主要分为()和()两类。 5.进程控制块的初始化工作包括(),()和()。 6.在操作系统中引入线程概念的主要目的是()。 7.程序并发执行与顺序执行时相比产生了一些新特性,分别是:(),()和()。 8.进程是一个程序对某个数据集的()。 9.如果系统有N个进程,则在等待队列中进程的个数最多可为()个。 10.在操作系统中,不可中断执行的操作称为()。 11.如果信号量的当前值为-4,则表示()。 12.在有M个进程的系统中出现死锁时,死锁进程的个数K应该满足的条

件是()。 13.不让死锁发生的策略可以分为静态和动态的两种,死锁避免属于()。 14.若使当前运行进程总是优先级最高的,应选择()进程调度算法。 15.在进程中,访问()的代码称为临界区。为保证进程()使用临界区,应在进程的临界区前设置(),在临界区后设置()。 16.在采用请求分页式存储管理的系统中,地址变换可能会因为(),(),和() 等原因而产生中断。 17.在可变分区存储管理中,分区的保护通常采用()和()两种方式。 18.在分区分配算法中,首次适应算法倾向于优先利用存中()部分的空闲分区,从而保留了()部分的大空闲区。 19.不让死锁发生的策略可以分为静态和动态的两种,死锁避免属于()。 20.若使当前运行进程总是优先级最高的,应选择()进程调度算法。 21.缓冲区由()和()组成? 22.进行设备分配时所需的数据表格主要由(),(),()和()等。 23.设备管理中引入缓冲机制的主要原因由(),()和() 24.使用位示图(20行,30列)表示空闲盘块状态。当分配一个盘块号为132号时,其在位示图中的行,列数为(),()。当释放一个盘块号为318时,其所在位示图中的行,列数位(),()。(注:行为0-――19,列为0-――29,首盘块号为1)。

操作系统实验报告(进程调度算法)

操作系统实验报告(进程调度算法)

实验1 进程调度算法 一、实验内容 按优先数调度算法实现处理器调度。 二、实验目的 在采用多道程序设计的系统中,往往有若干个进程同时处于就绪状态。当就绪进程个数大于处理器数时,就必须依照某种策略来决定哪些进程优先占用处理器。本实验模拟在单处理器情况下的处理器调度,帮助学生加深了解处理器调度的工作。 三、实验原理 设计一个按优先数调度算法实现处理器调度的程序。 (1) 假定系统有五个进程,每一个进程用一个进程控制块PCB来代表,进程控制块的格式为: 进程名 指针 要求运行时 间 优先数

状态 其中,进程名——作为进程的标识,假设五个进程的进程名分别为P1,P2,P3,P4,P5。 指针——按优先数的大小把五个进程连成队列,用指针指出下一个进程的进程控制块的首地址,最后一个进程中的指针为“0”。 要求运行时间——假设进程需要运行的单位时间数。 优先数——赋予进程的优先数,调度时总是选取优先数大的进程先执行。 状态——可假设有两种状态,“就绪”状态和“结束”状态。五个进程的初始状态都为“就绪”,用“R”表示,当一个进程运行结束后,它的状态为“结束”,用“E”表示。 (2) 在每次运行你所设计的处理器调度程序之前,为每个进程任意确定它的“优先数”和“要求运行时间”。 (3) 为了调度方便,把五个进程按给定的优先数从大到小连成队列。用一单元指出队首进程,用指针指出队列的连接情况。例: 队首标志 K2

1P1 K 2 P2 K 3 P3 K 4 P4 K 5 P5 0 K4K5K3K1 2 3 1 2 4 1 5 3 4 2 R R R R R PC B1 PC B2 PC B3 PC B4 PC B5 (4) 处理器调度总是选队首进程运行。采用动态改变优先数的办法,进程每运行一次优先数就减“1”。由于本实验是模拟处理器调度,所以,对被选中的进程并不实际的启动运行,而是执行: 优先数-1 要求运行时间-1 来模拟进程的一次运行。 提醒注意的是:在实际的系统中,当一个进程被选中运行时,必须恢复进程的现场,让它占有处理器运行,直到出现等待事件或运行结束。在这里省去了这些工作。

操作系统实验报告(进程的创建)(DOC)

实验题目进程的创建小组合作否姓名班级学号 一、实验目的 1、了解进程的创建。 2、了解进程间的调用以及实现。 3、分析进程竞争资源的现象,学习解决互斥的方法。 4、加深对进程概念的理解,认识并发执行的本质。 二.实验环境 Windows 系统的计算机一台,安装了Linux虚拟机 三、实验内容与步骤 1、fork()系统调用的使用例子 程序代码: #include #include #include int glob=3; int main(void) { pid_t pid;int loc=3; printf("before fork();glod=%d,loc=%d.\n",glob,loc); if((pid=fork())<0) { printf("fork() error. \n"); exit(0); } else if(pid==0) { glob++; loc--; printf("child process changes glob and loc: \n"); } else

wait(0); printf("parent process doesn't change the glob and loc:\n"); printf("glob=%d,loc=%d\n",glob,loc); exit(0); } 运行结果: 2、理解vofork()调用: 程序代码: #include #include #include int glob=3; int main(void) { pid_t pid; int loc=3; if((pid=vfork())<0) { printf("vfork() error\n"); exit(0); } else if(pid==0) { glob++; loc--; printf("child process changes the glob and loc\n"); exit(0); } else printf ("parent process doesn't change the glob and loc\n"); printf("glob=%d,val=%d\n",glob,loc);

操作系统课程设计报告进程调度

前言 操作系统(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。 操作系统是用户和计算机的接口,同时也是计算机硬件和其他软件的接口。操作系统的功能包括管理计算机系统的硬件、软件及数据资源,控制程序运行,改善人机界面,为其它应用软件提供支持,让计算机系统所有资源最大限度地发挥作用,提供各种形式的用户界面,使用户有一个好的工作环境,为其它软件的开发提供必要的服务和相应的接口等。实际上,用户是不用接触操作系统的,操作系统管理着计算机硬件资源,同时按照应用程序的资源请求,分配资源,如:划分CPU时间,内存空间的开辟,调用打印机等。 操作系统的主要功能是资源管理,程序控制和人机交互等。计算机系统的资源可分为设备资源和信息资源两大类。设备资源指的是组成计算机的硬件设备,如中央处理器,主存储器,磁盘存储器,打印机,磁带存储器,显示器,键盘输入设备和鼠标等。信息资源指的是存放于计算机内的各种数据,如系统软件和应用软件等。 操作系统位于底层硬件与用户之间,是两者沟通的桥梁。用户可以通过操作系统的用户界面,输入命令。操作系统则对命令进行解释,驱动硬件设备,实现用户要求。 本次课程设计我们将对上学期所学的知识进行系统的应用,而达到巩固知识的作用

目录 1问题概述 (2) 2需求分析 (2) 3 概要设计 (2) 3.1主要功能 (2) 3.2 模块功能结构 (3) 3.3 软硬件环境 (3) 3.4数据结构设计 (3) 4 详细设计 (4) 4.1“先来先服务(FCFS)调度算法” (4) 4.2“短进程调度算法(SPF)” (7) 4.3“高响应比优先调度算法” (10) 4.4“优先级调度(非抢占式)算法” (14) 5 系统测试及调试 (16) 5.1测试 (16) 5.2调试过程中遇到的问题 (17) 6 心得体会 (18) 7 参考文献 (19) 8 附录 (20)

山东大学操作系统实验报告4进程同步实验

山东大学操作系统实验报告4进程同步实验

计算机科学与技术学院实验报告 实验题目:实验四、进程同步实验学号: 日期:20120409 班级:计基地12 姓名: 实验目的: 加深对并发协作进程同步与互斥概念的理解,观察和体验并发进程同步与互斥 操作的效果,分析与研究经典进程同步与互斥问题的实际解决方案。了解 Linux 系统中 IPC 进程同步工具的用法,练习并发协作进程的同步与互斥操作的编程与调试技术。 实验内容: 抽烟者问题。假设一个系统中有三个抽烟者进程,每个抽烟者不断地卷烟并抽烟。抽烟者卷起并抽掉一颗烟需要有三种材料:烟草、纸和胶水。一个抽烟者有烟草,一个有纸,另一个有胶水。系统中还有两个供应者进程,它们无限地供应所有三种材料,但每次仅轮流提供三种材料中的两种。得到缺失的两种材料的抽烟者在卷起并抽掉一颗烟后会发信号通知供应者,让它继续提供另外的两种材料。这一过程重复进行。请用以上介绍的 IPC 同步机制编程,实现该问题要求的功能。 硬件环境: 处理器:Intel? Core?i3-2350M CPU @ 2.30GHz ×4 图形:Intel? Sandybridge Mobile x86/MMX/SSE2 内存:4G 操作系统:32位 磁盘:20.1 GB 软件环境: ubuntu13.04 实验步骤: (1)新建定义了producer和consumer共用的IPC函数原型和变量的ipc.h文件。

(2)新建ipc.c文件,编写producer和consumer 共用的IPC的具体相应函数。 (3)新建Producer文件,首先定义producer 的一些行为,利用系统调用,建立共享内存区域,设定其长度并获取共享内存的首地址。然后设定生产者互斥与同步的信号灯,并为他们设置相应的初值。当有生产者进程在运行而其他生产者请求时,相应的信号灯就会阻止他,当共享内存区域已满时,信号等也会提示生产者不能再往共享内存中放入内容。 (4)新建Consumer文件,定义consumer的一些行为,利用系统调用来创建共享内存区域,并设定他的长度并获取共享内存的首地址。然后设定消费者互斥与同步的信号灯,并为他们设置相应的初值。当有消费进程在运行而其他消费者请求时,相应的信号灯就会阻止它,当共享内存区域已空时,信号等也会提示生产者不能再从共享内存中取出相应的内容。 运行的消费者应该与相应的生产者对应起来,只有这样运行结果才会正确。

操作系统原理-进程调度实验报告

一、实验目的 通过对进程调度算法的设计,深入理解进程调度的原理。 进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。 进程调度分配处理机,是控制协调进程对CPU的竞争,即按一定的调度算法从就绪队列中选中一个进程,把CPU的使用权交给被选中的进程。 进程通过定义一个进程控制块的数据结构(PCB)来表示;每个进程需要赋予进程ID、进程到达时间、进程需要运行的总时间的属性;在RR中,以1为时间片单位;运行时,输入若干个进程序列,按照时间片输出其执行序列。 二、实验环境 VC++6.0 三、实验内容 实现短进程优先调度算法(SPF)和时间片轮转调度算法(RR) [提示]: (1) 先来先服务(FCFS)调度算法 原理:每次调度是从就绪队列中,选择一个最先进入就绪队列的进程,把处理器分配给该进程,使之得到执行。该进程一旦占有了处理器,它就一直运行下去,直到该进程完成或因发生事件而阻塞,才退出处理器。 将用户作业和就绪进程按提交顺序或变为就绪状态的先后排成队列,并按照先来先服务的方式进行调度处理,是一种最普遍和最简单的方法。它优先考虑在系统中等待时间最长的作业,而不管要求运行时间的长短。 按照就绪进程进入就绪队列的先后次序进行调度,简单易实现,利于长进程,CPU繁忙型作业,不利于短进程,排队时间相对过长。 (2) 时间片轮转调度算法RR

原理:时间片轮转法主要用于进程调度。采用此算法的系统,其程序就绪队列往往按进程到达的时间来排序。进程调度按一定时间片(q)轮番运行各个进程. 进程按到达时间在就绪队列中排队,调度程序每次把CPU分配给就绪队列首进程使用一个时间片,运行完一个时间片释放CPU,排到就绪队列末尾参加下一轮调度,CPU分配给就绪队列的首进程。 固定时间片轮转法: 1 所有就绪进程按 FCFS 规则排队。 2 处理机总是分配给就绪队列的队首进程。 3 如果运行的进程用完时间片,则系统就把该进程送回就绪队列的队尾,重新排队。 4 因等待某事件而阻塞的进程送到阻塞队列。 5 系统把被唤醒的进程送到就绪队列的队尾。 可变时间片轮转法: 1 进程状态的转换方法同固定时间片轮转法。 2 响应时间固定,时间片的长短依据进程数量的多少由T = N × ( q + t )给出的关系调整。 3 根据进程优先级的高低进一步调整时间片,优先级越高的进程,分配的时间片越长。 多就绪队列轮转法: (3) 算法类型 (4)模拟程序可由两部分组成,先来先服务(FCFS)调度算法,时间片轮转。流程图如下:

操作系统实验_实验1

广州大学学生实验报告 开课学院及实验室:计算机科学与工程实验室 2015年11月11日 实验课 操作系统成绩 程名称 实验项 进程管理与进程通信指导老师陈康民目名称 (***报告只能为文字和图片,老师评语将添加到此处,学生请勿作答***) 进程管理 (一)进程的创建实验 一、实验目的 1、掌握进程的概念,明确进程的含义 2、认识并了解并发执行的实质 二、实验内容 1、编写一段程序,使用系统调用fork( )创建两个子进程。当此程序运行时,在系统中有一 个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示'a',子进程分别显示字符'b'和字符'c'。试观察记录屏幕上的显示结果,并分析原因。 2、修改上述程序,每一个进程循环显示一句话。子进程显示'daughter …'及'son ……', 父进程显示'parent ……',观察结果,分析原因。 三、实验步骤 1、编写一段程序,使用系统调用fork( )创建两个子进程。 代码: #include main( ) { int p1,p2; while((p1=fork( ))= = -1); /*创建子进程p1*/ if (p1= =0) putchar('b'); else { while((p2=fork( ))= = -1); /*创建子进程p2*/ if(p2= =0) putchar('c'); else putchar('a'); } } 运行结果:

bca,bac, abc ,……都有可能。 2、修改上述程序,每一个进程循环显示一句话。子进程显示'daughter …'及'son ……',父进程显示'parent ……',观察结果,分析原因。 代码:#include main( ) { int p1,p2,i; while((p1=fork( ))= = -1); /*创建子进程p1*/ if (p1= =0) for(i=0;i<10;i++) printf("daughter %d\n",i); else { 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); } } 结果:

操作系统实验报告进程调度

五邑大学实验报告 操作系统课程 2016~2017年度第1学期实验题目:进程调度 院系:计算机学院 班级: 140801 学号: 3114002472 姓名:黄凯鑫 任课教师:白明成绩评定:

实验二题目:进程调度 完成日期:2016年12 月11 日 1、实验目的 (1)设计一个有n个进程工行的进程调度程序。每个进程由一个进程控制块(PCB)表示。进程控制块通常应包含下述信息:进程名、进程优先数、进程需要运行的时间、占用CPU的时间以及进程的状态等,且可按调度算法的不同而增删。(2)调度程序应包含2~3种不同的调度算法,运行时可任意选一种,以利于各种算法的分析比较。 (3)系统应能显示或打印各进程状态和参数的变化情况,便于观察诸进程的调度过程 2、实验内容 (1)编制和调试示例给出的进程调度程序,并使其投入运行。 (2)自行设计或改写一个进程调度程序,在相应机器上调试和运行该程序,其功能应该不亚于示例。 (3)直观地评测各种调度算法的性能。 3、算法设计 算法: (1) 优先数法。 进程就绪链按优先数大小从高到低排列,链首进程首先投入运行。每过一个时间片,运行进程所需运行的时间片数减1,说明它已运行了一个时间片,优先数也减3,理由是该进程如果在一个时间片中完成不了,优先级应该降低一级。接着比较现行进程和就绪链链首进程的优先数,如果仍是现行进程高或者相同,就让现行进程继续进行,否则,调度就绪链链首进程投入运行。原运行进程再按其优先数大小插入就绪链,且改变它们对应的进程状态,直至所有进程都运行完各自的时间片数。 (2) 简单轮转法。 进程就绪链按各进程进入的先后次序排列,进程每次占用处理机的轮转时间按其重要程度登入进程控制块中的轮转时间片数记录项(相当于优先数法的优先数记录项位置)。每过一个时间片,运行进程占用处理机的时间片数加1,然后比较占用处理机的时间片数是否与该进程的轮转时间片数相等,若相等说明已到达轮转时间,应将现运行进程排到就绪链末尾,调度链首进程占用处理机,且改变它们的进程状态,直至所有进程完成各自的时间片。 实验源代码: #include #include #include #include

操作系统:进程调度实验报告

设计性实验报告 一、实验目的 1.在Linux下用C语言编程模拟优先级进程调度算法和时间片轮转进程调度算法。 2.为了清楚地观察每个进程的调度过程,每次调度程序应将各个进程的情况显示出来。 二、总体设计(设计原理、设计方案及流程等) 1、优先级进程调度算法 采用动态优先级进程调度算法,其基本思想是每次调度总是把处理机分配给优先级最高的进程,同时在运行过程中进程的优先级随着执行或等待的时间而降低或增加。 在该实验中每个进程用一个进程控制块( PCB)表示。进程控制块包含如下信息:进程号,进程名、优先数、需要运行时间、已用CPU时间、进程状态。进程号,名字,优先数,运行的时间,事先人为地指定。每个进程的状态可以是就绪,执行,阻塞或完成4种状态之一。 就绪进程获得 CPU后都只能运行一个时间片。用已占用CPU时间加1来表示。就绪队列中的进程在等待一个时间片后,优先级增1。如果运行一个时间片后,进程的已占用 CPU时间已达到所需要的运行时间,则撤消该进程,如果运行一个时间片后进程的已占用CPU时间还未达所需要的运行时间,也就是进程还需要继续运行,此时将进程的优先级减1,然后把它插入就绪队列等待CPU。 2、时间片轮转调度算法 采用简单时间片轮转调度算法,其基本思想是:所有就绪进程按 FCFS排成一个队列,总是把处理机分配给队首的进程,各进程占用CPU的时间片相同。如果运行进程用完它的时间片后还未完成,就把它送回到就绪队列的末尾,把处理机重新分配给队首的进程。直至所有的进程运行完毕。 三、实验步骤(包括主要步骤、代码分析等) 1.打开linux虚拟机,用vim编辑器打开代码进行修改和调整。用gcc编译器进行编译编译运行首先运行优先级算法,如图所示:

进程同步实验报告

实验三进程的同步 一、实验目的 1、了解进程同步和互斥的概念及实现方法; 2、更深一步的了解fork()的系统调用方式。 二、实验内容 1、预习操作系统进程同步的概念及实现方法。 2、编写一段源程序,用系统调用fork()创建两个子进程,当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符“a”;子进程分别显示字符“b”和字符“c”。程序的输出是什么?分析原因。 3、阅读模拟火车站售票系统和实现进程的管道通信源代码,查阅有关进程创建、进程互斥、进程同步的系统功能调用或API,简要解释例程中用到的系统功能或API的用法,并编辑、编译、运行程序,记录程序的运行结果,尝试给出合理的解释。 4、(选做)修改问题2的代码,使得父子按顺序显示字符“a”;“b”、“c”编辑、编译、运行。记录程序运行结果。 三、设计思想 1、程序框架 (1)创建两个子进程:(2)售票系统:

(3)管道通信: 先创建子进程,然后对内容加锁,将输出语句存入缓存,并让子进程自己进入睡眠,等待别的进程将其唤醒,最后解锁;第二个子进程也执行这样的过程。父进程等待子进程后读内容并输出。 (4)修改程序(1):在子进程的输出语句前加上sleep()语句,即等待父进程执行完以后再输出。 2、用到的文件系统调用函数 (1)创建两个子进程:fork() (2)售票系统:DWORD WINAPI Fun1Proc(LPVOID lpPartameter); CreateThread(NULL,0,Fun1Proc,NULL,0,NULL); CloseHandle(hThread1); (HANDLE)CreateMutex(NULL,FALSE,NULL); Sleep(4000)(sleep调用进程进入睡眠状态(封锁), 直到被唤醒); WaitForSingleObject(hMutex,INFINITE); ReleaseMutex(hMutex); (3)管道通信:pipe(fd),fd: int fd[2],其中: fd[0] 、fd[1]文件描述符(读、写); lockf( fd,function,byte)(fd: 文件描述符;function: 1: 锁定 0:解锁;byte: 锁定的字节数,0: 从当前位置到文件尾); write(fd,buf,byte)、read(fd,buf,byte) (fd: 文件描述符;buf : 信息传送的源(目标)地址;byte: 传送的字节数); sleep(5); exit(0); read(fd[0],s,50) (4)修改程序(1):fork(); sleep(); 四、调试过程 1、测试数据设计 (1)创建两个子进程:

操作系统课程设计报告进程调度

前言操作系统(OperatingSystem,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。 操作系统是用户和计算机的接口,同时也是计算机硬件和其他软件的接口。操作系统的功能包括管理计算机系统的硬件、软件及数据资源,控制程序运行,改善人机界面,为其它应用软件提供支持,让计算机系统所有资源最大限度地发挥作用,提供各种形式的用户界面,使用户有一个好的工作环境,为其它软件的开发提供必要的服务和相应的接口等。实际上,用户是不用接触操作系统的,操作系统管理着计算机硬件资源,同时按照应用程序的资源请求,分配资源,如:划分CPU时间,内存空间的开辟,调用打印机等。 操作系统的主要功能是资源管理,程序控制和人机交互等。计算机系统的资源可分为设备资源和信息资源两大类。设备资源指的是组成计算机的硬件设备,如中央处理器,主存储器,磁盘存储器,打印机,磁带存储器,显示器,键盘输入设备和鼠标等。信息资源指的是存放于计算机内的各种数据,如系统软件和应用软件等。 操作系统位于底层硬件与用户之间,是两者沟通的桥梁。用户可以通过操作系统的用户界面,输入命令。操作系统则对命令进行解释,驱动硬件设备,实现用户要求。

本次课程设计我们将对上学期所学的知识进行系统的应用,而达到巩固知识的作用

目录 1问题概述.................................................................................................... 2需求分析.................................................................................................... 3概要设计.................................................................................................... 3.1主要功能................................................................................................. 3.2模块功能结构 ........................................................................................ 3.3软硬件环境............................................................................................. 3.4数据结构设计 ........................................................................................ 4详细设计.................................................................................................... 4.1“先来先服务(FCFS)调度算法” ....................................................... 4.2“短进程调度算法(SPF)”.................................................................. 4.3“高响应比优先调度算法”................................................................. 4.4“优先级调度(非抢占式)算法”.......................................................... 5系统测试及调试 ....................................................................................... 5.1测试......................................................................................................... 5.2调试过程中遇到的问题 ........................................................................ 6心得体会.................................................................................................... 7参考文献.................................................................................................... 8附录............................................................................................................

相关文档
最新文档