操作系统实习报告样本

合集下载

操作系统实验实验报告

操作系统实验实验报告

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

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

二、实验环境本次实验使用的操作系统为 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. 参与操作系统开发和维护:在实习期间,我积极参与公司操作系统的开发和维护工作。

这包括与其他团队成员合作,分析和解决操作系统的bug,以及根据需求进行功能增强和改进。

2. 系统性能优化:我还参与了一些系统性能优化的工作。

通过分析和测试,我学会了如何定位和解决系统性能瓶颈,并提出相应的优化建议。

这让我对操作系统的内部原理和工作机制有了更深入的了解。

3. 用户支持和故障排除:作为操作系统团队的一员,我还负责为公司内部的员工提供操作系统相关的技术支持。

这包括回答用户的问题、解决操作系统相关的故障以及编写相关技术文档。

四、实习收获1. 增强操作系统的理论知识:通过实习,我深入学习和理解了操作系统的核心概念和原理。

在实际应用中,我更加清楚地认识到这些理论知识的重要性和应用场景。

2. 实践操作系统开发技能:在操作系统的开发和维护过程中,我学会了使用一些关键的操作系统开发工具和技术,如调试器、性能分析工具等。

这对我的职业发展将起到积极的促进作用。

3. 增强团队协作能力:在实习中,我和其他团队成员积极合作,并深入参与项目开发和讨论。

通过与其他成员的交流和合作,我不断提升了团队协作的能力和技巧。

五、实习心得这次操作系统实习经历让我受益匪浅。

通过亲身参与操作系统的开发和维护,我对操作系统的原理和实际应用有了更深入的理解。

同时,实习也增强了我的团队协作和解决问题的能力。

六、结语通过这次操作系统实习,我的实践能力和技术水平得到了很大提升。

《操作系统》实验报告

《操作系统》实验报告

《操作系统》实验报告一、实验目的操作系统是计算机系统中最为关键的组成部分之一,本次实验的主要目的是深入理解操作系统的基本原理和功能,通过实际操作和观察,熟悉操作系统的核心概念,包括进程管理、内存管理、文件系统和设备管理等,提高对操作系统的实际应用能力和问题解决能力。

二、实验环境本次实验在以下环境中进行:操作系统:Windows 10开发工具:Visual Studio 2019编程语言:C++三、实验内容1、进程管理实验进程是操作系统中最基本的执行单元。

在这个实验中,我们使用C++编写程序来创建和管理进程。

通过观察进程的创建、执行和结束过程,理解进程的状态转换和资源分配。

首先,我们编写了一个简单的程序,创建了多个子进程,并通过进程标识符(PID)来跟踪它们的运行状态。

然后,使用等待函数来等待子进程的结束,并获取其返回值。

在实验过程中,我们发现进程的创建和销毁需要消耗一定的系统资源,而且进程之间的同步和通信需要谨慎处理,以避免出现死锁和竞争条件等问题。

2、内存管理实验内存管理是操作系统的核心功能之一,它直接影响系统的性能和稳定性。

在这个实验中,我们研究了动态内存分配和释放的机制。

使用 C++中的 new 和 delete 操作符来分配和释放内存。

通过观察内存使用情况和内存泄漏检测工具,了解了内存分配的效率和可能出现的内存泄漏问题。

同时,我们还探讨了内存分页和分段的概念,以及虚拟内存的工作原理。

通过模拟内存访问过程,理解了页表的作用和地址转换的过程。

3、文件系统实验文件系统是操作系统用于管理文件和目录的机制。

在这个实验中,我们对文件的创建、读写和删除进行了操作。

使用 C++的文件流操作来实现对文件的读写。

通过创建不同类型的文件(文本文件和二进制文件),并对其进行读写操作,熟悉了文件的打开模式和读写方式。

此外,还研究了文件的权限设置和目录的管理,了解了如何保护文件的安全性和组织文件的结构。

4、设备管理实验设备管理是操作系统与外部设备进行交互的桥梁。

《操作系统》课内实验报告

《操作系统》课内实验报告

《操作系统》课内实验报告一、实验目的本次《操作系统》课内实验的主要目的是通过实际操作和观察,深入理解操作系统的基本原理和功能,掌握常见操作系统命令的使用,提高对操作系统的实际应用能力和问题解决能力。

