《操作系统课程设计》报告范本(doc 10页)

合集下载

《操作系统》课程设计报告

《操作系统》课程设计报告

长江大学操作系统课程设计报告系(院):计算机科学学院专业班级:软工******姓名: ******* ***学号: 2013*****指导教师: *** **设计时间: 2015.12.27 - 2016.1.5设计地点: 4教5楼机房目录一、基本要求 (3)二、课程设计内容 (3)三、运行环境 (3)四、算法原理 (3)4.1银行家算法原理 (3)4.2页面置换算法原理 (3)4.3电梯调度算法原理 (4)五、程序结构 (4)5.1银行家算法结构 (4)5.2页面置换算法结构 (5)5.3电梯调度算法结构 (6)六、核心代码 (7)6.1银行家算法核心代码 (7)6.2页面置换算法核心代码 (13)6.3电梯调度算法核心代码 (17)七、运行结果截图 (20)7.1银行家算法截图 (20)7.2页面置换算法截图 (21)7.3电梯调度算法截图 (22)八、总结 (23)一、基本要求1.熟悉操作系统原理知识,理解各类管理算法。

2.能根据具体问题的数据特点,选用适当的数据结构,实现数据的组织和管理。

3.进一步巩固程序设计与数据结构的实践技能。

二、课程设计内容1.银行家算法模拟;2.页面置换算法模拟(OPT,FIFO,LRU);3.电梯调度算法(磁盘调度)模拟。

三、运行环境编程语言:C++,编程软件Microsoft Visual C++6.0,操作系统:Windows7。

四、算法原理4.1银行家算法原理银行家算法:系统中有限的资源要供多个进程使用,必须保证得到的资源的进程能在有限的时间内归还资源,以供其他进程使用资源。

如果资源分配不得到就会发生进程循环等待资源,则进程都无法继续执行下去的死锁现象。

把一个进程需要和已占有资源的情况记录在进程控制中,假定进程控制块PCB其中“状态”有就绪态、等待态和完成态。

当进程在处于等待态时,表示系统不能满足该进程当前的资源申请。

”资源需求总量”表示进程在整个执行过程中总共要申请的资源量。

操作系统课程设计报告

操作系统课程设计报告

青岛理工大学操作系统课程设计报告院(系):计算机工程学院专业:计算机科学与技术专业学生姓名:__杨晓玉班级:__计算093__学号: 200907195 题目:采用“读写平等”策略演示“读者-写者”问题起迄日期:2012-7-2 至2012-7-13___设计地点:网络中心计算机学院机房指导教师:王金龙2011—2012年度第 2 学期完成日期: 2012 年 7 月 13日一、课程设计目的进行操作系统课程设计主要是在学习操作系统课程的基础上,在完成操作系统各部分实验的基础上,对操作系统的整体进行一个模拟,通过实践加深对各个部分的管理功能的认识,还能进一步分析各个部分之间的联系,最后达到对完整系统的理解。

同时,可以提高运用操作系统知识解决实际问题的能力;锻炼实际的编程能力、创新能力及团队组织、协作开发软件的能力;还能提高调查研究、查阅技术文献、资料以及编写软件设计文档的能力。

此次实验我选择的是经典的读者写者问题。

读写者问题的传统解决方案采用读优先策略,可能会造成后续的写者被随后而来的读者插队而长时间等待,直到全部读者进程运行完毕后,才可进行写操作。

为此,选择采用“读写平等策略”解决读写者问题,希望通过此次课程设计实现读写者的公平竞争,加深对线程、进程及同步概念的理解。

通过研究经典的进程同步问题,实现对读者-写者问题的并发控制,掌握运用信号量解决“同类进程多次访问,而不同类的进程必须互斥访问资源”的控制问题。

此次实验我选择用比较大众的jAVA语言编写,通过自学JAVA语言实现读者写者问题,还提供了我进一步学习编程语言的机会。

二、课程设计内容与要求1、设计内容:通过研究经典的进程同步问题,实现对读者-写者问题的并发控制。

2、说明:阅览室一次最多可以容纳20个人。

3、设计要求:1)读者与写者至少包括ID、进入内存时间、读写时间三项内容,可在界面上进行输入。

2)读者与写者均有二个以上,可在程序运行期间动态增加读者与写者。

操作系统课程设计报告

操作系统课程设计报告

