黑龙江大学“操作系统课程设计”读书工程报告

黑龙江大学“操作系统课程设计”读书工程报告
黑龙江大学“操作系统课程设计”读书工程报告

黑龙江大学

“操作系统课程设计”读书工程报告

一、基本理论阐述

1.死锁的概念:系统中多个进程因素因竞争资源而产生的僵死状态,若无外力推动进程将无法继续执行。

2.死锁的根本原因;对资源的竞争;进程推进的顺序不当。

3.死锁产生的必要条件

互斥条件在某一段时间里,某资源被一个进程所占有,不能为别的进程使用;请求并保持(不释放)进程每次申请它所需要的一部分资源。在等待新资源的同时,进程继续占用已分配到的资源;

非剥夺条件进程所获得的资源在为使用完之前,不能被其他进程强行夺走,即只能由获得该资源的进程自己来释放;

环路条件存在一种进程资源的循环等待链,链中的每一个进程已获得资源的同时被链中下一个进程所请求。

4.死锁的预防

①破坏“互斥条件”。由于资源特性所限,一般情况下这个条件是无法摒弃的,但对于某些互斥共享的设备,如打印机,则可以通过Spooling技术来摒弃互斥条件。

②破坏“请求与保持条件”。可以采用资源静态分配法,即对资源采用一次性分配策略,但会导致资源利用率的下降。

③破坏“非剥夺条件”。可以采用剥夺策略,但涉及到对资源现场的恢复问题,需付出高昂代价。因此,一般只适用于处理机和存储器资源,不适宜对其他资源使用该方法。

④破坏“环路等待条件”。可以采用资源顺序分配法,但实际情况是:资源编号增加的顺序与实际使用资源的顺序不一致,从而可能导致提早分配资源而导致资源长期不用的现象,使资源利用律下降。

通过精心分配资源,可以动态回避死锁;即通过执行一种算法,在分配过程中预测出死锁发生的可能性并加以避免。死锁避免算法的实质是防止系统进入不安全状态。常用的是银行家算法。但执行这种测试需要的开销较大。

5.进程:是操作系统中最基本、最重要的概念,但直到目前还没有一个统一的定义,下面通过能反映进程实质的几点描述来认识进程:

①进程是程序的一次执行;

②进程是可以和别的计算并发执行的计算;

③进程是程序在一个数据集合上运行的过程,是系统进行资源分配和调度的一个独立单位;

④进程是一个具有一定功能的程序关于某个数据集合的一次运行活动。

进程具有几个基本的特征:动态性、并发性、独立性、异步性;每个进程通常由程序段、数据段和进程控制块三部分组成,其中进程控制块能唯一标识一个进程。进程执行时间的间断性,决定了进程可能具有多种状态。事实上,运行中的进程至少具有以下三种基本状态:

就绪状态:进程已获得除处理机以外的所有资源,一旦分到了处理机就可以立即执行,这时进程所处的状态为就绪状态;

执行状态:又称运行状态。当一个进程获得必要的资源,并占有处理机,即在处理机上运行,此时进程所处的状态为执行状态;

阻塞状态:又称等待状态,正在执行的进程,由于发生了某事件而暂时无法

执行下去(如等待输入/输出完成),此时进程所处的状态称为阻塞状态。

进程并非固定处于某一状态,它随着自身的推进和外界条件的变化而发生变化。

6.银行家算法:银行家算法是一种有代表性的避免死锁的算法。在避免死请资源,但系统在进行资源分配之前,应先计算此次分配资源的安全性,若分配不会导致系统进入不安全状态,则分配,否则等待。为实现银行家算法,系统必须设置若干数据结构。要解释银行家算法,必须先解释操作系统安全状态和不安全状态。安全序列是指一个进程序列{P1,…,Pn}是安全的,即对于每一个进程Pi(1≤i≤n),它以后尚需要的资源量不超过系统当前剩余资源量与所有进程Pj (j < i )当前占有资源量之和。

7.银行家算法原理:我们可以把操作系统看作是银行家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统请求分配资源相当于用户向银行家贷款。为保证资金的安全,银行家规定:当一个顾客对资金的最大需求量不超过银行家现有的资金时就可接纳该顾客;顾客可以分期贷款,但贷款的总数不能超过最大需求量;当银行家现有的资金不能满足顾客尚需的贷款数额时,对顾客的贷款可推迟支付,但总能使顾客在有限的时间里得到贷款;当顾客得到所需的全部资金后,一定能在有限的时间里归还所有的资金。操作系统按照银行家制定的规则为进程分配资源,当进程首次申请资源时,要测试该进程对资源的最大需求量,如果系统现存的资源可以满足它的最大需求量则按当前的申请量分配资源,否则就推迟分配。当进程在执行中继续申请资源时,先测试该进程本次申请的资源数是否超过了该资源所剩余的总量。若超过则拒绝分配资源,若能满足则按当前的申请量分配资源,否则也要推迟分配。

二、当前应用现状

操作系统是一管理电脑硬件与软件资源的程序,同时也是计算机系统的内核与基石。操作系统身负诸如管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等基本事务。管理计算机系统的全部硬件资源包括软件资源及数据资源;控制程序运行;改善人机界面;为其它应用软件提供支持等,使计算机系统所有资源最大限度地发挥作用,为用户提供方便的、有效的、友善的服务界面。操作系统的管理控制程序,大致包括 5 个方面的管理功能:进程与处理机管理、作业管理、存储管理、设备管理、文件管理。目前微机上常见的操作系统有DOS、OS/2、UNIX、XENIX、LINUX、Windows、Netware 等。但所有的操作系统具有并发性、共享性、虚拟性和不确定性四个基本特征。根据应用领域来划分,可分为桌面操作系统、服务器操作系统、主机操作系统、嵌入式操作系统。

1.、操作系统的发展

①手工操作阶段。在这个阶段的计算机,主要元器件是电子管,运算速度慢,没有任何软件,更没有操作系统。用户直接使用机器语言编写程序,上机时完全手工操作,首先将预先准备好的程序纸带装入输入机,然后启动输入机把程序和数据送入计算机,接着通过开关启动程序运行,计算完成后,打印机输出结果。

②批处理阶段

③多道程序系统阶段

④现代操作系统阶段

2.计算机操作系统的发展现状

Windows 是一款流行的操作系统,在全球桌面系统市场占有90%左右的份额,同时在中低端服务器市场也有广泛的应用,如web 服务器和数据库服务器。Windows 作为一个现代操作系统,无论在技术方面,还是在市场方面,都是成功的。

Unix 操作系统具有统一开放的事实标准和认证规范。该规范使不同unix 操作系统上开发的应用程序可以轻松移植,极大地促进了unix 的发展和应用。Unix 已经成为大型机、服务器以及工作站的主要操作系统。Linux 作为unix 技术的继承者,日益得到越来越多的服务器设备、数据库和中间件等软件厂商的支持,并对商业版unix 系统构成很强的威胁。开源软件模式及其实现的价值越来越得到社会的认可。以开源linux 等为代表的类unix 操作系统在不断地侵蚀unix 的市场空间。

