操作系统原理课程设计报告
操作系统原理及应用课程设计报告

《操作系统原理及应用》课程设计报告 Linux系统服务管理及安全设计学院(系): 计算机科学与工程学院班 级: 学号学生姓名:指导教师:时间: 从 2012 年 05 月14日 到 2012 年05月18日一、课程设计的目的本课程设计是学生学习完《计算机操作系统》课程后,进行的一次全面的综合训练,通过课程设计,让学生更好地掌握操作系统的原理及Linux安全服务管理,加强学生的动手操作能力。
二、课程设计要求设计一套安全的系统 Linux要求:1. 系统不能被破解密码;2. 系统不能被恶意重启;3. 只有指定用户才能ssh 登录系统,保障系统安全;4. 编写防火墙策略,保障系统安全,只开放允许访问的tcp 22, tcp 80,tcp 20 21;5.搭建一个Web网站;6.编写shell程序,阻止恶意攻击服务器的来源IP,连接服务器.三、课程设计内容3.1、 Redhat 基础及权限控制Linux 安装中的重要步骤:引导安装程序、磁盘分区、网络参数配置、密码设置、软件包选择Linux 系统引导过程:服务器硬件自检、引导MBR、引导Kernel、引导驱动及服务、自定义加载项、6种引导方式介绍(/etc/inittab)Linux root 密码破解:单用户模式,进行root密码破解Linux 加密防止 root 密码破解:明文加密 (password) 、非明文加密 (grub-md5-crypt )Linux防止恶意重启:禁用ctrl+alt+del 重启功能 (/etc/inittab)Linux文件权限数字表示:可读 R 4、可写 W 2、可执行 X 1Linux文件权限调整:修改所有者 chown 、修改权限 chmodLinux网络参数配置:网络IP地址配置、同一网卡配置多个IP地址Linux查看IP及route:Ipconfig、 ip add、route -nLinux常用命令文件管理类:ls cat more vi cp rm find paste wc grep head tail 磁盘管理:df du fdisk mkfs mount umount系统状态:uptime last vmstat iostat top free3.2、 软件管理及Shell编程Linux rpm 包的管理 :软件包安装、软件包升级、查询已安装的软件包Linux 源码包的管理 :源码包安装、configure、make、make test、make install、源码包删除Linux 文本处理 :文本编辑器、 vi 编辑器Linux Shell编程中常用命令条件测试:test 或者 []、-d 目录、-f 文件、-s 文件大小非0正则表达示:^ 行首、$ 行尾、以 $ 打头的命令、$? 上一个命令执行结果、$1 输入的第1个参数3.3、存储管理及系统管理Linux 系统常用服务管理 :常用系统服务启动与关闭、系统设置 服务器设置 服务常用系统服务介绍Network 网络服务、sshd ssh 远程连接服务Httpd Apache Web 服务器、Smb 文件共享服务器Vsftp FTP 服务器、Bind DNS 服务器Iptables 防火墙、Linux 进程管理进程查看 top , ps –ef 结束进程 Kill id、Kill –9 idLinux 文件系统管理磁盘分区、fdisk 、格式化分区、mkfs.ext3 、挂载分区、mount、卸载分区、umountLinux 卷管理 LVM磁盘分区 fdisk (disk type id: 8e)建立 PV pvcreate pvdispaly建立 VG vgcreate vgchange -a y (激活VG) vgdisplay建立 LV lvcreate lvdisplay格式化LV make.ext3挂载 LV mount缷载LV umountLinux 系统管理 :以图形化的形式 讲解常用系统管理 、用户和组 、日期和时间、显示Linux 系统日志管理系统日志文件位置 、/var/log/message观察日志变化、tail -f /var/log/message筛选日志内容、grep “error” /var/log/message3.4、常用服务器搭建、安全配置Linux openSSH 安全配置 (/etc/ssh/sshd_config )修改SSH服务端口:# Port 22 修改为 Port 9022修改SSH连接协议为版本2:#Protocol 2,1 修改为 Protocol 2权限只定用户连接SSH:AllowUsers user1重启ssh服务系统设置 服务器设置 服务,启动服务”sshd”、使用命令 service sshd restart使用软件连接SSH服务:在Windows上使用putty.exeLinux http服务器配置检查所需要的软件包[root@rh9 /]# rpm -qa | grep httphttpd-2.0.40-21libghttp-1.0.9-7httpd-manual-2.0.40-21redhat-config-httpd-1.0.1-18安装http服务软件包通过系统的”添加删除程序功能”进行安装、使用rpm –ivh 软件包名进行安装配置HTTP网站网页默认存放位置:/var/启动HTTP网站服务系统设置 服务器设置 服务,启动服务”httpd”、使用命令 service httpd start访问Linux Web网站: IPLinux dns服务器配置检查所需要的软件包[root@rh9 /]# rpm -qa | grep bindredhat-config-bind-1.9.0-13bind-utils-9.2.1-16ypbind-1.11-4bind-9.2.1-16安装DNS服务软件包通过系统的”添加删除程序功能”进行安装、使用rpm –ivh 软件包名进行安装配置DNS服务配置反向解析、配置正向解、异常解决 DNS服务不能启动。
gdk操作系统原理课程设计