操作系统课程设计报告1. 引言操作系统是计算机系统中最核心的软件之一,它负责管理和优化计算机资源的分配和调度,为用户和应用程序提供一个可靠、高效的执行环境。

在操作系统课程设计中,我们通过设计一个简单的操作系统,深入理解操作系统的原理和功能,提升对操作系统的理解和实践能力。

本报告将详细介绍我们小组在操作系统课程设计过程中所完成的工作和实现的目标。

2. 设计目标在本次操作系统课程设计中,我们的设计目标包括:•实现一个基本的中断处理、进程调度和内存管理机制;•设计一个简单的文件系统;•确保操作系统的稳定性和可靠性;•实现用户命令解析和执行功能。

3. 系统架构我们的操作系统设计采用了经典的分层结构,主要由硬件抽象层、内核和用户接口层组成。

1.硬件抽象层:负责与硬件进行交互,提供基本的底层硬件接口,如处理器管理、中断处理、设备控制等。

2.内核:实现操作系统的核心功能,包括进程管理、内存管理、文件系统管理等。

这一层是操作系统的核心,负责管理和调度系统资源。

3.用户接口层:为用户提供简单友好的界面,解析用户输入的命令并调用内核功能进行处理。

用户可以通过命令行或图形界面与操作系统进行交互。

4. 功能实现4.1 中断处理中断是操作系统与外部设备通信的重要机制,我们的操作系统设计中实现了基本的中断处理功能。

通过在硬件抽象层中捕获和处理硬件的中断信号,内核可以对中断进行相应的处理,保证系统的响应能力和稳定性。

4.2 进程调度进程调度是操作系统中的重要任务之一,它决定了系统如何分配和调度上下文切换。

我们的操作系统设计中实现了一个简单的进程调度算法,通过时间片轮转算法和优先级调度算法来管理多个进程的执行顺序,以提高系统的吞吐量和响应性能。

4.3 内存管理内存管理是操作系统中必不可少的功能,它负责对系统内存的分配和回收。

我们的操作系统设计中实现了基本的内存管理功能,包括内存分区、内存空闲管理和地址映射等。

通过合理的内存管理,可以提高系统的内存利用率和性能。

课程设计报告--操作系统

课程设计报告--操作系统

操作系统课程设计报告XX大学计算机科学与教育软件学院计算机系12级计算机专业*班(学号:1200002***)(班内序号:36)2015年1月8日一、设计目的学习完《操作系统》课程后,进行的一次全面的综合训练,通过课程设计,让更好地掌握操作系统的原理及实现方法,加深对操作系统基础理论和重要算法的理解,加强动手能力。

二、设计要求从课程设计的目的出发,通过设计工作的各个环节,达到以下要求:两人一组,每组从所给题目中任选一个(如自拟题目,需经指导教师同意),每个学生必须独立完成课程设计,不能相互抄袭,同组者文档不能相同;设计完成后,将所完成的工作交由指导教师检查;要求写出一份详细的设计报告。

三、设计内容课题、处理机调度程序:选择一个调度算法,实现处理机调度。

设计目的:在多道程序和多任务系统中,系统内同时处于就绪状态的进程可能有若干个。

也就是说能运行的进程数大于处理机个数。

为了使系统中的进程能有条不紊地工作,必须选用某种调度策略,选择一进程占用处理机。

要求设计一个模拟处理机调度算法,以巩固和加深处理机调度的概念。

四、设计要求1)进程调度算法包括:时间片轮转法,短作业优先算法,动态优先级算法。

2)可选择进程数量3)本程序包括三种算法,用C语言实现,执行时在主界面选择算法(可用函数实现)(进程数,运行时间,优先数由随机函数产生)执行,显示结果。

五、设计思路及算法思想1、建立循环链。

