操作系统实验6
操作系统实验题
1、在操作系统中,进程与线程的主要区别是什么?A. 进程是资源分配的基本单位,线程是处理器调度的基本单位B. 进程和线程都是资源分配和处理器调度的基本单位C. 线程是资源分配的基本单位,进程是处理器调度的基本单位D. 进程和线程都不涉及资源分配问题(答案:A)2、以下哪种调度算法可能会导致饥饿问题?A. 先来先服务(FCFS)B. 短作业优先(SJF)C. 时间片轮转(Round Robin)D. 优先级调度(非抢占式)(答案:B)3、在操作系统的存储管理中,分段存储管理方式的主要目的是?A. 提高内存利用率B. 实现内存保护C. 方便用户编程D. 提高程序运行速度(答案:C)4、关于死锁,以下哪个说法是正确的?A. 死锁是指多个进程因竞争资源而无限期等待的现象B. 死锁只可能发生在多道批处理系统中C. 死锁发生时,系统中一定存在多个进程同时处于就绪状态D. 预防死锁的方法之一是破坏“请求和保持”条件,即要求进程一次性申请所有所需资源(答案:A,注:同时D也是预防死锁的一种方法,但题目要求选择正确说法,A更直接描述了死锁的定义)5、在操作系统的文件系统中,目录结构的主要作用是?A. 实现文件的按名存取B. 提高文件存储的效率C. 增强文件系统的安全性D. 便于用户对文件进行备份(答案:A)6、下列哪一项不是虚拟内存技术的优点?A. 扩大内存容量B. 提高内存利用率C. 简化内存管理D. 加快程序运行速度(在某些情况下可能因换页开销而减慢)(答案:D)7、在操作系统的设备管理中,缓冲区的设置主要是为了?A. 提高设备利用率B. 缓和CPU与I/O设备之间速度不匹配的矛盾C. 实现设备的即插即用D. 减少I/O操作的次数(答案:B)8、关于操作系统的中断机制,以下哪个说法是错误的?A. 中断是由硬件或软件发出的,用于请求CPU处理的事件B. 中断处理过程中,CPU会暂停当前程序的执行,转而执行中断处理程序C. 中断向量表是存储中断处理程序入口地址的表D. 在所有情况下,中断处理程序的执行优先级都高于当前正在运行的程序(答案:D,注:中断处理程序的优先级通常较高,但并非在所有情况下都绝对高于所有正在运行的程序,特别是在某些实时系统中可能有更复杂的优先级策略)。
《计算机操作系统》实验指导书
《计算机操作系统》实验指导书(适合于计算机科学与技术专业)湖南工业大学计算机与通信学院二O一四年十月前言计算机操作系统是计算机科学与技术专业的主要专业基础课程,其实践性、应用性很强。
实践教学环节是必不可少的一个重要环节。
计算机操作系统的实验目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握操作系统的基本原理,加深对操作系统基本方法的理解,加深对课堂知识的理解,为学生综合运用所学知识,在Linux环境下调用一些常用的函数编写功能较简单的程序来实现操作系统的基本方法、并在实践应用方面打下一定基础。
要求学生在实验指导教师的帮助下自行完成各个操作环节,并能实现且达到举一反三的目的,完成一个实验解决一类问题。
要求学生能够全面、深入理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题;对此能够较好地理解和掌握,并且能够进行简单分析和判断;能够熟练使用Linux用户界面;掌握操作系统中进程的概念和控制方法;了解进程的并发,进程之间的通信方式,了解虚拟存储管理的基本思想。
同时培养学生进行分析问题、解决问题的能力;培养学生完成实验分析、实验方法、实验操作与测试、实验过程的观察、理解和归纳能力。
为了收到良好的实验效果,编写了这本实验指导书。
在指导书中,每一个实验均按照该课程实验大纲的要求编写,力求紧扣理论知识点、突出设计方法、明确设计思路,通过多种形式完成实验任务,最终引导学生有目的、有方向地完成实验任务,得出实验结果。
任课教师在实验前对实验任务进行一定的分析和讲解,要求学生按照每一个实验的具体要求提前完成准备工作,如:查找资料、设计程序、完成程序、写出预习报告等,做到有准备地上机。
进行实验时,指导教师应检查学生的预习情况,并对调试过程给予积极指导。
实验完毕后,学生应根据实验数据及结果,完成实验报告,由学习委员统一收齐后交指导教师审阅评定。
实验成绩考核:实验成绩占计算机操作系统课程总评成绩的20%。
指导教师每次实验对学生进行出勤考核,对实验效果作记录,并及时批改实验报告,综合评定每一次的实验成绩,在学期终了以平均成绩作为该生的实验成绩。
操作系统实践实验报告模板
郑州轻工业学院实践报告姓名:院(系):专业:班级:学号:指导教师:成绩:时间:2014 年2 月至2014 年5 月目录一、实践目的 .............................................. 错误!未定义书签。
二、实践内容及步骤 .................................. 错误!未定义书签。
三、实践效果分析 ...................................... 错误!未定义书签。
四、小节(结合实际,谈谈认识)........... 错误!未定义书签。
一、实践目的为了增强我们队脚本语言的认识和了解。
熟练掌握脚本语言的特点和应用。
熟练掌握Dreamweaver编写代码的技巧,提高学生的动手能力。
二、实践内容及步骤1、内容:利用Dreamweaver平台编写js代码,制作一个简单的用户注册表单页。
2、步骤:根据需要设计表单,三、实验结果分析1、表单图例2、页面代码外链式js,调用函数邮箱js代码:输入邮箱时自动填充邮箱后缀,(如@)<script type="text/javascript"src="js/autoMail.js"></scrip> 地址js代码:<script type="text/javascript"src="js/Area.js"></script> 日期js代码:点击日期栏,会自动弹出日历表<script type="text/javascript"src="js/Calendar.js"></scrip>3、<html>4、<body>5、<h1align="center">请填写您的个人信息</h1>6、<div align="center"class="main">7、<form action="Student_register"method="post">8、<table class="table"cellspacing="8"9、<td>账户名称:</td>10、<td><input type="text"name="userName"style="height: 25"></input>11、</td>12、</tr>13、<tr>14、<td>用户密码:</td>15、<td><input type="password"name="userPassword"style="height: 25"></input></td>16、</tr><tr>17、<td>确认密码:</td><td><inputtype="password"name="userPasswordAgain"style="height: 25"></input>18、</td><td></td></tr><tr>19、<td>联系电话:</td>20、<td><input type="text"name="userPhone"style="height: 25"></input>21、</td></tr><tr>22、<td>用户年龄:</td>23、<td><input type="text"name="userAge"style="height: 25"></input>24、</td></tr><tr>25、<td>用户Email:</td>26、<td><input id="email"type="text"name="userEmail"style="height: 25"></input></td>27、</tr><tr>28、<td>用户性别:</td>29、<td> <input type="radio"name="userSex"30、id="userSex"value=""checked="checked"style="height: 25"/> 男31、 <input type="radio"name="userSex"id="userSex"32、value=""style="height: 25"/>女33、<td></td></tr><tr>34、<td>用户生日:</td>35、<td><input name="userBirthday"type="text"id="control_date"36、maxlength="10"onclick="newCalendar().show(this);"37、readonly="readonly"style="height:25"/>38、</td>39、</tr>40、<td>用户地址:</td>41、<td><div>42、<select id="s_province"name="s_province"charset="UTF-8"></select> 43、<select id="s_city"name="s_city"charset="UTF-8"></select> 44、<select id="s_county"name="s_county"charset="UTF-8"></select>45、<script class="resources library"src="js/area.js"type="text/javascript"></script><script type="text/javascript">_init_area();</script>46、</div></td>47、</tr>48、</table>49、<br></div>50、<div class="Button"align="center">51、<input style="font-size:20px" type="reset"value="清空">52、<input style="font-size:20px" type="submit"value="提交">53、</div>54、</form>55、<br></br>56、<div class="time"align="right">//获取当前时间57、<jsp:include page="Clock.jsp"></jsp:include>58、</div>59、</body>60、</html>四、小节通过这次独立完成作业,我对js有了更深的理解,明白的它对一个程序员来说是多么重要的,它能代表一个人外表和内心深处,js主要是给用户体现一个更清新、更美观的界面和更流畅的浏览效果。
《操作系统》课程实验内容和实验要求
实验内容和实验要求实验1:安装Linux系统(4学时)目的:1.学会在操作系统安装之前,根据硬件配置情况,制订安装计划。
2.学会在安装多操作系统前,利用硬盘分区工具(如PQMagic)为Linux准备分区。
3.学会Linux操作系统的安装步骤和简单配置方法。
4.学会Linux系统的启动、关闭步骤,初步熟悉Linux系统的用户界面。
内容:1.安装并使用硬盘分区工具(如PQMagic),为Linux准备好分区。
2.安装Linux系统(如红旗Linux桌面版)。
3.配置Linux系统运行环境。
4.正确地启动、关闭系统。
5.对图形界面进行一般操作。
要求:1.制订安装计划。
2.如果在机器上已安装了Windows系统,而且没有给Linux预备硬盘分区,则安装硬盘分区工具(如PQMagic),运行它,为Linux划分出一块“未分配”分区。
3.在光驱中放入Linux系统安装盘,启动系统。
按照屏幕提示,选择/输入相关参数,启动安装过程。
4.安装成功后,退出系统,取出安装盘。
重新开机,登录Linux系统。
5.对Linux系统进行配置,如显示设备、打印机等。
6.利用鼠标对图形界面进行操作。
说明:1.本实验应在教师的授权和指导下进行,不可擅自操作,否则可能造成原有系统被破坏。
2.如条件不允许每个学生亲自安装,可采用分组进行安装或课堂演示安装的方式。
实验2:Linux 应用及shell编程(4学时)目的:1.掌握Linux一般命令格式和常用命令。
2.学会使用vi编辑器建立、编辑文本文件。
3.了解shell的作用和主要分类。
4.学会bash脚本的建立和执行方式。
5.理解bash的基本语法。
6.学会编写简单的shell脚本。
内容:1.正确地登录和退出系统。
2.熟悉使用date,cal等常用命令。
3.进入和退出vi。
利用文本插入方式建立一个文件。
4.学会用gcc编译器编译C程序。
5.建立shell脚本并执行它。
6.学会使用shell变量和位置参数、环境变量。
操作系统实验
实验一:系统调用目的:深入理解操作系统是虚拟机实验方法:利用UNIX/LINUX所提供的系统调用来编写C语言程序,程序中要体现出一些典型的系统调用(函数)。
任务:编写一个C语言程序,该程序将一个存放了一系列整数的文本文件进行排序,每个整数占据文件的一行,排序的结果存放到一个新的文件之中。
源文件和目标文件的文件名字由命令行输入。
例如:假设可执行文件的文件名是sort,源文件与目标文件的名字分别是data 和newdata,那么命令行的情形为如下所示内容:./sort data newdata1、命令行参数的传递。
根据C语言编程规范的要求,传递命令行参数通过main函数进行。
main函数的原型是:main(int argc, char **args),其中argc是一个整数,表示命令行中参数的个数,第二个参数是字符串指针数组,这个数组中的第0个元素存放可执行文件名称,其余为参数,用args[1], args[2]... ...访问。
以上述命令行为例,argc为3,args[0]为“./sort”,args[1]为“data”,args[2]为“newdata”2、系统调用的使用(1)打开文件系统调用open在读写一个文件之前,必须打开这个文件,打开文件的过程主要是将文件的控制结构(LINUX中是i节点)调入内存。
本实验中用如下语句打开文件:fd = open(args[1], O_RDONL Y);第一个参数是打开的文件名,第二个参数O_RDONL Y表示只读,O_WRONL Y表示只写,O_RDWR表示读写,O_CREAT表示创建文件。
open系统调用返回一个整数作为文件描述符,以后用这个文件描述符来访问文件,如果因为某种原因(文件不存在,不符合访问权限,存储空间不足等)致使文件无法打开,则open返回-1。
(2)文件信息读取系统调用read本实验使用如下语句读取文件信息read(fd, &ch, 1)fd是open返回的文件描述符,ch为字符变量,1表示从文件中读取一个字节。
操作系统实验指导
操作系统实验指导操作系统是计算机科学中的重要课程之一,通过实验可以让学生更好地理解和掌握操作系统的原理和功能。
本文将为大家介绍一些操作系统实验的指导。
一、实验准备在进行操作系统实验之前,需要先进行一些实验准备工作。
首先,需要安装一个操作系统,一般选择Linux或Windows。
其次,需要安装一些实验所需的软件和工具,例如编译器、调试器等。
此外,还需要准备一些实验材料,如实验手册、实验报告模板等。
二、实验目标每个操作系统实验都应该有明确的实验目标。
实验目标可以根据学生的实际情况和课程要求进行设定。
例如,可以通过实验来掌握进程管理、文件系统、内存管理等操作系统相关知识。
同时,实验目标应该具有可衡量性,可以通过实验结果来评估学生的实验成果。
三、实验内容1.进程管理实验:通过编写一个简单的多进程程序,来了解进程的创建、调度和终止等过程。
2.文件系统实验:通过创建、读写和删除文件,来了解文件系统的组织结构和基本操作。
3.内存管理实验:通过编写一个简单的分页存储管理程序,来了解分页存储管理的原理和实现方法。
4.设备管理实验:通过模拟设备的申请、释放和使用过程,来了解设备管理的原理和调度算法。
四、实验步骤每个操作系统实验都有具体的实验步骤,学生需要按照这些步骤进行实验。
以下是一些常见的实验步骤:1.实验环境准备:包括安装操作系统、配置软件和工具等。
2.实验预备:包括阅读实验手册、了解实验目标和要求等。
3.实验设计:根据实验目标和要求,设计实验方案和实验程序。
4.实验实施:按照实验方案和实验程序,进行实验操作并记录实验数据。
5.实验分析:根据实验数据,进行分析和总结,并得出实验结论。
6.实验报告:根据实验分析和总结,编写实验报告并提交。
五、实验评估实验结果的评估可以根据实验目标和要求来确定。
例如,如果实验目标是了解进程管理,可以通过观察进程的创建和调度情况来评估学生的实验结果。
实验报告的评估可以根据实验报告的内容和结构来确定。
操作系统安装与配置实验报告
操作系统安装与配置实验报告实验目的:
1. 了解操作系统的安装过程。
2. 熟悉操作系统的基本配置。
实验内容:
1. 安装操作系统。
2. 进行基本配置。
3. 测试系统运行情况。
实验步骤:
1. 准备安装光盘或USB启动盘。
2. 将光盘或USB启动盘插入计算机,并启动计算机。
3. 按照提示选择安装语言和时区等信息。
4. 选择安装类型(新安装或升级)。
5. 选择安装目标磁盘。
6. 进行分区和格式化。
7. 完成安装并进行基本配置(设置用户名、密码、网络等)。
实验结果:
1. 成功安装操作系统。
2. 完成基本配置。
3. 系统能够正常运行。
实验总结:
通过本次实验,我了解了操作系统的安装过程和基本配置方法。
在实际操作中,我遇到了一些问题,比如分区和格式化时出现了错误提示,但通过查阅资料和询问同学,最终成功解决了这些问题。
通过这次实验,我对操作系统的安装和配置有了更深入的了解,也提高了自己的解决问题的能力。
希望在以后的实验中能够继续学习和提高。
操作系统实验报告1
《操作系统》实验报告实验序号:01 实验项目名称:操作系统环境学号1107xxx 姓名xxx 专业、班级软件工程1103 实验地点计—502 指导教师徐冬时间2013.9.23 实验目的1) 了解和学习Windows系统管理工具及其使用;2) 熟悉Windows系统工具的内容和应用;由此,进一步熟悉Windows操作系统的应用环境。
工具/准备工作在开始本实验之前,请回顾教科书的相关内容。
需要准备一台运行Windows 操作系统的计算机。
实验内容与步骤1. 计算机管理2. 事件查看器3. 性能监视4. 服务5. 数据库 (ODBC)为了帮助用户管理和监视系统,Windows提供了多种系统管理工具,其中最主要的有计算机管理、事件查看器和性能监视等。
如图2所示。
图2 基于虚拟机的操作系统计算环境管理步骤1:登录进入Windows。
步骤2:在“开始”菜单中单击“设置”-“控制面板”命令,双击“管理工具”图标。
在本地计算机“管理工具”组中,有哪些系统管理工具,基本功能是什么:1) Internet 信息服务;管理IIS,Internet 和Intranet站点的WEB服务器。
2) Server Extensions 管理器;Server Extensions管理器。
3)计算机管理;管理磁盘以及使用其他系统工具来管理本地或远程的计算机。
4)性能;显示系统性能图表以及配置数据日志和警报。
5)本地安全策略;查看和修改本地安全策略,如用户权限和审核策略。
6)事件查看器;显示来自于Windows和其他程序的监视与排错消息。
7)组件服务;配置和管理COM+应用程序。
1. 计算机管理使用“计算机管理”可通过一个合并的桌面工具来管理本地或远程计算机,它将几个Windows管理实用程序合并到一个控制台目录树中,使管理员可以轻松地访问特定计算机的管理属性和工具。
步骤3:在“管理工具”窗口中,双击“计算机管理”图标。
“计算机管理”使用的窗口与“Windows资源管理器”相似。
实验6 进程管理(答案)
实验四进程管理1.目的和要求(1)练习Linux进程管理命令(2)了解如何监视系统运行状态(3)掌握查看、删除进程的正确方法(4)掌握命令在后台运行的用法(5)掌握进程手工、调度启动的方法2.实验环境硬件:PC机软件:ubuntu操作系统、虚拟机3.实验步骤1)进入系统,用top命令察看当前系统的状态,并识别各进程的有关说明信息,给出相应截图和解释说明2)用ps命令察看系统当前的进程,并把系统当前的进程保存到文件process中。
ps aux>process 或者ps -ef3)查看当前进程树ps axf4)查看系统当前有没有init进程?用ps –aux|grep init查看5)找出bash进程的父进程是哪个进程。
6)杀死bash进程,发生了什么事?7)输入“cat <回车>”按<Ctrl>-z 键,出现什么情况?输入fg命令出现什么情况?按<Ctrl>-c 键,出现什么情况?按<Ctrl>-z 键转入后台运行,fg把后台命令移回前台按<Ctrl>-c 键终止命令8)输入“find / -name ls*>temp &”,该命令的功能是什么?再次查看该进程,有什么结果?接着输入killall find命令后,再查看该进程,有什么结果?查找所有硬盘中ls开头的文件,并把文件名定向到temp中9)在前台运行2个睡眠进程后,均挂起;列出所有正在运行的作业:jobs在前台运行睡眠进程sleep 100000使用Ctrl-z 挂起进程在前台运行睡眠进程sleep 200000使用Ctrl-z 挂起进程10)在前台运行1个vi进程后,挂起;ViCtrl-z11)在后台运行1个睡眠进程。
sleep 300000 &12)列出所有正在运行的作业,并查看进程PIDjobs -l13)将第二默认作业在后台继续运行。
查看当前作业情况。
操作系统实验,实验6软中断信号及处理
设置一个时间值(闹钟时间),在将来的某个时刻该时间值会被超过。 当所设置的时间值被超过后,产生SIGALRM信号 如果不忽略或不捕捉此信号,则其默认动作是终止该进程 每个进程只能有一个闹钟时间。如果在调用alarm时,以前已为该进 程设置过闹钟时间,而且它还没有超时,则该闹钟时间的余留值作 为本次alarm函数调用的值返回。以前登记的闹钟时间则被新值代换
#include<unistd.h> #include<signal.h>
void handler() { printf("hello\n");} int main() { int i; signal(SIGALRM,handler); alarm(5); for(i=1;i<7;i++){ printf("sleep %d ...\n",i); sleep(1); } }
else { /*父进程*/ sleep(3); kill(pid,SIGKILL); /*向子进程发送SIGKILL信号*/ printf("parent send signal to kill child!\n"); waitpid(pid,NULL,0); /*等待pid退出*/ printf("child process exit!\n"); exit(0); } }
信号事件的发生有两个来源
硬件来源,比如我们按下了键盘或者其它
硬件故障 软件来源,最常用发送信号的系统函数是 kill, raise, alarm和setitimer以及sigqueue 函数,软件来源还包括一些非法运算等操 作
Linux中有30个软中断信号和31个实时
软中断信号
计算机操作系统实验报告答案
《操作系统》实验报告专业年级:姓名:学号:提交日期:实验一:操作系统环境1.1 Windows 2000 系统管理(实验估计时间:60分钟)实验内容与步骤1、计算机管理2、事件查看器3、性能监视4、服务5、数据库(ODBC)为了帮助用户管理和监视系统,Windows 2000提供了多种系统管理工具,其中最主要的有计算机管理、事件查看器和性能监视等。
步骤1:登录进入Windows 2000 Professional。
步骤2:在“开始”菜单中单击“设置”-“控制面板”命令,双击“管理工具”图标。
在本地计算机“管理工具”组中,有哪些系统管理工具,基本功能是什么:1) 本地安全策略:查看和修改本地安全策略,如用户权限和审核策略。
2) 服务:启动和停止服务。
3) 计算机管理器:管理磁盘以及使用其他系统工具来管理本地或远程的计算机。
4) 事件查看器:显示来自于 Windows 和其他程序的监视与排错消息。
5) 数据源:添加、删除、以及配置 ODBC 数据源和驱动程序。
6) 性能:显示系统性能图表以及配置数据日志和警报。
7) 组件服务:配置和管理 COM+ 应用程序。
1. 计算机管理使用“计算机管理”可通过一个合并的桌面工具来管理本地或远程计算机,它将几个Windows 2000管理实用程序合并到一个控制台目录树中,使管理员可以轻松地访问特定计算机的管理属性和工具。
步骤3:在“管理工具”窗口中,双击“计算机管理”图标。
“计算机管理”使用的窗口与“Windows资源管理器”相似。
在用于导航和工具选择的控制台目录树中有“系统工具”、“存储”及“服务和应用程序”等节点,窗口右侧“名称”窗格中显示了工具的名称、类型或可用的子工具等。
它们是:1)系统工具,填入表2-3中。
表2-3 实验记录2) 存储,填入表2-4中。
3) 服务和应用程序,填入表2-5中。
2. 事件查看器事件查看器不但可以记录各种应用程序错误、损坏的文件、丢失的数据以及其他问题,而且还可以把系统和网络的问题作为事件记录下来。
操作系统实验
操作系统实验报告(一)Linux基本操作与编程(验证性 2学时)1、实验目(de):1)熟悉Linux操作系统(de)环境和使用.2)了解LINUX系统(de)安装过程.(注:表示可选择)3)掌握Linux环境下(de)命令操作.2、实验内容:(1)完成LINUX系统(de)登录,启动终端.进行下列操作并记录结果(要求:结果以屏幕截图表示).1)运行pwd命令,确定你当前(de)工作目录.2)利用以下命令显示当前工作目录(de)内容: ls –l3)运行以下命令: ls –al4)使用mkdir命令建立一个子目录subdir.5)使用cd命令,将工作目录改到根目录(/)上.6)使用ls-l命令列出/dev(de)内容.7)使用不带参数(de)命令cd改变目录,然后用pwd命令确定你当前(de)工作目录是哪里8)使用命令cd ../..,你将工作目录移到什么地方(2)在LINUX下查看你(de)文件.1)利用cd命令,将工作目录改到你(de)主目录上.2)将工作目录改到你(de)子目录subdir,然后运行命令: date > file1 将当前日期和时间存放到新建文件file1中.3)使用cat命令查看file1文件(de)内容.4)利用man命令显示date命令(de)用法: man date5)将date命令(de)用法附加到文件file1(de)后面:man date >> file16)利用cat命令显示文件file1(de)内容.7)利用ls -l file1命令列出文件file1(de)较详细(de)信息.运行ls -l/bin 命令显示目录(de)内容.8)利用ls -l/bin|more命令行分屏显示/bin目录(de)内容.9)利用cp file1 fa命令生成文件file1(de)副本.然后利用ls -l命令查看工作目录(de)内容.10)用cd命令返回你(de)主目录,输入命令ls –l后,解释屏幕显示(de)第一列内容(de)含义.(3)编写能输出“Hello world”问候语(de)C程序,并在终端中编译、执行.要求记录所使用(de)命令及结果.操作步骤:1)在文本编辑器中,编写C程序如下:include ""main(){ printf("hello"); }2) 在终端中,用gcc命令进行编译,生成可执行文件a.gcc –o a3) 在终端中执行a (de)命令如下:./a(4)编写一个程序:显示信息“Time for Play”,并能在后台运行一段时间(自定义)后,弹出信息提醒用户.要求记录所使用(de)命令及结果.(提示:使用sleep(s)函数)3、实验结果分析:(对上述实验内容中(de)各题结果,进行分析讨论.并回答下列问题)(1)进程包括哪些特征间断性, 失去封闭性, 不可再现性, 动态性, 并发性, 独立性(2)在Linux中,如何设置前、后台命令和程序(de)执行命令后直接加 & ,这个命令就在后台执行;正在运行(de)命令,使用Ctrl+z ,就挂起; jobs命令,可以现实后台,包括挂起(de)命令;使用 bg %作业号就可以把挂起(de)命令在后台执行;使用 fg %作业号就可以把后台命令调到前台(3)你所使用(de)Linux系统(de)内核版本是多少用什么命令查看内核版本目前你所了解(de)各发行版本(de)情况如何Linux version (gcc version (Red Hat (GCC) ) 1 SMP Tue Jan 2911:48:01 EST 2013(4)你对Linux系统有什么认识linux是一款开放性(de)操作系统,也可以说成是开放(de)源代码系统,这些代码可以完全自由(de)修改可以再任何(de)计算机上去运行它,也就是“可移植性”,其次大家都知道,linux是由UNIX(de)概念所开发出来(de),所以它也继承了UNIX(de)稳定和效率(de)特点4、总结:你对本次实验有什么体会或看法.操作系统实验报告(二)文件访问权限设置与输入输出重定向(2学时)一、实验目(de)1、掌握linux(de)文件访问权限设置.2、熟悉输入输出重定向和管道操作.二、实验内容1、启动进入红帽linux系统2、设置文件权限:在用户主目录下创建目录test,进入test目录,用vi 创建文件file1,并输入任意(de)文字内容.用ls -l显示文件信息,注意文件(de)权限和所属用户和组.对文件file1设置权限,使其他用户可以对此文件进行写操作:chmod o+w file1.用ls -l查看设置结果.取消同组用户对此文件(de)读取权限:chmod g-r file1.查看设置结果.用数字形式来为文件file1设置权限,所有者可读、可写、可执行;其他用户和所属组用户只有读和执行(de)权限:chmod 755 file1.设置完成后查看设置结果.3、输入、输出重定向和管道(1) 输出重定向用ls命令显示当前目录中(de)文件列表:ls –l.使用输出重定向,把ls命令在终端上显示(de)当前目录中(de)文件列表重定向到文件list中:ls –l > list.查看文件list中(de)内容,注意在列表中会多出一个文件list,其长度为0. 这说明shell是首先创建了一个空文件,然后再运行ls命令:cat list.再次使用输出重定向,把ls命令在终端上显示(de)当前目录中(de)文件列表重定向到文件list中.这次使用追加符号>>进行重定向:ls –l >> list.查看文件list(de)内容,可以看到用>>进行重定向是把新(de)输出内容附加在文件(de)末尾,注意其中两行list文件(de)信息中文件大小(de)区别:cat list.重复命令ls –l > list.再次查看文件list中(de)内容,和前两次(de)结果相比较,注意list文件大小和创建时间(de)区别.(2) 管道who |grep root命令(de)结果是命令ls –l |wc –l结果是4、退出linux系统操作步骤:在主菜单上选择“注销” ->关闭计算机.三、实验结果与讨论(根据实验结果回答下列问题)1. 文件(de)权限如下:-rw-r—r-- 1 root root 19274 Jul 14 11:00回答:-rw-r—r-- (de)含义是什么答:是LINUX/FTP(de)简易权限表示法:对应于本用户-所在组-其他人(de)权限,每一个用执行(x)-读取(r)-写入(w)如本题若是说自己可以读取写入不可以执行,所在组和其他人只能读取.2、文件(de)所有者添加执行权限(de)命令是答:chmod u+x 、赋予所有用户读和写文件权限(de)命令是四、答:chmod a+w,a+r 个人体会(你对本次实验有什么体会或看法)操作系统实验报告(三)文件和目录管理一、实验目(de)1) 掌握在Linux系统下(de)文件和文件系统(de)概念及命令;2) 掌握Linux系统下(de)目录操作.二、实验内容1. 进入linux终端后,用命令(de)操作结果回答下列问题:1)vi(de)三种工作模式是其中不能进行直接转换(de)是什么模式到什么模式命令模式、文本输入模式、末行模式命令模式不能直接到末行模式2)在vi中退出时,保存并退出(de)操作步骤是Ese:wq3)用vi 创建myfile1文件,并在其中输入任意文字一行,创建myfile2文件,任意输入文字3行.请问执行命令:cat <myfile1 >myfile2 后,myfile2中还有几行内容该命令(de)作用是用命令操作验证你(de)回答.myfile2中还有1行内容该命令(de)作用是替换myfile(de)内容4)请用至少两种不同(de)命令创建一个文本文件(),在其中写入“我是2014级学生,我正在使用Linux系统.”,记录命令及执行结果.1、Vi创建2、5)用___pwd________命令可查看所创建文件(de)绝对路径,写出它(de)绝对路径__/root_________;用___ls -l________命令查看该文件(de)类型及访问权限,其访问权限(数字和字母)分别是多少__-rw- r- - r- - 6 4 4______________.6)若将该文件(de)访问权限修改为:所有者有读写权限;其他用户只读;同组用户可读写,请写出命令,并记录结果.7)查找my开头(de)所有文件,可___find my_________命令,写出命令并记录结果8)在/home下创建子目录user,并在其中创建2个文件,名为file1和file2,file1(de)内容是/root目录(de)详细信息;file2(de)内容任意,最后将这两个文件合并为file3文件,请先写出命令序列,并在终端中验证,记录结果.2. 文件及目录操作,写出操作所使用(de)命令,并记录结果.在终端中完成下列命令操作,并记录结果在root用户主目录下创建一个mydir子目录和一个myfile文件,再在mydir下建立d1和d2两个子目录.查看mydir和myfile(de)默认权限查看当前myfile和mydir(de)权限值是多少将myfile文件分别复制到root 和dd1(de)主目录中将root主目录中(de)myfile改为yourfile通过从键盘产生一个新文件并输入I am a student查找文件是否包含student字符串三、实验结果与分析,回答下列问题:1、能够创建文件(de)命令有哪些vi 和cat>name2、能够查看当前目录(de)绝对路径(de)命令是pwd3、Linux中按用户属性将用户分成哪些类型根据文件(de)访问权限,用户又被分成哪些类型能够查看文件访问权限(de)命令是用户同组其他可读可写可执行 cat f1四、小结(本次实验(de)体会或小结)操作系统实验报告(四)作业调度算法模拟(验证性2学时)1、实验目(de):1)掌握作业调度(de)主要功能及算法.2)通过模拟作业调度算法(de)设计加深对作业管理基本原理(de)理解.3)熟悉Linux环境下应用程序(de)编程方法.2、实验内容:(1)作业调度算法(FCFS)编程模拟:编制一段程序,对所输入(de)若干作业,输入、输出数据样例如下表所示.按FCFS算法模拟调度,观察、记录并分析调度(de)输出结果情况.输入输出样例1:FCFS算法include <>include <>define SIZE 5struct Job_type{char no[2]; o,&job[i].tb,&job[i].tr);printf("输入作业顺序:\n");for(i=0;i<SIZE;i++)printf("\t%s\t%d\t%d\n",job[i].no,job[i].tb,job[i].tr);}void fcfs(){ int i,j,t=0,tw=0,tt=0;for(i=0;i<SIZE-1;i++)for(j=i+1;j<SIZE;j++)if(job[i].tb>job[j].tb){x=job[i];job[i]=job[j];job[j]=x;}printf("FCFS调度结果:\n");printf("开始时间作业号到达时间运行时间完成时间等待时间周转时间\n");for(i=0;i<SIZE;i++){printf(" %d",t);t=t+job[i].tr;tw=t-job[i].tb-job[i].tr; b; o,job[i].tb,job[i].tr,t,tw,tt);}}void main(){load();fcfs();}(2)作业调度算法(SJF)编程模拟:编程实现由短作业优先算法,分别用下面两组输入、输出数据样例进行模拟,观察分析运行结果.输入输出样例2:SJF算法输入输出A 0 4B 0 3C 0 5D 0 2E 0 1A 0 6 10 10B 0 3 6 6C 0 10 15 15D 0 1 3 3E 0 0 1 1include <>include <>define SIZE 5struct Job_type{char no[2]; o,&job[i].tb,&job[i].tr);printf("输入作业顺序:\n");for(i=0;i<SIZE;i++)printf("\t%s\t%d\t%d\n",job[i].no,job[i].tb,job[i].tr);}void sjf()n=i; pl[i].pfn=ERR;}for(i=1;i<total;i++){ pfc[i-1].next=&pfc[i];pfc[i-1].pfn=i-1;}pfc[total-1].next=NULL;pfc[total-1].pfn=total-1;freepf_head=&pfc[0];}void FIFO(int total){ int i,j;pfc_type p,t;initialize(total);busypf_head=busypf_tail=NULL;for(i=0;i<page_len;i++){if(pl[page[i]].pfn==ERR){ diseffect+=1;if(freepf_head==NULL){p=busypf_head->next;pl[busypf_head->pn].pfn=ERR; freepf_head=busypf_head;freepf_head->next=NULL;busypf_head=p;}p=freepf_head->next;freepf_head->next=NULL;freepf_head->pn=page[i];pl[page[i]].pfn=freepf_head->pfn;if(busypf_tail==NULL)busypf_head=busypf_tail=freepf_head; else{ busypf_tail->next=freepf_head;busypf_tail=freepf_head;}freepf_head=p;}}printf("FIFO:%d",diseffect);}main(){ int i; int k;printf(“请输入页(de)引用序列:\n”); for(k=0;k<page_len;k++)scanf("%d",&page[k]);for(i=4;i<=7;i++){printf("%2d page frames ",i);FIFO(i);}参考程序LRU算法,略三、实验结果分析:(对上述实验各题所使用(de)原始数据、调试数据与状态(包括出错)及最终结果进行记录并分析.)随着块数(de)增加,缺页数目也减少,4个实验中3个实验(de)块数增加到了5以后,即使块数再增加,缺页数目也是保持不变.只有实验4,块数增加到7以后,缺页数目又再次减少了四、总结:你对本次实验有什么体会或看法.。
操作系统6自测
提示:1分(m)等于60秒(s),1秒等于1000毫秒(ms)。
选择一项:
A. 2ms
B. 20ms
C. 1ms
D. 3ms
19.下列关于磁盘的描述中,正确的是( D )。
选择一项:
A. 磁盘的动作不局限于机械运动,可以无限快
B. 当关掉电源后,磁盘存储的内容丢失
C. 磁盘属于字符设备
设置缓冲区的原则是:如果数据到达率与离去率相差很大,则可采用单缓冲方式;如果信息的输入和输出速率相同(或相差不大)时,则可用双缓冲区;对于阵发性的输入、输出,可以设立多个缓冲区。
8.处理I/O请求的主要步骤是什么?
答案:处理I/O请求的主要步骤是:用户进程发出I/O请求;系统接受这个I/O请求,转去执行操作系统的核心程序;设备驱动程序具体完成I/O操作;I/O完成后,系统进行I/O中断处理,然后用户进程重新开始执行。
三、简答题
1.操作系统中设备管理的功能是什么?
答案:操作系统中设备管理的功能是:监视设备状态;进行设备分配;完成I/O操作;缓冲管理与地址转换。
2.UNIX/Linux系统中主次设备号各表示什么含义?
答案:UNIX/Linux系统中主设备号表示设备类型,次设备号表示同类设备中的相对序号。
一、单项选择题
1.下列设备中,不属于独占设备的是(A )。
选择一项:
A. 磁盘
B. 磁带
C. 打印机
D. 终端
2.过硬件和软件的功能扩充,把原来独占的设备改造成为能为若干用户共享的设备,这种设备称为( A )设备。
选择一项:
A. 虚拟
B. 存储
C. 共享
D. 块
实验windows系统的操作实验报告
实验windows系统的操作实验报告
《实验报告:Windows系统的操作实验》
实验目的:通过操作Windows系统,熟悉系统界面和常用功能,掌握基本操作技能。
实验步骤:
1. 开机启动Windows系统,进入桌面界面。
2. 熟悉桌面上的各个图标和任务栏的功能,包括开始菜单、文件资源管理器、控制面板等。
3. 打开文件资源管理器,浏览系统中的文件和文件夹,了解文件的存储路径和属性。
4. 进入控制面板,了解系统设置和管理工具,如网络和Internet设置、用户账户管理等。
5. 打开浏览器,访问网页并了解浏览器的基本操作,如打开新标签页、书签管理、下载文件等。
6. 进行文件操作实验,包括新建文件夹、复制、剪切、粘贴文件等操作。
7. 学习系统设置实验,如更改桌面背景、调整分辨率、设置屏幕保护程序等。
8. 了解系统更新和安全设置,如Windows更新、防病毒软件的安装和更新等。
实验总结:
通过本次实验,我对Windows系统的操作有了更深入的了解,掌握了系统的基本操作技能。
我熟悉了系统界面和常用功能,能够自如地进行文件操作、系统设置和网络浏览等操作。
同时,我也意识到系统的安全设置和更新是非常重要的,需要及时更新系统和安装防病毒软件,以保护系统和个人信息的安全。
在今后的学习和工作中,我将继续加强对Windows系统的操作和管理,不断提升自己的技能水平,为更高效地使用计算机系统做好准备。
同时,我也会关注
系统的安全和稳定性,保护好自己的计算机和数据,避免不必要的风险和损失。
操作系统实验报告
技术资料常州大学操作系统课程实验报告姓名 xxx专业班级计算机科学与技术学号 xxxxxx指导老师 xxx成绩实验时间2012年4月23日——2012年5月7日实验一 Windows XP 系统管理一实验目的1) 了解和学习Windows系统管理工具及其使用;2) 熟悉Windows系统工具的内容和应用;3)熟悉Windows操作系统的应用环境。
二实验环境需要准备一台运行Windows XP操作系统的计算机。
三背景知识Windows XP的“管理工具”中集成了许多系统管理工具,利用这些工具,管理员可以方便地实现各种系统维护和管理功能。
这些工具都集中在“控制面板”的“管理工具”选项下,用户和管理员可以很容易地对它们操作和使用。
在默认情况下,只有一些常用工具——如服务、计算机管理、事件查看器、数据源 (ODBC) 、性能和组件服务等——随Windows XP 系统的安装而安装。
四实验内容与步骤为了帮助用户管理和监视系统,Windows XP提供了多种系统管理工具,其中最主要的有计算机管理、事件查看器和性能监视等。
步骤1:登录进入Windows XP。
步骤2:在“开始”菜单中单击“设置”-“控制面板”命令,双击“管理工具”图标。
在本地计算机“管理工具”组中,有哪些系统管理工具,基本功能是什么:1) 本地安全策略:查看和修改本地安全策略,如用户权限和审核策略2) Internet信息服务:管理 IIS,Internet 和 Intranet 站点的 WEB服务器3) 服务:启动和停止服务4)计算机管理:管理磁盘以及使用其他系统工具来管理本地或远程的计算机5)事件查看器:显示来自于 Windows 和其他程序的监视与排错消息6)数据源ODBC:添加、删除、以及配置 ODBC 数据源和驱动程序7)性能:显示系统性能图表以及配置数据日志和警报8)组件服务:配置和管理 COM+ 应用程序1. 计算机管理使用“计算机管理”可通过一个合并的桌面工具来管理本地或远程计算机,它将几个Windows XP管理实用程序合并到一个控制台目录树中,使管理员可以轻松地访问特定计算机的管理属性和工具。
大学计算机实验6 实验报告
大学计算机实验6 实验报告一、实验目的本次大学计算机实验 6 的目的在于深入了解和掌握计算机系统中的某些关键技术和应用,通过实际操作和实践,提高我们对计算机知识的理解和应用能力,培养我们解决实际问题的思维和方法。
二、实验环境本次实验在学校的计算机实验室进行,使用的计算机配置为_____,操作系统为_____,安装了所需的实验软件,包括_____等。
三、实验内容(一)操作系统的基本操作1、文件和文件夹的管理熟练掌握了文件和文件夹的创建、复制、移动、删除、重命名等操作。
通过实际操作,了解了文件和文件夹的属性设置,如只读、隐藏等,以及如何查找和筛选特定的文件和文件夹。
2、任务管理器的使用学会了使用任务管理器查看系统中正在运行的进程、CPU 和内存的使用情况。
能够通过任务管理器结束无响应的进程,优化系统资源的分配。
(二)办公软件的应用1、 Word 文档的编辑使用 Word 进行了文档的排版,包括字体、字号、颜色、段落格式的设置。
学会了插入图片、表格、页眉页脚等元素,以及如何进行文档的页面设置和打印预览。
2、 Excel 数据处理在 Excel 中,掌握了数据的输入、编辑和格式化。
学会了使用函数和公式进行数据的计算和统计,如求和、平均值、最大值、最小值等。
还掌握了数据的排序、筛选和图表的创建,能够将数据以直观的方式呈现出来。
(三)网络应用1、浏览器的使用熟悉了常用浏览器的操作,如网页的浏览、书签的添加和管理、历史记录的查看等。
学会了设置浏览器的主页、隐私和安全选项。
2、电子邮件的收发通过实验,掌握了电子邮箱的注册和设置,能够熟练地发送和接收电子邮件,包括添加附件、设置邮件格式和优先级等。
(四)多媒体软件的使用1、图片处理软件使用图片处理软件对图片进行了裁剪、调整大小、色彩调整、添加文字和特效等操作,提高了图片的质量和美观度。
2、音频和视频播放软件学会了使用音频和视频播放软件播放各种格式的文件,掌握了播放控制、音量调节、画面调整等基本操作。
操作系统 实验
实验一Windows进程观测一、实验目的通过对Windows编程,进一步熟悉操作系统的基本概念,较好地理解Windows的结构。
1-1运行结果(如果运行不成功,则可能的原因是什么?) :_________________1-2运行结果:____:__________在网络百度到解决方法:Windows项目要使用Windows子系统, 而不是Console, 可以这样设置:[Project] --> [Settings] --> 选择"Link"属性页,在Project Options中将/subsystem:console改成/subsystem:windows1-3运行结果:__________________1-4运行结果:__二实验心得:(1)通过实验我知道了操作系统是用来控制及指挥电脑系统运作的软件程序。
操作系统管理和控制系统资源。
计算机的硬件、软件、数据等都需要操作系统的管理。
操作系统通过许多的数据结构,对系统的信息进行记录,根据不同的系统要求,对系统数据进行修改,达到对资源进行控制的目的。
(2)windows进程的组成:a一个私有的虚拟地址空间b一个可执行程序c一个已经打开句柄的列表d一个被称为访问令牌的安全区e一个被称为进程id的唯一标识实验二 Windows进程控制一、实验目的1) 通过创建进程、观察正在运行的进程和终止进程的程序设计和调试操作,进一步熟悉操作系统的进程概念,理解Windows进程的“一生”。
2) 通过阅读和分析实验程序,学习创建进程、观察进程和终止进程的程序设计方法。
请回答:Windows所创建的每个进程都是以调用_____ CreateProcess()_____API函数开始和以调用_____ ExitProcess()______ 或___ TerminateProcess()___API函数终止。
2-1步骤5:编译完成后,单击“Build”菜单中的“Build 2-1.exe”命令,建立2-1.exe可执行文件。
操作系统安全实验报告
《操作系统安全》实验一……Windows系统安全设置实验一、实验目的1、了解Windows操作系统的安全性2、熟悉Windows操作系统的安全设置3、熟悉MBSA的使用二、实验要求1、根据实验中的安全设置要求,详细观察并记录设置前后系统的变化,给出分析报告。
2、采用MBSA测试系统的安全性,并分析原因。
3、比较Windows系统的安全设置和Linux系统安全设置的异同。
三、实验内容1、配置本地安全设置,完成以下内容:(1)账户策略:包括密码策略(最小密码长度、密码最长存留期、密码最短存留期、强制密码历史等)和账户锁定策略(锁定阈值、锁定时间、锁定计数等)(2)账户和口令的安全设置:检查和删除不必要的账户(User用户、Duplicate User用户、测试用户、共享用户等)、禁用guest账户、禁止枚举帐号、创建两个管理员帐号、创建陷阱用户(用户名为Administrator、权限设置为最低)、不让系统显示上次登录的用户名。
(3)设置审核策略:审核策略更改、审核账户登录事件、审核账户管理、审核登录事件、审核特权使用等(4)设置IP安全策略(5)其他设置:公钥策略、软件限制策略等2、Windows 系统注册表的配置(1)找到用户安全设置的键值、SAM 设置的键值(2)修改注册表:禁止建立空连接、禁止管理共享、关闭139端口、防范SYN 攻击、减少syn-ack 包的响应时间、预防DoS 攻击、防止ICMP 重定向报文攻击、不支持IGMP 协议、禁止死网关监控技术、修改MAC 地址等操作。
建立空连接:“Local_Machine\System\CurrentControlSet\Control\ LSA-RestrictAnonymous”的值改成“1”即可。
禁止管理共享:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters项对于服务器,添加键值“AutoShareServer”,类型为“REG_DWORD”,值为“0”。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 一、实验目的
– 掌握共享存储区的进程通信方法
• 二、实验内容
– 使用shmget()函数创建共享存储区 – 使用shmat()函数将一个共享区附接到进程虚地 址空间 – 使用shmctl()函数对共享区进行读写操作。 – 编制一长度为1k的共享存储区发送和接收的程 序
实验指导
实验指导
3、shmdt( ) 把一个共享存储区从指定进程的虚地址空间断开。 系统调用格式: shmdt(addr) 该函数使用头文件如下: #include<sys/types.h> #include<sys/ipc.h> #include<sys/shm.h> 参数定义 int shmdt(addr); char addr;
其中,addr是要断开连接的虚地址,亦即以前由连接的系统调用 shmat( )所返回的虚地址。调用成功时,返回0值,调用不成功,返回-1 。
实验指导
4、shmctl( ) 共享存储区的控制,对其状态信息进行读取和修改。 系统调用格式: shmctl(shmid,cmd,buf) 该函数使用头文件如下: #include<sys/types.h> #include<sys/ipc.h> #include<sys/shm.h> 参数定义 int shmctl(shmid,cmd,buf); int shmid,cmd; struct shmid_ds *buf; 其中,buf是用户缓冲区地址,cmd是操作命令。命令可分为多种类型: (1)用于查询有关共享存储区的情况。如其长度、当前连接的进程数、共享区的 创建者标识符等; (2)用于设置或改变共享存储区的属性。如共享存储区的许可权、当前连接的进 程计数等; (3)对共享存储区的加锁和解锁命令; (4)删除共享存储区标识符等。 上述的查询是将shmid所指示的数据结构中的有关成员,放入所指示的缓冲区中; 而设置是用由buf所指示的缓冲区内容来设置由shmid所指示的数据结构中的相应成员
实验指导 – 图示列出二个进程通过共享一个共享存储区 来进行通信的例子。其中,进程A将建立的 共享存储区附接到自己的AA’区域,进程B将 它附接到自己的BB’区域。
用于实现通 信的共享存储区和对共享存储区进行操作的 手段,然而并未提供对该区进行互斥访问及 进程同步的措施
void server() { shmid=shmget(SHMKEY,1024,0777|IPC_CREAT); /*创建共享存储区*/ addr=shmat(shmid,0,0); /*获取首地址*/ do { *addr=-1; while (*addr==-1); printf("(server) received\n"); }while (*addr); shmctl(shmid,IPC_RMID,0); /*撤消共享存储区,归还资源*/ exit(0); } main() { while ((i=fork())==-1); if (!i) server(); while ((i=fork())==-1); if (!i) client(); wait(0); wait(0); exit(0); }
程序说明
• 1、为了便于操作和观察结果,用一个程序作为“引子“,先后fork() 两个子进程,server和client,进行通信。 • 2、server端建立一个key为75的共享区,并将第一个字节置为-1,作为 数据空的标志。等待其他进程发来的消息。当该字节的值发生变化时 ,表示收到了信息,进行处理。然后再次把它的值设为-1,如果遇到 的值为0,则视为为结束信号,取消该队列,并退出server。server每 接收到一次数据后显示“(server)received”。 • 3、client端建立一个key为75的共享区,当共享取得第一个字节为-1时 ,server端空闲,可发送请求。client随即填入9到0。期间等待 server 端的再次空闲。进行完这些操作后,client退出。client每发送一次数 据后显示“(client)sent”。 • 4、父进程在server和client均退出后结束。
实验指导
附: 操作允许权 用户可读 用户可写 小组可读 小组可写 其它可读 其它可写 八进制数 00400 00200 00040 00020 00004 00002
控制命令 值 IPC_CREAT 0001000 IPC_EXCL 0002000 例:shmid=shmget(key,size,(IPC_CREAT|0400)) 创建一个关键字为key,长度为size的共享存储区
思考题
1、比较两种消息通信机制中数据传输的时间 由于两种机制实现的机理和用处都不一样,难以直接进行 时间上的比较。如果比较其性能,应更加全面的分析。 (1)消息队列的建立比共享区的设立消耗的资源少。前者只是 一个软件上设定的问题,后者需要对硬件的操作,实现内存的 映像,当然控制起来比前者复杂。如果每次都重新进行队列或 共享的建立,共享区的设立没有什么优势。 (2)当消息队列和共享区建立好后,共享区的数据传输,受到 了系统硬件的支持,不耗费多余的资源;而消息传递,由软件 进行控制和实现,需要消耗一定的cpu的资源。从这个意义上 讲,共享区更适合频繁和大量的数据传输。 (3)消息的传递,自身就带有同步的控制。当等到消息的时候, 进程进入睡眠状态,不再消耗cpu资源。而共享队列如果不借 助其他机制进行同步,接收数据的一方必须进行不断的查询, 白白浪费了大量的cpu资源。可见,消息方式的使用更加灵活。
实验指导
2、shmat( ) 共享存储区的附接。从逻辑上将一个共享存储区附接到进程的虚拟地址空间上。 系统调用格式: virtaddr=shmat(shmid,addr,flag) 该函数使用头文件如下: #include<sys/types.h> #include<sys/ipc.h> #include<sys/shm.h> 参数定义 char *shmat(shmid,addr,flag); int shmid,flag; char * addr; 其中,shmid是共享存储区的标识符; addr是用户给定的,将共享存储区附接到进程的虚地址空间; flag规定共享存储区的读、写权限,以及系统是否应对用户规定的地址做舍入 操作。其值为SHM_RDONLY时,表示只能读;其值为0时,表示可读、可写;其值 为SHM_RND(取整)时,表示操作系统在必要时舍去这个地址。 该系统调用的返回值是共享存储区所附接到的进程虚地址viraddr。
参考程序
#include <sys/types.h> #include <sys/shm.h> #include <sys/ipc.h> #define SHMKEY 75 int shmid,i; int *addr; void client() { int i; shmid=shmget(SHMKEY,1024,0777); /*打开共享存储区*/ addr=shmat(shmid,0,0); /*获得共享存储区首地址*/ for (i=9;i>=0;i--) { while (*addr!=-1); printf("(client) sent\n"); *addr=i; } exit(0); }
运行结果 和预想的完全一样。但在运行过程中,发现每当client发 送一次数据后,server要等待大约0.1秒才有响应。同样,之 后client又需要等待大约0.1秒才发送下一个数据。 程序分析 出现上述应答延迟的现象是程序设计的问题。当client端 发送了数据后,并没有任何措施通知server端数据已经发出, 需要由client的查询才能感知。此时,client端并没有放弃系 统的控制权,仍然占用CPU的时间片。只有当系统进行调度 时,切换到了server进程,再进行应答。这个问题,也同样 存在于server端到client的应答过程中。
• 当用户需要使用该机制时,必须自己设置同 步和互斥措施才能保证实现正确的通信
实验指导
• 涉及的系统调用
1、shmget( ) 创建、获得一个共享存储区。 系统调用格式: shmid=shmget(key,size,flag) 该函数使用头文件如下: #include<sys/types.h> #include<sys/ipc.h> #include<sys/shm.h> 参数定义 int shmget(key,size,flag); key_t key; int size,flag; 其中,key是共享存储区的名字;size是其大小(以字节计); flag是用户设置的标志,如IPC_CREAT。IPC_CREAT表示若系 统中尚无指名的共享存储区,则由核心建立一个共享存储区; 若系统中已有共享存储区,便忽略IPC_CREAT。
• 共享存储区
– 共享存储区(Share Memory)是UNIX系统中通信速度最高的一种 通信机制。该机制可使若干进程共享主存中的某一个区域,且使 该区域出现(映射)在多个进程的虚地址空间中。 – 一个进程的虚地址空间中又可连接多个共享存储区,每个共享存 储区都有自己的名字 – 当进程间欲利用共享存储区进行通信时,必须先在主存中建立一 共享存储区,然后将它附接到自己的虚地址空间上 – 此后,进程对该区的访问操作,与对其虚地址空间的其它部分的 操作完全相同。 – 进程之间可通过对共享存储区中数据的读、写来进行直接通信