电大操作系统实验2:进程管理实验

合集下载

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

操作系统实验二:进程管理操作系统实验二:进程管理篇一:操作系统实验报告实验一进程管理一、目的进程调度是处理机管理的核心内容。

本实验要求编写和调试一个简单的进程调度程序。

通过本实验加深理解有关进程控制块、进程队列的概念,并体会和了解进程调度算法的具体实施办法。

二、实验内容及要求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; //进程IDpublic int ra; //所需资源A的数量public int rb; //所需资源B的数量public int rc; //所需资源C的数量public int ntime; //所需的时间片个数public int rtime; //已经运行的时间片个数public char state; //进程状态,W(等待)、R(运行)、B(阻塞)//public int next;}ArrayList hready = new ArrayList();ArrayList hblock = new ArrayList();Random random = new Random();//ArrayList p = new ArrayList();int m, n, r, a,a1, b,b1, c,c1, h = 0, i = 1, time1Inteval;//m为要模拟的进程个数,n为初始化进程个数//r为可随机产生的进程数(r=m-n)//a,b,c分别为A,B,C三类资源的总量//i为进城计数,i=1…n//h为运行的时间片次数,time1Inteval为时间片大小(毫秒)//对进程进行初始化,建立就绪数组、阻塞数组。

电大操作系统实验报告3_ 进程管理实验

电大操作系统实验报告3_ 进程管理实验

电大操作系统实验报告3_ 进程管理实验电大操作系统实验报告 3 进程管理实验一、实验目的进程管理是操作系统的核心功能之一,本次实验的目的是通过实际操作和观察,深入理解进程的概念、状态转换、进程调度以及进程间的通信机制,掌握操作系统中进程管理的基本原理和方法,提高对操作系统的整体认识和实践能力。

二、实验环境本次实验使用的操作系统为 Windows 10,编程语言为 C 语言,开发工具为 Visual Studio 2019。

三、实验内容及步骤(一)进程的创建与终止1、编写一个 C 程序,使用系统调用创建一个子进程。

2、在父进程和子进程中分别输出各自的进程 ID 和父进程 ID。

3、子进程执行一段简单的计算任务,父进程等待子进程结束后输出结束信息。

以下是实现上述功能的 C 程序代码:```cinclude <stdioh>include <stdlibh>include <unistdh>int main(){pid_t pid;pid = fork();if (pid < 0) {printf("创建子进程失败\n");return 1;} else if (pid == 0) {printf("子进程:我的进程 ID 是%d,父进程 ID 是%d\n",getpid(), getppid());int result = 2 + 3;printf("子进程计算结果:2 + 3 =%d\n", result);exit(0);} else {printf("父进程:我的进程 ID 是%d,子进程 ID 是%d\n",getpid(), pid);wait(NULL);printf("子进程已结束\n");}return 0;}```编译并运行上述程序,可以观察到父进程和子进程的输出信息,验证了进程的创建和终止过程。

(二)进程的状态转换1、编写一个 C 程序,创建一个子进程,子进程进入睡眠状态一段时间,然后被唤醒并输出状态转换信息。

电大操作系统实验2进程管理实验

电大操作系统实验2进程管理实验

电大操作系统实验2进程管理实验进程管理是操作系统的核心功能之一,它负责控制和协调计算机系统中的进程,以提高系统的效率和资源利用率。

在电大操作系统实验2中,我们需要进行进程管理实验,通过实际操作和观察,深入理解和掌握进程管理的相关知识。

进程是操作系统分配资源和执行程序的基本单位。

在实验中,我们可以通过创建、销毁、调度、挂起等操作来模拟进程的管理和调度过程。

首先,我们需要了解进程的创建和销毁。

