当前位置:文档之家› 实验 进程的描述与控制

实验 进程的描述与控制

实验  进程的描述与控制
实验  进程的描述与控制

实验2:进程的描述与控制2.4 实验内容与步骤

Windows所创建的每个进程都是以调用CreateProcess()API函数开始和以调用ExitProcess()或TerminateProcess()函数终止。

1、创建进程

本实验学习创建进程的基本框架。该程序要求启动自身,显示它的系统进程ID和它在进程列表中的位置。

步骤1:登录进入Windows 2000 Professional。

步骤2:在“开始”菜单中单击“程序”、“Microsoft Visual Studio 6.0”“Microsoft Visual C++ 6.0”,进入Visual C++窗口。

步骤3:在工具栏单击“新建”按钮,编写代码保存为2-1.cpp。

参考类和函数:windows.h、iostream、stdio.h、GetModuleFileName()、ZeroMemory()、CreateProcess()、GetCurrentProcess()。

步骤4:单击“Build”菜单中的“Compile 2-1.cpp”命令,对2-1.cpp 进行编译。

步骤5:编译完成后,单击“Build”菜单中的“Build 2-1.exe”命令,建立2-1.exe可执行文件。

操作能否正常进行,如果不行,原因是什么?

答: 操作能正常运行

步骤6:在工具栏单击“Execute program”按钮,或者按Ctrl+F5键,或者单击“Build”菜单中的“Execute 2-1.exe”命令,执行2-1.exe 程序。

步骤7:按Ctrl+S键可暂停程序的执行,按Ctrl+Pause(Break)键可终止程序的执行。

程序运行时结果如下:

创建了26个Clone ID为0-26的进程,最终结束后只留下第一个

2. 正在运行的进程

本实验用进程信息查询的API函数GetProcessVersion()与GetVersionEx(),确定运行进程的操作系统的版本号。

步骤1:在工具栏单击“新建”按钮,编写代码保存为2-2.cpp。

步骤2:单击“Build”菜单中的“Compile 2-2.cpp”命令,系统

对2-2.cpp进行编译。

步骤3:编译完成后,单击“Build”菜单中的“Build 2-2.exe”命令,建立2-2.exe可执行文件。

操作能否正常进行,如果不行,原因是什么?

答:操作能正常运行

步骤4:在工具栏单击“Execute program”按钮,执行2-2.exe程序。

程序运行时结果如下:

当前PID信息:1884,requires OS:00

当前操作系统版本:5.1

系统提示信息:Task Manager should now now indicate thisprocess is high priority.

除了改变进程的优先级以外,还可以对正在运行的进程执行几项

其他的操作,只要获得其进程句柄即可,SetProcessAffinityMask() API

函数允许开发人员将线程映射到处理器上;SetProcessAffinityBoost()

API可关闭前台应用程序优先级的提升;而SetProcessWorkingSet() API 可调节进程可用的非页面RAM的容量;还有一个只对当前进程可用的API函数,即SetProcessShutdownParameters(),可告诉系统如何终止该进程。

3. 终止进程

步骤1:在工具栏单击“新建”按钮,编写代码保存为2-3.cpp。

步骤2:单击“Build”菜单中的“Compile 2-3.cpp”命令,再单击“是”按钮确认,系统对2-3.cpp进行编译。

步骤3:编译完成后,单击“Build”菜单中的“Build 2-3.exe”命令,建立2-3.exe可执行文件。

操作能否正常进行,如果不行,原因是什么?

答:操作能正常运行

步骤4:在工具栏单击“Execute program”按钮,执行2-3.exe程序。

程序运行时结果如下:

2.5 实验总结

1.由于刚刚接触C++,对它不是很熟悉,使得实验进展很慢。

2. 编译程序时出错,Linking...

LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main

Debug/2-1.exe : fatal error LNK1120: 1 unresolved externals

执行link.exe时出错。经过检查发现,工程的存储路径与运行路径不一致,导致该错误。

2.6 实验评价(教师)

windows进程管理实验报告

实验报告 课程名称:操作系统 实验项目:windows进程管理 姓名: 专业:计算机科学与技术 班级: 学号:

计算机科学与技术学院 计算机系 2019 年 4 月 23 日

实验项目名称: windows进程管理 一、实验目的 1. 学习windows系统提供的线程创建、线程撤销、线程同步等系统调用; 2. 利用C++实现线程创建、线程撤销、线程同步程序; 3. 完成思考、设计与练习。 二、实验用设备仪器及材料 1. Windows 7或10, VS2010及以上版本。 三、实验内容 1 线程创建与撤销 写一个windows控制台程序(需要MFC),创建子线程,显示Hello, This is a Thread. 然后撤销该线程。 相关系统调用: 线程创建: CreateThread() 线程撤销: ExitThread() 线程终止: ExitThread(0) 线程挂起: Sleep() 关闭句柄: CloseHandle() 参考代码: ; } 运行结果如图所示。 完成以下设计题目: 1. 向线程对应的函数传递参数,如字符串“hello world!”,在线程中显示。 2. 如何创建3个线程A, B, C,并建立先后序执行关系A→B→C。

