操作系统实验指导及实验五个

合集下载

操作系统实验指导书

操作系统实验指导书

《操作系统》课程实验指导书一.实验总学时(课外学时/课内学时):4/8 总学分:8/44必开实验个数: 4 选开实验个数:0二.适用专业:网络工程、计算机科学与技术2007级三.考核方式及办法:在规定实验时间内完成实验要求,依据实验过程及实验结果在实验现场逐一检查考核。

四.配套的实验教材或指导书:自编实验指导书五. 实验项目:实验1 SHELL命令的使用1、实验目的通过对LINUX的系统启动、注销、关闭和关机,帐号管理,文件系统的日常管理,文件系统的权限控制等常用基本命令的使用及与Windows下DOS SHELL的比较,了解现代操作系统SHELL的特点和功能。

了解编辑器vi的使用方法。

2、实验工具及环境LINUX系统网络环境或单机,Windows系统网络环境或单机。

3、实验计划学时2学时上机实际操作。

4、实验内容及操作步骤⑴系统启动和关闭①使用自己的账户登录UNIX系统,查看系统提示符确定自己使用的shell程序类型别。

◎开机后,系统自检启动后提示login:(输入:root↙)password:(输入:用户口令↙,root用户为redhat)◎查看/etc/passwd文件可以获得用户使用的shell#grep $LOGNAME /etc/passwd↙可能的显示为:user001:*:200:50::/usr/user001:/bin/sh请思考上述命令怎样得到了当前使用的shell类型的?使用下面的命令也可以查看当前shell:#echo $SHELL②注销和关机命令。

◎用户注销使用:$exit↙或$<ctrl>+<D>↙或$logout↙◎超级用户关机使用:#shutdown↙该命令将结束所有的进程,当执行此命令后系统提示“Safe to Power off or Press Any Keyto Reboot”时可以关闭电源或按任一键重启系统。

◎haltsys(halt),reboot只能由超级用户在单用户模式下使用。

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

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

《计算机操作系统》实验指导书(适合于计算机科学与技术专业)湖南工业大学计算机与通信学院二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函数开始,该函数的任务是在对象管理器⼦系统内初始化进程对象。

操作系统原理实验5-实现一个简单的Shell

操作系统原理实验5-实现一个简单的Shell

《操作系统原理》实验报告
实验序号:5 实验项目名称:实现一个简单的Shell
一、实验目的及要求
1. 加深对操作系统Shell的理解。

2. 理解进程控制的思想。

3. 深入掌握Linux操作系统下的进程控制编程。

二、实验设备(环境)及要求
1.虚拟机VMware Workstation、Ubuntu操作系统和C语言编程。

2.设计思路:Shell建立一个新的进程,然后在那个进程中运行一个程序(如完成ls操作)然后等待那个进程执行结束。

然后shell便可读取新的一行输入,建立一个新的进程,在这个进程中运行程序并等待这个进程结束。

所以要写一个shell,需要循环以下过程:
a. 获取命令行
b. 解析命令行
c. 建立一个子进程(fork)
d. 替换子进程(execvp)
e. 父进程等待子进程退出(wait)。

三、实验内容与步骤
主要代码
解析并执行指令
输出各进程的信息
四、实验结果与数据处理
五、分析与讨论
六、教师评语
成绩
签名:
日期:。

操作系统试验指导书

操作系统试验指导书

操作系统实验指导书实验1 存储管理1、实验目的存储管理的主要功能之一是合理地分配空间。

请求页式管理是一种常用的虚拟存储管理技术。

本实验的目的是通过请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的技术特点,掌握请求页式存储管理的页面置换算法。

2、实验内容(1)通过随机数产生一个指令序列,共320条指令。

指令的地址按下述原则生成:①50%的指令是顺序执行的;②50%的指令是均匀分布在前地址部分;③50%的指令是均匀分布在后地址部分。

具体的实施方法是:①在 [0,319] 的指令之间随即选取一起点m;②顺序执行一条指令,即执行地址为m+1的指令;③在前地址[0,m+1]中随机选取一条指令并执行,该指令的地址为m′;④顺序执行一条指令,其地址为 m′+ 1;⑤在后地址[m′+ 2,319]中随机选取一条指令并执行;⑥重复上述步骤①-⑤,直到执行320次指令。

(2)将指令序列变换为页地址流设:①页面大小为1k;②用户内存容量为4页到32页;③用户虚存容量为32k。

在用户虚存中,按每k存放10条指令排在虚存地址,即320条指令在虚存中的存放方式为:第0条-第9条指令为第0页(对应虚存地址为[0,9]);第10条-第19条指令为第一页(对应虚存地址为[10,19]);……第310条~第319条指令为第31页(对应虚地址为[310,319])。

按以上方式,用户指令可组成32页。

(3)计算并输出下述各种算法在不同内存容量下的命中率。

①先进先出的算法(FIFO);②最近最少使用算法(LRR);③最佳淘汰算法(OPT)先淘汰最不常用的页地址;④最少访问页面算法(LFR);⑤最近最不经常使用算法(NUR)。

其中③和④为选择内容。

命中率=1-页面失效次数/页地址流长度在本实验中,页地址流长度为320,页面失效次数为每次访问相应指令时,该指令所对应的页不在内存的次数。

