操作系统实验一 进程管理

实验一  进程管理

1.目的和要求

通过实验理解进程的概念,进程的组成(PCB结构),进程的并发执行和操作系统进行进程管理的相关原语(主要是进程的创建、执行、撤消)。

2.实验内容

用C语言编程模拟进程管理,至少要有:创建新的进程;查看运行进程;换出某个进程;杀死运行进程以及进程之间通信等功能。

3.实验环境

Windows操作系统、VC++6.0

C语言

4.实验提示

PCB结构通常包括以下信息:进程名,进程优先数,轮转时间片,进程所占用的CPU时间,进程的状态,当前队列指针等。可根据实验的不同,PCB结构的内容可以作适当的增删。

主体程序  

 #include "conio.h"

#include "stdio.h"

#include "stdlib.h"

struct  PCB_type

   {  int pid;

      int priority;

      int cputime;

………   

};

struct PCB_type neicun[20];

int shumu=0,pid_l;

main()

   {

    int n,m,i;

    char a;

    n=1;

    while(n==1)

    {

clrscr();

printf("\n********************************************");

printf("\n*               进程演示系统               *");

printf("\n********************************************");

printf("\n     1.创建新的进程      2.查看运行进程     ");

printf("\n     3.换出某个进程      4.杀死运行进程     ");

printf("\n     5.退出系统                             ");

printf("\n********************************************");

printf("\n请选择(1~5)");

a=getchar();

       switch(a)

    { case'1':

        create( );  /*自定义过程*/

      break;

      case'2':

        run( );  /* 自定义过程 */

       break;

      case'3':

      huanchu();  /*自定义过程*/

      break;

   case'4':

        kill( );   /*自定义过程*/

      break;

   case'5':

      exit(0);  

        default: n=0;

 }

       }

   }



create( )  /* 创建一个进程的示例(不完整的程序) */

{

      if(shumu>=20)

          {

          printf("\n内存已满,请先结束或换出进程\n");

          }

          else

          {

     printf("\n请输入新进程的pid\n");

           scanf("%d",&neicun[shumu-1].pid);

           printf("\n请输入新进程的优先级\n");

           scanf("%d",&neicun[shumu-1].youxian);

           printf("\n请输入新进程的大小\n");

           scanf("%d",&neicun[shumu-1].daxiao);

           shumu++;

          }

}

5.实验运行结果

********************************************

*               进程演示系统               *

********************************************

     1.创建新的进程      2.查看运行进程     

     3.换出某个进程      4.杀死运行进程     

     5.退出系统         

********************************************

请选择(1~5)

然后根据你选择的不同,出现不同的结果。

6. 实验要求:

  1. 上机前认真使用C语言编写好程序,采用Visual C++6.0作为编译环境;
  2. 上机时独立调试程序

根据具体实验要求,填写好实验报告(包括目的和要求、实验内容、实验环境、设计思想、源程序、实例运行结果、总结)

 

实验报告代码:

#include "stdio.h"
#include "conio.h"
#include "stdlib.h"
struct PCB_type
{  int pid;
   int priority;
   int size;
   char content[10];
   int state;     /* 0表示不在内存,1表示在内存,2表示挂起*/ 
};
struct PCB_type storage[20];
int num=0,hang_up=0,bj,i,j,pid;/*定义相关参数变量*/
/*********************创建新进程*************************/
void create()
{  
    if(num>=20)   /*判断是否有存储空间*/
        printf("\n 内存已满,请删除或挂起其他程序");
    else{
        for(i=0;i<20;i++)
         if(storage[i].state==0) break; /*按顺序在内存中寻找创建新进程的空间*/
           printf("\n请输入新建进程的pid值\n");
           scanf("%d",&storage[i].pid);
           for(j=0;j

运行结果:

操作系统实验一 进程管理_第1张图片

你可能感兴趣的:(操作系统)