实验内容2 线程同步 完成父线程和子线程的同步。父线程创建子线程后进入阻塞状态,子线程运行完毕后再唤醒。 相关系统调用: 等待对象 WaitForSingleObject(), WaitForMultipleObjects(); 信号量对象 CreateSemaphore(), OpenSemaphore(), ReleaseSemaphore(); HANDLE WINAPI CreateSemaphore( _In_opt_ LPSECURITY_ATTRIBUTES lpSemaphoreAttributes _In_ LONG lInitialCount, _In_ LONG lMaximumCount, _In_opt_ LPCTSTR lpName ); 第一个参数:安全属性,如果为NULL则是默认安全属性 第二个参数:信号量的初始值,要>=0且<=第三个参数 第三个参数:信号量的最大值 第四个参数:信号量的名称 返回值:指向信号量的句柄,如果创建的信号量和已有的信号量重名,那么返回已经存在的信号量句柄参考代码: n"); rc=ReleaseSemaphore(hHandle1,1,NULL); err=GetLastError(); printf("Release Semaphore err=%d\n",err); if(rc==0) printf("Semaphore Release Fail.\n"); else printf("Semaphore Release Success. rc=%d\n",rc); } 编译运行,结果如图所示。

操作系统精髓与设计原理-第3章 进程描述和控制

第3章进程描述和控制 复习题: 3.1什么是指令跟踪? 答:指令跟踪是指为该进程而执行的指令序列。 3.2通常那些事件会导致创建一个进程? 答:新的批处理作业;交互登录;操作系统因为提供一项服务而创建;由现有的进程派生。(详情请参考表3.1) 3.3对于图3.6中的进程模型,请简单定义每个状态。 答:运行态:该进程正在执行。就绪态:进程做好了准备,只要有机会就开始执行。 阻塞态:进程在某些事件发生前不能执行,如I/O操作完成。新建态:刚刚创建的进程,操作系统还没有把它加入到可执行进程组中。退出态:操作系统从可执行进程组中释放出的进程,或者是因为它自身停止了,或者是因为某种原因被取消。 3.4抢占一个进程是什么意思? 答:处理器为了执行另外的进程而终止当前正在执行的进程,这就叫进程抢占。 3.5什么是交换,其目的是什么? 答:交换是指把主存中某个进程的一部分或者全部内容转移到磁盘。当主存中没有处于就绪态的进程时,操作系统就把一个阻塞的进程换出到磁盘中的挂起队列,从而使另一个进程可以进入主存执行。 3.6为什么图3.9(b)中有两个阻塞态? 答:有两个独立的概念:进程是否在等待一个事件(阻塞与否)以及进程是否已经被换出主存(挂起与否)。为适应这种2*2的组合,需要两个阻塞态和两个挂起态。3.7列出挂起态进程的4个特点。 答:1.进程不能立即执行。2.进程可能是或不是正在等待一个事件。如果是,阻塞条件不依赖于挂起条件,阻塞事件的发生不会使进程立即被执行。3.为了阻止进程执行,可以通过代理把这个进程置于挂起态,代理可以是进程自己,也可以是父进程或操作系统。4.除非代理显式地命令系统进行状态转换,否则进程无法从这个状态中转移。 3.8对于哪类实体,操作系统为了管理它而维护其信息表? 答:内存、I/O、文件和进程。 3.9列出进程控制块中的三类信息。 答:进程标识,处理器状态信息,进程控制信息。 3.10为什么需要两种模式(用户模式和内核模式)? 答:用户模式下可以执行的指令和访问的内存区域都受到限制。这是为了防止操作系统受到破坏或者修改。而在内核模式下则没有这些限制,从而使它能够完成其功能。 3.11操作系统创建一个新进程所执行的步骤是什么? 答:1.给新进程分配一个唯一的进程标识号。2.给进程分配空间。3.初始化进程控制块。 4.设置正确的连接。 5.创建或扩充其他的数据结构。 3.12中断和陷阱有什么区别? 答:中断与当前正在运行的进程无关的某些类型的外部事件相关,如完成一次I/O操作。陷阱与当前正在运行的进程所产生的错误或异常条件相关,如非法的文件访问。 3.13举出中断的三个例子。 答:时钟终端,I/O终端,内存失效。 3.14模式切换和进程切换有什么区别? 答:发生模式切换可以不改变当前正处于运行态的进程的状态。发生进程切换时,一个正在执行的进程被中断,操作系统指定另一个进程为运行态。进程切换需要保存更

进程管理实验报告