Linux 操作系统

无论从硬件还是从软件来讲,linux 都已经是个成熟的操作系统。免费与开源的特性使得linux 对windows 的威胁也越来越大。在服务器和嵌入式系统市场上,linux 已经是主流的操作系统之一。Linux 现在正在稳步拓展桌面操作系统市场随着linux 的流行,越来越多的厂商开始爱其销售的计算机上预装linux。

3.处理死锁的方法

两相封锁法(Two Phase Lock)通过防止并发操作间的冲突达到事务处理之间的同步。在读出数据项x之前,事务处理必须要对x拥有读封锁。在对数据项x写入之前,事务处理必须要对x拥有写封锁。拥有读封锁和写封锁要遵照两条管理规则:第一、二个事务处理不能同时对于同一个数据项拥有相互冲突的封锁。第二,在一个事务释放了对某一个数据项的封锁拥有权以后,就不得再申请要求得到对任何数据项的封锁拥有权。

上述对封锁拥有权的规定使得每个事务处理都以两相方式获得封锁的拥有权。在增加封锁拥有权的阶段,事务处理不能释放对任何数据项的封锁拥有权、而只可以不断申请获得新的数据项的封锁拥有权。在一旦释放了对某一数据项的封锁拥有权以后,事务处理进入压缩封锁拥有权的阶段。在这个阶段中。事务处理只能不断释放它的封锁拥有权而不得再申请对任何数据项的封锁拥有权。在事务处理结束(或夭折)时,将自动释放全部封锁。

两相封锁法有一种特殊情况,在事务处理的主体部分执行以前,就申请拥有该事务处理所需要的全部封锁拥有权,通常称这种特殊情况为“事先要求”。显然,事先要求算法有二个缺点:第一,过早地对数据项拥有封锁权将会限制系统可能达到的并发程度。第二,对程序设计者提出了事先列出本事务所需要的全部的封锁权要求,增加了程序设计者的负担。

用两相封锁法处理读写(写写)冲突操作时,它实现了非循环的rwr(ww)关系,保证了一组事务处理过程的可串行化。串行执行的顺序由事务处理获得封锁拥有权的先后次序而定。在增长阶段结束时,获得了所需要的全部封锁有权以后,称为达到了该事务处理的封锁点。令E表示采用两相封锁法作为同步机构时,各事务处理的执行顺序,令E’表示每个事务处理在它的封锁点一次申请拥有全部所需封锁拥有权的情况下的执行顺序。在这两种情况下所作出的rwr及ww 关系是相同的,因而这二者的执行顺序也是一致的。

基本型两相封锁法

两相封锁法的实现机构是一个调度程序,当事务处理对数据项发出读写请求时,调度程序按两相封锁法所描述的规定对数据项进行封锁和解锁操作。

在分布式系统中,在每一个DM上有一调度程序,管理该DM所管辖的数据库中的数据项。当DM接收到对数据项x的读出(写入)请求时,调度程序自动地为该数据项申请读(写)封锁。如果这时该数据项已被其它操作封锁,则把申请封锁操作置于该数据项的封锁等待队列中。在写入操作完成以后,调度程序自动释放写封锁,释放读封锁需要专用的释放操作,它可以和写入操作同时发出。写入操作标志着压缩阶段的开始。当某一事务处理释放了它的读写封锁后;以先进先出的方式处理在等待队列上的其他事务处理的读写封锁的请求。在数据项有多个副本的情况下,假设逻辑数据项x有副本x1, x2, …, xn,对于读操作,事务处理可以读任何一个副本,因此只需要获得它实际执行读操作的那个副本上的读封锁。对于写操作,需要修改数据项的所有副本,必须要获得所有副本上的写封锁。

②主副本型的两相封锁法

本方法专用于处理逻辑数据项有多个副本的情况,每个逻辑数据项的一份副本被指定为主副本,事务处理在访问逻辑数据项的任何副本以前,必须在主副本上获得所需的封锁。

对于读封锁,本方法比基本型的两相封锁法有更多的通信开销,当事务处埋希望读出的副本不是主副本时,它必须与二个DM通信。一个是存放主副本的DM,另一个是要读出的副本所在的DM,而在基本型两相封锁法中,只要和要读出的副本所在的DM通信。当事务处理所在的TM与要读出的副本所在的DM在同一个计算机结点时,增加的开销是很大的。对于写封锁,主副本型两封相锁法比基本型的封锁开销要少。在基本型算法中,事务处理要向具有副本的所有结点发出封写锁请求,而在主副本型算法中,只要向主副本所在结点发出请求。

③投票表决型两相封锁法

投票表决型两相封锁法也是用于多副本的系统中的一种同步算法。当事务T 要对x发出写入请求时,把请求发往持有x的副本的所有DM,DM检查本数据库中x的副本情况,如果x已被封锁,则发回“封锁受到阻塞”的信号;如果x 没有被封锁,则对x加锁,并发回“封锁已设置”信号,事务T对“封锁已设置”的响应信号计数,当数量过半,则认为全部封锁均已设置,如数量不足半数,它将等待发出“封锁受到阻塞”的DM在x被解锁以后发回“封锁已设置”的信号。只要不出现死锁,它最终将收到足够的“封锁已设置”信号而继续工作。

④集中型两相封锁法

集中型两相封锁法把管理数据项封锁的调度程序全部集中在一个结点上,在读写任何结点上的数据以前,必须从中心结点的调度程序获得相应的封锁。这个算法非常相似于主副本型的两相封锁法,相当于把所有数据项的主副本都集中在中心结点上,故很容易在中心结点构成通信和封锁操作的瓶颈。它的主要优点是简单。

三、对银行家算法部分的体会

通过此次的实验,让我知道了应付死锁最好的方法——银行家算法。更让我知道了银行家算法的实现过程。

1.银行家算法

(1)如果Requesti<or =Need,则转向步骤(2);否则,认为出错,因为它所需要的资源数已超过它所宣布的最大值。

(2)如果Request<or=Available,则转向步骤(3);否则,表示系统中尚无足够的资源,进程必须等待。

(3)系统试探把要求的资源分配给进程Pi,并修改下面数据结构中的数值: Available=Available-Request[i];

Allocation=Allocation+Request;

Need=Need-Request;

(4)系统执行安全性算法,检查此次资源分配后,系统是否处于安全状态。

2.安全性算法

系统所执行的安全性算法可描述如下:

⑴设置两个向量

工作向量Work,它表示系统可以提供给进程继续运行所需的各类资源数目,它含有m个元素,在执行安全算法开始时,Work:=Available。

