计算机操作系统实验四

合集下载

操作系统实验实验报告

操作系统实验实验报告

操作系统实验实验报告一、实验目的操作系统是计算机系统中最为关键的核心软件,它管理着计算机的硬件资源和软件资源,为用户提供了一个方便、高效、稳定的工作环境。

本次操作系统实验的目的在于通过实际操作和实践,深入理解操作系统的基本原理和核心概念,掌握操作系统的基本功能和操作方法,提高对操作系统的认识和应用能力。

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

实验硬件环境为一台配备Intel Core i7 处理器、16GB 内存、512GB SSD 硬盘的个人计算机。

三、实验内容(一)进程管理实验1、进程创建与终止通过编程实现创建新的进程,并在完成任务后终止进程。

在实验中,我们使用了 Windows API 函数 CreateProcess 和 TerminateProcess 来完成进程的创建和终止操作。

通过观察进程的创建和终止过程,深入理解了进程的生命周期和状态转换。

2、进程同步与互斥为了实现进程之间的同步与互斥,我们使用了信号量、互斥量等同步对象。

通过编写多线程程序,模拟了多个进程对共享资源的访问,实现了对共享资源的互斥访问和同步操作。

在实验中,我们深刻体会到了进程同步与互斥的重要性,以及不正确的同步操作可能导致的死锁等问题。

(二)内存管理实验1、内存分配与释放使用 Windows API 函数 VirtualAlloc 和 VirtualFree 进行内存的分配和释放操作。

通过实验,了解了内存分配的不同方式(如堆分配、栈分配等)以及内存释放的时机和方法,掌握了内存管理的基本原理和操作技巧。

2、内存分页与分段通过编程模拟内存的分页和分段管理机制,了解了内存分页和分段的基本原理和实现方法。

在实验中,我们实现了简单的内存分页和分段算法,对内存的地址转换和页面置换等过程有了更深入的理解。

(三)文件系统实验1、文件操作使用 Windows API 函数 CreateFile、ReadFile、WriteFile 等进行文件的创建、读取和写入操作。

计算机操作系统实验报告

计算机操作系统实验报告

中南大学计算机操作系统实验报告................................................................................................................................................................................................................1、增强学生对计算机操作系统基本原理、基本理论、基本算法的理解;2、提高和培养学生的动手能力。

1、每人至少选作1 题,多做不限;2、每人单独完成,可以讨论,但每人的设计内容不得彻底相同,抄袭或者有2 人/多人设计彻底一样者,不能通过;3、设计完成后,应上交课程设计文档,文档格式应是学校课程设计的标准格式,所有学生的封面大小、格式也必须一样;4、同时上交设计的软盘(或者以班刻录光盘)。

调度算法的摹拟:摹拟各种调度算法,并进行调度性能分析。

摹拟了一个作业调度算法,其中用到了先来先服务算法(FCFS)、短作业优先算法(SJF)、最高响应比优先算法(HRN)三种算法。

如下,分别为三种算法的程序流程图。

图1 - 开始界面图 2 –输入作业的信息(名字、提交时间、运行时间) 图3 –选择算法(FCFS 、SJF、HRN)图4、5 –选择FCFS 算法后输出结果图6、7 –选择SJF 算法后输出结果图8、9 –选择HRN 算法后输出结果能体现公平性;一旦一个较长的作业进入系统后就会长期的占用系统的资源,这样如果有优先级较高的短作业需要执行的话需要等待很长期。

比前者改善了平均周转时间和平均带权周转时间,缩短作业的等待时间,提高系统的吞吐量;对长作业非常不利,可能长期得不到执行,未能一句作业的紧迫程度来划分执行的优先级,难以准确估计作业的执行时间,从而影响调度性能。

这种算法是对FCFS 方式和SJF 方式的一种综合平衡。

操作系统实验报告

操作系统实验报告

篇一:操作系统实验报告完全版《计算机操作系统》实验报告班级:姓名:学号:实验一进程控制与描述一、实验目的通过对windows 2000编程,进一步熟悉操作系统的基本概念,较好地理解windows 2000的结构。

