进程创建与撤销

合集下载

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

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

操作系统实验报告进程管理操作系统实验报告:进程管理引言操作系统是计算机系统中的核心软件,负责管理计算机的硬件资源和提供用户与计算机之间的接口。

进程管理是操作系统的重要功能之一,它负责对计算机中运行的各个进程进行管理和调度,以保证系统的高效运行。

本实验报告将介绍进程管理的基本概念、原理和实验结果。

一、进程管理的基本概念1. 进程与线程进程是计算机中正在运行的程序的实例,它拥有独立的内存空间和执行环境。

线程是进程中的一个执行单元,多个线程可以共享同一个进程的资源。

进程和线程是操作系统中最基本的执行单位。

2. 进程状态进程在运行过程中会经历不同的状态,常见的进程状态包括就绪、运行和阻塞。

就绪状态表示进程已经准备好执行,但还没有得到处理器的分配;运行状态表示进程正在执行;阻塞状态表示进程由于某些原因无法继续执行,需要等待某些事件的发生。

3. 进程调度进程调度是操作系统中的一个重要任务,它决定了哪个进程应该获得处理器的使用权。

常见的调度算法包括先来先服务(FCFS)、最短作业优先(SJF)和时间片轮转等。

二、进程管理的原理1. 进程控制块(PCB)PCB是操作系统中用于管理进程的数据结构,它包含了进程的各种属性和状态信息,如进程标识符、程序计数器、寄存器值等。

通过PCB,操作系统可以对进程进行管理和控制。

2. 进程创建与撤销进程的创建是指操作系统根据用户的请求创建一个新的进程。

进程的撤销是指操作系统根据某种条件或用户的请求终止一个正在运行的进程。

进程的创建和撤销是操作系统中的基本操作之一。

3. 进程同步与通信多个进程之间可能需要进行同步和通信,以实现数据共享和协作。

常见的进程同步与通信机制包括互斥锁、信号量和管道等。

三、实验结果与分析在本次实验中,我们使用了一个简单的进程管理模拟程序,模拟了进程的创建、撤销和调度过程。

通过该程序,我们可以观察到不同调度算法对系统性能的影响。

实验结果显示,先来先服务(FCFS)调度算法在一些情况下可能导致长作业等待时间过长,影响系统的响应速度。

操作系统的资源管理

操作系统的资源管理

操作系统的资源管理操作系统是计算机系统中的核心软件,起着资源管理的重要作用。

资源管理是指操作系统对计算机系统中的各种资源的合理配置和调度,以实现对资源的高效利用和协调。

本文将从进程管理、内存管理和文件管理三个方面,探讨操作系统的资源管理。

一、进程管理进程是指计算机中正在运行的程序的实例。

操作系统通过进程管理来实现对计算机中运行的多个进程的协调和控制。

进程管理的主要内容包括进程的创建、撤销、调度和通信等。

进程的创建是指在计算机系统中新建一个进程,为其分配必要的资源,使其能够运行。

进程的撤销则是指在进程运行结束后,将其从系统中移除,释放其占用的资源。

进程的调度是指操作系统对多个进程的优先级、时间片等进行合理安排,以实现对计算机资源的有效利用。

进程间通信则是指不同进程之间的信息交换和共享,让它们能够相互协作完成任务。

二、内存管理内存管理是指操作系统对计算机的内存资源进行分配和调度的过程。

计算机的内存是存储程序和数据的地方,操作系统需要对内存进行合理的组织和利用。

内存管理的主要内容包括内存的分配、回收和保护。

内存的分配是指操作系统将可用的内存划分为多个空闲区域,根据进程的需求,选择合适的空闲区域分配给进程。

内存的回收则是指在进程运行结束后,将其占用的内存释放,归还给系统。

内存的保护是指通过硬件和软件机制,对不同进程和操作系统的内存区域进行保护,防止进程之间的干扰和非法访问。

三、文件管理文件管理是指操作系统对计算机中的文件资源进行管理和控制。

文件是计算机中用于存储和组织数据的重要方式,操作系统需要对文件进行创建、存储、读取和删除等操作。

文件管理的主要内容包括文件的命名、存储和保护。

文件的命名是指为每个文件指定一个唯一的名字,使用户能够方便地访问和操作文件。

文件的存储是指将文件的数据存储在磁盘或其他设备中,根据文件的大小和访问特点进行存储的方式。

文件的保护是指通过权限和密码等机制,对文件进行保护,控制用户对文件的访问和修改。

操作系统的主要功能有哪些

操作系统的主要功能有哪些

操作系统的主要功能有哪些操作系统是计算机系统中的一个关键组成部分,它具备多种功能,既能保障计算机硬件和软件的正常运行,也能提供方便高效的用户界面。

本文将探讨操作系统的主要功能,包括进程管理、存储管理、文件系统和设备管理。

一、进程管理进程是计算机系统中正在运行的程序的实例。

操作系统负责创建、调度和终止进程,以及处理进程间的通信和同步。

主要功能包括:1. 进程创建和撤销:操作系统负责创建新的进程,并在进程完成任务后撤销。

2. 进程调度:通过合理的进程调度算法,操作系统决定哪个进程在何时执行。

3. 进程同步和互斥:操作系统提供机制,确保多个进程之间的数据访问顺序和互斥性,避免数据竞争和死锁。

4. 进程通信:操作系统提供进程间通信的机制,例如共享内存、管道、消息队列等,以方便进程之间的信息交换。

二、存储管理存储管理是操作系统的核心功能之一,它负责管理计算机的主存储器(RAM)和辅助存储器(硬盘等)。

主要功能包括:1. 内存分配和回收:操作系统负责为进程分配和回收内存空间,以保证每个进程都能正常运行。

2. 虚拟内存管理:操作系统可以通过虚拟内存技术,将主存和辅助存储器结合起来,提供更大的地址空间给每个进程使用。

3. 内存保护:操作系统通过内存保护机制,防止进程越界访问其他进程的内存空间,保护系统的稳定性和安全性。

三、文件系统文件系统是操作系统中用来管理文件和目录的部分。

它提供了一种方便的方式来组织和访问文件,提供数据的长期存储功能。

主要功能包括:1. 文件的创建和删除:操作系统提供创建和删除文件的接口,使用户能够方便地管理文件。

2. 文件的读写和访问控制:操作系统允许用户对文件进行读写操作,同时还支持访问控制,确保只有拥有权限的用户能够访问文件。