Finish,它表示系统是否有足够的资源分配给进程,使之运行完成。开始时先做Finish[i]:=FALSE;当有足够资源分配给进程时,再令Finish[i]:=TRUE。

从进程集合中找到一个能满足下述条件的进程:

①Finish[i]=FALSE;

②Need[I,j]

⑶当进程Pi获得资源后,可顺利执行,直至完成,并释放出分配给它的资

源,故应执行:

Work[j]:=Work[j]+Allocation[i,j];

Finish[i]:=TRUE;

Go to step 2;

⑷如果所有进程的Finish[i]=TRUE都满足,则表示系统处于安全状态;否则,系统处于不安全状态。

四、课程设计过程中的应用与实践

4.1目的:切实加深对进程死锁的认识;正确理解系统的安全状态与不安全状态;更进一步地理解和掌握银行家算法。

4.2内容:

将本实验分成两个阶段,第一阶段实现系统安全性检测算法;第二阶段实现银行家算法;要求用户能自主地输入不同的向量矩阵;程序能正确输出不同的运算结果;程序应具备良好的容错能力;力求用户界面的简洁美观;

4.3数据结构

数组

int Max[100][100]={0};//各进程所需各类资源的最大需求

int Avaliable[100]={0};//系统可用资源

char name[100]={0};//资源的名称

int Allocation[100][100]={0};//系统已分配资源

int Need[100][100]={0};//还需要资源

int Request[100]={0};//请求资源向量

int temp[100]={0};//存放安全序列

int Work[100]={0};//存放系统可提供资源

4.4算法设计

算法设计

进程一开始向系统提出最大需求量;

进程每次提出新的需求(分期贷款)都统计是否超出它事先提出的最大需求量;

若正常,则判断该进程所需剩余剩余量(包括本次申请)是否超出系统所掌握的剩余资源量,若不超出,则分配,否则等待。

五、读书工程心得总结

经过这几周的努力,终于把银行家算法大致的模拟出来了。坦白讲,虽然是借鉴了别人的程序,但是有很多地方也做了改进,然后进行了一下功能的补充和扩充。然后再借鉴的过程中,也有了很多的错误,导致运行不出来结果,我也进行了一一排查,然后进行改错,最终实现了其完整的功能。

在此次的大作业中,我也学习到了很多的东西。例如,银行家算法的具体实现过程以及安全性算法的实现过程。让我加深了对数组以及银行家算法的理解以及对操作系统的进程申请资源的调度流程也有了比较深刻等的体会,这些都是在书本上学不到的财富。这也是在理论课上学习不来的。在课程设计过程中,我认真编写文档和程序代码,完成代码的编写后再认真测试,检查程序的不足。在此次的课程设计中,让我体会到了变成的乐趣与那份那一诉说的成就感。也让我将平时学习到的C语言,数据结构,操作系统,软件工程概论进行融会贯通。让我更专业的从一个工程师的角度出发,更全面、周密的理解题目并做好需求分析,从而编出程序。

总而言之,这次的实验让我知道了理论必须要与实践相结合,尤其是我们的专业知识,只有自己从手做一遍,才可以把知识真正的变成自己的,也让知识变活。

参考文献

1. 秦明,李波. 计算机操作系统实验与实践:基于Windows与Linux[M]. 中国电

力出版社,2004

操作系统课程设计

课程设计报告 2015~2016学年第一学期 操作系统综合实践课程设计 实习类别课程设计 学生姓名李旋 专业软件工程 学号130521105 指导教师崔广才、祝勇 学院计算机科学技术学院 二〇一六年一月

- 1 -

- 2 -

一、概述 一个目录文件是由目录项组成的。每个目录项包含16B,一个辅存磁盘块(512B)包含32个目录项。在目录项中,第1、2字节为相应文件的外存i节点号,是该文件的内部标识;后14B为文件名,是该文件的外部标识。所以,文件目录项记录了文件内、外部标识的对照关系。根据文件名可以找到辅存i节点号,由此便得到该文件的所有者、存取权、文件数据的地址健在等信息。UNIX 的存储介质以512B为单位划分为块,从0开始直到最大容量并顺序加以编号就成了一个文件卷,也叫文件系统。UNIX中的文件系统磁盘存储区分配图如下: 本次课程设计是要实现一个简单的模拟Linux文件系统。我们在内存中开辟一个虚拟磁盘空间(20MB)作为文件存储器,并将该虚拟文件系统保存到磁盘上(以一个文件的形式),以便下次可以再将它恢复到内存的虚拟磁盘空间中。文件存储空间的管理可采用位示图方法。 二、设计的基本概念和原理 2.1 设计任务 多用户、多级目录结构文件系统的设计与实现。可以实现下列几条命令login 用户登录 logout 退出当前用户 dir 列文件目录 creat 创建文件 delete 删除文件 open 打开文件 close 关闭文件 - 3 -

read 读文件 write 写文件 mkdir 创建目录 ch 改变文件目录 rd 删除目录树 format 格式化文件系统 Exit 退出文件系统 2.2设计要求 1) 多用户:usr1,usr2,usr3,……,usr8 (1-8个用户) 2) 多级目录:可有多级子目录; 3) 具有login (用户登录)4) 系统初始化(建文件卷、提供登录模块) 5) 文件的创建:create (用命令行来实现)6) 文件的打开:open 7) 文件的读:read8) 文件的写:write 9) 文件关闭:close10) 删除文件:delete 11) 创建目录(建立子目录):mkdir12) 改变当前目录:cd 13) 列出文件目录:dir14) 退出:logout 新增加的功能: 15) 删除目录树:rd 16) 格式化文件系统:format 2.3算法的总体思想 - 4 -

自考02326《操作系统》串讲笔记1

第一部分课程概述 一、使用教材 《操作系统》,全国高等教育自学考试指导委员会组编,谭耀铭主编,中国人民大学出版社2007年版。 二、课程简介 随着计算机技术的迅速发展,计算机的硬、软件资源越来越丰富,用户也要求能更方便、更灵活地使用计算机系统。为了增强计算机系统的处理能力以及方便用户有效地使用计算机系统,操作系统已成为现代计算机系统中不可缺少的重要组成部分。因此,操作系统课程也就成为高等学校计算机专业的重要专业基础课程。 本课程从操作系统实现资源管理的观点出发,阐述如何对计算机系统中的硬、软件资源进行管理,使计算机系统协调一致地、有效地为用户服务,充分发挥资源的使用效率,提高计算机系统的可靠性和服务质量。 三、课程学习与考试要求 在自学过程中、考生应掌握操作系统对各种资源的管理方法和操作系统各部分之间的联系,这样才能真正掌握操作系统的工作原理以及了解操作系统在整个计算机系统中的作用。 为了能确切地学好本课程,要求考生具备:高级语言程序设计、数据结构、计算机系统结构等课程的知识。

