模拟进程创建、终止、阻塞、唤醒原语--附带注释

模拟进程创建、终止、阻塞、唤醒原语--附带注释
模拟进程创建、终止、阻塞、唤醒原语--附带注释

题目:计算机操作系统模拟

院系:信息学院

专业:计算机科学与技术

班级:2013级1班

辽宁大学

实验题目一:模拟进程创建、终止、阻塞、唤醒原语

一、题目类型:必做题目。

二、实验目的:通过设计并调试创建、终止、阻塞、唤醒原语功能,有助于对操作系统中进

程控制功能的理解,掌握操作系统模块的设计方法和工作原理。

三、实验环境:

1、硬件:pc 机及其兼容机。

2、软件:Windows XP ,Turbo C 或C++、VC++等。

四、实验内容:

1、设计创建、终止、阻塞、唤醒原语功能函数。

2、设计主函数,采用菜单结构(参见后面给出的流程图)。

3、设计“显示队列”函数,目的能将就绪、阻塞队列中的进程信息显示在屏幕上,以供

随时查看各队列中进程的变化情况。

五、实验要求:

1、进程PCB 中应包含以下内容: 进程名

优先级

运行时间

状态

指针

2、系统总体结构:

系统主菜单

1…创建

2…阻塞

3…唤醒

4…终止

5…显示

0…退出

请输入您需要的功能(0-5):

进程名:用P1,P2标识。 优先级:为实验题目二做准备。 运行时间:为实验题目二做准备。 状态为:就绪、运行、阻塞,三种基本状态。 指针:指向下一个PCB 。

输入选择=? 创建 阻塞 唤醒 终止 显示 退出 开始 结束 0 1 2 3 4 5

另加实验二:模拟进程调度功能

/*PCB的组织方式:线性方式*/

#include "stdio.h"

#include "string.h"

#include "windows.h"

typedef struct

{

char p_name[10];//进程名

char p_pro;//优先级1-3个级别1.低2.中3.高

char p_status;//运行状态0.阻塞1.运行2.就绪

int p_runtime;//运行时间

int p_wait;//等待时间

struct PCB *next;//指针,指向下一个PCB

}PCB;

void Run(PCB *head)//任何时候保证程序里面至少有一个进程在运行

{

PCB *p=head->next;//直接将P指向第一个结点

while(p!=NULL)//遍历一遍链表,将所有就绪队列等待时间加1,防止前面结点因为唤醒又进入运行状态

{

if(p->p_status=='2')

{

p->p_wait++;//将等待时间加1

}

p=p->next;

}

p=head->next;//将P重置在第一个结点

while(p->p_status!='1' && p!=NULL)

{

if(p->p_status=='2')//防止线性链表前面的结点因为从阻塞唤醒后又进入运行状态

{

p->p_status='1';

p->p_wait=2;

}

if(p->p_status=='1')//对上一个if进行处理

{

return;

}

p=p->next;

}

return;

}

void Insert(PCB *head,PCB *temp)//插入链表函数{

PCB *p;

p=head;//将头结点保存起来

while(p->next!=NULL)

{

p=p->next;

}

p->next=temp;

temp->next=NULL;

}

int Check(PCB *head,PCB *temp)

{

PCB *p=head;

while(p->next)

{

p=p->next;

if(strcmp(p->p_name,temp->p_name)==0)

return 0;

}

return 1;

}

void Create(PCB *head)//创建进程函数

{

int chk=0;

PCB *temp;//申请临时存储空间,方便接受数据temp=(PCB *)malloc(sizeof(PCB));

system("cls");

printf("\t----------进程创建-----------\n");

printf("\n请输入进程名:");

scanf("%s",temp->p_name);

getchar();

/*检查进程名称,如果相同则返回主界面*/

chk=Check(head,temp);

if(chk==0)

{

printf("进程队列已有该名称进程,创建失败,即将返回主界面.\n");

system("pause");

return;

}

printf("\n请输入进程优先级(1.低2.中3.高):");

scanf("%c",&temp->p_pro);

getchar();

printf("\n请输入进程运行时间:");

scanf("%d",&temp->p_runtime);

getchar();

temp->p_status='2';

temp->p_wait=2;

/*

printf("\n请输入该进程状态:");

scanf("%c",&temp->p_status);

getchar();

*/

Insert(head,temp);//调用插入链表函数

system("pause");

Run(head);

}

void Show(PCB *head)//显示队列进程函数

{

int ready=1,block=1,run=1;

PCB *p=head,*q;

system("cls");

if(p->next==NULL)

{

printf("目前系统中没有进程.请返回主界面创建进程!\n");

system("pause");

return;

}

/*列出就绪队列列表*/

q=p->next;//指针指到第一个结点

printf("\n--就绪队列--\n");

while(q)

{

if(q->p_status=='2')

{

printf("%d)进程名:%s",ready++,q->p_name);

printf(" 进程优先级:%c",q->p_pro);

printf(" 进程运行时间:%d",q->p_runtime);

printf(" 进程等待时间:%d\n",q->p_wait);

}

q=q->next;

}

printf("\n");

/*列出运行队列列表*/

q=p->next;//将指针重置到第一个结点

printf("\n--运行队列--\n");

while(q)

{

if(q->p_status=='1')

{

printf("%d)进程名:%s",run++,q->p_name);

printf(" 进程优先级:%c",q->p_pro);

printf(" 进程运行时间:%d\n",q->p_runtime);

//printf(" 进程已运行时间:");

}

q=q->next;

}

printf("\n");

/*列出阻塞队列列表*/

q=p->next;

printf("\n--阻塞队列--\n");

while(q)

{

if(q->p_status=='0')

{

printf("%d)进程名:%s",block++,q->p_name);

printf(" 进程优先级:%c",q->p_pro);

printf(" 进程运行时间:%d",q->p_runtime);

printf(" 进程等待时间:%d\n",q->p_wait);

}

q=q->next;

}

printf("\n");

printf("进程显示完毕.");

system("pause");

}

void Block(PCB *head)//阻塞进程函数

char name[10];

PCB *p=head;//保护头结点

system("cls");

printf("\t----------阻塞进程-----------\n");

printf("\n输入你要放入阻塞队列的进程名称:");

scanf("%s",name);

getchar();

p=p->next;

while(p)

{

if(strcmp(p->p_name,name)==0)

break;

p=p->next;

}

if(!p)

{

printf("\n队列中无该进程.\n");

system("pause");

}

if(p->p_status=='1')

{

printf("\n该进程正在运行.\n");

printf("\n将该进程放入阻塞队列\n\n");

system("pause");

p->p_status='0';

printf("\n该进程已经被放入阻塞队列\n");

system("pause");

}

else

{

if(p->p_status=='0')

{

printf("\n该进程已在阻塞队列中.\n");

system("pause");

}

if(p->p_status=='2')

{

printf("\n该进程正在就绪队列中.不可放入阻塞队列\n");

system("pause");

}

}

Run(head);

void Delete(PCB *head,PCB *temp)/*head为链表头结点,temp为将要删除的结点*/ {

PCB *p=head,*q=temp->next;

while(p->next!=temp)

{

p=p->next;

}

p->next=q;

free(temp);

}

void Stop(PCB *head)//终止进程函数