通过创建进程、观察正在运行的进程和终止进程的程序设计和调试操作,进一步熟悉操作系统的进程概念,理解windows 2000中进程的“一生”。

二、实验环境硬件环境:计算机一台,局域网环境;软件环境:windows 2000 professional、visual c++6.0企业版。

三、实验内容和步骤第一部分:程序1-1windows 2000 的gui 应用程序windows 2000 professional下的gui应用程序,使用visual c++编译器创建一个gui应用程序,代码中包括了winmain()方法,该方法gui类型的应用程序的标准入口点。

:: messagebox( null, “hello, windows 2000” , “greetings”,mb_ok) ;/* hinstance */ , /* hprevinstance */, /* lpcmdline */, /* ncmdshow */ )return(0) ; }在程序1-1的gui应用程序中,首先需要windows.h头文件,以便获得传送给winmain() 和messagebox() api函数的数据类型定义。

接着的pragma指令指示编译器/连接器找到user32.lib库文件并将其与产生的exe文件连接起来。

这样就可以运行简单的命令行命令cl msgbox.cpp来创建这一应用程序,如果没有pragma指令,则messagebox() api函数就成为未定义的了。

这一指令是visual studio c++ 编译器特有的。

接下来是winmain() 方法。

其中有四个由实际的低级入口点传递来的参数。

《计算机操作系统》实验指导书

《计算机操作系统》实验指导书

《计算机操作系统》实验指导书(适合于计算机科学与技术专业)湖南工业大学计算机与通信学院二O一四年十月前言计算机操作系统是计算机科学与技术专业的主要专业基础课程,其实践性、应用性很强。

实践教学环节是必不可少的一个重要环节。

计算机操作系统的实验目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握操作系统的基本原理,加深对操作系统基本方法的理解,加深对课堂知识的理解,为学生综合运用所学知识,在Linux环境下调用一些常用的函数编写功能较简单的程序来实现操作系统的基本方法、并在实践应用方面打下一定基础。

要求学生在实验指导教师的帮助下自行完成各个操作环节,并能实现且达到举一反三的目的,完成一个实验解决一类问题。

要求学生能够全面、深入理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题;对此能够较好地理解和掌握,并且能够进行简单分析和判断;能够熟练使用Linux用户界面;掌握操作系统中进程的概念和控制方法;了解进程的并发,进程之间的通信方式,了解虚拟存储管理的基本思想。

同时培养学生进行分析问题、解决问题的能力;培养学生完成实验分析、实验方法、实验操作与测试、实验过程的观察、理解和归纳能力。

为了收到良好的实验效果,编写了这本实验指导书。

在指导书中,每一个实验均按照该课程实验大纲的要求编写,力求紧扣理论知识点、突出设计方法、明确设计思路,通过多种形式完成实验任务,最终引导学生有目的、有方向地完成实验任务,得出实验结果。

任课教师在实验前对实验任务进行一定的分析和讲解,要求学生按照每一个实验的具体要求提前完成准备工作,如:查找资料、设计程序、完成程序、写出预习报告等,做到有准备地上机。

进行实验时,指导教师应检查学生的预习情况,并对调试过程给予积极指导。

实验完毕后,学生应根据实验数据及结果,完成实验报告,由学习委员统一收齐后交指导教师审阅评定。

实验成绩考核:实验成绩占计算机操作系统课程总评成绩的20%。

指导教师每次实验对学生进行出勤考核,对实验效果作记录,并及时批改实验报告,综合评定每一次的实验成绩,在学期终了以平均成绩作为该生的实验成绩。

操作系统实验

操作系统实验

操作系统实验操作系统实验是计算机科学与技术领域非常重要的一门实验课程。

通过操作系统实验,学生可以深入了解操作系统的基本原理和实践技巧,掌握操作系统的设计和开发方法。

本文将介绍操作系统实验的一般内容和实验室环境要求,并详细说明一些常见的操作系统实验内容。

一、实验内容1. 实验环境搭建:操作系统实验通常在实验室中进行。