3、随机数产生办法,Linux或UNIX系统提供函数strand()和rand(),分别进行初始化和产生随机数。

操作系统实验全(五个)

操作系统实验全(五个)

操作系统试验指导—. 课程的性质、目的和任务操作系统在整个计算机系统软件中占有中心地位。

其作用是对计算机系统进行统一的调度和管理,提供各种强有力的系统服务,为用户创造既灵活又方便的使用环境。

本课程是计算机及应用专业的一门专业主干课和必修课。

通过本课程的学习,使学生掌握操作系统的基本概念、设计原理及实施技术,具有分析操作系统和设计、实现、开发实际操作系统的能力。

二. 实验的意义和目的操作系统是计算机专业学生的一门重要的专业课程。

操作系统质量对整个计算机系统的性能和用户对计算机的使用有重大的影响。

一个优良的操作系统能极大地扩充计算机系统的功能,充分发挥系统中各种设备的使用效率,提高系统工作的可靠性。

由于操作系统涉及计算机系统中各种软硬件资源的管理,内容比较繁琐,具有很强的实践性。

要学好这门课程,必须把理论与实践紧密结合,才能取得较好的学习效果。

培养计算机专业的学生的系统程序设计能力,是操作系统课程的一个非常重要的环节。

通过操作系统上机实验,可以培养学生程序设计的方法和技巧,提高学生编制清晰、合理、可读性好的系统程序的能力,加深对操作系统课程的理解。

使学生更好地掌握操作系统的基本概念、基本原理、及基本功能,具有分析实际操作系统、设计、构造和开发现代操作系统的基本能力。

三.实验运行环境及上机前的准备实验运行环境: C语言编程环境上机前的准备工作包括:●按实验指导书要求事先编好程序;●准备好需要输入的中间数据;●估计可能出现的问题;●预计可能得到的运行结果。

四. 实验内容及安排实验内容包括进程调度、银行家算法、页式地址重定位模拟,LRU算法模拟和先来先服务算法五个实验。

每个实验介绍了实习的目的要求、内容和方法。

实验一、进程调度试验[目的要求]用高级语言编写和调试一个进程调度程序,以加深对进程的概念及进程调度算法的理解.[准备知识]一、基本概念1、进程的概念;2、进程的状态和进程控制块;3、进程调度算法;二、进程调度1、进程的状态2、进程的结构——PCB进程都是由一系列操作(动作)所组成,通过这些操作来完成其任务。

《Linux操作系统》实验指导书.v1.2

《Linux操作系统》实验指导书.v1.2

# 根据实际情况修改(红色处改为自己的学号后两位)。
eth1 的配置如下:(/etc/sysconfig/network-scripts/ifcfg-eth1) DEVICE=eth1 BOOTPROTO=dhcp ONBOOT=yes
(2)配置 DHCP 服务器(/etc/dhcpd.conf) ddns-update-style interim;
# service network restart (2)安装 samba 文件
(A)检测系统内部是否已经安装好 samba 文件 # rpm -qa | grep samba
(B)如果显示类似如下的版本信息,则证明系统内已经安装好 samba 服务 samba-common-3.0.33-3.14.el5
4、实验步骤 (1)配置两块网卡 eth0 和 eth1(均使用 bridge 方式连接)
eth0 的配置如下:(/etc/sysconfig/network-scripts/ifcfg-eth0)
DEVICE=eth0 BOOTPROTO=static IPADDR=192.168.16.1 NETMASK=255.255.255.0 ONBOOT=yes
# getenforce 如果输出“Enforcing”,则输入下面的命令
# setenforce 0 (B)通过 Windows 访问 Linux
右击“我的电脑”,左键单击映射网络驱动器,在文件夹方框内按如下格式填写
\\192.168.0.253\share 如果下次需要映射其它用户的文件,可以先断开原来的映射,然后通过修改“其它
# smbclient -L //192.168.0.1 -U 用户 1 # 列出用户 1 的所有共享信息 # smbclient //192.168.0.1/共享名 - U 用户 1 # 访问用户 1 的“共享名”目录

操作系统实验指导

操作系统实验指导

操作系统实验指导操作系统是计算机科学中的重要课程之一,通过实验可以让学生更好地理解和掌握操作系统的原理和功能。

本文将为大家介绍一些操作系统实验的指导。

一、实验准备在进行操作系统实验之前,需要先进行一些实验准备工作。

首先,需要安装一个操作系统,一般选择Linux或Windows。

其次,需要安装一些实验所需的软件和工具,例如编译器、调试器等。

此外,还需要准备一些实验材料,如实验手册、实验报告模板等。

二、实验目标每个操作系统实验都应该有明确的实验目标。

实验目标可以根据学生的实际情况和课程要求进行设定。

例如,可以通过实验来掌握进程管理、文件系统、内存管理等操作系统相关知识。

同时,实验目标应该具有可衡量性,可以通过实验结果来评估学生的实验成果。

三、实验内容1.进程管理实验:通过编写一个简单的多进程程序,来了解进程的创建、调度和终止等过程。

2.文件系统实验:通过创建、读写和删除文件,来了解文件系统的组织结构和基本操作。