节点情况如下:struct pcb{char id; //进程标识数int arrive_time; //进程的到达时间int run_time; //进程运行时间int priority; //进程优先级数int finish_time; //进程完成时间int cycling_time; //进程周转时间float right_cycling_time;//带权周转时间int backup_run_time; //备份进程运行时间int back_priority; //备份进程优先级数struct pcb *next;};注:进程运行在具体调度算法里会改变(减到零),在输出时需要数出运行时间所以要备份。

操作系统课程设计报告范例

操作系统课程设计报告范例

操作系统课程论文院系:计算机学院班级:2007计算机科学技术1班姓名:曹作西学号:2007123456指导教师:xxx完成时间:2010.01东莞理工学院摘要本文分析面向对象教学操作系统EOS的系统结构和代码构成,通过源代码分析学习该系统的进程有关数据结构,掌握其进程创建过程、线程创建过程和上下文切换方法,理解其进程管理的机理,学习其面向对象实现机制,锻炼大型软件源代码阅读技能,以加深对操作系统原理知识点的理解和掌握,了解系统程序的实现方法,学习EOS面向对象程序设计技术。

一、课程设计任务和分工本次课程设计的任务是从进程管理代码的阅读与改进(包括进程创建、进程同步和进程调度四个实验)、设备驱动代码的阅读与改进、内存管理代码的阅读与改进、系统启动代码的阅读与改进、文件系统代码的阅读与改进等五个题目中任选一个,分组完成,每组人数为1—5人。

课程设计内容是对代码通过阅读源代码,理解EOS操作系统的结构、设计技术,分析其执行流程,并对其功能进行改进和增强,以达到更好地掌握操作系统原理与技术的目的。

本文分工是阅读EOS进程创建过程,并画出系统数据结构和主要流程图。

二、实现原理和数据结构1.实验原理阅读EOS进程创建源代码,通过EOS实验环境的程序调试过程理解其执行流程,在此基础上画出EOS进程创建的源代码。

2.数据结构所在源文件ki.h:内核支撑模块的内部函数及变量的声明mi386.h:i386 内存相关。

obp.h: 对象管理模块的内部头文件。

psp.h:进程管理模块的内部头文件。

kdb.h:内核调试器接口声明。

ke.h:系统支撑模块对外接口的头文件,供内核其它模块使用。

3.数据结构名称和位置进程对象结构体:PROCESS,psp.h线程对象结构体:THREAD,ps.h对象类型结构体:OBJECT_TYPE, obp.h对象头结构体:OBJECT_HEADER, obp.h上下文环境结构体:CONTEXT4. 数据结构(1)进程结构体typedef struct _PROCESS {BOOLEAN System; // 是否系统进程UCHAR Priority; // 进程的优先级PMMPAS Pas; // 进程地址空间PHANDLE_TABLE ObjectTable;进程的的内核对象句柄表LIST_ENTRY ThreadListHead; // 进程线程链表头PTHREAD PrimaryThread; // 主线程指针LIST_ENTRY WaitListHead;// 等待队列,所有等待进程结束的线程都在此队列等待。

操作系统课程设计报告

操作系统课程设计报告

实践课设计报告课程名称操作系统课程设计模拟设计内存管理中的地址题目转换(动态分区、页式十进制)学院班级学号姓名指导教师年月日课程设计任务书学生姓名:专业班级:指导教师:工作单位:题目: 模拟设计内存管理中的地址转换(动态分区、页式十进制)初始条件:1.预备内容:阅读操作系统的内存管理章节内容,理解动态分区、页式、段式和段页式存储管理的思想及相应的分配主存的过程。

2.实践准备:掌握一种计算机高级语言的使用。

要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1.下列内部存储器管理中地址转换,在完成指定存储管理技术中的地址转换基础上还可以选择其它内部存储器管理中的地址转换进行模拟设计并实现:⑴动态分区方案,用最先适用算法对作业实施内存分配,然后把作业地址空间的某一逻辑地址转换成相应的物理地址。

能够处理以下的情形:输入某一逻辑地址,程序能判断地址的合法性,如果合法,计算并输出相应的物理地址。

如果不能计算出相应的物理地址,说明原因。

⑵页式存储管理中逻辑地址到物理地址的转换(十进制)。

能够处理以下的情形:输入某一十进制逻辑地址,能检查地址的合法性,如果合法进行转换,否则显示“地址非法”;物理地址用十进制表示。

⑶页式存储管理中逻辑地址到物理地址的转换(八进制)。

能够处理以下的情形:输入某一八进制逻辑地址,能检查地址的合法性,如果合法进行转换,否则显示“地址非法”;物理地址用八进制表示。

⑷页式存储管理中逻辑地址到物理地址的转换(十六进制)。

能够处理以下的情形:输入某一十六进制逻辑地址,能检查地址的合法性,如果合法进行转换,否则显示“地址非法”;物理地址用十六进制表示。

⑸段式存储管理中逻辑地址到物理地址的转换。

能够处理以下的情形:指定内存的大小,进程的个数,每个进程的段数及段大小;能检查地址的合法性,如果合法进行转换,否则显示地址非法的原因。

⑹段页式存储管理中逻辑地址到物理地址的转换。

操作系统课程设计总结报告范文

操作系统课程设计总结报告范文
5.1目的
5.2内容
5.3数据结构
5.4算法设计及流程图
5.5小结
六、银行家算法
6.1目的
6.2内容
6.3数据结构
6.4算法设计及流程图
6.5小结
七、课程总结
操作系统课程设计总结报告
《操作系统课程设计》
总结报告
学期- 第二学期
学院软件学院
ห้องสมุดไป่ตู้学号1
姓名
年 6月 28日
本学期开设了操作系统课程,为了更好的理解操作系统理论,掌握其应用,特设此操作系统实验课程,在该操作系统实验中包括进程管理、存储管理、设备管理和文件管理四个实验部分。
一、进程控制
1.1目的
利用简单的结构和控制方法模拟进程结构、进程状态转换和进程控制。
1.2内容
1、利用简单的结构和控制方法模拟进程结构、进程状态和进程控制,使学生掌握作为操作系统分配资源的基本单位的进程相关的概念。定义PCB(能够采用静态结构或动态结构),在实验中只需建立PCB,用它代表完整的进程。
2、定义进程状态转换方式:进程的状态转换是由进程内部操作或操作系统的控制引起,由于无法实现这些功能,学生能够采用随机数方法或键盘控制方法模拟,并实现对应的控制程序。随机方法指产生1-6的随机数,分别代表创立进程(c)、结束进程(e)、进程阻塞(b)、激活进程(w)、调度进程(p)、时间片到(t)等事件;键盘模拟方法指定义6种按键代表以上6种事件。
3、创立进程的过程中加入连续存储管理的可变分区的分配算法,可采用最佳适应算法,在结束进程的同时完成内存分区的回收算法,保证连接成一个连续空闲区。
1.3数据结构
建立三个队列,分别是就绪队列,执行队列,阻塞队列。并写出相应的出队入队及初始化函数。三个结构体,分别是链队结构体,进程结构体,空闲表结构体。有一个表,一个空余表。

操作系统课程设计报告模板

操作系统课程设计报告模板

中文题目英文题目设计报告作者:学生1 学生2 学生3 学生4 学生5 指导教师:李新荣团队照片口号:《操作系统课程设计》任务书设计目的:本课程设计是学生学习完《操作系统》课程后,进行的一次全面的综合训练,通过课程设计,让学生更好地掌握操作系统的原理及实现方法,加深对操作系统基础理论和重要算法的理解,加强学生的动手能力。

设计时间:两周。

设计要求:1.每5人组成一个团队,每个团队开发一个操作系统内核,内核具有传统操作系统的基本功能,包括:处理机管理、内存管理、设备管理、作业管理、用户接口等。

每部分的算法可根据需要简单或复杂。

2.课程设计做完后,按组进行验收和答辩,验收和答辩合格后,给出相应的成绩。

3.每个团队写一份课程设计报告,要在报告中写明分工情况。

4.课程报告要按照模版撰写,报告中要写明:(1)软件功能描述(2)界面说明(3)程序处理流程(4)任务的定义及实现(5)调试过程中遇到的问题和解决的方法(6)进一步改进方案和应用建议(7)使用说明书设计步骤:1.选定题目,每组提交设计方案(初期检查);2.项目中期检查,每个团队提交中期检查报告,写出目前开发状况;3.项目验收和答辩。

成绩评定:课程设计成绩按100分制计算,评定的依据有考勤、设计文档资料、项目验收和答辩四个成绩组成。

总成绩=考勤*10%+设计文档*30%+项目验收*40%+答辩*20%。

提交的资料:课设完成后要提交项目的设计方案、用户手册、源程序等内容,课设提交具体内容见下面的清单:课设提交内容清单注:(1)开发文档交打印版,提交完整的设计报告。

(2)刻光盘:以上所有内容均放到光盘中,每组一分提交时间:12月18号摘要在计算机网络高速发展的今天,计算机技术不断地更新与完善,无论是硬件还是软件的变更都会在计算机操作系统的设计技术与使用风格上得到体现。

操作系统是计算机系统配置的所有软件中使用最广泛的基础软件,它在整个计算机系统软件中处于中心地位,也是计算机专业课教学中做重要的环节之一。

(完整word版)操作系统课程设计实验报告

(完整word版)操作系统课程设计实验报告

操作系统课程设计报告时间:2015-12-28 〜2013-1-8地点:信息技术实验中心计算机科学与技术专业2013 级2 班07 号2015-12-28目录一.课程设计的目的和意义 (3)二进程调度算法模拟 (4)1 设计目的 (4)2 设计要求 (4)3 使用动态优先权的进程调度算法的模拟 (6)4. ............................................................................................................................................ 程序流程图 (10)5. ............................................................................................................................................ 实验结果 .. (11)6. ............................................................................................................................................ 实验代码 .. (14)7. ............................................................................................................................................ 实验总结 .. (20)三动态分区分配方式模拟 (21)1 设计目的 (21)2 设计要求 (21)3 模拟算法的实现 (21)4 程序流程图 (24)5 实验结果 (24)6 实验代码 (25)7.实验总结 (30)四请求调页存储管理方式模拟 (31)1 设计目的 (31)2 设计要求 (31)3 模拟算法的实现 (32)4 程序流程图 (37)5. ............................................................................................................................................ 实验结果 .. (38)6. ............................................................................................................................................ 实验代码 .. (39)7. ............................................................................................................................................ 实验总结 .. (42)五简单文件系统的实现 (43)1 设计目的 (43)2 设计要求 (43)3 算法的实现 (44)4.程序流程图 (46)5.实验结果 (46)6 实验代码 (47)7.实验总结 (61)操作系统课程设计总结 (62)课程设计的目的和意义目的:1. 根据课堂讲授内容,学生做相应的自主练习,消化课堂所讲解的内容。

《操作系统课程设计》报告范本

《操作系统课程设计》报告范本
intN;/*定义进程的数目*/
voidfirstin(void)
{
if(ready!=NULL)

run=ready;
ready=ready->next;
run->state='R';
run->next=NULL;
}
else
{
run=NULL;
}
}
voidprt1(chara)
{
ﻩcout<<"name"<<" cputime"<<" needtime"<<" count "<<" round"<<" state"<<endl;
intcputime;/*进程消耗的CUP时间*/
intneedtime;/*进程需要的CUP时间*/
intcount;/*进程运行时间*/
charstate;/*进程的状态:'R':运行,'W':等待,'F':结束*/
structnode *next;/*指向下一个进程的指针*/
}PCB;
PCB *finish,*ready,*tail,*run;/*指向三个队列的队首的指针,tail为就绪队列的队尾指针*/
进程的个数,进程的内容(即进程的功能序列)来源于一个进程序列描述文件,另外调度运行结果输出到一个运行日志文件;
设计PCB适用于时间片轮转法;
建立进程队列;
实现时间片轮转调度算法,尽量可视化的展示调度的动态过程。
总结程序设计的开发过程:需求分析、系统设计、系统实现及文档的收集和整理。
三、实验方法与设计分析
cin>>N;

操作系统课程设计报告书

操作系统课程设计报告书

操作系统课程设计题目: 操作系统课程设计学 院 工商学院学 部 信息科学与工程专 业 计算机类学 号 20144229166姓 名 赵林华指导教师 王煜装订线 河北大学工商学院2016 年 6 月24 日目录目录 (2)一、引言 (1)1.1课程设计目的 (1)1.2课程设计内容 (1)1.3小组人数及编程语言 (1)二、需求分析 (1)设备管理 (2)2.1设计任务 (2)2.2设计要求 (2)三算法及数据结构 (2)3.1算法的总体思想(流程) (3)3.2 Equipment模块 (3)3.2.1 功能 (3)3.2.2 数据结构 (3)3.3 cpu模块 (4)3.3.1 功能 (4)3.3.2 数据结构 (4)3.3.3 算法 (5)3.4 form1模块 (5)3.4.1 功能 (5)3.4.2 算法 (6)四、程序设计及实验 (6)五、总结和讨论 (9)六、代码 (10)一、引言1.1课程设计目的通过模拟操作系统的实现,加深对操作系统工作原理理解,进一步了解操作系统的实现方法,并可练习合作完成系统的团队精神和提高程序设计能力。

1.2课程设计内容模拟采用多道程序设计方法的单用户操作系统,该操作系统包括进程管理、存储管理、设备管理、文件管理和用户接口四部分。

1.3小组人数小组人员:赵林华张铭二、需求分析设备管理设备管理设备管理主要包括设备的分配和回收。

模拟系统中有鼠标、键盘、打印机和视频四种设备,采用安全分配方式。

设备采用设备状态的变化还有设备颜色的变化来判断设备所处的状态,当创建文件是就指明了要调用的设备,让后等进程运行时来知道调用的什么设备,最后颜色和状态的变化来反应调用的设备与每个设备所处的状态。

设备用JButton 图标显示,通过灰色和可见色判断是否被调用2.1设计任务设计一个设备管理分配程序,按先来先服务的算法,对设备进行分配。

2.2设计要求设备管理主要包括设备的分配和回收。

操作系统课程设计报告样本

操作系统课程设计报告样本

课程设计报告题 目XXXXX 程序设计课 程 名 称 操作系统课程设计 院 部 名 称 信息技术学院 专 业 计算机科学与技术 班 级 09级计算机科学与技术(X) 学 生 姓 名 何健 学 号 XXXXXXXXXX 课程设计地点 A206 课程设计学时 20 指 导 教 师 何 健金陵科技学院教务处制一、课程设计的目的和要求XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX二、课程设计环境要求1、硬件环境XXXXXXXX2、软件环境XXXXXXXXX三、设计任务介绍及系统需求分析XXXXXXXXX四、概要设计系统分为4个子模块:初始化模块、功能控制模块、下棋操作模块、帮助模块。

初始化模块:该模块主要是用于初始化屏幕信息,包括显示欢迎信息、操作方法和初始棋盘。

功能控制模块:该模块是各个功能函数的集合,主要是被其他模块调用,包括画棋子、胜负判断和行棋转换等功能。

下棋操作模块:该模块用于执行下棋操作。

帮助模块:该模块主要用于显示帮助信息,提示轮到哪方下棋。

系统模块图五、详细设计一.功能模块设计1、初始化模块由两个函数实现:void WelcomeInfo(),显示欢迎信息和按键提示操作。

Void DrawBorad(),用于初始化棋盘,该函数主要是调用系统函数line()函数来实现的。

功能控制模块由以下几个函数实现:void DrawCircle(int x,int y,int color),以指定的颜色在指定的坐标画棋子(圆圈)。

V oid Alternation(),交换行棋方。

Void JudgePlayer(int x,int y),不同的行棋方画不同颜色的棋子(圆圈)。

Int ResultCheck(int x,int y),判断胜负。

下棋操作模块用Done()函数,由Done()函数调用在功能模块中定义的函数以用一些系统函数实现下棋操作。

帮助模块由ShowMessage()函数实现,用于在下棋时提示该轮到哪个玩家行棋了。

操作系统课程设计报告

操作系统课程设计报告

xxxx《操作系统原理》课程设计报告学院:电气与信息工程学院专业班级: xxxx学生姓名: xxx 学号: xxxxxxxx设计地点(单位)___ ______ x____ __ __ __设计题目:____ __ 微型操作系统的设计________________ 完成日期: 2011 年 6 月 17 日指导教师评语: ______________________ _________________ ___________________________________________________________________________ ___________________________________________________________________________ ___________________________________________________成绩(五级记分制):______ __________指导教师(签字):________ ________xxxx设计题目:微型操作系统的设计教研室主任:指导教师:年月日摘要操作系统是一种对计算机硬件资源和软件资源,进行管理的软件。

本学期通过对《操作系统原理》这门课程的学习,对操作系统相关知识有了更进一步的认识。

为了检验与巩固所学习到的知识,要求设计一个微型操作系统能够完成引导操作系统运行,实现实模式到保护模式的转换和加载操作系统内核。

完成本次课程设计,首先,必须配置操作系统编写的所需的环境,包括虚拟机的建立和相应环境建立。

然后,能应用NASM编辑器,还需要一款将汇编指令转换为二进制指令的工具。

关键词:操作系统实模式保护模式虚拟机 NASM目录摘要 (I)1 需求分析 (1)1.1功能需求分析 (1)1.2开发及运行环境需求分析 (2)1.2.1 开发环境 (2)1.2.2 运行环境 (2)2系统设计 (4)2.1 引导程序和模式切换功能设计 (4)2.2 内核设计 (6)2.3 映像文件的设计 (7)3系统测试 (8)4总结 (10)5 致谢 (11)参考文献 (12)1 需求分析本节将从功能的需求分析、开发及运行环境的需求分析进行阐述需求。

操作系统课设报告.docx

操作系统课设报告.docx

谢谢你的观赏成绩:武汉华夏理工学院信息工程学院课程设计题目用多线程同步方法解决读者阅览问题系别信息工程系专业软件工程班级软件1151姓名/学号指导教师杨铭熙年月日目录1.设计目的与要求 (1)1.1设计目的 (1)1.2设计要求 (1)2.设计思想及系统平台 (1)2.1设计思想 (1)2.2系统平台及使用语言 (1)3.详细算法描述 (2)4.源程序清单 (4)5.运行结果与运行情况 (7)6.调试过程 (9)7.总结 (10)本科生课程设计成绩评定表 (11)正文1.设计目的与要求1.1设计目的通过研究linux多线程同步的问题,掌握对信号灯的操作方法,以及加深理解同步算法的思想。

1.2设计要求用多线程同步解决读者阅览问题。

设阅览室有5把椅子,几把椅子可用连续存储单元。

要求:1) 每个读者进入阅览室后,即时显示“Entered”及其线程自定义标识,还同时显示阅览室共有几名顾客及其所坐的位置。