为了完成实验,学生需要搭建一个操作系统实验环境。

实验环境通常由一个或多个计算机节点组成,每个计算机节点需要安装操作系统实验所需要的软件和驱动程序。

2. 操作系统整体结构分析:学生首先需要通过文献研究和课堂学习,了解操作系统的整体结构和基本原理。

在实验中,学生需要分析和理解操作系统的各个模块之间的功能和相互关系。

3. 进程管理实验:进程是操作系统中最基本的运行单位。

在这个实验中,学生可以通过编写程序并使用系统调用来实现进程的创建、销毁和调度。

学生需要熟悉进程状态转换和调度算法,理解进程间通信和同步机制。

4. 内存管理实验:内存管理是操作系统中非常重要的一个模块。

学生需要实现虚拟内存管理、页面置换算法以及内存分配和回收策略。

通过这个实验,学生可以深入了解虚拟内存管理的原理和实际应用。

5. 文件系统实验:文件系统是操作系统中负责管理文件和目录的模块。

在这个实验中,学生需要实现基本的文件系统功能,如文件的创建、读取和修改。

学生还可以实现进程间的文件共享和保护机制。

6. 设备管理实验:设备管理是操作系统中与硬件设备交互的一个重要模块。

在这个实验中,学生需要实现设备的初始化、打开和关闭功能。

学生还可以实现设备驱动程序,完成对硬件设备的控制。

二、实验室环境要求1. 计算机硬件:实验室需要配备一定数量的计算机节点。

每个计算机节点需要具备足够的计算能力和内存容量,以满足操作系统实验的要求。

2. 操作系统软件:实验室中的计算机节点需要安装操作系统软件,通常使用Linux或者Windows操作系统。

此外,还需要安装相关的开发工具和编程语言环境。

计算机操作系统作业4(含答案)

计算机操作系统作业4(含答案)

一、单项选择题1.时钟中断是属于______。

A.硬件故障中断 B.程序中断 C. I/O中断 D.外部中断2.在一个计算机系统中,特权指令______下执行。

A.只能在核心态 B.只能在用户态C.可在核心态,也可在用户态 D.不能在核心态,也不能再用户态3. 空白文件目录法用于______。

A.主存空间的管理 B.文件存储空间的管理C.虚存空间的管理 D.外设的分配与回收4. 采用SPOOLing技术后,使得系统资源______。

A.利用率提高了 B.利用率降低了C.利用率有时提高有时降低 D.出错的机会增加了5. 文件系统的主要目的是______。

A.实现对文件的按名存取 B.实现虚拟存储C.提高外存的读写速度 D.用于存储系统文件6. 为了解决不同用户文件的“命名冲突”问题,通常在文件系统中采用______。

A.约定的方法 B.多级目录 C.路径 D.索引7. 操作系统中______采用了以空间换时间的技术。

A. SPOOLing技术 B.覆盖技术 C.通道技术 D.虚拟存储技术8. 对磁盘进行磁头调度的目的是为了缩短______时间。

A.寻道 B.旋转 C.传送 D.启动9. 加密保护和访问控制两种机制相比______。

A.加密保护机制的灵活性更好 B.访问控制机制的安全性更高C.加密保护机制必须由系统实现 D.访问控制机制必须由系统实现10.在文件系统中引入“当前目录”的主要目的是______。

A.方便用户 B.提高系统性能 C.增强系统安全性 D.支持共享文件11.在磁盘调度算法中叙述正确的是______。

A.SSTF算法性能最好B.磁盘调度算法的性能与队列中请求服务的数目无关C.对I/O队列中的服务请求进行干预处理有利于提高C-LOOK算法的性能D.C-SCAN算法适用于磁盘负载较小的系统12.位示图用于______。

A.页面置换 B.磁盘空间管理 C.文件目录查找 D.磁盘驱动调度13. 在下列有关旋转延迟的叙述中,不正确的是______。

计算机操作系统实验课实验报告

计算机操作系统实验课实验报告

