2015下《操作系统原理》实验报告
- 格式:pdf
- 大小:621.76 KB
- 文档页数:30
操作系统实验报告书院系名称:电子工程学院电子指导教师:班级:学号:学生姓名:实验题目一:进程一、实验目的通过观察、分析实验现象,深入理解进程及进程在调度执行和内存空间等方面的特点,掌握在POSIX 规范中fork和kill系统调用的功能和使用。
二、实验内容(1)补充POSIX 下进程控制的残缺版实验程序(2)回答下列问题:1. 你最初认为运行结果会怎么样?2. 实际的结果什么样?有什么特点?试对产生该现象的原因进行分析。
3. proc_number 这个全局变量在各个子进程里的值相同吗?为什么?4. kill 命令在程序中使用了几次?每次的作用是什么?执行后的现象是什么?5. 使用kill 命令可以在进程的外部杀死进程。
进程怎样能主动退出?这两种退出方式哪种更好一些?三、实验步骤1.根据题意进入DOC环境中编写程序。
2.编译,链接,运行程序,进行调试。
3.分析实验结果及回答问题。
四、调试情况,回答问题及体会1、对自己设计进行评价,指出合理和不足之处,提出改进的方案。
2、在设计过程中的感受。
调试情况:回答上述实验内容中的问题1.预期结果:会持续输出0-9号进程,直到输入数字键+回车,则会杀死该进程,接下来的输出将不会有该进程号,当输入q+回车,则退出程序。
2.实际结果:与预期差不多,因输入进程总数20大于设定的最大进程数,因此按进程数10来处理。
随机输出0-9号进程,sleep(SLEEP_INTERV AL),循环输出,直到输入数字键,则会杀死该数字对应的进程,直到输入q退出循环,然后杀死本组所有进程。
分析:每创建一个子进程时,将其pid存储在pid[i]中,i存储在proc_number,然后调用死循环函数do_something(),输出该进程的代号proc_number;当输入数字键时,主进程会执行kill(pid[ch-'0'],SIGTERM),从而杀死(ch-‘0’)号进程。
操作系统原理实验报告操作系统原理实验报告一、引言操作系统是计算机系统中的核心软件,它负责管理和协调计算机硬件资源,提供用户与计算机硬件之间的接口,使得用户可以方便地使用计算机。
在本次实验中,我们通过实际操作和观察,深入理解了操作系统的原理和工作机制。
二、实验目的本次实验的主要目的是通过模拟操作系统的运行过程,加深对操作系统原理的理解。
具体目标包括:1. 掌握操作系统的启动过程和内存管理机制;2. 理解进程调度算法的原理和实现;3. 学习文件系统的组织和管理方式;4. 了解操作系统与硬件之间的交互方式。
三、实验过程1. 启动过程在计算机启动时,操作系统首先加载到内存中,并开始执行。
我们通过模拟实验,深入了解了操作系统的启动过程。
我们观察到操作系统通过读取硬盘中的引导扇区来进行启动,并且在启动过程中会进行一系列的初始化操作,如初始化内存管理、进程管理和设备驱动等。
2. 内存管理内存管理是操作系统中的重要组成部分,它负责分配和回收内存资源,以及管理进程的内存空间。
在实验中,我们学习了内存分页和内存分段两种常见的内存管理方式,并通过实际操作和观察,对其原理和实现有了更深入的了解。
3. 进程调度进程调度是操作系统中的核心功能之一,它决定了哪些进程能够获得CPU的使用权。
在实验中,我们学习了常见的进程调度算法,如先来先服务、短作业优先和时间片轮转等。
通过模拟实验,我们观察到不同的调度算法对进程执行的影响,加深了对进程调度原理的理解。
4. 文件系统文件系统是操作系统中负责管理和组织文件的机制。
在实验中,我们学习了文件系统的组织方式,如目录结构和文件存储方式等。
通过实际操作和观察,我们了解了文件系统的工作原理和实现机制。
5. 硬件交互操作系统与硬件之间的交互是实现计算机功能的关键。
在实验中,我们学习了操作系统与硬件之间的通信方式,如中断和设备驱动等。
通过模拟实验,我们观察到操作系统是如何与硬件进行交互,并掌握了操作系统与硬件之间的配合工作。
《操作系统原理》实验报告班级:姓名:学号:指导老师:目录:实验题目:实验一线程创建与撤销 (2)实验题目:实验二线程同步 (6)实验题目:实验三线程互斥 (11)实验题目:实验四进程通信 (17)实验题目:实验五读者-写者问题 (21)实验题目:实验六进程调度 (37)实验题目:实验七存储管理之动态链接库 (52)实验题目:实验八存储管理之内存分配 (56)实验题目:实验九存储管理之页面置换算法 (69)实验题目:实验十设备管理 (84)实验题目:实验十一文件管理之文件读写 (98)实验题目:实验一线程创建与撤销完成人:XXX报告日期:2018年3月31日一、实验内容简要描述(1)熟悉VC++、Visual Studio开发环境。
(2)使用相关函数创建和撤销线程。
(3)在一个进程中创建3个线程,名字分别为threada、threadb、threadc。
threada输出“hello world! ”。
threadb输出“My name is …”。
threadc输出“Please wait…”,然后sleep 5秒钟,接着输出“I wake up”。
二、程序设计1、设计思路该函数创建一个在调用进程的地址空间中执行的线程。
2、主要数据结构HANDLE CreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes,DWORD dwStackSize,LPTHREAD_START_ROUTINE lpStartAddress,LPVOID lpParameter,DWORD dwCreationFlags,LPDWORD lpThreadId);VOID ExitThread(DWORD dwExitCode);VOID Sleep(DWORD dwMilliseconds);VOID Sleep(DWORD dwMilliseconds);三、实验结果1、基本数据lpThreadAttributes:指向一个SECURITY_ATTRIBUTES结构,该结构决定了返回的句柄是否可被子进程继承。
《操作系统》实验报告一、实验目的操作系统是计算机系统中最为关键的组成部分之一,本次实验的主要目的是深入理解操作系统的基本原理和功能,通过实际操作和观察,熟悉操作系统的核心概念,包括进程管理、内存管理、文件系统和设备管理等,提高对操作系统的实际应用能力和问题解决能力。
二、实验环境本次实验在以下环境中进行:操作系统:Windows 10开发工具:Visual Studio 2019编程语言:C++三、实验内容1、进程管理实验进程是操作系统中最基本的执行单元。
在这个实验中,我们使用C++编写程序来创建和管理进程。
通过观察进程的创建、执行和结束过程,理解进程的状态转换和资源分配。
首先,我们编写了一个简单的程序,创建了多个子进程,并通过进程标识符(PID)来跟踪它们的运行状态。
然后,使用等待函数来等待子进程的结束,并获取其返回值。
在实验过程中,我们发现进程的创建和销毁需要消耗一定的系统资源,而且进程之间的同步和通信需要谨慎处理,以避免出现死锁和竞争条件等问题。
2、内存管理实验内存管理是操作系统的核心功能之一,它直接影响系统的性能和稳定性。
在这个实验中,我们研究了动态内存分配和释放的机制。
使用 C++中的 new 和 delete 操作符来分配和释放内存。
通过观察内存使用情况和内存泄漏检测工具,了解了内存分配的效率和可能出现的内存泄漏问题。
同时,我们还探讨了内存分页和分段的概念,以及虚拟内存的工作原理。
通过模拟内存访问过程,理解了页表的作用和地址转换的过程。
3、文件系统实验文件系统是操作系统用于管理文件和目录的机制。
在这个实验中,我们对文件的创建、读写和删除进行了操作。
使用 C++的文件流操作来实现对文件的读写。
通过创建不同类型的文件(文本文件和二进制文件),并对其进行读写操作,熟悉了文件的打开模式和读写方式。
此外,还研究了文件的权限设置和目录的管理,了解了如何保护文件的安全性和组织文件的结构。
4、设备管理实验设备管理是操作系统与外部设备进行交互的桥梁。
《操作系统》实验二一、实验目的本实验旨在加深对操作系统基本概念和原理的理解,通过实际操作,提高对操作系统设计和实现的认知。
通过实验二,我们将重点掌握进程管理、线程调度、内存管理和文件系统的基本原理和实现方法。
二、实验内容1、进程管理a.实现进程创建、撤销、阻塞、唤醒等基本操作。
b.设计一个简单的进程调度算法,如轮转法或优先级调度法。
c.实现进程间的通信机制,如共享内存或消息队列。
2、线程调度a.实现线程的创建、撤销和调度。
b.实现一个简单的线程调度算法,如协同多任务(cooperative multitasking)。
3、内存管理a.设计一个简单的分页内存管理系统。
b.实现内存的分配和回收。
c.实现一个简单的内存保护机制。
4、文件系统a.设计一个简单的文件系统,包括文件的创建、读取、写入和删除。
b.实现文件的存储和检索。
c.实现文件的备份和恢复。
三、实验步骤1、进程管理a.首先,设计一个进程类,包含进程的基本属性(如进程ID、状态、优先级等)和操作方法(如创建、撤销、阻塞、唤醒等)。
b.然后,实现一个进程调度器,根据不同的调度算法对进程进行调度。
可以使用模拟的方法,不需要真实的硬件环境。
c.最后,实现进程间的通信机制,可以通过模拟共享内存或消息队列来实现。
2、线程调度a.首先,设计一个线程类,包含线程的基本属性(如线程ID、状态等)和操作方法(如创建、撤销等)。
b.然后,实现一个线程调度器,根据不同的调度算法对线程进行调度。
同样可以使用模拟的方法。
3、内存管理a.首先,设计一个内存页框类,包含页框的基本属性(如页框号、状态等)和操作方法(如分配、回收等)。
b.然后,实现一个内存管理器,根据不同的内存保护机制对内存进行保护。
可以使用模拟的方法。
4、文件系统a.首先,设计一个文件类,包含文件的基本属性(如文件名、大小等)和操作方法(如创建、读取、写入、删除等)。
b.然后,实现一个文件系统管理器,包括文件的存储和检索功能。
《操作系统原理》课程设计报告书题目:进程控制模块的设计与实现专业:网络工程学号: ********* 学生姓名:***指导教师:***完成日期: 2015-12-05目录第1章课题概述 (3)1.1 设计要求 (3)1.2 设计理论依据 (3)第2章设计简介和内容 (6)2.1 设计简介 (6)2.2 设计内容 (6)第3章详细设计3.1 设计流程图 (7)3.2 主要程序代码 (9)第4章设计结果及分析 (10)4.1 运行结果截图 (10)4.2 运行结果分析................................ 错误!未定义书签。
总结.. (15)第1章课题描述1.1设计要求1.叙述要详细。
2.要有条理。
3.各个功能分开阐述。
4.自己可以增加题目要求的功能模块。
5.可以增加自己对题目的理解。
1.2设计理论依据根据作业控制块中的信息,审查系统能否满足用户作业的资源需求,以及按照一定的算法,从外存的后备队列中选取某些作业调入内存,并为它们创建进程、分配必要的资源。
短作业优先调度算法,从后备队列中选择一个或若干个估计运行时间最短的作业,将它们调入内存运行。
第2章设计简介和内容2.1设计简介在多道程序环境下,将系统中的作业组织起来,为每个进入系统的作业建立档案以记录和作业相关的信息,按要求输入作业名、到达时间和服务时间,并为其建立作业控制块(JCB)挂入后备队列。
进行作业调度时,在其后计算出各个作业的开始执行时间、完成时间、周转时间和平均周转时间,利用短作业优先算法进行作业调度,并按照由小到大的顺序显示出来。
2.2 设计内容1)编写程序完成批处理系统中的作业调度,要求采用短作业优先的作业调度算法。
实验具体包括:首先确定作业控制块的内容,作业控制块的组成方式;然后完成作业调度;最后编写主函数对所作工作进程测试。
2)创建作业控制块JCB,定义为结构体,为进入系统的作业建立档案,其中定义了作业名,作业到达时间,作业服务时间,作业开始执行时间,作业完成时间,作业周转时间,作业平均周转时间。
一、实验目的1. 理解操作系统基本原理,包括进程管理、内存管理、文件系统等。
2. 掌握操作系统的基本命令和操作方法。
3. 通过实验加深对操作系统原理的理解和掌握。
二、实验环境1. 操作系统:Linux2. 编程语言:C语言3. 开发工具:Eclipse三、实验内容本次实验主要分为以下几个部分:1. 进程管理实验2. 内存管理实验3. 文件系统实验四、实验步骤及结果1. 进程管理实验实验步骤:- 使用C语言编写一个简单的进程管理程序,实现进程的创建、调度、同步和通信等功能。
- 编写代码实现进程的创建,通过调用系统调用创建新的进程。
- 实现进程的调度,采用轮转法进行进程调度。
- 实现进程同步,使用信号量实现进程的互斥和同步。
- 实现进程通信,使用管道实现进程间的通信。
实验结果:- 成功创建多个进程,并实现了进程的调度。
- 实现了进程的互斥和同步,保证了进程的正确执行。
- 实现了进程间的通信,提高了进程的效率。
2. 内存管理实验实验步骤:- 使用C语言编写一个简单的内存管理程序,实现内存的分配、释放和回收等功能。
- 实现内存的分配,采用分页存储管理方式。
- 实现内存的释放,通过调用系统调用释放已分配的内存。
- 实现内存的回收,回收未被使用的内存。
实验结果:- 成功实现了内存的分配、释放和回收。
- 内存分配效率较高,回收内存时能保证内存的连续性。
3. 文件系统实验实验步骤:- 使用C语言编写一个简单的文件系统程序,实现文件的创建、删除、读写等功能。
- 实现文件的创建,通过调用系统调用创建新的文件。
- 实现文件的删除,通过调用系统调用删除文件。
- 实现文件的读写,通过调用系统调用读取和写入文件。
实验结果:- 成功实现了文件的创建、删除、读写等功能。
- 文件读写效率较高,保证了数据的正确性。
五、实验总结通过本次实验,我对操作系统原理有了更深入的理解和掌握。
以下是我对实验的几点总结:1. 操作系统是计算机系统的核心,负责管理和控制计算机资源,提高计算机系统的效率。
操作系统原理实验报告一、课程设计的题目:根据“操作系统原理”课程的课堂教学内容,结合自己的知识积累情况,题目可从下述拟题中选择,亦可自定。
二、实验设计的内容:在Linux或Windows操作系统下,用C语言进行操作系统相关的设计开发,内容可关于“并发程序设计”、“处理机管理”、“作业管理”、“存储管理”、“文件系统管理”、“设备管理”等等。
三、参考资料:1、清华大学出版,张尧学《计算机操作系统教程》配套的《习题解答与实验指导书》中范例;2、清华大学出版,任爱华《操作系统实用教程》中的实例设计;3、《Linux下C语言编程入门教程》、《Linux软件工程师(C语言)实用教程》等;4、网上与操作系统设计与开发相关的文献资料。
四、重要操作环节1、步骤:选题(4、5人一小组)--→提交小组名单--→分析、编写程序--→上机调试--→分析结果--→评价结果--→写出设计报告2、设计报告的主要内容:①、设计说明:设计主要完成的任务、解决的主要问题;②、工作原理:找出教材中的相关工作原理并简要说明;③、详细设计:包括调用的主要系统函数说明、程序流程图、程序代码、关键语句注释;④、运行结果:要求写出运行结果或抓图给出;⑤、分析结果:要求用操作系统原理有关理论解释说明;⑥、调试步骤以及调试过程中出现的问题及解决方法;⑦、参考文献:5篇以上;⑧、以学年论文格式提交文档资料,要有统一的封面和实验心得体会。
五、成绩评定1、必做实验10分,选做实验20分;2、各组同学代表打分占50%,实验报告的规范化程度50%;3、打分遵循原则如上学期信息检索课程(叙述简明扼要、思路清晰、时间掌握得好、回答问题准确、PPT美观等),实验报告规范化程度如学年论文。
必做实验每小组都要做选做实验,每一题最多只能有两个小组选必做实验(四个,每小组每一实验都要做)(满分10分)实验一1. 实验名称:Linux登录、注销、关机和基本操作一。
2. 实验要求:掌握Linux系统的登录、注销、关机方法;掌握列出文件清单命令的使用方法:ls;掌握目录的切换命令的使用:cd;掌握目录的建立、删除命令的使用:mkdir、rmdir;掌握文件的拷贝、删除、移动命令的使用:cp、rm、mv 。
HUNAN UNIVERSITY操作系统原理实验报告本实验是在Linux RedHat 9.0环境下完成的,所用的Linux内核为2.4.20-8,gcc版本为,Part 1由于Linux下的命令众多,因而选取了实验材料中常用的大部分命令进行演示,结果如下:实验一(1)显示当前目录的全路径名(2)将当前目录改变为根目录(3)跳到自己的home directory(4)列出本目录中的文件(5)在用户主目录中创建一个名为mydir的新目录。
然后调用长列表命令来查看/home/用户名mydir目录和/home/用户名目录(只查看目录文件的信息)(6)touch命令在mydir目录创建名为myfile1,myfile2的两个文件(7)用cat查看/etc/passwd文件的内容(8)建立shell脚本运行shell脚本结果(9)使用cat命令与重定向,创建一个名为junk的文件。
先随便输入几行内容使用cat命令在你刚刚创建的文件的末尾新加入几行文本(10)显示/etc/passwd文件的前10行的内容显示/etc/passwd文件的后10行的内容(11)报告当前进程状态(12)实时监测进程状态(13)在一台机子上从控制台同时登录两个用户,g1,g2,g1给g2发一封邮件。
写上主题,忽略抄送(Cc:选项)首先查看本机IP用户创建然后进行远程登录(首先要检查时候安装telnet,否则要先安装,然后才可能登陆成功。
由于root用户一般情况下不能进行远程登录,所以如果当前用户是root时,远程登陆不会成功,要首先切换到普通用户,然后进行远程登录邮件由g1发送G2邮件接收(14)送一个通知给所有的用户,告诉他们你已经完成了这个练习通知由g2发出(15)写个简单的程序,并且运行Part 2实验一中断处理一、实习内容模拟中断事件的处理。
二、实习目的现代计算机系统的硬件部分都设有中断机构,它是实现多道程序设计的基础。
中断机构能发现中断事件,且当发现中断事件后迫使正在处理器上执行的进程暂时停止执行,而让操作系统的中断处理程序占有处理器去处理出现的中断事件。
操作系统原理实验报告操作系统原理实验报告学院:信息与电子工程学院专业:计算机科学与技术班级:计算机130班学号:1130299000姓名:某某某浙江科技学院2014-2015学年第2学期实验1 进程管理一、实验目的1. 弄清进程和程序的区别,加深对进程概念的理解。
2. 了解并发进程的执行过程,进一步认识并发执行的实质。
3. 掌握解决进程互斥使用资源的方法。
二、实验内容1. 管道通信使用系统调用pipe( )建立一个管道,然后使用系统调用fork( )创建2个子进程p1和p2。
这2个子进程分别向管道中写入字符串:“Child process p1 is sending message!”和“Child process p2 is sending message!”,而父进程则从管道中读出来自两个子进程的信息,并显示在屏幕上。
2. 软中断通信使用系统调用fork( )创建2个子进程p1和p2,在父进程中使用系统调用signal( )捕捉来自键盘上的软中断信号SIGINT(即按Ctrl-C),当捕捉到软中断信号SIGINT后,父进程使用系统调用kill( )分别向2个子进程发出软中断信号SIGUSR1和SIGUSR2,子进程捕捉到信号后分别输出信息“Child process p1 is killed by parent!”和“Child process p2 is killed by parent!”后终止。
而父进程等待2个子进程终止后,输出信息“Parent process is killed!”后终止。
三、实验要求1. 根据实验内容编写C程序。
2. 上机调试程序。
3. 记录并分析程序运行结果。
四、程序说明和程序流程图五、程序代码六、程序运行结果及分析实验2 进程通信一、实验目的1. 了解进程间通信IPC的三种方式:消息队列、共享内存和信号量。
2. 掌握使用消息队列进行进程间通信的有关系统调用和编程方法。
操作系统原理实验报告操作系统原理实验报告1. 实验背景操作系统是计算机系统中的核心软件之一,负责管理和控制计算机硬件资源,提供给应用程序一个良好的运行环境。
为了更好地理解和掌握操作系统的原理,我们进行了操作系统原理实验。
2. 实验目的通过实验,我们的目的是深入了解操作系统的各个组成部分,包括进程管理、内存管理、文件系统等,并学习如何使用相关工具进行操作系统的开发和调试。
3. 实验环境在实验中,我们使用了一台配置较高的计算机,安装了Linux操作系统,并安装了相关的开发工具和调试工具。
4. 实验过程4.1 进程管理实验在进程管理实验中,我们学习了进程的创建、调度和终止等操作。
通过编写简单的程序,我们可以创建多个进程,并观察它们的执行顺序和并发性。
4.2 内存管理实验在内存管理实验中,我们学习了内存的分配和释放。
通过编写程序,我们可以模拟内存的分配和释放过程,并观察内存的使用情况和碎片化程度。
4.3 文件系统实验在文件系统实验中,我们学习了文件的创建、读写和删除等操作。
通过编写程序,我们可以创建文件、写入数据,并读取和删除文件。
5. 实验结果与分析在实验过程中,我们成功地完成了进程管理、内存管理和文件系统的实验。
通过观察实验结果,我们发现操作系统能够很好地管理和控制计算机资源,提供给应用程序一个良好的运行环境。
6. 实验感想通过这次操作系统原理实验,我们深入了解了操作系统的原理和工作机制。
我们不仅学会了使用相关工具进行操作系统的开发和调试,还对操作系统的各个组成部分有了更深入的理解。
7. 实验总结操作系统原理实验是我们深入学习操作系统的重要环节。
通过实验,我们不仅巩固了理论知识,还提高了实际操作的能力。
希望今后能够继续深入学习操作系统的原理和应用,为计算机系统的设计和开发做出贡献。
8. 参考文献[1] Silberschatz, A., Galvin, P. B., & Gagne, G. (2018). Operating System Concepts. Wiley.9. 致谢感谢指导老师在实验中的悉心指导和帮助,使我们能够顺利完成实验任务。
自考《操作系统》实验环节实施方案根据《操作系统》课程教学要求,实验环节应要求完成五个实验项目。
考虑到自考课程教学实际情况,结合我院实验室的条件,经任课教师、实验指导教师、教研室主任和我院学术委员会认真讨论,确定开设三个实验项目。
实验项目、内容及要求详见我院编制的《操作系统》课程实验大纲。
一、实验环境目前,我院根据编制的《操作系统》课程实验大纲,实验环境基本能满足开设的实验项目。
实验环境主要设备为:硬件:一台能正常启动的计算机软件:Visual C++ 6.0, Windows2003等二、实验报告要求与成绩评定学生每完成一个实验项目,要求独立认真的填写实验报告。
实验指导教师将根据学生完成实验的态度和表现,结合填写的实验报告评定实验成绩。
成绩的评定按百分制评分。
三、实验考试学生在完成所有实验项目后,再进行一次综合性考试。
教师可以根据学生完成的实验项目,综合出3套与实验相似的考试题,由学生任选一套独立完成。
教师给出学生实验考试成绩作为最终实验成绩上报。
四、附件附件1 《操作系统》课程实验大纲附件2 实验报告册样式以上对《计操作系统》课程实验的实施方案,妥否,请贵校批示。
重庆科创职业学院2009年3月20日附件1 《操作系统》课程实验教学大纲实验课程负责人:赵志斌开课学期:第四学期实验类别:专业基础课程实验类型:应用性实验实验要求:必修适用专业:通信工程课程总学时:12学时课程总学分: 1分《操作系统》课程实验项目及学时分配实验一页式存储管理一、实验目的掌握页面存储管理的内存分配方法,位视图的表示。
二、实验内容1、运行程序,由检查教师给出文件名,该文件中存有内存目前状况的位示图的数据(0和1的文件)。
(程序应做提示,界面友好)。
2、你所编制的程序应读入数据,存放在相应的数据结构中。
3、显示友好的用户界面,由检查教师输入内存申请(总块数)。
4、根据申请和位示图状态,为用户分配内存,并建立页表。
5、输出位示图和页表。
《操作系统原理》报告《操作系统原理》实验指导书班级:__信管***_____学号:__***__姓名:___***________信息管理与信息系统教研室目录实验题目二:模拟进程调度功能 (4)一、题目类型: (4)二、实验目的: (4)三、实验环境: (4)四、实验内容: (4)五、实验要求: (4)六、各功能简要说明: (5)七、程序清单: (5)八、程序中使用的数据结构及符号说明: (11)九、调试程序时出现问题说明及解决的方法: (11)实验题目五:模拟使用银行家算法判断系统的状态 (11)一、题目类型: (11)二、实验目的: (11)三、实验环境: (11)四、实验内容: (12)五、实验要求: (12)六、各功能简要说明: (13)七、程序清单: (13)(21)八、程序中使用的数据结构及符号说明: (21)九、程序调试时出现问题及解决的方法: (22)引言操作系统是信息管理与信息系统专业一门重要的专业理论课程,了解和掌握操作系统的基本概念、功能和实现原理,对认识整个计算机系统的工作原理十分重要。
操作系统实验是操作系统课程的一个重要组成部分,通过试验环节的锻炼使同学们不仅能够对以前的所学过的基础知识加以巩固,同时能够通过上机实验,对操作系统的抽象理论知识加以理解,最终达到融会贯通的目的,因此,实验环节是同学们理解、掌握操作系统基本理论的一个重要环节。
本实验指导书,根据教材中的重点内容设定了相应的实验题目,由于实验课程的学时有限,我们规定了必做题目和选做题目,其中必做题目必须在规定的上机学时中完成,必须有相应的预习报告和实验报告。
选做题目是针对有能力或感兴趣的同学利用课余时间或上机学时的剩余时间完成。
实验题目二:模拟进程调度功能一、题目类型:必做题目。
二、实验目的:通过本实验,进一步掌握进程调度的功能和实现原理。
三、实验环境:1、硬件:PC机及其兼容机。
2、软件:Windows OS,Turbo C或C++、VC++、、Java等。
《操作系统原理》实验报告姓名: 杨迟宁学号: U201217418 班级: 软工2班时间:一、实验内容【本节分1,2,3条写出实验内容或要求,篇幅200-400字】设计一个虚拟存储区和内存工作区,并使用下列算法计算访问命中率。
(1)进先出的算法(FIFO)(2)最近最少使用的算法(LRU)(3)最佳淘汰算法(OPT)命中率=(1-页面失效次数)/页地址流长度二、实验原理【本节简要介绍每个实验内容的理论背景,篇幅400-600字】三、实验用到的主要函数或库【本节简要介绍每个实验涉及到的重要函数或库,篇幅200-400字】第一题:1.key_t ftok(char *pathname,char proj)返回文件名对应的键值(把消息队列当作文件处理)头文件:#include <sys/types.h> #include <sys/ipc.h>pathname:文件名proj:项目名(不为0即可)2.int msgget(key_t key,int msgflg)打开或创建消息队列头文件:#include <sys/types.h> #include <sys/ipc.h> #include <sys/msg.h> key:键值,由ftok获得msgflg:标志位(IPC_CREAT,如果不存在,创建新的消息队列IPC_EXCL,与IPC_CREAT一起使用,表示如果消息队列已存在,则返回错误IPC_NOWAIT,读写消息队列要求无法得到满足时,不阻塞)返回值:与键值key相对应的消息队列描述字,出错时返回-1**在以下两种情况下,将创建一个新的消息队列:a)如果没有与键值key相对应的消息队列,并且msgflg参数中包含了IPC_CREAT 标志位b)key参数为IPC_PRIVATE3.int msgsnd(int msqid,struct msgbuf *msgp,int msgsz,int msgflg)向消息队列中发送一条消息头文件:#include <sys/types.h> #include <sys/ipc.h> #include <sys/msg.h>msqid:消息队列id(消息队列的描述字)msgp:存放消息的结构(格式为:struct msgbuf{int mtype;/*消息类型> 0*/char mtex[1];/*消息数据,字符数组*/};)msgsz:消息数据长度msgflg:发送标志,有意义的msgflg标志为IPC_NOWAIT,指明消息队列中没有足够空间容纳要发送的消息时,msgsnd是否等待,0表示等待返回值:发生错误时返回-14.int msgrcv(int msqid,struct msgbuf *msgp,int msgsz,long msgtyp,int msgflg)从消息队列msqid中读取一个msgtyp类型的消息,并把消息存储在msgp指向的msgbuf结构体中。