实验2过程管理实验报告学生号姓名班级电气工程系过程、过程控制块等基本原理过程的含义:过程是程序运行过程中对数据集的处理,以及由独立单元对系统资源的分配和调度。在不同的数据集上运行程序,甚至在同一数据集上运行多个程序,是一个不同的过程。(2)程序状态:一般来说,一个程序必须有三种基本状态:就绪、执行和阻塞。然而,在许多系统中,过程的状态变化可以更好地描述,并且增加了两种状态:新状态和终端状态。1)就绪状态,当一个进程被分配了除处理器(CPU)以外的所有必要资源时,只要获得了处理器,进程就可以立即执行。此时,进程状态称为就绪状态。在系统中,多个进程可以同时处于就绪状态。通常,这些就绪进程被安排在一个或多个队列中,这些队列称为就绪队列。2)一旦处于就绪状态的进程得到处理器,它就可以运行了。进程的状态称为执行状态。在单处理器系统中,只有一个进程在执行。在多处理器系统中,可能有多个进程在执行中。3)阻塞状态由于某些事件(如请求输入和输出、额外空间等),执行进程被挂起。这称为阻塞状态,也称为等待状态。通常,处于阻塞状态的进程被调度为-?这个队列称为阻塞队列。4)新状态当一个新进程刚刚建立并且还没有放入就绪队列中时,它被称为新状态。5)终止状态是

什么时候-?进程已正常或异常终止,操作系统已将其从系统队列中删除,但尚未取消。这就是所谓的终结状态。(3)过程控制块是过程实体的重要组成部分,是操作系统中最重要的记录数据。控制块PCB记录操作系统描述过程和控制过程操作所需的所有信息。通过PCB,一个不能独立运行的程序可以成为一个可以独立运行的基本单元,并且可以同时执行一个进程。换句话说,在进程的整个生命周期中,操作系统通过进程PCB管理和控制并发进程。过程控制块是系统用于过程控制的数据结构。系统根据进程的PCB来检测进程是否存在。因此,进程控制块是进程存在的唯一标志。当系统创建一个进程时,它需要为它创建一个PCB;当进程结束时,系统回收其PCB,进程结束。过程控制块的内容过程控制块主要包括以下四个方面的信息。过程标识信息过程标识用于对过程进行标识,通常有外部标识和内部标识。外部标识符由流程的创建者命名。通常是一串字母和数字。当用户访问进程时使用。外部标识符很容易记住。内部标识符是为了方便系统而设置的。操作系统为每个进程分配一个唯一的整数作为内部标识符。通常是进程的序列号。描述性信息(process scheduling message)描述性信息是与流程调度相关的一些有关流程状态的信息,包括以下几个方面。流程状态:表

进程管理实验报告

进程的控制 1 .实验目的 通过进程的创建、撤消和运行加深对进程概念和进程并发执行的理解,明确进程与程序之间的区别。 【答:进程概念和程序概念最大的不同之处在于: (1)进程是动态的,而程序是静态的。 (2)进程有一定的生命期,而程序是指令的集合,本身无“运动”的含义。没有建立进程的程序不能作为1个独立单位得到操作系统的认可。 (3)1个程序可以对应多个进程,但1个进程只能对应1个程序。进程和程序的关系犹如演出和剧本的关系。 (4)进程和程序的组成不同。从静态角度看,进程由程序、数据和进程控制块(PCB)三部分组成。而程序是一组有序的指令集合。】2 .实验内容 (1) 了解系统调用fork()、execvp()和wait()的功能和实现过程。 (2) 编写一段程序,使用系统调用fork()来创建两个子进程,并由父进程重复显示字符串“parent:”和自己的标识数,而子进程则重复显示字符串“child:”和自己的标识数。 (3) 编写一段程序,使用系统调用fork()来创建一个子进程。子进程通过系统调用execvp()更换自己的执行代码,新的代码显示“new

program.”。而父进程则调用wait()等待子进程结束,并在子进程结束后显示子进程的标识符,然后正常结束。 3 .实验步骤 (1)gedit创建进程1.c (2)使用gcc 1.c -o 1编译并./1运行程序1.c #include #include #include #include void mian(){ int id; if(fork()==0) {printf(“child id is %d\n”,getpid()); } else if(fork()==0) {printf(“child2 id %d\n”,getpid()); } else {id=wait(); printf(“parent id is %d\n”,getpid()); }

实验1进程的控制与描述资料

实验1 进程的控制与描述 1.1 Windows任务管理器的进程管理 1.1.1 背景知识 Windows 的任务管理器提供了用户计算机上正在运行的程序和进程的相关信息,也显示了最常用的度量进程性能的单位。使用任务管理器.可以打开监视计算机性能的关键指示器,快速查看正在运行的程序的状态,或者终止已停止响应的程序。也可以使用多个参数评估正在运行的进程的活动,以及查看CPU和内存使用情况的图形和数据。其中: (1)“应用程序”选项卡显示正在运行程序的状态,用户能够结束、切换或者启动程序。(2)“进程”选项卡显示正在运行的进程信息。例如,可以显示关于CPU和内存使用情况、页面错误、句柄计数以及许多其他参数的信息。 (3)“性能”选项卡显示计算机动态性能,包括CPU和内存使用情况的图表,正在运行的句柄、线程和进程的总数、物理、核心和认可的内存总数(KB)等。 1.1.2 实验目的 通过在windows任务管理器中对程序进程进行响应的管理操作系统进程管理的概念,学习观察操作系统运行的动态性能。 1.1.3工具/准备工作 在开始本实验之前,请回顾教科书的相关内容。 需要准备一台运行windows 7操作系统的计算机。 1.1.4 实验内容与步骤 启动并进入Windows环境,按Ctrl+A1t+DeL键,或者右键单击任务栏,快捷菜单中单击“任务管理器”,打开“任务管理器”窗口。 在本次实验中,你使用的操作系统版本是: 在当前机器中,由你打开、正在运行的应用程序有:

