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

实验一 进程管理

一、目的

进程调度是处理机管理的核心内容。本实验要求编写和调试一个简单的进程调度程序。通过本实验加深理解有关进程控制块、进程队列的概念,并体会和了解进程调度算法的具体实施办法。

二、实验内容及要求

1、设计进程控制块PCB的结构(PCB结构通常包括以下信息:进程名(进程ID)、进程优先数、轮转时间片、进程所占用的CPU时间、进程的状态、当前队列指针等。可根据实验的不同,PCB结构的内容可以作适当的增删)。为了便于处理,程序中的某进程运行时间以时间片为单位计算。各进程的轮转时间数以及进程需运行的时间片数的初始值均由用户给定。

2、系统资源(r1…rw),共有w类,每类数目为r1…rw。随 机产生n进程Pi(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的数量

…… …… 余下全文

篇二 :操作系统进程管理实验

昆明理工大学信息工程与自动化学院学生实验报告

20## 2011   学年  学期

课程名称:操作系统            开课实验室:信自楼444     20## 年  4 月 10  日

实验目的

通过编写进程管理的算法,要求学生掌握整个进程管理的各个环节,进程的数据结构描述,进程的各种状态之间的转换,以及进程的调度算法。以加深对进程的概念及进程调度算法的理解,并且提高链表的应用能力,达到提高编程能力的目的。

二、实验原理及基本技术路线图(方框原理图)

用C语言或C++语言开发。需要定义PCB的数据结构,用链表的形式管理进程,采用多级反馈队列调度的算法模拟进程的控制。要求有创建、撤销、调度、阻塞、唤醒进程等功能。

进程的状态转换图

数据结构定义、主要变量的说明、函数的说明及各原语的功能说明

typedef struct PCB  定义结构体PCB进程控制块;char NAME[20] 定义结构体变量,进程名;long ID 定义进程id;int RUNTIME 定义进程运行时间;char STATE[6] 定义进程状态 有 ready 、wait 、run;int PRIORITY定义权值。  typedef struct QNode { PCB  pcb; struct QNode *next; }QueuePtr; 定义单链表,有定义指针next。typedef struct LinkQueue { int prior;  QueuePtr *front;  QueuePtr *rear;  int PartTime; }LinkQueue;

…… …… 余下全文

篇三 :操作系统实验二(进程管理)

操作系统进程管理实验

实验题目:

(1) 进程的创建编写一段程序,使用系统调用fork( )创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符“a”;子进程分别显示字符“b”和字符“c”。试观察记录屏幕上的显示结果,并分析原因。

(2) 进程的控制修改已编写的程序,将每个进程输出一个字符改为每个进程输出一句话,在观察程序执行时屏幕上出现的现象,并分析原因。

(3) 编制一段程序,使其实现进程的软中断通信。要求:使用系统调用fork( )创建两个子进程,再用系统调用signal( )让父进程捕捉键盘上来的中断信号(即按Del键);当捕捉到中断信号后,父进程调用系统调用kill( )向两个子进程发出信号,子进程捕捉到信号后分别输出下列信息后终止: Child process 1 is killed by parent! Child process 2 is killed by parent! 父进程等待两个子进程终止后,输出如下的信息后终止: Parent process is killed! 在上面的程序中增加语句signal(SIGINT, SIG_IGN)和 signal(SIGQUIT, SIG_IGN),观察执行结果,并分析原因。

(4) 进程的管道通信编制一段程序,实现进程的管道通信。使用系统调用pipe( )建立一条管道线;两个进程P1和P2分别向管道各写一句话: Child 1 is sending a message! Child 2 is sending a message! 而父进程则从管道中读出来自于两个子进程的信息,显示在屏幕上。要求父进程先接收子进程P1发来的消息,然后再接收子进程P2发来的消息。

实验源程序及报告:

(1)、进程的创建

#include <stdio.h>

…… …… 余下全文

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

********实验报告纸

 计算机科学与工程学院(院、系)网络工程专业 083     操作系统   

学号************   姓名 ****    实验日期 2011.05.20   教师评定          

d) 如果该进程在阻塞队列中,则单击“阻塞—>就绪(f)”按钮可以把进程切换到就绪态,并提“进程**:阻塞—>就绪”信息。具体的操作如下:

四、实验心得

本实验模拟了进程的管理,包括新建进程、进程状态转换等操作,并且还独立设计了专用的链表以模拟进程队列。程序使用JAVA编写,以面向对象的思维抽象出进程和进程队列。

通过本实验,我更加了解进程、进程状态、进程控制等基本概念。同时也复习了JAVA Swing图形界面编程、数据结构中的链、JAVA多线程管理等知识。但还是有不足的,程序设定进程名不能重复,使得程序不能很好的模拟PCB。

…… …… 余下全文

篇五 :操作系统-实验报告-进程管理实验

一、实验目的

本实验要求学生编写和调试一个系统动态分配资源的简单模拟程序,观察死锁产生的条件,并采用适当的算法,有效地防止和避免死锁的发生。

二、实验题目

第一题:用银行家算法实现资源分配。要求:

