操作系统实习指导书.docx

上传人:b****3 文档编号:4918025 上传时间:2022-12-11 格式:DOCX 页数:20 大小:384.41KB
下载 相关 举报
操作系统实习指导书.docx_第1页
第1页 / 共20页
操作系统实习指导书.docx_第2页
第2页 / 共20页
操作系统实习指导书.docx_第3页
第3页 / 共20页
操作系统实习指导书.docx_第4页
第4页 / 共20页
操作系统实习指导书.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

操作系统实习指导书.docx

《操作系统实习指导书.docx》由会员分享,可在线阅读,更多相关《操作系统实习指导书.docx(20页珍藏版)》请在冰豆网上搜索。

操作系统实习指导书.docx

操作系统实习指导书

 

计算机应用专业

 

《操作系统实习》指导书

 

桂林理工大学信息科学与工程学院

2012年12月

《操作系统》实习教学大纲

系(院)

信息学院

课程编号

417670

进行学期

5

学时(周)数

2

学分数

2

实习类别

生产实习

面向专业

适合计算机应用(应用本科)

实习地点

室内/野外

教一楼计算中心实验室

室内

备注

生产实习是计算机专业教学计划中十分重要的实践性教学环节,是对学生进行专业基本训练,培养实践动手能力和向实践学习,理论联系实际的重要课程。

认真抓好生产实习的教学工作,提高专业实习教学质量,是提高学生理论水平和实际动手能力非常关键的一环。

一、实习的目的、性质和意义

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

操作系统对计算机系统资源实施管理,是所有其它软件与计算机硬件的唯一接口,所有用户在使用计算机时都要得到操作系统提供的服务。

《操作系统生产实习》是《操作系统》理论课的必要补充,是复习和检验前期所学课程的重要手段,也是为毕业设计做必要的准备。

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

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

二、实习要求

学生应严格按照实习要求,有步骤地进行实习,认真完成实习的每一个环节。

通过本次实习,使学生掌握操作系统的基本概念、设计原理及实施技术,理解操作系统的组成和主要功能的实现。

具体要求如下:

1.通过学习,帮助学生进一步消化和加深理论知识,进一步培养学生综合运用理论知识的能力和实际工作能力。

2.学生必须独立收集相关资料,认真完成各实习内容,按时提交一份规范的实习报告。

3.根据实际情况,基于Linux或windows操作系统,利用VC、VB、java或C等编程语言解决一个实际应用问题。

三、实习内容

操作系统是一门理论性和实践性都很强的课程。

要学好操作系统的设计原理,除了听课、看书、做习题外,最好的方法就是在实践中进行,包括使用操作系统、阅读和分析已有操作系统的源代码、自己设计小型系统/模块或模拟算法三个部分。

详细内容参见实习指导书。

四、实习完成形式

完成要求的实验,独立编写实习报告。

五、实习进度安排

实习时间为2周,安排如下:

1.实习动员、开发系统介绍、开发技术介绍。

(时间安排为一天)

2.Linux操作系统的使用。

(时间安排为半天)

3.Linux操作系统源代码分析.(一天半)

4.根据所选系统要求,提出系统设计方案和测试程序设计方案。

(时间安排为一天)

5.完成系统设计(时间安排为四天)

6.教师考评程序。

(时间安排为一天半)

7.提交设计报告(时间安排为半天)

六、成绩考核与评定方法

⑴、实习大纲和实习计划安排的各项内容必须单独进行考核,按优、良、中、及格、不及格等五级分制评定成绩。

⑵、学生必须完成全部实习任务,写出实习报告,遵守实习期间的纪律。

实习指导教师根据学生实习中的表现态度及完成实习笔记和实习报告的情况,按五级分制,给出每个学生的实习成绩,并写出简短的评语。

⑶、学生实习成绩的评定,指导教师必须拟定一个评分标准,以便能够充分反应每个学生成绩。

实际动手能力、实习报告各占成绩的50%,实习成绩为“优秀”的比例不得大于参加实习总人数的20%。

七、指导书或参考资料

自编《操作系统实习》指导书

《操作系统》实习指导书

一、实习目的