{

char name[10];

PCB *p=head;

system("cls");

printf("\t----------终止进程-----------\n");

printf("\n输入你要终止的进程名称:");

scanf("%s",name);

getchar();

p=p->next;

while(p)

{

if(strcmp(p->p_name,name)==0)

break;

p=p->next;

}

if(!p)

{

printf("进程队列中无该进程.\n");

system("pause");

}

Delete(head,p);//调用删除结点函数

printf("\n进程终止成功\n");

system("pause");

Run(head);

}

void Wakeup(PCB *head)//唤醒进程函数

{

char name[10];

PCB *p=head;//保护头结点

system("cls");

printf("\t----------唤醒进程-----------\n");

printf("\n输入你要唤醒的进程名称:");

scanf("%s",name);

getchar();

p=p->next;

while(p)

{

if(strcmp(p->p_name,name)==0)

break;

p=p->next;

}

if(!p)

{

printf("阻塞队列中无该进程名称.\n");

system("pause");

return;

}

if(p->p_status=='0')

{

printf("该进程正在阻塞队列中.\n");

printf("\n将该进程放回就绪队列中\n");

system("pause");

p->p_status='2';

p->p_wait=2;

printf("\n该进程已经被放入就绪队列中\n");

system("pause");

}

else

{

if(p->p_status=='1')

{

printf("\n该进程正在运行.不可唤醒\n");

system("pause");

}

if(p->p_status=='2')

{

printf("\n该进程正在就绪队列中.不可唤醒\n");

system("pause");

}

}

}

void prior_Sche(PCB *head)

{

PCB *p=head->next,*temp=head->next;//保护头结点p,temp为将要删除的结点

system("cls");

if(p==NULL)

{

printf("目前系统中没有进程.请返回主界面创建进程!\n");

system("pause");

return;

}

while(p)

{

if(temp->p_pro < p->p_pro)

{

temp=p;//将此时优先级最大的结点地址给临时空间保存

}

p=p->next;

}

printf("\n\n");

printf("经过调度,此时程序中运行的进程是:\n");

printf("\n 进程名:%s",temp->p_name);

printf(" 进程优先级:%c",temp->p_pro);

printf(" 进程运行时间:%d\n",temp->p_runtime);

printf("\n该进程PCB显示完毕!\n");

system("pause");

Delete(head,temp);

Run(head);

}

void time_Sche(PCB *head)

{

int ready=1;

PCB *p=head,*q,*temp=NULL;//保护头结点p,temp为时间片用完将要删除时,保护的临时结点

system("cls");

if(p->next==NULL)

{

printf("目前系统中没有进程.请返回主界面创建进程!\n");

system("pause");

return;

}

/*列出就绪队列列表*/

q=p->next;//指针指到第一个结点

printf("\n--就绪队列--\n");

while(q)

{

if(q->p_status=='2')

{

printf("%d)进程名:%s",ready++,q->p_name);

printf(" 进程优先级:%c",q->p_pro);

printf(" 进程运行时间:%d\n",q->p_runtime--);

//printf(" 进程已运行时间:");

}

if(q->p_runtime==0)

{

temp=q;

}

q=q->next;

}

if(temp!=NULL)

{

Delete(head,temp);

}

printf("\n");

system("pause");

}

void Scheduling(PCB *head)//调度程序

{

while(1)

{

int choose;

system("cls");

printf("1.优先级调度\n");

printf("2.时间片调度\n");

printf("0.返回主菜单\n");

printf("\n请输入选项:");

scanf("%d",&choose);

getchar();

switch(choose)

{

case 1:prior_Sche(head);break;

case 2:time_Sche(head);break;

case 0:{ system("cls"); return;}break;

default:{printf("请输入0-2的数字\n");system("pause");system("cls");}break;

}

}

}

void Menu()

{

printf("\t----------模拟系统进程创建、终止、阻塞、唤醒-----------");

printf("\n");

printf("1.进程创建\n");

printf("2.阻塞进程\n");

printf("3.唤醒进程\n");

printf("4.终止进程\n");

printf("5.显示进程\n");

printf("6.调度进程\n");

printf("0.退出\n");

printf("\n\n");

printf("\t------------------------完美分割线---------------------\n");

printf("功能介绍:\n");

printf("阻塞:运行->阻塞;处于运行之外状态,给出提示信息;若进程不存在也给出其他信息\n");

printf("唤醒:根据输入的进程名结束进程;不管该进程处于什么状态都将结束;若输入进程不存在,会给出相应信息\n");

printf("终止:根据输入的进程名结束进程;不管该进程处于什么状态都将结束;若输入进程不存在,会给出相应信息\n");

printf("显示:分别显示就绪队列、阻塞队列、正在运行队列\n\n\n");

}

main()

{

PCB *head;

head=(PCB *)malloc(sizeof(PCB));//头结点为空

head->next=NULL;

if(!head)

{

printf("程序有误.即将退出");

system("pause");

exit(0);

}

while(1)

{

int choose;

system("cls");

Menu();

printf("请选择使用功能:");

scanf("%d",&choose);

switch(choose)

{

case 1:Create(head);break;

case 2:Block(head);break;

case 3:Wakeup(head);break;

case 4:Stop(head);break;

case 5:Show(head);break;

case 6:Scheduling(head);break;

case 0:exit(0);break;

default:{printf("请输入0-5的数字\n");system("pause");system("cls");}break;//输入'.'会造成bug.

}

}

}

/*作者:辰辰辽宁大学*/

计算机操作习题习题集

计算机操作习题习题集 1、在下列系统中,(B)是实时系统。 A、计算机激光照排系统 B、航空定票系统 C、办公自动化系统 D、计算机辅助设计系统 2、在单一处理器上执行程序,多道程序的执行是在(B)进行的。 A、同一时刻 B、同一时间间隔内 C、某一固定时间 D、某一固定时间间隔内 3、如果在设备处理时设置I/O进程,则不需要I/O进程工作时,I/O进程处于_挂起_状态。 4、根据服务对象不同,常用的处理机OS可以分为如下三种类型: 允许多个用户在其终端上同时交互地使用计算机的OS称为分时系统,它通常采用时间片轮转策略为用户服务; 允许用户把若干个作业提交计算机系统集中处理的OS称为多道批处理,衡量这种系统性能的一个主要指标是系统的系统吞吐量; 在实时操作系统的控制下,计算机系统能及时处理由过程控制反馈的数据并作响应。设计这种系统时,应首先考虑系统的实时性与可靠性。 5、(C)不是分时系统的基本特征: A、同时性 B、独立性 C、实时性 D、交互性 6、计算机操作系统的功能是(D)。 A.把源程序代码转换为标准代码 B.实现计算机用户之间的相互交流 C.完成计算机硬件与软件之间的转换 D.控制、管理计算机系统的资源和程序的执行 7、在分时系统中。时间片一定时,(B),响应时间越长。 A.内存越多 B.用户数越多 C.内存越少 D.用户数越少 8、下面关于操作系统的叙述中正确的是(A)。 A.批处理作业必须具有作业控制信息。 B.分时系统不一定都具有人机交互功能。 C.从响应时间的角度看,实时系统与分时系统差不多。 D.由于采用了分时技术,用户可以独占计算机的资源。 9、分时操作系统通常采用(B)策略为用户服务。 A.可靠性和灵活性 B.时间片轮转 C.时间片加权分配 D.短作业优先 10、在(A)操作系统控制下,计算机系统能及时处理由过程控制反馈的数据并作出响应。 A.实时 B.分时 C.分布式 D.单用户 11、下面6个系统中,必须是实时操作系统的有(B)个。 计算机辅助设计系统航空订票系统过程控制系统机器翻译系统 办公自动化系统计算机激光照排系统 A.1 B.2 C.3 D.4 12、设计实时操作系统时,首先应考虑系统的(B)。 A.可靠性和灵活性 B.实时性和可靠性 C.灵活性和可靠性 D.优良性和分配性