3. 文件的组织和管理:操作系统通过目录结构,将文件组织成层次化的结构,便于用户查找和管理文件。

四、设备管理设备管理是操作系统的另一个重要功能,它负责管理和控制计算机的硬件设备,包括输入设备、输出设备和存储设备等。

进程管理的6个原语

进程管理的6个原语

进程管理的6个原语进程管理是操作系统中极其重要的一个功能。

它负责管理系统中各种进程的创建、调度、同步和终止。

在实现进程管理时,需要使用到一些基本原语来实现。

1. 进程创建原语进程创建原语是指操作系统提供的一组函数,用于创建进程。

在进程创建原语中,包括申请内存、初始化控制块、建立进程间通信机制等操作。

在创建进程时,操作系统需要为进程分配资源并初始化进程控制块。

此外,还要进行必要的设置和配置,例如设置进程的优先级、设置进程的内存空间等。

这些操作的完成是进程创建的前提。

进程撤销原语是指操作系统提供的一组函数,用于决定某个进程的退出条件和相应动作。

进程撤销原语可以被用于正常退出、异常退出和截止期限的退出等情况。

在撤销进程时,操作系统要释放进程占用的资源,回收内存和处理状态信息。

此外,还要保证撤销进程后不会产生副作用和安全问题。

进程阻塞原语是指操作系统提供的一组函数,用于暂停某个进程的执行。

一旦进程被阻塞,直到某个条件被满足时才能恢复它的执行。

例如,在需要等待 I/O 操作完成的情况下,可以让进程暂停执行,等待 I/O 操作完成后再继续运行。

进程同步原语是指操作系统提供的一组函数,用于协调多个进程之间的并发操作以获得正确性和完整性。

在进程同步原语中,包括阻塞、唤醒、锁定、解锁等操作。

例如,在操作共享资源时,进程同步原语可以被用于保证每个进程的执行顺序和互斥访问。

进程通信原语是指操作系统提供的一组函数,用于在进程之间进行信息传递。

在进程通信原语中,包括发送信息、接收信息、建立通信机制等操作。

例如,有些进程需要相互交换数据或协作完成某项任务,就需要使用进程通信原语来实现信息的传递和交流。

总之,在进程管理中,这些原语是非常重要的基础操作。

只有理解这些基本操作和实现原理,才能更好地理解和应用操作系统的进程管理功能。

与进程控制相关的原语

与进程控制相关的原语

与进程控制相关的原语一、进程控制原语的概念进程控制原语是指在操作系统中,用于管理和控制进程的一系列基本操作。

通过这些原语,我们可以对进程进行创建、撤销、暂停、恢复等操作,以实现进程的有效管理和控制。

二、进程创建原语1. 创建进程(Create):创建新的进程并为其分配资源,包括分配进程控制块(PCB)、分配内存空间、分配唯一的进程标识符(PID)等。

创建进程时,可以指定进程的优先级、初始状态以及父子关系等。

三、进程撤销原语1. 撤销进程(Terminate):终止一个进程的执行,并释放其占用的资源。

撤销进程时,操作系统会回收进程所使用的内存空间、文件描述符等资源,并从系统的进程表中删除该进程的 PCB。

四、进程暂停和恢复原语1. 暂停进程(Suspend):将一个正在执行的进程暂停,暂停后的进程不会继续执行,但其占用的资源仍然保留。

暂停进程的目的是为了让其他优先级更高的进程能够获得执行机会。

2. 恢复进程(Resume):将一个被暂停的进程恢复执行,使其继续执行之前的工作。

恢复进程时,操作系统会重新分配资源,并将进程的状态设置为就绪状态,以便其能够参与到进程调度中。

五、进程同步原语1. 互斥原语(Mutex):用于实现进程之间的互斥访问共享资源。

互斥原语提供了对共享资源的排他性访问,确保同一时间只有一个进程可以访问共享资源,从而避免了资源竞争的问题。

2. 信号量原语(Semaphore):用于实现进程之间的同步和互斥。

信号量原语提供了两种操作:P(proberen)操作和V(verhogen)操作。

P操作用于申请资源,V操作用于释放资源。

通过对信号量进行P和V操作,可以实现对共享资源的互斥访问和进程之间的同步。

六、进程通信原语1. 管道(Pipe):用于实现具有亲缘关系的进程之间的通信。

管道提供了一种半双工的通信方式,其中一个进程负责写入数据,另一个进程负责读取数据。

管道可以用于实现进程间的数据传输和共享。

实验二 进程撤销模拟

实验二 进程撤销模拟

实验二进程撤销模拟一实习内容(一).设计并说明delete(para)函数的功能,并以流程图或文字的形式展现;int deletepc(pnode *pp,pnode *pc) 函数主要用于删除进程,此函数是在主函数找到要删除进程的父进程之后调用,其函数功能流程图如图1-1所示:图1-1deletepc(pnode *pp,pnode *pc)函数功能示意图(二)实习步骤如下:1.在实验一的基础上进行进程的创建,创建出的进程如图2-1所示:图2-1 创建进程的进程总链示意图其在程序中执行显示如下图4-2所示:图2-2 程序显示进程的创建2.进程的撤销过程①撤销进程P12,撤销进程后进程链示意图如图2-3所示:图2-3 撤销进程P12后进程链示意图其在程序中执行显示如下图2-4所示:图2-4 撤销进程P12程序显示图②撤销进程P7,P11,撤销进程后进程链示意图如图2-5所示:图2-5 撤销进程P7,P11后进程链示意图其在程序中执行显示如下图2-6所示:图2-6 撤销进程P7,P11程序显示图③撤销进程P2,P3,P4,撤销进程后进程链示意图如图2-7所示:图2-7 撤销进程P2,P3,P4后进程链示意图其在程序中执行显示如下图2-8所示:图2-8撤销进程P2,P3,P4程序显示图④撤销进程P1,撤销进程后进程链中只有根进程P0,结构示意图如图2-9所示:图2-9 撤销进程P1后进程链示意图其在程序中执行显示如下图2-10所示:图2-10撤销进程P1程序显示图(三)delete(para)函数代码如下://delete processint deletepc(pnode *pp,pnode *pc){if (pc->sub==NULL) //如果要撤销进程无子进程{if(pp->sub==pc){pp->sub=pc->brother;}else{pnode *p;for (p=pp->sub; p->brother!=pc; p=p->brother);p->brother=pc->brother;}pnode *temp;for (temp=plink; temp; temp=temp->next) //删除并释放进程{if (temp->next->node->pid==pc->node->pid){temp->next=temp->next->next;delete pc; //释放进程资源break;}}}else //要删除的进程存在子进程{deletepc(pc,pc->sub);deletepc(pp,pc);}return 0;}在主函数中增加的代码如下:else if(s2){cflag=1;para = (int *)malloc(2);s2 = substr(s2,instr(s2,'(')+1,strlen(s2)-2);para=strtoarray(s2);pnode *pp=plink,*pc=plink;pnode *p,*p1;bool findflag=false;for(p=plink; p; p=p->next){if(p->node->pid==para[0])//找到要删除的进程{for (p1=plink; p1; p1=p1->next){if((p1->node->pid)==p->node->ppid) //找到父进程{pp=p1;//pp 父进程pc=p; //p 当前进程break;}}findflag=true;break;}}if(findflag){if(pp==pc){printf("你不能删除进程号为0的根进程!\n");}else{deletepc(pp,pc);}}elseprintf("你要删除的进程不存在!\n");pflag=1;}二、思考题1)进程撤销的核心内容是什么?答:根据标识符,检索出该进程的PCB,读出状态;若正处于执行状态,应立即终止,置调度标志为真;若该进程还有子孙进程,终止其所有子孙进程;归还全部资源给其父进程或者系统;将被终止进程(它的PCB)从所在队列(或链表)中移出。