2) 至少有10个读者,每人阅览至少3秒钟。

3) 多个读者须共享操作函数代码。

2.设计思想及系统平台2.1设计思想进程是指在系统中运行的一个应用程序,线程是系统分配处理器时间资源的基本单元,或者说进程之内独立执行的一个单元。

对于操作系统而言,其调度单元是线程。

一个进程至少包括一个进程,通常将线程称为主线程。

一个进程从主线程的执行开始进而创建一个或多个附加线程,就是所谓基于多线程的多任务。

从而理解到我的课程设计所需要的进程数和线程在我的程序中怎么用。

首先座位是一个共享资源,而且有一个数量限制,这里就要用到互斥信号灯的操作和判断资源数量的信号灯。

在算法上要认真仔细思考,弄清逻辑顺序,避免错误使用信号灯而带来的死锁。

2.2系统平台及使用语言本次课程设计是在linux的系统平台下使用C语言实现对读者阅览问题的编程,所使用的工具有gedit编辑器、gcc编译器等。

3.详细算法描述reader函数:第一步:定义一个长度为5的整型数组buffer用来模拟连续的五个座位,一个座位资源信号灯sem_sit,一个互斥信号灯sem_mutual。

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

《操作系统课程设计》报告学号:姓名:班级:指导教师:报告日期:一、课设目的通过对操作系统课程的学习,熟悉进程的概念、进程的管理与存储、进程的调度,通过实践深入理解进程的调度算法。