第二章进程管理答案

第二章进程管理 一、单项选择题 1、顺序程序和并发程序的执行相比,()。 A.基本相同 B. 有点不同 C.并发程序执行总体上执行时间快 D.顺序程序执行总体上执行时间快 2、在单一处理机上,将执行时间有重叠的几个程序称为()。 A.顺序程序 B. 多道程序 C.并发程序 D. 并行程序 3、进程和程序的本质区别是()。 A.存储在内存和外存 B.顺序和非顺序执行机器指令 C.分时使用和独占使用计算机资源 D.动态和静态特征 4、在下列特性中,不是进程的特性的是()。 A. 异步性 B. 并发性 C. 静态性 D. 动态性 5 A 6 A. 7 A. 8 A. 9 A. 10 A. 11 A. 12。 A. 13 A. 14 A. 15 A. 16、在操作系统中,对信号量S的P原语操作定义中,使进程进入相应阻塞队列等待的条件是()。 A. S>0 B. S=0 C. S<0 D. S≠0 17、信号量S的初值为8,在S上执行了10次P操作,6次V操作后,S的值为()。 A.10 B.8 C.6 D.4 18、在进程通信中,使用信箱方式交换信息的是()。 A.低级通信B.高级通信C.共享存储器通信D.管道通信 19.( )必定会引起进程切换。A.一个进程被创建后进入就绪态B.一个进程从运行态变成等待态c.一个进程从运行态变成就绪态 D.一个进程从等待态变成就绪态 20、操作系统使用( )机制使计算机系统能实现进程并发执行,保证系统正常工作。 A.中断B.查询c.同步D互斥 21.对于一个单处理器系统来说,允许若干进程同时执行,轮流占用处理器.称它们为()的。 A.顺序执行 B.同时执行c.并行执行D.并发执行

进程创建与撤消

实验一:进程创建与撤消(模拟) 一、实验目的 1、加深对进程概念的理解和进程创建与撤消算法; 2、进一步认识并发执行的实质。 二、实验内容 本实验完成如下三个层次的任务: (1)系统级—以普通用户身份认识windows的进程管理。通过windows 的“任务管理器”观察进程的状态,进行进程的创建、切换和撤销。 (2)语言级—以普通程序员身份认识高级语言VC++/Java/C#的进程创建与撤销工具。 (3)模拟级—以OS设计师身份编程模拟实现进程创建与撤销功能,并在屏幕上观察进程活动的结果。 三、实验步骤 1、windows的进程管理 当前状态 切换前 切换后 撤销 2、VC++进程创建与撤销工具 3、进程创建与撤销的模拟实现 (1)总体设计: ①数据结构定义: 结构体PCB:进程名、ID、运行时间、优先级等,队列的排序按创建时间或优先级排序。PCB空间—结构体PCB数组 就绪队列指针 空队列指针 ②函数 CREATE()—进程创建:从PCB空间申请一个空PCB,填入进程参数,插入就绪队列; KILL()—进程终止:将指定的就绪进程移出就绪队列,插入空队列; 就绪队列输出函数Display()—输出就绪队列中的进程信息,以便观察创建或撤消活动的结果; 主函数Main()—功能选择、输入新进程参数、调用创建函数、输出就

绪队列;输入进程名称、调用终止函数、输出就绪队列; ③主界面设计:进程创建、进程撤销、就绪队列显示菜单;数据输入和就绪队列显示区。 ④功能测试:从显示出的就绪队列状态,查看操作的正确与否。 (2)详细设计: ①数据结构定义: 结构体PCB: struct PCB { char NAME[10]; long ID; float TIME; int PRIORITY; };PCB pcb[100]; ②函数设计 给出CREATE()、KILL()、Display()、Main()的流程图描述; 以CREATE()为例如下: (3)调试与测试:列出你的测试结果,包括输入和输出。 四、实验总结 通过这次试验了解到了进城创建与撤销,并对以前的知识进行了复习,通过使用结构体和指针,实行进程的创建与撤销,我的程序设计能力得到

操作系统习题及答案二学习资料

习题二处理器管理 一、单项选择题 1、操作系统中的作业管理是一种()。 A.宏观的高级管理 B.宏观的低级管理 C.系统刚开始加电 D.初始化引导完成 2、进程和程序的本质区别是(). A.存储在内存和外存 B.顺序和非顺序执行机器指今 C.分时使用和独占使用计算机资源 D.动态和静态特征 3、处于后备状态的作业存放在()中。 A.外存 B.内存 C.A和B D.扩展内存 4、在操作系统中,作业处于()时,已处于进程的管理之下。 A.后备 B.阻塞 C.执行 D.完成 5、在操作系统中,JCB是指()。 A.作业控制块 B.进程控制块 C.文件控制块 D.程序控制块 6、作业调度的关键在于()。 A.选择恰当的进程管理程序 B.选择恰当的作业调度算法 C.用户作业准备充分 D.有一个较好的操作环境 7、下列作业调度算法中,最短的作业平均周转时间是()。 A.先来先服务法 B. 短作业优先法 C. 优先数法 D. 时间片轮转法 8、按照作业到达的先后次序调度作业,排队等待时间最长的作业被优先调度,这是指() 调度算法。 A.先来先服务法 B. 短作业优先法 C.时间片轮转法 D. 优先级法 9、在批处理系统中,周转时间是()。 A.作业运行时间 B.作业等待时间和运行时间之和 C.作业的相对等待时间 D.作业被调度进入内存到运行完毕的时间 10、为了对紧急进程或重要进程进行调度,调度算法应采用()。 A.先来先服务法 B. 优先级法 C.短作业优先法 D. 时间片轮转法 11、操作系统中,()负责对进程进行调度。 A.处理机管理 B. 作业管理 C.高级调度管理 D. 存储和设备管理 12、一个进程被唤醒意味着()。 A.该进程重新占有了CPU B.进程状态变为就绪 C.它的优先权变为最大 D.其PCB移至就绪队列的队首 13、当作业进入完成状态,操作系统(). A.将删除该作业并收回其所占资源,同时输出结果 B.将该作业的控制块从当前作业队列中删除,收回其所占资源,并输出结果

进程创建与撤销