实验报告实验课程: 计算机操作系统学生姓名:XXX学号:XXXX专业班级:软件2014年12月25日目录实验一熟悉Windows XP中的进程和线程 (3)实验二进程调度 (7)实验三死锁避免—银行家算法的实现 (16)实验四存储管理 (22)实验一熟悉Windows XP中的进程和线程一、实验名称熟悉Windows XP中的进程和线程二、实验目的1、熟悉Windows中任务管理器的使用。

2、通过任务管理器识别操作系统中的进程和线程的相关信息。

3、掌握利用spy++.exe来察看Windows中各个任务的更详细信息。

三、实验结果分析1、启动操作系统自带的任务管理器:方法:直接按组合键Ctrl+Alt+Del,或者是在点击任务条上的“开始”“运行”,并输入“taskmgr.exe”。

2、调整任务管理器的“查看”中的相关设置,显示关于进程的以下各项信息,并完成下表:表一:统计进程的各项主要信息3、启动办公软件“Word”,在任务管理器中找到该软件的登记,并将其结束掉。

再从任务管理器中分别找到下列程序:winlogon.exe、lsass.exe、csrss.exe、smss.exe,试着结束它们,观察到的反应是任务管理器无法结束进程,原因是该系统是系统进程。

4、在任务管理器中找到进程“explorer.exe”,将之结束掉,并将桌面上你打开的所有窗口最小化,看看你的计算机系统起来什么样的变化桌面上图标菜单都消失了、得到的结论 explorer.exe是管理桌面图标的文件(说出explorer.exe进程的作用)。

5、运行“spy++.exe”应用软件,点击按钮“”,切换到进程显示栏上,查看进程“explorer.exe”的各项信息,并填写下表:进程:explorer.exe 中的各个线程6、注意某些线程前有“+”,如图所示:,说明二者之间的差异前有“+”其器线程下有窗口。

四、心得体会通过本次实验,我了解到了windows系统中进程的管理与操作,我了解了如何切出任务管理器,任务管理器应用与其他与进程相关的知识,明白了有些系统程序不能够关闭,系统中的进程与线程虽然很多,但是其中有许多关联,只要弄清楚其中的关联那么就能够运用好进程与线程,达到我们的目的。

Windows操作系统实验

Windows操作系统实验

第2章Windows操作系统实验实验一Windows基本操作作业要求(1)将打开的窗口层叠,在各窗口中进行切换,并改变窗口的大小,这里要分清窗口右上角的三个按钮的作用。

注意:窗口在最小化时,程序仍在运行,单击“任务栏”窗口中的相关按钮,窗口即恢复。

(2)对菜单栏菜单、快捷菜单进行操作,注意菜单命令的各种不同形式。

(3)打开一个对话框,熟悉其中的各个操作元素。

实验二文件管理操作作业要求在Windows实验素材库建立了如图2-6所示的文件夹结构。

从相应网站下载该实验素材文件夹中的EXERCISE文件夹到D盘根目录下,完成以下操作:(1)在D盘根目录下建立如图2-7所示的文件夹结构。

(2)将EXERCISE文件夹下除TOOL以外的文件夹复制到STUDENT文件夹下。

(3)将STUDENT文件夹下的DOCUMENT文件夹下的文件移动到STUDENT1\WORD文件夹下。

(4)将ELSE文件夹重命名为WIN。

(5)删除VOICE和USER文件夹。

(6)恢复被删除的VOICE文件夹,彻底删除USER文件夹。

实验三运行程序和打开文档操作作业要求(1)选择“开始”菜单的“运行”命令运行计算器程序(Calc.exe)。

(2)选择“开始”菜单的“程序”命令运行画图程序。

(3)在“开始”菜单的“文档”中,找到一个近期使用过的文档,打开并编辑它。

(4)搜索“mspaint.exe”程序文件,并运行之。

实验四定制工作环境与计算机管理操作作业要求(1)在屏幕上找到“任务栏”窗口,将“任务栏”窗口隐藏或取消隐藏,并且改变“任务栏”窗口的大小。

(2)将自己喜爱的程序设置为屏幕保护程序。