3.内存管理实验:通过编写一个简单的分页存储管理程序,来了解分页存储管理的原理和实现方法。

4.设备管理实验:通过模拟设备的申请、释放和使用过程,来了解设备管理的原理和调度算法。

四、实验步骤每个操作系统实验都有具体的实验步骤,学生需要按照这些步骤进行实验。

以下是一些常见的实验步骤:1.实验环境准备:包括安装操作系统、配置软件和工具等。

2.实验预备:包括阅读实验手册、了解实验目标和要求等。

3.实验设计:根据实验目标和要求,设计实验方案和实验程序。

4.实验实施:按照实验方案和实验程序,进行实验操作并记录实验数据。

5.实验分析:根据实验数据,进行分析和总结,并得出实验结论。

6.实验报告:根据实验分析和总结,编写实验报告并提交。

五、实验评估实验结果的评估可以根据实验目标和要求来确定。

例如,如果实验目标是了解进程管理,可以通过观察进程的创建和调度情况来评估学生的实验结果。

实验报告的评估可以根据实验报告的内容和结构来确定。

操作系统实验指导书(新)

操作系统实验指导书(新)

目录实验一 WINDOWS进程初识 (3)1、实验目的 (3)2、实验内容和步骤 (3)3、实验结论 (5)4、程序清单 (5)实验二进程管理 (6)背景知识 (6)1、实验目的 (12)2、实验内容和步骤 (12)3、实验结论 (16)4、程序清单................... 错误!未定义书签。

实验三进程同步的经典算法 .. (17)背景知识 (17)1、实验目的 (19)2、实验内容和步骤 (19)3、实验结论 (22)4、程序清单................... 错误!未定义书签。

实验四存储管理 (23)背景知识 (23)1、实验目的 (31)2、实验内容和步骤 (31)3、实验结论 (48)4、程序清单................... 错误!未定义书签。

实验五文件和设备管理 (49)背景知识 (49)1、实验目的 (53)2、实验内容与步骤............. 错误!未定义书签。

3、实验结论................... 错误!未定义书签。

实验一WINDOWS进程初识1、实验目的(1)学会使用VC编写基本的Win32 Consol Application (控制台应用程序)。

(2)掌握WINDOWS API的使用方法。

(3)编写测试程序,理解用户态运行和核心态运行。

2、实验内容和步骤(1)编写基本的Win32 Consol Application步骤1:登录进入Windows,启动VC++ 6.0。

步骤2:在“FILE”菜单中单击“NEW”子菜单,在“projects”选项卡中选择“Win32 Consol Application”,然后在“Project name”处输入工程名,在“Location”处输入工程目录。

创建一个新的控制台应用程序工程。

步骤3:在“FILE”菜单中单击“NEW”子菜单,在“Files”选项卡中选择“C++ Source File”, 然后在“File”处输入C/C++源程序的文件名。

计算机操作系统实验指导linux版王红玲源码

计算机操作系统实验指导linux版王红玲源码

计算机操作系统实验指导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操作系统实验指导书.doc

Linux操作系统实验指导书.doc

《Linux操作系统》实验指导书主编教师:王振目录实验一Linux操作系统的安装 (3)【实验目的】 (3)【实验环境】 (3)【实验重点及难点】 (3)【实验内容】 (3)实验二常用命令的使用(一) (5)【实验目的】 (5)【实验环境】 (5)【实验重点及难点】 (5)【实验内容】 (5)实验三常用命令的使用(二) (9)【实验目的】 (9)【实验环境】 (9)【实验重点及难点】 (9)【实验内容】 (9)实验四VI编辑器的使用 (14)【实验目的】 (14)【实验环境】 (14)【实验重点及难点】 (14)【实验内容】 (14)实验五Linux系统管理与配置 (15)【实验目的】 (15)【实验环境】 (16)【实验重点及难点】 (16)【实验内容】 (16)(一)命令行管理 (16)(二)图形界面管理 (17)实验六shell编程(一) (19)【实验目的】 (19)【实验环境】 (19)【实验重点及难点】 (19)【实验内容】 (19)实验七shell编程(二) (23)【实验目的】 (23)【实验环境】 (23)【实验重点及难点】 (23)【实验内容】 (23)实验八FTP服务器的配置 (25)【实验目的】 (25)【实验环境】 (25)【实验重点及难点】 (25)【实验内容】 (25)实验九NFS服务器 (26)【实验目的】 (26)【实验环境】 (26)【实验重点及难点】 (26)【实验内容】 (26)实验十配置Samba服务器 (28)【实验目的】 (28)【实验环境】 (28)【实验重点及难点】 (28)【实验内容】 (28)实验一Linux操作系统的安装【实验目的】1.掌握Linux操作系统的安装;2.通过安装,学习Linux操作系统与其他操作系统的区别。

【实验环境】1、Linux操作系统安装;2、虚拟机软件;3、计算机内存配置要求512M以上。

【实验重点及难点】Linux操作系统安装过程。

《操作系统》实验指导书

《操作系统》实验指导书

操作系统实验指导书专业:计算机科学与技术;软件工程课程名称:操作系统课程类别:专业必修课计算机与通信工程学院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应用程序那样切换。

操作系统实验报告5——目录与文件管理

