10 实验二:进程的创建与撤销 (计算机14-3班 王伟)

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

新疆师范大学

操作系统(本科)

实验报告

院系:计算机科学技术学院

班级: 14-3班

学生姓名:王伟

学号: 20141602141011 指导教师:王志华

教师评阅结果:

教师评语:

实验日期 2017 年 3月 13 日

实验名称:

实验二:进程的创建与撤销

一、实验目的和要求:

(1):熟悉windows系统提供的线程创建与撤销系统调用。

(2):掌握windows环境下线程的创建与撤销方法。

二、实验内容:

使用系统调用CreateThread()创建一个子线程,并在子线程序中显示,Thread is running!。为了能让用户清楚地看到现成的运行情况,使用sleep()使线程挂起5S,之后使用ExitThread(0)撤销线程。

三、实验技术和方法:

使用VC++6.0编辑器调试并运行代码,调用相关API函数。

四、实验环境:

VC++6.0

五、实验步骤和结果:

图2-1

相关代码:

// 实验二:线程的创建与撤销(14_3王伟).cpp : Defines the entry point for the console application.

//

#include "stdafx.h"

#include "实验二:线程的创建与撤销(14_3王伟).h"

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif

///////////////////////////////////////////////////////////////////// ////////

// The one and only application object

CWinApp theApp;

using namespace std;

void ThreadName1();

static HANDLE hHandle1 = NULL;

DWORD dwThreadID1;

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])

{

int nRetCode = 0;

hHandle1 = CreateThread((LPSECURITY_ATTRIBUTES) NULL,

0,

(LPTHREAD_START_ROUTINE) ThreadName1,

(LPVOID) NULL,

0,

&dwThreadID1);

Sleep(5000);

CloseHandle(hHandle1);

ExitThread(0);

return nRetCode;

}

void ThreadName1()

{

printf("Thread is running!");

}

运行结果:

图2-2

六、结果分析:

实验结果与预期结果的差异:实验结果与预期结果基本吻合。

课后作业:

2.试画出下面四条语句的前趋图

S1:a=x+y;S2:b=z+1;S3c=a-b;S4:w=c+1;

答:

7.试说明PCB的作用具体表现在哪几个方面?为什么说PCB是进程存在的唯一标志?

答:(1)PCB是进程实体的一部分,是操作系统中最重要的记录型数据结构。PCB中记录了操作系统所需的用于描述进程情况及控制进程运行所需的全部信

息。因而它的作用是使一个在多道程序环境下不能独立运行的程序(含数据),成为一个能独立运行的基本单位,一个能和其它进程并发执行的进程。

(2)在进程的整个生命周期中,系统总是通过其PCB对进程进行控制,系统是根据进程的PCB而不是任何别的什么而感知到该进程的存在的,所以说,PCB是进程存在的唯一标志。

11.试说明进程在三个基本状态之间转换的典型原因。

答:

(1)处于就绪状态的进程,当进程调度程序为之分配了处理机后,该进程便由就绪状态变为执行状态。

(2)前进程因发生某事件而无法执行,如访问已被占用的临界资源,就会使进程由执行状态转变为阻塞状态。

(3)当前进程因时间片用完而被暂停执行,该进程便由执行状态转变为就绪状态。

21.试从调度性、并发性、拥有资源及系统开销方面对线程和进程进行比较。答:

(1)调度性。在传统的操作系统中,拥有资源的基本单位和独立调度、分派的基本单位都是进程,在引入线程的 OS 中,则把线程作为调度和分派的基本单位,而把进程作为资源拥有的基本单位;

(2)并发性。在引入线程的 OS 中,不仅进程之间可以并发执行,而且在一个进程中的多个线程之间,亦可并发执行,因而使 OS 具有更好的并发性;(3)拥有资源。无论是传统的操作系统,还是引入了线程的操作系统,进程始终是拥有资源的一个基本单位,而线程除了拥有一点在运行时必不可少的资源外,本身基本不拥有系统资源,但它可以访问其隶属进程的资源;

(4)开销。由于创建或撤销进程时,系统都要为之分配和回收资源,如内存空间等,进程切换时所要保存和设置的现场信息也要明显地多于线程,因此,操作系统在创建、撤消和切换进程时所付出的开销将显著地大于线程。

22.在生产者—消费者问题中,如果将两个wait 操作,即wait(full)和wait(mutex)互换位置,结果会如何?如果将两个signal操作,即signal(mutex)与signal(full)互换位置,结果会如何?

相关文档
最新文档