操作系统几大原语发生的条件

操作系统几大原语发生的条件

操作系统几大原语发生的条件
操作系统中的原语发生的条件如下:
1. 系统态下执行某些具有特定功能的程序段,原语在系统态下执行机器指令级原语,其特点是执行期间不允许中断。

在操作系统中,原语是一个不可分割的基本单位功能级原语,特点是作为原语的程序段不允许并打进程。

2. 进程控制原语:创建原语、撤销原语、阻塞原语、唤醒原语。

进程的创建:
由进程程序模块统一创建:进程之间的关系是平等的,他们之间不存在资源继承关系。

由父进程创建:进程之间存在隶属关系,且互相构成树形结构家族关系。

属于某个家族的一个进程可以继承其父进程所拥有的资源。

都需要创建原语实现。

进程撤销:
该进程已经完成所有的要求。

由于某错误终止。

祖先进程要求撤销某个进程。

3. 进程被创建后最初处于就绪状态,被选中后执行阻塞原语,进程自己调用阻塞自己。

综上所述,操作系统中的原语发生的条件包括系统态下的执行、进程的创建和撤销以及进程的状态变化等。

这些条件是操作系统实现进程管理和控制的必要手段,保证了系统的稳定和效率。

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

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

操作系统实验报告试验一:进程创建与撤销计科112康岩岩2011008142202013/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; //IDlong startTime; //开始时间long pcbRuntime = 0; //运行时间int pcbLeve; //线程优先级}对于所有的进程信息,用以下表储存:Dictionary<int,Hashtable>ThreadTable=new Dictionary<int,Hashtable>();容器ThreadTable用来储存所有进程简直key 表示进程id,值为Hashtable,储存的为线程信息,②函数CREATE(PCB pcb)—进程创建:创建进程需要传入一个PCB 对象,然后启动一个单独的线程来操作该对象,操作该对象就是把线程运行的状态传送给PCB同时PCB也唯一地标示其所在的线程。

操作系统的进程管理

操作系统的进程管理

操作系统的进程管理操作系统是计算机系统的核心组成部分,负责管理计算机的资源并提供各种服务。

进程是操作系统中的基本单位,是程序的执行实例。

进程管理是操作系统的重要功能之一,它包括进程的创建、撤销、调度以及进程间的通信和同步等操作。

一、进程的创建进程的创建是指操作系统为一个程序创建一个执行实例的过程。

当用户执行一个程序时,操作系统会为该程序创建一个独立的进程。

进程创建的步骤如下:1. 分配内存空间:操作系统为进程分配一块内存空间,用于存储代码、数据和堆栈等信息。

2. 初始化进程控制块:操作系统创建进程控制块(PCB),用于存储进程的各种状态、资源和控制信息。

3. 设置程序计数器(PC):将程序计数器设置为程序的入口地址,以便开始执行程序。

4. 设置堆栈指针(SP):将堆栈指针设置为堆栈的起始地址,以便进行函数调用和返回。

二、进程的撤销进程的撤销是指操作系统终止一个正在执行的进程的过程。

进程撤销的原因包括进程执行完毕、出现错误、被用户强制终止等。

进程撤销的步骤如下:1. 保存进程状态:将进程的状态、寄存器和堆栈等信息保存到进程控制块中。

2. 释放资源:释放进程占用的内存空间、文件和设备等资源,以便其他进程使用。

3. 销毁进程控制块:操作系统销毁进程控制块,回收其内存空间。

三、进程的调度进程的调度是指操作系统根据一定的调度算法,按照优先级或其他规则决定将哪个进程分配给处理器执行的过程。

进程调度的目标是提高系统的资源利用率和响应速度。

常见的调度算法包括先来先服务(FCFS)、短作业优先(SJF)、时间片轮转等。

四、进程间的通信和同步进程间的通信是指不同进程之间传递信息和共享资源的过程。

进程间通信可以通过共享内存、消息传递、管道、信号量等方式实现。

通信的目的是实现进程间的协作和数据共享。

进程间的同步是指多个进程按照一定的顺序执行,以避免资源竞争和数据不一致的问题。

常见的同步机制包括互斥锁、信号量、条件变量等。

操作系统有哪些主要功能

操作系统有哪些主要功能

操作系统的主要功能1. 进程管理操作系统负责管理计算机中的进程,包括创建、调度、撤销和同步进程。

进程是指正在运行的程序实例,操作系统通过分配CPU时间片给不同的进程来实现多任务处理。

进程管理还包括进程间的通信和同步机制,确保进程之间的合作和互斥。

2. 内存管理操作系统负责管理计算机的内存资源,包括内存的分配和回收。

它通过内存管理单元(MMU)将进程的虚拟地址映射为物理地址。

内存管理还包括页面置换算法,用于在内存不足时将不再使用的页面移出,以便为新的页面腾出空间。

