课程名称计算机操作系统实验
操作系统实验报告实验二银行家算法
江南大学理学院实验报告课程名称:计算机操作系统实验名称:银行家算法实验日期:2013.11.29 班级:信计1103 姓名:陈鹭学号:1301110301实验报告要求:1.实验目的 2.实验内容与要求 3.流程图与模块调用 4.实验分析5.运行情况6.实验体会1.实验目的死锁会引起计算机工作僵死,因此操作系统中必须防止。
本实验的目的在于让学生独立的使用高级语言编写和调试一个系统动态分配资源的简单模拟程序,了解死锁产生的条件和原因,并采用银行家算法有效地防止死锁的发生,以加深对课堂上所讲授的知识的理解。
2.实验内容与要求内容:银行家算法流程安全算法流程要求:设计有n个进程共享m个系统资源的系统,进程可动态的申请和释放资源,系统按各进程的申请动态的分配资源。
系统能显示各个进程申请和释放资源,以及系统动态分配资源的过程,便于用户观察和分析;3.流程图与模块调用数据结构1.可利用资源向量Available ,它是一个含有m个元素的数组,其中的每一个元素代表一类可利用的资源的数目,其初始值是系统中所配置的该类全部可用资源数目。
其数值随该类资源的分配和回收而动态地改变。
如果Available(j)=k,标是系统中现有Rj类资源k个。
2.最大需求矩阵Max,这是一个n×m的矩阵,它定义了系统中n个进程中的每一个进程对m类资源的最大需求。
如果Max(i,j)=k,表示进程i需要Rj类资源的最大数目为k。
3.分配矩阵Allocation,这是一个n×m的矩阵,它定义了系统中的每类资源当前一分配到每一个进程的资源数。
如果Allocation(i,j)=k,表示进程i当前已经分到Rj类资源的数目为k。
Allocation 表示进程i的分配向量,有矩阵Allocation的第i行构成。
i4.需求矩阵Need,这是一个n×m的矩阵,用以表示每个进程还需要的各类资源的数目。
如果Need (i,j)=k,表示进程i还需要Rj类资源k个,才能完成其任务。
武汉理工大学-操作系统实验报告-中国好学长系列之小灰灰的爸爸
学 生 实 验 报 告 书实验课程名称 操 作 系 统 开 课 学 院 计算机科学与技术学院 指导老师姓名 刘 军 学 生 姓 名 小灰灰的爸爸 学生专业班级 中国好学长系列2013 — 2014 学年 第 一 学期学生学号实验课成绩实验课程名称:操作系统实验项目名称Linux键盘命令和vi实验成绩实验者专业班级组别同组者实验日期年月日第一部分:实验分析与设计(可加页)一、实验内容描述(问题域描述)掌握Linux系统键盘命令的使用方法。
二、实验设计(包括实验方案设计,实验手段的确定,实验步骤,实验过程等)Vi编辑器是所有计算机系统中最常用的一种工具。
UNIX下的编辑器有ex,sed和vi等,其中,使用最为广泛的是vi。
1.进入vi在系统提示符号输入vi及文件名称后,就进入vi全屏幕编辑画面:例如:$ vi myfile有一点要注意,在进入vi之后,是处于“命令行模式”,要切换到“插入模式”才能够输入文字。
2. 切换至插入模式编辑文件在“命令行模式”下按一下字母“i”就可以进入“插入模式”,这时候就可以开始输入文字了。
3. Insert 的切换处于“插入模式”,就只能一直输入文字,按一下“ESC”键转到”命令行模式”能够删除文字。
4. 退出vi及保存文件在“命令行模式”下,按一下“:”冒号键进入“Last line mode”,例如:: w myfilename: wq (输入”wq”,存盘并退出vi): q! (输入q!,不存盘强制退出vi)三、主要实验工具、仪器设备及耗材安装Linux系统的计算机一台。
第二部分:实验结果分析(可加页)一、调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)在整个过程中,最困难的就是记忆整个Vi命令。
在查阅资料的情况下,这个问题得到了解决。
二、实验结果描述1.进入vi在系统提示符号输入vi及文件名称后,就进入vi全屏幕编辑画面图1 vi主界面2.切换至插入模式编辑文件在“命令行模式”下按一下字母”i”就可以进入”插入模式”。
武汉理工操作系统实验报告材料
理工大学学生实验报告书实验课程名称操作系统开课学院计算机科学与技术学院指导老师军学生姓名帅学生专业班级软件11012013 — 2014 学年第一学期实验课程名称:操作系统3.退出vi三、主要仪器设备及耗材Ubuntu操作体统Vi编辑器第二部分:实验调试与结果分析(可加页)一、调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)1 使用mkdir命令建立一个子目录subdir2 使用cat或more命令查看file1文件的容。
3 将date命令的用法附加到文件file1的后面:4 利用ls -l file1命令列出文件file1的较详细的信息。
5 利用rm fa命令将文件fa删除。
再利用ls -l命令查看工作目录容。
6 运行mv file1 file_a命令,然后用ls命令查看这两个文件是否都还在工作目录中?显然,只有file_a在工作目录中,而file1不在工作目录中二、实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)Free 显示系统中已用空闲存数量Rm:删除文件或目录三、实验小结、建议及体会Linux对比Windows有些不同需要时间去适应。
通过这次实验对Linux操作系统有了进一步的了解。
初步掌握了一些Linux系统常用的命令。
通过这仅一个周时间的学习,我们只是了解了linux的一些最基本知识,我会在后的学习中不断完善和加以扩充实验课程名称:操作系统实验课程名称:操作系统六、实验小结、建议及体会通过这次实验熟悉了shell编程,对Linux下的编程有了进一步的了解。
也对Linux系统终端方式使用的编辑器vi有进一步的认识,如何使用命令来打开文件以及在编辑器vi里面编写容等,。
总之,通过这次实验,对课本上的知识有了进一步的理解以及巩固。
实验课程名称:操作系统实验项目名称Linux系统调用(time)实验成绩实验者帅专业班级软件1101 组别同组者实验日期第一部分:实验分析与设计(可加页)一、实验容描述(问题域描述)学习Linux核的系统调用,理解、掌握Linux系统调用的实现框架、用户界面、参数传递、进入/返回过程。
操作系统实验2-计算机操作系统(第3版)-郁红英-清华大学出版社
操作系统实验
(课程设计)实验报告
学院
专业
班级/学号
学生姓名
成绩
实验地点_
实验日期___ __
指导教师_____ ___ _____
(课程上机)实验报告
1.实验名称、实验目的、实验内容、实验要求由教师确定,实验前由教师事先填好,然后作为实验报告模版供学生使用;
2.实验准备由学生在实验或上机之前填写,教师应该在实验前检查;
3.实验过程由学生记录实验的过程,包括操作过程、遇到哪些问题以及如何解决等;
4.实验总结由学生在实验后填写,总结本次实验的收获、未解决的问题以及体会和建议等;
5.源程序、代码、具体语句等,若表格空间不足时可作为附录另外附页。
主存储器空间分配和回收实验报告
软件学院计算机课程实验报告册课程名称计算机操作系统实验学期2011 年至2012 年第 2 学期学生所在院(系)软件学院年级11级专业班级软件工程1 班学生姓名朱水云学号**********指导教师陈自刚实验最终成绩软件学院实验室制2012 年4月0 5k 10k 14k 26k 32k128k 实验报告( 6 )实验名称:主存储器空间的分配和回收一、实验目的及要求:一个好的计算机系统不仅要有一个足够容量的、存取速度高的、稳定可靠的主存储器,而且要能合理地分配和使用这些存储空间。
当用户提出申请存储器空间时,存储管理必须根据申请者的要求,按一定的策略分析主存空间的使用情况,找出足够的空闲区域分配给申请者。
当作业撤离或主动归还主存资源时,则存储管理要收回作业占用的主存空间或归还部分主存空间。
主存的分配和回收的实现虽与主存储器的管理方式有关的,通过本实验帮助学生理解在不同的存储管理方式下应怎样实现主存空间的分配和回收。
二、实验内容与分析设计:本实验模拟在两种存储管理方式下的主存分配和回收。
第一题:在可变分区管理方式下采用最先适应算法实现主存分配和实现主存回收。
[提示]:可变分区方式是按作业需要的主存空间大小来分割分区的。
当要装入一个作业时,根据作业需要的主存量查看是否有足够的空闲空间,若有,则按需要量分割一个分区分配给该作业;若无,则作业不能装入。
随着作业的装入、撤离,主存空间被分成许多个分区,有的分区被作业占用,而有的分区是空闲的。
例如:操作系统作业1作业3空闲区作业2空闲区为了说明哪些区是空闲的,可以用来装入新作业,必须要有一张空闲区说明表,格式如下:起址长度状态第一栏14 K 12 K 未分配第二栏32 K 96 K 未分配空表目空表目其中,起址——指出一个空闲区的主存起始地址。
长度——指出从起始地址开始的一个连续空闲的长度。
状态——有两种状态,一种是“未分配”状态,指出对应的由起址指出的某个长度的区域是空闲区;另一种是“空表目”状态,表示表中对应的登记项目是空白(无效),可用来登记新的空闲区(例如,作业撤离后,它所占的区域就成了空闲区,应找一个“空表目”栏登记归还区的起址和长度且修改状态)。
计算机操作系统上机实验报告
计算机操作系统(cāo zuò xì tǒnɡ)上机实验报告
云南师范大学信息(xìnxī)学院
实验报告
学号:134100010姓名:姜兴玲班级:计科13A 课程名称:操作系统实验名称:存储管理
实验性质:①综合性实验②设计性实验③验证性实验试验时间:2015年5月5日试验地点:睿智4栋212
本试验所用的设备:计算机一台
实验目的
了解计算机的存储并学会管理。
实验内容及过程:
1.右键单击工具栏,打开任务管理器查看性能来了解CPU
使用和页面文件使用。
2、单击开始设置控制面板系统
单击高级然后选择性能的设置来设置系统、管理系统
3、性能和维护打开控制面板切换到分类视图,选择性能和维护来进行操作。
小结:
通过对控制面板的熟悉我们能更好的了解计算机并且能对存储管理更好的了解和学习!
任课教师评语
教师签字: 年月日
注:每学期至少一次设计性实验。
每学期结束请任课教师按时按量统一(tǒngyī)交到教学秘书处
内容总结
(1)计算机操作系统上机实验报告。
华北电力大学操作系统实验报告
华北电力大学
实验报告
|
|
实验名称操作系统综合实验
课程名称操作系统
|
|
专业班级:网络学生姓名:
学号:成绩:
指导教师:王德文/姜丽梅实验日期:2015年11月4日
2. 当loop线程在控制台1中执行,并且在控制台2中执行suspend命令时,为什么控制台1中的loop线程处于就绪状态而不是运行状态?
答:当在控制台2 中执行suspend命令时,实质上是优先级为24的控制台2线程抢占了处理器,也就是控制台2线程处于运行状态,所以此时loop线程处于就绪状态了。
图 1 调试EOS信号量的工作过程。
华北电力大学实验报告
第页共页。
os实验报告
华北电力大学实验报告||实验名称 EOS操作系统实验课程名称操作系统||专业班级:网络1202 学生姓名:李忠明学号:************ 成绩:指导教师:王德文实验日期:2.2生成项目2.3执行项目在OS Lab中选择“调试”菜单中的“开始执行(不调试)”,可以执行刚刚生成的2. 在“调试”菜单中选择“启动调试”,Windows3. 激活Windows控制台应用程序的窗口,可以看到窗口中没有输出任何内容,调试命令2. 输入调试命令r后按回车,显示当前CPU中各个通用寄存器的值,其中表示IP寄存器的值为0xfff0。
3. 输入调试命令xp /1024b 0x0000,查看开始的1024个字节的物理内存。
在物理内存的值都为0,说明BIOS中断向量表还没有被加载到此处。
查看EOS启动后的进程和线程的信息:1)在控制台中输入命令“pt”后按回车。
2)输出的进程和线程信息如下图所示6. 查看有应用程序运行时进程和线程的信息:1)待 EOS启动完毕,在EOS控制台中输入命令“hello”后按回车。
此时Hello.exe应用程序就开始执行。
2)迅速按Ctrl+F2切换到控制台2,并输入命令“pt”后按回车。
输出的进程和线程信息如下图所示四、实验总结通过本次试验,对操作系统的启动有了一定了解,对后面的实验有了最基本的认识,实验过程中只要对照课本就可以很好地完成,需要细心操作。
实验三进程的创建一、实验目的及要求练习使用EOS API函数CreateProcess创建进程,掌握创建进程的方法,理解程序和进程的区别,调试跟踪CreateProcess函数的执行过程,了解进程的创建过程,理解进程是资源的分配单位。
二、所用仪器、设备OS Lab实验环境三、实验原理四、实验方法与步骤1.启动OS Lab、新建一个EOS Kernel项目,用debug和release模式分别生成项目,新建EOS应用程序项目;2.练习使用控制台命令创建EOS应用程序的进程3.调试CreateProcess函数4.调试PsCreateProcess函数5.练习通过编程的方式创建应用程序的多个进程去在源代码文件NewTwoProc.c提供的源代码基础上进行修改,要求使用hello.exe同时创建5个进程。
《操作系统》实验指导书
操作系统实验指导书专业:计算机科学与技术;软件工程课程名称:操作系统课程类别:专业必修课计算机与通信工程学院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应用程序那样切换。
《操作系统》实验教学大纲
《操作系统》实验教学大纲实验名称:操作系统实验实验课程:计算机科学与技术、软件工程、电子信息工程实验学时:24学时(12次课程实验)实验目的:1.通过操作系统实验,学生将深入了解操作系统的原理和设计。
2.学生将掌握操作系统的基本概念和常用技术。
3.提高学生的实践能力和创新能力,培养学生的团队合作精神。
实验内容:1.实验一:操作系统基本概念-实验介绍:了解操作系统的基本概念和基本功能。
-实验要求:学生通过阅读文献或参考书籍,掌握操作系统的基本概念。
-实验过程:学生通过讨论或小组讨论的方式,给出操作系统的定义和基本功能列表。
2.实验二:进程管理-实验介绍:通过实验来学习进程管理的基本概念和常用算法。
-实验要求:学生通过自己编写程序,实现进程的创建、销毁和调度。
-实验过程:学生根据给定的问题,设计进程模型并实现相应的程序。
3.实验三:内存管理-实验介绍:了解内存管理的基本概念和常用算法,学习虚拟内存技术的原理。
-实验要求:学生通过编写程序,实现内存分配和回收的算法。
-实验过程:学生通过模拟内存分配和回收的过程,理解内存管理的基本原理。
4.实验四:文件系统-实验介绍:了解文件系统的基本概念和常用算法,学习文件管理的基本原理。
-实验要求:学生通过编写程序,实现文件的创建、删除和查找。
-实验过程:学生通过模拟文件的创建、删除和查找的过程,理解文件管理的基本原理。
5.实验五:设备管理-实验介绍:通过实验学习设备管理的基本概念和常用算法,了解设备驱动程序的实现原理。
-实验要求:学生通过编写程序,模拟设备的控制和管理。
-实验过程:学生通过模拟设备的请求、分配和释放的过程,理解设备管理的基本原理。
6.实验六:作业调度-实验介绍:通过实验学习作业调度的基本概念和常用算法。
-实验要求:学生通过编写程序,实现作业的调度。
-实验过程:学生通过输入作业和作业调度算法,模拟作业调度的过程。
实验评定:-实验报告:60%-实验成果:20%-实验操作:20%实验环境:- 操作系统:Linux、Windows实验要求:-学生需认真完成实验任务,编写实验报告。
操作系统实验报告一
实验报告课程名称:操作系统(nachos)Array实验项目名称:进程调度实验时间:2010-09-08班级:姓名:学号:实验目的:用高级语言编写和调试一个有 N个进程并行的进程调度程序,以加深对进程的概念及进程调度算法的理解。
实验环境:PC机、windows XP 操作系统、Visual C++6.0开发工具/Win-TC实验内容及过程:实验内容:设计一个有N个进程并行的进程调度程序。
进程调度算法:采用最高优先数优先的调度算法(即把处理机分配给优先数最高的进程)和先来先服务算法。
具体描述如下:每个进程有一个进程控制块( PCB)表示。
进程控制块可以包含如下信息:进程名、优先数、到达时间、需要运行时间、已用CPU时间、进程状态等等。
分析:进程的优先数及需要的运行时间可以事先人为地指定(也可以由随机数产生)。
进程的到达时间为进程输入的时间。
进程的运行时间以时间片为单位进行计算。
每个进程的状态可以是就绪 W(Wait)、运行R(Run)、或完成F(Finish)三种状态之一。
就绪进程获得 CPU后都只能运行一个时间片。
用已占用CPU时间加1来表示。
如果运行一个时间片后,进程的已占用 CPU时间已达到所需要的运行时间,则撤消该进程,如果运行一个时间片后进程的已占用CPU时间还未达所需要的运行时间,也就是进程还需要继续运行,此时应将进程的优先数减1(即降低一级),然后按照优先数的大小把它插入就绪队列等待CPU。
每进行一次调度程序都打印一次运行进程、就绪队列、以及各个进程的 PCB,以便进行检查。
重复以上过程,直到所要进程都完成为止。
调度算法的参考流程图如下:实验过程:1.在win-tc环境中编写一个有N个进程并行的进程调度程序,包括最高优先数优先的调度算法和先来先服务算法,代码见附录中。
2.在上机环境中编译、调试程序。
3.设计输入数据,得出程序的执行结果。
实验结果及分析:1、选择最高优先数优先的调度算法调度两个进程:输出进程名、进程cpu时间、进程还需时间、进程优先数及进程状态,最高优先数优先的调度算法调度三个进程:2、选择先来先服务算法调度两个进程:输出进程名、进程开始时间及结束时间,先来先服务算法调度三个进程:实验心得:操作系统第一份实验刚开始确实有点没头绪,而且也刚接触一点儿进程调度的,对它只是大概了解些。
操作系统进程调度实验报告
实验报告课程名称计算机操作系统实验名称进程及其管理班级学号姓名成绩指导教师赵安科实验日期2015年5月21日一.实验题目:进程及其管理二.实验内容:设计一个简单的进程调度算法,模拟OS 中的进程调度过程 三.实验要求:① 进程数不少于5个;② 进程调度算法任选;最好选用动态优先数法,每运行一个时间片优先数减3 ③ 用C++(或C )语言编程; ④ 程序运行时显示进程调度过程。
四.实验步骤:① 设计PCB 及其数据结构: 进程标识数:ID进程优先数:PRIORITY (优先数越大,优先级越高) 进程已占用时间片:CPUTIME进程尚需时间片:ALLTIME (一旦运行完毕,ALLTIME 为0) 进程队列指针:NEXT ,用来将PCB 排成队列 进程状态:STATE (一般为就绪,不用) ② 设计进程就绪队列及数据结构;③ 设计进程调度算法,并画出程序流程图; ④ 设计输入数据和输出格式; 结构格式:当前正运行的进程:0 当前就绪队列:2,1,3,4 ⑤ 编程上机,验证结果。
五.实验说明:假设调度前,系统中有5个进程,其初始状态如下: ID 0 1 2 3 4 可否考虑用二维数组去实现PRIORITY 9 38 30 29 0 CPUTIME 0 0 0 0 0 ALLTIME 3 3 6 3 4 STATE readyreadyreadyreadyready① 以时间片为单位调度运行;② 每次总是从ALLTIME 中不为0,且PRIORITY 最大的进程调度运行一个时间片;③上述进程运行后其优先数减3,再修改其CPUTIME和ALLTIME,重复②,③④直到所有进程的ALLTIME均变为0。
六.程序中所用数据结构及说明:程序中定义了一个二维数组pc用于存储5个进程对应的属性,在程序动态执行的过程中随时修改各个进程对应的属性,直到所有进程消耗完时间片为止,同时为了更方便的了解进程执行的过程,添加了一个priority函数,用于动态的显示就绪队列进程的优先数(由大到小排列),以及对应的进程ID号,这样在程序执行的过程中,能清楚下一步该运行的就绪队列中的进程,更方便检查程序执行的过程中进程的调度是否有错误。
南京邮电大学实验报告模版
实验报告( 2014 / 2015 学年第一学期)课程名称计算机操作系统实验名称虚构储存中页面置换算法的模拟实现实验时间2014 年 12 月19 日指导单位南京邮电大学指导教师崔衍学生姓名学院 (系) 物联网院班级学号专业网络工程实验报告实验名称虚构储存中页面置换算法的指导教师崔衍模拟实现实验种类上机实验实验学时4实验时间一、实验目的和要求目的:经过恳求页式储存管理中页面置换算法模拟设计,认识虚构储存技术的技术特色,掌握恳求页式储存管理的页面置换算法要求:(1)设计实现下边算法,并输出下述各样算法的命中率。
①先进先出的算法(FIFO);②近来最少使用算法(LRR) ;③最正确裁减算法(OPT)先裁减最不常用的页地点。
(2)多次频频运转改良后的程序,察看并记录运转结果,并剖析原由。
二、实验环境 (实验设施 )二、实验原理及内容实验三#include <iostream.h>#include<stdlib.h>#include<conio.h>#include<stdio.h>#define Bsize 4typedef struct BLOCK// 申明一种新种类——物理块种类{int pagenum;// 页号int accessed;//接见字段,其值表示多久未被接见}BLOCK;int pc;// 程序计数器,用来记录指令的序号int n;// 缺页计数器,用来记录缺页的次数static int temp[320];// 用来储存320 条随机数BLOCK block[Bsize]; //定义一大小为 4 的物理块数组//*************************************************************void init( );// 程序初始化函数int findExist(int curpage);// 查找物理块中能否有该页面int findSpace( );// 查找能否有安闲物理块int findReplace( );// 查找应予置换的页面void display ( );// 显示void suijishu( );// 产生 320 条随机数 ,显示并储存到 temp[320] void pagestring( );// 显示调用的页面行列void OPT( );//OPT 算法void LRU( );// LRU 算法void FIFO( );//FIFO算法//*************************************************************void init( ){for(int i=0;i<Bsize;i++){block[i].pagenum=-1;block[i].accessed=0;pc=n=0;}}//-------------------------------------------------------------int findExist(int curpage){for(int i=0; i<Bsize; i++){if(block[i].pagenum == curpage )return i;// 检测到内存中有该页面,返回block 中的地点}return -1;}//-------------------------------------------------------------int findSpace( ){for(int i=0; i<Bsize; i++){if(block[i].pagenum == -1)return i;// 找到安闲的block ,返回 block 中的地点}return -1;}//-------------------------------------------------------------int findReplace( ){int pos = 0;for(int i=0; i<Bsize; i++){if(block[i].accessed >block[pos].accessed)pos = i;// 找到应予置换页面,返回BLOCK 中地点}return pos;}//-------------------------------------------------------------void display( ){for(int i=0; i<Bsize; i++){if(block[i].pagenum != -1){ printf(" %02d",block[i].pagenum);}}cout<<endl;}//-------------------------------------------------------------void suijishu( ){int flag=0;cin>>pc;cout<<"****** 依据要求产生的 320 个随机数: *******"<<endl;for(int i=0;i<320;i++){temp[i]=pc;if(flag%2==0) pc=++pc%320;if(flag==1) pc=rand( )% (pc-1);if(flag==3) pc=pc+1+(rand( )%(320-(pc+1)));flag=++flag%4;printf(" %03d",temp[i]);if((i+1)%10==0) cout<<endl;}}//-------------------------------------------------------------void pagestring( ){for(int i=0;i<320;i++){printf(" %02d",temp[i]/10);if((i+1)%10==0) cout<<endl;}}//-------------------------------------------------------------void OPT( ){int exist,space,position ;int curpage;for(int i=0;i<320;i++){if(i%100==0) getch( );pc=temp[i];curpage=pc/10;exist = findExist(curpage);if(exist==-1){space = findSpace ( );if(space != -1){block[space].pagenum = curpage;display( );n=n+1;}else{for(int k=0;k<Bsize;k++){for(int j=i;j<320;j++){if(block[k].pagenum!= temp[j]/10){block[k].accessed = 1000;}// 未来不会用,设置为一个很大数else{block[k].accessed = j;break;}}}position = findReplace( );block[position].pagenum = curpage;display( );n++;}}}cout<<" 缺页次数 :"<<n<<endl;cout<<" 缺页率 :"<<(n/320.0)*100<<"%"<<endl;}//-------------------------------------------------------------void LRU( ){int exist,space,position ;int curpage;for(int i=0;i<320;i++){if(i%100==0) getch( );pc=temp[i];curpage=pc/10;exist = findExist(curpage);if(exist==-1){space = findSpace( );if(space != -1){block[space].pagenum = curpage;display( );n=n+1;}else{position = findReplace( );block[position].pagenum = curpage;display( );n++;}}else block[exist].accessed = -1;// 恢复存在的并刚接见过的BLOCK 中页面accessed为 -1 for(int j=0; j<4; j++)}cout<<" 缺页次数 :"<<n<<endl;cout<<" 缺页率 :"<<(n/320.0)*100<<"%"<<endl;}//-------------------------------------------------------------void FIFO( ){int exist,space,position ;int curpage;for(int i=0;i<320;i++){if(i%100==0) getch( );pc=temp[i];curpage=pc/10;exist = findExist(curpage);if(exist==-1){space = findSpace( );if(space != -1){block[space].pagenum = curpage;display( );n=n+1;}else{position = findReplace( );block[position].pagenum = curpage;display( );n++;block[position].accessed--;}}for(int j=0; j<Bsize; j++)}cout<<" 缺页次数 :"<<n<<endl;cout<<" 缺页率 :"<<(n/320.0)*100<<"%"<<endl;}//*************************************************************void main( ){int select;cout<<" 请输入第一条指令号(0~320) : ";suijishu( );cout<<"***** 对应的调用页面行列*******"<<endl;pagestring( );do{cout<<"****************************************"<<endl;cout<<"------1:OPT2:LRU 3:FIFO4:退出 -----"<<endl;cout<<"****************************************"<<endl;cout<<"请选择一种页面置换算法:";cin>>select;cout<<"****************************************"<<endl;init( );switch(select){case 1:cout<<"最正确置换算法OPT:"<<endl;cout<<"*****************"<<endl;OPT( );break;case 2:cout<<" 近来最久未使用置换算法LRU:"<<endl;cout<<"**************************"<<endl;LRU( );break;case 3:cout<<" 先进先出置换算法FIFO:"<<endl;cout<<"*********************"<<endl;FIFO( );break;default: ;}}while(select!=4); }实验结果:实验四Login 用户登录bool chklogin(char *users, char *pwd){int i;for(i=0; i<8; i++){if( (strcmp(users,usrarray[i].name)==0) && (strcmp(pwd,usrarray[i].pwd)==0)) return true;}return false;}Create创立文件int create(){temp=initfile(" ",0);cin>>temp->filename;cin>>temp->content;if(recent->child==NULL){temp->parent=recent;temp->child=NULL;recent->child=temp;temp->prev=temp->next=NULL;cout<<"文件成立成功 !"<<endl;}else{ttemp=recent->child;while(ttemp->next){ttemp=ttemp->next;if(strcmp(ttemp->filename,temp->filename)==0&&ttemp->isdir==0) {printf(" 对不起 ,文件已存在 !");return 1;}}ttemp->next=temp;temp->parent=NULL;temp->child=NULL;temp->prev=ttemp;temp->next=NULL;cout<<"文件成立成功 !"<<endl;}return 1;}int dir(){int i=0,j=0;temp=new fnode;temp=recent;if(temp!=root){cout<<"\ <DIR> "<<".."<<endl;i++;}if(temp->child==NULL){cout<<"Total: "<<" directors" <<i<<" files"<< j <<endl;return 1;}temp=temp->child;while(temp){if(temp->isdir){cout<<"<DIR>\ "<<temp->filename<<endl;i++;}else{cout<<"<FILE> "<<temp->filename<<endl;j++;}temp=temp->next;}cout<<"Total: "<<" directors" <<i<<"files"<< j <<endl;}Read读取文件int read(){char filename[FILENAME_LENGTH];cin>>filename;if(recent->child==NULL){cout<<"文件不存在 !"<<endl;return 1;}if(strcmp(recent->child->filename,filename)==0) {cout<<recent->child->content<<endl;return 1;}else{temp=recent->child;while(temp->next){if(strcmp(temp->next->filename,filename)==0) {cout<<temp->next->content<<endl;return 1;}}cout<<"文件不存在 !"<<endl;}}Write 写入文件int write(){char filename[FILENAME_LENGTH];cin>>filename;if(recent->child==NULL){cout<<"文件不存在 !"<<endl;return 1;}if(strcmp(recent->child->filename,filename)==0) {recent->child->isopen=1;//设置文件标志为翻开cin>>recent->child->content;recent->child->isopen=0;//设置文件标志为封闭cout<<"文件写入成功 !"<<endl;return 1;}elsetemp=recent->child;while(temp->next){if(strcmp(temp->next->filename,filename)==0){recent->child->isopen=1;//设置文件标志为翻开cin>>temp->next->content;recent->child->isopen=0;//设置文件标志为封闭cout<<"文件写入成功 !"<<endl;return 1;}}cout<<"文件不存在 !"<<endl;}}Del 删除int del(){char filename[FILENAME_LENGTH];cin>>filename;temp=new fnode;if(recent->child){temp=recent->child;while(temp->next && (strcmp(temp->filename,filename)!=0 || temp->isdir!=0)) temp=temp->next;if(strcmp(temp->filename,filename)!=0){cout<<"不存在该文件! "<<endl;return 0;}}else{cout<<"不存在该文件! "<<endl;return 0;}if(temp->parent==NULL){temp->prev->next=temp->next;if(temp->next)temp->next->prev=temp->prev;temp->prev=temp->next=NULL;else{if(temp->next)temp->next->parent=temp->parent;temp->parent->child=temp->next;}delete temp;cout<<"文件已删除 !"<<endl;}成立目录int mkdir(){temp=initfile(" ",1);cin>>temp->filename;if(recent->child==NULL){temp->parent=recent;temp->child=NULL;recent->child=temp;temp->prev=temp->next=NULL;}else{ttemp=recent->child;while(ttemp->next){ttemp=ttemp->next;if(strcmp(ttemp->filename,temp->filename)==0&&ttemp->isdir==1) {printf(" 对不起 ,目录已存在 !");return 1;}}ttemp->next=temp;temp->parent=NULL;temp->child=NULL;temp->prev=ttemp;temp->next=NULL;}return 1;切换目录int dir(){int i=0,j=0;temp=new fnode;temp=recent;if(temp!=root){cout<<"\ <DIR> "<<".."<<endl;i++;}if(temp->child==NULL){cout<<"Total: "<<" directors" <<i<<" files"<< j <<endl; return 1;}temp=temp->child;while(temp){if(temp->isdir){cout<<"<DIR>\ "<<temp->filename<<endl;i++;}else{cout<<"<FILE> "<<temp->filename<<endl;j++;} temp=temp->next;}cout<<"Total: "<<" directors" <<i<<"files"<< j <<endl; }四、实验小结(包含问题和解决方法、心得领会、建议与建议等)经过课程设计 ,加深了对操作系统的认识 ,认识了操作系统中各样资源分派算法的实现 ,特别是对虚构储存 ,页面置换有了深入的认识 ,并可以用高级语言进行模拟演示。
操作系统上机实验报告
5.在主菜单里选择系统工具选择系统监视器来监视系统性能。
评语:
日期:年月日
实验五:vi的基本操作
实验目的:
1.熟悉并掌握vi命令模式、文本编辑模式和最后行模式三种工作模式之间的转换方法。
2.掌握利用vi新建和保存文件;熟悉光标的移动,文本的插入与删除等操作。
3.掌握字符串替换;行的复制、移动、撤消和删除等操作。
2.打开f2文件并显示行号。
3.在f2文件的第一行后插入如下一行内容:“With the development of
4.将文本中所有的“eyeballs”用“eye-balls”替换。
5.把第二行移动到文件的最后,删除第一和第二行并恢复删除,并不保存
6.复制第二行,并添加到文件的最后,删除第二行,保存修改后退出vi。
实验内容:
1.利用vi新建文件f2,内容为:
How to Read Faster
When I was a schoolboy I must have read every comic book ever published. But as I got older, my eyeballs must have slowed down or something I mean, comic books started to pile up faster then I could read them!
14.重复上一步操作。
15.查看刚执行过的5个命令。
实验步骤:
1.先安装VMwareWorkstation。安装后,双击图标弹出界面,在界面上单击新建虚拟机,新建一个Linux的虚拟机,按界面提示一步一步完成操作。注意:(安装过程ISO镜像操作的使用)
死锁的检测与解除(操作系统实验报告)
importorg.eclipse.swt.events.SelectionEvent;
importorg.eclipse.swt.widgets.Button;
posite;
privateButtonbutton3;
privateLabellabel_7;
privateTexttheProcess;
privateTexttheKind2;
privateLabellabel_11;
privateButtontest;
privateint[][]Max;
privateint[][]Allocation;
composite2=newComposite(composite1, SWT.BORDER);
composite2.setBackgroundMode(SWT.INHERIT_FORCE);
composite2.setData("name","composite2");
formToolkit.adapt(composite2);
privateLabellabel_3;
privateTextkindNumbers;
privateButtonbutton2;
privateTexttheKind1;
privateLabellabel_5;
privateLabellabel_6;
privateTextMaxText;
privateTextAllocationText;
composite1.setBounds(210, 1, 224, 156);
实 验 报 告
实验报告课程名称计算机操作系统实验项目Windows XP操作系统专业计算机科学与技术班级 1姓名刘恺学号09030111 指导教师曹宏宇实验成绩年月日一、实验目的Windows XP操作系统是微软于2001年发布的新操作系统,它不仅继承了Windows 2000操作系统的高安全性,高稳定性的特点,也吸取了Windows 9 X、Windows Me的美观、易用的特点,不仅如此,它还采用各种新技术大大提高了系统的性能,同时增加了许多新的功能,包括多媒体、网络通信等。
通过本次的试验,可以对Windows XP操作系统进行深入了解和充分体验。
二、实验要求1、实验之前认真预习,写出预习报告,包括操作步骤,实验过程所用数据和运行结果等,否则实验效率会很低,所学到的内容也会大受影响。
2、实验过程当中,要仔细进行,防止损坏设备,分析可能遇到的各种现象,判断结果是否正确,记录实验结果。
3、实验之后,认真写出实验报告,包括对遇到的各种现象的分析,实验步骤和实验结果,自己在这次实验的心得体会与收获。
三、实验步骤实验一:多用户操作环境(1)单击“开始”按钮,选择“控制面板”命令,打开“控制面板”对话框。
(2)双击“用户帐户”图标,打开“用户帐户”之一对话框,如图1所示。
图1(3)在该对话框中的“挑选一项任务…”选项组中可选择“更改用户”、“创建一个新用户”或“更改用户登录或注销的方式”三种选项;在“或挑一个账户做更改”选项组中可选择“计算机管理员”帐户或“来宾”帐户。
(4)例如,若用户要进行用户帐户的更改,可单击“更改用户”命令,打开“用户帐户”之二对话框,如图2所示。
图2(5)在该对话框中选择要更改的账户,例如选择“计算机管理员”帐户,打开“用户帐户”之三对话框,如图3所示。
图3(6)在该对话框中,用户可选择“创建一张密码重设盘”、“更改我的名称”、“更改我的图片”、“更改我的帐户类别”、“创建密码”或“创建Passport”等选项。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、课程名称:计算机操作系统实验(一)本课程实验总体介绍1、本课程上机实验的任务:通过该实验真正认识多进程、多线程、微核、死锁、文件系统、缓存等概念及实现原理;在充分理解原理和算法的基础上,发挥学生自我创造力,鼓励并创造机会让学生提出新的算法或实现。
2、本课程上机实验简介:分为课程实验和课程设计两大部分。
课程实验通过应用层编程调用系统接口加深对进程、内存、文件和设备等功能的理解。
具体为实验1-4。
课程设计通过对Linux核心源代码的实例分析和设计掌握系统设计的原理和方法。
具体为实验5-12。
3、本课程适用专业:计算机相关专业。
4、本课程上机实验涉及核心知识点:核心知识点:微核、系统调用、核心态与用户态、进程、线程、同步、互斥、并发、死锁、伙伴算法、文件及文件目录、I/O缓冲、调度算法、系统初始化、时钟中断等。
5、本课程上机实验重点与难点:并发控制,内核代码的分析与设计。
6、本课程上机实验运用软件名称:VC++编译环境, Source Insight分析器、gcc编译器,7、总学时:课程实验:16学时课程设计:共8个课程设计,每个根据难度在8-20学时。
8、教材名称及教材性质(自编、统编、临时):名称:《LINUX操作系统分析与设计》性质:自编9、参考资料:●计算机操作系统. 汤子瀛,西安电子科技大学出版社(第3版)●《Linux设备驱动程序》第二版Alessandro Rubini & Jonathan Corbet编著魏永明骆刚等译中国电力出版社2002年11月第一版。
●《Linux操作系统内核分析》陈莉君编人民邮电出版社第一版。
●《Linux操作系统内核实习》Gary Nutt 著机械工业出版社。
(二)包含实验项目基本信息实验项目11、实验项目名称:进程调度算法设计实践2、实验项目的目的和任务:目的:通过该实验,加深对多道系统中调度算法的认识。
任务:实现FIFO,RR(q=1),SPN, SRT, HRRN, FB(去=2i-1)六种调度算法。
并通过输入一组进程序列计算出每种算法的输出进程序列。
3、上机实验内容:(1)实现主程序及六种调度算法。
(2)输入一组进程序列,对序列中的每一个进程,定义不同的优先级、总执行时间,用六种调度算法输出调度最终的排序结果。
序列例;4、学时数:4实验项目21、实验项目名称:线程间同步与互斥2、实验项目的目的和任务:目的:通过多线程并发程序设计,掌握同步与互斥的设计方法。
任务:实现一个生产者、消费者的两线程同步算法。
3、上机实验内容:(1)申请10个缓冲区。
(2)编制生产者线程:首先产生一个随机数,写入到一个缓冲区中。
其次将该缓冲区置“满”标志。
(3)编制消费者线程:取一个“满”标志的缓冲区中数据,打印输出,然后将该缓冲区置“空”标志。
(4)添加相应的同步互斥控制代码。
4、学时数:4实验项目31、实验项目名称:内存分配与回收设计2、实验项目的目的和任务:目的:学习内存管理的实现原理。
任务:实现一个基于伙伴算法的内存分配回收算法,并通过输入一组内存请求与回收序列验证该算法执行情况。
3、上机实验内容:(1)实现主程序及伙伴算法(设内存总量为1M)。
(2)用如下请求和释放序列验证该算法执行情况。
请求100k――>请求240k――>请求64k――>请求256k――>释放240k――>释放100k――>请求75k――>释放64k――>释放75k――>释放256k试输出每次请求和释放动作产生后的内存状态。
4、学时数:4实验项目41、实验项目名称:文件复制2、实验项目的目的和任务:目的:掌握文件系统的系统调用的使用。
任务:产生两个文件A和B,并将这两个文件内容交叉复制到文件C中,并输出文件C的结果。
3、上机实验内容:(1)产生一个1k的文件A,其内容为数字。
(2)产生一个1k的文件B,其内容为字母。
(3)以100字节为单位,将A、B两文件的内容交替复制到文件C中。
最后输出C的结果。
4、学时数:4实验项目51、实验项目名称:Linux时间系统分析2、实验项目的目的和任务:通过对LINUX系统与时间有关的系统源代码分析,学习多任务系统中调度的核心事件时钟中断的实现原理,学习LINUX的内核机制以及内核时钟维护机制。
3、上机实验内容:●编写一个拾取当前时间的应用程序,熟悉系统调用gettimeofday() 的使用。
●分析\linux\kernel\time.c中的sys_gettimeofday()过程,说明时间是从何处取得的,并给出分析流图。
●分析\linux\kernel\itimer.c中的sys_getitimer()和sys_setitimer()过程,给出分析流图。
●分析\linux\arch\i386\kernel中的时钟中断处理过程do_timer_interrupt()和\linux\kernel\中的timer_bh()过程,给出分析流图,解释时钟中断处理的全过程。
4、学时数:10实验项目61、实验项目名称:Linux系统初始化过程分析2、实验项目的目的和任务:通过对LINUX启动处理代码的分析,学习操作系统初始化与其他模块实现的关系;学习各个模块的初始化顺序,深入理解操作系统的功能划分及相互关系;学习一个大型软件系统中初始化模块的设计方法。
3、上机实验内容:●分析在\linux\init\main.c中的start_kernel()函数过程,它是整个操作系统初始化最重要的过程。
分析要求:由于涉及初始化系统各个模块,内容很广,这里要求了解start_kernel()函数中所调用的各个子过程所属模块,无需对被调用的子模块进一步分析。
认识系统各个模块的初始化时机。
●详细分析start_kernel()函数中调用的sched_init和time_init两过程,说明它们的主要功能,给出分析流图。
●详细分析start_kernel()函数中调用的kernel_thread(init,…)、分析init函数及其中调用的do_basic_setup()函数;给出分析流图。
4、学时数:4实验项目71、实验项目名称:Linux文件系统分析2、实验项目的目的和任务:通过对Linux系统源代码分析,学习Linux虚拟文件系统VFS的原理及实现框架;学习VFS和逻辑文件系统如何协同实现对磁盘的管理;理解软件层状设计的特点。
3、上机实验内容:●分析文件\linux\include\linux\fs.h中file_operations、inode_operations、super_operations、file_system_type等几个数据结构,了解它们各自的作用。
●分析文件\linux\fs\super.c中sys_mount()、sys_umount()、register_filesystem()和unregister_filesystem()的实现过程,并给出分析流图。
●分析文件\linux\fs\filesystems.c中函数filesystem_setup(),了解文件系统初始化过程。
●分析vfs的fopen函数的实现过程,即分析文件\linux\fs\open.c中的sys_open(),理解文件的各种操作集合的挂接过程,给出分析流图。
4、学时数:12实验项目81、实验项目名称:Linux网络通信协议分析2、实验项目的目的和任务:分析linux通信协议的组织结构;掌握SOCKET接口;掌握协议数据的接收和发送流程;掌握网卡的数据接收和发送机制。
3、上机实验内容:●分析socket()系统调用过程,包括\linux\net\socket.c中的sys_socketcall()、sys_socket()、sock_create()和\linux\net\ipv4\Af_inet.c中的inet_create等函数。
●分析bind()系统调用,包括\linux\net\socket.c中的sys_bind()和\linux\net\ipv4\Af_inet.c中的inet_bind()函数。
●分析listen()系统调用,包括\linux\net\socket.c中的sys_listen()和\linux\net\ipv4\Af_inet.c中的inet_listen()函数。
●分析connect()系统调用,包括\linux\net\socket.c中的sys_connect()和\linux\net\ipv4\Af_inet.c中的inet_stream_connect()函数。
●分析accept()系统调用,包括\linux\net\socket.c中的sys_accept()和\linux\net\ipv4\Af_inet.c中的inet_accept()函数。
●分析send ()系统调用,包括\linux\net\socket.c中的sys_send()、sys_sendto()、sock_sendmsg()、\linux\net\ipv4\Af_inet.c中的inet_sendmsg()、\linux\net\ipv4\Tcp_ipv4.c中的tcp_v4_sendmsg()、\linux\net\ipv4\Tcp.c中的tcp_do_sendmsg()、\linux\net\ipv4\Tcp_output.c中的tcp_send_skb()、tcp_transmit_skb()、\linux\net\ipv4\Ip_output.c中的ip_queue_xmit()、\linux\include\net\Ip.h中的ip_output()、ip_finish_output()、\linux\net\core\dev.c中的dev_queue_xmit()等函数。
●分析receive ()系统调用,包括\linux\net\socket.c中的sys_recv()、sys_recvfrom()、\linux\net\ipv4\Af_inet.c中的inet_recvmsg()、\linux\net\ipv4\Tcp.c中的tcp_recvmsg()、\linux\net\ipv4\Tcp_input.c中的tcp_rcv_established()、\linux\net\ipv4\Tcp_ipv4.c中的tcp_v4_do_rcv()、tcp_v4_rcv()、\linux\net\core\dev.c中的net_bh()、linux\net\ipv4\Ip_input.c中的ip_local_deliver()、ip_rcv()等函数。