实验一:进程创建与撤消 一、实验目的 1、加深对进程概念的理解和进程创建与撤消算法; 2、进一步认识并发执行的实质。 二、实验内容 本实验完成如下三个层次的任务: (1)系统级—以普通用户身份认识windows的进程管理。通过windows的“任务管理器”观察进程的状态,进行进程的创建、切换和撤销。 (2)语言级—以普通程序员身份认识高级语言VC++/Java/C#的进程创建与撤销工具。 (3)模拟级—以OS设计师身份编程模拟实现进程创建与撤销功能,并在屏幕上观察进程活动的结果。 三、实验步骤 1、windows的进程管理 2、VC++/Java/C#的进程创建与撤销工具 3、进程创建与撤销的模拟实现 (1)总体设计: ①数据结构定义: 结构体PCB:进程名、ID、运行时间、优先级等,队列的排序按创建时间或优先级排序。PCB空间—结构体PCB数组 就绪队列指针 空队列指针 ②函数 CREATE()—进程创建:从PCB空间申请一个空PCB,填入进程参数,插入就绪队列;KILL()—进程终止:将指定的就绪进程移出就绪队列,插入空队列; 就绪队列输出函数Display()—输出就绪队列中的进程信息,以观察创建或撤消活动的结果;

主函数M ain()—功能选择、输入新进程参数、调用创建函数、输出就绪队列;输入进程名称、调用终止函数、输出就绪队列; ③主界面设计:进程创建、进程撤销、就绪队列显示菜单;数据输入和就绪队列显示区。 ④功能测试:从显示出的就绪队列状态,查看操作的正确与否。 (2)详细设计: ①数据结构定义: 结构体PCB: PCB空间 就绪队列指针 空队列指针 struct PCB { char NAME[20]; long ID; float TIME; int PRIORITY; }; PCB pcb[10]; typedef struct QNode { int data; struct QNode*next; }QNode,*QueuePtr; typedef struct { QueuePtr front; QueuePtr rear; }LinkQueue;LinkQueue Ready,Empty; ②函数设计 给出create()、destroy()、Display()、M ain()的流程图描述; create()流程图: destroy()流程图:

第二章-操作系统进程(练习题答案)

第二章进程管理 1.操作系统主要是对计算机系统全部 (1) 进行管理,以方便用户、提高计算机使 用效率的一种系统软件。它的主要功能有:处理机管理、存储管理、文件管理、 (2) 管 理和设备管理等。Windows和Unix是最常用的两类操作系统。前者是一个具有图形界面的 窗口式的 (3) 系统软件,后者是一个基本上采用 (4) 语言编制而成的 的系统软件。在 (5) 操作系统控制下,计算机能及时处理由过程控制反馈的信息 并作出响应。 供选答案: (1): A. 应用软件 B. 系统软硬件 C. 资源 D. 设备 (2): A. 数据 B. 作业 C. 中断 D. I/O (3): A. 分时 B. 多任务 C. 多用户 D. 实时 (4): A. PASCAL B. 宏 C. 汇编 D. C (5): A. 网络 B. 分时 C. 批处理 D. 实时 答案:CBBDD 2.操作系统是对计算机资源进行的 (1) 系统软件,是 (2) 的接口。 在处理机管理中,进程是一个重要的概念,它由程序块、 (3) 和数据块三部 分组成,它有3种基本状态,不可能发生的状态转换是 (4) 。 虚拟存储器的作用是允许程序直接访问比内存更大的地址空间,它通常使用 (5) 作为它的一个主要组成部分。 供选答案: (1): A. 输入和输出 B. 键盘操作 C. 管理和控制 D. 汇编和执行 (2): A. 软件和硬件 B. 主机和外设 C. 高级语言和机器语言 D. 用户和计算机 (3): A. 进程控制块 B. 作业控制块 C. 文件控制块 D. 设备控制块 (4): A. 运行态转换为就绪态 B. 就绪态转换为运行态 C. 运行态转换为等待态 D. 等待态转换为运行态 (5): A. 软盘 B. 硬盘 C. CDROM D. 寄存器 答案:CDADB 3.在计算机系统中,允许多个程序同时进入内存并运行,这种方法称为 D。 A. Spodling技术 B. 虚拟存储技术 C. 缓冲技术 D. 多道程序设计技术 4.分时系统追求的目标是 C。 A. 高吞吐率 B. 充分利用内存 C. 快速响应 D. 减少系统开销 5.引入多道程序的目的是 D。

进程创建和撤销

操作系统 实 验 报 告 实验题目:进程的创建与撤销指导老师:杜俊俐 专业班级:软工086班 学号:200877054611 姓名:胡同涛 中原工学院?软件学院

实验一:进程创建与撤消 一.实验目的 (1)加深对进程概念的理解和进程创建与撤消算法; (2)进一步认识并发执行的实质。 二.实验属性 该实验为验证性+设计性实验。 三.实验仪器设备及器材 普通PC386以上微机 四.实验要求 本实验要求2学时完成。 本实验要求完成如下三个层次的任务: (1)系统级—以普通用户身份认识windows的进程管理。通过windows的“任务管理器”观察进程的状态,进行进程的创建、切换和撤销。 (2)语言级—以普通程序员身份认识高级语言VC++/Java/C#的进程创建与撤销工具。 (3)模拟级—以OS设计师身份编程模拟实现进程创建与撤销功能,并在屏幕上观察进程活动的结果。 实验前应复习实验中所涉及的理论知识和算法,针对实验要求完成基本代码编写并完成预习报告;实验中认真调试所编代码并进行必要的测试、记录并分析实验结果。实验后认真书写符合规范格式的实验报告(参见附录A),并要求用正规的实验报告纸和封面装订整齐,按时上交。

五.实验提示--模拟级编程 5.1数据结构定义 #define OK 1 成功返回OK定义为1 #define EVERFLOW -1 越界用-1 #define PCBSIZE 10 //空闲队列初始数组空间 #define NULL 0 //空定义为0 typedef struct PCB //定义进程结构体 { int id; //进程的序号 int priority; //进程的优先级 struct PCB *next; //进程指向下一个节点 }PCB,*PCBList; PCB pcb[PCBSIZE];//创建pcb块,初始空间大小为10 PCBList nullPcb;//空闲队列 PCBList readyPcb;//就绪队列 PCBList readyPcbtail;//就绪队列队尾指针 5.2函数 InitPcb(PCBList &nullPcb)——初始化空闲队列 Create(PCBList &nullPcb)——//创建一个pcb进程从PCB空间申请一个空PCB,填入进程参数,创建一个pcb进程。 InsertReadyPcb(PCBList &readyPcb,PCBList &pcb)——将刚刚创建的进程插入到有序的就绪队列中 Delete(int id,PCBList &readyPcb,PCBList &nullPcb)——用于销毁一个pcb进程,指定销毁队列的序列号,销毁该进程,并将它插入到空闲队列中 PrintPCB(PCBList &readyPcb)——就绪队列输出函数—输出就绪队列中的进程信息,以便观察创建或撤消活动的结果 主函数—功能选择,1.创建进程2.销毁进程3.输出就绪队列4.退出系统

操作系统教程习题答案

《操作系统教程》习题答案