Windows“任务管理器”的窗口由个选项卡组成,分别是: 当前“进程”选项卡显示的栏目分别是(可移动窗口下方的游标/箭头,或使窗口最大化进行观察): (1)使用任务管理器终止进程 步骤1:单击“进程”选项卡,一共显示个进程。请试着区分一下,其中:系统(system)进程有个,填入表2-1中。 表2-1 实验记录

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

实验一进程管理 一、目的 进程调度是处理机管理的核心内容。本实验要求编写和调试一个简单的进程调度程序。通过本实验加深理解有关进程控制块、进程队列的概念,并体会和了解进程调度算法的具体实施办法。 二、实验内容及要求 1、设计进程控制块PCB的结构(PCB结构通常包括以下信息:进程名(进程ID)、进程优先数、轮转时间片、进程所占用的CPU时间、进程的状态、当前队列指针等。可根据实验的不同,PCB结构的内容可以作适当的增删)。为了便于处理,程序中的某进程运行时间以时间片为单位计算。各进程的轮转时间数以及进程需运行的时间片数的初始值均由用户给定。 2、系统资源(r1…r w),共有w类,每类数目为r1…r w。随机产生n进程P i(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的数量 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为时间片大小(毫秒) //对进程进行初始化,建立就绪数组、阻塞数组。 public void input()//对进程进行初始化,建立就绪队列、阻塞队列 { m = int.Parse(textBox4.Text); n = int.Parse(textBox5.Text); a = int.Parse(textBox6.Text); b = int.Parse(textBox7.Text); c = int.Parse(textBox8.Text); a1 = a; b1 = b; c1 = c; r = m - n; time1Inteval = int.Parse(textBox9.Text); timer1.Interval = time1Inteval; for (i = 1; i <= n; i++) { pcb jincheng = new pcb(); jincheng.id = i; jincheng.ra = (random.Next(a) + 1); jincheng.rb = (random.Next(b) + 1); jincheng.rc = (random.Next(c) + 1); jincheng.ntime = (random.Next(1, 5)); jincheng.rtime = 0;

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

实验一进程管理 1.实验目的: (1)加深对进程概念的理解,明确进程和程序的区别; (2)进一步认识并发执行的实质; (3)分析进程争用资源的现象,学习解决进程互斥的方法; (4)了解Linux系统中进程通信的基本原理。 2.实验预备内容 (1)阅读Linux的sched.h源码文件,加深对进程管理概念的理解; (2)阅读Linux的fork()源码文件,分析进程的创建过程。 3.实验内容 (1)进程的创建: 编写一段程序,使用系统调用fork() 创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符“a”,子进程分别显示字符“b”和“c”。试观察记录屏幕上的显示结果,并分析原因。 源代码如下: #include #include #include #include #include int main(int argc,char* argv[]) { pid_t pid1,pid2; pid1 = fork(); if(pid1<0){ fprintf(stderr,"childprocess1 failed"); exit(-1); } else if(pid1 == 0){ printf("b\n"); } 1/11

else{ pid2 = fork(); if(pid2<0){ fprintf(stderr,"childprocess1 failed"); exit(-1); } else if(pid2 == 0){ printf("c\n"); } else{ printf("a\n"); sleep(2); exit(0); } } return 0; } 结果如下: 分析原因: pid=fork(); 操作系统创建一个新的进程(子进程),并且在进程表中相应为它建立一个新的表项。新进程和原有进程的可执行程序是同一个程序;上下文和数据,绝大部分就是原进程(父进程)的拷贝,但它们是两个相互独立的进程!因此,这三个进程哪个先执行,哪个后执行,完全取决于操作系统的调度,没有固定的顺序。 (2)进程的控制 修改已经编写的程序,将每个进程输出一个字符改为每个进程输出一句话,再观察程序执行时屏幕上出现的现象,并分析原因。 将父进程的输出改为father process completed 2/11

实验一:进程控制描述及控制

实验一:进程控制描述与控制 [1]Windows“任务管理器”的进程管理 一、实验名称 Windows“任务管理器”的进程管理 二、实验目的 通过在Windows 任务管理器中对程序进程进行响应的管理操作,熟悉操作系统进程管理的概念,学习观察操作系统运行的动态性能。 三、实验容与步骤 1. 使用任务管理器终止进程 2. 显示其他进程计数器 3. 更改正在运行的程序的优先级 启动并进入Windows环境,单击Ctrl + Alt + Del键,或者右键单击任务栏,在快捷菜单中单击“任务管理器”命令,打开“任务管理器”窗口。 在本次实验中,你使用的操作系统版本是: _______Windows_XP______________________ 当前机器中由你打开,正在运行的应用程序有: 1) _______ ________ 2) ___________实验一___ 3) _________操作系统_____________ 4) ___________百度首页________ 5) ____________ftp://172.16.20.168_______ Windows“任务管理器”的窗口由____4__个选项卡组成,分别是: 1) _______应用程序______________ 2) _进程__________________ 3) ______ 性能___________________ 4) ________联网__________________ 当前“进程”选项卡显示的栏目分别是(可移动窗口下方的游标/箭头,或使窗口最大化进行观察) :