3. 文件系统操作系统提供了文件系统来进行文件的组织和存储。

文件系统负责文件的创建、删除、读写和管理。

它将文件组织成层次结构的目录,并为文件分配独立的索引节点以便访问。

4. 设备驱动程序操作系统负责管理计算机中的各种硬件设备,包括输入设备(键盘、鼠标)、输出设备(显示器、打印机)和存储设备(硬盘、光驱)。

操作系统通过设备驱动程序与硬件设备进行通信和控制。

5. 用户界面操作系统提供了用户界面,使用户可以与计算机进行交互。

用户界面可以分为命令行界面和图形用户界面。

命令行界面通过命令行输入和输出来进行操作,而图形用户界面通过图形窗口、菜单和按钮等元素提供更直观和友好的交互方式。

6. 网络通信现代操作系统提供了网络通信功能,使计算机能够通过网络与其他计算机进行通信。

操作系统通过实现网络协议栈来提供网络功能,包括协议选择和路由、数据传输和网络安全等。

7. 安全性管理操作系统负责保护计算机系统和用户数据的安全。

它通过实施访问控制机制、加密算法和防火墙等手段来防止未经授权的访问和数据泄露。

操作系统还提供日志记录和审计功能,以便对系统的安全性进行监控和排查。

8. 错误处理操作系统负责处理计算机系统中出现的错误和异常情况。

它通过异常处理机制来捕获和处理内部错误(如内存访问异常、除零错误等)和外部中断(如设备故障、时钟中断等)。

操作系统还提供了错误恢复和系统稳定性的机制,以防止系统崩溃或数据丢失。

操作系统的基本功能

操作系统的基本功能

操作系统的基本功能操作系统是计算机系统中的核心软件之一,承担着管理和控制计算机硬件以及支持用户软件运行的重要任务。

操作系统的基本功能涵盖了各种方面,下面将从进程管理、内存管理、文件系统管理以及设备管理四个方面来介绍操作系统的基本功能。

一、进程管理进程管理是操作系统中的核心功能之一,它负责对计算机系统中所有的进程进行管理和控制。

进程是指正在运行的一个程序的实例,每个进程都拥有自己的内存空间、CPU时间片以及相关资源。

操作系统通过进程管理来实现进程的创建、撤销、调度和通信等功能。

1. 进程创建:操作系统负责接收用户或其他进程的请求,创建新的进程,为其分配资源,并初始化进程控制块(PCB)等数据结构。

2. 进程撤销:操作系统可以根据用户或系统的请求,撤销已经运行完毕或出现错误的进程,回收相关资源,并释放进程所占用的内存空间。

3. 进程调度:操作系统通过进程调度算法来决定每个时刻应该运行哪些进程,以实现多道程序同时运行的效果。

4. 进程通信:操作系统提供进程间通信的机制,使得不同进程之间可以通过共享内存、管道、消息队列等方式进行信息的交换和共享。

二、内存管理内存管理是操作系统的另一个基本功能,主要负责管理计算机系统中的内存资源,包括内存的分配与回收、地址映射等。

1. 内存分配:操作系统负责为各个进程分配内存空间,以满足其运行所需。

常见的内存分配算法包括连续分配、离散分配、虚拟内存等。

2. 内存回收:当进程运行结束或者被撤销时,操作系统将回收其所占用的内存空间,以便于为其他进程提供空间。

3. 地址映射:操作系统通过地址映射机制,将逻辑地址(用户程序使用的地址)转换为物理地址(内存中的实际地址),以实现对内存的有效访问。

三、文件系统管理文件系统管理是操作系统的另一个重要功能,它负责对存储设备上的文件进行管理和控制,包括文件的创建、读写、删除以及文件的组织和保护等。

1. 文件创建与删除:操作系统提供文件管理接口,使用户或应用程序能够方便地创建新文件或删除已有文件。

实验一进程的创建与撤销(精选.)

实验一进程的创建与撤销(精选.)

实验一:进程创建与撤消一、实验目的1、加深对进程概念的理解和进程创建与撤消算法;2、进一步认识并发执行的实质。

二、实验内容本实验完成如下三个层次的任务:(1)系统级—以普通用户身份认识的进程管理。

通过的“任务管理器”观察进程的状态,进行进程的创建、切换和撤销。

(2)语言级—以普通程序员身份认识高级语言的进程创建与撤销工具。

(3)模拟级—以设计师身份编程模拟实现进程创建与撤销功能,并在屏幕上观察进程活动的结果。

三、实验步骤1、的进程管理(1)按键,弹出任务管理器窗口(2)选择相应操作序号,可以创建一个新的进程(3)在创建完一个新的进程后,可以显示出所有已创建进程的详细信息(4)选择相应操作序号,可以通过输入或来撤销一个进程2、进程创建与撤销工具(1)进程的创建()("");(2)进程的撤销();3、进程创建与撤销的模拟实现(1)总体设计:①数据结构定义:结构体:进程编号,进程名称,进程优先级和进程创建时间,队列按进程创建时间排序。

空间就绪队列指针空队列指针②函数进程创建:从空间申请一个空,填入进程参数,插入就绪队列;进程终止:将指定的就绪进程移出就绪队列,插入空队列;就绪队列输出:输出就绪队列中的进程信息,以便观察创建或撤消活动的结果;主函数:调用创建函数、调用终止函数、输出就绪队列;③主界面设计:进程创建、进程撤销、退出程序图1 操作主界面④功能测试:从显示出的就绪队列状态,查看操作的正确与否。

(2)详细设计:①数据结构定义:结构体:表1 结构体表空间:是一个能存放十个对象的数组就绪队列指针:定义一整型变量初始值为零空队列指针:定义一整型变量初始值为零,当有进程创建时,加入。

②函数设计进程创建示例图图2 创建新进程创建多个进程后,可以查看到所有已创建的进程的详细信息,如图。

图3 查看所有进程用户可以根据或者来撤销某一个进程,并在撤销成功后,可以看到撤销后剩余的所有进程信息,如图。

操作系统的主要功能有处理机管理

操作系统的主要功能有处理机管理

操作系统的主要功能——处理机管理引言操作系统是计算机系统中的核心软件,它负责管理计算机硬件资源和提供用户与计算机系统交互的接口。

操作系统的主要功能之一是处理机管理。

处理机管理涉及到对计算机的CPU(中央处理器)的合理分配和调度,以提高计算机系统的整体性能和效率。

