计算机操作系统实验指导
- 格式:doc
- 大小:164.50 KB
- 文档页数:27
《计算机操作系统》实验指导书(适合于计算机科学与技术专业)湖南工业大学计算机与通信学院二O一四年十月前言计算机操作系统是计算机科学与技术专业的主要专业基础课程,其实践性、应用性很强。
实践教学环节是必不可少的一个重要环节。
计算机操作系统的实验目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握操作系统的基本原理,加深对操作系统基本方法的理解,加深对课堂知识的理解,为学生综合运用所学知识,在Linux环境下调用一些常用的函数编写功能较简单的程序来实现操作系统的基本方法、并在实践应用方面打下一定基础。
要求学生在实验指导教师的帮助下自行完成各个操作环节,并能实现且达到举一反三的目的,完成一个实验解决一类问题。
要求学生能够全面、深入理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题;对此能够较好地理解和掌握,并且能够进行简单分析和判断;能够熟练使用Linux用户界面;掌握操作系统中进程的概念和控制方法;了解进程的并发,进程之间的通信方式,了解虚拟存储管理的基本思想。
同时培养学生进行分析问题、解决问题的能力;培养学生完成实验分析、实验方法、实验操作与测试、实验过程的观察、理解和归纳能力。
为了收到良好的实验效果,编写了这本实验指导书。
在指导书中,每一个实验均按照该课程实验大纲的要求编写,力求紧扣理论知识点、突出设计方法、明确设计思路,通过多种形式完成实验任务,最终引导学生有目的、有方向地完成实验任务,得出实验结果。
任课教师在实验前对实验任务进行一定的分析和讲解,要求学生按照每一个实验的具体要求提前完成准备工作,如:查找资料、设计程序、完成程序、写出预习报告等,做到有准备地上机。
进行实验时,指导教师应检查学生的预习情况,并对调试过程给予积极指导。
实验完毕后,学生应根据实验数据及结果,完成实验报告,由学习委员统一收齐后交指导教师审阅评定。
实验成绩考核:实验成绩占计算机操作系统课程总评成绩的20%。
指导教师每次实验对学生进行出勤考核,对实验效果作记录,并及时批改实验报告,综合评定每一次的实验成绩,在学期终了以平均成绩作为该生的实验成绩。
操作系统实验指导书实验⼀操作系统⽤户接⼝实验⼀、实验⽬的熟悉操作系统的命令接⼝、图形⽤户接⼝和程序接⼝。
⼆、实验内容:1、使⽤操作系统的命令接⼝。
使⽤Windows常⽤命令:dir 、md、copy、date、help,显⽰这些命令的结果,并解释这些命令的作⽤。
图1-1 命令控制台图1-2 windows常⽤命令图1-3 windows常⽤命令图1-4 windows常⽤命令使⽤图1-5 windows常⽤命令使⽤2、使⽤操作系统的程序接⼝。
VB环境下:编制⼀⼩程序,使其可通过某个系统调⽤来获得os 提供的某种服务,如打开控制⾯板:Shell "rundll32.exe Shell32.dll,Control_RunDLL", 1VC环境下:⽤C语⾔编制⼀个⼩程序,使其可通过Localtime( )系统调⽤来获得OS提供的时间和⽇期。
3、使⽤操作系统的图形⽤户接⼝(略)。
三、思考:OS向⽤户提供的命令接⼝、图形⽤户接⼝和程序接⼝分别适⽤于哪些场合?实验⼆进程创建与撤消⼀、实验⽬的1、加深对进程概念的理解和进程创建与撤消算法;2、进⼀步认识并发执⾏的实质。
⼆、实验内容本实验完成如下三个层次的任务:(1)系统级—以普通⽤户⾝份认识windows的进程管理。
通过windows的“任务管理器”观察进程的状态,进⾏进程的创建、切换和撤销。
(2)语⾔级—以普通程序员⾝份认识⾼级语⾔VC++/Java/VB的进程创建与撤销⼯具。
(3)模拟级—以OS设计师⾝份编程模拟实现进程创建与撤销功能,并在屏幕上观察进程活动的结果。
三、实验步骤1、windows的进程管理当前状态图2-1 windows任务管理器切换前图2-2 windows任务管理器切换后图2-3 windows任务管理器撤销图2-4 windows任务管理器2、VC++进程创建与撤销⼯具Windows所创建的每个进程都从调⽤CreateProcess() API函数开始,该函数的任务是在对象管理器⼦系统内初始化进程对象。
计算机操作系统实验指导linux版王红玲源码
摘要:
一、计算机操作系统实验指导linux 版简介
1.书名及作者
2.出版时间及出版社
二、实验指导内容概述
1.实验教程的目标
2.实验教程的主要内容
3.实验教程的特色
三、实验指导的使用建议
1.适合阅读对象
2.实验环境要求
3.阅读及实践方法
四、实验指导的评价
1.学术评价
2.学生评价
3.社会评价
正文:
计算机操作系统实验指导linux 版是由王红玲编著,于2010 年出版的一本实验教程。
该教程针对Linux 操作系统,旨在帮助读者深入了解操作系统原理,提高实际操作能力。
实验指导内容涵盖了Linux 系统的基本操作、系统配置、服务器搭建、网络管理、编程实践等方面。
全书共分为12 章,包括Linux 系统简介、常用命令、文件系统、系统管理、网络配置、Web 服务器、FTP 服务器、DNS 服务器、Linux 编程等。
每章都配有详细的实验步骤和丰富的实例,读者可以通过实践操作,更好地理解操作系统原理。
本书适合作为计算机相关专业操作系统课程的实验教材,也可供Linux 系统管理员和开发人员参考。
实验环境要求读者具备基本的Linux 操作系统知识,并安装有Linux 操作系统。
阅读时,建议按照章节顺序进行,先理解理论知识,再进行实践操作。
计算机操作系统实验指导linux 版受到了广泛的好评。
学者认为,该书内容丰富、实用性强,对操作系统课程的教学具有很好的辅助作用。
学生评价表示,通过该书的学习,能够快速掌握Linux 操作系统的使用方法和技巧。
操作系统实验指导书一、实验说明1、实验目的实验是操作系统原理课程中不可缺少的重要教学环节,实验目的是使学生理论联系实际,使学生在实践探索中去发现问题、去解决问题,提高了学生获取知识和应用技术的能力,培养了学生分析和解决问题的能力。
《操作系统原理》要求理论与实践相结合,本门实验课程是对《操作系统原理》课堂教学的一个重要补充,与理论学习起着相辅相成的作用,是实施《操作系统原理》教学的一个重要组成部分。
通过本实验课的实践学习,可以增强本专业的学生对系统实现的认识。
对加深理解和掌握操作系统相关原理有重要帮助。
2、实验要求进一步了解和掌握操作系统原理,提高系统设计的能力。
对每一实验题目,应独立完成,并要求:·上机前,学生必须做好充分的实验准备工作,掌握与实验相关的背景知识,用任一种高级语言编写程序。
·上机时,认真调试,并观察、记录程序运行过程中出现的现象和问题。
·上机后,分析实验结果并写出实验报告。
3、实验报告要求每个实验(包括选做的)均应编写实验报告,学生实验后要写出严谨的、实事求是的、文字通顺的、字迹公整的实验报告。
实验报告应包括以下内容:(1)实验题目(2)实验目的(3)实验内容●程序中使用的数据结构及符号说明●流程图●源程序清单并附上注释(4)实验结果及分析●运行结果(必须是上面程序清单所对应输出的结果)●对运行情况所作的分析以及本次调试程序所取得的经验。
如果程序未能通过,应分析其原因。
二、实验内容实验一熟悉使用计算机系统一、实验名称:熟悉使用计算机系统二、实验目的与要求通过对Windows操作系统的使用,熟悉Windows操作系统中的基本概念,如单用户、多任务、进程和文件等,熟悉Windows中命令行方式下常用命令的使用方法;进一步熟悉TC语言与开发环境,为以后的实验打好基础。
三、实验内容1.开机后,熟悉Windows的界面(桌面、任务栏、开始按钮<点击后出现“开始”菜单>、我的电脑图标、回收站、我的文档)。
操作系统实验指导书及代码《操作系统》实验指导书目录实验环境 ................................................. 1 实验报告要求 ............................................. 1 实验一进程控制与处理机调度综合实验 ..................... 2 实验二存储管理与页面置换算法 (7)实验环境本课程实验硬件环境为PⅢ以上的处理器,带有显示器。
操作系统使用windows98以上操作系统,基本编程环境为Turbo C。
实验报告要求实验报告应包含以下内容:(1)实验题目(2)实验目的(3)实验环境(4)算法描述(5)程序源代码(6)出现的问题(7)对问题的解决方案(8)实验结果与结果分析(9)实验思考(学生对本次实验的收获的总结)实验一进程控制与处理机调度综合实验一、实验目的通过模拟进程控制方法及单处理机系统的进程调度,了解进程的结构,进程的创建与撤消,进程的组织及进程的状态及其转换,掌握进程调度策略。
二、实验学时4学时三、实验内容本实验为单机模拟进程调度算法,在程序设计时不需真正地建立线程或者进程。
实验模拟创建若干进程(人为输入或随机数产生),选择一种或几种单处理机的进程调度算法,如FCFS(先来先服务),SPF(短进程优先),RR(时间片轮转法),优先级算法等,模拟进行进程调度。
每进行一次调度,都打印一次运行进程、就绪队列、以及各个进程的PCB,并能在进程完成后及时撤消该进程。
四、算法描述1 进程及进程的运行状态进程是现代计算机中的基本要素,是系统分配资源和调度的基本单位。
进程与程序不同,进程是系统中动态的实体,有它的创建、运行和撤销的过程。
PCB块是系统感知进程存在的唯一实体。
进程的创建必须首先创建进程的PCB块,而进程的运行也伴随着PCB块的变化,进城撤销也要同时撤销它的PCB块。
所以本实验的任务就是通过模拟调度进程的PCB块来调度进程。
操作系统实验指导操作系统是计算机科学中的重要课程之一,通过实验可以让学生更好地理解和掌握操作系统的原理和功能。
本文将为大家介绍一些操作系统实验的指导。
一、实验准备在进行操作系统实验之前,需要先进行一些实验准备工作。
首先,需要安装一个操作系统,一般选择Linux或Windows。
其次,需要安装一些实验所需的软件和工具,例如编译器、调试器等。
此外,还需要准备一些实验材料,如实验手册、实验报告模板等。
二、实验目标每个操作系统实验都应该有明确的实验目标。
实验目标可以根据学生的实际情况和课程要求进行设定。
例如,可以通过实验来掌握进程管理、文件系统、内存管理等操作系统相关知识。
同时,实验目标应该具有可衡量性,可以通过实验结果来评估学生的实验成果。
三、实验内容1.进程管理实验:通过编写一个简单的多进程程序,来了解进程的创建、调度和终止等过程。
2.文件系统实验:通过创建、读写和删除文件,来了解文件系统的组织结构和基本操作。
3.内存管理实验:通过编写一个简单的分页存储管理程序,来了解分页存储管理的原理和实现方法。
4.设备管理实验:通过模拟设备的申请、释放和使用过程,来了解设备管理的原理和调度算法。
四、实验步骤每个操作系统实验都有具体的实验步骤,学生需要按照这些步骤进行实验。
以下是一些常见的实验步骤:1.实验环境准备:包括安装操作系统、配置软件和工具等。
2.实验预备:包括阅读实验手册、了解实验目标和要求等。
3.实验设计:根据实验目标和要求,设计实验方案和实验程序。
4.实验实施:按照实验方案和实验程序,进行实验操作并记录实验数据。
5.实验分析:根据实验数据,进行分析和总结,并得出实验结论。
6.实验报告:根据实验分析和总结,编写实验报告并提交。
五、实验评估实验结果的评估可以根据实验目标和要求来确定。
例如,如果实验目标是了解进程管理,可以通过观察进程的创建和调度情况来评估学生的实验结果。
实验报告的评估可以根据实验报告的内容和结构来确定。
《计算机操作系统实验指导》(Linux版)(附微课视频)实验思考解答第1章操作系统实验体系介绍第1章无实验思考。
第2章实验环境的搭建与使用1. 实验2.1 Linux常用命令的使用(1)在Linux 中,图形界面与终端控制台以及各终端控制台之间在如何切换?使用ALT+F1~ALT+F6进行各终端控制台切换2. 实验2.2 Linux下C程序的编写(1)make 工具的编译原理是什么?make 是一个命令工具,它解释 Makefile 中的指令(规则)。
在 Makefile文件中描述了整个工程所有文件的编译顺序、编译规则。
在执行 make 之前,需要一个命名为Makefile 的特殊文件(本文的后续将使用Makefile 作为这个特殊文件的文件名)来告诉 make 需要做什么(完成什么任务),该怎么做。
(2)如何直接使用gcc 命令完成myapp.c、greeting.h、greeting.c 三个文档的编译?输入以下两条命令:①gcc –c greeting.c //生成greeting.o文件② gcc –o greeting myapp.c greeting.o //把greeting.o和myapp.c一起编译成可执行文件greeting。
第3章进程控制与进程调度1. 实验3.1 进程的创建(1)总结调用fork()函数后的三种返回情况。
fork()系统调用有3种返回情况:返回值>0,表示当前进程是父进程,这个返回值为子进程的进程ID值;等于0,表示当前进程是子进程;小于0,表示进程创建失败,需要报错。
(2)总结fork()和wait()配合使用的情况,并尝试在父进程中取消wait()函数,观察进程的运行情况。
当父进程中同时使用fork()和wait()/waitpid()函数时,父进程会处于阻塞状态等待子进程的运行结束。
如果父进程中没有调用wait()/waitpid()函数,则父进程和其创建的子进程属于并发进程,也就是父进程和子进程几乎是独立运行的。
计算机操作系统实验指导linux版王红玲源码操作系统实验是计算机科学专业学生必修的一门课程,通过实验可以增加学生对操作系统原理的理解和运用能力。
本文以Linux版王红祥操作系统实验指导为例,介绍实验的内容和相关源码。
一、实验内容王红祥操作系统实验主要包括以下几个方面的内容:1.操作系统的引导过程:通过编写汇编代码,实现在x86计算机上加载操作系统,并将CPU从实模式切换到保护模式。
2. 中断处理:实现Timer和UART中断的处理函数,并学习如何编写中断处理程序。
3.多进程管理:实现进程的创建、调度和切换,并学习如何用进程间通信的方式实现进程间的数据交换。
4.内存管理:实现内存的分配和回收,通过设计页表实现虚拟地址转换到物理地址。
5.文件系统:基于FAT12文件系统,实现文件的读取和写入功能,包括创建、删除和修改文件。
二、源码分析以下是王红祥操作系统实验中的一个源码例子,用于实现中断处理:```cvoid irq_handler(int irq)if (irq == TIMER_IRQ)} else if (irq == UART_IRQ)uart_handle(;}/*处理定时器中断的逻辑*/void uart_handle/*处理串口中断的逻辑*/int main/*设置中断处理函数*/set_irq_handler(IRQ0, irq_handler); set_irq_handler(IRQ1, irq_handler); /*启用中断*/enable_irq(IRQ0);enable_irq(IRQ1);/*主循环*/while (1)/*在这里执行其他的操作*/}return 0;```在main函数中,首先通过set_irq_handler函数设置了中断处理函数。
然后,通过enable_irq函数启用了IRQ0和IRQ1中断。
最后,采用死循环结构确保操作系统对中断的及时处理。
以上源码是王红祥操作系统实验中的一部分,通过学习和实践这些源码,可以更好地理解和掌握操作系统的原理和实现。
计算机操作系统实验指导linux版王红玲源码【原创版】目录一、计算机操作系统实验指导的意义和目的二、Linux 系统的概述和特点三、计算机操作系统实验指导 Linux 版的内容四、王红玲源码的介绍和应用五、如何进行计算机操作系统实验六、总结正文一、计算机操作系统实验指导的意义和目的计算机操作系统是计算机系统中最基本的系统软件之一,它管理计算机硬件资源和提供应用程序运行环境。
学习计算机操作系统对于计算机专业的学生来说是非常重要的,而通过实验来学习和理解计算机操作系统则是一种非常有效的方式。
计算机操作系统实验指导的目的是为了帮助学生通过实践来深入理解和掌握计算机操作系统的原理和实现。
二、Linux 系统的概述和特点Linux 是一种免费使用和自由传播的类 UNIX 操作系统,其内核由林纳斯·本纳第克特·托瓦兹于 1991 年首次发布。
Linux 系统具有多用户、多任务、支持多线程和多 CPU 的特点,能运行主要的 Unix 工具软件、应用程序和网络协议。
Linux 系统在服务器领域和开发领域受到广泛欢迎,很多程序员都认为掌握 Linux 是必备的技能。
三、计算机操作系统实验指导 Linux 版的内容计算机操作系统实验指导 Linux 版主要包括以下几个方面:1.Linux 系统的基本操作和配置:包括 Linux 系统的安装、配置和管理,以及 Linux 命令的使用和操作。
2.Linux 系统下的程序设计和开发:包括 Linux 系统下的 C 语言编程、Python 编程等。
3.Linux 系统下的网络配置和应用:包括 Linux 系统下的网络协议、网络配置和网络应用等。
4.Linux 系统下的数据库管理和应用:包括 Linux 系统下的 MySQL、MongoDB 等数据库的管理和应用。
四、王红玲源码的介绍和应用王红玲源码是一套非常实用的 Linux 系统教程,它包括 Linux 系统的基本操作、程序设计和开发、网络配置和应用、数据库管理和应用等方面的内容。
《操作系统》实验指导书德州学院计算机系实验一理解和认识操作系统的三种接口1.目的和要求MS-DOS和Windows是市场上普及率很高的操作系统,本实验的目的是让读者从操作系统理论的观点加深对现代操作操作系统的接口设计的理解。
2.实验内容①熟悉DOS的基本命令,包括md,cd,copy,move,del,deltree,type 等的使用a、当前目录下建立子目录MYTEMP和MYTEMP2,将当前目录设定为MYTEMP;b、在当前目录下创建新文件B.BAT,其内容为:清除屏幕内容,显示当前DOS版本;c、使用type命令显示B.BAT的内容,检查正确后,执行它;d、拷贝B.BAT到路径MYTEMP中;e、删除MYTEMP2中的文件B.BAT,删除目录MYTEMP2;f、使用deltree命令删除MYTEMP②理解WINDOWS下的编程接口原理,了解WINAPI,利用WINAPI实现WINDOWS 下的打印。
a、登录进入Windowsb、在“开始”菜单中单击“程序”-“Microsoft Visual Studio 6.0”-“MicrosoftVisual C++ 6.0”命令,进入Visual C++ 窗口。
c、在File菜单单击New Workspace...命令,创建PrintApp.dsw项目文件。
d、在File菜单单击New C++ Soure file命令,创建新的原文件。
e、输入如实验运行结果中所示的源代码,调试、编译并运行。
f、观察执行结果,理解各个函数的功能。
3.实验环境Windows操作系统和Visual C++6.0专业版或企业版实验二复习用C语言编制程序一、实验内容选择一个计算机系统,熟悉该系统的操作命令,且掌握该计算机系统的使用方法。
二、实验目的配合操作系统课程的学习,模拟实现操作系统的功能,有助于对操作系统的理解。
操作系统功能的模拟实现可以在计算机系统的终端上进行,也可以在一台微型计算机上进行。
第1篇实验名称:计算机基本操作与常用软件应用实验日期:2023年3月15日实验地点:计算机实验室实验目的:1. 掌握计算机的基本操作,包括开关机、文件管理、系统设置等。
2. 熟悉常用软件的使用,如文字处理软件、电子表格软件、演示文稿软件等。
3. 提高计算机应用能力,为后续课程学习打下基础。
实验内容:一、计算机基本操作1. 开关机操作(1)打开计算机,等待系统启动完成。
(2)使用鼠标点击屏幕左下角的“开始”按钮,选择“关机”选项。
(3)系统提示是否保存更改,根据实际情况选择保存或取消保存。
(4)点击“确定”按钮,等待计算机完全关闭。
2. 文件管理(1)打开文件资源管理器,了解文件结构。
(2)创建文件夹:点击“文件”菜单,选择“新建”->“文件夹”,输入文件夹名称,按“确定”按钮。
(3)重命名文件或文件夹:选中文件或文件夹,右击鼠标,选择“重命名”,输入新名称,按“Enter”键。
(4)删除文件或文件夹:选中文件或文件夹,右击鼠标,选择“删除”,在弹出的对话框中选择“是”。
3. 系统设置(1)打开“控制面板”,了解系统设置。
(2)调整屏幕分辨率:在“控制面板”中找到“显示”选项,调整分辨率。
(3)设置网络连接:在“控制面板”中找到“网络和共享中心”,设置网络连接。
二、常用软件应用1. 文字处理软件(Microsoft Word)(1)创建新文档:点击“开始”按钮,选择“所有程序”->“MicrosoftOffice”->“Microsoft Word”,打开Word软件。
(2)输入文字:在文档中输入文字,可以使用“格式”工具栏进行文字格式设置。
(3)保存文档:点击“文件”菜单,选择“保存”或“另存为”,设置保存路径和文件名,点击“保存”按钮。
2. 电子表格软件(Microsoft Excel)(1)创建新工作簿:点击“开始”按钮,选择“所有程序”->“Microsoft Office”->“Microsoft Excel”,打开Excel软件。
操作系统实验指导书专业:计算机科学与技术;软件工程课程名称:操作系统课程类别:专业必修课计算机与通信工程学院2009目录第1篇Linux操作系统使用 (1)实验1Linux系统的安装及基本操作 (1)实验2Linux 的常用命令与基本管理 (38)第2篇操作系统算法模拟 (53)实验1 银行家算法 (53)实验2 进程调度 (55)实验3 动态分区分配 (56)实验4 页式存储管理 (57)实验5 虚拟存储管理器的页面调度 (59)实验6 文件管理 (62)实验7 磁盘存储空间的分配与回收 (64)实验8 磁盘调度 (66)附录 (67)实验1报告写法 (67)实验2报告的写法 (67)算法模拟部分 (68)第1篇Linux操作系统使用实验1Linux系统的安装及基本操作一、实验目的1.掌握Red Hat Enterprise Linux 5的安装方法。
2.了解Linux操作系统的启动与登录方法。
3.掌握Red Hat Linux图形用户界面下的基本操作。
二、实验工具与设备1.实验工具:Red Hat Enterprise Linux 5光盘或镜像文件。
2.实验设备:计算机(带CD-ROM)一台。
三、实验预备知识虚拟机简介虚拟机,顾名思义就是虚拟出来的电脑,这个虚拟出来的电脑和真实的电脑几乎完全一样,所不同的是他的硬盘是在一个文件中虚拟出来的,所以你可以随意修改虚拟机的设置,而不用担心对自己的电脑造成损失。
虚拟机中有自己的CPU、主板、内存、BIOS、显卡、硬盘、光驱、软驱、网卡、声卡、串口、并口和US B等设备。
Vmware介绍Vmware是一个“虚拟PC”软件。
它使你可以在一台机器上同时运行二个或更多Windows、DOS、LINUX系统。
与“多启动”系统相比,VMWare采用了完全不同的概念。
多启动系统在一个时刻只能运行一个系统,在系统切换时需要重新启动机器。
VMWare是真正“同时”运行,多个操作系统在主系统的平台上,就象标准Wi ndows应用程序那样切换。
计算机操作系统实验指导linuxLinux 操作系统实验指导一、快速安装Linux系统1. 搭建实验环境:下载Linux系统的安装CD或者U盘,由于安装CD可能比较老旧,建议使用U盘来加载Linux系统;2. Bios 及设置:根据启动项的设置,调整U盘或者CD-ROM的读取顺序;3. 分割机制:根据自身的实验需求,给每一块磁盘分配大小;4. 安装系统:根据linux系统的提示安装相应的组件,设置root分区,系统更新;二、Linux系统外观设置1. 登录系统:输入用户名和密码,登录系统,添加用户及其权限管理;2. 更改外观:安装特定的主题,进行界面的更改,开机启动动画,桌面背景设置;3. 调整桌面图标:添加快捷方式,右键菜单管理,图标的拖拽安排等;4. 桌面快捷键:设置快捷键,方便操作,减少重复点击。
三、Linux系统安全设置1. 系统安全:安装安全软件,设置防火墙,锁定系统认证;2. 用户安全:设置不同用户权限,登陆账号管理,安装安全软件;3. 应用安全:安装反病毒软件,进行网页浏览拦截,异常端口禁止;4. 系统备份:制定机器备份计划,在恰当的时间进行备份操作。
四、Linux系统维护1. 系统维护:检查内存资源,检查OS系统补丁,维护系统文件;2. 进程管理:搜索指定进程,加进行结束操作,网络监控,作业管理;3. 系统日志:解析系统日志,及时发现系统异常,安装定期重启系统;4. 资源管理:查看磁盘使用情况,清理无用磁盘空间,升级硬件驱动,调整硬件参数。
五、Linux环境编程1. 配置编译环境:管理编程工具,安装gcc编译环境,程序与调试;2. 写入程序语言:使用C或者C++等语言,编写程序,将程序源文件保存;3. 编译源程序:使用gcc编译程序,在程序的源码中添加头文件,编译检查程序;4. 运行程序:测试程序,调试程序,看看程序的运行效果,分析程序运行的错误。
六、Linux系统优化1. 优化硬件设备:升级GB、CPU、内存,新增硬盘等;2. 添加新软件:查找新的功能模块,优化系统性能;3. 系统定期检查:软硬件保护,程序性能优化,重新启动程序,更新软硬件驱动;4. 调整显示器的分辨率:根据分辨率的不同,调整显示器的屏幕大小,细化界面效果和位置;5. 系统内存设置:调整系统内存性能,调整内存大小,加快系统加载速度。
操作系统实验指导适用课程:操作系统适用专业:计算机科学与技术软件工程目录实验环境的使用 (3)操作系统的启动 (11)进程的创建 (16)进程的同步 (22)时间片轮转调度 (29)分页存储器管理 (33)设备驱动程序 (40)FAT12文件系统 (46)实验环境的使用实验性质:验证建议学时:2学时一、实验目的●熟悉操作系统集成实验环境OS Lab的基本使用方法。
●练习编译、调试EOS操作系统内核以及EOS应用程序。
二、预备知识阅读《EOS实验指南》第一章,对EOS操作系统和集成实验环境有一个初步的了解。
三、实验内容3.1 启动OS Lab1.在安装有OS Lab的主机上,可以使用两种不同的方法来启动OS Lab:●在桌面上双击“Tevation OS Lab”图标。
●点击“开始”菜单,在“程序”中的“Tevation OS Lab”中选择“TevationOS Lab”。
2.OS Lab每次启动后都会首先弹出一个用于注册用户信息的对话框(可以选择对话框标题栏上的“帮助”按钮获得关于此对话框的帮助信息)。
在此对话框中填入学号和姓名后,点击“确定”按钮完成本次注册。
3.观察OS Lab主窗口的布局。
OS Lab主要由下面的若干元素组成:菜单栏、工具栏以及停靠在左侧和底部的各种工具窗口,余下的区域用来放置编辑器窗口。
3.2 学习OS Lab的基本使用方法通过练习使用OS Lab编写一个Windows控制台应用程序,熟悉OS Lab的基本使用方法(包括新建项目、生成项目、调试项目等)。
3.2.1 新建Windows控制台应用程序项目新建一个Windows控制台应用程序项目的步骤如下:1.在“文件”菜单中选择“新建”,然后单击“项目”。
2.在“新建项目”对话框中,选择项目模板“控制台应用程序(c)”。
3.在“名称”中输入新项目使用的文件夹名称“oslab”。
4.在“位置”中输入新项目保存在磁盘上的位置“C:\Test”。
计算机操作系统实验指导linux版王红玲源码(原创实用版)目录一、计算机操作系统实验指导概述1.1 计算机操作系统实验指导的目的和意义1.2 计算机操作系统实验指导的内容和特点1.3 计算机操作系统实验指导的适用对象和范围二、Linux 操作系统简介2.1 Linux 的历史和发展2.2 Linux 的特点和优势2.3 Linux 的应用领域三、计算机操作系统实验指导的具体内容3.1 实验篇3.1.1 实验目的和要求3.1.2 实验环境和工具3.1.3 实验内容和步骤3.2 课程设计篇3.2.1 课程设计目的和要求3.2.2 课程设计环境和工具3.2.3 课程设计题目和指导3.3 习题篇3.3.1 习题的目的和作用3.3.2 习题的类型和难度3.3.3 习题的答案和解析四、计算机操作系统实验指导的使用方法和建议4.1 实验方法和技巧4.2 学习方法和策略4.3 教学方法和建议五、计算机操作系统实验指导的评价和反馈5.1 实验指导的评价标准和方法5.2 实验指导的反馈和改进正文一、计算机操作系统实验指导概述计算机操作系统实验指导是为了帮助学生更好地理解和掌握计算机操作系统的原理和实现,提高学生的实际操作能力和解决问题的能力而编写的。
它对于学生学习计算机操作系统课程具有重要的意义和作用。
计算机操作系统实验指导的内容主要包括实验篇、课程设计篇和习题篇。
实验篇主要是通过实验让学生了解和熟悉计算机操作系统的基本原理和操作;课程设计篇则是通过课程设计让学生深入理解和掌握计算机操作系统的实现原理和方法;习题篇则是通过大量的习题训练学生的计算机操作系统知识。
计算机操作系统实验指导适用于计算机相关专业的学生,以及对计算机操作系统有兴趣和需求的人员。
二、Linux 操作系统简介Linux 是一款免费使用和自由传播的类 UNIX 操作系统,其内核由林纳斯·本纳第克特·托瓦兹于 1991 年首次发布。
计算机操作系统实验指导linux版王红玲源码计算机操作系统实验指导(Linux版)导言:计算机操作系统是计算机系统中最重要的软件之一,负责管理计算机系统的硬件和软件资源,并为用户提供良好的使用环境。
为了帮助学生更好地理解操作系统的原理和实现,我们开设计算机操作系统实验课程,并提供一份针对Linux操作系统的实验指导。
本实验指导旨在帮助学生通过实际编程来探索和理解操作系统的原理和实现方式。
通过完成本实验,学生将能够熟悉Linux操作系统的基本功能和原理,并学会使用Linux的命令行界面和Shell编程。
同时,本实验还将引导学生通过源代码的阅读和分析,深入理解操作系统内部的工作原理。
实验一:Linux环境搭建在开始实验之前,我们首先需要搭建一个适合的Linux开发环境。
学生可以选择在个人电脑上安装Linux发行版,如Ubuntu或Fedora,也可以使用虚拟机软件,如VirtualBox或VMware,在Windows或Mac OS上安装Linux虚拟机。
实验二:Linux基本操作和Shell编程在本实验中,学生将通过完成一系列实际任务来熟悉Linux的基本操作和Shell编程。
任务包括使用命令行界面进行文件和目录操作、执行Shell脚本、配置系统环境等。
学生需要按照指导完成每个任务,并理解每个任务的目的和原理。
实验三:Linux系统调用和进程管理在本实验中,学生将学习和实现Linux系统调用和进程管理的功能。
学生需要阅读和分析Linux内核源代码中与系统调用和进程管理相关的部分,并完成一系列与之相关的实验任务。
任务包括编写和调试系统调用、创建和管理进程、实现进程间通信等。
实验四:Linux内存管理和文件系统在本实验中,学生将学习和实现Linux内存管理和文件系统的功能。
学生需要阅读和分析Linux内核源代码中与内存管理和文件系统相关的部分,并完成一系列与之相关的实验任务。
任务包括实现内存分配算法、设计和实现文件系统、调试和优化内存和文件系统的性能等。
《操作系统》课程实验指导书信电工程学院2011年9月目录前言 (1)实验要求 (2)实验准备 (3)实验一处理机管理 (4)实验二存储管理 (7)实验三设备管理 (10)实验四文件管理 (14)前言“操作系统”是计算机及相关专业的必修课程,在学习计算机操作系统理论的同时,通过实验可以加强对操作系统基本原理的理解。
让学生通过上机实验验证计算机操作系统的难点,增加学生对计算机操作系统的领悟和掌握。
使学生对计算机操作系统的工作原理和工作过程有深刻的体会和理解,同时又锻炼了程序编制能力和学生创造能力。
本课程共设8个学时,实验主要由进程管理、存储管理、设备管理、文件管理等4个主要几个部分所组成。
其中验证类实验占25%、设计类实验占75%,每个实验2学时。
考虑由于学生C语言基础较并且不平衡,本课程实验安排了实验准备(由学生课下完成),主要了解掌握TurboC2.0编程环境、掌握C语言编程的基本编制方法和技巧,为后继的实验做准备。
这些实验能很好地解决配合操作系统课程教学来指导学生进行实践的问题。
实验要求1.学生按照实验要求,上机前写好上机实验预习报告,内容包括:实验的目的、内容、实验步骤(程序)。
2.上机实验时按实验要求完成每一个实验的内容。
3.课后认真书写实验报告。
实验报告采用统一的实验报告纸,实验封面包括:课程名称、实验名称、实验序号、班级、姓名、学号、实验时间。
实验报告书写规范,应包括:实验目的和要求、实验内容、实验步骤、实验记录(程序)。
4.遵守机房纪律,服从辅导员教师指挥,爱护实验设备。
5.实验课程不迟到。
如有事不能出席,所缺实验一般不补。
实验准备一.实验目的熟悉TurboC2.0基本编程环境掌握C语言的基本编程方法二.实验内容与要求(一)TurboC2.0的基本操作1、TurboC2.0的基本操作2、运行一个C语言程序的一般过程3、编辑并保存存一个C语言程序4、编译、链接源程序文件5、运行与查看程序结果(二)C语言程序的基本编程方法1、数据类型、运算符、表达式2、数据的输入、输出3、C语言程序的基本控制结构4、数组5、函数与程序结构6、指针7、结构与联合8、文件操作(可通过网络查找TurboC2.0用户说明书,并在其指导进行操作,并要求人手一本C语言程序设计教材并上机练习)实验一处理机管理一、掌握进程及进程调度的概念、三种基本状态及转换二、实验内容1、复习进程的概念、进程调度的含义、进程的三种基本状态及转换2、编制一个模拟进程调度的程序三、参考程序#include"stdio.h"#define running 1/*用running表示进程处于运行状态*/#define aready 2/*用aready表示进程处于就绪状态*/#define blocking 3/*用blocking表示进程处于等待状态*/#define sometimes 5/*用sometime表示时间片大小*/#define n 10/*假定系统允许进程个数为10*/struct{int name;/*进程标识符*/int status;/*进程状态*/int ax,bx,cx,dx;/*进程现场信息,通用寄存器内容*/int pc;/*进程现场信息,程序计数器内容*/int psw;/*进程现场信息,程序状态寄存器内容*/int next;/*下一个进程控制块的位置*/}pcbarea[n];/*定义模拟进程控制块区域的数组*/int PSW,AX,BX,CX,DX,PC,TIME;/*模拟寄存器*/int run;/*定义指向正在运行进程的进程控制块的指针*/struct{int head;int tail;}ready;/*定义指向正在运行进程的进程控制块的指针*/int block;/*定义指向等待队列的指针*/int pfree;/*定义指向空闲进程控制块队列的指针*/sheduling()/*进程调度函数*/{int i;if(ready.head==-1)/*空闲进程控制块队列的指针*/{printf("无就绪进程\n");return 0;}i=ready.head;/*就绪队列头指针赋给i*/ready.head=pcbarea[ready.head].next;/*就绪队列头指针后移*/if(ready.head==-1) ready.tail=-1;/*就绪队列为空,修正尾指针 ready.tail*/pcbarea[i].status=running;/**/TIME=sometimes;/*设置相对时钟寄存器*//*恢复该进程现场信息*/AX=pcbarea[run].ax;BX=pcbarea[run].bx;CX=pcbarea[run].cx;DX=pcbarea[run].dx;PC=pcbarea[run].pc;PSW=pcbarea[run].psw;/*修改指向运行进程的指针*/run=i;return 0;}/*进程调度函数结束*/create(int x)/*创建进程*/{int i;if(pfree==-1)/*空闲进程控制块队列为空*/{printf("无空闲进程控制块,进程创建失败\n");return 0;}i=pfree;/*取空闲进程控制块队列的第一个*/pfree=pcbarea[pfree].next;/*pfree后移*//*填写该进程控制内容:*/pcbarea[i].name=x;pcbarea[i].status=aready;pcbarea[i].ax=x;pcbarea[i].bx=x;pcbarea[i].cx=x;pcbarea[i].dx=x;pcbarea[i].pc=x;pcbarea[i].psw=x;if(ready.head!=-1){/*就绪队列不空时,挂入就绪队列方式*/pcbarea[ready.tail].next=i;ready.tail=i;pcbarea[ready.tail].next=-1;}else{/*就绪队列为空时,挂入就绪队列方式*/ready.head=i;ready.tail=i;pcbarea[ready.tail].next=-1;}return 0;}/*进程创建函数结束*/main(){/*系统初始化*/int num,j;run=ready.head=ready.tail=block=-1;pfree=0;for(j=0;j<n-1;j++)pcbarea[j].next=j+1;pcbarea[n-1].next=-1;printf("输入进程编号(避免编号的冲突,以负数输入结束,最多可以创建10个进程):\n");scanf("%d",&num);while(num>0){create(num);scanf("%d",&num);}sheduling();if(num!=-1){printf("进程名进程状态寄存器内容:ax bx cx dx pc psw:\n");printf("%4d%10d%3d%3d%3d%3d%3d%3d\n",pcbarea[run].name,pcbarea[run].status,pcbarea[ run].ax,pcbarea[run].bx,pcbarea[run].cx,pcbarea[run].dx,pcbarea[run].pc,pcbarea[run ].psw);}}/*main结束*/实验二存储管理一、实验目的掌握分页存储管理的基本原理及分页存储管理中的地址变换过程二、实验内容1、复习分页想念管理的基本概念、基本原理、及地址变换过程2、编制一个模拟地址变换过程的程序三、参考程序/*页式虚拟存储管理中地址转换和缺页中断的模拟*/#include"stdio.h"#define n 64/*模拟实验中假定的页表长度*/#define length 10struct{int lnumber;/*页号*/int flag;/*表示该页是否在主存,"1"表示在主存,"0"表示不在*/int pnumber;/*该页所在主存块的块号*/int write;/*该页号是否被修改,"1"表示修改过,"0"表示末修改过*/ int dnumber;/*该页存放在磁盘上的位置,即磁盘块号*/}page[n];/*页表定义*/int m;/*m为该作业在主存中的主存块块数*/int page_length;/*页表实际长度*/int p[length];/*存放在主存中页的页号*/int head;/*主存中页号队列*/page_interrupt(lnumber)int lnumber;{int j;printf("发生缺页中断*%d\n",lnumber);/*淘汰页*/j=p[head];p[head]=lnumber;head=(head+1)%m;if(page[j].write==1)printf("将页%d写回磁盘第%d块\n",j,page[j].dnumber);page[j].flag=0;/*第j页存在标志改为"0"*/page[lnumber].pnumber=page[j].pnumber;page[lnumber].flag=1;/*第lnumber页存在标志改为"0"*/page[lnumber].write=0;/*第lnumber页修改标志改为"1"*/printf("淘汰主存块%2d中的页%2d从磁盘第%d块中调入页%2d\n",page[j].pnumber,j,page[lnumber].dnumber,lnumber);}/*缺页中断处理函数结束*/void command(laddress,write)unsigned laddress;int write;{int paddress,ad,pnumber,lnumber;kk:/*取出逻辑地址laddress的页号lnumber(高6位)和页内地址ad*/ lnumber=laddress>>10;ad=laddress&0x3ff;if(lnumber>=page_length){printf("不存在该页\n");}if(page[lnumber].flag==1)/*页在主存*/{pnumber=page[lnumber].pnumber;/*从页表中取得块号*/paddress=pnumber<<10|ad;/*合并块号和块内地址形成物理地址padress*/printf("逻辑地址是:%x 对应的物理地址是%x\n:",laddress,paddress);}if(write==1)/*如果需要写,修改页的修改标志位*/page[lnumber].write=1;else{page_interrupt(lnumber);/*缺页中断*/goto kk;}}/*命令处理函数结束*/void main(){int lnumber,pnumber,write,dnumber;unsigned laddress;int i;/*输入页表信息,页号从0开始,依次编号,创建页表page*/printf("输入页表信息,创建页表(若页号为-1,则结束输入\n");printf("输入页号和辅存地址");scanf("%d%d",&lnumber,&dnumber);i=0;while(lnumber!=-1){page[i].lnumber=lnumber;page[i].flag=0;page[i].write=0;page[i].dnumber=dnumber;i++;printf("输入页号和辅存地址");scanf("%d%d",&lnumber,&dnumber);}page_length=i;printf("输入主存号,主存块数要小于%d,(以-1结束):",i);scanf("%d",&pnumber);m=0;head=0;while(pnumber!=-1){if(m<=i){page[m].pnumber=pnumber;page[m].flag=1;p[m]=m;m++;}scanf("%d",&pnumber);}printf("输入指令性质(1-修改,0-不需要,其他--结束程序运行)和逻辑地址:");scanf("%d%x",&write,&laddress);while(write==0||write==1){command(laddress,write);/**/printf("输入指令性质(1-修改,0-不需要,其他--结束程序运行)和逻辑地址:");scanf("%d%x",&write,&laddress);}}/*函数结束*/实验三设备管理一、实验目的了解设备管理的基本原理、设备的分配与回收过程二、实验内容1、复习设备管理的基本概念、基本原理、常用的数据结构、分配策略及算法2、编制一个独占设备的分配和回收模拟程序三、参考程序/*独占设备的分配和回收模拟*/#include"stdio.h"#include"string.h"#define false 0#define true 1#define n 4#define m 10struct{char type[10];/*设备类名*/int count ;/*拥有设备台数*/int remain;/*现存的可用设备台数*/int address;/*该类设备在设备表中的起始地址*/}equiptype[n];/*设备类表定义,假定系统有N个设备类型*/struct{int number;/*设备绝对号*/int status;/*设备好坏状态*/int remain;/*设备是否已分配*/char jobname[4];/*占有设备的作业名*/int lnumber;/*设备相对号*/}equipment[m];/*设备表定义,假定系统有M个设备*/allocate(char J[],char type[],int mm){int i,t;/*查询该类设备*/i=0;while(i<n&&strcmp(equiptype[i].type,type)!=0)i++;if(i>=n)/*没有找到该类设备*/{printf("无该类设备,设备分配失败");return(false);}if(equiptype[i].remain<1)/*所需设备现存可用台数不足*/{printf("该类设备不足,分配失败");return(false);}t=equiptype[i].address;/*取出该类设备在设备表中的起始地址*/while(!(equipment[t].status==1&&equipment[t].remain==0))t++;/*填写作业名、相对号,状态改为已分配*/equiptype[i].remain--;equipment[t].remain=1;strcpy(equipment[t].jobname,J);equipment[t].lnumber=mm;}/*设备分配函数结束*/reclain(char J[],char type[]){int i,t,j,k,nn;i=0;while(i<n&&strcmp(equiptype[i].type,type)!=0)i++;if(i>=n)/*没有找天该类设备*/{printf("无该类设备,设备回收失败");return(false);}t=equiptype[i].address;/*取出该类设备在设备表中的起始地址*/ j=equiptype[i].count;/*取出该类设备的数量*/k=0;nn=t+j;for(;t<nn;t++)if(strcmp(equipment[t].jobname,J)==0&&equipment[t].remain==1) {equipment[t].remain=0;k++;}equiptype[i].remain=equiptype[i].remain+k;if(k==0)printf("该作业没有使用该类设备\n");}/*设备收回函数结束*/main(){char J[4];int i,mm,a;char type[10];/*设备类表初始化:*/strcpy(equiptype[0].type,"input");/*输入机*/equiptype[0].count=2;equiptype[0].remain=2;equiptype[0].address=0;strcpy(equiptype[1].type,"printer");/*打印机*/equiptype[1].count=3;equiptype[1].remain=3;equiptype[1].address=2;strcpy(equiptype[2].type,"disk");/*磁盘机*/equiptype[2].count=4;equiptype[2].remain=4;equiptype[2].address=5;strcpy(equiptype[3].type,"tape");/*磁带机*/equiptype[3].count=1;equiptype[3].remain=1;equiptype[3].address=9;/*设备表初始化:*/for(i=0;i<10;i++){equipment[i].number=i;equipment[i].status=1; //343434equipment[i].remain=0;}while(1){printf("\n0-退出,1-分配,2-回收,3-显示");printf("\n选择功能项(0-3):");scanf("%d",&a);switch(a){case 0:/*程序结束*/return(false) ;case 1:/*a=1分配设备*/printf("输入作业名、作业所需设备类和设备相对号");scanf("%s%s%d",J,type,&mm);allocate(J,type,mm);/*分配设备*/break;case 2:/*a=2回收设备*/printf("输入作业名和作业归还的设备类");scanf("%s%s",J,type);reclain(J,type);/*回收设备*/break;case 3:/*a=3输出设备类表和设备表的内容*/printf("\n输出设备类表\n");printf(" 设备类型设备总量空闲好设备\n");for(i=0;i<n;i++)printf("%9s%8d%9d\n",equiptype[i].type,equiptype[i].count,equiptype[i].remain); printf("输出设备表:\n");printf("绝对号好/坏已/未分配占用作业名相对号\n");for(i=9;i<m;i++)printf("%3d%8d%9d%12s%8d\n",equipment[i].number,equipment[i].status,equipment[i].remain,equipment[i].jobname,equipment[i].lnumber);}}}。
计算机操作系统实验指导(学生试用讲义)信息科学与技术学院2012年9月操作系统实验说明操作系统课程教学的主要目的,是学习计算机操作系统中资源管理的方法和技术,这些方法和技术,在以后的实际应用开发中加以借鉴,可以提高所开发的应用程序质量。
为了加深对操作系统教材中所讲述的一些主要管理策略和算法的理解、掌握这些算法的思想、并能用已学习的程序设计语言实现之,根据教学大纲的要求,在进行操作系统课程教学过程中必须安排若干实验。
要完成这些实验,需要学生具有一定的C语言或其他编程语言的编程能力。
根据我校学生的实际情况,也为了学生易于完成本课程的实验,我们在本实验指导中,对大多数实验给出了其C语言程序的实现框架,这些程序是可以直接运行的;并且,对于实验中的一些主要算法,我们也给出其相应的程序段(需要学生完善后才能运行的),其目的是对学生完成本讲义要求的实验提供帮助。
很显然,要能较好的达到本课程实验之目的,不能完全依赖本指导,还需要学生的劳动和配合。
也为了学生的拓展学习,对于目前较为流行的UNIX/Linux操作系统的部分实验,作为资料附录在本讲义的最后,以供同学们参考或在条件成熟时选做。
操作系统实验的要求:(1)积极认真地做好实验前的准备,在每个实验前,必须写出需要上机调试的源程序,并通过静态分析方法调试和修改,不能等到上机时再编写程序。
尽管本指导给出了完整的示例,但要完成要求的实验,可能需要从数据结构定义开始。
(2)上机时,要积极调试程序,只有通过调试和改错,才能积累经验、提高能力、正确完成实验。
(3)仔细观察程序运行情况,做好记录,作好分析。
(4)按要求认真书写实验报告。
(5)遵守机房实验用机规定和纪律,服从管理。
实验1 模拟批处理系统的作业调度一、实验目的1.加深对作业概念的理解。
2.深入了解批处理系统如何组织作业、管理作业和调度作业。
二、实验预备知识1.作业的概念。
2.作业的创建。
3.作业的调度。
三、实验内容编写程序完成批处理系统中的作业调度,要求采用先来先服务调度算法、短作业优先调度算法。
实验具体包括:首先确定作业控制块的内容和作业控制块的组织方式;然后完成作业调度;最后编写主函数对所做工作进行测试。
四、参考程序(采用响应比高者优先调度算法)#include “st ring.h”#include “st dio.h”#define n 10 //假定系统中可容纳的作业数量为n typedef struct jcb{char name[4]; //作业名int length; //作业长度、所需内存大小int printer ; //作业执行所需打印机的数量int tape ; //作业执行所需磁带机的数量int runtime; //作业估计执行时间int waittime; //作业在系统中的等待时间int next; //指向下一个作业控制块的指针}JCB; //作业控制块类型定义int head; //作业队列头指针定义int tape,printer ;long memory ;JCB jobtable[n] ; //作业表int jobcount=0; //系统内现有作业的数量schedule( ) //作业调度函数{float xk,k;int p,q,s,t;do{p=head;q=s=-1;k=0;while(p!=-1){if(jobtable[p].length<=memory && jobtable[p].tape<=tape &&jobtable[p].printer<=printer) //系统内可用资源是否满足作业需求{xk=(float)jobtable[p].waittime/jobtable[p].runtime;if(q==0 || xk>k){//满足条件的第一个作业或者作业q的响应比小于作业p的响应比k=xk; //记录响应比q=p;t=s;}//if}//ifs=p;p= jobtable[p].next; //p指针后移}//whileif(q!=-1){if(t==-1)//是作业队列的第一个head= jobtable[head].next;elsejobtable[t].next= jobtable[q].next;//为作业q分配资源:分配主存空间;分配磁带机;分配打印机memory=memory- jobtable[q].length;tape=tape- jobtable[q].tape;printer=printer- jobtable[q].printer;printf(“选中的作业的作业名:%s\n”, jobtable[q].name);}}while(q!=-1)}//作业调度函数结束main(){char name[4];int size, tcount, pcount, wtime, rtime;int p;//系统数据初始化memory=65536;tape=4;printer=2;head=-1;printf(“输入作业相关数据(以作业大小为-1停止输入):\n”);//输入数据,建立作业队列printf(“输入作业名、作业大小、磁带机数、打印机数、等待时间、估计执行时间\n”); scanf(“%s %d %d %d %d”,name,&size,&tcount,&pcount,&wtime,&rtime);while(size !=-1){ //创建JCBif(jobcount<n)p=jobcount;else{printf(“无法再创建作业\n”);break;}jobcount++;strcpy(jobtable[p].name,name);jobtable[p].length=size;jobtable[p].printer=pcount;jobtable[p].tape=tcount;jobtable[p].runtime=rtime;jobtable[p].waittime=wtime;jobtable[p].next=head; //挂入作业队列的队首head=p;//输入一个作业的数据printf(“输入作业名、作业大小、磁带机数、打印机数、等待时间、估计执行时间\n”);scanf(“%s %d %d %d %d”,name,&size,&tcount,&pcount,&wtime,&rtime);}//whileschedule(); //进行作业调度}//main()结束实验2 模拟进程管理一、实验目的1.加深对进程概念的理解,明确进程和程序的区别。
2.深入了解系统如何组织进程、创建进程。
3.进一步认识如何实现处理器调度。
二、实验预备知识1.进程的概念。
2.进程的组织方式。
3.进程的创建。
4.进程的调度。
三、实验内容编写程序完成单处理机系统中的进程调度,要求采用先来先服务算法、最短CPU运行期优先调度算法、优先级调度算法、多级反馈队列轮转算法。
实验具体包括:首先确定进程控制块的内容和进程控制块的组织方式;然后完成进程创建原语和进程调度原语;最后编写主函数对所做工作进行测试。
四、参考程序#include “stdio.h”#define running 1 // 用running表示进程处于运行态#define aready 2 // 用aready表示进程处于就绪态#define blocking 3 // 用blocking表示进程处于阻塞态#define sometime 5 // 用sometime表示时间片大小#define n 10 //假定系统允许进程个数为nstruct{int name; //进程标识符int status; //进程状态int ax,bx,cx,dx ; //进程现场信息,通用寄存器内容int pc ; //进程现场信息,程序计数器内容int psw; //进程现场信息,程序状态字内容int next; //下一个进程控制块的位置}pcbarea[n]; //模拟进程控制块区域的数组int PSW, AX,BX,CX,DX , PC ,TIME ; //模拟寄存器int run; //定义指向正在运行进程的进程控制块的指针Struct{int head;int tail;}ready; //定义就绪队列的头指针head和尾指针tailint pfree; //定义指向空闲进程控制块队列的指针scheduling( ) //进程调度函数{int i;if (ready.head==-1) //空闲进程控制块队列为空,退出{printf(“无就绪进程\n”);return;}i=ready.head; //就绪队列头指针赋给iready.head=pcbarea[ready.head].next; //就绪队列头指针后移if(ready.head==-1) ready.tail=-1; //就绪队列为空,修正尾指针ready.tail pcbarea[i].status=running; //修改进程控制块状态TIME=sometime; //设置相对时钟寄存器//恢复该进程现场信息AX=pcbarea[run].ax;BX=pcbarea[run].bx;CX=pcbarea[run].cx;DX=pcbarea[run].dx;PC=pcbarea[run].pc;PSW=pcbarea[run].psw;run=i;}//进程调度函数结束create(int x) //进程创建函数{int i;if(pfree==-1) //空闲进程控制块队列为空{printf(“无空闲进程控制块,进程创建失败\n”);return;}i=pfree; //取空闲进程控制块队列的第一个pfree=pcbarea[pfree].next; // pfree后移//填写该进程控制块的内容pcbarea[i].name=x;pcbarea[i].status=aready;pcbarea[i].ax=x;pcbarea[i].bx=x;pcbarea[i].cx=x;pcbarea[i].dx=x;pcbarea[i].pc=x;pcbarea[i].psw=x;if (ready.head!=-1) //就绪队列不为空时,挂入就绪队列的方式{pcbarea[ready.tail].next=i;ready.tail=i;pcbarea[ready.tail].next=-1;}else //就绪队列不为空时,挂入就绪队列的方式{ready.head=i;ready.tail=i;pcbarea[ready.tail].next=-1;}}//进程创建函数结束main(){ //系统初始化int num,i,j;run=ready.head=ready.tail =-1;pfree=0;for(j=0;j<n-1;j++)pcbarea[j].next=j+1;pcbarea[n-1].next=-1;printf(“输入进程编号(避免编号冲突,以负数输入结束,最多可以创建10个进程):\n”); scanf(“%d”,&num);while(num>=0){create(num) ;scanf(“%d”,&num) ;}scheduling(); //进程调度if(run!=-1){printf(“进程标识符进程状态寄存器内容:ax bx cx dx pc psw:\n”);printf(“%8d%10d%3d%3d%3d%3d%3d%3d\n”, pcbarea[run].name, pcbarea[run].status, pcbarea[run].ax, pcbarea[run].bx, pcbarea[run].cx, pcbarea[run].dx, pcbarea[run].pc, pcbarea[run].psw);}}//main()结束实验3 模拟内存管理一、实验目的深入了解可变分区存储管理方式主存分配回收的实现。