(3)将自己喜爱的图片设置为桌面背景,并使图片平铺于桌面上。

(4)将桌面上的“我的电脑”图标拖动到任务栏的快速启动区。

(5)在桌面上创建“画图程序”的快捷方式。

实验五 Windows 2000综合练习作业要求从相应网站下载Windows实验素材文件夹中的EXERCISE文件夹到D盘根目录下,然后在EXERCISE文件夹下完成以下操作:(1)在USER文件夹下建立如下所示的文件夹结构。

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

实验三进程与线程
问题:
进程是具有独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的独立单位,具有动态性、并发性、独立性、异步性和交互性。

然而程序是静态的,并且进程与程序的组成不同,进程=程序+数据+PCB,进程的存在是暂时的,程序的存在是永久的;一个程序可以对应多个进程,一个进程可以包含多个程序。

当操作系统引入线程的概念后,进程是操作系统独立分配资源的单位,线程成为系统调度的单位,与同一个进程中的其他线程共享程序空间。

本次实验主要的目的是:
(1)理解进程的独立空间;
(2)加深对进程概念的理解,明确进程和程序的区别;
(3)进一步认识并发执行的实质;
(4)了解红帽子(Linux)系统中进程通信的基本原理。

(5)理解线程的相关概念。

要求:
1、请查阅资料,掌握进程的概念,同时掌握进程创建和构造的相关知识和线程创建和
构造的相关知识,了解C语言程序编写的相关知识;
(1)进程:
进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。

程序是指令、数据及其组织形式的描述,进程是程序的实体。

进程的概念主要有两点:第一,进程是一个实体。

每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。

文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内
存;堆栈区域存储着活动过程调用的指令和本地变量。

第二,进程是一个“执行中的程序”。

程序是一个没有生命的实体,只有处理器赋予程序生命时(操作系统执行之),它才能成为一个活动的实体,我们称其为进程。

(2)进程的创建和构造:
进程简单来说就是在操作系统中运行的程序,它是操作系统资源管理的最小单位。

但是进程是一个动态的实体,它是程序的一次执行过程。

进程和程序的区别在于:进程是动态的,程序是静态的,进程是运行中的程序,而程序是一些保存在硬盘上的可执行代码。

新的进程通过克隆旧的程序(当前进程)而建立。

fork() 和clone()(对于线程)系统调用可用来建立新的进程。

(3)线程的创建和构造:
线程也称做轻量级进程。

就像进程一样,线程在程序中是独立的、并发的执行路径,每个线程有它自己的堆栈、自己的程序计数器和自己的局部变量。

但是,与独立的进程相比,进程中的线程之间的独立程度要小。

它们共享内存、文件句柄和其他每个进程应有的状态。

线程的出现也并不是为了取代进程,而是对进程的功能作了扩展。

进程可以支持多个线程,它们看似同时执行,但相互之间并不同步。

一个进程中的多个线程共享相同的内存地址空间,这就意味着它们可以访问相同的变量和对象,而且它们从同一堆中分配对象。

尽管这让线程之间共享信息变得更容易,但你必须小心,确保它们不会妨碍同一进程里的其他线程。

线程与进程相似,是一段完成某个特定功能的代码,是程序中单个顺序的流控制,但与进程不同的是,同类的多个线程是共享同一块内存空间和一组系统资源的,而线程本身的数据通常只有微处理器的寄存器数据,以及一个供程序执行时使用的堆栈。

所以系统在产生一个线程,或者在各个线程之间切换时,负担要比进程小得多,正因如此,线程也被称为轻型进程(light-weight process)。

一个进程中可以包含多个线程。

2、理解进程的独立空间的实验内容及步骤
(1)编写一个程序,在其main()函数中定义一个变量shared,对其进行循环加/减操作,并输出每次操作后的结果;
源程序如下所示:
运行结果如图所示:
(2)使用系统调用fork()创建子进程,观察该变量的变化;
在(1)的基础上修改源码,增加多进程部分代码:
结果:
与(1)的运行结果不同,多进程情况下,子进程拷贝了父进程的内存区,因此父子进程有各自的内存空间,有各自的变量,互不影响。

