篇一 :操作系统课程设计实验报告(附代码)

操作系统课程设计报告

题目:银行家算法设计

操作系统课程设计实验报告附代码

学 院: 专 业: 班 级: 学 生: 学 号: 指导教师: 1

摘 要

银行家算法是一个用来预防系统进入死锁状态的算法,用它可以判断系统的安全性,如果系统当前处于安全状态,则可以为申请资源的进程分配资源,如果不是安全状态,则不能为申请资源的进程分配资源。

银行家算法执行过程中,首先判断申请资源的进程所申请的资源数目是否合法,若是合法的,则可以为其进行试分配,再利用安全性算法求出安全序列,·如果存在安全序列,则说明可以给申请资源的进程分配资源,分配成功,继续为其它进程服务。如果找不到安全序列,则说明为该进程分配资源后系统会进入不安全状态,所以不能为该进程分配资源,使该进程进入阻塞状态。若申请资源的进程申请的资源数目不合法,则不需要进行试分配,直接使其进入阻塞状态,处理其他申请资源的进程。

论文首先对算法的设计从总体上进行了分析,然后分析各个细节,再对算法分模块设计,并对各个模块的算法思想通过流程图表示,分块编写代码,并进行调试和测试,最后进行组装测试及系统测试,使其成为一个可以用来判断系统安全状态的程序。

2

银行家算法的原理、思想及小结

1,银行家算法的思路

先对用户提出的请求进行合法性检查,即检查请求的是不大于需要的,是否不大于可利用的。若请求合法,则进行试分配。最后对试分配后的状态调用安全性检查算法进行安全性检查。若安全,则分配,否则,不分配,恢复原来状态,拒绝申请。也可以释放进程所占用的一些资源再进行分配资源、安全性检查。

2, 银行家算法的数据结构

主要用到的数据结构:

最大需求矩阵max[][],为n*m的矩阵,定义了n个进程的每个进程对m类资源的最大需求。

已分配矩阵allocation[][],为n*m的矩阵,定义了系统中每一类资源当前分配给每一进程的资源数。

…… …… 余下全文

篇二 :操作系统课程设计实验报告

    操作系统课程设计实验报告

学    部:

专业班级:

姓    名:

学    号:

指导教师:

摘要

目录

1、概论    

2、系统设计   

3、系统实现

4、系统测试

5、结论

参考文献

附件

摘要

操作系统是计算机学科的核心课程,对于计算机科学与技术专业的学生尤为重要。此次课程设计旨在加强我们对操作系统中文件系统的理解。结合过去所学知识,为此设计了一个简单的Linux下的运行的文件管理系统。

1、概论

    文件系统是硬盘上文件存储和读取的系统架构。操作系统必须在硬盘上建立文件系统,才能进行文件和文件夹的读取和存盘。在Linux中常见的文件系统有ext2、ext3、ext4和swap等。其中swap用于虚拟存盘,而其他文件系统用于一般的挂载目录。

文件系统是系统对文件和目录的一种定位方式,从而能让系统快速的找到该文件。对于使用者而言,文件系统并没有意义,只需将文件分类放置于不同的文件夹中即可。

2、系统设计

设计内容:

编写程序模拟实现一个简单的文件管理系统,设计一个较实用的用户界面,方便用户使用。

设计要求:

提供以下相关文件操作:

(1)login:登录

(2)register:注册

(3)open:打开文件

(4)read:读取文件数据到屏幕

(5)write:写文件,分为cover和append两种类型;cover是覆盖原数据,append是在不改变原始数据的基础上进行增加。

(6)close:关闭文件

(7)create:新增文件

(8)delete:删除文件

…… …… 余下全文

篇三 :操作系统课程设计实验报告(以Linux为例)

《操作系统课程设计》

实验报告

学号:

姓名:

苏州大学计算机科学与技术学院

20xx年9月

操作系统课程设计实验报告

目 录

目 录 ........................................................................................................... 1

一、实验环境 .............................................................................................. 2

二、实验报告总体要求 .............................................................................. 2 实验一 编译LINUX内核 ............................................................................................ 3 实验二 观察LINUX行为 ............................................................................................ 7 实验三 进程间通信 .................................................................................................. 14

1

操作系统课程设计实验报告

一、实验环境

Linux平台

? 硬件平台:普通PC机硬件环境。

? 操作系统:Linux环境,例如,红旗Linux或Red Hat Linux;启动

…… …… 余下全文

篇四 :何洲操作系统课程设计实验报告

武汉工程大学

计算机科学与工程学院

综合设计报告

设计名称:          操作系统综合设计           

设计题目:              线程同步               

学生学号:             1205080205              

专业班级:          20##计算机工程02           

学生姓名:               何洲                  

…… …… 余下全文

篇五 :操作系统课程设计实验报告

操作系统课程设计

实验报告书

20##-06-30


目 录

一、课程设计任务划分... 1

(一)课程内容... 2

(二)算法... 2

(三)算法基本原理... 2

三、基本思路... 4

(一)变量... 4

(二)所用函数... 5

(三)流程图... 9

四、调试及实验结果... 14

五、个人体会... 15


一、课程设计任务划分

 


二、基本原理

(一)课程内容

编程序模拟车站售票厅内进程同步问题,售票厅任何时刻最多可容纳20名购票者进入,否则需要在外面等待。每个购票者可看成一个进程。

(二)算法

信号量与P,V操作

(三)算法基本原理