操作系统对计算机系统资源实施管理,是所有其它软件与计算机硬件的唯一接口,所有用户在使用计算机时都要得到操作系统提供的服务。

通过本次实习,使学生掌握操作系统的基本概念、设计原理及实施技术,理解操作系统的组成和主要功能的实现。

二、实习性质

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

《操作系统生产实习》是《操作系统》理论课的必要补充,是复习和检验前期所学课程的重要手段,也是为毕业设计做必要的准备。

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

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

根据实际情况,本次实习中的开发环境为:

基于Linux或windows操作系统,可使用VC、VB、java或C等编程语言解决一个实际应用问题。

三、实习内容(选题范围及要求):

1、操作系统基本操作。

要求:

熟练掌握LINUX下常用命令、使用编辑器vi编辑文件、添加新用户、修改文件属性。

2、源代码分析

要求:

通过LINUX有关源代码的分析,进一步了解操作系统的设计思想。

3、操作系统功能模拟程序的开发。

要求:

利用所学的编程知识,在理解操作系统设计的相关原理基础上,设计一个模拟其功能的小程序,可以让其他人清楚地看到演示的过程和结果。

四、进度安排

实习时间:

二周。

地点:

信息学院计算机机房。

具体安排:

1.实习动员、开发系统介绍、开发技术介绍。

(一天)

2.Linux操作系统的使用。

(时间安排为半天)

3.Linux操作系统源代码分析.(一天半)

4.根据所选系统要求,提出系统设计方案和测试程序设计方案。

(一天)

5.完成系统设计(时间安排为四天)

6.教师考评程序。

(时间安排为一天半)

7.提交设计报告(时间安排为半天)

五、报告书写要求:

1、分析设计要求,给出解决方案(要说明设计实现所用的原理,采用的数据结构)

2、画出程序的基本结构框图和流程图

3、对程序的每一部分要有详细的设计分析说明,

4、程序执行的每个步骤要有具体的提示内容或输出

5、源代码格式规范,注释不少于三分之一

6、设计合适的测试用例,对得到的运行结果要有分析,

7、设计中遇到的问题,设计的心得体会

8、提交完整程序代码、课程设计报告及相关文档

9、参考资料

六、成绩评定标准

根据学生设计的方案、最终程序结果的演示、实习报告、实习出勤情况等来评定成绩,考核成绩分为优、良、中、及格和不及格五个等级。

评分原则如下:

1问题描述10%没有有,但不完整基本正确描述正确描述准确

2解决方案10%没有有,但不完整基本可行方案良好很有说服力

3解决方案的流程图、主要算法的描述与具体实现的说明20%没有有,但不完整基本正确,但不够清晰正确,清晰正确,清晰,且让人感觉良好

4具体的解决实例40%没有有,但不完整基本完整完整让人感觉有价值,并可以实际演示。

5程序界面15%很差一般的命令行界面很好的命令行界面一般的图形界面很好的图形界面非常友好的图形界面

6其他5%包括是否按时完成,报告格式,字迹、语言等等

第一部分操作系统上机指导

Linux操作系统环境:

一、登录到系统

 

 

 

 

二、常用命令练习:

用root账号(超级用户)注册,口令为*****(注意大小写)。

注册成功出现#号(超级用户系统提示符,普通用户的系统提示符为$)。

1.注销(退出)系统:

logout或exit

2.练习使用命令ls(注意Linux命令区分大小写。

使用ls查看当前目录内容;使用ls查看指定目录内容,如/目录,/etc目录

使用ls–all查看当前目录内容;使用dir查看当前目录内容

3.使用cd改变当前目录:

cd..回到上层目录;cd/回到根目录

4.pwd显示当前路径

5.建立目录:

mkdir目录名;mkdir/home/s2001/newdir

6.删除目录:

rmdir;

7.复制文件cp:

如cp文件名1文件名2

8.移动文件或目录:

mv

9.删除文件rm

10.显示文件内容:

more(分页显示);

11.显示文件:

cat文件名建立文件:

cat>文件名,ctrl+d结束输入

三、使用编辑器vi编辑文件

1.进入linux的文本模式之后,在命令行键入vifilename.c然后回车。

下面作一些简单的解释:

首先vi命令是打开vi编辑器。

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

2.最基本的命令I:

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

如下图所示:

3.a与i是相同的用法

4.当文件编辑完后,需要保存退出,这时需要经过以下几个步骤:

1)按一下键盘上的Esc键;2)键入冒号(:

),紧跟在冒号后面是wq(意思是保存并退出)。