gdk操作系统原理课程设计一、课程目标知识目标:1. 理解GDK操作系统的基本原理与架构,掌握其核心功能与模块;2. 掌握操作系统中的进程管理、内存管理、文件系统等基本概念;3. 了解操作系统在计算机系统中的作用,及其与其他软件、硬件的关联。
技能目标:1. 能够描述GDK操作系统的启动过程,分析其工作原理;2. 学会使用GDK操作系统的基本命令,进行简单的系统操作与维护;3. 培养学生对操作系统进行问题诊断与性能优化的能力。
情感态度价值观目标:1. 培养学生对操作系统原理学习的兴趣,激发其探索计算机科学领域的热情;2. 培养学生的团队协作意识,提高其沟通与表达能力;3. 增强学生的信息安全意识,使其认识到操作系统安全的重要性。
本课程针对高年级学生,结合GDK操作系统原理,注重理论与实践相结合。
课程目标旨在使学生在掌握操作系统基本原理与技能的基础上,提高实际问题解决能力,培养其对计算机科学的热爱与责任感。
通过分解课程目标为具体学习成果,有助于教师进行教学设计和评估,提高课程实用性。
二、教学内容1. GDK操作系统概述- 操作系统的概念、功能与分类- GDK操作系统的历史、特点与发展趋势2. GDK操作系统的架构与启动- 系统架构:内核、用户空间、系统调用- 启动过程:BIOS、引导加载器、内核初始化3. 进程管理- 进程与线程的概念、状态与转换- 进程调度算法、同步互斥机制4. 内存管理- 内存分配与回收策略- 虚拟内存、分页与分段机制5. 文件系统- 文件与目录结构- 文件存储、权限管理、磁盘空间分配6. 设备管理- 设备驱动程序、I/O调度策略- 中断处理、DMA传输、设备分配与回收7. 操作系统安全与性能优化- 系统安全策略、权限控制- 性能评价、系统监控与调优教学内容根据课程目标进行选择和组织,注重科学性和系统性。
本课程共分为七个部分,按照教材章节进行安排和进度制定。
教学内容涵盖GDK操作系统的基本原理、架构、关键技术与实践应用,旨在帮助学生全面掌握操作系统知识,提高实际问题解决能力。
操作系统课程设计实验报告