本文将详细介绍处理机管理的主要功能以及相关的概念和算法。

处理机管理的基本概念进程一个进程可以看做是正在执行的程序的实例。

它包括程序的指令、数据和相关的执行状态信息。

操作系统通过进程的创建、撤销、控制和同步,来管理计算机中的多个任务。

线程线程是进程中的一个执行单元,是进程中的实际工作者。

一个进程可以包含多个线程,线程共享进程的资源和上下文信息。

操作系统通过线程的创建、调度和同步,来提高计算机系统的并发度和响应能力。

进程调度进程调度是指按照某种算法从就绪队列中选择一个进程,使之占用处理机运行。

常用的调度算法包括先来先服务(FCFS)、最短作业优先(SJF)、时间片轮转、优先级调度等。

线程调度线程调度是指操作系统决定何时将处理机切换到另一个线程上运行的过程。

线程调度算法旨在确保公平性、提高响应时间、最大程度地利用处理机资源等。

上下文切换当操作系统将处理机从一个进程或线程切换到另一个进程或线程时,需要保存当前进程或线程的上下文(包括程序计数器、寄存器等)以及加载下一个进程或线程的上下文。

这个过程就是上下文切换。

处理机管理的主要功能进程与线程管理操作系统负责进程和线程的创建、撤销和控制。

它为每一个进程和线程分配所需的资源,并提供进程和线程间的通信机制(如共享内存、消息传递等)。

操作系统还负责确保进程和线程的运行顺序和优先级,以充分利用系统资源。

进程和线程调度操作系统通过进程和线程调度算法来决定处理机分配给哪个进程或线程运行。

这些调度算法旨在提高系统的性能和响应能力,保证不同进程和线程之间的公平性。

上下文切换管理上下文切换是切换进程或线程执行所需的关键操作。

操作系统的核心功能解析

操作系统的核心功能解析

操作系统的核心功能解析操作系统是计算机系统中必不可少的组成部分,它是软件和硬件之间的桥梁,管理和协调计算机的各种资源,为用户和其他软件提供良好的使用环境。

在本文中,我们将解析操作系统的核心功能,以及它们在计算机系统中的重要性。

一、进程管理进程是指在计算机系统中正在运行的程序的实例。

操作系统负责创建、调度和终止进程,并为它们分配系统资源。

进程管理的核心功能包括进程的创建和撤销、进程的调度和切换、进程的同步和通信等。

进程的创建和撤销涉及到分配和回收资源的过程,操作系统需要为每个进程分配内存空间、文件描述符、进程标识符等。

而进程的调度和切换则是确保系统资源的合理利用,操作系统需要根据一定的调度算法来决定哪个进程优先执行,并且在进程切换时保存和恢复进程的上下文信息。

进程的同步和通信是确保多个进程能够互相协作和共享资源的重要手段。

操作系统提供了各种同步机制,如信号量、互斥锁和条件变量等,以及各种通信机制,如消息队列、管道和共享内存等,来满足进程之间的协作需求。

二、内存管理内存管理是操作系统负责分配和回收系统内存的核心功能。

在计算机系统中,内存是一种稀缺的资源,操作系统需要有效地管理和分配内存,以满足不同进程的内存需求。

内存管理的核心任务包括内存的分配和回收、内存的保护和共享、虚拟内存的管理等。

操作系统通过内存分配算法来决定如何为进程分配内存空间,同时还需要考虑内存的保护和共享机制,以确保进程之间的内存隔离和资源共享的安全性。

此外,虚拟内存的管理也是内存管理的重要组成部分,它能够为进程提供比物理内存更大的地址空间,提高系统的整体性能。

三、文件系统管理文件系统管理是操作系统负责维护和管理文件的核心功能。

在计算机系统中,文件是存储和组织数据的基本单位,它们在操作系统中起着重要的作用。

操作系统需要提供文件的创建和删除、文件的读和写、文件的共享和保护等功能,以满足用户对文件的各种操作需求。

文件系统管理的核心任务包括文件的组织和存储、文件的访问和保护、文件的共享和同步等。

计算机系统基础实验

计算机系统基础实验

计算机系统基础实验计算机系统基础实验是计算机科学与技术专业中的一门重要课程,旨在帮助学生深入理解计算机硬件和操作系统的工作原理,培养学生的实际操作能力。

以下是一个关于计算机系统基础实验的报告,详细介绍了关于进程管理和内存管理的实验过程和结果。

实验题目:进程管理和内存管理一、实验目的:1.熟悉进程的创建、运行和撤销过程;2.理解进程之间的关系和调度算法;3.掌握内存管理的基本原理和常用方法。

二、实验环境:1. 操作系统:Windows 10;2. 虚拟机软件:VMware Workstation 16 Pro;3.编程语言:C/C++。

三、实验内容和过程:实验一:进程的创建、运行和撤销1.实验步骤:(1)使用C/C++编写一个创建进程的程序,包括进程的标识符、优先级和资源需求等;(2)编译并运行程序,查看进程的创建情况;(3)编写一个进程调度算法程序,选择一个合适的调度算法,并设置相应的调度策略;(4)编译并运行进程调度算法程序,观察进程的执行情况;(5)撤销一个进程,并查看撤销后的进程状态。

2.实验结果:(1)成功创建了一个进程,并查看到相关信息;(2)进程调度算法程序成功运行,并根据所设置的策略进行调度;(3)成功撤销一个进程,并查看到撤销后的进程状态。

实验二:内存管理1.实验步骤:(1)使用C/C++编写一个内存分配算法程序,包括内存的分配和回收等功能;(2)编译并运行程序,查看内存的分配情况;(3)使用一个合适的页面置换算法,编写一个程序来模拟分页机制的内存管理;(4)编译并运行分页程序,观察页面置换的情况;(5)释放内存,并查看内存的回收情况。

2.实验结果:(1)成功分配了内存,并查看到相关信息;(2)分页程序成功运行,并根据所选择的页面置换算法进行置换;(3)成功回收内存,并查看到内存的回收情况。

四、实验总结:通过这次实验,我们深入了解了进程的创建、运行和撤销过程,以及进程之间的关系和调度算法。

操作系统五大功能模块有哪些

操作系统五大功能模块有哪些

操作系统五大功能模块有哪些操作系统是计算机系统中非常重要的一部分,为计算机硬件和软件提供各种管理和支持功能。