如果不想保存退出,则在第二步键入冒号之后,键入!

q。

如下图所示:

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

编译的命令是:

gccfilename.c[-ooutputfilename],其中gcc是c的编译器。

参数:

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

如果不选,默认的输出文件是a.out,选了之后输出文件就是outputfilename.out.

6.最后一步是运行程序,方法如下:

./outputfilename.out

四、添加新用户、修改文件属性

1.添加新用户(在root下,按默认值回答)

adduser用户名;如addusers2001;以新用户登录到系统

2.修改用户口令passwd

3.控制文件属性

使用ls–l查看文件属性

 

Unix文件目录的属性显示格式:

如:

-rw-rw-rw-1steveusers138Apr519:

34readme

drwxrwxrwx3steveusers80Apr519:

43dir1

 

 

4.改变用户的所有权:

chown用户名文件名

5.改变文件权限:

chmodg+w文件名;chmodo-r文件名

或使用数字方式修改:

如chmod644文件名;chmod755文件名

三种权限:

ownergroupothers.u(user用户),g(group组),o(other其他);w写访问权限,r读访问权限,x执行权限

6.查看相关命令的帮助:

man命令名

7.显示当前系统中已注册的用户信息:

who

8.显示当前注册的用户信息:

whoami

第二部分操作系统源代码分析

(Linux进程管理程序分析)

一.目的

1.了解Linux源代码的分布;

2.了解阅读Linux源代码的一般方法;

3.熟悉Linux管理进程用的主要数据结构;

4.通过阅读Linux进程调度有关函数的源代码,理解Linux的进程调度算法及其实现所用的主要数据结构。

5.通过查阅参考书或者上网找资料,熟悉/usr/src/linux(注意:

这里最后一级目录名可能是个含具体内核版本号和“linux”字符串的名字)下各子目录的内容,即所含Linux源代码的情况。

二.内容(三个选一个)

1.阅读Linux的fork.c源文件,分析进程的创建过程。

2.在概览Linux启动和初始化部分源代码基础上,分析Linux进程调度有关函数的源代码,主要是schedule()函数和goodness()函数,并且要对它们引用的头文件等一并分析。

3.阅读Linux系统的msg.c、sem.c和shm.c等源码文件,熟悉Linux三种进程通信机制。

第三部分操作系统原理演示系统的开发(任选一个)

要求:

编程模拟实现操作系统某些功能模块。

设计一:

进程调度

  设计目的:

    

  进程管理是操作系统中的重要功能,用来创建进程、撤消进程、实现进程状态转换,它提供了在可运行的进程之间复用CPU的方法。

在进程管理中,进程调度是核心,因为在采用多道程序设计的系统中,往往有若干个进程同时处于就绪状态,当就绪进程个数大于处理器数目时,就必须依照某种策略决定哪些进程优先占用处理器。

本实验模拟在单处理器情况下的进程调度,目的是加深对进程调度工作的理解,掌握不同调度算法的优缺点。

设计题目:

设计一个按先来先服务,算法时间片轮转法,优先数调度算法实现处理器调度的程序。

        

设计二:

进程同步

  设计目的:

  理解临界区和进程互斥的概念,掌握用信号量和PV操作实现进程互斥的方法。

  设计题目:

 

  在windows或者linux环境下编写应用程序,该程序运行时能创建N个线程,其中既有读者线程又有写者线程,它们按照事先设计好的测试数据进行读写操作。

用信号量和PV操作实现读者/写者问题。

设计三:

死锁

  设计目的:

        

  死锁是进程并发执行过程中可能出现的现象,哲学家就餐问题是描述死锁的经典例子。

为了防止死锁,可以采用资源预分配法或者资源按序分配法。

资源预分配法是指进程在运行前一次性地向系统申请它所需要的全部资源,如果系统当前不能够满足进程的全部资源请求,则不分配资源,此进程暂不投入运行,如果系统当前能够满足进程的全部资源请求,则一次性地将所申请的资源全部分配给申请进程。