习题1 1.单项选择题 (1)大中小型计算机是以为中心的计算机系统。 A、CPU B、存储器 C、系统总线 D、通道 (2)以下关于操作系统的说法正确的是。 A、批处理系统是实现人机交互的系统 B、批处理系统具有批处理功能,但不具有交互能力 C、分时系统是实现自动控制,无须人为干预的系统 D、分时系统即具有分时交互能力,又具有批处理能力 (3)操作系统的职能是管理软硬件资源、合理地组织计算机工作流程和。 A、为用户提供良好的工作环境和接口 B、对用户的命令作出快速响应 C、作为服务机构向其它站点提供优质服务 D、防止有人以非法手段进入系统 (4)设计实时操作系统时,首先应考虑系统的。 A、可靠性和灵活性 B、实时性和可靠性 C、优良性和分配性 D、灵活性和分配性 (5)多道程序设计是指。 A、在分布式系统中同一时刻运行多个程序 B、在一台处理器上并行运行多个程序 C、在实时系统中并发运行多个程序 D、在一台处理器上并发运行多个程序 (6)以下关于并发性和并行性的说法正确的是。 A、并发性是指两个及多个事件在同一时刻发生 B、并发性是指两个及多个事件在同一时间间隔内发生 C、并行性是指两个及多个事件在同一时间间隔内发生 D、并发性是指进程,并行性是指程序 (1)B (2)B (3)A (4)B (5)D (6)B 2.填空题 (1)微机是以总线为纽带构成的计算机系统。 (2)在批处理兼分时系统中,往往把由分时系统控制的作业称为前台作业,把由批处理系统控制的作业称为后台作业。 (3)在分时系统中,若时间片长度一定,则用户数越多,系统响应时间越慢。 (4)分布式操作系统能使系统中若干台计算机协同完成一个共同的任务,分解问题成为子计算并使之在系统中各台计算机上并行执行,以充分利用各计算机的优势。 (5)用户通过网络操作系统可以网络通信、资源共享,从而大大扩展了计算机的应用范围。 3.简答题 (1)什么是操作系统?现代操作系统的基本特征是什么?并发性 (2)什么是批处理系统,衡量批处理系统好坏的主要指标是什么?及时性 (3)试述分时系统的原理及其特性。时间片原则交互性同时性独立性及时性

进程管理习题及答案

进程管理习题答案 一.选择题 1.在进程管理中,当时进程从阻塞状态变为就绪状态、 A、进程被进程调度程序选中 B.等待某一事件 C.等待的事件发生 D.时间片用完 答:C 2.分配到必要的资源并获得处理机时的进程状态就是。 A.就绪状态 B.执行状态 C.阻塞状态 D.撤消状态 答:B 3.P、V操作就是。 A.两条低级进程通信原语 B.两组不同的机器指令 C.两条系统调用命令 D.两条高级进程通信原语 答:A 4.对进程的管理与控制使用。 A.指令 B.原语 C.信号量 D.信箱通信 答:B 5.进程的并发执行就是指若干个进程。 A.同时执行 B.在执行的时间上就是重叠的 C.在执行的时间上就是不可重叠的 D.共享系统资源 答:B 6.若P、V操作的信号量S初值为2,当前值为-1,则表示有等待进程。 A.0个 B.1个 C .2个 D.3个 答:B 7.进程的三个基本状态在一定条件下可以相互转化,进程由就绪状态变为运行状态的条件就是① ;由运行状态变为阻塞状态的条件就是②。 A.时间片用完 B.等待某事件发生 C.等待的某事件己发生 D.被进程调度程序选中 答,①D ②B 8.下列的进程状态变化中, 变化就是不可能发生的。 A.运行一就绪 B.运行一等待 C.等待一运行 D.等待一就绪 答:C 9.一个运行的进程用完了分配给它的时间片后,它的状态变为。 A.就绪 B.等待 C.运行 D.由用户自己确定

答:A 10.用P、V操作管理临界区时,信号量的初值应定义为。 A.一1 B.0 C.1 D.任意值 答:C 11.用V操作唤醒一个等待进程时,被唤醒进程的状态变为. A.等待 B.就绪 C.运行 D.完成 答:B 12.进程间的同步就是指进程间在逻辑上的相互关系。 A.联接 B.制约 C、继续 D.调用 答:B 13. 就是一种只能进行P操作与V操作的特殊变量。 A.调度 B.进程 C.同步 D.信号量 答:D 14.下面对进程的描述中,错误的就是。 A.进程就是动态的概念 B.进程执行需要处理机 C.进程就是有生命期的 D.进程就是指令的集合 答:D 15.下面的叙述中正确的就是。 A.操作系统的一个重要概念就是进程,因此不同进程所执行的代码也一定不同。 B.为了避免发生进程死锁,各进程只能逐个申请资源。 C.操作系统用PCB管理进程,用户进程可以从此PCB中读出与本身运行状况有关的信息 D.进程同步就是指某些进程之间在逻辑上的相互制约关系 答:D 16.进程控制就就是对系统中的进程实施有效的管理,通过使用、进程撤销、进程阻塞、进程唤醒等进程控制原语实现。 A.进程运行 B.进程管理 C.进程创建 D.进程同步 答:C 17.操作系统通过对进程进行管理。 A.JCB B.PCB C.DCT D.CHCT 答:B 18.用P、V操作可以解决互斥问题。 A.一切 B.某些 C.正确 D.错误 答:A 19.通常,用户进程被建立后, 。 A.便一直存在于系统中,直到被操作人员撤消

操作系统:进程创建与撤消

操作系统实验报告 试验一:进程创建与撤销 计科112康岩岩201100814220 2013/4/10

实验一:进程创建与撤消 一、实验目的 1、加深对进程概念的理解和进程创建与撤消算法; 2、进一步认识并发执行的实质。 二、实验内容 本实验完成如下三个层次的任务: (1)系统级—以普通用户身份认识windows的进程管理。通过windows的“任务管理器”观察进程的状态,进行进程的创建、切换和撤销。 (2)语言级—以普通程序员身份认识高级语言VC++/Java/C#的进程创建与撤销工具。 (3)模拟级—以OS设计师身份编程模拟实现进程创建与撤销功能,并在屏幕上观察进程活动的结果。 三、实验步骤

1、windows的进程管理 以下是win7的人物管理器,可以进行进程的查看、创建、撤销等操作,由于操作比较简单与琐碎,这里不再具体描述。

2、VC++/Java/C#的进程创建与撤销工具 对于本次试验,我使用C#进行进程创建、撤销等测试,具体内容在下面给出。 3、进程创建与撤销的模拟实现 (1)总体设计: 此次程序完全由c#实现,能够通过窗体界面详细地生动地显示进程的运行状态。下面一步一步的进行实现 ①数据定义: 类PCB的定义如下: class PCB{ string pcbName; //进程名 int pcbId; //ID long startTime; //开始时间 long pcbRuntime = 0; //运行时间 int pcbLeve; //线程优先级 } 对于所有的进程信息,用以下表储存: DictionaryThreadTable=new Dictionary(); 容器ThreadTable用来储存所有进程简直key 表示进程id,值为Hashtable,储存的为线程信息,

计算机操作系统_期末考试_复习习题集(含问题详解)