在学任何一门课程时,要能做到真正学有所得,就必须:认真阅读教材,边读边做笔记;及时做习题,巩固所学内容;做好阶段总结,正确理解课程内容。 但每一门课程都有自身的特殊性,对于具体课程来说,应按照课程的特点具体探讨如何进行学习。要学好操作系统课程,关键在于弄清操作系统要做什么,怎么去做和为什么要这样去做。所以,如能注意如下几点,将会对操作系统课程的自学起到促进作用。 (1)在开始阅读某一章教材之前,先翻阅大纲中有关这一章的考核知识点、考核要求、自学要求、重点,以便在阅读教材时做到心中有数,有的放矢。 (2)阅读教材时要逐段细读,逐句推敲,集中精力,吃透每一个知识点,对基本概念必须深刻理解,对基本原理必须彻底弄清,对设计技巧要能灵活运用。 (3)根据操作系统在计算机系统中的应用,你在学习操作系统课程时应围绕如下四个中心问题: ①操作系统怎样管理计算机系统中的各种资源,以及保证资源的使用效率。 ②操作系统怎怎样为用户提高良好的运行环境,以方便用户使用计算机系统。 ③操作系统怎样按照用户的要求来控制程序的执行,以保证用户

操作系统课程设计文件系统管理)

操作系统课程设计Array文件系统管理 学院计算机学院 专业计算机科学与技术 班级 姓名 学号 2013年1月8日 广东工业大学计算机学院制 文件系统管理 一、实验目的 模拟文件系统的实现的基本功能,了解文件系统的基本结构和文件系统的管理方法看,加深了解文件系统的内部功能的实现。通过高级语言编写和实现一个简单的文件系统,模拟文件管理的工作过程,从而对各种文件操作系统命令的实质内容和执行过程有比较深入的了解。 二、实验内容和要求 编程模拟一个简单的文件系统,实现文件系统的管理和控制功能。在用户程序中通过使用文件系统提供的create,open,read,write,close,delete等文件命令,对文件进行操作。 以下报告主要包括: 1.可行性分析 2.需求分析 3.概要设计

4.详细设计 5.测试 6.总结 三、可行性分析 1、技术可行性 对于图形编程还不了解,但是经过本学期的三次实验的练习,可以设计好命令操作界面。利用大二期间学习的数据结构可以模拟出此课程设计的要求。 2、经济可行性 课程设计作为本课程的练习及进一步加深理解。与经济无关,可以不考虑。(零花费,零收益) 3.法律可行性 自己编写的程序,仅为练习,不作其他用途,与外界没什么联系,可行。 四、需求分析 编写程序实现文件系统,主要有以下几点要求: 1、实现无穷级目录管理及文件管理基本操作 2、实现共享“别名” 3、加快了文件检索 五、概要设计 为了克服单级目录所存在的缺点,可以为每一位用户建立一个单独的用户文件目录UFD(User File Directory)。这些文件目录可以具有相似的结构,它由用户所有文件的文件控制块组成。此外,在系统中再建立一个主文件目录MFD (Master File Directory);在主文件目录中,每个用户目录文件都占有一个目

操作系统课程设计报告书

题目1 连续动态内存管理模拟实现 1.1 题目的主要研究内容及预期达到的目标 (1)针对操作系统中内存管理相关理论进行设计,编写程序并进行测试,该程序管理一块虚拟内存。重点分析三种连续动态内存分配算法,即首次适应算法、循环首次适应算法和最佳适应算法。 (2)实现内存分配和回收功能。 1.2 题目研究的工作基础或实验条件 (1)硬件环境:PC机 (2)软件环境:Windows XP,Visual C++ 6.0 1.3 设计思想 首次适应算法的实现:从空闲分区表的第一个表目起查找该表,把最先能够满足要求的空闲区分配给作业,这种方法的目的在于减少查找时间。为适应这种算法,空闲分区表中的空闲分区要按地址由低到高进行排序。该算法优先使用低址部分空闲区,在低址空间造成许多小的空闲区,在高址空间保留大的空闲区。 循环首次适应算法的实现:在分配内存空间时,不再每次从表头开始查找,而是从上次找到空闲区的下一个空闲开始查找,直到找到第一个能满足要求的的空闲区为止,并从中划出一块与请求大小相等的内存空间分配给作业。该算法能使内存中的空闲区分布得较均匀。 最佳适应算法的实现:从全部空闲区中找到能满足作业要求的、且最小的空闲分区,这种方法能使碎片尽量小。为适应此算法,空闲分区表中的空闲分区要按从小到大进行排序,从表头开始查找第一个满足要求的自由分配。 1.4 流程图 内存分配流程图,如图1-1所示。

图1-1 内存分配流程图内存回收流程图,如1-2所示。

图1-2 内存回收流程图 1.5 主要程序代码 (1)分配内存 void allocate(char z,float l) { int i,k; float ad; k=-1; for(i=0;i= l && free_table[i].flag == 1) if(k==-1 || free_table[i].length

《操作系统》读书工程

操作系统课程设计 读书工程报告 学期 20013-2014学年第一学期 学院计算机科学技术学院 学号 姓名 2013年 12月 23日

一、基本理论阐述 1.进程 定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。 基本介绍:多道程序在执行时,需要共享系统资源,从而导致各程序在执行过程中出现相互制约的关系,程序的执行表现出间断性的特征。这些特征都是在程序的执行过程中发生的,是动态的过程,而传统的程序本身是一组指令的集合,是一个静态的概念,无法描述程序在内存中的执行情况,即我们无法从程序的字面上看出它何时执行,何时停顿,也无法看出它与其它执行程序的关系,因此,程序这个静态概念已不能如实反映程序并发执行过程的特征。为了深刻描述程序动态执行过程的性质,人们引入“进程(Process)”概念。 进程的概念:第一,进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量。第二,进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时,它才能成为一个活动的实体,我们称其为进程。 主要特征: 动态性:进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的。 并发性:任何进程都可以同其他进程一起并发执行 独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位; 异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进 结构特征:进程由程序、数据和进程控制块三部分组成。 状态分类: 1)就绪状态(Ready):进程已获得除处理器外的所需资源,等待分配处理器资源;只要分配了处理器进程就可执行。就绪进程可以按多个优先级来划分队列。例如,当一个进程由于时间片用完而进入就绪状态时,排入低优先级队列;当进程由I/O操作完成而进入就绪状态时,排入高优先级队列。 2)运行状态(Running):进程占用处理器资源;处于此状态的进程的数目小于等于处理器的数目。在没有其他进程可以执行时(如所有进程都在阻塞状态),通常会自动执行系统的空闲进程。 3)阻塞状态(Blocked):由于进程等待某种条件(如I/O操作或进程同步),在条件满足之前无法继续执行。该事件发生前即使把处理机分配给该进程,也无法运行。 进程控制的基本事件: 进程的创建 1.引起创建进程的事件