二、课设任务要求编写一个程序,可以创建若干个虚拟进程,并对若干个虚拟进程进行调度,调度策略为时间片轮转法,主要任务包括:①进程的个数,进程的内容(即进程的功能序列)来源于一个进程序列描述文件,另外调度运行结果输出到一个运行日志文件;②设计PCB适用于时间片轮转法;③建立进程队列;④实现时间片轮转调度算法,尽量可视化的展示调度的动态过程。

○5总结程序设计的开发过程:需求分析、系统设计、系统实现及文档的收集和整理。

三、实验方法与设计分析每个进程有一个进程控制块( PCB)表示。

进程控制块可以包含如下信息:进程名、优先数、到达时间、需要运行时间、已用CPU时间、进程状态等等。

据需要设计调查计划调查、收集数据,能按要求整理数据,在统计表进程的优先数及需要的运行时间可以事先人为地指定(也可以由随机数产生)。

进程的到达时间为输入进程的时间。

,计算机,千千万万中小创业者渴望成功高中语文,语文试卷,计算机摇篮课进程的运行时间以时间片为单位进行计算。

每个进程的状态可以是就绪 W(Wait)、运行R(Run)、或完成F(Finish)三种状态之一。

式,因此上开店成为了一种潮流,并且越来越多高中语文,语文试卷,计算机就绪进程获得 CPU后都只能运行一个时间片。