1. 使用任务管理器终止进程 步骤1:单击“进程”选项卡,一共显示了__40___个进程。请试着区分一下,其中:系统(SYSTEM) 进程有____25__个,填入表3-1中。 表3-1 实验记录 Wmiprvse SYSTEM 00 5376k cidaemon SYSTEM 00 300k cidaemon SYSTEM 00 856k cidaemon SYSTEM 50 284k cisvc SYSTEM 00 924k csrss SYSTEM 00 7412k mqtgsvc SYSTEM00 4144k mqsvc SYSTEM 00 6632k

实验一:进程控制描述与控制

实验一:进程控制描述与控制 [1] Windows“任务管理器”的进程管理 一、实验名称 Windows“任务管理器”的进程管理 二、实验目的 通过在Windows 任务管理器中对程序进程进行响应的管理操作,熟悉操作系统进程管理的概念,学习观察操作系统运行的动态性能。 三、实验容与步骤 1. 使用任务管理器终止进程 2. 显示其他进程计数器 3. 更改正在运行的程序的优先级 启动并进入Windows环境,单击Ctrl + Alt + Del键,或者右键单击任务栏,在快捷菜单中单击“任务管理器”命令,打开“任务管理器”窗口。 在本次实验中,你使用的操作系统版本是: _______Windows_XP______________________ 当前机器中由你打开,正在运行的应用程序有: 1) _______ ________ 2) ___________实验一___ 3) _________操作系统_____________ 4) ___________百度首页________ 5) ____________ftp://172.16.20.168_______ Windows“任务管理器”的窗口由____4__个选项卡组成,分别是: 1) _______应用程序______________ 2) _进程__________________ 3) ______ 性能___________________ 4) ________联网__________________ 当前“进程”选项卡显示的栏目分别是(可移动窗口下方的游标/箭头,或使窗口最大化进行观察) :

1. 使用任务管理器终止进程 步骤1:单击“进程”选项卡,一共显示了__40___个进程。请试着区分一下,其中:系统(SYSTEM) 进程有____25__个,填入表3-1中。 表3-1 实验记录 Wmiprvse SYSTEM 00 5376k cidaemon SYSTEM 00 300k cidaemon SYSTEM 00 856k cidaemon SYSTEM 50 284k cisvc SYSTEM 00 924k csrss SYSTEM 00 7412k mqtgsvc SYSTEM00 4144k mqsvc SYSTEM 00 6632k snmp SYSTEM 00 4340k tcpservcs SYSTEM 00 3840k Smss SYSTEM 00 404k System SYSTEM 00 300k System Idle Process SYSTEM 99 28k

操作系统实验实验1进程描述及控制

信息学院 操作系统实验报告 姓名:杨博敏 学号:1305290206 专业:软件工程 班级:软件1302班 实验名称:进程控制与描述

实验一进程控制与描述 3.1 Windows“任务管理器”的进程管理 3.1.1 Windows XP的任务管理器 Windows XP的任务管理器提供了用户计算机上正在运行的程序和进程的相关信息,也显示了最常用的度量进程性能的单位。使用任务管理器,可以打开监视计算机性能的关键指示器,快速查看正在运行的程序的状态,或者终止已停止响应的程序。也可以使用多个参数评估正在运行的进程的活动,以及查看CPU 和内存使用情况的图形和数据。其中: 1) “应用程序”选项卡显示正在运行程序的状态,用户能够结束、切换或者启动程序。 2) “进程”选项卡显示正在运行的进程信息。例如,可以显示关于CPU 和内存使用情况、页面错误、句柄计数以及许多其他参数的信息。 3) “性能”选项卡显示计算机动态性能,包括CPU 和内存使用情况的图表,正在运行的句柄、线程和进程的总数,物理、核心和认可的内存总数(KB) 等。 3.1.2 练习与实验 在本节“练习与实验”中,通过在Windows任务管理器中对程序进程进行响应的管理操作,熟悉操作系统进程管理的概念,学习观察操作系统运行的动态性能。 1. 工具/准备工作 在开始本实验之前,请回顾教科书的相关内容。 需要准备一台运行Windows XP Professional操作系统的计算机。