操作系统课程设计-模拟文件系统

目录 第1章需求分析 (1) 第2章概要设计 (1) 2.1 系统的主要功能 (1) 2.2系统模块功能结构 (1) 2.3运行环境要求 (2) 2.4数据结构设计 (2) 第3章详细设计 (3) 3.1模块设计 (3) 3.2算法流程图 (3) 第4章系统源代码 (4) 第5章系统测试及调试 (4) 5.1运行结果及分析 (4) 5.2系统测试结论 (5) 第6章总结与体会 (6) 第7章参考文献 (6) 附录 (7)

第1章需求分析 通过模拟文件系统的实现,深入理解操作系统中文件系统的理论知识, 加深对教材中的重要算法的理解。同时通过编程实现这些算法,更好地掌握操作系统的原理及实现方法,提高综合运用各专业课知识的能力;掌握操作系统结构、实现机理和各种典型算法,系统地了解操作系统的设计和实现思路,并了解操作系统的发展动向和趋势。 模拟二级文件管理系统的课程设计目的是通过研究Linux的文件系统结构,模拟设计一个简单的二级文件系统,第一级为主目录文件,第二级为用户文件。 第2章概要设计 2.1 系统的主要功能 1) 系统运行时根据输入的用户数目创建主目录 2) 能够实现下列命令: Login 用户登录 Create 建立文件 Read 读取文件 Write写入文件 Delete 删除文件 Mkdir 建立目录

Cd 切换目录 Logout 退出登录 2.2系统模块功能结构 2.3运行环境要求 操作系统windows xp ,开发工具vc++6.0 2.4数据结构设计 用户结构:账号与密码结构 typedef struct users { char name[8]; char pwd[10]; }users;

操作系统课程设计报告

操作系统课程设计报告

东莞理工学院 操作系统课程设计报告 学院:计算机学院 专业班级: 13软件工程1班 提交时间: 2015/9/14 指导教师评阅意见: . 项目名称:进程与线程管理功能 一、设计目的 用语言来模拟进程和线程管理系统,加深对进程和线程的理解,掌握对进程和线程各种状态和管理的算法原理。

二、环境条件 系统: WindowsXP、VMWare、Ubuntu Linux 语言:C/C++ 开发工具:gcc/g++、Visual C++ 6.0 三、设计内容 1. 项目背景 计算机的硬件资源有限,为了提高内存的利用率和系统的吞吐量,就要根据某种算法来管理进程和线程的状态从而达到目的。 进程与线程管理功能完成基于优先级的抢占式线程调度功能,完成进程虚拟内存管理功能。 进程与线程管理功能 基本要求:完成基于优先级的抢占式线程调度功能,完成进程虚拟内存管理功能。 提高要求:(增加1项就予以加分) (1) 实现多种线程调度算法; (2)通过“公共信箱”进行通信的机制,规定每一封信的大小为128字节,实现两个用户进程之间通过这个“公共信箱”进行通信。 (3) 实现多用户进程并发的虚拟内存管理功能。