二、实验环境本次实验在计算机实验室进行,使用的操作系统为 Windows 10 和Linux(Ubuntu 发行版)。

实验所使用的计算机配置为:Intel Core i5 处理器,8GB 内存,500GB 硬盘。

三、实验内容1、进程管理在 Windows 系统中,通过任务管理器观察进程的状态、优先级、CPU 使用率等信息,并进行进程的结束和优先级调整操作。

在 Linux 系统中,使用命令行工具(如 ps、kill 等)实现相同的功能。

2、内存管理使用 Windows 系统的性能监视器和资源监视器,查看内存的使用情况,包括物理内存、虚拟内存的占用和分配情况。

在 Linux 系统中,通过命令(如 free、vmstat 等)获取类似的内存信息,并分析内存的使用效率。

3、文件系统管理在 Windows 系统中,对文件和文件夹进行创建、复制、移动、删除等操作,了解文件的属性设置和权限管理。

在 Linux 系统中,使用命令(如 mkdir、cp、mv、rm 等)完成相同的任务,并熟悉文件的所有者、所属组和权限设置。

4、设备管理在 Windows 系统中,查看设备管理器中的硬件设备信息,安装和卸载设备驱动程序。

在 Linux 系统中,使用命令(如 lspci、lsusb 等)查看硬件设备,并通过安装内核模块来支持特定设备。

四、实验步骤1、进程管理实验(1)打开 Windows 系统的任务管理器,切换到“进程”选项卡,可以看到当前系统中正在运行的进程列表。

(2)选择一个进程,右键点击可以查看其属性,包括进程 ID、CPU 使用率、内存使用情况等。

(3)通过“结束任务”按钮可以结束指定的进程,但要注意不要随意结束系统关键进程,以免导致系统不稳定。

操作系统安装实习报告

操作系统安装实习报告

一、实习时间及地点实习时间:2023年2月15日至2023年2月19日实习地点:XX大学计算机实验室二、实习目的通过本次实习,掌握操作系统的安装方法,熟悉不同操作系统的安装过程,了解操作系统安装过程中可能出现的问题及解决方法,提高实际操作能力。

三、实习内容1. 操作系统种类及特点本次实习主要涉及Windows和Linux两种操作系统。

Windows操作系统以其用户界面友好、应用软件丰富等特点受到广泛使用;Linux操作系统则以其开源、稳定、安全等特点在服务器领域有着较高的市场份额。

2. Windows操作系统安装(1)准备安装盘:将Windows安装盘放入光驱,确保光驱已设置为第一启动设备。

(2)进入BIOS设置:重启计算机,进入BIOS设置界面,将第一启动设备设置为光驱。

(3)开始安装:按下任意键,进入Windows安装界面。

按照提示进行操作,包括选择安装语言、键盘布局、分区等。

(4)安装过程:系统自动进行安装,过程中可能会出现重启计算机的情况,请耐心等待。

(5)安装完成后,设置用户名、密码等个人信息。

3. Linux操作系统安装(1)准备安装盘:将Linux安装盘放入光驱,确保光驱已设置为第一启动设备。

(2)进入BIOS设置:重启计算机,进入BIOS设置界面,将第一启动设备设置为光驱。

(3)开始安装:按下任意键,进入Linux安装界面。

按照提示进行操作,包括选择安装语言、键盘布局、分区等。

(4)安装过程:系统自动进行安装,过程中可能会出现重启计算机的情况,请耐心等待。

(5)安装完成后,设置用户名、密码等个人信息。

四、实习心得与总结1. 通过本次实习,我掌握了Windows和Linux操作系统的安装方法,了解了操作系统安装过程中可能出现的问题及解决方法。

2. 在实际操作过程中,我遇到了一些困难,如分区、驱动程序安装等。

通过查阅资料、请教老师和同学,我逐渐解决了这些问题。

3. 本次实习让我认识到,操作系统安装并非易事,需要耐心和细心。

操作系统课程实验报告

操作系统课程实验报告