它是协调和控制计算机资源,提供给用户和应用程序使用的软件集合。

操作系统具备五大功能模块,它们分别是:1. 进程管理模块进程管理模块是操作系统的核心功能之一。

它负责控制和管理计算机系统中的进程。

进程是指正在运行的程序,是计算机执行任务的基本单位。

进程管理模块的主要任务包括:•进程创建和撤销:操作系统能够创建、启动和撤销进程,根据用户或程序的要求,动态地分配和回收系统资源,提供必要的运行环境。

•进程调度:根据一定的调度算法,决定正在运行的进程和即将运行的进程,合理利用计算机资源,提高系统的吞吐量和响应速度。

•进程间通信:操作系统提供各种通信机制,使进程能够方便地进行信息交换和共享。

2. 内存管理模块内存管理模块负责管理计算机系统中的内存资源。

内存是计算机用于存储程序和数据的地方,对于一个操作系统来说,合理地管理内存非常重要。

内存管理模块的主要任务包括:•内存分配:操作系统负责将内存分配给进程,并跟踪每个进程的内存使用情况,确保进程之间不会相互干扰。

•内存回收:当进程终止或释放内存时,内存管理模块需要回收这些内存资源,以便供其他进程使用。

•内存保护:操作系统通过地址映射和访问权限控制等机制,保护不同进程之间的内存空间,防止恶意访问和越界访问。

3. 文件系统模块文件系统模块是操作系统中负责管理文件和目录的功能模块。

文件系统是计算机中用于组织和存储数据的记录式存储系统。

文件系统模块的主要任务包括:•文件的创建、打开和关闭:操作系统提供接口和机制,使用户能够方便地创建和访问文件,对文件进行打开和关闭操作。

•文件的读取和写入:操作系统提供读写接口,使用户能够读取和写入文件中的数据。

•文件的管理和保护:操作系统负责为文件分配磁盘空间,管理文件的属性和权限,保护文件免受恶意访问和损坏。

4. 设备管理模块设备管理模块负责操作计算机系统中的各种硬件设备,使之能够与操作系统和应用程序进行有效的通信和交互。

实验二-实验报告(进程管理)

实验二-实验报告(进程管理)

实验二模拟实现进程管理组长:李和林软件1402一、实验目的1.理解进程的概念,明确进程和程序的区别。

2.理解并发执行的实质。

3.掌握进程的创建,睡眠,撤销等进程控制方法。

二、实验内容用C语言,JAVA语言,C++语言编写程序,模拟实现创建新的进程;查看运行进程,换出某个进程;杀死运行进程。

三、实验准备1.进程的定义进程是程序在一个数据集合上的运行过程,是系统资源分配和调度的一个独立单位。

一个程序在不同的数据集合上运行,乃至一个程序在同样数据集合上的多次运行都是不同的进程。

2.进程的状态通常情况下,一个进程必须具有就绪,执行和阻塞三种基本情况。

1)就绪状态当进程已分配到除处理器外的所有必要资源后,只要再获得处理器就可以立即执行,这时进程的状态就为就绪状态。

在一个系统里,可以有多个进程同时处于就绪状态,通常把这些就绪进程排成一个或多个队列,称为就绪队列。

2)执行状态处于就绪状态的进程一旦获得处理器,就可以运行,进程状态也就处于执行状态,在单处理器系统中,只能有一个进程处于执行状态,在多处理器系统中,则可能有多个进程处于执行状态3)阻塞状态正在执行的进程因为发生某些事件而暂停运行,这种受阻暂停的状态称为阻塞状态,也可称为等待状态。

通常将处于阻塞状态的进程拍成一个队列,称为阻塞队列,在有些系统中,也会按阻塞原因的不同将阻塞状态的进程排成多个队列。

3.进程状态之间的转换4.进程控制块1)进程控制块的作用进程控制块是进程实体的重要组成部分,主要包含下述四个方面的信息:a)进程标示信息b)说明信息c)现场信息d)管理信息5.进程控制块的组织方式1)链接方式2)索引方式6.进程控制原语1)创建原语2)撤销原语3)阻塞原语4)唤醒原语7.程序代码#include<stdio.h>#include<iostream>using namespace std;void clrscr();void create();void run( );void exchange( );//唤出void kill( );void wakeUp( );//唤醒struct process_type{int pid;int priority;//优先次序int size;int state;//状态char info[10];};struct process_type internalMemory[20];int amount=0,hangUp=0,pid,flag=0;//数目,挂起void main( ){int n;int a;n=1;clrscr( );while(n==1){cout<<"\n********************************************";cout<<"\n* 进程演示系统 *";cout<<"\n********************************************";cout<<"\n 1.创建新的进程 2.查看运行进程 ";cout<<"\n 3.换出某个进程 4.杀死运行进程 ";cout<<"\n 5.唤醒某个进程¨ 6.退出系统 ";cout<<"\n*********************************************"<<endl;cout<<"请选择 ";cin>>a;switch(a){case 1:create( );break;case 2:run( );break;case 3:exchange();//换出break;case 4:kill();break;case 5:wakeUp();break;case 6:exit(0);default:n=0;}}}void create(){ //创建进程int i=0;if (amount>=20){cout<<" 内存已满,请先结束或换出进程";}else{for (i=0;i<20;i++){if (internalMemory[i].state==0){break;}}cout<<"请输入新进程的pid: "<<endl;cin>>internalMemory[ i ].pid;cout<<"请输入新进程的优先级: "<<endl;cin>>internalMemory[amount].priority;cout<<"请输入新进程的大小: "<<endl;cin>>internalMemory[amount].size;cout<<"请输入新进程的内容: "<<endl;cin>>internalMemory[amount].info;internalMemory[i].state=1;amount++;}}void clrscr()//清除内存空间{for (int i=0;i<19;i++){internalMemory[i].pid=0;internalMemory[i].priority=0;internalMemory[i].size=0;internalMemory[i].state=0;}amount=0;}void run(){for (int i=0;i<20;i++){if (internalMemory[i].state==1){cout<<"当前内存中的进程:\n"<<endl;cout<<"当前运行的进程: ";cout<<internalMemory[i].pid<<endl;cout<<"当前运行进程的优先级: ";cout<<internalMemory[i].priority<<endl;cout<<"当前运行进程占用的空间大小: ";cout<<internalMemory[i].size;}}}void exchange( ){//唤出优先级最小的进程if (!amount){cout<<"当前没有运行进程\n";return;}cout<<"\n输入换出进程的ID值: ";cin>>pid;for (int i=0;i<20;i++){if (pid==internalMemory[i].pid){if (internalMemory[i].state==1){internalMemory[i].state=2;hangUp++;cout<<"\n已经成功换出进程\n";}else if (internalMemory[i].state==0){cout<<"\n要换出的进程不存在";}else{cout<<"\n要换出的进程已被挂起\n";}flag=1;break;}}if (flag==0){cout<<"\n要换出的进程不存在";}}void kill( ){if (!amount){cout<<"当前没有运行进程\n";return;}cout<<"请输入要杀死的进程: ";cin>>pid;for (int i=0;i<20;i++){if (pid==internalMemory[i].pid){if (internalMemory[i].state==1){internalMemory[i].state=0;amount--;cout<<"此进程被杀死"<<pid;}else if (internalMemory[i].state==0){cout<<"\n要杀死的进程不存在\n";}else{cout<<"\n要杀死的进程已被挂起\n";}flag=1;break;}}if (!flag){cout<<"\n要杀死的进程不存在\n";}}void wakeUp(){if (!amount){cout<<"当前没有运行进程"<<endl;return;}if (!hangUp){cout<<"当前没有挂起进程";return;}cout<<"请输入pid: ";cin>>pid;for (int i=0;i<20;i++){if (pid==internalMemory[i].pid){flag=0;if (internalMemory[i].state==2){internalMemory[i].state=1;hangUp--;cout<<"已经成功唤醒进程\n";}else if (internalMemory[i].state==0){cout<<"\n要换醒的进程不存在\n";}else{cout<<"\n要唤醒的进程已被挂起\n";}break;}}if (flag){cout<<"\n要唤醒的进程已被挂起\n"<<endl;}}8.实现的结果。