第一章引论 1、在下列系统中,(B)是实时系统。 A、计算机激光照排系统 B、航空定票系统 C、办公自动化系统 D、计算机辅助设计系统 2、在单一处理器上执行程序,多道程序的执行是在(B)进行的。 A、同一时刻 B、同一时间间隔内 C、某一固定时间 D、某一固定时间间隔内 3、如果在设备处理时设置I/O进程,则不需要I/O进程工作时,I/O进程处于_挂起_状态。 允许多个用户在其终端上同时交互地使用计算机的OS称为分时系统,它通常采用时间片 轮转策略为用户服务; 允许用户把若干个作业提交计算机系统集中处理的OS称为多道批处理,衡量这种系统性能 的一个主要指标是系统的系统吞吐量; 在实时操作系统的控制下,计算机系统能及时处理由过程控制反馈的数据并作响应。设计 这种系统时,应首先考虑系统的实时性与可靠性。 5、(C)不是分时系统的基本特征: A、同时性 B、独立性 C、实时性 D、交互性 6、计算机操作系统的功能是(D)。 A.把源程序代码转换为标准代码 B.实现计算机用户之间的相互交流 C.完成计算机硬件与软件之间的转换 D.控制、管理计算机系统的资源和程序的执行 7、在分时系统中。时间片一定时,(B),响应时间越长。 A.内存越多 B.用户数越多 C.内存越少

D.用户数越少 8、下面关于操作系统的叙述中正确的是(A)。 A.批处理作业必须具有作业控制信息。 B.分时系统不一定都具有人机交互功能。 C.从响应时间的角度看,实时系统与分时系统差不多。 D.由于采用了分时技术,用户可以独占计算机的资源。 9、分时操作系统通常采用(B)策略为用户服务。 A.可靠性和灵活性 B.时间片轮转 C.时间片加权分配 D.短作业优先 10、在(A)操作系统控制下,计算机系统能及时处理由过程控制反馈的数据并作出响应。 A.实时 B.分时 C.分布式 D.单用户 11、下面6个系统中,必须是实时操作系统的有(B)个。 计算机辅助设计系统 航空订票系统 过程控制系统 机器翻译系统 办公自动化系统 计算机激光照排系统 A.1 B.2

进程管理习题及答案

进程管理习题答案 一.选择题 1.在进程管理中,当时进程从阻塞状态变为就绪状态. A. 进程被进程调度程序选中B.等待某一事件 C.等待的事件发生D.时间片用完 答:C 2.分配到必要的资源并获得处理机时的进程状态是。 A.就绪状态B.执行状态 C.阻塞状态D.撤消状态 答:B 3.P、V操作是。 A.两条低级进程通信原语B.两组不同的机器指令 C.两条系统调用命令D.两条高级进程通信原语 答:A 4.对进程的管理和控制使用。 A.指令B.原语 C.信号量D.信箱通信 答:B 5.进程的并发执行是指若干个进程。 A.同时执行B.在执行的时间上是重叠的 C.在执行的时间上是不可重叠的D.共享系统资源 答:B 6.若P、V操作的信号量S初值为2,当前值为-1,则表示有等待进程。 A.0个B.1个 C .2个D.3个 答:B 7.进程的三个基本状态在一定条件下可以相互转化,进程由就绪状态变为运行状态的条件是①;由运行状态变为阻塞状态的条件是②。 A.时间片用完B.等待某事件发生 C.等待的某事件己发生D.被进程调度程序选中 答,①D ②B 8.下列的进程状态变化中,变化是不可能发生的。 A.运行一就绪B.运行一等待 C.等待一运行D.等待一就绪 答:C 9.一个运行的进程用完了分配给它的时间片后,它的状态变为。 A.就绪B.等待 C.运行D.由用户自己确定

答:A 10.用P、V操作管理临界区时,信号量的初值应定义为。 A.一1 B..1 D.任意值 答:C 11.用V操作唤醒一个等待进程时,被唤醒进程的状态变为. A.等待B.就绪C.运行D.完成 答:B 12.进程间的同步是指进程间在逻辑上的相互关系。 A.联接B.制约 C. 继续D.调用 答:B 13.是一种只能进行P操作和V操作的特殊变量。 A.调度B.进程C.同步D.信号量 答:D 14.下面对进程的描述中,错误的是。 A.进程是动态的概念B.进程执行需要处理机 C.进程是有生命期的D.进程是指令的集合 答:D 15.下面的叙述中正确的是。 A.操作系统的一个重要概念是进程,因此不同进程所执行的代码也一定不同。 B.为了避免发生进程死锁,各进程只能逐个申请资源。 C.操作系统用PCB管理进程,用户进程可以从此PCB中读出与本身运行状况有关的信息D.进程同步是指某些进程之间在逻辑上的相互制约关系 答:D 16.进程控制就是对系统中的进程实施有效的管理,通过使用、进程撤销、进程阻塞、进程唤醒等进程控制原语实现。 A.进程运行B.进程管理 C.进程创建D.进程同步 答:C 17.操作系统通过对进程进行管理。 A.JCB B.PCB C.DCT D.CHCT 答:B 18.用P、V操作可以解决互斥问题。 A.一切B.某些C.正确D.错误 答:A 19.通常,用户进程被建立后,。 A.便一直存在于系统中,直到被操作人员撤消 B.随着作业运行正常或不正常结束而撤消

操作系统第二章进程管理测验题答案

爱班网测验2 刷新 第二章进程管理测验题收起 测验进行中结束 试题1 正在进行中 并发性是指若干事件在()发生。( B ) A.同一时刻 B.同一时间间隔 C.不同时刻 D.不同时间间隔内 试题2 正在进行中 进程控制块是描述进程状态和特性的数据结构,一个进程( D ) A.可以有多个进程控制块 B.可以和其他进程共用一个进程控制块 C.可以没有进程控制块 D.只能有惟一的进程控制块 试题3 正在进行中 当时,进程从执行状态转变为就绪状态。( B ) A.进程被调度程序选中 B.时间片到 C.等待某一事件 D.等待的事件发生 试题4 正在进行中 在进程状态转换时,下列转换时不可能发生的。( D ) A.就绪态->运行态 B.运行态->就绪态 C.运行态->阻塞态

D.阻塞态->运行态 试题5 正在进行中 下列各项工作步骤中,不是创建进程必需的。( B ) A.建立一个PCB B.调度程序为进程分配CPU C.为进程分配内存等资源 D.将PCB链入进程就绪队列 试题6 正在进行中 下列关于进程的叙述中,正确的是( A ) A.进程通过进程调度程序而获得CPU B.优先级是进行进程调度的重要依据,一旦确定不能改变 C.在单CPU系统中,任一时刻都有1个进程处于运行状态。 D.进程申请CPU得不到满足时,其状态变为等待状态 试题7 正在进行中 从资源管理的角度看,进程调度属于( C ) A.I/O管理 B.文件管理 C.处理机管理 D.存储器管理 试题8 正在进行中 下列有可能导致一进程从运行变为就绪的事件是( D ) A.一次I/O操作结束 B.运行进程需做I/O操作 C.运行进程结束

操作系统实验报告

操作系统实验指导书 主编:杜俊俐 计算机学院 操作系统课程组2010年2月 20日

前言 操作系统是计算机系统中的核心系统软件,负责控制和管理整个系统的资源并组织用户协调使用这些资源,是计算机高效的工作。操作系统课程是计算机科学与技术专业核心课程。 由于操作系统是最优秀、最复杂和最庞大的软件之一,所以,真正领会操作系统课程所介绍的感念、原理、方法和技巧等,是十分困难的。经验表明,学习尤其是真正体会和掌握操作系统的最好方式是对它进行充分的实验。为此,培养计划中为操作系统课程安排了16学时实验。 为了更好地发挥实验深入理解课程知识的学习作用及知识应用的实践方法,将课程中重要知识点设计成七个实验。通过这些实验有助于学生全面、透彻的理解操作系统原理中的核心知识。