资源按序分配法是指事先将所有资源类全排序,即赋予每一个资源类一个唯一的整数,规定进程必需按照资源编号由小到大的次序申请资源。

  设计题目:

模拟有五个哲学家的哲学家进餐问题。

设计四:

页面置换

设计目的:

加深对请求页式存储管理实现原理的理解,掌握页面置换算法。

设计要求:

 1.用户可以为程序指定内存块数

2.用户可以自由设置程序的页面访问顺序

3.用户可在OPT、FIFO和LRU算法选择一个,并能观看到页面置换过程。

设计五:

磁盘调度管理

设计目的:

加深对请求磁盘调度管理实现原理的理解,掌握磁盘调度算法。

设计要求:

1.用户可以为程序指定初始需要访问序列;

2.实现最短寻道和电梯调度两种调度算法;

3.根据用户的选择输出实际的访问序列;

设计六:

文件系统模拟设计

设计目的:

通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能及内部实现。

设计要求:

为linux系统设计一个简单的二级文件系统。

要求做到以下几点:

(1)可以实现下列几条命令(至少4条);

dir列文件目录

create创建文件

delete删除文件

open打开文件

close关闭文件

read读文件

write写文件

(2)列目录时要列出文件名、物理地址、保护码和文件长度;

(3)源文件可以进行读写保护。

提示:

(1)首先应确定文件系统的数据结构:

主目录、子目录及活动文件等。

主目录和子目录都以文件的形式存放于磁盘,这样便于查找和修改。

(2)用户创建的文件,可以编号存储于磁盘上。

如file0,file1,file2...并以编号作为物理地址,在目录中进行登记。

设计七:

其它题目

同学自己提出,由教师确认的题目。

要求:

1与操作系统理论紧密相连;

2可以用程序比较简单地实现;

3可以让其他人清楚地看到演示的过程和结果;

附录:

演示系统示例

实习报告书写参考-----银行家算法的实现

一、设计目的:

熟悉银行家算法,理解系统产生死锁的原因及避免死锁的方法,加深记忆。

二、设计内容

  设计一个n个并发进程共享m个系统资源的系统。

进程可动态申请资源和释放资源,系统按各进程的申请动态的分配资源。

要求采用银行家算法实现。

三、开发环境

windows环境,VC6.0平台。

四、分析设计

<一>实验原理

银行家算法是从当前状态出发,逐个按安全序列检查各客户中谁能完成其工作,然后假定其完成工作且归还全部贷款,再进而检查下一个能完成工作的客户。

如果所有客户都能完成工作,则找到一个安全序列,银行家才是安全的。

与预防死锁的几种方法相比较,限制条件少,资源利用程度提高了。

缺点:

该算法要求客户数保持固定不变,这在多道程序系统中是难以做到的;该算法保证所有客户在有限的时间内得到满足,但实时客户要求快速响应,所以要考虑这个因素;由于要寻找一个安全序列,实际上增加了系统的开销.

Bankeralgorithm最重要的一点是:

保证操作系统的安全状态!

这也是操作系统判断是否分配给一个进程资源的标准!

那什么是安全状态?

举个小例子,进程P需要申请8个资源(假设都是一样的),已经申请了5个资源,还差3个资源。

若这个时候操作系统还剩下2个资源。

很显然,这个时候操作系统无论如何都不能再分配资源给进程P了,因为即使全部给了他也不够,还很可能会造成死锁。

若这个时候操作系统还有3个资源,无论P这一次申请几个资源,操作系统都可以满足他,因为操作系统可以保证P不死锁,只要他不把剩余的资源分配给别人,进程P就一定能顺利完成任务。

 为什么银行家算法是可行的呢?

这里需要严格的证明一下。

不管任何时候,操作系统分配资源的时候都可以保证当前接受资源的进程不会陷入死锁,因为操作系统总是可以满足该进程需要的资源的。

假设有n个进程{p1,p2,p3,…pn},最后一个分配到资源的是pi,pi还需要mi个资源,假设此时操作系统还有m个资源剩余。

那么很显然m>=mi!

而且如果之后操作系统又把资源分配给其他进程了,假设是pj,pj还需要mj个资源,同理可知m>=mj!