操作系统课程设计实验报告操作系统课程设计实验报告引言:操作系统是计算机科学中的重要课程,通过实验设计,可以帮助学生更好地理解操作系统的原理和实践。
本文将结合我们在操作系统课程设计实验中的经验,探讨实验设计的目的、实验过程和实验结果,以及对操作系统的理解和应用。
一、实验设计目的操作系统课程设计实验的目的是帮助学生深入理解操作系统的工作原理和实际应用。
通过设计和实现一个简单的操作系统,学生可以更好地掌握操作系统的各个组成部分,如进程管理、内存管理、文件系统等。
同时,实验设计还可以培养学生的动手能力和问题解决能力,提高他们对计算机系统的整体把握能力。
二、实验过程1. 实验准备在进行操作系统课程设计实验之前,我们需要对操作系统的基本概念和原理进行学习和理解。
同时,还需要掌握一些编程语言和工具,如C语言、汇编语言和调试工具等。
这些准备工作可以帮助我们更好地进行实验设计和实现。
2. 实验设计根据实验要求和目标,我们设计了一个简单的操作系统实验项目。
该项目包括进程管理、内存管理和文件系统三个主要模块。
在进程管理模块中,我们设计了进程创建、调度和终止等功能;在内存管理模块中,我们设计了内存分配和回收等功能;在文件系统模块中,我们设计了文件的创建、读写和删除等功能。
通过这些模块的设计和实现,我们可以全面了解操作系统的各个方面。
3. 实验实现在进行实验实现时,我们采用了分阶段的方法。
首先,我们实现了进程管理模块。
通过编写相应的代码和进行调试,我们成功地实现了进程的创建、调度和终止等功能。
接下来,我们实现了内存管理模块。
通过分配和回收内存空间,我们可以更好地管理系统的内存资源。
最后,我们实现了文件系统模块。
通过设计文件的读写和删除等功能,我们可以更好地管理系统中的文件资源。
三、实验结果通过实验设计和实现,我们获得了一些有意义的结果。
首先,我们成功地实现了一个简单的操作系统,具备了进程管理、内存管理和文件系统等基本功能。
《操作系统原理与Linux》课程设计报告

《操作系统原理与Linux》课程设计报告专业班级学号姓名指导教师完成时间成绩进程调度算法一、设计题目:进程调度算法 二、设计目的通过对进程调度算法的编写加强对操作系统的加深了解,从而进一步的让我们清楚个进程之间的运行情况,对优先权算法与轮转调度算法的模拟加强对进程概念和进程的调度过程的理解,掌握进程状态之间的切换,同时掌握进程调度算法的实现方法和技巧。
三、设计要求要求实现先来先服务,短作业优先,时间片轮转,优先权调度算法四种算法并进行对比分析. 四、设计思想说明1、先来先服务算法:按照进程进入就绪队列的先后次序,分派CPU ,当前进程占用CPU ,直到执行完或阻塞,才出让CPU (非抢占方式)。
在进程唤醒后(如I/O 完成),并不立即恢复执行,通常等到当前进程让出CPU 。
进入选中进程的程序入口先来先服务算法的实现过程如图所示。
设置信号量:就绪队列互斥信号量s ,初值为1; 就绪队列中进程个数n ,初值为0。
2、短作业优先:选择就绪队列中估计运行时间最短的进程投入运行。
通常后来的短作业不抢先正在执行的作业。
比FCFS改善平均周转时间和平均带权周转时间,缩短作业的等待时间提高系统的吞吐量。
3、时间片轮转调度算法:通过时间片轮转,提高进程并发性和响应时间特性,从而提高资源利用率。
将系统中所有的就绪进程按照FCFS原则,排成一个队列。
每次调度时将CPU分派给队首进程,让其执行一个时间片。
时间片的长度从几个ms到几百ms。
在一个时间片结束时,发生时钟中断。
调度程序据此暂停当前进程的执行,将其送到就绪队列的末尾,并通过CPU现场切换执行当前的队首进程。
进程可以未使用完一个时间片,就出让CPU(如阻塞)。
4、优先权调度算法:优先选择就绪队列中优先级最高的进程投入运行。
分为:非抢占式优先级算法:仅发生在进程放弃CPU。
抢占式优先级算法:可剥夺当前运行进程CPU。
五、系统结构的说明六、数据结构的说明用C语言或C++语言来实现对N个进程采用优先算法以及轮转算法的调度。
操作系统期末课程设计《操作系统原理课程设计》报告封面和要求

