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

操作系统实验报告进程管理操作系统实验报告:进程管理引言操作系统是计算机系统中的核心软件,负责管理计算机的硬件资源和提供用户与计算机之间的接口。
进程管理是操作系统的重要功能之一,它负责对计算机中运行的各个进程进行管理和调度,以保证系统的高效运行。
本实验报告将介绍进程管理的基本概念、原理和实验结果。
一、进程管理的基本概念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为时间片大小(毫秒)//对进程进行初始化,建立就绪数组、阻塞数组。
计算机操作系统实验二Windows任务管理器的进程管理

计算机操作系统实验二Windows任务管理器的进程管理实验二 Windows任务管理器的进程管理一实验目的1)在Windows 任务管理器中对程序进程进行响应的管理操作;2)熟悉操作系统进程管理的概念;3)学习观察操作系统运行的动态性能。
二实验环境需要准备一台运行Windows XP操作系统的计算机。
三背景知识Windows XP的任务管理器提供了用户计算机上正在运行的程序和进程的相关信息,也显示了最常用的度量进程性能的单位。
使用任务管理器,可以打开监视计算机性能的关键指示器,快速查看正在运行的程序的状态,或者终止已停止响应的程序。
也可以使用多个参数评估正在运行的进程的活动,以及查看CPU 和内存使用情况的图形和数据。
四实验内容与步骤启动并进入Windows环境,单击Ctrl + Alt + Del键,或者右键单击任务栏,在快捷菜单中单击“任务管理器”命令,打开“任务管理器”窗口。
当前机器中由你打开,正在运行的应用程序有:1) 实验二Windows 任务管理器的进程管理2) 常州大学—Windows Internet Explore3) 实验一Windows XP 系统管理4)可移动磁盘(H:)Windows“任务管理器”的窗口由_5_个选项卡组成,分别是:1) 应用程序2) 进程3) 性能4)联网当前“进程”选项卡显示的栏目分别是(可移动窗口下方的游标/箭头,或使窗口最大化进行观察) :1) 映像名称2) 用户名3) CPU4) 内存使用1. 使用任务管理器终止进程步骤1:单击“进程”选项卡,一共显示了__24_个进程。
请试着区分一下,其中:系统(SYSTEM) 进程有_14_个,填入表2-1中。
表2-1 实验记录映像名称用户名作用内存使用svchost.exe SYSTEM 用于执行dll文件 4988Kspoolsv.exe SYSTEM 管理所有本地和网络打 5544K印队列及控制所有打印工作lsass.exe SYSTEM 本地安全授权服务1460K services.exe SYSTEM 远程控制木马病毒3816Kwinlogon.exe SYSTEM 管理用户登录和退出5244Kcarss.exe SYSTEM 负责控制windows 12552K smss.exe SYSTEM 系统关键进程 500K CDAC11BA.exe SYSTEM 反复制保护软件1440K server.exe SYSTEM 用于Novell服务监听1196K MATLAB.exe SYSTEM 一种科学计算工程软件46576K MDM.exe SYSTEM 进行本地和远程调试 3532K service.exe SYSTEM 管理启动停止服务 3366K Inetinfo.exe SYSTEM 用于Debug调试除错 10236K system SYSTEM 系统进程 312K服务(SERVICE) 进程有_3_个,填入表2-2中。
实验二Windows任务管理器的进程管理

实验⼆Windows任务管理器的进程管理实验⼆ Windows任务管理器的进程管理⼀实验⽬的1)在Windows 任务管理器中对程序进程进⾏响应的管理操作;2)熟悉操作系统进程管理的概念;3)学习观察操作系统运⾏的动态性能。
⼆实验环境需要准备⼀台运⾏Windows XP操作系统的计算机。
三背景知识Windows XP的任务管理器提供了⽤户计算机上正在运⾏的程序和进程的相关信息,也显⽰了最常⽤的度量进程性能的单位。
使⽤任务管理器,可以打开监视计算机性能的关键指⽰器,快速查看正在运⾏的程序的状态,或者终⽌已停⽌响应的程序。
也可以使⽤多个参数评估正在运⾏的进程的活动,以及查看CPU 和内存使⽤情况的图形和数据。
四实验内容与步骤启动并进⼊Windows环境,单击Ctrl + Alt + Del键,或者右键单击任务栏,在快捷菜单中单击“任务管理器”命令,打开“任务管理器”窗⼝。
当前机器中由你打开,正在运⾏的应⽤程序有:1) 实验⼆Windows任务管理器的进程管理Windows“任务管理器”的窗⼝由 5 个选项卡组成,分别是:1) 应⽤程序2) 进程3) 性能4) 联⽹5) ⽤户当前“进程”选项卡显⽰的栏⽬分别是(可移动窗⼝下⽅的游标/箭头,或使窗⼝最⼤化进⾏观察) :1) 映像名称2) ⽤户名3) CPU4) 内存使⽤1. 使⽤任务管理器终⽌进程步骤1:单击“进程”选项卡,⼀共显⽰了36 个进程。
请试着区分⼀下,其中:系统(SYSTEM) 进程有19 个,填⼊表2-1中。
表2-1 实验记录服务(SERVICE) 进程有4 个,填⼊表2-2中。
表2-2 实验记录⽤户进程有9 个,填⼊表2-3中。
步骤2:单击要终⽌的进程,然后单击“结束进程”按钮。
终⽌进程,将结束它直接或间接创建的所有⼦进程。
例如,如果终⽌了电⼦邮件程序(如Outlook 98) 的进程树,那么同时也终⽌了相关的进程,如MAPI后台处理程序mapisp32.exe。
进程管理实验二