也就是说在所有的进程中,还需要的资源数总是有小于m的!

这样就可以保证资源数永远不会为0,即使可能暂时性为0。

另外,还需要保证资源数不会减少!

而且,所有已经分配到资源的进程总有一天会归还它所拥有的资源!

根据操作系统再分配的时候的状态即可判定。

<二>程序结构

当进程pi提出资源申请时,系统执行下列步骤:

(1)若Request[i]≤Need[i],转

(2);否则错误返回

(2)若Request[i]≤Available,转(3);否则进程等待

(3)假设系统分配了资源,则有:

Available:

=Available-Request[i];

Allocation[i]:

=Allocation[i]+Request[i];

Need[i]:

=Need[i]-Request[i]

若系统新状态是安全的,则分配完成若系统新状态是不安全的,则恢复原状态,进程等待

模拟实现Dijkstra的银行家算法以避免死锁的出现.分两部分组成:

第一部分:

银行家算法(扫描)

1.如果Request<=Need,则转向2;否则,出错

2.如果Request<=Available,则转向3,否则等待

3.系统试探分配请求的资源给进程

4.系统执行安全性算法

第二部分:

安全性算法

1.设置两个向量

(1).工作向量:

Work=Available(表示系统可提供给进程继续运行所需要的各类资源数目)

(2).Finish:

表示系统是否有足够资源分配给进程(True:

有;False:

没有).初始化为False

2.若Finish[i]=False&&Need<=Work,则执行3;否则执行4(I为资源类别)

3.进程P获得第i类资源,则顺利执行直至完成!

并释放资源:

Work=Work+Allocation; Finish[i]=true;转2

4. 若所有进程的Finish[i]=true,则表示系统安全;否则,不安全!

<三>数据结构:

假设有M个进程N类资源,则有如下数据结构:

MAX[M*N]M个进程对N类资源的最大需求量

AVAILABLE[N]系统可用资源数

ALLOCATION[M*N]M个进程已经得到N类资源的资源量

NEED[M*N]M个进程还需要N类资源的资源量

<四>程序流程图:

五.运行示例及结果分析

  T0时刻可用资源(Available)A:

3,B:

3,C:

2

 请求分配时间:

14:

07:

29

 经测试,可为该进程分配资源。

以下为资源分配表

资源 WorkNeedAllocationWork+AllocFinish

ID  A B C  A B C A B C  A B C

P01  030302  010202  020000  050302  TRUE

P03  050302  000101  020101  070403  TRUE

P00  070403  070403  000100  070503  TRUE

P02  070503  060000  030002  100505  TRUE

P04  100505  040301  000002  100507  TRUE

进程1申请资源A:

2,B:

1,C:

1时的安全性检查

请求分配时间:

14:

07:

39

进程请求的资源比Need多!

!

不能为该进程分配资源!

系统在T0(Request)时刻是不安全的!

!

 

—-尝试进行另外一个分配—-

进程1申请资源A:

1,B:

0,C:

2时的安全性检查

请求分配时间:

14:

07:

55

经测试,可为该进程分配资源。

以下为资源分配表

资源  Work    Need   AllocationWork+Alloc  Finish

ID  A B C  A B C  A B C  A B C

P01  020300  000200  030002  050302  TRUE

P03  050302  000101  020101  070403  TRUE

P00  070403  070403  000100  070503  TRUE

P02  070503  060000  030002  100505  TRUE

P04  100505  040301  000002  100507  TRUE

进程4申请资源A:

3,B:

3,C:

0时的安全性检查

请求分配时间:

14:

09:

14

进程请求的资源比Avaliable(WORK)多!

!

不能为该进程分配资源!

系统在T0(Request)时刻是不安全的!

!

 

—-尝试进行另外一个分配—-

进程0申请资源A:

0,B:

2,C:

0时的安全性检查

请求分配时间:

14:

09:

23

系统进入不安全状态!

不能为该进程分配资源!

系统在T0(Request)时刻是不安全的!

!

 

—-尝试进行另外一个分配—-

进程1申请资源A:

0,B:

0,C:

0时的安全性检查

请求分配时间:

14:

09:

3

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1