操作系统实验报告5——目录与文件管理
《linux下文件管理》实验报告
实验序号: 05 实验项目名称: linux下文件管理
学 号
2009406012
姓 名
吴松娇
Hale Waihona Puke 专业、班09计本(1)实验地点
32404
指导教师
汤敏丽
时间
2012.6.6
一、实验目的
1.加深对操作系统文件管理功能的理解。
2.熟练掌握linux下文件管理命令。
二、实验环境
装有linux系统的计算机。
(4)再次输入命令“ls -1”,确认两个目录和一个文件是否成功创建。
(5)输入命令“mv–f dir2 dir1”,将dir2目录移动到dirl目录;输入命令“mv–f cs.txt dir1”,将cs.txt目录移动到dirl目录。
(6)输入命令“cd dirl”,切换到dirl目录,再输入“ls”命令,查看到dir2目录。
13、分屏显示文件内容:more例子:ls | more /说明:每次分屏地查看由ls命令显示的/下子目录清单。
14、磁盘操作工具:du例子:du -sh .说明:列出当前目录下的所有子目录和文件占用的空间。
15、查找文件所在目录命令:which例子:which rm说明:查找rm命令保存在哪个目录。
(7)删除dir2目录,输入命令“rmdir dir2。”
2.文件操作
1.创建命令: touch例子: touch skxiao.xml说明:创建文件skxiao.xml
2.删除命令: rm例子: rm -r /home/shenkxiao/说明:删除/home/shenkxiao/下的所有文件
3.复制命令: cp例子: cp skxiao.xml /home/shenkxiao说明:将当前目录下的skxiao.xml文件拷贝到/home/shenkxiao目录下

计算机操作系统实验指导linux

计算机操作系统实验指导linux

计算机操作系统实验指导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”。

操作系统实验教程

操作系统实验教程

操作系统实验教程在当今数字化的时代,操作系统作为计算机系统的核心组成部分,其重要性不言而喻。

对于学习计算机相关专业的学生和从事相关工作的技术人员来说,深入理解操作系统的原理和机制,并通过实验来巩固和拓展知识,是必不可少的环节。

本教程将带您走进操作系统实验的世界,帮助您掌握操作系统的关键概念和实践技能。

一、实验环境的搭建在开始操作系统实验之前,首先需要搭建一个合适的实验环境。

这通常包括选择合适的操作系统(如 Windows、Linux 等),安装相关的开发工具和编译器(如 Visual Studio、GCC 等),以及配置必要的环境变量。

对于初学者,建议选择较为常见和易用的操作系统,如 Windows 10 或 Ubuntu Linux。

在 Windows 系统中,可以通过安装 Visual Studio 来进行 C/C++程序的开发;而在 Linux 系统中,可以使用命令行工具来安装 GCC 编译器,并通过文本编辑器(如 Vim 或 Emacs)来编写代码。

二、进程管理实验进程是操作系统中最基本的概念之一,它是程序的一次执行过程。

在进程管理实验中,我们将学习如何创建、终止进程,以及如何进行进程间的通信。

1、进程的创建与终止通过编程实现创建新的进程,并在完成任务后终止进程。

可以使用系统提供的 API 函数(如 Windows 中的 CreateProcess 函数或 Linux 中的 fork 函数)来创建进程,并通过相应的函数(如 ExitProcess 或 exit 函数)来终止进程。

2、进程间通信进程间通信是指不同进程之间交换数据和信息的方式。

常见的进程间通信方式包括管道、消息队列、共享内存等。

通过实验,我们可以了解这些通信方式的原理和实现方法,并编写程序进行实际的通信操作。

三、内存管理实验内存管理是操作系统的重要任务之一,它负责合理地分配和回收内存资源,以确保系统的高效运行。

1、内存分配与释放学习使用编程语言中的内存分配函数(如 C 语言中的 malloc 和 free 函数)来动态分配和释放内存。

操作系统本科实验指导书

操作系统本科实验指导书

操作系统实验指导书实验1 操作系统环境通过调查研究活动和对Windows、Linux系统运行的观察分析,回顾计算环境的基本术语,加深理解有关操作系统的基础概念,掌握主流操作系统的命令和图形界面,学会在操作系统上的主要系统管理操作。

1.1 操作系统的计算环境1.2 Windows xp系统管理1.3 访问Linux系统§1.1 操作系统的计算环境背景知识本实验帮助回顾 Windows xp/XP、UNIX和Linux的计算环境术语,加深理解有关操作系统的基础概念。

调查在学校或其他机构中Windows、UNIX和Linux的使用情况,看哪些机构在使用Windows、UNIX或者Linux系统;研究Web站点,看哪些因特网网站 (尤其是简体中文网站) 分别支持着Windows、UNIX和Linux操作系统的应用。

实验目的通过实验,加深对以下内容的理解基本的计算机硬件组件;计算机操作系统;Windows的发展和版本UNIX和Linux的历史和版本;Windows xp、UNIX或Linux操作环境。

调查在机构、学校和学生中Windows、UNIX和Linux操作系统的使用情况,分别研究支持Windows和Linux的Web站点。