(4) 实现用户进程间通信功能,并用生产者/消费者问题测试进程间通信功能的正确性。 (5) 实现改进型Clock页面置换算法。 (6) 实现Cache功能,采用FIFO替换算法。 2. 扩展内容 实现多种线程调度算法:时间片轮转调度算法 四、人员分工 优先级调度算法:钟德新,莫友芝 时间片轮转调度算法:张德华,袁马龙 设计报告由小组队员共同完成。小组成员设计的代码分工如下:钟德新编写的代码:void Prinft(){ PCB *p; system("cls");//清屏 p=run; //运行队列 if(p!=NULL) { p->next=NULL; } cout<<"当前正在运行的进程:"<procname<<"\t\t"<pri<<"\t"<needOftime<<"\t\t"<runtime<<"\t\t"<state<next; } cout<

操作系统课程设计报告

上海电力学院 计算机操作系统原理 课程设计报告 题目名称:编写程序模拟虚拟存储器管理 姓名:杜志豪.学号: 班级: 2012053班 . 同组姓名:孙嘉轶 课程设计时间:—— 评语: 成绩: 目录 一、设计内容及要求 (4) 1. 1 设计题目 (4) 1.2 使用算法分析: (4)

1. FIFO算法(先进先出淘汰算法) (4) 1. LRU算法(最久未使用淘汰算法) (5) 1. OPT算法(最佳淘汰算法) (5) 分工情况 (5) 二、详细设计 (6) 原理概述 (6) 主要数据结构(主要代码) (6) 算法流程图 (9) 主流程图 (9) Optimal算法流程图 (10) FIFO算法流程图 (10) LRU算法流程图 (11) .1源程序文件名 (11) . 2执行文件名 (11) 三、实验结果与分析 (11) Optimal页面置换算法结果与分析 (11) FIFO页面置换算法结果与分析 (16) LRU页面置换算法结果与分析 (20) 四、设计创新点 (24) 五、设计与总结 (27)

六、代码附录 (27) 课程设计题目 一、设计内容及要求 编写程序模拟虚拟存储器管理。假设以M页的进程分配了N

块内存(N

《现代操作系统》读书笔记之——进程间通信

很多时候,进程需要和其他的进程进行通信。比如shell中的管道命令:ps -ef | grep nginx,一个命令的输出,作为另一个进程的输入,这就是进程间通信(Interprocess Communication)。 进程间通信主要需要解决三个问题: 1.一个进程如何给另一个进程传递信息 2.如何确保进程之间不互相干扰、妨碍 3.当进程间出现依赖关系时,该如何处理。 尽管这里讨论的是进程之间的通信,但其实对于线程来说,他们之间的通信需要解决后两个问题。由于多个线程处在相同的进程,因此也处在同一个地址空间中,所以第一个问题自然很好解决。但是第二个、第三个问题还是存在的,当然解决的方案其实与进程间通信在处理这两个问题上采取的方案也是类似的。下面的内容会涉及上面的三个问题。 1.竞争条件(Race Condition) 在一些操作系统中,多个进程会共享一部分内存,每个进程都可以对他们进行读写操作。共享的内存有可能再内存中,也可能是一个共享的文件。为了看看进程间通信之间的竞争条件,举个简单的例子加以说明:打印池。假如一个进程想打印一个文件,于是他将文件名输入打印池目录中。有一个负责打印的进程——打印机守护进程——每隔一段时间会查看一下打印池目录中有没有需要打印的文件。有的话就打印,没有拉到。 打印机目录的示意图如下: 图中的每个小格子可以存放一个待打印的文件名(实际上应该是需要打印的文件的指针,这里只是为了说明问题做的假设)。同样,还需要假设两个共享的变量:一个叫out存储下一个轮到打印的文件的文件名;另一个叫in存储上图中下一个可以存放待打印文件文件名的小空格。这两个变量可能被存储再一个文件中,而这个文件共享给了所有的进程。 上图所示的时刻,单元1、2、3已经空了,也就是说,之前存在里面的文件已经打印了。而5-9号空格还是空的,也就是说接下来需要打印的文件依次存放在下面的单元中。这一时刻,变量in存储的应该是5。假设这时候,进程A读取变量in,得到的值是5。于是,进程A将这个值存储到他的局部变量 next_free_slot中,这时候,恰好CPU时间片到了,进程A重新回到可运行状态,而此时进程B获得了时间片,开始运行,它也有文件需要打印,那么它读取in,获得的

【精选】操作系统课程设计(文件系统管理)文件

评定等级 操作系统课程设计 文件系统管理 学院计算机学院 专业计算机科学与技术 班级 姓名 学号 2013年1月8日 广东工业大学计算机学院制

文件系统管理 一、实验目的 模拟文件系统的实现的基本功能,了解文件系统的基本结构和文件系统的管理方法看, 加深了解文件系统的内部功能的实现。通过高级语言编写和实现一个简单的文件系统,模拟文件管理的工作过程,从而对各种文件操作系统命令的实质内容和执行过程有比较深入的了 解。 二、实验内容和要求 编程模拟一个简单的文件系统,实现文件系统的管理和控制功能。在用户程序中通过使用文件系统提供的create,open,read,write,close,delete 等文件命令,对文件进行操作。以下报告主要包括: 1.可行性分析 2.需求分析 3.概要设计 4.详细设计 5.测试 6.总结 三、可行性分析 1、技术可行性 对于图形编程还不了解,但是经过本学期的三次实验的练习,可以设计好命令操作界面。利用大二期间学习的数据结构可以模拟出此课程设计的要求。 2、经济可行性 课程设计作为本课程的练习及进一步加深理解。与经济无关,可以不考虑。(零花费,零收益) 3.法律可行性 自己编写的程序,仅为练习,不作其他用途,与外界没什么联系,可行。 四、需求分析 编写程序实现文件系统,主要有以下几点要求: 1、实现无穷级目录管理及文件管理基本操作 2、实现共享“别名” 3、加快了文件检索 五、概要设计 为了克服单级目录所存在的缺点,可以为每一位用户建立一个单独的用户文件目录 UFD (User File Directory )。这些文件目录可以具有相似的结构,它由用户所有文件的文件 控制块组成。此外,在系统中再建立一个主文件目录MFD (Master File Directory );在主文件目录中,每个用户目录文件都占有一个目录项,其目录项中包括用户名和指向该用户目 录的指针。

操作系统课程设计报告

; 一、概述 课程设计目的、意义: 课程设计目的使学生熟悉文件管理系统的设计方法;加深对所学各种文件操作的了解及其操作方法的特点。通过模拟文件系统的实现,深入理解操作系统中文件系统的理论知识, 加深对教材中的重要算法的理解。同时通过编程实现这些算法,更好地掌握操作系统的原理及实现方法,提高综合运用各专业课知识的能力。 主要任务: 模拟文件系统设计是设计和实现一个简单的文件系统。内容包括: 1.建立文件存储介质的管理机制 2.建立目录(采用一级目录结构) 3.文件系统功能(显示目录、创建、删除、打开、关闭、读、写) ~ 4.文件操作接口(显示目录、创建、删除、打开、关闭、读、写) 二、系统设计 课程设计的系统设计: 本系统模拟一个文件管理系统,要完成对文件的基本操作,文件的基本操作有文件、文件夹的打开、新建、删除和读取写入文件,创建更改目录,列出目录内容等信息。系统建立了文件目录树,存储文件系统中的所有文

件。对于用户名下的文件,用文件目录树的分枝来存贮。采用命令行操作界面很直观,也方便用户进行操作,用户只要按照操作界面所显示的命令来操作就行了。 整体设计框架: 系统初始化界面是由创建用户存储空间,管理文件,退出系统三个模块组成。用户创建由创建用户存储空间,进入目录,删除用户存储空间,显示所有用户存储空间,等模块组成。然后各个模块再由一些小模块组成。其中创建文件,打开关闭文件,读写文件等文件操作模块包括在进入目录模块里面。 三、系统实现 课程设计主要内容的实现程序代码: 《 #include <> #include <> #include <> typedef struct file{ char name[10]; struct file *next; }File; typedef struct content{ ! char name[10]; File *file;

操作系统课程设计报告

东莞理工学院 操作系统课程设计报告学院:计算机学院 专业班级:13软件工程1班 提交时间:2015/9/14 指导教师评阅意见: . 项目名称:进程与线程管理功能 一、设计目的 用语言来模拟进程和线程管理系统,加深对进程和线程的理解,掌握对进程和线程各种状态和管理的算法原理。 二、环境条件 系统:WindowsXP、VMWare、Ubuntu Linux 语言:C/C++ 开发工具:gcc/g++、Visual C++ 6.0 三、设计内容 1. 项目背景

计算机的硬件资源有限,为了提高内存的利用率和系统的吞吐量,就要根据某种算法来管理进程和线程的状态从而达到目的。 进程与线程管理功能完成基于优先级的抢占式线程调度功能,完成进程虚拟内存管理功能。 进程与线程管理功能 基本要求:完成基于优先级的抢占式线程调度功能,完成进程虚拟内存管理功能。 提高要求:(增加1项就予以加分) (1) 实现多种线程调度算法; (2)通过“公共信箱”进行通信的机制,规定每一封信的大小为128字节,实现两个用户进程之间通过这个“公共信箱”进行通信。 (3) 实现多用户进程并发的虚拟内存管理功能。 (4) 实现用户进程间通信功能,并用生产者/消费者问题测试进程间通信功能的正确性。 (5) 实现改进型Clock页面置换算法。 (6) 实现Cache功能,采用FIFO替换算法。 2. 扩展内容 实现多种线程调度算法:时间片轮转调度算法 四、人员分工 优先级调度算法:钟德新,莫友芝 时间片轮转调度算法:张德华,袁马龙 设计报告由小组队员共同完成。小组成员设计的代码分工如下: 钟德新编写的代码:void Prinft(){ PCB *p; system("cls");//清屏 p=run; //运行队列 if(p!=NULL) { p->next=NULL; } cout<<"当前正在运行的进程:"<procname<<"\t\t"<pri<<"\t"<needOftime<<"\t\t"<runtime<<"\t\t"<state<next; } cout<procname<<"\t\t"<pri<<"\t"<needOftime<<"\t\t"<runtime<<"\t\t"<state<next; } cout<

操作系统课程设计报告读书工程方案

“操作系统课程设计”读书工程环节方案“操作系统”是计算机科学技术专业与软件工程专业的必修课程,也是该专业核心理论课程。为了更全面的理解理论知识,提高实践能力,计算机科学与技术专业以及软件工程专业开设了实践类必修课程-“操作系统课程设计”。将读书环节融入教学内容的设计中,做好理论教学、实践教学、读书环节三者有机结合,可使学生进一步了解课程理论知识,拓宽视野,加深对本专业相关课程的理解。 在读书工程环节,学生可以通过阅读相关的参考书目,对课程设计的五个部分(进程控制、进程调度、请求分页存储管理、设备管理、文件管理)中的任意一个题目进行深入的分析探讨和总结,并提交相应的读书工程报告。 考核方式:通过提交读书报告进行考核,该部分成绩要占课程总成绩的15%。该报告至少应包括基本理论阐述、当前理论或实践应用现状、本人对相关内容的体会、课程设计过程中对相应部分的设计与实现思路、读书工程心得总结等几个方面,字数不少于5000字。 参考书目: 现代操作系统(第2版、第3版,中文/英文原版) ●作者:(荷)AndrewS.Tanenbaum ●译者:陈向群,马洪兵 ●:机械工业 ●出版日期:2005年6月 本书是操作系统领域的经典之作,与第1版相比有较大的变化。书中集中讨论了操作系统的基本原理,除了重点放在单处理机操作系统之外,还包含了有关计算机安全、多媒体操

作系统、unix、windows 2000以及操作系统设计等方面的内容。书中涉及的主题包括图形用户界面、多处理机操作系统、笔记本电脑电源管理、可信系统、病毒、网络终端、cd-rom 文件系统、互斥信号量、raid、软定时器、稳定存储器以及新的页面置换算法等。此外,书中还增加了大量习题,方便教学。 本书适合作为高等院校计算机科学与技术专业操作系统课程教材,也是设计、开发操作系统的重要参考书。 Andrew S. Tanenbaum 是ACM和IEEE的资深会员,荷兰皇家艺术和科学学院院士,获得过1997年度ACM/SIGCSE计算机科学教育杰出贡献奖。当前,他的主要研究方向是设计规模达十亿级用户的广域分布式系统。在进行这些研究项目的基础上,他在各种学术杂志及会议上发表了70多篇论文,并出版了多本计算机专著。Tanenbaum还入选了《世界名人录》。Tanenbaum教授的个人主页是.cs.vu.nl/~ast。 操作系统设计与实现(第二版,有电子书,中文版) ●作者:(美)AndrewS.Tanenbaum,AlbertS.Woodhull ●译者:陈渝谌卫军 ●:电子工业 ●出版日期:2007年3月 本书是关于操作系统的权威教材,详细探讨了操作系统的基本原理,包括进程、进程间通信、信号量、管程、消息传递、调度算法、输入/输出、死锁、设备驱动程序、存储管理、调页算法、文件系统设计、安全和保护机制等。大多数关于操作系统的图书均重理论而轻实践,而本书则在这两者之间进行了较好的折中。本册给出了上册提到的minix3操作系统的安装方法以及详细的原代码,并附有光盘。 本书适用于高校计算机专业的学生,也可供程序设计人员、工程技术人员、系统架构师等相关人员参考。 操作系统—精髓与设计原理(第六版,有电子书) ●作者:(美)WilliamStallings ●译者:陈向群,陈渝 ●:电子工业 ●出版日期:2006年2月

操作系统课程设计二级文件系统

操作系统课程设计报告 专业:计算机信息处理 学号:09103408 姓名:纪旻材 提交日期:2011-12-28

【设计目的】 1. 课程设计目的是通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能和内部实现。 2. 结合数据结构、程序设计、计算机原理等课程的知识,设计一个二级文件系统,进一步理解操作系统。 3. 通过对实际问题的分析、设计、编程实现,提高学生实际应用、编程的能力 【设计内容】 1、delete 删除文件 2、open 打开文件 3、close 关闭文件 4、write 写文件 【实验环境】 Windows7系统

Visual studio 2010 【相关知识综述】 本文件系统采用两级目录,其中第一级对应于用户账号,第二级对应于用户帐号下的文件。另外,为了简便文件系统未考虑文件共享,文件系统安全以及管道文件与设备文件等特殊内容。 首先应确定文件系统的数据结构:主目录、子目录及活动文件等。主目录和子目录都以文件的形式存放于磁盘,这样便于查找和修改。用户创建的文件,可以编号存储于磁盘上。如:file0,file1,file2…并以编号作为物理地址,在目录中进行登记。 【设计思路】 1 主要数据结构 #define MAXNAME 25 /*the largest length of mfdname,ufdname,filename*/ #define MAXCHILD 50 /*the largest child每个用户名下最多有50个文件*/ #define MAX (MAXCHILD*MAXCHILD) /*the size of fpaddrno*/ typedef struct/*the structure of OSFILE定义主文件*/

操作系统课程设计报告

东莞理工学院 操作系统课程设计报告 学院:计算机学院 专业班级:13软件工程1班 提交时间:2015/9/14 指导教师评阅意见: . 项目名称:进程与线程管理功能 一、设计目的 用语言来模拟进程和线程管理系统,加深对进程和线程的理解,掌握对进程和线程各种状态和管理的算法原理。 二、环境条件

系统:WindowsXP、VMWare、Ubuntu Linux 语言:C/C++ 开发工具:gcc/g++、Visual C++ 6.0 三、设计内容 1. 项目背景 计算机的硬件资源有限,为了提高内存的利用率和系统的吞吐量,就要根据某种算法来管理进程和线程的状态从而达到目的。 进程与线程管理功能完成基于优先级的抢占式线程调度功能,完成进程虚拟内存管理功能。 进程与线程管理功能 基本要求:完成基于优先级的抢占式线程调度功能,完成进程虚拟内存管理功能。 提高要求:(增加1项就予以加分) (1) 实现多种线程调度算法; (2)通过“公共信箱”进行通信的机制,规定每一封信的大小为128字节,实现两个用户进程之间通过这个“公共信箱”进行通信。 (3) 实现多用户进程并发的虚拟内存管理功能。 (4) 实现用户进程间通信功能,并用生产者/消费者问题测试进程间通信功能的正确性。 (5) 实现改进型Clock页面置换算法。 (6) 实现Cache功能,采用FIFO替换算法。

2. 扩展内容 实现多种线程调度算法:时间片轮转调度算法 四、人员分工 优先级调度算法:钟德新,莫友芝 时间片轮转调度算法:张德华,袁马龙 设计报告由小组队员共同完成。小组成员设计的代码分工如下:钟德新编写的代码:void Prinft(){ PCB *p; system("cls");//清屏 p=run; //运行队列 if(p!=NULL) { p->next=NULL; } cout<<"当前正在运行的进程:"<procname<<"\t\t"<pri<<"\t"<needOftime<<"\t\t"<runtime<<"\t\t"<state<next; } cout<procname<<"\t\t"<pri<<"\t"<needOftime<<"\t\t"<runtime<<"\t\t"<state<next; } cout<procname<<"\t\t"<pri<<"\t"<needOftime<<"\t\t"<runtime<<"\t\t"<state<

操作系统(一个小型操作系统的设计与实现)课程设计

南通大学计算机科学与技术学院操作系统课程设计报告 专业: 学生姓名: 学号: 时间:

操作系统模拟算法课程设计报告 设计要求 将本学期三次的实验集成实现: A.处理机管理; B.存储器管理; C.虚拟存储器的缺页调度。 设计流程图 主流程图 开始的图形界面 处理机管理存储器管理缺页调度 先来先服务时 间 片 轮 转 首 次 适 应 法 最 佳 适 应 法 先 进 先 出 L R U 算 法

A.处理机调度 1)先来先服务FCFS N Y 先来先服务算法流程 开始 初始化进程控制块,让进程控制块按进程到达先后顺序让进程排队 调度数组中首个进程,并让数组中的下一位移到首位 计算并打印进程的完成时刻、周转时间、带权周转时间 其中:周转时间 = 完成时间 - 到达时间 带权周转时间=周转时间/服务时间 更改计时器的当前时间,即下一刻进程的开始时间 当前时间=前一进程的完成时间+其服务时间 数组为空 结束

2)时间片轮转法 开始 输入进程总数 指针所指的进程是 否结束 输入各进程信息 输出为就绪状态的进程的信息 更改正在运行的进程的已运行时间 跳过已结束的程序 结束 N 指向下一个进程 Y 如果存在下一个进程的话 Y N 输出此时为就绪状态的进程的信息 时间片轮转算法流程图

B.存储器管理(可变式分区管理) 1)首次适应法 分配流程图 申请xkb内存 由链头找到第一个空闲区 分区大小≥xkb? 大于 分区大小=分区大小-xkb,修改下一个空闲区的后向指针内容为(后向指针)+xkb;修改上一个空闲区的前向指针为(前向指针)+xkb 将该空闲区从链中摘除:修改下一个空闲区的后向地址=该空闲区后向地址,修改上一个空闲区的前向指针为该空闲区的前向指针 等于 小于延链查找下 一个空闲区 到链尾 了? 作业等待 返回是 否 登记已分配表 返回分配给进程的内存首地址 开始

《操作系统)(中国铁道)习题答案第四章