目录 第一章、概述 (4) 第二章、实验要求及注意事项 (5) 第三章、实验项目 (6) 实验一:进程创建与撤消 (6) 实验二:进程调度 (7) 实验三:进程通信 (8) 实验四:分区式储器管理 (9) 实验五:请求页式存储管理 (10) 实验六:磁盘调度算法 (11) 实验七:磁盘文件操作 (12) 第四章、参考文献 (13) 附录A:实验报告规范 (14)

第一章、概述 操作系统课程是计算机科学与技术专业核心课程。《高级语言程序设计》、《数据结构》等课程为其前趋课程。该课程理论性强,难以理解。通过课程的实验,能帮助学生深透理解并真正领会操作系统课程所介绍的感念、原理、方法和技巧等。 实验学时为16,共分七个实验分别进行。实验一:进程创建与撤消、实验二:进程调度、实验三:进程通信、实验四:分区式储器管理、实验五:请求页式存储管理、实验六:磁盘调度算法、实验七:磁盘文件操作。其中实验五需4学时,其余均为2学时。这七个实验对操作系统原理中的进程管理、存储器管理、文件系统等重要知识进行训练。 实现语言为Visual C++ 6.0,系统平台为Windows。

进程的控制系统设计说明书

******************* 实践教学 ******************* 兰州理工大学 计算机与通信学院 2012年秋季学期 操作系统原理课程设计 题目:进程的控制系统 专业班级:软件工程(1)班 姓名:锋 学号:10240506 指导教师:朱红蕾 成绩:

目录 摘要 (1) 正文 (2) 1. 设计思想 (2) 2. 相关的各模块的伪码算法 (2) 3. 函数的调用关系 (8) 4. 测试结果 (9) 总结 (12) 参考文献 (13) 致谢 (14)

摘要 进程是一个可并发执行的具有独立功能的程序关于某个数据集合的一次执行过程,也是操作系统进行分配和保护的基本单位。进程的组成之一是PCB,它是进程控制块,是系统为描述进程而设计的一种数据结构。 进程由创建而产生,由调度而执行,由撤销而消亡的生命周期,因此操作系统要有对进程生命周期的各个环节进行控制的的功能,所谓进程控制,是指系统使用一些具有特定功能的程序段来创建进程、撤销进程以及完成进程各状态间的转换。 进程的控制包括:创建进程、撤销进程、阻塞进程、唤醒进程、激活进程等,这些控制和管理功能是由操作系统中的原语来实现的,而进程控制原语是对进程生命周期控制和进程状态转换的原语,基于进程的基本状态,他们是创建进程原语、撤销进程原语、阻塞进程原语和唤醒进程原语。原语是在管态下执行、完成系统特定功能的过程。系统对进程的控制若不使用原语,就会造成其状态的不确定性,从而达不到进程控制目的。原语的一种实现方法是系统调用方式,采用访管指令实现,原语在使用中不可中断。 现在操作系统设计中,操作系统内核是基于硬件的第一次软件扩充,它为操作系统的进程控制及管理提供了良好环境,而进程的控制及调度体现了操作系统的运行速度及运行频率,所以说进程控制在靠近硬件的软件层次中占据着重要地位。 关键词: 进程、控制、原语

操作系统练习题三四五章

第三章进程管理练习题 一、选择题 1.如果信号量S的值是0,此时进程A执行P(S)操作,那么,进程A会()。 A.继续运行 B.进入阻塞态,让出CPU C.进入就绪态,让出CPU D.继续运行,并唤醒S队列头上的等待进程 2. 正在运行的进程在信号量S上操作P操作之后,当S<0,进程将进入信号量的()。 A.等待队列 B.提交队列 C.后备队列 D.就绪队列 3.在非剥夺调度方式下,运行进程执行V原语后,其状态()。 A.不变 B.要变 C.可能要变 D.可能不变 4. 一个进程被唤醒,意味着()。 A.改进程重新占有了CPU B.进程状态变为就绪 C.它的优先权变为最大 D.其PCB移至就绪队列的队首 5.. 系统感知进程的唯一实体是()。 A.JCB B.FCB C.PCB D.SJT 6. 一进程在某一时刻具有()。 A.一种状态 B.二种状态 C.三种状态 D.四种状态 7. 进程从运行状态变为等待的原因可能是()。 A.输入/输出事件发生 B.时间片到 C.输入/输出事件完成 D.某个进程被唤醒 8. 进程创建原语的任务是()。 A.为进程编制程序 B.为进程建立PCB表 C.为进程分配CPU D.为进程分配所需的各种资源 9. 进程被创建后即进入()排队。 A.阻塞队列 B.就绪队列 C.缓冲队列 D.运行队列 10.在操作系统中,进程是一个具有一定独立功能的程序在某个数据集上的一次。 A)等待活动 B)运行活动 C)单独操作 D)关联操作 11.下面对进程的描述中,错误的是。 A)进程是动态的概念 B)进程执行需要处理机 C)进程是有生命期的 D)进程是指令的集合

进程管理练习及参考答案

OS概述、进程管理练习答案 一、单项选择题(OS概述部分) 1、UNIX O.S. 属于一种( A )操作系统。 A.分时 B.批处理 C.实时 D.分布式 2、计算机软件中,最靠近硬件层次的一类软件是(C )。 A.应用软件 B.支撑软件 C.系统软件 D.编译软件 3、下列四个操作系统中,是分时系统的为(C )。 A.CP/M B.MS-DOS C.UNIX D.WINDOWS NT 4、在操作系统中,设计者往往编制了许多完成不同功能的子程序供用户程序中使用,这些子程序被称为(B )。 A.作业控制语言 B.系统调用 C.操作控制命令 D.访管命令 5、个人计算机操作系统也被称为( B )。 A.多用户操作系统 B.单用户操作系统 C.实时操作系统 D.批处理操作系统 6、批处理系统的主要缺点是( B )。 A.CPU的利用率不高 B.失去了交互性 C.不具备并行性 D.以上都不是 7、DOS操作系统主要的功能是(A )。 A.文件管理功能 B.中断处理功能 C.作业管理功能 D.打印管理功能 8、第一个在计算机上实现的操作系统是(C )。 A.分时操作系统 B.实时操作系统 C.单道批处理系统 D.单用户操作系统 9、操作系统的功能是进行处理器管理、作业管理、( B )管理、设备管理和文件管理。 A.进程 B.存储器 C.硬件 D.软件 10、设计实时操作系统时,首先应该考虑系统的(B )。 A.可靠性和灵活性 B.实时性和可靠性 C.灵活性和可靠性 D.优良性和分配性 11、操作系统是计算机系统的(B )。 A.应用软件 B.系统软件 C.硬件 D.固件 12、从工作的角度看操作系统,可以分为:单用户操作系统、批处理系统、(B )和实时系统。 A.单机操作系统 B.分时操作系统 C.面向过程的操作系统 D.网络操作系统 13、下列系统中,( B )是实时系统。 A.计算机激光照排系统 B.航空定票系统 C.办公自动化系统 D.计算机辅助设计系统 14、工业过程控制系统中运行的操作系统最好是( B )。 A.分时系统 B. 实时系统 C.分布式操作系统 D.网络操作系统 15、计算机发展到第三代,操作系统已成为软件的一个重要分支,最早的操作系统是(D )。 A.分布式系统 B. 实时系统 C.分时系统 D.批处理系统 16、设计实时操作系统时,( B )不是主要的追求目标。 A.安全可靠 B. 资源利用率 C.及时响应 D.快速处理 二、单项选择题(进程控制与同步部分) 1、进程从运行状态变为等待状态的原因可能是(A )。 A.输入/输出事件发生 B.时间片到 C.输入/输出事件完成 D.某个进程被唤醒