父子进程从fork 语句开始分开执行,且一般情况下,父子进程会争夺系统资源,谁先占用资源,谁先执行
(3)修改程序把shared变量定义到main()函数之外,重复第(2)步操作,观察该变量的变化。

结果截图:
和(2)的运行结果相同;
说明父子进程有各自的内存空间,有各自的变量,独立运行。

在多进程情况下,不管是局部变量还是全局变量,父子进程都会有各自的一份拷贝,从而独立运行。

3、理解线程的实验步骤
流程图如下所示:开始
开始设置全局变量
创建主进程
创建线程
结束
(1)编写一个程序,在其main()函数中创建一个(或多个)线程,观察该线程是如何与主线程并发运行的。

输出每次操作后的结果;
代码截图:
结果截图:
多次运行程序,可以看到会有不同的结果出现;
原因:多个线程是并发执行的,相互独立运行的,多次执行结果可能不相同。

(2)在main()函数外定义一个变量shared(全局变量),在main()中创建一个线程,在main()中和新线程shared进行循环加/减操作,观
察该变量的变化;
代码截图:
结果截图:
分析:程序中两个进程都对shared变量产生影响,从而使shared的值在重复0和1。

原因:在多个线程中均可使用,说明多个线程共享了一块存储区,从而验证了这多个线程共享了同一进程块。

(3)修改程序把shared变量定义到main()函数之内,重复第(2)步操作,观察该变量的变化。

直接把全局变量shared改成局部定义,其它的保持不变直接编译出现错误;代码:
当shared为全局变量时,程序可以正常执行,说明了shared在共享的进程块中,而不是某个线程所独占;然而此时,shared只是改为局部变量,编译时出现错误,不能继续进行操作,需要改动程序,通过传递指针变量消除错误,继续运行。

4. 编写一段程序,使用系统调用fork( )创建两个子进程。

当此程序运行时,在系统中有一个父进程和两个子进程活动。

让每一个进程在屏幕上显示一个字符:父进程显示'a',子进程分别显示字符'b'和字符'c'。

试观察记录屏幕上的显示结果(多次运行,查看结果是否有变化),并分析原因;
多次执行的话,a/b/c的显示顺序不一定,取决于进程的调度时机:
P1和父进程执行先后次序随机
1)执行p1进程时,先输出‘b’;执行到语句
2)执行父进程时,当执行到语句P2 = fork ( )时,如果创建新进程成功,则又出现一个新进程,即子进程(记为p2),父进程仍然存在。

P2 = fork ( )语句执行完之后,p2和父进程执行先后次序随机。

此时执行p2时,输出‘c’;父进程会输出‘a’。

5、修改已编写的程序,将每个进程输出一个字符改为每个进程输出一句话,在观察程序执行时屏幕出现的现象(多次运行,查看结果是否有变化),并分析原因;
结果:
字符串内部字符的数字不会改变;
分析:由于函数printf()输出的字符串之间不会被中断,因此,字符串内部的字符顺序输出时不变。

但是, 由于进程并发执行时的调度顺序和父子进程的抢占处理机问题,输出字符串的顺序和先后随着执行的不同而发生变化。

这与打印单
字符的结果相同
6、如果在程序中使用调用lockf()来给每一个子进程加锁,可以实现进程之间的互斥,观察并分析出现的现象;
代码:
结果:
分析:lockf ( 1, 1, 0 )锁定标准输出设备,lockf ( 1, 0, 0 )解锁标准输出设备,在lockf ( 1, 1, 0 )与lockf ( 1, 0, 0 )中间的for循环输出不会被中断,加锁与不加锁效果不相同。

7、分析总结
(1)对于fork()语句的使用还是不够熟练和清楚;
(2)注意shared 的全局性和局部性,而且在作为局部变量时,应注意print_thread_id()函数和pthread_create()函数的使用,因为后者的第四个参数是指针型变量,故在传递shared的值时应注意指针的使用;
(3)vi操作;。

相关文档
最新文档