操作系统课程设计35815
操作系统-课程设计
操作系统-课程设计一、教学目标本章节的教学目标分为三个部分:知识目标、技能目标和情感态度价值观目标。
知识目标:通过本章节的学习,学生需要掌握操作系统的概念、原理和基本功能,包括进程管理、内存管理、文件系统和设备管理等方面的知识。
技能目标:学生能够运用所学知识分析和解决操作系统相关的问题,具备基本的操作系统使用和维护能力。
情感态度价值观目标:培养学生对操作系统的兴趣和好奇心,提高学生对计算机科学的热爱和责任感。
二、教学内容本章节的教学内容主要包括以下几个部分:1.操作系统的概念和作用:介绍操作系统的定义、功能和作用,以及操作系统的发展历程。
2.进程管理:讲解进程的定义、特点和基本管理方法,包括进程调度、进程同步和进程通信等内容。
3.内存管理:介绍内存的概念、分类和分配策略,以及内存管理的具体方法,如分页、分段和虚拟内存等。
4.文件系统:讲解文件和文件夹的概念、方式和存储结构,以及文件系统的管理方法,如目录结构、文件读写和磁盘空间分配等。
5.设备管理:介绍设备的分类、设备驱动程序和设备管理的基本方法,包括输入输出控制、中断处理和DMA传输等。
三、教学方法为了提高教学效果,本章节将采用多种教学方法相结合的方式进行教学:1.讲授法:通过讲解操作系统的概念、原理和基本功能,使学生掌握操作系统的相关知识。
2.案例分析法:通过分析具体的操作系统案例,使学生更好地理解和掌握操作系统的原理和方法。
3.实验法:安排实验室实践环节,让学生亲自动手进行操作系统的实验操作,提高学生的实际操作能力。
4.讨论法:学生进行小组讨论,分享学习心得和经验,促进学生之间的交流与合作。
四、教学资源为了支持本章节的教学,我们将准备以下教学资源:1.教材:选用权威、实用的操作系统教材,为学生提供系统、全面的学习资料。
2.参考书:推荐学生阅读一些优秀的操作系统参考书籍,丰富学生的知识体系。
3.多媒体资料:制作精美的PPT课件,为学生提供直观、生动的学习界面。
操作系统课程设计课程设计
操作系统课程设计简介操作系统课程设计旨在让学生通过设计和开发一个简单的操作系统来深入了解操作系统的基本概念和原理。
在本文档中,我们将介绍课程设计的主要内容,包括设计目标、技术要求和项目要求。
设计目标操作系统课程设计的主要设计目标是让学生掌握操作系统的基本原理和技术。
通过这个项目,学生应该能够:•理解操作系统的基本概念和原理•实现一个简单的操作系统内核•学会编写和调试操作系统的核心代码•掌握计算机系统底层的技术和知识技术要求操作系统课程设计的技术要求主要包括以下几点:编程语言操作系统课程设计要求学生使用C或Assembly等语言编写代码。
因为这些语言可以更好地控制计算机硬件,并且能够更好地实现操作系统。
系统架构操作系统课程设计要求学生设计和开发一个基于x86架构的操作系统内核。
这是因为x86架构被广泛使用,并且有很多相关的资料和资源可以参考。
开发环境操作系统课程设计要求学生使用VMware或VirtualBox等模拟器来模拟计算机硬件,以便在虚拟环境中测试和调试操作系统代码。
相关知识操作系统课程设计要求学生掌握计算机系统底层的知识和相关技术,如计算机组成原理、汇编语言、操作系统原理等。
项目要求操作系统课程设计的项目要求主要包括以下几点:设计和实现内核学生需要设计和实现一个简单的操作系统内核。
该内核应该具有基本的操作系统功能,如进程调度、CPU调度、内存管理等。
设计和实现系统调用学生需要设计和实现系统调用,并提供相应的API。
系统调用应该能够支持常见的操作系统功能,如文件管理、进程管理等。
实现Shell学生需要实现一个简单的Shell程序,该程序应该能够支持常见的Shell命令,并且能够与操作系统内核进行交互。
测试和调试学生需要在虚拟机中测试和调试操作系统内核和相关代码。
该过程需要包括单元测试、集成测试和系统测试等不同层次的测试。
总结操作系统课程设计是一门重要的计算机科学课程,对于学生掌握操作系统的基本原理和技术是非常重要的。
操作系统课程设计
操作系统课程设计一、课程设计要求本次操作系统课程设计,要求选定一个特定功能的操作系统,进行设计和开发。
1.系统要支持多用户同时登录。
2.系统要支持进程间通信,实现用户之间的数据传输。
3.系统要具备文件管理系统,支持文件的创建、读取、写入和删除等基本操作。
4.系统的安全性能要得到有效保障。
5.系统要提供一个用户界面,使得用户可以方便地使用该操作系统。
二、操作系统设计为了满足以上的需求,我们决定设计一个基于Linux内核的操作系统。
1. 多用户登录系统我们将通过在系统中建立多个用户账户,来实现多用户同时登录。
每个用户都有自己的目录,可以在此目录下进行文件的创建、读取、写入和删除等操作。
同时,为了保证安全性,我们将采用访问控制列表(ACL)的方式,对用户进行权限控制。
2. 进程间通信系统在本系统中,我们将采用信号量(Semaphore)的方式,通过在进程间共享内存,来实现进程间的通信。
举例说明,当两个用户需要进行数据传输时,他们可以通过先创建一个共享内存段,然后分别将数据写入到共享内存段中,再通知对方已经完成写入操作,并等待另一个进程完成相应的读取操作。
3. 文件管理系统本系统的文件管理系统将采用Linux系统的文件系统。
每个用户都会有自己的文件目录,可以在该目录下进行文件的创建、读取、写入和删除等操作。
同时,为了更好地实现用户文件管理,我们还将为每个用户提供一个专门的文件管理界面。
4. 安全性保障为了保证系统的安全性,我们将采用一系列措施,来限制用户对系统的访问。
具体措施包括:•设置密码策略:对用户密码的复杂度、有效期限等进行限制。
•限制用户权限:通过ACL来实现权限的管理,保证用户只能访问自己的目录和文件。
•提供安全日志管理机制:对系统的操作进行记录和检查,保证系统运行的安全性。
5. 用户界面设计为了方便用户使用本系统,我们将提供一个友好、易用的用户界面。
该界面将采用图形界面,提供一些基本的操作按钮,比如文件管理、用户管理、程序运行等,同时还将提供一些实用的小工具,比如日历、时钟等。
操作系统课程设计
• 一、设计目的
– 学完《操作系统》课程后,进行一次全面的综合训练。 通过本课程设计,让学生更好地掌握计算机操作系统 的原理,加深对操作系统基础理论和重要算法的理解, 加强学生的动手能力。
– 在OS理论基础上,掌握Linux操作系统的使用方法;了 解Linux系统内核代码结构;掌握实例操作系统的实现 方法。
题目6
• 要求:进程调度的模拟实现 • 内容:
题目7
• 要求:生产者-消费者问题的模拟实现 • 内容:
题目8
• 要求:页面置换算法的模拟实现 • 内容:
– 设计一个虚拟存储区和内存工作区,编程序演 示算法的具体实现过程,并计算访问命中率。
– 需要实现的算法:
• 先进先出算法 FIFO • 最近最久未使用算法 LRU
课程设计报告内容与格式
• 主要内容
– (1)概述:设计主要完成的任务和解决的问题 – (2)设计原理:涉及的概念与原理 – (3)详细设计与编码:算法流程图、编码 – (4)结构分析 – (5)设计小结:本设计的特色、经验和体会 – (6)参考资料
• 大概格式如下
二、设计要求与资料提交
– 题目选定或自定,题目可以相同。但每学生必须 独立完成课程设计,严禁抄袭。
– 第2周周三、周四下午课设答辩,每学生讲述5 分钟,并提交一份正式纸质报告、以及电子文档 和源程序文档,交给指导教师。
三、设计内容
• 题目1:
• 要求:熟悉和理解Linux编程环境
• 内容
1)编写一个C程序,实现文件拷贝功能。
题目5
• 要求:银行家算法的模拟实现
• 内容:
– 用C/C++编程据结构
• 1)可利用资源向量Available • 2)最大需求矩阵Max • 3)分配矩阵Allocation • 4)需求矩阵Need
操作系统课程设计(完整规范版)
操作系统课程设计(完整规范版)一、设计目的操作系统课程设计旨在让学生深入了解操作系统的基本原理,掌握操作系统的设计与实现方法,培养学生在实际操作系统中分析和解决问题的能力。
通过本次课程设计,学生将能够:1. 加深对操作系统理论知识的理解与应用;2. 提高动手实践能力,培养创新精神和团队协作意识;3. 为今后从事操作系统相关领域的研究和工作奠定基础。
二、设计要求(1)进程管理:包括进程的创建、撤销、调度等;(2)内存管理:实现内存分配、回收、页面置换等;(3)文件系统:实现文件的创建、删除、读写等操作;(4)设备管理:实现设备的分配、回收、驱动等功能。
(1)代码规范:编写清晰、易读、易维护的代码;(3)团队协作:合理分工,确保团队成员共同参与、共同进步。
三、设计步骤1. 需求分析:分析课程设计所需实现的功能,明确各个模块的具体要求;2. 概要设计:根据需求分析,制定总体设计方案,划分模块,确定模块间接口;3. 详细设计:针对每个模块,进行具体实现方案的设计;4. 编码实现:按照设计文档,编写代码,实现各个功能模块;5. 测试与调试:对实现的功能进行测试,发现问题并进行调试;6. 优化与改进:根据测试结果,对代码进行优化,提高系统性能;四、预期成果1. 完成一套具有基本功能的模拟操作系统,能够演示进程管理、内存管理、文件系统和设备管理的主要操作;2. 提供完整的,包括注释,以便他人理解和学习;3. 形成一份详尽的课程设计报告,记录设计过程中的思考、遇到的问题及解决方案;4. 通过课程设计,提升个人在操作系统领域的理论知识和实践能力。
五、评价标准1. 功能完整性:各功能模块是否按照要求实现,系统是否能正常运行;3. 创新性:设计过程中是否有独特的想法,是否对现有技术有所改进;4. 团队协作:团队成员之间沟通是否顺畅,分工是否合理,协作是否高效;5. 文档质量:课程设计报告是否详细、准确,是否能够完整反映设计过程和成果。
c操作系统课课程设计
c操作系统课课程设计一、教学目标本课程的教学目标是让学生掌握操作系统的基本原理和概念,了解操作系统的设计和实现方法,熟练使用操作系统的基本命令和工具,具备基本的操作系统编程能力。
具体来说,知识目标包括:掌握操作系统的五大功能模块,理解进程管理、内存管理、文件系统、输入/输出系统的基本原理和概念;掌握操作系统的主要发展和历史,了解操作系统的研究意义和应用领域。
技能目标包括:能够使用操作系统的基本命令和工具,进行文件操作、进程管理等;能够编写简单的操作系统程序,实现进程创建、进程同步等功能。
情感态度价值观目标包括:培养学生对操作系统的兴趣和热情,提高学生的问题解决能力和创新意识,培养学生的团队合作精神和自主学习能力。
二、教学内容本课程的教学内容主要包括操作系统的原理、设计和应用。
具体安排如下:1.引言:介绍操作系统的定义、发展历史和主要功能。
2.进程管理:介绍进程的概念、进程的状态、进程控制块、进程同步、进程通信等内容。
3.内存管理:介绍内存分配策略、内存保护、虚拟内存、页面置换算法等内容。
4.文件系统:介绍文件和目录的概念、文件存储结构、文件访问控制、文件系统的设计等内容。
5.输入/输出系统:介绍输入/输出设备的管理、设备驱动程序、中断处理、DMA传输等内容。
6.操作系统实例:分析Linux或Windows等主流操作系统的原理和实现。
三、教学方法本课程采用讲授法、讨论法、案例分析法和实验法等多种教学方法。
1.讲授法:用于讲解操作系统的原理、概念和算法。
2.讨论法:用于讨论操作系统的设计方法、优缺点比较和问题解决。
3.案例分析法:通过分析实际操作系统实例,让学生深入理解操作系统的实现和应用。
4.实验法:通过编写简单的操作系统程序,让学生动手实践,提高编程能力和问题解决能力。
四、教学资源本课程的教学资源包括教材、参考书、多媒体资料和实验设备。
1.教材:选择《操作系统概念》或《现代操作系统》等主流教材作为主要教学资源。
操作系统课设课程设计
操作系统课设课程设计一、课程目标知识目标:1. 理解操作系统的基本概念,掌握操作系统的功能和作用;2. 学习操作系统的五大组成部分及其相互关系,了解常见操作系统的类型及特点;3. 掌握进程与线程的概念、状态及调度算法,了解并发与并行计算的基本原理;4. 学会分析文件系统的结构和管理方法,了解存储设备的使用和数据恢复技术;5. 了解操作系统在资源管理、安全性、性能优化方面的策略和实践。
技能目标:1. 能够运用所学知识,编写简单的进程调度算法,分析调度效果;2. 掌握操作系统中进程同步与互斥的基本方法,能够解决简单的并发问题;3. 学会使用操作系统提供的接口和工具,进行简单的系统编程和调试;4. 能够设计和实现一个简单的文件系统,进行文件的基本操作;5. 培养学生运用所学知识解决实际问题的能力,提高学生的动手实践能力。
情感态度价值观目标:1. 培养学生对操作系统课程的学习兴趣,激发学生的学习积极性;2. 培养学生具备良好的团队合作精神和沟通能力,提高学生在团队协作中的责任感;3. 培养学生具备严谨的科学态度和良好的学术道德,尊重知识产权;4. 通过学习操作系统的发展历程,培养学生热爱祖国、为我国信息技术产业发展贡献力量的情怀。
本课程针对高中年级学生,结合学生已具备的计算机基础知识和认知水平,注重理论与实践相结合,旨在提高学生对操作系统的理解与应用能力。
课程目标既关注知识传授,又强调技能培养和情感态度价值观的塑造,为学生的全面发展奠定基础。
在教学过程中,将根据课程目标分解具体学习成果,制定相应的教学策略和评估方法。
二、教学内容1. 操作系统的概念与作用:介绍操作系统的定义、发展历程、功能及作用;教材章节:第一章 操作系统概述2. 操作系统的五大组成部分:讲解处理器管理、存储管理、设备管理、文件管理、用户接口;教材章节:第二章 操作系统的基本组成3. 进程与线程:分析进程与线程的概念、状态、调度算法及并发与并行计算;教材章节:第三章 进程管理4. 进程同步与互斥:探讨操作系统中进程同步与互斥的方法,案例分析;教材章节:第四章 进程同步与互斥5. 存储管理:介绍内存分配、回收策略,虚拟内存技术;教材章节:第五章 存储管理6. 文件系统:讲解文件系统的结构、管理方法,文件操作及存储设备;教材章节:第六章 文件系统7. 操作系统性能与安全性:分析操作系统的性能优化策略、安全性措施;教材章节:第七章 操作系统性能与安全性8. 实践环节:安排操作系统相关的编程实践、案例分析等,巩固所学知识;教材章节:实践环节教学内容按照教材章节进行组织,确保科学性和系统性。
操作系统-课程设计
操作系统-课程设计一、课程目标知识目标:1. 理解操作系统的基本概念、功能、类型及发展历程;2. 掌握操作系统的五大功能模块(处理器管理、存储器管理、设备管理、文件管理、用户接口)的工作原理;3. 了解操作系统的安全性、稳定性和性能评价标准;4. 熟悉至少一种主流操作系统(如Windows、Linux)的安装、配置及使用。
技能目标:1. 能够使用操作系统基本命令进行文件管理、系统监控等操作;2. 学会编写简单的批处理脚本,实现自动化操作;3. 掌握操作系统设置、优化及故障排除的基本方法;4. 能够分析操作系统的性能问题,并提出合理的解决方案。
情感态度价值观目标:1. 培养学生对操作系统的兴趣,激发学习热情;2. 培养学生的团队协作精神,学会在团队中共同解决问题;3. 增强学生的信息安全意识,遵守网络道德规范,尊重知识产权;4. 培养学生的创新意识,敢于尝试新事物,勇于克服困难。
课程性质:本课程为信息技术学科,结合学生年级特点,注重理论与实践相结合,培养学生的实际操作能力。
学生特点:学生具备一定的计算机操作基础,对操作系统有一定了解,但深入理解不足,需要通过课程学习提高认识。
教学要求:以学生为主体,教师为主导,注重启发式教学,引导学生主动探究,提高学生的实践操作能力。
通过课程学习,使学生在知识、技能和情感态度价值观方面取得具体的学习成果,为后续相关课程的学习打下坚实基础。
二、教学内容1. 操作系统的基本概念:介绍操作系统的定义、功能、类型及发展历程,对应教材第一章内容。
2. 操作系统五大功能模块:- 处理器管理:讲解处理器分配、调度算法等,对应教材第二章;- 存储器管理:介绍内存分配、回收、地址映射等,对应教材第三章;- 设备管理:阐述设备分配、I/O调度、缓冲管理等,对应教材第四章;- 文件管理:讲解文件系统结构、文件存储、目录管理等,对应教材第五章;- 用户接口:介绍命令行接口、图形用户接口等,对应教材第六章。
操作系统课程设计
一、设计背景
操作系统是计算机科学与技术专业中一门重要的基础课程。通过操作系统课程的学习与设计,可以让学生综合运用所学的计算机基础知识与技术,深入理解操作系统的原理与设计,培养学生的系统分析与设计能力,提高其对计算机系统的理解和掌握。
二、设计目标
本次操作系统课程设计的目标是设计一个简单的操作系统,使学生能够通过该项目的实践,加深对操作系统原理的理解,掌握操作系统的设计与实现方法,培养学生的系统编程能力。
•进程管理模块:负责进程的创建、终止、调度等操作;
•内存管理模块:负责内存的分配与回收,实现虚拟内存管理;
•文件系统模块:负责文件的创建、打开、读写等操作;
•输入输出模块:负责处理输入输出设备的控制与数据传输。
2.
学生需要选择一种合适的进程调度算法,结合自己设计的操作系统,实现进程的调度与管理。可以选择的调度算法包括FCFS、SJF、RR、优先级调度等。
五、完成时间
学生需要根据教师的要求,按时完成操作系统课程设计的所有任务。完成时间一般为一个学期,具体时间安排由教师决定。
六、评价方法
学生的操作系统课程设计将进行评价,根据以下几个方面进行评分:
•设计报告质量:包括设计思路、实现方法和测试结果的描述与分析;
•系统功能完整性:系统的各个功能是否齐全并能正常运行;
•系统性能优化:是否进行了系统性能的优化,提高了系统的性能;
•代码质量:代码的规范性、可读性和可维护性;
•团队合作能力:学生在项目中的团队合作表现等。
七、ቤተ መጻሕፍቲ ባይዱ结
操作系统课程设计是一项重要的实践性项目,通过对操作系统的实际设计与实现,学生既可以提高对操作系统原理的理解,又可以培养系统编程与分析问题的能力。通过本次设计,学生可以更加深入地掌握操作系统的各个方面,为以后从事相关工作打下坚实的基础。
操作系统课程设计指导书2015
操作系统课程设计指导书赵伟华梁红兵刘真2013年2月计算机学院目录第一章操作系统课程设计的内容与实施方法.............................................................. - 3 -1.1 操作系统课程设计总体要求............................................................................. - 3 -1.2 操作系统课程设计的内容................................................................................. - 3 -1.3 操作系统课程设计实施方案............................................................................. - 3 - 第二章基于DOS的多任务系统的实现........................................................................ - 5 -2.1 设计目的和内容要求......................................................................................... - 5 -2.2 线程描述.......................................................................................................... - 6 -2.3 线程的创建和撤消.......................................................................................... - 8 -2.4 线程调度设计................................................................................................ - 10 -2.5 基本实例程序的实现.................................................................................... - 23 -2.6 线程的阻塞和唤醒........................................................................................ - 26 -2.7 线程的同步与互斥........................................................................................... - 26 -2.8 利用消息缓冲队列通信机制实现线程间通信............................................... - 27 - 第三章简单文件系统的实现.................................................................................... - 32 -3.1 设计目的和内容要求......................................................................................... - 32 -3.2 预备知识............................................................................................................. - 33 -3.3实例系统的设计与实现...................................................................................... - 36 -操作系统课程设计第一章操作系统课程设计的内容与实施方法1.1 操作系统课程设计总体要求1.遵守机房纪律,服从机房调度。
操作系统课程设计(完整规范版)
操作系统课程设计(完整规范版)一、设计目的操作系统课程设计旨在让学生深入了解操作系统的基本原理,掌握操作系统设计与实现的基本方法,培养学生在操作系统领域的实际动手能力和创新思维。
通过本次课程设计,学生应能够:1. 理解操作系统的功能、结构和关键技术;2. 学会分析实际操作系统的性能和特点;3. 设计并实现一个简单的操作系统模块或功能;4. 提高团队协作和沟通能力。
二、设计要求1. 设计内容:根据课程所学,选择一个具有实际意义的操作系统模块进行设计与实现。
模块可包括:进程管理、内存管理、文件系统、设备管理等。
2. 设计规范:遵循软件工程的基本原则,确保代码的可读性、可维护性和可扩展性。
3. 团队协作:本次课程设计以小组为单位进行,每组35人。
小组成员需明确分工,共同完成设计任务。
(2):包括所有设计文件、代码及相关文档;(3)演示PPT:汇报课程设计成果,阐述设计思路、实现过程及创新点。
三、设计流程1. 需求分析:分析所选操作系统模块的功能需求,明确设计目标。
2. 系统设计:根据需求分析,设计系统架构,划分模块,确定各模块的功能和接口。
3. 编码实现:按照系统设计,编写代码,实现各模块功能。
4. 测试与调试:对实现的系统模块进行功能测试、性能测试和兼容性测试,确保系统稳定可靠。
5. 优化与改进:根据测试结果,对系统进行优化和改进。
7. 演示与答辩:制作演示PPT,汇报课程设计成果,回答评委提问。
四、评分标准1. 设计报告(30%):内容完整、结构清晰、表述准确、格式规范。
2. 代码质量(40%):代码可读性、可维护性、可扩展性、创新性。
3. 演示与答辩(20%):PPT制作、汇报效果、回答问题。
4. 团队协作(10%):分工明确、协作高效、沟通交流。
五、预期成果1. 理论与实践相结合:将课堂上所学的操作系统理论知识运用到实际设计中,加深对操作系统的理解。
2. 技能提升:提高编程能力,掌握操作系统核心模块的设计与实现技巧。
《计算机操作系统》课程设计
计算机操作系统课程设计1. 引言计算机操作系统是计算机科学与技术专业中的重要课程之一。
本文档旨在为《计算机操作系统》课程设计提供指导和参考。
课程设计是对所学内容的综合应用,具有一定的实践性和创新性。
通过完成课程设计,学生可以加深对操作系统原理的理解,提升对操作系统的实践能力。
2. 课程设计目标通过本次课程设计,学生应达到以下目标:•理解计算机操作系统的基本原理和功能•掌握操作系统的各类资源调度算法•能够设计和实现简单的操作系统模块•学会使用相关工具和技术进行操作系统的开发和测试•提高解决问题的能力和团队协作能力3. 课程设计内容3.1 任务背景本次课程设计的任务背景是设计一个简单的操作系统,在该操作系统中实现进程管理、内存管理和文件系统等基本功能。
该操作系统应具备如下特性:•多道程序并发执行•内存管理,包括分区管理和页面置换算法•进程调度和资源管理•文件系统,支持文件的创建、打开、读写和删除等操作3.2 设计要求学生需按照以下要求设计和实现操作系统:•使用C/C++等编程语言进行开发•能够进行基本的进程管理,包括进程创建、调度和终止等操作•实现简单的内存管理功能,包括内存分配和释放•实现简单的文件系统,包括文件的读写和管理•进行系统性能测试和性能调优•撰写完整的设计报告,包括设计思路、实现过程和测试结果等3.3 设计流程本次课程设计的大致流程如下:1.确定设计目标和任务背景2.进行系统设计,包括进程管理、内存管理和文件系统设计3.进行系统实现,编写相应的代码4.进行系统性能测试和性能调优5.撰写设计报告和总结4. 评分标准学生的课程设计成绩将根据以下标准进行评分:•系统功能的完备性:20%•设计思路和实现方法:30%•系统性能测试和性能调优:20%•文档报告的完整性和可读性:20%•团队协作和实践能力:10%5. 学习资源为了顺利完成课程设计,学生可以参考以下学习资源:•《操作系统概念》(西尔伯沙茨等著)•操作系统相关的官方文档和教程•在线编程资源和论坛,如GitHub和Stack Overflow6. 结语《计算机操作系统》课程设计是计算机科学与技术专业中重要的实践环节。
《计算机操作系统》课程设计
计算机操作系统课程设计1. 引言计算机操作系统是计算机科学与技术专业中一门重要的课程,它介绍了操作系统的基本概念、原理和设计方法,培养学生对计算机操作系统的理解和应用能力。
本文将介绍《计算机操作系统》课程设计的目标、内容和方法,并提供一些实用的学习资源和建议。
2. 课程设计目标《计算机操作系统》课程设计的主要目标是通过实践,帮助学生加深对操作系统概念和原理的理解,培养学生编写和调试操作系统的能力,提高解决实际问题的能力。
具体目标如下:- 理解操作系统的基本概念和原理; - 掌握操作系统的设计与实现方法; - 学会使用工具和技术进行操作系统的调试和测试;- 培养团队合作和解决问题的能力。
3. 课程设计内容《计算机操作系统》课程设计的内容包括以下几个方面:1. 进程管理:学生需要设计和实现一个简单的进程管理系统,包括进程的创建、调度和终止等功能,并实现进程间的通信和同步。
2. 文件系统:学生需要设计和实现一个简单的文件系统,包括文件的存储和管理、文件的读写等功能,并实现文件的保护和共享。
3. 内存管理:学生需要设计和实现一个简单的内存管理系统,包括内存的分配和释放、页面置换等功能,并实现进程的虚拟内存。
4. 设备管理:学生需要设计和实现一个简单的设备管理系统,包括设备的分配和释放、设备的控制和调度等功能,并实现设备的并发和互斥。
4. 课程设计方法《计算机操作系统》课程设计采用项目驱动的方法,学生将组成小组,每个小组负责完成一个操作系统的设计和实现。
具体方法如下: 1. 项目选择:学生可以自由选择他们感兴趣的项目,也可以从老师提供的项目中选择。
2. 项目计划:学生需要制定项目计划,包括项目的目标、任务和时间安排等。
3. 项目开发:学生按照项目计划开展项目开发工作,包括需求分析、系统设计、编码和测试等环节。
4. 项目评审:学生需要定期进行项目评审,包括项目进展、问题解决和改进措施等。
5. 项目展示:学生需要最后展示他们的项目成果,包括设计文档、源代码和演示等。
操作系统课程设计
操作系统课程设计一、开设本课程设计目的为配合《计算机操作系统》课程的教学,通过学习操作系统原理和模拟操作系统的功能实现,使学生能更深刻地领会操作系统工作原理和理解操作系统的实现方法,并可练习程序设计,特开设此课程设计。
二、课程设计的题目(1)进程创建、控制、终止和通信的程序实现(2)作业调度系统的模拟实现(3)哲学家问题的模拟实现(4)生产者—消费者问题的模拟实现(5)资源管理系统的设计与实现(6)请求调页存储管理系统的设计与实现(7)简单文件系统的设计与实现三、课程设计的主要内容(1)进程创建、控制、终止和通信的程序实现用VC编程实现3~4个应用程序,其中一个作为主程序,调入内存后作为主进程(父进程),该进程运行后,可以根据需要创建其它进程或终止其它进程的执行。
子进程创建后,可以根据用户的需要实现父进程和子进程、子进程和子进程之间的通信,通信方式必须包括直接通信、间接通信或者是管道通信。
运行时,通信方式必须可选。
(2)作业调度系统的模拟实现用VC编程实现10个完成不同功能的应用程序(作业),并设计一个作业调度系统,该作业调度系统必须有一个工作目录,只要该工作目录里有作业,作业调度系统就必须按照用户设定的作业调度算法来选择作业创建进程,完成作业必须执行的任务,同时保存其计算的结果。
作业调度系统中必须包括先来先服务(FCFS)调度算法、最短作业优先(SJF)和响应比高者优先(HRN)。
只要用户设置好调度算法,工作目录里的若干个作业就可按算法进行调度执行完成。
每种算法执行的结果必须进行记录,并比较三中算法的执行结果,进而区分三种算法的异同点。
(3)哲学家问题的模拟实现根据哲学家问题的相关原理,用VC编程创建五个线程,模拟实现五个哲学家来竞争五只筷子(资源)去吃通心面的情况,必须确保五个线程的同步和互斥,并且在运行时不会产生死锁。
(4)生产者—消费者问题的模拟实现根据生产者—消费者问题的相关原理,用VC编程创建两组线程,分别模拟生产者和消费者,为了确保两组线程之间的同步和互斥,必须设置相关的信号量让两组线程有序的运行。
操作系统课程设计
操作系统课程设计1. 引言操作系统是计算机科学中的关键课程之一,它负责管理与控制计算机硬件与软件资源,为用户和应用程序提供友好的环境和接口。
操作系统课程设计是帮助学生通过实践来深入理解操作系统的原理与实现方法的一种教学方法。
本文将介绍一个操作系统课程设计的具体内容和要求。
2. 设计目标操作系统课程设计的主要目标是让学生通过设计和实现一个简单的操作系统,加深对操作系统原理的理解,并提高操作系统的设计与实现能力。
具体的设计目标包括:•理解操作系统的基本原理,如进程管理、内存管理、文件系统等;•掌握操作系统的设计与实现方法,如中断处理、进程调度、内存分配等;•实践操作系统的设计与实现过程,加强问题解决和团队合作能力;•深入理解操作系统与其他计算机科学领域的关系,如网络和安全。
3. 设计内容操作系统课程设计的内容可以根据课程教学进度和学生的实际水平进行灵活调整。
下面是一个典型的操作系统课程设计的内容:3.1 设计题目设计一个简单的多任务操作系统,包括进程管理、内存管理和文件系统。
3.2 设计要求•实现进程的创建、调度和终止,支持多任务并发执行;•实现内存的分配与释放,设计并实现页式内存管理算法;•实现文件的创建、读写和删除,支持基本的文件系统功能;•设计并实现系统调用接口,提供对操作系统功能的访问;•编写设计文档和实验报告,详细描述操作系统的设计与实现过程;•运行并测试操作系统,检测和修复可能存在的问题。
3.3 设计步骤操作系统课程设计通常可以分为以下几个步骤:1.确定设计题目和要求,明确设计目标和内容;2.进行系统设计,包括进程管理、内存管理和文件系统的设计;3.实现操作系统的核心功能,包括进程的创建、调度和终止,内存的分配和释放,文件的读写和删除等;4.编写设计文档和实验报告,记录设计和实现的过程和结果;5.运行和测试操作系统,检测和修复可能存在的问题;6.总结课程设计的经验与教训,并进行反思。
4. 学习方法与资源操作系统课程设计是一个比较复杂的项目,需要学生具备一定的计算机科学知识和实践能力。
操作系统课程设计(完整规范版)
操作系统课程设计(完整规范版)一、引言操作系统是计算机系统的核心软件,它管理计算机的硬件资源,为应用程序提供运行环境。
本课程设计旨在通过实践,加深学生对操作系统原理的理解,提高学生的编程能力和系统设计能力。
二、课程目标1. 理解操作系统的基本原理和功能。
2. 掌握进程管理、内存管理、文件系统等核心模块的设计和实现。
3. 熟悉操作系统调度的基本算法。
4. 提高学生的编程能力和系统设计能力。
三、课程内容1. 操作系统概述操作系统的定义、功能和发展历程操作系统的基本组成和结构操作系统的类型和特点2. 进程管理进程的定义、状态和转换进程控制块(PCB)的结构和作用进程同步与互斥进程通信进程调度算法3. 内存管理内存管理的目标连续内存管理技术非连续内存管理技术页面置换算法4. 文件系统文件系统的定义和功能文件的结构和类型文件存储空间管理文件目录管理文件操作5. I/O系统I/O系统的功能和组成 I/O设备管理I/O调度算法缓冲管理6. 系统调用系统调用的定义和类型系统调用的实现机制常用系统调用分析7. 实验与课程设计实验目的和要求实验内容和步骤课程设计题目和要求课程设计报告格式四、课程考核1. 平时成绩(30%):包括课堂表现、实验报告和作业完成情况。
2. 实验成绩(30%):包括实验操作和实验报告。
3. 课程设计成绩(40%):包括设计报告、代码实现和答辩表现。
1. 《操作系统概念》作者:亚伯拉罕·西尔伯斯查茨等2. 《现代操作系统》作者:安德鲁·S·塔嫩鲍姆3. 《操作系统导论》作者:威廉·斯托林斯六、附录1. 课程设计报告模板2. 实验报告模板3. 课程设计答辩评分标准七、课程安排1. 理论学习操作系统概述(2课时)进程管理(4课时)内存管理(4课时)文件系统(4课时)I/O系统(2课时)系统调用(2课时)2. 实验与课程设计进程管理实验(2课时)内存管理实验(2课时)文件系统实验(2课时)I/O系统实验(2课时)课程设计(8课时)课程考核(2课时)八、实验与课程设计指导1. 实验指导进程管理实验:通过模拟进程的创建、撤销、阻塞和唤醒等操作,理解进程管理的原理。
操作系统课程设计(设备管理)
操纵系统课程设计(设备治理)目录一引言 (1)1.1课程设计题目 (1)1.2课程设计的目的 (1)1.3小组人数 (1)1.4编程语言 (1)1.5课程设计内容 (1)1.6界面设计如图 (1)二课程设计任务及要求 (2)2.1设计任务 (2)2.2设计要求 (2)三算法及数据结构 (2)3.1算法的总体思想(流程) (2)3.2 Equipment模块 (3)3.2.1 功效 (3)数据结构 (3)3.3 cpu模块 (4)功效 (4)数据结构 (4)算法 (4)3.4 form1模块 (4)功效 (4)算法 (5)四步伐设计与实现 (5)4.1 步伐流程图 (5)4.2 根本思想 (6)4.3 界说的大众变量或数据结构 (7)4.4 实验部门代码 (7)4.5 运行截图 (12)4.6 使用说明 (15)五总结 (15)六参考文献 (15)一引言1.1课程设计题目实现一个模拟操纵系统。
1.2课程设计的目的通过模拟操纵系统原理的实现,加深对操纵系统事情原理理解,进一步了解操纵系统的实现要领,并可练习互助完成系统的团队精神和提高步伐设计能力。
1.3小组人数发起3~4人一组配合完成模拟系统的实现。
1.4编程语言发起使用VC、VB、C#、Java等Windows情况下的步伐设计语言,以借助这些语言情况来模拟硬件的一些并行事情。
1.5课程设计内容模拟接纳多道步伐设计要领的单用户操纵系统,该操纵系统包罗进程治理、存储治理、设备治理、文件治理和用户接口四部门。
1.6界面设计如图图1.1二课程设计任务及要求2.1设计任务设计一个设备治理分派步伐,按先来先办事的算法,对设备进行分派。
2.2设计要求设备治理主要包罗设备的分派和接纳。
(1)模拟系统中有A、B、C三种独占型设备,A设备3个,B设备2个,C设备1个。
(2)因为模拟系统比力小,因此只要设备表设计公道即可。
(3)接纳先来先办事分派计谋,接纳设备的宁静分派方法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计说明书(操作系统)题目:进程调度院系:计算机科学与工程学院专业班级:信息安全13-2学号:20133029xx学生姓名:xx指导教师:xx2015年12月15日安徽理工大学课程设计(论文)任务书计算机科学与工程学院安徽理工大学课程设计(论文)成绩评定表摘要现代计算机系统中,进程是资源分配和独立运行的基本单位,是操作系统的核心概念。
因而,进程就成为理解操作系统如何实现系统管理的最基本,也是最重要的概念。
进程调度是进程管理过程的主要组成部分,是必然要发生的事件。
在现代操作系统中,进程的并发机制在绝大多数时候,会产生不断变化的进程就绪队列和阻塞队列。
处于执行态的进程无论是正常或非正常终止、或转换为阻塞状态,都会引发从就绪队列中,由进程调度选择一个进程进占CPU。
进程调度的核心是进程调度的算法.在本课程设计中,用良好清晰的界面向用户展示了进程调度中的时间片轮转调度算法。
在最终实现的成果中,用户可指定需要模拟的进程数,CPU时间片和进程的最大执行时间,并且选择需要演示的算法,界面将会动态的显示进程调度过程及各个队列的变化。
通过此进程调度模拟系统,用户可以对时间片轮转调度算法有进一步以及直观的了解。
关键词:进程,调度,PCB,时间片轮转目录1.设计目的 (6)2.设计思路 (7)3.设计过程 (9)3.1流程图 (9)3.2算法 (9)3.3数据结构 (13)3.4源代码 (14)4.实验结果及分析 (23)4.1 使用说明 (23)4.2程序演示 (24)5.实验总结 (27)6.参考文献 (28)1.设计目的根据设计任务,用自己熟悉的计算机语言编制程序,在机器上调试运行,并通过上机考核。
编写一程序,可以创建若干个虚拟进程,并对若干个虚拟进程进行调度,调度策略为时间片轮转。
虚拟程序的描述:虚拟指令的格式:操作命令操作时间其中,操作命令有以下几种:C : 表示在CPU上计算I :表示输入O:表示输出W:表示等待H:表示进程结束操作时间代表该操作命令要执行多长时间假设I/O设备的数量没有限制I、O、W三条指令实际上是不占用CPU的,执行这三条指令就应将进程放入对应的等待队列(Input等待队列、Output等待队列、Wait等待队列)例有一虚拟程序p1.prc描述如下:c 30 o 12 c 9 i 14 h 0该虚拟程序表示的含义是:先在CPU上计算30秒,再在输出设备上输出12秒,计算9 秒,在输入设备上输入14秒,程序结束。
2.设计思路进程调度是操作系统中的重要功能,用来创建进程、撤消进程、实现进程状态转换,它提供了在可运行的进程之间复用CPU的方法。
在进程管理中,进程调度是核心,因为在采用多道程序设计的系统中,往往有若干个进程同时处于就绪状态,当就绪进程个数大于处理器数目时,就必须依照某种策略决定哪些进程优先占用处理器。
本程序用时间片轮转调度算法对多个进程进行调度,每个进程有三个状态就绪、运行和完成,初始状态为就绪状态。
时间片轮转调度算法中,系统将所有的就绪进程按先来先服务算法的原则,排成一个队列,每次调度时,系统把处理机分配给队列首进程,并让其执行一个时间片。
当执行的时间片用完时,由一个计时器发出时钟中断请求,调度程序根据这个请求停止该进程的运行,将它送到就绪队列的末尾,再把处理机分给就绪队列中新的队列首进程,同时让它也执行一个时间片。
(1)建立一个进程控制块。
PCB来代表。
PCB包括:进程名、链接指针、到达时间、估计运行时间、剩余时间和进程状态。
进程状态分为就绪(W)、运行(R)和完成(F)。
(2)为每个进程任意确定一个要求运行时间和到达时间。
(3)按照进程到达的先后顺序排成一个循环队列。
再设一个对首指针指向第一个到达进程的首址。
(4)执行处理机调度时,开始选择对首的第一个进程运行。
另外再设一个当前运行进程的指针,指向当前正运行的进程。
(5)执行:a)预计运行时间减1;b)输出当前运行进程的名字。
(6)进程执行一次后,若该进程的剩余运行时间为零,则将该进程的状态置为完成态F,并退出循环队列;若不为空,则将其移至队尾。
继续在运行队首的进程。
(7)若就绪队列不空,则重复上述的(5)和(6)步骤直到所有进程都运行完为止。
在所设计的调度程序中,要求包含显示或打印语句。
以便显示或打印每次选操作系统课程设计中进程的名称及运行一次后队列的变化情况。
3.设计过程3.1流程图3.2算法如果就绪队列中有n个进程,且时间片为q,则每个进程会得到的CPU 时间,每个长度不超过q时间单元。
每个进程必须等待CPU的时间不会超过(n-1)q个时间单元,直到它的下一个时间片为止void Run (){int i, flag=0, time=10, pcbnum, Index=0, exenum, num, quenum;char cmd;int j,m,n;int total=0;JobEnQueueInit( &total );save();while( total!=0 ){if( !EmptyQueue( Queue[1]) ){outqueue(&Queue[1],&pcbnum);insertqueue(&Queue[0], pcbnum);}else pcbnum=GetHead(Queue[0]);delay();jobpcb[ pcbnum].status='e';printf(" \n\t\t作业%d \n",pcbnum+1);printf(" \t\t\t所处状态: %c \t执行了%d 秒\n", jobpcb[ pcbnum].status, time);for(i=0;i<3;i++){if(jobpcb[i].id>=0){//所有的作业除在就绪队列获执行结束的外等待时间都减去时间片if( jobpcb[i].status!='r'&&jobpcb[i].status!='h') jobpcb[i].wtime=jobpcb[i].wtime-time;if(jobpcb[i].wtime<=0){ //查找所有的队列所在位置for(j=0;j<5;j++){for(m=Queue[j].head;m<Queue[j].tail;m++){if(Queue[j].pcbnum[m]==i) {flag=1;break; }}if(flag==1) break;}if(flag==1){ //删除该指令for(n=m;n<Queue[j].tail;n++)Queue[j].pcbnum[n]=Queue[j].pcbnum[n+1];Queue[j].tail--;jobpcb[i].exetoIndex++;Index=jobpcb[i].exetoIndex;JobEnQueue( i,Index,&total );}}}}if(!EmptyQueue( Queue[1]) ){outqueue(&Queue[0],&pcbnum);if(jobpcb[pcbnum].wtime>0){insertqueue(&Queue[1], pcbnum);jobpcb[pcbnum].status='r';}}printf(" \n\n\t\t 还有\t %d 个作业没有完成\n",total );save();}}3.3数据结构void delay()int change(char *m)int AllocPCB()int AllocJob()void displayIndex()int CreatePcbLine()void initqueue(struct Qnode *l)void insertqueue(struct Qnode *l,int pcbnum)int EmptyQueue( struct Qnode l)void outqueue(struct Qnode *l,int *pcbnum)void display()void JobEnQueueInit( int * total)void save ()void JobEnQueue( int pcbnum,int Index ,int *total) int GetHead(struct Qnode l)void Run ()void InitFile()3.4源代码//进程调度模拟程序,以时间片轮转调度算法为核心#define NULL 0#include <stdio.h>#include <conio.h>#include <string.h>#include <malloc.h>#include <time.h>FILE *GroupFile[10];//定义一个pcb的结构体typedef struct index{char name; //指令int time; //指令执行时间}index;struct pcb {char filename[10]; //进程名int id; //作业编号int exetoIndex; //当前正在执行指令char status; //当前状态int wtime; //等待时间};struct pcb jobpcb[100]; //pcb表typedef struct job{index idx[100]; //指令集int pcbnum; //pcb编号对应}job;job jobtab[100]; //作业表char jobp[3][50]; //作业//队列结构体struct Qnode{int pcbnum[100]; //pcb编号int head,tail;};struct Qnode Queue[5]; //5个队列0E 1R 2I 3O 4W void initqueue(struct Qnode *l);//延迟void delay( ){time_t begin,end;time(&begin);do {time(&end);} while((end-begin)<=1);}//字符转化为数值int change(char *m){int i,j=0;int len=strlen(m);for(i=0;i<len;i++)j=j*10+m[i]-'0';return j;}//申请pcb进程块int AllocPCB(){int i;for(i=0;i<3;i++)if(jobpcb[i].id ==-1) break;if(i<3)return i;return -1;}//申请jobint AllocJob(){int i;for(i=0;i<3;i++)if(jobtab[i].pcbnum == -1) break;if(i<3)return i;return -1;}//显示指令void displayIndex(){int i,j;for(i=0;i<3;i++){printf(" Job % d \n",i+1);for(j=0;j<10;j++)printf(" %d %c % d \n",j+1, jobtab[i].idx[j].name,jobtab[i].idx[j].time);}}//创建进程程序int CreatePcbLine(){char line[10];int i,ll,jnum, pnum, ln=0, bpos, pos=0;char buff[50];char name [20];char ch;for(i=0;i<3;i++){ln=0;jnum=AllocJob();if(jnum == -1) return 0;pnum=AllocPCB();if(pnum == -1) return 0;jobtab[jnum].pcbnum=pnum;strcpy(jobpcb[pnum].filename," ");jobpcb[pnum].status='r';jobpcb[pnum].exetoIndex=0;jobpcb[pnum].id=jnum;jobpcb[pnum].wtime=0;int len=strlen(jobp[i]);pos=0;while(pos<len){while(jobp[i][pos]==' ') pos++;jobtab[jnum].idx[ln].name=jobp[i][pos++];///while(jobp[i][pos]==' ') pos++;bpos=0;while(jobp[i][pos]!=' ')buff[bpos++]=jobp[i][pos++];buff[bpos]='\0';jobtab[jnum].idx[ln].time=change(buff);/////if(pos<len) {pos++;ln++;}}}displayIndex();}//初始化队列void initqueue(struct Qnode *l){l->head=0;l->tail=0;}//插进入队列/void insertqueue(struct Qnode *l,int pcbnum){l->pcbnum[l->tail++]=pcbnum;}//队列是否为空int EmptyQueue( struct Qnode l){if(l.head==l.tail) return 1;return 0;}//删除队列void outqueue(struct Qnode *l,int *pcbnum){if (l->head>=l->tail ) *pcbnum=-1;else*pcbnum=l->pcbnum[l->head++];}//显示作业void display(){int i,j;for(i=0;i<5;i++){printf(" 队列%d ",i);for(j=Queue[i].head;j<Queue[i].tail;j++)printf("pcb 编号%d \n\n ",Queue[i].pcbnum[j]);}}//作业入队列void JobEnQueueInit( int * total){int i,num ,Index=0;char cmd;for( i=0;i<3;i++)if(jobpcb[i].id>=0){cmd=jobtab[ jobpcb[i].id ].idx[ Index ].name;switch(cmd){case 'c': insertqueue(& Queue[1],i); jobpcb[i].status='r'; break;case 'i': insertqueue(& Queue[2],i);jobpcb[i].status='i'; break;case 'o': insertqueue(& Queue[3],i);jobpcb[i].status='o'; break;case 'w': insertqueue(& Queue[4],i);jobpcb[i].status='w'; break;case 'h':jobpcb[i].status='h'; num=jobpcb[i].id;jobtab[num].pcbnum=-1;jobpcb[i].id=-1;}if(cmd== 'h') {jobpcb[i].wtime=0; total--;}jobpcb[i].wtime=jobtab [ jobpcb[i].id ].idx[Index].time;(*total)++;}}//保存结果void save (){FILE *fp;int i;fp=fopen("pcbtable.txt","a");fprintf(fp," 文件名作业编号执行到指令数所处状态等待时间\n" );for(i=0;i<3;i++)fprintf(fp," \t %s \t %d \t %d \t %c \t %d \n" ,jobpcb[i].filename,jobpcb[i].id,jobpcb[i].exetoIndex,jobpcb[i].status,jobpcb[i].wtime );fclose(fp);}//作业入队列void JobEnQueue( int pcbnum,int Index ,int *total){int num;char cmd;if(jobpcb[pcbnum].id>=0){cmd=jobtab[ jobpcb[pcbnum].id ].idx[ Index ].name;switch(cmd){case 'c': insertqueue(&Queue[1],pcbnum); jobpcb[pcbnum].status='r'; break;case 'i': insertqueue(& Queue[2],pcbnum);jobpcb[pcbnum].status='i';break;case 'o': insertqueue(& Queue[3],pcbnum);jobpcb[pcbnum].status='o'; break;case 'w': insertqueue(& Queue[4],pcbnum);jobpcb[pcbnum].status='w'; break;case 'h': jobpcb[pcbnum].status='h'; num=jobpcb[pcbnum].id;jobtab[num].pcbnum=-1;jobpcb[pcbnum].id=-1;}if(cmd== 'h') {jobpcb[pcbnum].wtime=0;printf(" \n\t\t作业%d 完成\n", pcbnum+1, jobpcb[ pcbnum].status);(*total)--;}else jobpcb[pcbnum].wtime=jobtab [ jobpcb[pcbnum].id ].idx[Index].time;printf(" \n\t\t作业%d \n ", pcbnum+1);printf("\t\t\t\t所处状态:%c \n",jobpcb[ pcbnum].status);printf("\t\t还需要时间%d 秒\n",jobpcb[ pcbnum].wtime);}}//得到队列的首元素int GetHead(struct Qnode l){return l.pcbnum[l.head];}//执行void Run (){int i, flag=0, time=10, pcbnum, Index=0, exenum, num, quenum;char cmd;int j,m,n;int total=0;JobEnQueueInit( &total );save();while( total!=0 ){if( !EmptyQueue( Queue[1]) ){outqueue(&Queue[1],&pcbnum);insertqueue(&Queue[0], pcbnum);}else pcbnum=GetHead(Queue[0]);delay();jobpcb[ pcbnum].status='e';printf(" \n\t\t作业%d \n",pcbnum+1);printf(" \t\t\t所处状态: %c \t执行了%d 秒\n", jobpcb[ pcbnum].status, time);for(i=0;i<3;i++){if(jobpcb[i].id>=0){//所有的作业除在就绪队列获执行结束的外等待时间都减去时间片if( jobpcb[i].status!='r'&&jobpcb[i].status!='h') jobpcb[i].wtime=jobpcb[i].wtime-time;if(jobpcb[i].wtime<=0){ //查找所有的队列所在位置for(j=0;j<5;j++){for(m=Queue[j].head;m<Queue[j].tail;m++){if(Queue[j].pcbnum[m]==i){flag=1;break; }}if(flag==1) break;}if(flag==1){ //删除该指令for(n=m;n<Queue[j].tail;n++)Queue[j].pcbnum[n]=Queue[j].pcbnum[n+1];Queue[j].tail--;jobpcb[i].exetoIndex++;Index=jobpcb[i].exetoIndex;JobEnQueue( i,Index,&total );}}}}if(!EmptyQueue( Queue[1]) ){outqueue(&Queue[0],&pcbnum);if(jobpcb[pcbnum].wtime>0){insertqueue(&Queue[1], pcbnum);jobpcb[pcbnum].status='r';}}printf(" \n\n\t\t 还有\t %d 个作业没有完成\n",total );save();}}//初始化void InitFile(){int i;GroupFile[0]=fopen("p1.prc","r");GroupFile[1]=fopen("p2.prc","r");GroupFile[2]=fopen("p3.prc","r");fgets(jobp[0],255,GroupFile[0]);fgets(jobp[1],255,GroupFile[1]);fgets(jobp[2],255,GroupFile[2]);for(i=0;i<100;i++){jobpcb[i].exetoIndex=0;strcpy(jobpcb[i].filename," nothing");jobpcb[i].id=-1;jobpcb[i].status='r';jobpcb[i].wtime=0;}for(i=0;i<100;i++)jobtab[i].pcbnum=-1;for(i=0;i<5;i++)initqueue(&Queue[i]);}int main(){char start;printf("欢迎界面");start=getch();if(start!=NULL){InitFile();CreatePcbLine();Run ();}return 0;}4.实验结果及分析4.1 使用说明先用文本编辑器写三个虚拟程序保存在改程序目录下,可以分别命名为p1.prc p2.prc p3.prc。