2. 实验内容与步骤 启动并进入Windows环境,单击Ctrl+Alt+Del键,或者右键单击任务栏,在快捷菜单中单击“任务管理器”命令,打开“任务管理器”窗口。 在本次实验中,你使用的操作系统版本是: _____windowsXP_______________________________________________ 当前机器中由你打开,正在运行的应用程序有: 1)Microsoft_Word Windows“任务管理器”的窗口由4个选项卡组成,分别是: 1)应用程序 2) 进程 3) 性能 4)用户 当前“进程”选项卡显示的栏目分别是(可移动窗口下方的游标/箭头,或使窗口最大化进行观察) : 1) 映像名称 2) 用户名 3) CPU 4)内存使用 (1) 使用任务管理器终止进程 步骤1:单击“进程”选项卡,一共显示了__48个进程。请试着区分一下,其中: 系统(SYSTEM) 进程有___23___个,填入表3.1中。 表3.1 实验记录 注:在Windows 2000中,“用户名”需要自己判断。这一点,在Windows XP中有了改进。 服务(SERVICE) 进程有_5_个,填入表3.2中。

进程管理实验报告

进程管理实验报告 1 .实验目的 通过进程的创建、撤消和运行加深对进程概念和进程并发执行的理解,明确进程与程序之间的区别。 【答:进程概念和程序概念最大的不同之处在于: (1)进程是动态的,而程序是静态的。 (2)进程有一定的生命期,而程序是指令的集合,本身无“运动”的含义。没有建立进程的程序不能作为1个独立单位得到操作系统的认可。 (3)1个程序可以对应多个进程,但1个进程只能对应1个程序。进程和程序的关系犹如演出和剧本的关系。 (4)进程和程序的组成不同。从静态角度看,进程由程序、数据和进程控制块(PCB)三部分组成。而程序是一组有序的指令集合。】2 .实验内容 (1) 了解系统调用fork()、execvp()和wait()的功能和实现过程。 (2) 编写一段程序,使用系统调用fork()来创建两个子进程,并由父进程重复显示字符串“parent:”和自己的标识数,而子进程则重复显示字符串“child:”和自己的标识数。 (3) 编写一段程序,使用系统调用fork()来创建一个子进程。子进程通过系统调用execvp()更换自己的执行代码,新的代码显示“new program.”。而父进程则调用wait()等待子进程结束,并在子进程结束后显示子进程的标识符,然后正常结束。

(3)运行并查看结果 child’s pid=2894 child’s pid=2994 parent’s pid=2849 child’s pid=2897 child’s pid=2897 parent’s pid=2849 child’s pid=2894 child’s pid=2994 parent’s pid=2849 (4)gedit创建进程2.c 使用gcc 2.c -o 2编译并./2运行程序2.c#include #include #include #include #include(6)运行并查看结果 new program ! -rw-r–r--. 1 root root 2456 Apr 14 2019 /etc/passwd child peocess PID:29035 4 .思考 (1) 系统调用fork()是如何创建进程的?

实验一、进程调度实验报告

实验一、进程调度实验报告

广东技术师范学院实验报告 学院:计算机科学学 院 专业: 计算机科学与 技术(师范) 班级:成绩: 姓名:学号:组别:组员: 实验地点:实验日期:指导教师签名: 实验名称:实验一、进程调度实验 一、实验目的 用高级语言编写和调试一个进程调度程序,以加深对进程的概念及进程调度算法的理解 二、实验类别 综合性实验。综合高级语言编程、进程调度模型、进程调度算法及数据结构等多方面的知识 三、实验内容和步骤 1.编写并调试一个模拟的进程调度程序,采用“最高优先数优先”调度算法对五个进程进行调度。 “最高优先数优先”调度算法的基本思想是把CPU分配给就绪队列中优先数最高的进程。 静态优先数是在创建进程时确定的,并在整个进程运行期间不再改变。 动态优先数是指进程的优先数在创建进程时可以给定一个初始值,并且可以按一定原则修改优先数。例如:在进程获得一次CPU后就将其优先数减少1。或者,进程等待的时间超过某一时限时增加其优先数的值,等等 该题根据老师给的代码用Visual C++运行,结果以及分析如下: 预习情况操作情况考勤情况数据处理情况

结果分析:根据上述输入的三个进程的信息可以得到:优先级最高的是进程cc 最先调度进程cc的状态为运行态,需要执行的时间为10当前就绪队列状态为:进程aa先级比较高,处于就绪队列前面,而进程bb先级是三者中最低的,所以处于就绪队列的最后。而此时这两个进程的状态都为就绪态。

结果分析:当进程cc了一个时间片之后而它已占用CPU时间已达到所需要的运行时间,则将它的优先级减1之后,再将三个进程按优先级的大小排列,从中选择优先级大的进程进入运行状态,则该次进入运行态的是进程aa 按照这种方式一直运行下去: 直到:

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