工具/准备工作在开始本实验之前,请回顾教科书的相关内容,联系指导老师或者熟识网络技术的人士,如学校或企业信息技术部门的职员,了解学校或者其他机构中使用了哪些服务器和网络操作系统,找出是否在用Windows NT/2000/XP、UNIX和Linux以及在哪里使用这些操作系统,需要准备一台带有浏览器,能够访问因特网的计算机。

实验内容与步骤2、复习3个概念:内核、shell、文件系统3、 Windows xp/XP操作系统的主要优点是什么?4、UNIX操作系统的主要优点是什么?5、Linux操作系统的主要优点是什么?6、列举Linux操作系统的主要组成部分7、Linux内核管理着哪几件事情?8、Linux系统的主要shell的名字和它们各自默认的提示符是什么?9、操作系统的文件系统由哪几部分组成的?10、在指导老师或者信息技术人员的帮助下,找出在学校或者其他机构中使用的几种操作系统。

计算机操作系统实验指导linux版王红玲源码

计算机操作系统实验指导linux版王红玲源码

计算机操作系统实验指导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内核源代码中与内存管理和文件系统相关的部分,并完成一系列与之相关的实验任务。

任务包括实现内存分配算法、设计和实现文件系统、调试和优化内存和文件系统的性能等。

Linux操作系统实验指导书

Linux操作系统实验指导书

Linux操作系统实验指导书Linux操作系统实验指导书计算机科学与技术学院技术科学与技术系实验⼀Linux系统安装与简单配置⼀、实验⽬的1.掌握虚拟机的配置过程。

2.掌握Linux系统的安装过程和简单配置⽅法。

3.掌握Linux系统的启动、关闭步骤。

⼆、实验内容1.安装并使⽤虚拟机(如Sun Virtualbox ver 3.06)。

2.在虚拟机上安装Linux系统(如红旗Linux桌⾯版4.0)。

3.配置Linux系统运⾏环境。

4.正确地启动、关闭系统。

三、主要实验步骤1.安装虚拟机软件(例如Sun Virtualbox ver 3.06),下图为安装好Virtualbox且运⾏成功的界⾯。

2.在Virtualbox虚拟机中新建虚拟电脑1)点击“新建”图标,就会弹出“欢迎使⽤新建虚拟电脑向导”,点击“下⼀步”图标,在下图中的对话框中填写虚拟电脑的名称,例如“myredf”,并选择操作系统类型,点击“下⼀步”图标2)接着设置内存⼤⼩,例如下图所⽰,点击“下⼀步”图标3)接着设置虚拟硬盘⼤⼩,点击“下⼀步”图标拟硬盘类型”,如下图所⽰,且点击“下⼀步”图标5)在“虚拟硬盘所在位置和空间⼤⼩”对话框中,点击“下⼀步”图标,然后出现“摘要”对话框,点击“完成”图标,6)再次点击“完成”图标,出现下图所⽰的虚拟机界⾯:7)接着为虚拟机myredf配置虚拟光驱,点击设置图标,出现下⾯的界⾯:8)在光驱栏⽬中,选择分配光驱,再选择虚拟光盘,接着点击右边的⽂件夹图标,在弹出的虚拟介质管理器对话框中,注册红旗Linux的安装光盘映象⽂件(例如redflag.iso),然后点击确定,就会出现如下的界⾯:9)在虚拟机主界⾯中,点击“开始”图标,启动虚拟机myredf的运⾏,就会出现如下的界⾯:10)接着,就按照课本中的关于红旗Linux的安装步骤,⼀步⼀步地进⾏配置和安装Linux。

3.安装成功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);}}}。

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

操作系统实验指导及实验五个前言1.实验总体目标通过学生自己动手设计实验验证理论知识,使学生掌握操作系统特征和功能,掌握不同调度算法下进程的调度、进程控制、进程调度与死锁,并必须掌握作业管理、存储器管理、设备管理和文件管理的主要原理。

加深对操作系统基本原理理解。

⒉适用专业计算机科学与技术⒊先修课程C语言程序设计、计算机组成原理、数据结构⒋实验课时分配⒌有70台中等配置的计算机组成的小型局域网的实验室环境。

计算机的具体要求:(1)Pentium 133Hz以上的CPU;(2)建议至少256MB的内存;(3)建议硬盘至少2GB,并有1GB空闲空间。

(4)安装Windows操作系统及C语言编译程序或Linux虚拟环境。

⒍实验总体要求培养计算机专业的学生的系统程序设计能力,是操作系统课程的一个非常重要的环节。

通过操作系统上机实验,可以培养学生程序设计的方法和技巧,提高学生编制清晰、合理、可读性好的系统程序的能力,加深对操作系统课程的理解。

使学生更好地掌握操作系统的基本概念、基本原理、及基本功能,具有分析实际操作系统、设计、构造和开发现代操作系统的基本能力。

实验要求做到:1)详细描述实验设计思想、程序结构及各模块设计思路;2)详细描述程序所用数据结构及算法;3)明确给出测试用例和实验结果;4)为增加程序可读性,在程序中进行适当注释说明;5)认真进行实验总结,包括:设计中遇到的问题、解决方法与收获等;6)实验报告撰写要求结构清晰、描述准确逻辑性强;7)实验过程中,同学之间可以进行讨论互相提高,但绝对禁止抄袭。