进程的创建可以通过fork(系统调用来实现,它会创建一个子进程并复制当前进程的状态。

子进程可以执行不同的程序,也可以通过exec(系统调用加载一个新的程序。

进程的销毁可以通过exit(系统调用来实现,它会释放进程占用的资源,并将控制权返回给父进程或操作系统。

其次,我们需要了解进程的调度和挂起。

进程的调度是指操作系统如何从就绪队列中选择下一个要执行的进程,可以根据优先级、时间片轮转等算法进行选择。

实验中,我们可以通过设置进程的优先级来观察不同优先级对进程调度的影响。

进程的挂起是将进程从运行状态转换为阻塞状态,通常是因为需要等待一些事件的发生。

实验中,我们可以通过设置定时器等待一段时间来模拟进程的挂起操作。

此外,进程间的通信也是进程管理的重要内容之一、进程间通信可以通过管道、共享内存、信号量等方式实现,它们可以实现进程之间的数据交换和共享。

实验中,我们可以通过管道或共享内存来实现简单的进程间通信,观察不同通信方式的性能差异。

在实验过程中,我们需要对进程的状态进行监控和统计。

可以通过系统调用来获取和记录进程的状态信息,包括进程的ID、状态、优先级等。

可以通过编写监控程序或脚本来实现进程状态的实时监控和统计。

通过进行进程管理实验,我们可以深入理解操作系统中进程的管理原理和机制。

通过实际操作和观察,我们可以更加直观地感受进程的创建、销毁、调度和挂起过程,并从中总结经验和教训。

总的来说,电大操作系统实验2的进程管理实验是一个非常重要的实验,它可以帮助我们更好地理解和掌握操作系统中进程管理的相关知识。

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

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

操作系统进程管理实验实验题目:(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>int main(int argc, char *argv[]){int pid1,pid2; /*fork first child process*/if ( ( pid1=fork() ) < 0 ){printf( "ProcessCreate Failed!");exit(-1);}if ( ( pid1=fork() ) == 0 ){printf( "b\n" );}/*fork second child process*/if ( ( pid2=fork() ) < 0 ){printf( "ProcessCreate Failed!"); exit(-1);}if ( ( pid2=fork() ) == 0 ){printf( "c\n" );}/*parent process*/else{wait(NULL);printf( "a\n" );exit(0);}return 0;}(2)、进程的控制#include <stdio.h>int main(int argc, char *argv[]){ int pid1,pid2;/*fork first child process*/if ( ( pid1=fork() ) < 0 ){printf( "ProcessCreate Failed!");exit(-1);}if ( ( pid1=fork() ) == 0 ){printf( "This is my Unix OS program!\n" ); }/*fork second child process*/if ( ( pid2=fork() ) < 0 ){printf( "ProcessCreate Failed!");exit(-1);}if ( ( pid2=fork() ) == 0 ){printf( "This is the second Child process!\n" ); }/*parent process*/else{wait(NULL);printf( "This is the Parent process\n" );exit(0);}return 0;}(3)编制一段程序,使其实现进程的软中断通信。

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

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

实验内容:进程管理一、实验目的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");elseprintf("child2");}elseprintf("child1");}输出结果:child1child2father2、运行以下程序,分析程序执行过程中产生的进程情况。

#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 查看进程树运行结果:├─gnom e-terminal─┬─bash─┬─forktree─┬─forktree─┬─forkt ree───forktree││││└─forktree│││└─forktree││└─pstree 分析:程序运行,系统首先创建一个进程forktree,执行到p=fork()创建一个子进程forktree,子进程获得处理机优先执行,父进程等待;执行else,当执行到第一个fork()函数时,子进程创建了一个进程forktree,称之为孙进程,孙进程获得处理机往下执行,子进程等待;执行到第二个fork()函数时,孙进程又创建一个进程forktree,称之为重孙进程,重孙进程很快执行完,将处理机还给孙进程,孙进程很快执行完,将处理机还给子进程;子进程继续往下执行,执行到第二个fork()函数,又创建一个进程forktree,称之为第二孙进程,并获得处理机执行,此进程很快执行完,将处理机还给子进程,子进程也很快执行完,将处理机还给父进程,父进程P>0执行if语句,运行fork()函数,又创建一个进程forktree,称之为第二子进程,此进程获得处理机执行很快运行完,将处理机还给父进程,父进程运行sleep(15)语句,休眠15秒,用pstree命令查询进程树。

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

2.进程的控制(随机执行以及加锁执行)
修改上述程序,将每个进程输出结果修改为每个进程输出几行字符(在此,如果为第一个子进程,则连续输出10行“the first child process”;如果为第二个子进程,则连续输出10行“the second child process”;如果为父进程,则连续输出10行“the parent process”),再观察程序的执行结果,并分析原因。然后,在上述程序中使用函数lockf()给每个进程加锁(锁定屏幕输出),从而实现进程之间互斥,观察并分析结果。
二、实验步骤及过程(可以附算法)
1.进入vi编辑器,创建test.c文件
2.输入代码如下;
3.输入gcc –o test test.c对test.c文件进行编译,输入./test对test.c文件进行执行,结果如下。
4.创建te.c文件
5.输入代码如下;
6.输入gcc –o te te.c对te.c文件进行编译,输入./te对te.c文件进行执行,结果如下。
实验名称:进程管理
组别:合作者:日期:5/24
一、预习:实验内容及要求
(实验目的:
1.加深对进程概念的理解,区分进程和程序的区别
2.进一步了解进程并发执行的本质
(2).实验内容:
1.创建进程
编写一段程序,使用函数fork()创建两个子进程,执行该程序时,在系统中同时存在一个父进程以及两个子进程活动。此时,让每个进程在屏幕上显示一个字符:父进程显示字符“p”;子进程分别显示字符“a”和字符“b”。请观察并记录程序的执行结果,并分析具体原因。
7.加入lockf()函数代码如下
8.再次编译并执行;
三、实验结果及分析(可另加附页)
通过本次实验了解了进程的进本操作,还有几个函数的基本调用,有fork()函数,lockf函数等等。

操作系统 进程管理实验

第二章进程管理实验【实验目的】1、加深对进程概念的理解,明确进程和程序的区别;2、进一步认识并发执行的实质;3、分析进程争用资源的现象,学习解决进程互斥的方法;4、了解Linux系统中进程通信的基本原理【准备知识】一.基本概念1、进程的概念;进程与程序的区别。

2、并发执行的概念。

3、进程互斥的概念。

4、进程通信的基本原理。

二.系统调用系统调用是一种进入系统空间的办法。

通常,在OS的核心中都设置了一组用于实现各种系统功能的子程序,并将它们提供给程序员调用。

程序员在需要OS提供某种服务的时候,便可以调用一条系统调用命令,去实现希望的功能,这就是系统调用。

因此,系统调用就像一个黑箱子一样,对用户屏蔽了操作系统的具体动作而只是控制程序的执行速度等。

各个不同的操作系统有各自的系统调用,如windows API,便是windows的系统调用,Linux的系统调用与之不同的是Linux由于内核代码完全公开,所以可以细致的分析出其系统调用的机制。

1 系统调用和普通过程的区别1.1 运行于不同的系统状态用户程序可以通过系统调用进入系统空间,在核心态执行;而普通过程则只能在用户空间当中运行。

1.2 通过软中断切换由于用户程序使用系统调用后要进入系统空间,所以需要调用一个软中断;而普通过程在被调用时没有这个过程。

2 系统调用的类型系统调用的作用与它所在的操作系统有密切关系,根据操作系统的性质不同,它们所提供的系统调用会有一定的差异,不过对于普通操作系统而言,应该具有下面几类系统调用: (1) 进程控制类型; (2) 文件操纵类型; (3) 进程通信类型;(4) 信息维护类型。

3 系统调用的实现机制 由于操作系统的不同,其系统调用的实现方式可能不同,然而实现机制应该是大致相同的,一般包含下面几个步骤:3.1 设置系统调用号 在系统当中,往往设置多条系统调用命令,并赋予每条系统调用命令一个唯一的系统调用号。

根据分配系统调用号方式的不同分为:直接方式和参数表方式。

电大操作系统实验2:进程管理实验

电大操作系统实验2:进程管理实验
实验目的:
1.加深对进程概念的理解,特别是进程的动态性和并发性。

2.了解进程的创建和终止。

3.学会查看进程的状态信息。

4.学会使用进程管理命令。

实验要求:
1.理解有关进程的概念,能够使用ps命令列出系统中进
程的有关信息并进行分析。

2.理解进程的创建和族系关系。

3.能够使用&,jobs,bg,at等命令控制进程的运行。

实验内容:
1.使用ps命令查看系统中运行进程的信息。

实验环境:
实验步骤和结果:
1.输入ps命令,可以报告系统当前的进程状态。

2.输入ps-e命令,可以显示系统中运行的所有进程,包括系统进程和用户进程。

3.输入ps-f命令,可以得到进程的详细信息。

进程控制:
1.后台进程
1) $grep "注册用户名" /etc/passwd。

/tmp/abc &
2.作业控制
1) 进程休眠60秒Sleep 60 &
2) 进程休眠30秒Sleep 30 &
3) 查看进程状态Jobs
4) 将睡眠30秒的sleep命令放在前台执行fg%2
3.发送中断信号
1) 后台运行sleep命令$sleep 120 &
2) 查看sleep进程的状态$ps-p pid
3) 终止sleep命令$kill -9 pid。