进 程 控 制

进 程 控 制
进程控制
进程控制的职责是对系统中的所有进程实施有效的管理, 其功能包括进程创建、进程撤销、进程阻塞与唤醒等。
2021年1月27日星期三
1.1 操作系统内核
任何一个计算机系统中都有两种运行状态,即核心态和用户态。 当操作系统内核程序执行时处于核心态,当用户程序执行时处于用户 态。
核心态又称管态、系统态,是操作系统管理程序执行时计算机所 处的状态。这种状态具有较高的特权,能执行一切指令,访问所有的 寄存器和存储区。
2.进程阻塞原语 阻塞原语的功能是将进程由执行状态转变为阻塞状态,其
主要操作过程如下:
4
转进程调度程序,从就绪队列 中选择一个新的进程执行。
3
将进程状态改为阻塞,并插入到相应 事件的等待队列中。
2
保存该进程的CPU现场信息
1
停止当前进程的执行
2021年1月27日星期三
3.进程唤醒原语 唤醒原语的功能是将进程由阻塞状态转变为就绪状态,其主要操
作过程如下: •将被唤醒进程从相应的等待队列中移出。 •将进程状态改为就绪,并将该进程插入就绪队列。 •在某些系统中,如果被唤醒进程比当前执行进程的优先级更高,可 能需要设置调度标志,重新调度。
2021年1月27日星期三
1.4 进程的挂起与激活
1.进程挂起原语
4
若进程挂起前为执行状态,则转进
程调度,从就绪队列中选择一个新
2021年1月27日星期三
3.进程撤销原语 一个进程在完成其任务后应予以撤销,以便及时释放它所占有的各
类资源。引起进程撤销的事件大致有以下几类: •进程正常结束。当一个进程完成其任务后,应该将其撤销并释放其所 占有的资源。 •进程异常结束。 •外界干预。
2021年1月27日星期三

进程创建撤销实验报告

进程创建撤销实验报告

一、实验目的1. 理解进程的概念及其在操作系统中的作用。

2. 掌握进程创建和撤销的基本原理和方法。

3. 通过实验加深对进程管理机制的理解。

二、实验环境1. 操作系统:Linux2. 编程语言:C/C++3. 编译器:GCC三、实验原理在操作系统中,进程是系统进行资源分配和调度的基本单位。

进程创建是指从无到有地创建一个新的进程,而进程撤销则是指结束一个进程的生命周期。

进程创建和撤销是操作系统进程管理中的重要操作。

四、实验内容1. 进程创建实验2. 进程撤销实验五、实验步骤1. 进程创建实验(1)创建一个新进程```c#include <stdio.h>#include <unistd.h>#include <sys/types.h>int main() {pid_t pid = fork(); // 创建子进程if (pid == -1) {perror("fork failed");return 1;} else if (pid == 0) {// 子进程printf("Child process: PID = %d\n", getpid());// 执行子进程的任务} else {// 父进程printf("Parent process: PID = %d\n", getpid());// 等待子进程结束wait(NULL);}return 0;}```(2)编译并运行程序```bashgcc -o process_create process_create.c./process_create```(3)观察输出结果在控制台会看到两个进程的PID,其中一个为父进程,另一个为子进程。

2. 进程撤销实验(1)创建一个新进程```c#include <stdio.h>#include <unistd.h>#include <sys/types.h>#include <sys/wait.h>int main() {pid_t pid = fork(); // 创建子进程if (pid == -1) {perror("fork failed");return 1;} else if (pid == 0) {// 子进程printf("Child process: PID = %d\n", getpid()); // 执行子进程的任务sleep(10); // 子进程睡眠10秒} else {// 父进程printf("Parent process: PID = %d\n", getpid()); // 等待子进程结束wait(NULL);}return 0;}```(2)编译并运行程序```bashgcc -o process_destroy process_destroy.c./process_destroy```(3)观察输出结果在控制台会看到两个进程的PID,父进程会等待子进程结束。

操作系统中的进程管理

操作系统中的进程管理

操作系统中的进程管理进程是计算机系统中最基本的执行单位,操作系统通过进程管理来调度和控制各个进程的执行。

进程管理是操作系统中一个重要的功能模块,它包括进程的创建、撤销、调度、通信和同步等操作。

一、进程的创建在操作系统中,进程的创建是通过系统调用来完成的。

当用户或应用程序需要执行一个新的任务时,操作系统会为该任务创建一个新的进程。

进程的创建过程包括分配内存空间、初始化进程控制块(PCB)、建立上下文环境等。