#include<stdio.h>main(){int p,x;p=fork();if(p>0){x=fork();if(x>0)printf("father\n");elseprintf("child2");}elseprintf("child1");}实验步骤及输出结果:[test@localhost 桌面]$ gcc -o 1 1.c[test@localhost 桌面]$ ./1father[test@localhost 桌面]$ child2child12、运行以下程序,分析程序执行过程中产生的进程情况。
#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 查看进程树实验步骤及输出结果:[test@localhost 桌面]$ gcc -o forktree forktree.c[test@localhost 桌面]$ ./forktree &[1] 3952[test@localhost 桌面]$ pstree -hinit─┬─NetworkManager─┬─dhclient│ └─{NetworkManager}├─abrtd├─acpid├─atd├─auditd───{auditd}├─automount───4*[{automount}]├─avahi-daemon───avahi-daemon├─bonobo-activati───{bonobo-activat}├─clock-applet├─console-kit-dae───63*[{console-kit-da}]├─crond├─2*[dbus-daemon───{dbus-daemon}]├─2*[dbus-launch]├─devkit-power-da├─gconf-im-settin├─gconfd-2├─gdm-binary───gdm-simple-slav─┬─Xorg│└─gdm-session-wor───gnome-session─┬─abrt-ap+│ ├─bluetoo+│ ├─gdu-not+│ ├─gnome-p+│ ├─gnome-p+│ ├─gnome-v+│ ├─gpk-upd+│├─metacit+│ ├─nautilus│ ├─polkit-+│├─restore+│ ├─rhsm-co+│ └─{gnome-+├─gdm-user-switch├─gedit├─gnome-keyring-d───2*[{gnome-keyring-}]├─gnome-screensav├─gnome-settings-───{gnome-settings}├─gnome-terminal─┬─bash───pstree│ ├─gnome-pty-helpe│ └─{gnome-terminal}├─gnote├─gvfs-afc-vol ume───{gvfs-afc-volum}├─gvfs-gdu-volume├─gvfs-gphoto2-vo├─gvfsd├─gvfsd-burn├─gvfsd-computer├─gvfsd-metadata├─gvfsd-trash├─hald───hald-runner─┬─hald-addon-acpi│ └─hald-addon-inpu├─ibus-x11├─im-settings-dae───ibus-daemon─┬─ibus-engine-pin│ ├─ibus-gconf│ ├─python│ └─{ibus-daemon}├─loop├─master─┬─pickup│└─qmgr├─5*[mingetty]├─modem-manager├─notification-ar├─notification-da├─polkitd├─pulseaudio─┬─gconf-helper│ └─2*[{pulseaudio}]├─rhsmcertd├─rpc.idmapd├─rpc.mountd├─rpc.rquot ad├─rpc.statd├─rpcbind├─rsyslogd───2*[{rsyslogd}]├─rtkit-daemon───2*[{rtkit-daemon}]├─seahorse-daemon├─sshd├─trashapplet├─udevd───2*[udevd]├─udisks-daemon───udisks-daemon├─wnck-applet├─wpa_s upplicant└─xinetd[1]+ Done ./forktree3、运行程序,分析运行结果。
电大操作系统实验2进程管理实验