进程管理器的模拟实现

衡阳师范学院《操作系统》课程设计 题目:进程管理器的模拟实现系别:计算机科学系 专业:物联网工程 班级:1206班 学生姓名:郑晓娟 学号:12450218 指导老师:王玉奇 完成日期:2014年12月28日

目录 一、需求分析 (3) 二、概要设计 (3) 三、详细设计 (4) 1.进程PCB结构体的定义 (4) 2.创建模块 (4) 3.查看模块 (5) 4.换出模块 (6) 5.杀死模块 (8) 四、程序调试 (10) 五、总结分析 (14)

一、需求分析 有时候我们需要去了解我们电脑的运行情况,掌握和管理它的进程,并对其异常情况给予操作和控制。进程管理器就像我们了解和控制自己电脑运作的一个窗口,通过这个窗口我们可以查看到所有进程的运行情况,并对运行的进程加以管理和控制。在本课程设计中,进入模拟进程系统后,可以根据请求选择“创建进程”创建新的进程。还可以选择“查看进程“来查看当前正在运行的进程,以及该进程的相关的信息,其中包括进程的pid,进程优先级,进程大小和进程的内容,我们可以通过这些来了解计算机中每个进程的使用状况。选择“换出进程”,可以挂起某个正在运行的进程。选择“撤销进程”,可以停止某个正在运行的程序,并且释放其占用的资源。选择“退出进程”,可以退出进程模拟系统。 二、概要设计 程序流程:

三、详细设计 (1)进程PCB结构体的定义 struct jincheng_type{ //定义表示进程信息的结构体int pid; //进程ID int youxian; //优先级 int daxiao; //大小 int zhuangtai; //进程的状态,这里用0表示没有建立或被杀死,1表示执行,2表示换出 int neirong; //内容 }; (2)创建模块 void create() //函数--创建一个新进程 { if(shumu>=20) printf("\n内存已满,请先换出或杀死进程\n") //判断内存空间是否已满 else{ for(int i=0;i<20;i++) if(neicun[i].zhuangtai==0) break; //选出空着的内存单元给新进程使用 printf("\n请输入新进程pid\n"); //输入新进程ID存至选出的内存单元 scanf("%d",&(neicun[i].pid));

进程管理习题及答案

进程管理习题答案 一.选择题 1.在进程管理中,当 __________ 时进程从阻塞状态变为就绪状态. A.进程被进程调度程序选中 B .等待某一事件 C ?等待的事件发生 D .时间片用完 答:C 2 .分配到必要的资源并获得处理机时的进程状态是 _______________ 。 A.就绪状态 B .执行状态 C.阻塞状态 D .撤消状态 答:B 3. ___________________ P 、V 操作是 。 A.两条低级进程通信原语 B .两组不同的机器指令 C ?两条系统调用命令 D .两条高级进程通信原语 答:A 4. _________________________________ 对进程的管理和控制使用 。 A.指令 B C.信号量 D 答:B 5. 进程的并发执行是指若干个进程 A.同时执行 B C.在执行的时间上是不可重叠的 答:B 6. 若P 、V 操作的信号量S 初值为2,当前值为-1,则表示有 A. 0个 B . 1个 C . 2个 D . 3个 答:B 7. 进程的三个基本状态在一定条件下可以相互转化,进程由就绪状态变为运行 状态的条件是①;由运行状态变为阻塞状态的条件是 ② 。 A.时间片用完 B C 等待的某事件己发生 答,①D ②B &下列的进程状态变化中, A.运行一就绪 B C ?等待一运行 答:C 9.一个运行的进程用完了分配给它的时间片后,它的状态变为 A.就绪 B .等待 C.运行 D .由用户自己确定 .原语 .信箱通信 .在执行的时间上是重叠的 D .共享系统资源 .等待某事件发生 .被进程调度程序选中 ____ 变化是不可能发生的。 .运行一等待 .等待一就绪 等待进程。

模拟进程创建、终止、阻塞、唤醒原语--附带注释课件

题目:计算机操作系统模拟 院系:信息学院 专业:计算机科学与技术 班级:2013级1班 辽宁大学

实验题目一:模拟进程创建、终止、阻塞、唤醒原语 一、题目类型:必做题目。 二、实验目的:通过设计并调试创建、终止、阻塞、唤醒原语功能,有助于对操作系统中进 程控制功能的理解,掌握操作系统模块的设计方法和工作原理。 三、实验环境: 1、硬件:pc 机及其兼容机。 2、软件:Windows XP ,Turbo C 或C++、VC++等。 四、实验内容: 1、设计创建、终止、阻塞、唤醒原语功能函数。 2、设计主函数,采用菜单结构(参见后面给出的流程图)。 3、设计“显示队列”函数,目的能将就绪、阻塞队列中的进程信息显示在屏幕上,以供 随时查看各队列中进程的变化情况。 五、实验要求: 1、进程PCB 中应包含以下内容: 进程名 优先级 运行时间 状态 指针 2、系统总体结构: 系统主菜单 1…创建 2…阻塞 3…唤醒 4…终止 5…显示 0…退出 请输入您需要的功能(0-5): 进程名:用P1,P2标识。 优先级:为实验题目二做准备。 运行时间:为实验题目二做准备。 状态为:就绪、运行、阻塞,三种基本状态。 指针:指向下一个PCB 。 输入选择=? 创建 阻塞 唤醒 终止 显示 退出 开始 结束 0 1 2 3 4 5

另加实验二:模拟进程调度功能 /*PCB的组织方式:线性方式*/ #include "stdio.h" #include "string.h" #include "windows.h" typedef struct { char p_name[10];//进程名 char p_pro;//优先级1-3个级别1.低2.中3.高 char p_status;//运行状态0.阻塞1.运行2.就绪 int p_runtime;//运行时间 int p_wait;//等待时间 struct PCB *next;//指针,指向下一个PCB }PCB; void Run(PCB *head)//任何时候保证程序里面至少有一个进程在运行 { PCB *p=head->next;//直接将P指向第一个结点 while(p!=NULL)//遍历一遍链表,将所有就绪队列等待时间加1,防止前面结点因为唤醒又进入运行状态 { if(p->p_status=='2') { p->p_wait++;//将等待时间加1 } p=p->next; } p=head->next;//将P重置在第一个结点 while(p->p_status!='1' && p!=NULL) { if(p->p_status=='2')//防止线性链表前面的结点因为从阻塞唤醒后又进入运行状态 { p->p_status='1'; p->p_wait=2; } if(p->p_status=='1')//对上一个if进行处理 { return;

相关文档
最新文档