操作系统实验二进程管理

操作系统实验实验二进程管理学号姓名班级华侨大学电子工程系实验目的1、理解进程的概念,明确进程和程序的区别。

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

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

实验内容与要求基本要求:用C语言编写程序,模拟实现创建新的进程;查看运行进程;换出某个进程;杀死进程等功能。

实验报告内容1、进程、进程控制块等的基本原理。

进程是现代操作系统中的一个最基本也是最重要的概念,掌握这个概念对于理解操作系统实质,分析、设计操作系统都有其非常重要的意义。

为了强调进程的并发性和动态性,可以给进程作如下定义:进程是可并发执行的程序在一个数据集合上的运行过程,是系统进行资源分配和调度的一个独立单位。

进程又就绪、执行、阻塞三种基本状态,三者的变迁图如下:,当某程序不在CPU上运行时,必须保留其被中断的程序的现场,包括:断点地址、程序状态字、通用寄存器的内容、堆栈内容、程序当前状态、程序的大小、运行时间等信息,以便程序再次获得CPU时,能够正确执行。

为了保存这些内容,需要建立—个专用数据结构,我们称这个数据结构为进程控制块PCB (Process Control Block)。

进程控制块是进程存在的惟一标志,它跟踪程序执行的情况,表明了进程在当前时刻的状态以及与其它进程和资源的关系。