电大操作系统实验2进程管理实验进程管理是操作系统的核心功能之一,它负责控制和协调计算机系统中的进程,以提高系统的效率和资源利用率。
在电大操作系统实验2中,我们需要进行进程管理实验,通过实际操作和观察,深入理解和掌握进程管理的相关知识。
进程是操作系统分配资源和执行程序的基本单位。
在实验中,我们可以通过创建、销毁、调度、挂起等操作来模拟进程的管理和调度过程。
首先,我们需要了解进程的创建和销毁。
进程的创建可以通过fork(系统调用来实现,它会创建一个子进程并复制当前进程的状态。
子进程可以执行不同的程序,也可以通过exec(系统调用加载一个新的程序。
进程的销毁可以通过exit(系统调用来实现,它会释放进程占用的资源,并将控制权返回给父进程或操作系统。
其次,我们需要了解进程的调度和挂起。
进程的调度是指操作系统如何从就绪队列中选择下一个要执行的进程,可以根据优先级、时间片轮转等算法进行选择。
实验中,我们可以通过设置进程的优先级来观察不同优先级对进程调度的影响。
进程的挂起是将进程从运行状态转换为阻塞状态,通常是因为需要等待一些事件的发生。
实验中,我们可以通过设置定时器等待一段时间来模拟进程的挂起操作。
此外,进程间的通信也是进程管理的重要内容之一、进程间通信可以通过管道、共享内存、信号量等方式实现,它们可以实现进程之间的数据交换和共享。
实验中,我们可以通过管道或共享内存来实现简单的进程间通信,观察不同通信方式的性能差异。
在实验过程中,我们需要对进程的状态进行监控和统计。
可以通过系统调用来获取和记录进程的状态信息,包括进程的ID、状态、优先级等。
可以通过编写监控程序或脚本来实现进程状态的实时监控和统计。
通过进行进程管理实验,我们可以深入理解操作系统中进程的管理原理和机制。
通过实际操作和观察,我们可以更加直观地感受进程的创建、销毁、调度和挂起过程,并从中总结经验和教训。
总的来说,电大操作系统实验2的进程管理实验是一个非常重要的实验,它可以帮助我们更好地理解和掌握操作系统中进程管理的相关知识。
操作系统实验报告二 进程管理 fork()

闽南师范大学实验报告
实 验 内 容 与 具 体 步 骤
第3页
闽南师范大学实验报告 通过此次实验对进程运行过程有了初步的了解,对用 fork()函数从已存在的进程创建一个新的 进程,会用 getpid()函数取得进程识别码。
实 验 心 得
注:如果填写内容超出表格,自行添加附页。ຫໍສະໝຸດ 第4页闽南师范大学
实验报告
班级
学号 姓名 成绩
同组人
实验日期
课程名称:操作系统
实验题目:进程管理
1.对理论课中学习的进程、程序等的概念作进一步的理解,明确进程和程序的区别; 2. 加深理解进程并发执行的概念,认识多进程的并发执行的实质;
实 验 目 的 与 要 求
PC 兼容机。Window xp 以上操作系统
} else if (pid == 0) { printf("child1 pid is %d\n",getpid()); for(i=0;i<26;i++) {
sleep(1); printf("%c\n",'A'+i); } } else { pid1=fork(); if(pid1==0){ printf("child2 pid is%d\n",getpid()); for(i=0;i<26;i++) { sleep(1); printf("%c\n",'a'+i); } } else if(pid1>0){ printf("parent pid is%d\n",getppid()); for(i=1;i<=26;i++) { sleep(1); printf("%d\n",i); } } } return 0;
进程管理实验报告分析(3篇)

第1篇一、实验背景进程管理是操作系统中的一个重要组成部分,它负责管理计算机系统中所有进程的创建、调度、同步、通信和终止等操作。
为了加深对进程管理的理解,我们进行了一系列实验,以下是对实验的分析和总结。
二、实验目的1. 加深对进程概念的理解,明确进程和程序的区别。
2. 进一步认识并发执行的实质。
3. 分析进程争用资源的现象,学习解决进程互斥的方法。
4. 了解Linux系统中进程通信的基本原理。
三、实验内容1. 使用系统调用fork()创建两个子进程,父进程和子进程分别显示不同的字符。
2. 修改程序,使每个进程循环显示一句话。
3. 使用signal()捕捉键盘中断信号,并通过kill()向子进程发送信号,实现进程的终止。
4. 分析利用软中断通信实现进程同步的机理。
四、实验结果与分析1. 实验一:父进程和子进程分别显示不同的字符在实验一中,我们使用fork()创建了一个父进程和两个子进程。
在父进程中,我们打印了字符'a',而在两个子进程中,我们分别打印了字符'b'和字符'c'。
实验结果显示,父进程和子进程的打印顺序是不确定的,这是因为进程的并发执行。
2. 实验二:每个进程循环显示一句话在实验二中,我们修改了程序,使每个进程循环显示一句话。
实验结果显示,父进程和子进程的打印顺序仍然是随机的。
这是因为并发执行的进程可能会同时占用CPU,导致打印顺序的不确定性。
3. 实验三:使用signal()捕捉键盘中断信号,并通过kill()向子进程发送信号在实验三中,我们使用signal()捕捉键盘中断信号(按c键),然后通过kill()向两个子进程发送信号,实现进程的终止。
实验结果显示,当按下c键时,两个子进程被终止,而父进程继续执行。
这表明signal()和kill()在进程控制方面具有重要作用。
4. 实验四:分析利用软中断通信实现进程同步的机理在实验四中,我们分析了利用软中断通信实现进程同步的机理。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验项目二进程管理
一、实验目的
1.理解进程的概念,掌握父、子进程创建的方法。
2.认识和了解并发执行的实质,掌握进程的并发及同步操作。
二、实验内容
1.编写一C语言程序,实现在程序运行时通过系统调用fork( )
创建两个子进程,使父、子三进程并发执行,父亲进程执行
时屏幕显示“I am father ,”儿子进程执行时屏幕显示“I am son ”,女儿进程执行时屏幕显示“ I am daughter。
”
2.多次连续反复运行这个程序,观察屏幕显示结果的顺序,直
至出现不一样的情况为止。
记下这种情况,试简单分析其原
因。
3.修改程序,在父、子进程中分别使用wait() 、exit()等系统调用
“实现”其同步推进,并获取子进程的ID 号及结束状态值。
多次反复运行改进后的程序,观察并记录运行结果。
三、源程序及运行结果
源程序 1:
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
int main()
{
pid_t pid;
char *a;
int num;
printf("starting:\n");
pid = fork();
if (pid == -1)
{
printf("failed");
exit(1);
}
else if (pid == 0)
{
a = "I am son";
}
else
{
a = "I am father";
pid = fork();
if (pid == -1)
{
printf("failed");
exit(1);
}
else if (pid == 0)
{
a = "I am daughter";
}
}
for (num=3;num>0;num--)
{
puts(a);
sleep(1);
}
exit(0);
}
运行结果:
源程序 2:
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/wait.h>
int main()
{
pid_t pid;
char *message;
int n;
int exit_code;
printf("fork starting.....\n");
pid = fork();
if (pid == -1)
{
printf("fork failed!");
exit(1);
}
else if (pid == 0)
{
message = "I am son";
n = 3;
exit_code = 99;
}
else
{
message = "I am father";
n = 3;
exit_code = 0;
pid = fork();
if (pid == -1)
{
printf("fork failed!");
exit(1);
}
else if (pid == 0)
{
message = "I am daughter";
n = 3;
exit_code = 100;
}
}
for (;n>0;n--)
{
puts(message);
sleep(1);
}
if(pid !=0)
{
int statue;
pid_t child_pid;
child_pid = wait(&statue);
printf("This is the children process: pid = %d\n",child_pid);
if(WIFEXITED(statue))
printf("child exited with code %d\n",WEXITSTATUS(statue));
else
printf("child terminated abnormally!");
}
exit(exit_code);
}
运行结果:
四、实验分析与总结
1.实验内容 1 运行结果为什么无固定顺序, fork() 函数创建进程
是如何并发执行的。
2.实验内容 3 是如何实现父子进程的同步执行的。
答: 1.因为利用fork() 函数创建的三个进程抢占cpu 不同,从而导致三个进程被 cpu 调用执行的顺序不同,从而输出的结果无固定顺序;fork() 函数调用成功后,子进程与父进程并发执行相同的代码,但由
于子进程也继承了父进程的程序指针,所以子进程是从fork()后的语句开始执行,另外fork 在子进程和父进程中的返回值是不同的,
在父进程中返回子进程的PID,而在子进程中返回0,使父进程和子进程执行不同的分支,从而实现了进程的并发执行。
2.该程序段主要使用了函数wait()和exit(),这是因为父进程必须等待两个子进程终止后才终。
在父进程中调用wait() 函数,则父进程被阻塞,进入等待队列,等待子进程结束。
子进程终止时执行
exit()向父进程发终止信号,当接到信号后,父进程提取子进程的
结束状态值,从wait() 返回继续执行原程序,从而实现了父、子进程
的同步推进。
总结:通过这次实验,我加深对进程概念的理解,进程是程序在一个
数据集合上运行的过程,是系统进行资源分配和调度的一个独立单
位,进程有如下特征:(1)结构特征:可并发执行( 2)动态性:是
进程实体的一次执行过程(3)并发性:是多个进程实体同存于内存中,且能在一段时间内同时运行(4)独立性:进程实体是一个能独立运行、分配资源,接受调度的基本单位( 5)异步性:进程实体按异步方式运行。