⒎本实验的重点、难点及教学方法建议重点:理解进程调度中PCB的设计,以实现对进程的调度。

难点:进程调度程序的设计,设备管理程序的设计。

教学方法建议:力争在本指导书的帮助下,独立设计程序以加深理解。

实验一分析操作系统所面临的操作需求(一)实验目的使学生理解操作系统所面临的操作需求,掌握操作系统中的进程管理、存储管理、设备管理和文件管理等功能。

(二)实验内容1. 分析操作系统所面临的操作需求;2. 熟悉实验环境;3. 资料搜集与整理,进行实验的前期准备。

熟悉编程环境本课程中的实验题目既可以在windows下用控制台应用程序实现,也可以在linux下用全屏幕程序实现。

这里我们首先介绍在windows下用vc++6.0设计控制台应用程序的步骤,然后介绍在linux下用C语言编写全屏幕程序的步骤。

1.windows的控制台应用程序图1-1 图1-2图1-3步骤1:开机,单击“开始”按钮,选择“程序->Microsoft Visual Studio 6.0->Microsoft Visual C++6.0”进入Microsoft Visual C++6.0。

见图1-1。

步骤2:在Microsoft Visual C++6.0中,单击“File”菜单,选择“New”菜单命令,见图1-2。

步骤3:在“Files”选项卡中选择“C++ Source File”,见图1-32. linux的vi应用编程登录 Linux是一个多用户多任务操作系统,多个用户可以拥有自己独立的用户账号登录提示:Red Hat Linux release 6.0 (Hedwing)Kernel 2.2.5-15 on an i686Login:此时输入用户户名(账号)并键入回车,则系统显示“passward”。

在输入密码和回车。

登录后:[root@hawk/root]##表示是按root方式登录,$表示是普通用户。

Linux大小写敏感,用“-”加参数zlinux:~# ls –FHowTo/ HowToMin/ linux@ nag/ sag/获取帮助:Linux带有联机手册,可以用man命令来阅读Zlinux:~$ man ls虚拟终端 Linux可有多个用户登录到同一个计算机,但一般微机只有一个终端难以体现。

可以使用多个虚拟终端,用Alt+F1、 Alt+F2等来切换。

退出系统在停止使用系统时,要退出系统。

具体方法:exit或logout,或Ctrl+D关机如果没有用户在使用系统,可以关机。

但是不能直接关闭电源,而要按正常顺序关机。

一般用户是不能关机的,只有root用户可以关机。

方法:可以使用halt或shutdown命令,也可以同时键入Ctrl+Alt+Del。

Windows 虚拟机环境:登录到系统点击桌面“VMware”图标——> Vmware Workstation窗口——>Commands ——>Start this virtual machine进入fedora后,用户名:root口令:123456使用编辑器vi 编辑文件1.进入linux的文本模式之后,在命令行键入vi filename.c 然后回车。

下面作一些简单的解释:首先vi命令是打开vi编辑器。

后面的filename.c 是用户即将编辑的c文件名字,注意扩展名字是.c;当然,vi编辑器功能很强,可以用它来编辑其它格式的文件,比如汇编文件,其扩展名字是.s;也可以直接用vi打开一个新的未命名的文件,当保存的时候再给它命名,只是这样做不很方便。

2.最基本的命令I :当进入刚打开的文件时,不能写入信息,这时按一下键盘上的I键(insert),插入的意思,就可以进入编辑模式了。

如下图所示:3.a与i是相同的用法4.当文件编辑完后,需要保存退出,这时需要经过以下几个步骤:1)按一下键盘上的Esc 键;2)键入冒号(:),紧跟在冒号后面是wq(意思是保存并退出)。

如果不想保存退出,则在第二步键入冒号之后,键入!q(不带w,机尾部保存)。

如下图所示:5.退出vi编辑器的编辑模式之后,要对刚才编写的程序进行编译。

编译的命令是:gcc filename.c [-o outputfilename],其中gcc是c的编译器。

参数:filename.c 是刚才编辑的c 文件(当然也可以是以前编写好的c文件);后面中括号里面的参数是可选的,它是一个输出文件。

如果不选,默认的输出文件是 a.out ,选了之后输出文件就是outputfilename.out.6.最后一步是运行程序,方法如下:./outputfilename.out实验二进程管理(一)实验目的掌握临界区的概念及临界区的设计原则;掌握信号量的概念、PV操作的含义以及应用PV操作实现进程的同步与互斥;分析进程争用资源的现象,学习解决进程互斥的方法;掌握进程的状态及状态转换;掌握常用的进程调度算法。

(二)实验内容1.分析进程的同步与互斥现象,编程实现经典的进程同步问题——生产者消费者问题的模拟;2.编写允许进程并行执行的进程调度程序,在常用的进程(作业)调度算法:先来先服务算法、短作业优先算法、最高响应比优先算法、高优先权优先算法等调度算法中至少选择三种调度算法进行模拟,并输出平均周转时间和平均带权周转时间。

本实验涉及内容较多,可以在两个题目里选择一个完成。

编程实现经典的进程同步问题——生产者消费者问题的模拟模拟实现用同步机构避免发生进程执行时可能出现的与时间有关的错误。