当创建一个进程时,实际上就是为其建立一个进程控制块。

在通常的操作系统中,PCB应包含如下一些信息:①进程标识信息。

为了标识系统中的各个进程,每个进程必须有惟一的标识名或标识数。

②位置信息。

指出进程的程序和数据部分在内存或外存中的物理位置。

③状态信息。

指出进程当前所处的状态,作为进程调度、分配CPU的依据。

④进程的优先级。

一般根据进程的轻重缓急其它信息。

这里给出的只是一般操作系统中PCB所应具有的内容,不同操作系统的PCB结构是不同的,我们将在2.8节介绍Linux系统的PCB结构。

程度为进程指定一个优先级,优先级用优先数表示。

⑤进程现场保护区。

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

五、实验环境:
(说明:列出本实验使用到的软件平台和工具,如Linux系统版本,shell类型,vi编辑工具等。


在虚拟机中的Linux RedHat Linux 9
六、实验步骤和结果:
(说明:详细给出实验步骤和结果。

实验步骤不一定与《实验指南》中的完全一致。

对实验结果,除文字说明外,对一些关键结果,需要给出一些界面截图。

)1、输入ps 命令
PS命令用来报告系统当前的进程状态。

2、输入ps –e命令
可以显示系统中运行的所有进程,包括系统进程和用户进程。

3、输入ps –f命令
可以得到进程详细信息。

4、输入ps –el 命令
显示进程环境变量列出长表。

二、进程控制
1、后台进程
(1)$grep “注册用户名” /etc/passwd > /tmp/abc & (2)ps –p pid
2、作业控制
(1)进程休眠60秒Sleep 60 &
(2)进程休眠30秒Sleep 30 &
(3)查看进程状态Jobs
(4)把睡眠30秒的sleep命令放在前台执行fg %2 (5)当提示符出现后,再查看进程状态jobs
三、发送中断信号
(1)后台运行sleep命令$sleep 120 & (2)查看sleep进程的状态$ps –p pid
(3)终止sleep命令$kill -9 pid (4)再查看sleep进程的状态$ps –p pid
四、减轻系统负载
【at命令】
让一个命令在指定的时间运行,并把结果输出在一个文件中
例:
at time
>date
>who
><ctrl>d
at 命令会把已执行命令的标准输出发送到用户的邮箱,用cat命令查看邮箱内容,显示结果。

七、实验结果分析:。

相关文档
最新文档