二、进程的撤销进程的撤销是指将一个正在执行的进程从系统中移除。

有两种情况下会撤销进程:一是进程执行完毕,二是进程发生错误或异常。

撤销进程的过程包括释放进程占用的资源、撤销进程控制块和清理进程的上下文环境等。

三、进程的调度进程调度是指操作系统根据一定的策略从就绪状态中选择一个合适的进程分配CPU时间,使之执行。

常见的调度算法有先来先服务(FIFO)、最短作业优先(SJF)、优先级调度、时间片轮转等。

其中,时间片轮转调度是最常用的调度算法之一。

四、进程的通信进程通信是指两个或多个进程之间的信息交换。

在操作系统中,进程通信可以通过共享内存、消息传递、管道等方式进行。

进程通信的实现需要操作系统提供相应的系统调用和数据结构支持。

五、进程的同步进程同步是指多个进程之间按照一定的顺序执行,避免出现竞态条件和资源争用的情况。

在操作系统中,进程同步可以通过信号量、互斥锁、条件变量等方式实现。

这些同步机制可以保证进程之间的顺序执行和资源的正确共享。

六、进程管理的实践应用进程管理在实际应用中扮演着重要的角色,例如在多任务操作系统中,操作系统可以同时运行多个程序,通过进程管理实现程序的并行执行;在分布式系统中,操作系统可以将任务分配给不同的节点进行并行计算;在服务器上进行进程管理可以实现用户请求的并发处理等。

结语进程管理是操作系统中的重要功能模块,它涉及到进程的创建、撤销、调度、通信和同步等操作。

通过合理的进程管理,操作系统能够提高系统的资源利用率和任务执行效率,为用户提供更好的使用体验。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验一:进程创建与撤消一、实验目的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()流程图:是否是 否是 否Display()流程图:M ain()流程图:(3)调试与测试输入要终止的进程ID 终止进程是队尾进程 队列进程仅有一个删除队尾进程指针p 指向要终止的进程 指针P 移动到指向队尾的前一个进程,将队尾进程插入空闲队列,终止队尾进程 指针p 向后移动,直至只想要删除的进程 指针p 指向的数值与下一个 节点的值交换,p 指向下一个节点,循环至p 指向队尾的上个节点,删除队尾结点 输出:ID,名字,运行时间,优先级menu ()InitQueue () pcb[0].ID =0menu()四、实验总结通过对本实验课题的研究,对队列中进程的创建和删除情况有了一定的了解。

并对程序的编制,又了深一步的体会。

通过这次试验了解到了进程创建与撤销的过程,更好的了解了操作系统的工作模式,通过使用结构体和指针,对以前的知识进行了复习。

五、附录带注释的源程序。

#include<iostream.h>#include<string.h>#include<stdlib>#define OK 1#define ERROR 0#define OVERFLOW -2struct 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;int InitQueue(){ Ready.front=Ready.rear=new QNode;Empty.front=Empty.rear=new QNode;Ready.front->next=NULL;Empty.front->next=NULL;return OK;}void menu(){ cout<<"****=========="<<"1.进程创建\n";cout<<"****=========="<<"2.进程撤销\n";cout<<"****=========="<<"3.就绪队列显示\n";cout<<"****=========="<<"4.退出\n";int choice;cout<<"请选择:";cin>>choice;switch(choice){case 1:create();break;case 2:destroy();break;case 3:display();break;case 4:exit();}}void create(){ char name[20]; long id; float time; int priority; int n; QNode *p;cout<<"请输入要创建进程的数目:";cin>>n;for(int i=1;i<=n;i++){cout<<"进程ID:"; cin>>id;for(int j=i-1;j<=N;j++){while(id==pcb[j].ID){ cout<<"进程ID已存在"<<endl;cout<<"进程ID:"; cin>>id;}}cout<<"进程名:";cin>>name;cout<<"运行时间:"; cin>>time;cout<<"优先级:"; c in>>priority;N++;//保存当前就绪进程数strcpy(pcb[N].NAME,name);pcb[N].ID =id;pcb[N].TIME =time;pcb[N].PRIORITY =priority;p=new QNode;//插入就绪队列p->data=N;p->next=NULL;Ready.rear->next=p;Ready.rear=p;}}for(i=1;i<=N;i++)//按优先级排队{for(int j=i+1;j<=N;j++)if(pcb[i].PRIORITY<pcb[j].PRIORITY){pcb[0]=pcb[i];pcb[i]=pcb[j];pcb[j]=pcb[0];}}menu();}void destroy()//进程终止{long id; QNode *p,*q;cout<<"请输入要终止的进程ID:";cin>>id;p=Ready.front->next;if(p==NULL)cout<<"就绪进程为空!";while(p!=NULL){if(id==pcb[N].ID)//终止进程是队列最后一个{if(N==1) //队列中只有一个进程,且是终止进程{q=new QNode;q->data=Ready.rear->data;Empty.rear->next=p;Empty.rear=p;Ready.front =Ready.rear;Ready.front ->next =NULL;N--;cout<<"进程已终止!";break;}else //队列中进程多个{while(p!=NULL){if(p->next->next ==NULL){q=new QNode;q->data=Ready.rear->data;Empty.rear->next=p;Empty.rear=p;p->next =NULL;Ready.rear =p;N--;cout<<"进程已终止!";break;}p=p->next ;}}}if(id==pcb[p->data].ID){if(Ready.front==Ready.rear)cout<<endl<<"队列为空!";while(p!=NULL){pcb[p->data]=pcb[p->data+1];//修改PCB数组里的值if(p->next ->next ==NULL){q=new QNode;q->data=Ready.rear->data;Empty.rear->next=p;Empty.rear=p;p->next =NULL;Ready.rear =p;cout<<"进程已终止!";break;}p=p->next;}N--;break;}p=p->next ;}menu();}void display(){QNode *p;p=Ready.front->next;cout<<"ID"<<" "<<"名字"<<" "<<"运行时间"<<" "<<"优先级"<<endl;while(p!=NULL){ cout<<pcb[p->data].ID<<" "<<pcb[p->data].NAME<<" "<<pcb[p->data].TIME <<""<<pcb[p->data].PRIORITY<<endl;p=p->next ; }menu(); }void main(){ InitQueue();pcb[0].ID =0;menu();}}。

相关文档
最新文档