一、实验概述实验名称:操作系统课程实验实验目的:1. 理解操作系统基本概念、原理及功能;2. 掌握操作系统的基本操作和应用;3. 提高实际操作能力和分析问题、解决问题的能力。

实验内容:1. 操作系统基本概念及原理的学习;2. 操作系统基本操作的应用;3. 实验项目:文件读写、多进程、多线程。

二、实验环境操作系统:Windows 10编译器:Visual Studio语言:C/C++实验平台:Windows 10系统下的虚拟机三、实验过程1. 操作系统基本概念及原理的学习操作系统是计算机系统中最基本的系统软件,负责管理计算机硬件资源、提供用户接口以及执行各种应用程序。

在实验过程中,我们学习了以下基本概念及原理:(1)进程管理:进程是操作系统能够进行运算处理的独立单位,具有动态性、并发性、异步性和独立性等特点。

进程管理主要包括进程的创建、调度、同步、通信和终止等。

(2)内存管理:内存管理是操作系统核心功能之一,主要负责分配、回收、保护和管理内存资源。

内存管理方式有分页、分段、段页式等。

(3)文件系统:文件系统是操作系统用于存储、检索和管理文件的机制。

文件系统主要包括目录结构、文件属性、文件操作等。

(4)设备管理:设备管理负责管理计算机系统中的各种外部设备,包括输入、输出和存储设备。

设备管理主要包括设备分配、设备驱动程序、缓冲区管理等。

2. 操作系统基本操作的应用在实验过程中,我们应用以下基本操作:(1)进程管理:创建、调度、同步、通信和终止进程。

(2)内存管理:分配、回收、保护和管理内存资源。

(3)文件系统:创建、删除、读写文件,实现目录结构的管理。

(4)设备管理:分配、回收、控制和管理设备。

3. 实验项目:文件读写、多进程、多线程(1)文件读写实验实验目的:掌握文件的基本操作,实现文件的创建、打开、读取、写入和关闭。

实验步骤:① 创建一个文件,命名为“test.txt”。

② 打开文件,以读写模式。

操作系统实验报告3篇

操作系统实验报告3篇