计算机与信息工程学院实验报告 一、实验内容 1.练习在shell环境下编译执行程序 (注意:①在vi编辑器中编写名为sample.c的c语言源程序 ②用linux自带的编译器gcc编译程序,例如:gcc –o test sample.c ③编译后生成名为test.out的可执行文件; ④最后执行分析结果;命令为:./test) 注意:linux自带的编译程序gcc的语法是:gcc –o 目标程序名源程序名,例如:gcc –o sample1 sample1.c,然后利用命令:./sample 来执行。如果仅用“gcc 源程序名”,将会把任何名字的源程序都编译成名为a.out的目标程序,这样新编译的程序会覆盖原来的程序,所以最好给每个源程序都起个新目标程序名。 2.进程的创建 仿照例子自己编写一段程序,使用系统调用fork()创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示“a”,子进程分别显示字符“b”和“c”。观察记录屏幕上的显示结果,并分析原因。 3.分析程序 实验内容要在给出的例子程序基础上,根据要求进行修改,对执行结果进行分析。二、

实验步骤 1. 利用fork()创建一个小程序 (1)编写程序 #include main () { int i=5; pid_t pid; pid=fork(); for(;i>0;i--) { if (pid < 0) printf("error in fork!"); else if (pid == 0) printf("i am the child process, my process id is %d and i=%d\n",getpid(),i); else printf("i am the parent process, my process id is %d and i=%d\n",getpid(),i); } for(i=5;i>0;i--) { if (pid < 0) printf("error in fork!"); else if (pid == 0) printf("the child process, my process id is %d and i=%d\n",getpid(),i); else printf("the parent process, my process id is %d and

进程描述和控制

第三章进程描述和控制 正误判断: 1.处理器的主要功能是处理驻留在主存中的指令。 答案:T 2.进程的轨迹就是该进程的指令序列的列表。 答案:T 3.操作系统的主要任务是控制进程的执行。 答案:T 4.当一个进程派生另一个进程时,派生的进程是子进程,被派生的进程是父进程。 答案:F (派生的进程是父进程,被派生的是子进程) 5.轮循是一种线程优先级调度的方法。 答案:F (轮循是指依次给队列中的每个进程一定的执行时间,然后进程返回队列。 与优先级无关) 6.两状态进程模型和五状态进程模型的主要区别是后者将运行态分成两个新的状态: 就绪和阻塞。 答案:F (将非运行态分成就绪和阻塞) 7.解决主存空间有限的一种方法是交换,即将某个进程的部分或全部内容从主存转移 到辅存。 答案:T 8. 为了定义操作系统管理进程和资源所需要的控制结构(如列表),操作系统在初始 化的时候必须拥有对设备数据的控制权。 答案:T 9. 进程映像是指程序代码的二进制形式。 答案:F (进程映像是程序、数据、栈和属性的集合) 10.进程控制块中包含处理器寄存器的部分称为进程控制信息。 答案:F (称为处理器状态信息) 11. 没有特权的处理器执行模式通常称为内核模式。 答案:F (用户模式)

12. 主进程表中每个进程有一个入口,若进程派生了子进程,则表中会有多个入口指向父 进程。 答案:F (只有一个入口指向父进程) 13. 陷阱是与当前运行进程的一个错误或异常条件有关的一种系统中端。 答案:T 14. 采用无进程的内核方法来定义操作系统与用户程序的区别:操作系统代码作为一个在 特权模式下工作的独立实体被执行。 答案:T 15. Linux系统采用两种运行态来区别表示进程是在用户模式下运行还是在内核模 式下运行。 答案:T 选择题 1.一个处理器的行为可以通过对__的观察来描述 A.单个进程的轨迹 B.多个进程的轨迹 C.各个进程轨迹的交替 D.以上均是 答案:C 2.一个单独进程的行为可以通过对__的观察来描述 A.单个进程的轨迹 B.多个进程的轨迹 C.各个进程轨迹的交替 D.以上都是 答案:A 3.基本的两状态进程模型按照与处理器的关系定义了一个进程的两种状态:__ A.运行态和退出态 B.运行态和非运行态 C.退出态和等待态

进程管理实验报告

实验报告纸 (院、系)专业班组课 实验一、进程管理(3学时、必做) 一、实验目的 通过实验使学生进一步了解进程、进程状态、进程控制等基本概念。基本能达到下列具体的目标: 1、理解进程PCB 的概念,以及PCB 如何实现、如何组织以及管理。 2、复习数据结构中如何对链的操作,包括建链、删除、插入结点等,来实现进程的管 理。 二、实验内容 1、建立一个结点,即PCB 块包括用户标识域、状态域(执行、等待、就绪)、link 域。 2、建立三个队列(执行队列、就绪队列、等待队列)。 3、根据进程状态转换实现对三个队列的具体操作。具体的驱动可以采用时间片算法或

手动调度的形式完成三个状态之间的转换4、用switch 选择语句选择状态。 5、按照自己的设定能完成所有的状态转换的运行(包括创建和运行结束)。 三、实验步骤 1、复习进程管理三状态模型部分内容。 2、预习C++ Builder或VC++、Delphi、JBuilder线程编程。 3、运行示例程序,进一步明确实验要求。可以采用控制台模式或窗口模式。 4、上机编程、调试程序。 5、完成实验报告。 四、实验过程 1、进程管理三状态模型部分内容 进程从因创建而产生直至撤销而消亡的整个生命周期中,有时占用处理器执行,有时虽然可以运行但分不到处理器,有时虽然处理器空闲但因等待某个事件发生而无法执行,这一切都说明进程和程序不同,进程是活动的且有状态变化,状态及状态之间的转换体现进程的动态性,为了便于系统管理,一般来说,按照进程在执行过程中的不同情况至少要定义三种进程状态。 (1)运行态:进程占用处理器运行的状态。