进程是程序在一个数据集合上运行的过程,进程是并发执行的,也即系统中的多个进程轮流地占用处理器运行。

我们把若干个进程都能进行访问和修改的那些变量称为公共变量。

由于进程是并发地执行的,所以,如果对进程访问公共变量不加限制,那么就会产生“与时间有关”的错误,即进程执行后所得到的结果与访问公共变量的时间有关。

为了防止这类错误,系统必须要用同步机构来控制进程对公共变量的访问。

一般说,同步机构是由若干条原语——同步原语——所组成。

本实验要求模拟PV操作同步机构的实现,模拟进程的并发执行,了解进程并发执行时同步机构的作用。

此次用到的数据结构知识如下:typedef struct Pcb{char name[10]; //进程名char state[10]; //运行状态char reason[10]; //若阻塞,其原因int breakp; //断点保护struct Pcb *next; //阻塞时的顺序}Pcb,*link;进程控制块结构定义两个进程: link p1;//生产者进程,link c1;//消费者进程。

pc程序计数器和link ready; 就绪队列,link b_s1; s1阻塞队列,link b_s2; s2阻塞队列。

实验指导:a.h头文件#include<string.h>#include<ctype.h>#include<malloc.h> /* malloc()等 */#include<limits.h> /* INT_MAX等 */#include<stdio.h> /* EOF(=^Z或F6),NULL */#include<stdlib.h> /* atoi() */#include<io.h> /* eof() */#include<math.h> /* floor(),ceil(),abs() */#include<process.h> /* exit() */#include <iostream>using namespace std;#include <time.h>#define BUF 10 //缓存的大小#define MAX 20 //最大可以输入的字符b.h头文件//数据结构的定义和全局变量typedef struct Pcb{char name[10]; //进程名char state[10]; //运行状态char reason[10]; //若阻塞,其原因int breakp; //断点保护struct Pcb *next; //阻塞时的顺序}Pcb,*link;int s1,s2; //信号量link p1;//生产者进程link c1;//消费者进程char str[MAX]; //输入的字符串char buffer[BUF]; //缓冲池int len; //输入长度int sp=0; //string的指针int in=0; //生产者指针int out=0; //消费者指针char temp; //供打印的临时产品char rec_p[MAX];//生产记录int rp1=0;//生产记录指针char rec_c[MAX];//消费记录int rp2=0;//消费记录指针link ready; //就绪队列link b_s1; //s1阻塞队列link b_s2; //s2阻塞队列int pc; //程序计数器int count; //字符计数器int con_cnt; //消费计数器c.h头文件void init(); //初始化void p(int s); //P操作void v(int s); //V操作void block(int s);//阻塞函数void wakeup(int s);//唤醒函数void control(); //处理机调度void processor();//处理机执行void print(); //打印函数void init(){ //初始化s1=BUF;s2=0;p1=(link)malloc(sizeof(Pcb));//建立新的结点,并初始化为生产者strcpy(p1->name,"Producer");strcpy(p1->state,"Ready");strcpy(p1->reason,"Null");p1->breakp=0;p1->next=NULL;c1=(link)malloc(sizeof(Pcb));//建立新的结点,并初始化为消费者strcpy(c1->name,"Consumer");strcpy(c1->state,"Ready");strcpy(c1->reason,"Null");c1->breakp=0;c1->next=NULL;ready=p1;ready->next=c1;//初始化为生产进程在前,消费进程在后c1->next=NULL;b_s1=NULL;b_s2=NULL;//阻塞进程为NULLpc=0;con_cnt=0; //消费计数器}void p(int s){if(s==1){ //p(s1)s1--;if(s1<0)block(1); //阻塞当前生产进程else{printf("\t* s1信号申请成功!\n");ready->breakp=pc; //保存断点}}else{ //p(s2)s2--;if(s2<0)block(2);//阻塞当前消费进程else{printf("\t* s2信号申请成功!\n");ready->breakp=pc; //保存断点}}}void v(int s){if(s==1){ //v(s1)s1++;if(s1<=0)wakeup(1); //唤醒生产进程ready->breakp=pc; //保存断点}else{ //v(s2)s2++;if(s2<=0)wakeup(2);//唤醒消费进程ready->breakp=pc; //保存断点}}void block(int s){//阻塞函数的定义link p;int num1=0;int num2=0;if(s==1){//生产进程strcpy(p1->state,"Block");//改变状态strcpy(p1->reason,"S1");//说明原因p=b_s1;while(p){num1++;p=p->next;//p的值为NULL,表示队尾}if(!b_s1)b_s1=p1;elsep=p1;p1->next=NULL;printf("\t* p1生产进程阻塞了!\n");ready->breakp=pc; //保存断点ready=ready->next;//在就绪队列中去掉,指向下一个num1++;}else{//消费进程strcpy(c1->state,"Block");strcpy(c1->reason,"S2");p=b_s2;while(p){num2++;p=p->next;//p的值为NULL,表示队尾}if(!b_s2)b_s2=c1;elsep=c1;ready->breakp=pc; //保存断点ready=ready->next;//在就绪队列中去掉,指向下一个c1->next=NULL;printf("\t* c1消费进程阻塞了!\n");num2++;}printf("\t* 阻塞的生产进程个数为:%d\n",num1);printf("\t* 阻塞的消费进程个数为:%d\n",num2);}void wakeup(int s){//唤醒函数的定义link p;link q=ready;if(s==1){ //唤醒b_s1队首进程,生产进程队列p=b_s1;b_s1=b_s1->next;//阻塞指针指向下一个阻塞进程strcpy(p->state,"Ready");strcpy(p->reason,"Null");while(q)//插入就绪队列q=q->next;q=p;p->next=NULL;printf("\t* p1生产进程唤醒了!\n");}else{ //唤醒b_s2队首进程,消费进程队列p=b_s2;b_s2=b_s2->next;//阻塞指针指向下一个阻塞进程strcpy(p->state,"Ready");strcpy(p->reason,"Null");while(q->next)//插入就绪队列q=q->next;q->next=p;p->next=NULL;printf("\t* c1消费进程唤醒了!\n");}}void control() //处理器调度程序{int rd;int num=0;link p=ready;if(ready==NULL) //若无就绪进程,结束return;while(p) //统计就绪进程个数{num++;p=p->next;//最终p变为NULL}printf("\t* 就绪进程个数为:%d\n",num);time_t t;srand((unsigned) time(&t));rd=rand()%num;//随机函数产生随机数if(rd==1){p=ready;ready=ready->next;ready->next=p;p->next=NULL;strcpy(ready->state,"Run");strcpy(ready->next->state,"Ready");}elsestrcpy(ready->state,"Run");pc=ready->breakp;}void processor(){ //模拟处理器指令执行if(strcmp(ready->name,"Producer")==0) //当前进程为生产者switch(pc){case 0://produceprintf("\t* 生产者生产了字符%c\n",str[sp]);rec_p[rp1]=str[sp];//添加到生产记录sp=(sp+1)%len;pc++;ready->breakp=pc; //保存断点break;case 1: //p(s1)pc++;p(1);break;case 2: //putbuffer[in]=rec_p[rp1]; //放到缓冲区printf("\t* %c字符成功入驻空缓存!\n",buffer[in]);rp1++;in=(in+1)%BUF;pc++;ready->breakp=pc; //保存断点break;case 3: //v(s2)pc++;printf("\t* 释放一个s2信号\n");v(2);break;case 4://goto01printf("\t* 生产进程goto 0 操作\n");pc=0;count--; //剩余字符个数减1printf("\t* 剩余字符count=%d个\n",count);ready->breakp=pc; //保存断点if(count<=0){ //生产结束printf("\t* 生产者结束生产!\n");strcpy(p1->state,"Stop");strcpy(p1->reason,"Null");ready->breakp=-1;ready=ready->next;//在就绪队列中去掉}}else //当前进程为消费者switch(pc){case 0: //p(s2)pc++;p(2);break;case 1: //getprintf("\t* 消费者取字符!\n");temp=buffer[out];out=(out+1)%BUF;pc++;ready->breakp=pc; //保存断点break;case 2: //v(s1)pc++;printf("\t* 释放一个s1\n");v(1);break;case 3: //consumeprintf("\t* 消费了字符%c\n",temp);rec_c[rp2]=temp;//添加到消费记录rp2++;con_cnt++;if(con_cnt>=len){strcpy(c1->state,"Stop");//完成态c1->breakp=-1;return;}pc++;ready->breakp=pc; //保存断点break;case 4: //goto0printf("\t* 消费进程goto 0 操作\n");pc=0;ready->breakp=pc; //保存断点}}void print(){int i,j;printf("--------生产者消费者模拟-------\n");printf("* 模拟过程的字符串为:\t");printf("%s\n",&str);printf("* 已生产:");for(j=0;j<=rp1;j++)printf("%c",rec_p[j]);printf("\n* 空缓存:");for(j=rp2;j<=rp1;j++)printf("%c",buffer[j]);printf("\n* 已消费:");for(j=0;j<=rp2;j++)printf("%c",rec_c[j]);printf("\n-------进程控制块的信息--------\n");printf("进程名\t\t状态\t等待原因\t断点\n");printf("%s\t%s\t%s\t\t%d\n\n",p1->name,p1->state,p1->reason, p1->breakp);printf("%s\t%s\t%s\t\t%d\n",c1->name,c1->state,c1->reason,c1 ->breakp);printf("-----------------------\n");printf("1.继续 0.退出\n");scanf("%d",&i);if(i==0){exit(0);}}主程序#include "a.h"#include "b.h"#include "c.h"void main(){printf("*生产者消费者模拟\n");printf("---------\n");printf("*请输入字符串:\n");scanf("%s",str); //string数组存放将要产生的字符len=strlen(str);count=len; //输入字符的个数init(); //初始化while(con_cnt<len) //消费完所有的字符为结束{system("cls"); //清屏操作printf("---------模拟指令流程--------\n");control(); //处理器调度程序processor(); //模拟处理器指令执行print(); //输出显示各个信息}printf("\n程序结束!\n"); }进程调度算法模拟进程管理是操作系统中的重要功能,用来创建进程、撤消进程、实现进程状态转换,它提供了在可运行的进程之间复用CPU的方法。

相关文档
最新文档