操作系统期末课程设计进程调度算法模拟一、设计目的编程实现进程调度的算法,更好地掌握操作系统的原理及实现方法,从而有利于把握进程调度细节。
二、设计要求(1)要求实现先来先服务,短作业优先,时间片轮转,高优先权调度算法四种算法并进行对比分析.(2)要求界面简单,易懂,关键代码部分要注释.(3)编程语言可以采用自己任意精通的语言三、设计思想说明先来先服务:程序的执行调度顺序按先进入队列的先获得执行,并且其他进程都不能中断正在执行的进程,要等进程完成后才能,让出CPU给其他进程。
执行的时候可以随时在队列中插入进程。
短作业优先:进程的调度顺序按程序的服务时间来决定,进程的执行顺序。
服务时间短的先被调用。
调度时先从队列中选取服务时间最短的进程来执行。
进程中途不能中断,即使此时队列中存在服务时间比其更短的进程,仍需要等待该进程执行完后才能被执行。
高优先权调度:选取进程中优先级最高的一个,以优先级的值大,优先级就大。
调度时总是选取队列中进程优先级最高的来执行,不管是否有某个进程在执行,只要存在比正在执行进程优先级高的进程,则就会立刻中断正在执行的进程,让给跟高优先级的进程。
时间片轮转:本课程设计采用多级反馈队列调度算法,设立4个进程队列,分给队列1的时间片为3秒,队列2的时间片为6秒,队列3的时间片为12秒,队列4的时间片为24秒。
队列1的优先级最高,队列4的优先级最低。
高优先级的队列没执行完,即不为空,就永远不执行其下面的低优先级的队列里面的进程。
当执行低优先级队列里面的进程时,突然间高优先级的队列插入了进程就立刻跳到高优先级的队列执行其里面的进程。
每个队列的进程都是按先来先执行的顺序执行。
进程初次执行肯定要进入队列1。
如何从头到尾执行一遍队列1中的进程是,存在某些进程在队列1的时间片内还没执行完,就把进程移交到下一个队列中。
每个队列都如此类推。
直到最后一个队列4,如果在队列4还有进程在本时间片内还没没执行完,就把该程序放到队尾,从新等待时间片执行。
操作系统原理课程设计报告模板

《操作系统原理》
课程设计报告书
题目:
学号:
学生姓名:
专业:
指导教师:
年月日
目录
1 功能描述(三号黑体,占三行) (1)
1.1 二级标题(四号宋体,占三行) (1)
1.1.1 三级标题(五号黑体,占二行) (1)
2 系统设计 (1)
3 系统实现 (2)
4 系统测试与分析 (2)
教师评分表 (10)
1 功能描述(三号黑体,占三行)
1.1 二级标题(四号宋体,占三行)
1.1.1 三级标题(五号黑体,占二行)
详细描述实现什么功能?(正文采用五号宋体)
2 系统设计
描述系统总体设计和详细设计,如功能模块图、数据结构、流程图等。
图题:排小五宋体居中,编号统一为图x;图中文字:排小五宋,末尾没有标点;如图1所示。
图1 计算机系统组成
表题:排小五黑体居中,编号统一为表x;表中文字:排小五宋体。
如表1所示。
表1 不同进制数的对应关系
3 系统实现
描述采用什么工具实现系统的过程。
4 系统测试与分析
描述系统运行结果,如运行界面截图。
教师评分表。
操作系统原理课程设计

操作系统课程设计报告银行家算法院系:计算机科学技术学院班级:网络13-2班姓名:赵飞学号: 3 5号指导教师:胡晓宏2015年7月2日操作系统原理课程设计任务书一、题目:银行家算法二、设计要求(1)张金星(组长)、赵飞负责设计与实现。
(2)查阅相关资料,自学具体课题中涉及到的新知识。
(3)采用结构化、模块化程序设计方法,功能要完善,具有一定的创新。
(4)所设计的程序应有输入、输出。
(5)按要求写出课程设计报告,并于设计结束后1周内提交。
其主要内容包括:封皮、课程设计任务书,指导教师评语与成绩、目录、概述、软件总体设计、详细设计、软件的调试、总结、谢启、附录:带中文注释的程序清单、参考文献。
报告一律用A4纸打印,中文字体为宋体,西文字体用Time New Roma,一律用小四号字,行距采用“固定值”18磅,首行缩进2字符。
总体设计应配合软件总体模块结构图来说明软件应具有的功能。
详细设计应用传统或N-S流程图和屏幕抓图说明,调试的叙述应配合出错场景的抓图来说明出现了哪些错误,如何解决的。
三、课程设计工作量由于是设计小组团结协作完成设计任务,一般每人的程序量在200行有效程序行左右,不得抄袭。
四、课程设计工作计划2015年6月23日,指导教师讲课,学生根据题目准备资料;2015年6月24日,进行总体方案设计;2015年6月25日~2015年6月29日,完成程序模块并通过独立编译;2015年6月30日~2015年7月1日,将各模块集成为一个完整的系统,并录入足够的数据进行调试运行;2015年7月2日~2015年7月5日,验收、撰写报告;指导教师签章:教研室主任签章操作系统原理课程设计指导教师评语与成绩目录一概述 (2)二总体方案设计 (3)三详细设计 (4)四程序的调试与运行结果说明 (7)五课程设计总结 (9)六后记 (10)八附录 (11)九参考文献 (18)一概述一、课程设计的目的。
1.使学生更深入地理解和掌握该课程中的有关基本概念。
操作系统原理课程设计