(2)就绪态:进程具备运行条件,等待系统分配处理器以便起运行的状态。(3)等待态:进程不具备运行条件,正在等待某个时间完成的状态。2、程序设计环境

进程控制与描述实验报告

一、实验目的 利用Windows提供的API函数,编写程序,实现进程的创建和终止(如创建写字板进程及终止该进程),加深对操作系统进程概念的理解,观察操作系统进程运行的动态性能,获得包含多进程的应用程序编程经验。 二、实验内容 编写一个在dos界面下的简单进程控制系统,实现根据用户选项进行进程的创建、终止,并提供进程的状态。 (1)进程的创建和终止。编写一段程序,可以创建一个进程,并终止当前创建的进程。试观察记录程序执行的结果,并分析原因。 (2)利用VC++6.0实现上述程序设计和调试操作,对于进程创建的成功与否、终止进程操作的成功与否提供一定的提示框。 (3)通过阅读和分析实验程序,学习创建进程、观察进程和终止进程的程序设计方法 三、实验步骤 1.创建进程 使用了Windows提供的CreateProcess函数来创建一个新的进程和它的主线程,这个新进程运行指定的可执行文件。 函数原型: BOOL CreateProcess{ LPCTSTR lpApplicationName, LPTSTR lpCommandLine,

LPSECURITY_ATTRIBUTES lpProcessAttributes。 LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCTSTR lpCurrentDirectory, LPSTARTUPINFO lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation }; 一个线程调用该函数首先创建一个进程内核对象用来管理此新进程,随后系统为新进程创建虚拟地址空间,并将可执行文件的代码和数据加载到这个地址空间,接着系统为新进程的主线程创建一个线程内核对象。 本程序所使用的函数中各参数的解释: 1.lpApplicationName 指向一个NULL结尾的、用来指定可执行模块的字符串。这个字符串可以使可执行模块的绝对路径,也可以是相对路径,在后一种情况下,函数使用当前驱动器和目录建立可执行模块的路径。 这个参数可以被设为NULL,在这种情况下,可执行模块的名字必须处于lpCommandLine参数的最前面并由空格符与后面的字符分开。 2.lpCommandLine 传递给新进程的命令行字符串,应当为非常量字符串的地址。可以设定一个完整的命令行,如果第一个标记没有扩展名,CreateProcess将其假设为.exe。如果找不到该文件,CreateProcess按环境设置目录搜索运行。 3.bInheritHandles 决定子进程对父进程继承性,一般设为FALSE。 4.dwCreationFlags 用于标识标志,以便用于规定如何来创建新进程。

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

进程管理 2.1 实验目的 ●加深对进程概念的理解,明确进程和程序的区别。 ●进一步认识并发执行的实质。 ●分析进程争用资源的现象,学习解决进程互斥的方法。 2.2 背景知识 1、fork() 创建一个新进程 int fork() 其中返回int取值意义如下: 0:创建子进程,从子进程返回的id值 大于0:从父进程返回的子进程id值 -1:创建失败 2、lockf(files,function,size):用于锁定或打开锁定一个共享文件 用作锁定文件的某些段或者整个文件,本函数适用的头文件为: #include 参数定义: int lockf(files,function,size) int files,function; long size; 其中:files是文件描述符,习惯上,标准输入(standard input)的文件描述符是0,标准输出(standard output)是1,标准错误(standard error)是2(lockf(1,1,0)是锁定屏幕输出,不让其他进程输出到屏幕)lockf(1,0,0)则是解锁。function是锁定和解锁;1表示锁定,0表示解锁。size是锁定和解锁的字节数,若用0,表示从文件的当前位置到文件尾。

2.3实验内容 2.3.1进程创建 编写一段程序,利用系统调用fork( )创建两个进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符“a”;子进程分别显示字符“b”和字符“c”。 2.3.2进程控制 修改已经编好的程序,将每个进程输出一个字符改为每个进程输出一句话,在观察程序执行时屏幕上出现的现象,并分析原因。 如果在程序中使用系统调用lockf()来给每一个进程加锁,可以实现进程之间的互斥,观察并分析出现的现象。 2.3.3参考程序 #include Main() { Int p1,p2; While ((p1=fork())= =-1); If (p1= =0) Putchar(…b?); Else { While ((p2=fork()= =-1); If (p2= =0) Putchar(…c?); Else Putchar(…a?); } } 分析:从进程并发执行来看,输出bac,acb或bca都有可能。 原因:fork()创建进程所需要的时间要多于输出一个字符的时间,因此在主进程创建进程2的同时,进程1就输出了”b”,而进程2和主程序的输出次序是有随机性的,所以会出现多种可能结果。 进程控制源程序:

相关主题
文本预览
相关文档 最新文档