用已占用CPU时间加1来表示。

卷,计算机络购物高中语文,语文试卷,计算机市场潜力还远未被释放课件同如果运行一个时间片后,进程的已占用 CPU时间已达到所需要的运行时间,则撤消该进程,如果运行一个时间片后进程的已占用CPU时间还未达所需要的运行时间,也就是进程还需要继续运行,此时应将进程的优先数减1(即降低一级),然后把它插入就绪队列等待CPU。

语文,语文试卷,计算机,第5代速度达自动软件,不用东奔西走高中语文,语文每进行一次调度程序都打印一次运行进程、就绪队列、以及各个进程的 PCB,以便进行检查。

么方法?(学生说出自己的检验方法)哪位说一说,怎样把结果代入原题检重复以上过程,直到所要进程都完成为止四、程序流程图是五、程序源代码#include"stdafx.h"#include<stdio.h>#include<stdlib.h>#include<string.h>#include<ctype.h>#include<iostream>#include<fstream>using namespace std;ofstream myfile("bb.txt",ios::app||ios::trunc);typedef struct node{char name[10];/*进程名*/int round; /*进程分配的时间片*/int cputime; /*进程消耗的CUP时间*/int needtime; /*进程需要的CUP时间*/int count; /*进程运行时间*/char state; /*进程的状态:'R':运行,'W':等待,'F':结束*/struct node *next;/*指向下一个进程的指针*/}PCB;PCB *finish,*ready,*tail,*run;/*指向三个队列的队首的指针,tail为就绪队列的队尾指针*/int N;/*定义进程的数目*/void firstin(void){if(ready!=NULL){run=ready;ready=ready->next;run->state='R';run->next=NULL;}else{run=NULL;}}void prt1(char a){cout<<"name" <<" cputime" <<" needtime"<<" count "<<" round"<<" state"<<endl;myfile<<"name" ;myfile<<" cputime";myfile <<" needtime";myfile<<" count ";myfile<<" round";myfile<<" state"<<endl;}void prt2(char a,PCB *p){cout<<p->name<<" "<<p->cputime<<" "<<p->needtime<<" "<<p->count<<" "<<p->round<<" "<<p->state<<endl;myfile<<p->name<<" ";myfile<<p->cputime<<" ";myfile<<p->needtime<<" ";myfile<<p->count<<" ";myfile<<p->round<<" ";myfile<<p->state<<endl;}void prt(char algo){PCB *p;prt1(algo);if(run!=NULL){prt2(algo,run);}p=ready;while(p!=NULL){prt2(algo,p);p=p->next;}p=finish;while(p!=NULL){prt2(algo,p);p=p->next;}getchar();}void insert(PCB *q){tail->next=q;tail=q;q->next=NULL;}void rcreate_task(char algo){PCB *p;int n,time;char na[10];ready=NULL;finish=NULL;run=NULL;cout<<"请输入进程数目N:";cin>>N;for(n=0;n<N;n++){p=(PCB*)malloc(sizeof(PCB));cout<<"Enter the name of process:"<<endl; cin>>na;cout<<"Enter the time of process:"<<endl; cin>>time;strcpy(p->name,na);p->cputime=0;p->needtime=time;p->count=0;p->state='W';p->round=2;if(ready!=NULL){insert(p);}else{p->next=ready;ready=p;tail=p;}}run=ready;ready=ready->next;run->state='R';cout<<"创建成功。

