当前位置:文档之家› 模拟进程创建、终止、阻塞、唤醒原语--附带注释课件

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

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

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

院系:信息学院

专业:计算机科学与技术

班级: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、加深对进程概念的理解和进程创建与撤消算法; 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、顺序程序和并发程序的执行相比,()。 A.基本相同 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. 必须在执行完后才能被撤下 7、下列进程状态的转换中,不正确的是()。 A. 就绪运行 B. 运行就绪 C. 就绪阻塞 D. 阻塞就绪 8、已经获得除()以外的所有运行所需资源的进程处于就绪状态。 A.存储器 B. 打印机 C. CPU D. 磁盘空间 9、一个进程被唤醒意味着()。 A.该进程重新占有了CPU B.进程状态变为就绪 C.它的优先权变为最大 D.其PCB移至就绪队列的队首 10、进程从运行状态变为阻塞状态的原因是()。 A.输入或输出事件发生 B.时间片到 C.输入或输出事件完成 D.某个进程被唤醒 11、为了描述进程的动态变化过程,采用了一个与进程相联系的(),根据它而感知进程的存在。 A.进程状态字 B. 进程优先数 C.进程控制块 D. 进程起始地址 12、操作系统中有一组常称为特殊系统调用的程序,它不能被系统中断,在操作系统中称为()。 A.初始化程序 B. 原语 C.子程序 D. 控制模块 13、进程间的基本关系为()。 A.相互独立与相互制约 B.同步与互斥 C.并行执行与资源共享 D. 信息传递与信息缓 冲 14、两个进程合作完成一个任务,在并发执行中,一个进程要等待其合作伙伴发来信息,或者建立某个条件后再向 前执行,这种关系是进程间的()关系。 A.同步 B. 互斥 C.竞争 D. 合作 15、在一段时间内,只允许一个进程访问的资源称为()。 A. 共享资源 B. 临界区 C. 临界资源 D. 共享区 16、在操作系统中,对信号量S的P原语操作定义中,使进程进入相应阻塞队列等待的条件是()。 A. S>0 B. S=0 C. S<0 D. S0 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.并发执行 22.操作系统根据( )控制和管理进程,它是进程存在的标志。

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

第二章进程管理 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、“概念”抽象普遍,“定义”具体确切。 2、“定义可包含概念”或“定义是概念的细化和引申/延伸。 5 整数集为什么用Z 自然数集为什么用N 实数集为什么用R 复数集为什么用C 有理数集为什么用Q 谢谢了~~ 1.用Q表示有理数集: 由于两个数相比的结果(商)叫做有理数,商英文是quotient,所以就用Q了 2.用Z表示整数集: 这个涉及到一个德国女数学家对环理论的贡献,她叫诺特。 1920年,她已引入“左模”,“右模”的概念。1921年写出的<<整环的理想理论>>是交换代数发展的里程碑。其中,诺特在引入整数环概念的时候(整数集本身也是一个数环)。 她是德国人,德语中的整数叫做Zahlen,于是当时她将整数环记作Z,从那时候起整数集就用Z表示了。 3.用N表示自然数集: 自然数:Natural number 所以就用N了 4.用R表示实数集: 实数:Real number 所以就用R了 5.用C表示复数集: 复数:Complex number 所以就用C了

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

操作系统实验报告 试验一:进程创建与撤销 计科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.随着作业运行正常或不正常结束而撤消

操作系统实验报告

操作系统实验指导书 主编:杜俊俐 计算机学院 操作系统课程组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)进程是指令的集合

操作系统重点概念知识讲解

1.CPU的两种运行模式:内核态(又称核心态、系统态、管态)和用户态(又称目态)。 2.指令是控制计算机执行某种操作的命令。 3.特权指令:是一类具有特殊权限的指令,只用于操作系统或其他系统软件,普通用户不 能直接使用 4.非特权指令:也称为用户指令或普通指令,是普通用户能够直接使用的指令。这是指令 集中除特权指令外的所有指令。 5.操作系统的用户观点和系统观点:用户观点:为用户提供使用计算机系统的接口和各种 资源管理服务(从系统外部看)系统观点:管理和分配计算机系统硬件及软件资源。因此,操作系统是计算机资源的管理者(从系统内部看 6.操作系统:是控制和管理计算机系统内各种硬件和软件资源、有效地组织多道程序运行 的系统软件(或程序集合),是用户与计算机之间的接口。 功能:处理机管理、存储器管理、设备管理、文件管理、用户接口 7.多道程序设计的基本思想:在内存中同时存放多道程序,在管理程序的控制下交替 地执行。这些作业共享CPU和系统中的其他资源。 8.多道批处理系统优缺点:优点:系统资源利用率高;系统吞吐量大。缺点:用户作业等待 时间长;无交互性,用户一旦提交作业就失去了对其运行的控制能力 9.多道:系统在内存中存放多个作业,并且在外存上还保存大量的后备作业。 10.成批:系统按批次调度作业,而在系统运行过程中不允许用户和机器之间发生交互作用。 11.分时:对时间的共享。在分时系统中,分时主要是指若干并发程序对CPU时间的共享 12.Linux系统特点:与UNIX兼容;自由软件,源码公开;性能高,安全性强;便于定 制和再开发;互操作性高;全面的多任务和真正的32位操作系统 13.进程概念:程序在并发环境中的执行过程 进程最根本的属性:是动态性和并发性 进程的特征:动态性并发性独立性异步性 批处理系统的特征:脱机多道成批处理 分时系统的特征:多路性独立性及时性交互性 14.进程间的相互关系主要分为如下三种形式:1.互斥——竞争同一资源而发生相互制约2. 同步——协同完成一项任务 3. 通信——交换信息,合作完成一项工作 15.进程和程序的区别和联系:(1)进程是动态概念,程序是静态概念(2)进程有并发性, 程序没有(3)一个程序对应多个进程(4)进程有三个基本状态 进程的三种状态及其转换 16.进程控制块的作用:每个进程有唯一的进程控制块;操作系统根据PCB对进程实施控 制和管理;进程的动态、并发等特征是利用PCB表现出来的;PCB是进程存在的唯一标识 17.临界资源:一次仅允许一个进程访问的资源 18.临界区:简称CS区进程中访问临界资源的那段程序代码 19.原语是为完成某些特定的功能而编制的一段系统程序。原语操作也称做“原子操作”,即 一个操作中的所有动作要么全做,要么全不做。执行原语操作时,要屏蔽中断,以保证

进程管理器的模拟实现

衡阳师范学院《操作系统》课程设计 题目:进程管理器的模拟实现系别:计算机科学系 专业:物联网工程 班级: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;

相关主题
文本预览
相关文档 最新文档