(1) 设计一个3个并发进程共享10个同类资源的系统,进程可动态地申请资源和释放资源,系统按各进程的申请动态地分配资源。

(2) 设计用银行家算法和随机分配算法,实现资源分配的两个资源分配程序,应具有显示或打印各进程依次要求申请的资源数以及依次分配资源的情况。

(3) 确定一组各进程依次申请资源数的序列,在相同的情况下分别运行上述两种资源分配程序,观察运行结果。

第二题:用按序分配策略实现资源分配。要求:

(1) 设计一个3个进程共享10个资源的系统,进程可动态地申请资源和释放资源,系统按各进程的申请动态地分配资源。

(2) 设计用按序分配算法实现资源分配的资源分配程序,应具有显示或打印各进程依次要求申请的资源号以及依次分配资源地情况。

(3) 确定两组各进程依次要求申请的资源号,要求其中的一组中各进程按序地申请资源,另一组中各进程申请资源不受序号限制,分别运行上述设计的资源分配程序,观察运行结果。

三、数据结构

1)可利用资源向量available

具有m个元素的数组,available[j]=k表示系统中第j类资源有k个可用

2)最大需求矩阵max

n*m矩阵,max[i,j]=k表示进程i需要第j类资源的最大数目为k

3)分配矩阵allocation

n*m矩阵,allocation[i,j]=k表示进程i当前已占用的第j类资源的数目为k

4)需求矩阵need

n*m矩阵,need[i,j]=k表示进程还需要的第j类资源的数目为k

…… …… 余下全文

篇六 :北邮大三上-操作系统-进程管理实验报告

  

班级:2009211311

学号:

姓名:  schnee 


目  录

1.      实验目的... 3

2.      实验预备内容... 3

3.      环境说明... 3

4.      实验内容... 4

4.1.    进程的创建... 4

程序1

4.1.1题目要求:... 4

4.1.2程序设计说明:... 4

4.1.3源代码:... 4

4.1.4运行结果:... 5

4.1.5分析:... 5

4.2.    进程的控制... 6

程序2(a)

4.2.1题目要求:... 6

4.2.2程序设计说明:... 6

4.2.3源代码:... 6

4.2.4运行结果:... 7

4.2.5分析:... 7

程序2(b)

4.2.1题目要求:... 7

4.2.2程序设计说明:... 8

4.2.3源代码:... 8

4.2.4运行结果:... 9

4.2.5分析:... 10

4.3.    进程的软中断通信... 11

程序3(a)

4.3.1题目要求:... 11

4.3.2程序设计说明:... 11

4.3.3源代码:... 12

4.3.4运行结果:... 14

4.3.5分析:... 14

程序3(b)

4.3.1题目要求:... 14

4.3.2程序设计说明:... 14

4.3.3源代码:(略) 15

4.3.4运行结果及分析:... 15

…… …… 余下全文

篇七 :操作系统原理与Linux_进程管理实验报告

计算机科学与技术系

实 验 报 告

课程名称:___操作系统原理与Linux___

实验名称:___ 进程管理      _______

班    级:____计算机08-2           

学    号:    08034050217         

姓    名:      XXXX             

20##年  03 月  23日

实验二 进程管理

.   实验目的:

(1)加深对进程概念的理解,明确进程和程序的区别。

(2)进一步认识并发执行的实质。

(3)分析进程竞争资源现象,学习解决进程互斥的方法。

二.    实验内容:

1、进程创建;

2、进程控制。

.   实验作业:

1、调试下面进程控制源程序:试观察纪录屏幕上的显示结果,并分析原因。

〈程序1〉源代码

#include<stdio.h>

main()

{

  int p1,p2,i;

  if(p1=fork())

{

               for(i=0;i<500;i++)

…… …… 余下全文

篇八 :操作系统实验报告----进程管理

实验内容:进程管理

一、实验目的

1、 掌握Linux中进程的创建方法及执行情况;

2、 加深对进程、进程树等概念的理解;

3、掌握Linux中如何加载子进程自己的程序;

4、掌握父进程通过创建子进程完成某项任务的方法;

5.、掌握系统调用exit()和_exit()调用的使用。

6、分析进程竞争资源的现象,学习解决进程互斥的方法;进一步认识并发执行的实质

二、实验内容

(一)进程的创建

1、编写一段程序,使用系统调用fork( )创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符。

#include<stdio.h>

main()

{

int p,x;

p=fork();

if(p>0)

{

x=fork();

if(x>0)

printf("father\n");

else

printf("child2");

}

else

printf("child1");

}

输出结果:

child1

child2

father

2、运行以下程序,分析程序执行过程中产生的进程情况。

#include <stdio.h>

main()

{

int p,x;

p=fork();

if (p>0)

fork();

else{

fork();

fork();

}

sleep(15);

}

实验步骤:

编译连接 gcc –o forktree forktree.c

后台运行 ./forktree &

使用 pstree –h 查看进程树

运行结果:

├─gnome-terminal─┬─bash─┬─forktree─┬─forktree─┬─forktree───forktree

…… …… 余下全文