"<<endl;}void chakan(char algo){if(run->count==run->round){run->count=0;if(ready!=NULL){run->state='W';insert(run);firstin();}}prt(algo);}void roundrun(char algo){while(run!=NULL){run->cputime=run->cputime+1;run->needtime=run->needtime-1;run->count=run->count+1;if(run->needtime==0){run->next=finish;finish=run;run->state='F';run=NULL;if(ready!=NULL){firstin();}}else{if(run->count==run->round){run->count=0;if(ready!=NULL){run->state='W';insert(run);firstin();}}}prt(algo);}}void caidan(){cout<<"**************************主页************************"<<endl; cout<<"*******************1.I 创建若干进程*******************"<<endl; cout<<"*******************2.C 进程进行查看*******************"<<endl; cout<<"*******************3.O 进程进行调度*******************"<<endl; cout<<"*******************4.H 结束 ********************"<<endl;}int main(){ loop1:caidan();char algo;cin>>algo;if(algo=='i'||algo=='I'){rcreate_task(algo);}else if(algo=='c'||algo=='C'){chakan(algo);}else if(algo=='o'||algo=='O'){roundrun(algo);}else if(algo=='h'||algo=='H'){goto loop2;}goto loop1;loop2:myfile.close();return 0;}六、运行结果七、问题及解决方法(1) 处理器调度总是选队首进程运行。

相关文档
最新文档