课程设计说明书设计题目:操作系统课程设计班级:信息管理与信息系统2011级学号:姓名:山东科技大学2013年12 月25 日课程设计任务书学院信息科学与工程专业信息学管理与信息系统班级2011-1姓名一、课程设计题目:操作系统课程设计二、课程设计主要参考资料(1)Abraham Silberschatz & Peter Baer Galvin & Greg Gagne. Operating System Concepts(第七版影印版). 高等教育出版社. 2007.3.(2)计算机操作系统(第三版)西安电子科技大学出版社(3)三、课程设计应解决的主要问题:(1)CPU调度算法的模拟实现(2)死锁相关算法的实现(3)磁盘调度算法的实现四、课程设计相关附件(如:图纸、软件等):(1)程序源代码(2)五、任务发出日期:2013-10-1 课程设计完成日期:2014-1-1指导教师签字:指导教师对课程设计的评语成绩:指导教师签字:年月日设计1 CPU调度算法的模拟实现一、设计目的1、根据系统的资源分配策略所规定的资源分配算法2、利用编程语言,模拟实现先来先服务(FCFS)、最短作业优先(非抢占SJF)、非抢占优先调度算法、时间片轮转调度算法(RR)3、针对模拟进程,利用CPU调度算法进行调度4、进行算法评价,计算平均周转时间和平均等待时间二、设计要求1、调度所需的进程参数由输入产生(手工输入或者随机数产生)2、输出调度结果3、输出算法评价指标三、设计说明1、定义public类:class program{public:char name;//进程名int atime;//进程到达的时间int stime;//进程服务的时间int btime;//进程开始执行的时间int ftime;//进程完成的时间int rtime;//进程的周转时间float qrtime;//进程的带权周转时间};2、冒泡排序:class program t;for( i=1;i<m;i++)for(int j=0;j<m-i;j++)if(p[j].atime>p[j+1].atime){t=p[j];p[j]=p[j+1];p[j+1]=t;}3、流程图:(1)①先来先服务调度流程图:②主要程序p[0].btime=p[0].atime;p[0].ftime=p[0].atime+p[0].stime;p[0].rtime=p[0].ftime-p[0].atime;p[0].qrtime=(float)p[0].rtime/p[0].stime;for(i=1;i<m;i++){if(p[i].atime>p[i-1].ftime){p[i].btime=p[i].atime;}else{p[i].btime=p[i-1].ftime;}p[i].ftime=p[i].btime+p[i].stime;p[i].rtime=p[i].ftime-p[i].atime;p[i].qrtime=(float)p[i].rtime/p[i].stime;}①短作业优先进程(非抢占优先权)调度流程图:②(SJF)主要代码int k=0,x=0;for(i=k+1;i<m;i++){for(j=k+1;j<m;j++){if(p[j].atime<p[k].ftime){x++;}elsebreak;}int min=k+1;if(x>1){for(j=k+2;j<=x+k;j++){if(p[j].stime<p[min].stime){min=j;}}t=p[min];p[min]=p[k+1];p[k+1]=t;p[k+1].ftime=p[k].stime+p[k+1].stime;}k++;x=0;}③优先权调度算法(非抢占):int k=0,x=0;for(i=k+1;i<m;i++){for(j=k+1;j<m;j++){if(p[j].atime<p[k].ftime){x++;}elsebreak;}int min=k+1;if(x>1){for(j=k+2;j<=x+k;j++){if(p[j].youxianquan<p[min].youxianquan){min=j;}}t=p[min];p[min]=p[k+1];p[k+1]=t;p[k+1].ftime=p[k].stime+p[k+1].stime;}k++;x=0;}①时间片轮转调度算法:②主要算法int time=p[0].atime;int Max=p[0].stime1;for(i=0; i<m; i++){p[i].stime2=p[i].stime1;if(p[i].stime1>Max)Max=p[i].stime1; }for(int j=0; j<Max; j++){for(i=0; i<m; i++){if(p[i].stime2==0)continue;if(p[i].atime<=time){p[i].stime2-=1;time+=1;}elsei=-1;if(p[i].stime2==0)p[i].ftime=time;}}4、输出p[0].btime=p[0].atime;p[0].ftime=p[0].atime+p[0].stime;p[0].rtime=p[0].ftime-p[0].atime;p[0].qrtime=(double)p[0].rtime/p[0].stime;for(i=1;i<m;i++){if(p[i].atime>p[i-1].ftime){p[i].btime=p[i].atime;}else{p[i].btime=p[i-1].ftime;}p[i].ftime=p[i].btime+p[i].stime;p[i].rtime=p[i].ftime-p[i].atime;p[i].qrtime=(float)p[i].rtime/p[i].stime;}cout<<"进程******到达时间**服务时间**开始执行时间*完成时间**周转时间**带权周转时间"<<endl;for(i=0;i<m;i++){cout<<setiosflags(ios::left)<<setw(10)<<p[i].name<<setw(10)<< p[i].atime<<setw(10)<<p[i].stime<<setw(13)<<p[i].btime<<setw(10) <<p[i].ftime<<setw(10)<<p[i].rtime<<setw(13)<<p[i].qrtime<<endl;}}四、运行结果及分析1、先来先服务(FCFS)测试数据2、短作业优先(SJF)测试数据3、优先权(非抢占)测试数据4、时间片轮转(RR)测试数据五、总结通过这次试验,我进一步的理解了冒泡排序的算法,而且,对进程作业先来先服务、短进程优先、非抢占优先、按时间片轮转调度算法以及进程调度的概念和算法,有了更深入的认识!初步理解了操作系统对于作业处理的基本思想!了解到算法很重要,又更加明白算法本身可以节约时间。

操作系统实验报告-完全版

操作系统实验报告-完全版

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

通过创建进程、观察正在运⾏的进程和终⽌进程的程序设计和调试操作,进⼀步熟悉操作系统的进程概念,理解Windows 2000中进程的“⼀⽣”。

⼆、实验环境硬件环境:计算机⼀台,局域⽹环境;软件环境:Windows 2000 Professional、Visual C++ 企业版。

三、实验内容和步骤第⼀部分:程序1-1Windows 2000 的GUI 应⽤程序Windows 2000 Professional下的GUI应⽤程序,使⽤Visual C++编译器创建⼀个GUI 应⽤程序,代码中包括了WinMain()⽅法,该⽅法GUI类型的应⽤程序的标准⼊⼝点。

# include <># pragma comment(lib, “” )int APIENTRY WinMain(HINSTANCE /* hInstance */ ,HINSTANCE /* hPrevInstance */,LPSTR /* lpCmdLine */,int /* nCmdShow */ ){:: MessageBox(NULL,“hello, Windows 2000” ,“Greetings”,MB_OK) ;return(0) ; }在程序1-1的GUI应⽤程序中,⾸先需要头⽂件,以便获得传送给WinMain() 和MessageBox() API函数的数据类型定义。

接着的pragma指令指⽰编译器/连接器找到库⽂件并将其与产⽣的EXE⽂件连接起来。

这样就可以运⾏简单的命令⾏命令CL 来创建这⼀应⽤程序,如果没有pragma指令,则MessageBox() API函数就成为未定义的了。

这⼀指令是Visual Studio C++ 编译器特有的。

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

操作系统实习报告样本1 操作系统实习报告内容(1) 基本信息:完成人姓名、学号、报告日期(2) 实习内容(3) 实习目的(4) 实习题目(5) 设计思路和流程图(6) 主要数据结构及其说明(7) 源程序并附上注释(8) 程序运行时的初值和运行结果(9) 实习体会:实习中遇到的问题及解决过程、实习中产生的错误及原因分析、实习的体会及收获、对搞好今后实习提出建设性建议等。

实习报告可以书面或电子文档形式提交。

2操作系统实习报告样本样本1一、实习内容模拟分页式虚拟存储管理中硬件的地址转换和缺页中断,以及选择页面调度算法处理缺页中断。

二、实习目的在计算机系统中,为了提高主存利用率,往往把辅助存储器(如磁盘)作为主存储器的扩充,使多道运行的作业的全部逻辑地址空间总和可以超出主存的绝对地址空间。

用这种办法扩充的主存储器称为虚拟存储器。

通过本实习理解在分页式存储管理中怎样实现虚拟存储器。

三、实习题目本实习有三个小题。

第一题:模拟分页式存储管理中硬件的地址转换和产生缺页中断。

[设计思路、数据结构、流程图]:(1) 分页式虚拟存储系统是把作业信息的副本存放在磁盘上,当作业被选中时,可把作业的开始几页先装入主存且启动执行。

为此,在为作业建立页表时,应说明哪些页已在主存,哪些页尚未装入主存,页表的格式为:页号标志主存块号在磁盘上的位置其中,标志——用来表示对应页是否已经装入主存,标志位=1,则表示该页已经在主存,标志位=0,则表示该页尚未装入主存。

主存块号——用来表示已经装入主存的页所占的块号。

在磁盘上的位置——用来指出作业副本的每一页被存放在磁盘上的位置。

(2) 作业执行时,指令中的逻辑地址指出参加运算的操作数存放的地址,该地址被解释为页号和单元号,硬件的地址转换机构按页号查页表,若该页对应标志为“1”,则表示该页已在主存,这时根据关系式:绝对地址=块号´块长+单元号计算出欲访问的主存单元地址。

如果块长为2的幂次,则可把块号作为高地址部分,把单元号作为低地址部分,两者拼接而成绝对地址。

按计算出的绝对地址可以取到操作数,完成一条指令的执行。

若访问的页对应标志为“0”,则表示该页不在主存,这时硬件发“缺页中断”信号,由操作系统按该页在磁盘上的位置,把该页信息从磁盘读出装入主存后再重新执行这条指令。

(3) 设计一个“地址转换”程序来模拟硬件的地址转换工作。

当访问的页在主存时,则形成绝对地址,但不去模拟指令的执行,而用输出转换后的地址来代替一条指令的执行。

当访问的页不在主存时,则输出“*该页页号”,表示产生了一次缺页中断。

该模拟程序的算法如图1。

(4) 假定主存的每块长度为128个字节;现有一个共七页的作业,其中第0页至第3页已经装入主存,其余三页尚未装入主存;该作业的页表为:页号标志主存块号在磁盘上的位置01501111801221901331102140 02250 02360 121图1 地址转换模拟算法如果作业依次执行的指令序列为:操作页号单元号操作页号单元号+0070移位4053+1050+5023´2015存1037存3021取2078取0056+4001-6040存6084 运行设计的地址转换程序,显示或打印运行结果。

因仅模拟地址转换,并不模拟指令的执行,故可不考虑上述指令序列中的操作。

第二题:用先进先出(FIFO)页面调度算法处理缺页中断。

[设计思路、数据结构、流程图]:(1) 在分页式虚拟存储系统中,当硬件发出“缺页中断”后,引出操作系统来处理这个中断事件。

如果主存中已经没有空闲块,则可用FIFO页面调度算法把该作业中最先进入主存的一页调出,存放到磁盘上。

然后再把当前要访问的页装入该块。

调出和装入后都要修改页表中对应页的标志。

(2) FIFO页面调度算法总是淘汰该作业中最先进入主存的那一页,因此可以用一个数组来表示该作业已在主存的页面。

假定作业被选中时,把开始的m个页面装入主存,则数组的元素可定为m个。

例如:P[0],P[1]…,P[m-1]其中每一个P[i] (I=0, 1, …, m-1) 表示一个在主存中的页面号。

它们的初值为:P[0]:=0, P[1]: =1, …, P[m-1]: =m-1用一指针K指示当要装入新页时,应淘汰的页在数组中的位置,K的初值为“0”。

当产生缺页中断后,操作系统选择P[k]所指出的页面调出,然后执行:P[k]: =要装入页的页号k: = (k+1) mod m再由装入程序把要访问的一页信息装入到主存中。

重新启动刚才那条指令执行。

(3) 编制一个FIFO页面调度程序,为了提高系统效率,如果应淘汰的页在执行中没有修改过,则可不必把该页调出(因在磁盘上已有副本)而直接装入一个新页将其覆盖。

因此在页表中增加是否修改过的标志,为“1”表示修改过,为“0”表示未修改过,格式为:页号标志主存块号修改标志在磁盘上的位置由于是模拟调度算法,所以,不实际地启动调出一页和装入一页的程序,而用输出调出的页号和装入的页号来代替一次调出和装入的过程。

把第一题中程序稍作改动,与本题结合起来,FIFO页面调度模拟算法如图2。

图2 FIFO页面调度模拟算法 (4) 如果一个作业的副本已在磁盘上,在磁盘上的存放地址以及已装入主存的页和作业依次执行的指令序列都同第一题中(4)所示。

于是增加了“修改标志”后的初始页表为:页号标志主存块号修改标志在磁盘上的位置015001111800122190013311002140 002250 002360 0121 按依次执行的指令序列,运行你所设计的程序,显示或打印每次调出和装入的页号,以及执行了最后一条指令后的数组P的值。

(5) 为了检查程序的正确性,可再任意确定一组指令序列,运行设计的程序,核对执行的结果。

第三题:用最近最少用(LRU)页面调度算法处理缺页中断。

[设计思路、数据结构、流程图]:(1) 在分页式虚拟存储系统中,当硬件发出“缺页中断”后,引出操作系统来处理这个中断事件。

如果主存中已经没有空闲块,则可用LRU页面调度算法把该作业中距现在最久没有被访问过的一页调出,存放到磁盘上。

然后再把当前要访问的页装入该块。

调出和装入后都要修改页表中对应页的标志。

(2) LRU页面调度算法总是淘汰该作业中距现在最久没被访问过的那页,因此可以用一个数组来表示该作业已在主存的页面。

数组中的第一个元素总是指出当前刚访问的页号,因此最久没被访问过的页总是由最后一个元素指出。

如果主存只有四块空闲块且执行第一题中提示(4)假设的指令序列,采用LRU页面调度算法,那么在主存中的页面变化情况如下: 3 0 6 4 5 1 2 4 62 3 0 6 4 5 1 2 41 2 3 0 6 4 5 1 20 1 2 3 0 6 4 5 1 当产生缺页中断后,操作系统总是淘汰由最后一个元素所指示的页,再把要访问的页装入淘汰页所占的主存块中,页号登记到数组的第一个元素中,重新启动刚才那条指令执行。

(3) 编制一个LRU页面调度程序,为了提高系统效率,如果淘汰的页在执行中没有修改过,则可不必把该页调出。

参看第二题中提示(3)。

模拟调度算法不实际地启动调出一页和装入一页的程序而用输出调出的页号和装入的页号来代替。

把第一题中程序稍作改动,与本题结合起来,LRU页面调度模拟算法如图3。

(4) 按第一题中提示(4)的要求,建立一张初始页表,页表中为每一页增加“修改标志”位(参考第二题中提示(4))。

然后按依次执行的指令序列,运行设计的程序,显示或打印每次调出和装入的页号,以及执行了最后一条指令后数组中的值。

(5) 为了检查程序的正确性,可再任意确定一组指令序列,运行设计的程序,核对执行的结果。

图3 LRU页面调度模拟算法四打印的源程序及附上的注释略五打印的程序运行时初值和运行结果略样本2一、实习内容模拟电梯调度算法,实现对磁盘的驱动调度。

二、实习目的磁盘是一种高速、大容量、旋转型、可直接存取的存储设备。

它作为计算机系统的辅助存储器,担负着繁重的输入输出任务,在多道程序设计系统中,往往同时会有若干个要求访问磁盘的输入输出请求等待处理。

系统可采用一种策略,尽可能按最佳次序执行要求访问磁盘的诸输入输出请求,这就叫驱动调度,使用的算法称驱动调度算法。

驱动调度能降低为若干个输入输出请求服务所需的总时间,从而提高系统效率。

本实习模拟设计一个驱动调度程序,观察驱动调度程序的动态运行过程。

三、实习题目模拟电梯调度算法,对磁盘进行移臂调度和旋转调度。

[设计思路、数据结构、流程图]:(1) 磁盘是可供多个进程共享的存储设备,但一个磁盘每个时刻只能为一个进程服务。

当有进程在访问某个磁盘时,其它想访问该磁盘的进程必须等待,直到磁盘一次工作结束。

当有多个进程提出输入输出请求而处于等待状态时,可用电梯调度算法从若干个等待访问者中选择一个进程,让它访问磁盘。

选择访问者的工作由“驱动调度”进程来完成。

由于磁盘与处理器是可以并行工作的,所以当磁盘在为一个进程服务时,占有处理器的另一进程可以提出使用磁盘的要求,也就是说,系统能动态地接收新的输入输出请求。

为了模拟这种情况,在本实习中设置一个“接收请求”进程。

“驱动调度”进程和“接收请求”进程能否占有处理器运行,取决于磁盘的结束中断信号和处理器调度策略。

在实习中可用随机数来模拟确定这两个进程的运行顺序,以代替中断处理和处理器调度选择进程的过程。

因而,程序的结构可参考图1。

图1 程序结构(2) “接收请求”进程建立一张“请求I/O”表,指出等待访问磁盘的进程要求访问的物理地址,表的格式为:进程名柱面号磁道号物理记录号 MM MM MM MM 假定某个磁盘组共有200个柱面,由外向里顺序编号(0-199),每个柱面上有20个磁道,编号为0-19,每个磁道分成8个物理记录,编号0-7。

进程访问磁盘的物理地址可以用键盘输入的方法模拟得到。

图2是“接收请求”进程的模拟算法。

图2 “接收请求”模拟算法在实际的系统中必须把等待访问磁盘的进程排入等待队列,由于本实习模拟驱动调度,为简单起见,在实习中可免去队列管理部分,故设计程序时可不考虑“进程排入等待队列”的工作。

(3) “驱动调度”进程的功能是查“请求I/O”表,当有等待访问磁盘的进程时,按电梯调度算法从中选择一个等待访问者,按该进程指定的磁盘物理地址启动磁盘为其服务。

对移动臂磁盘来说,驱动调度分移臂调度和旋转调度。

电梯调度算法的调度策略是与移动臂的移动方向和移动臂的当前位置有关的,所以每次启动磁盘时都应登记移臂方向和当前位置。

电梯调度算法是一种简单而实际上用的驱动调度算法,这种调度策略总是优先选择与当前柱面号相同的访问请求,从这些请求中再选择一个能使旋转距离最短的等待访问者。

相关文档
最新文档