生产者-消费者问题是一个经典的线程同步问题,该问题最早由Dijkstra提出,用以演示他提出的信号量机制。在同一个线程地址空间内执行的两个线程。生产者线程生产物品,然后将物品放置在一个空缓冲区中供消费者线程消费。消费者线程从缓冲区中获得物品,然后释放缓冲区。当生产者线程生产物品时,如果没有空缓冲区可用,那么生产者线程必须等待消费者线程释放出一个空缓冲区。当消费者线程消费物品时,如果没有满的缓冲区,那么消费者线程将被阻塞,直到新的物品被生产出来。

多个生产/消费者在有界缓冲上操作。它利用N个字节的共享内存作为有界循环缓冲区,利用写一字符模拟放一个产品,利用读一字符模拟消费一个产品。当缓冲区空时消费者应阻塞睡眠,而当缓冲区满时生产者应当阻塞睡眠。一旦缓冲区中有空单元,生产者线程就向空单元中入写字符,并报告写的内容和位置。一旦缓冲区中有未读过的字符,消费者线程就从该单元中读出字符,并报告读取位置。生产者不能向同一单元中连续写两次以上相同的字符,消费者也不能从同一单元中连续读两次以上相同的字符。

因此售票员与乘客也可转化为生产者与消费者的问题,第一步:确定进程间的关系。售票厅是各进程共享的公有资源,当售票厅中多于20名购票者时,厅外的购票者需要在外面等待。所以进程间是互斥的关系。第二步:确定信号量及其值。只有一个公有资源:售票厅,所以设置一个信号量s。售票厅最多容纳20个进程,即可用资源实体数为20,s的初值就设为20。

…… …… 余下全文

篇六 :操作系统课程设计实验报告

操作系统课程设计实验报告

姓名:**

学号:**

班级:**

地点:**

20xx年**月**日

任务说明

共完成四个任务,任务一:I/O系统调用开销比较;任务二:实现一个简单的shell;任务三:进程/线程同步;任务四:文件内容的并行搜索。其中任务一,完成了标准c和unix下的实验,mmap没有完成,任务三完成了线程同步,进程同步没有完成。

任务一要求

在LINUX平台用C编程逆序一个文本文件,注意先是逆转的结果必须是原文件名。

请分别使用 :

(1)标准C的I/O库函数:fopen、fread、fwrite

(2)Unix的I/O函数:open、read、write

(3)open和mmap

要求尽量考虑效率,比较三种方法的性能。

任务二要求

实现一个简单的shell(命令行解释器),类似于sh,bash,csh等。你的shell必须支持以下内部命令: cd<目录>更改当前的工作目录到另一个<目录>。如果<目录>未制定,输出当前工作目录。如果<目录>不存在,应当有适当的错误信息提示,制革命令应该也能改变PWD的环境变量;

enbiron 列出所有环境变量字符串的设置(类似于Unix系统下的env命令);

echo<内容> 显示echo后的内容且换行;

help 简短概要的输出你的shell的使用方法和基本功能;

jobs 输出shell当前的一系列子进程,必须提供子进程的命名和PID号;

quit,exit,bye 退出shell。

所有的内部命令应当优先于在$PATH中同名的程序。

任何非内部命令必须请求shell创建一个新进程,且该子进程执行指定的程序。这个新进程必需继承shell的环境变量和制定的命令行参数。

任务三要求

编程实现下图的效果,要求分别使用进程和线程

…… …… 余下全文

篇七 :操作系统课程设计实验报告

操作系统课程设计实验报告

——nachos

专业:计算机科学与技术

班级:2011级2班

姓名:李霜

学号:201100130082

目录

Laboratory 3:Synchronization Using Semaphores

—— 信号量实现同步 Laboratory 5:Extendable Files

—— 扩展文件系统

Laboratory 7-8:Extension of AddrSpace & System Calls Exec()and Exit()

——扩展地址空间 & 实现系统调用 Laboratory 9:设计并实现具有优先级的线程调度策略 Laboratory 10:设计并实现具有二级索引的文件系统

Laboratory 3:Synchronization Using Semaphores

—— 信号量实现同步

一、实验目的:

1、 在原有的程序框架的基础上,通过使用信号量添加关键代码实现生产者/消

费者同步问题。

2、 深入理解Nachos的信号量的使用、实现,以及在Nachos中是如何创建线程,

实现多线程。

3、 掌握生产者/消费者问题是如何用信号量实现的。

二、实验步骤

1.首先初始化三个信号量,代码如下:

mutex = new Semaphore("mutux",1);信号量初始化为1,才能起到加锁功能 nfull = new Semaphore("full",0);nfull的大小在生产者没生产前为0 nempty = new Semaphore("empty",BUFF_SIZE);nempty的大小应该为buffer的大小

2.首先考虑生产者进程,首先要查看buffer是否有空, nempty->P();if nempty>0,nempty=nempty -1,当对缓冲区操作时必须要加锁:mutex->P();加锁. 然后向ring中放入message信息,其次还要解锁mutex->V();解锁.最后通知消费者buffer有新信息, nfull->V();nfull=nfull+1;具体实现代码如下:

…… …… 余下全文

篇八 :操作系统课程设计试验报告格式

四 川 大 学

操作系统课程设计报告

学    院:            软件                 

专    业:             软件工程              

年    级:               07                    

组 编 号:              X                   

组 成 员:     乔心轲(姓名) 0743111340(学号)

…… …… 余下全文