操作系统原理课程设计一、教学目标本课程旨在让学生了解和掌握操作系统原理的基本概念、核心机制和设计方法。
通过本课程的学习,学生应能理解操作系统的基本组成、工作原理和运行机制,掌握进程管理、内存管理、文件系统和输入/输出管理等方面的基本知识,具备分析问题和设计简单操作系统的能力。
1.理解操作系统的基本概念、组成和分类。
2.掌握进程的基本原理和管理方法。
3.理解内存管理的技术和策略。
4.熟悉文件系统的结构和管理方法。
5.掌握输入/输出管理的基本原理和方法。
6.能够运用操作系统原理分析和解决实际问题。
7.具备设计和实现简单操作系统的能力。
情感态度价值观目标:1.培养学生对操作系统学科的兴趣和好奇心。
2.培养学生团队合作、创新和批判性思维的能力。
二、教学内容本课程的教学内容主要包括以下几个部分:1.操作系统概述:操作系统的概念、作用、发展历程和分类。
2.进程管理:进程的基本概念、进程管理的基本方法、进程同步与互斥、死锁与饥饿问题。
3.内存管理:内存分配与回收策略、内存保护、虚拟内存、页面置换算法。
4.文件系统:文件和目录结构、文件存储管理、文件访问控制、磁盘空间分配策略。
5.输入/输出管理:输入/输出设备管理、中断处理、缓冲区管理、设备分配与回收。
三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用多种教学方法,如讲授法、讨论法、案例分析法和实验法等。
1.讲授法:通过教师的讲解,使学生掌握操作系统原理的基本概念和知识。
2.讨论法:学生针对某一问题进行讨论,培养学生的思考和表达能力。
3.案例分析法:分析实际操作系统案例,使学生更好地理解操作系统的工作原理。
4.实验法:通过操作系统的实验,让学生亲自动手实践,加深对知识的理解和运用。
四、教学资源为了支持本课程的教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:《操作系统原理》。
2.参考书:提供相关领域的经典教材和论文,以拓展学生的知识视野。
3.多媒体资料:制作课件、演示文稿等,以直观展示操作系统的原理和实例。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
RR算法的性能很大程度取决于时间片的大小。在一种极端情况下,如果时间片很大,那么RR算法与FCFS算法一样。相反,如果时间片很小(如1ms),那么RR算法可以导致大量的上下文切换。
(3)仅当第一队列空闲时,调度程序才调度第二队列中的进程运行;仅当第1~(i-1)队列均空时,才会调度第i队列中的进程运行.如果处理机正在第i队列中为某进程服务时,又有新进程进入优先权较高的队列(第1~(i-1)中的任何一个队列),则此时新进程将抢占正在运行进程的处理机,即由调度程序把正在运行的进程放回到第i队列的末尾,把处理机分配给新到的高优先权进程.?
3、根据文件内容,建立模拟进程队列,并能采用时间片轮转调度算法对模拟进程进行调度。
三、模拟程序的描述:
模拟指令的格式:操作命令+操作时间
●C:表示在CPU上计算
●I:表示输入
●O:表示输出
●W:表示等待
●H:表示进程结束
操作时间代表该操作命令要执行多长时间。这里假设I/O设备的数量没有限制,I和O设备都只有一类。
操作系统原理课程设计报告
系(院):
计算机科学学院
专业班级:
姓名:
学号:
指导教师:
设计时间:
2020.5.25——2020.5.30
设计地点:
一、
《操作系统原理》是计算机科学与技术专业的一门专业核心课程,也是研究生入学考试中计算机专业综合中所涉及的内容。该课程理论性强,纯粹的理论学习相对枯燥乏味,不易理解。通过课程设计,可加强学生对原理知识的理解。
该算法中,将一个较小时间单元定义为时间量或时间片。时间片的大小通常为10~100ms。就绪队列作为循环队列。CPU调度程序循环整个就绪队列,为每个进程分配不超过一个时间片的CPU。
为了实现RR调度,我们再次将就绪队列视为进程的FIFO队列。新进程添加到就绪队列的尾部。CPU调度程序从就绪队列中选择第一个进程,将定时器设置在一个时间片后中断,最后分派这个进程。
优先权的变化规律可描述为:
由于等待时间与服务时间之和,就是系统对该作业的响应时间,故该优先权又相当于响应比RP.据此,又可表示为:
3,高响应比优先调度算法
由上面的式子可以得到以下结论:
(1)如果作业的等待时间相同,则要求服务的时间愈短,其优先权愈高,因而该算法有利于短作业.
(2)当要求服务的时间相同时,作业的优先权决定于其等待时间,等待时间愈长,其优先权愈高,因而它实现的是先来先服务.
I,O,W三条指令实际上是不占有CPU的,执行这三条指令就应该将进程放入对应的等待队列(输入等待队列,输出等待队列,其他等待队列)。
例如,有一虚拟程序文件prc.txt描述如下:
P1
C10
I20
C40
I30
C20
O30
H00
P2
I10
C50
O20
H00
P3
C10
I20
W20
C40
O10
H00................
例如,假设我们只有一个需要10个时间单元的进程。如果时间片为12个时间单元,那么进程在一个时间片不到就能完成,而且没有额外开销。如果时间片为6个时间单元,那么进程需要2个时间片,并且还有一个上下文切换。如果时间片为1个时间单元,那么就会有9个上下文切换,相应地使进程执行更慢(图1)。
图1
更小时间片如何增加上下文切换
}
}
(2)、定义指令类型
class Instruction {
public char IName;//指令类型
public double IRemainTime;//指令运行时间
四、运行环境
编程语言:javaswing,编程软件idea,操作系统:Windows10。
五、算法原理
在早期的时间片轮转法中,系统将所有的就绪进程按先来先服务的原则,排成一个队列,每次调度时,把CPU分配给队首进程,并令其执行一个时间片.时间片的大小从几ms到几百ms.当执行的时间片用完时,由一个计时器发出时钟中断请求,调度程序便据此信号来停止该进程的执行,并将它送往就绪队列的末尾;然后,再把处理机分配给就绪队列中新的队首进程,同时也让它执行一个时间片.这样就可以保证就绪队列中的所有进程,在一给定的时间内,均能获得一时间片的处理机执行时间.这个算法时间片大小的确定对系统响应时间的要求,就绪队列中进程数目,系统的处理能力。时间片轮转(RR)调度算法是专门为分时系统设计的。它类似于FCFS调度,但是增加了抢占以切换进程。
接下来,有两种情况可能发生。进程可能只需少于时间片的CPU执行。对于这种情况,进程本身会自动释放CPU。调度程序接着处理就绪队列的下一个进程。否则,如果当前运行进程的CPU执行大于一个时间片,那么定时器会中断,进而中断操作系统。然后,进行上下文切换,再将进程加到就绪队列的尾部,接着CPU调度程序会选择就绪队列内的下一个进程。
尽管时间片应该比上下文切换时间要大,但也不能太大。如果时间片太大,那么RR调度就演变成了FCFS调度。根据经验,80%的CPU执行应该小于时间片。
1
(1)设置多个就绪队列,并为各个队列赋予不同的优先级.第一个队列的优先级最高,第二个队列次之,其余各队列的优先权逐个降低.
该算法赋予各个队列中进程执行时间片的大小也各不相同:
不过,采用RR策略的平均等待时间通常较长。假设有如下一组进程,它们在时间0到达,其CPU执行以ms计:
进程执行时间
P124
P23
P33
如果使用4ms的时间片,那么P1会执行最初的4ms。由于它还需要20ms,所以在第一个时间片之后它会被抢占,而CPU就交给队列中的下一个进程。由于P2不需要4ms,所以在其时间片用完之前就会退出。CPU接着交给下一个进程,即进程P3。在每个进程都得到了一个时间片之后,CPU又交给了进程P1以便继续执行。因此,RR调度结果如下:
图1更小时间片如何增加上下文切换
因此,我们希望时间片远大于上下文切换时间。如果上下文切换时间约为时间片的10%,那么约10%的CPU时间会浪费在上下文切换上。在实践中,大多数现代操作系统的时间片为10~100ms,上下文切换的时间一般少于10ms;因此,上下文切换的时间仅占时间片的一小部分。
周转时间也依赖于时间片大小。正如从图2中所看到的,随着时间片大小的增加,一组进程的平均周转时间不一定会改善。一般情况下,如果大多数进程能在一个时间片内完成,那么平均周转时间会改善。
时间片轮转调度结果
现在,我们计算这个调度的平均等待时间。P1等待10-4 = 6ms,P2等待4ms,而P3等待7ms。因此,平均等待时间为17/3 = 5.66ms。
在RR调度算法中,没有进程被连续分配超过一个时间片的CPU(除非它是唯一可运行的进程)。如果进程的CPU执行超过一个时间片,那么该进程会被抢占,并被放回到就绪队列。因此,RR调度算法是抢占的。
在优先权愈高的队列中,为每个进程所规定的执行时间片就愈小.
例如:第二个队列的时间片要比第一个队列的时间片长一倍,……,第i+1个队列的时间片要比第i个队列的时间片长一倍.
(2)当一个新进程进入内存后,首先将它放入第一队列的末尾,按FCFS原则排队等待调度.当轮到该进程执行时,如它能在该时间片内完成,便可准备撤离系统;如果它在一个时间片结束时尚未完成,调度程序便将该进程转入第二队列的末尾,再同样地按FCFS原则等待调度执行;如果它在第二队列中运行一个时间片后仍未完成,再依次将它放入第三队列,……,如此下去,当一个长作业(进程)从第一队列依次降到第n队列后,在第n队列中便采取按时间片轮转的方式运行.
2、优先权的类型
(1)静态优先权
静态优先权是在创建进程时确定的,且在进程的整个运行期间保持不变.
一般地,优先权是利用某一范围内的一个整数来表示的,例如,0~7或0~255中的某一整数,又把该整数称为优先数.只是具体用法各异:有的系统用"0"表示最高优先权反.
抢占式优先权调度算法
系统同样把处理机分配给优先权最高的进程,使之执行.但在其执行期间,只要又出现了另一个其优先权更高的进程,进程调度程序就立即停止当前进程(原优先权最高的进程)的执行,重新将处理机分配给新到的优先权最高的进程.
这种抢占式的优先权调度算法,能更好地满足紧迫作业的要求,常用于要求比较严格的实时系统中,以及对性能要求较高的批处理和分时系统中.
class PCB {
public String pname;//进程名称
public List<Instruction> pInstructions;//进程中指针列表
public int CurrentInstruction;//当前运行指令索引
PCB() {
this.pInstructions = new ArrayList<Instruction>();
周转时间如何随着时间片大小而改变
图2周转时间如何随着时间片大小而改变
例如,假设有三个进程,都需要10个时间单元。如果时间片为1个时间单元,那么平均周转时间为29;如果时间片为10,那么平均周转时间会降为20;如果再考虑上下文切换时间,那么平均周转时间对于较小时间片会增加,这是因为需要更多的上下文切换。
(3)对于长作业,作业的优先级可以随等待时间的增加而提高,当其等待时间足够长时,其优先级便可升到很高,从而也可获得处理机.
该算法照顾了短作业,且不会使长作业长期得不到服务
六、需求分析
在计算机系统中,可能同时有数百个批处理作业存放在磁盘的作业队列中,或者有数百个终端与主机相连接,这样一来内存和处理器等资源便供不应求。如何从这些作业中挑选作业进入主存运行、如何在进程之间分配处理器时间,无疑是操作系统资源管理中的一个重要问题。因此引入处理器调度用来完成涉及处理器分配的工作,而其中的低级调度,执行分配CPU的程序即分派程序(dispatcher),它是操作系统最为核心的部分,执行十分频繁,低级调度策略优劣直接影响到整个系统的性能。