⒈计算机系统中存储器一般分为哪两级?各有什么特点? 答:计算机系统中存储器一般分为主存储器和辅助存储器两级。 主存储器简称主存,又称为内存,它由自然数顺序编址的单元(通常为字或字节)所组成,是处理机直接存取指令和数据的存储器,它速度快,但容量有限。辅助存储器简称辅存,又称为外存,它由顺序编址的“块”所组成,每块包含若干个单元,寻址与交换以块为单位进行,处理机不能直接访问它,它须经过专门的启动入出过程与内存交换信息,它存取速度较慢,但容量远大于内存,实际上,现代计算机系统中用户的数据(或信息)都是保存在外存中。 ⒉存储管理的目的是什么? 答:存储管理要实现的目的是:为用户提供方便、安全和充分大的存储空间。 所谓方便是指将逻辑地址和物理地址分开,用户只在各自逻辑地址空间编写程序,不必过问物理空间和物理地址的细节,地址的转换由操作系统自动完成;安全则是指同时驻留在内存的多道用户程序相互之间不会发生干扰,也不会访问操作系统所占有的空间。充分大的存储空间是指利用虚拟存储技术,从逻辑上对内存空间进行扩充,从而可以使用户在较小内存里运行较大程序。 ⒊存储管理的任务是什么? 答:存储管理是计算机操作系统软件的一部分,它负责完成对主存储器的地址转换,对主存储器进行分配与去配,解决多用户对主存储器的共享和保护,通过软件手段,实现对主存储器容量的扩充。 ⒋地址转换可分为哪三种方式?比较这三种方式的优缺点。 答:由逻辑地址转化为物理地址的地址转换过程,按照转换的时间不同,可以分为3种方式: ①绝对装入方式②静态重定位方式③动态重定位方式 (第二问略) ⒌可变分区常用的分区算法有哪几种?它们各自的特点是什么? 答:首次适应算法、循环首次适应算法、最佳适应算法、最差适应算法(第二问略) ⒍试用类C语言写首次适应算法的分配过程。 答:firstmatch(n) { p=Free; while(p!=NULL) { if(p->size>=n) { if(p->size-n>=size) p->size=p->size-n; a=p; p=p+n; else a=p; remove(Free,p); } else

操作系统课程设计(文件系统)

操作系统课程设计 班级: 姓名: 学号: 使用语言:C++ 指导老师: 学院:

一、系统要求 1、实验目的 通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能及内部实现。 2、实验内容 为linux系统设计一个简单的二级文件系统。要求做到以下几点: (1)可以实现下列几条命令(至少4条); login 用户登陆 dir 列文件目录 create 创建文件 delete 删除文件 open 打开文件 close 关闭文件 read 读文件 write 写文件 (2)列目录时要列出文件名、物理地址、保护码和文件长度; (3)源文件可以进行读写保护。 二、系统分析 1、设计思想 本文件为二级文件系统,即要实现对文件的增删改查,同时又具备登陆系统、注册用户的功能,各个用户之间的文件系统互不干扰。 本文件系统采用两级目录,其中第一级对应于用户账号,第二级对应于用户帐号下的文件。另外,为了简便文件系统未考虑文件共享,文件系统安全以及管道文件与设备文件等特殊内容。 系统采用结构体来存储用户、文件目录、文件数据内容: 0 48*5 48*5+44*50 48*5+44*50+264*200 每个分区都是由结构体组成,每个个去的结构体的个数由格式化系统是决定。整个系统的编码构成主要分为:

Allstruct.h 定义了每个分区的结构体; Mysys.h 声明了对系统操作的各种方法; Myuserfile.h 声明了对文件操作的各种方法; Mymain.cpp 整个系统的主函数,操作入口; Mysys.cpp 包含了mysys.h,实现了操作系统的各种方法;Myuserfile.cpp 包含了myuserfile.h,实现了操作文件的各种方法; 2、主要数据结构 Allstruct.h文件的内容: struct s_user //用户区结构体 { long isuse; //是否使用 char name[20]; //用户名 char psd[20]; //密码 long address; //目录地址 }; struct s_list //目录结构体 { long isuse; //是否使用 char name[20]; //文件名字 long myaddress; //本条目录地址 long pointaddress; //指向的文件的地址 long isfile; //是否锁定 long pointsize; //目标文件的大小 long nextaddress; //下条目录的地址 }; struct s_file //文件结构体 { long isuse; //是否使用 char content[256]; //文件内容 long next; //下个文件块地址 };

相关文档
最新文档