WDM光传送网中支持优先级的波长分配算法

WDM光传送网的选路和波长分配算法

WDM光传送网的选路和波长分配算法 为了克服电处理的速率“瓶颈”,宽带网络向光网络发展。目前,光突发交换、光分组(包)交换正在积极研究中,但是距商用还较远。已可商用的是具有光分插复用器(OADM,OpticalAdd-DropMultiplexer)和光交叉连接器(OXC,OpticalCross-Connect)的波分复用(WDM)网络。由于是提供可调度的传送用光路,称这种网络为WDM光传送网(OTN,OpticalTransportNetwork)。 1网络结构 图1是网络物理结构的一个例子,虚线内为光传送网。图中有5个OXC:A,B,C,D,E;5个具有光接口的电设备:S1~S5;6个将OXC相连的物理链路:l1~l6。一般一条物理链路包含一对光纤供双向运用,有的OXC间没有物理链路相连。但更多的情况是一条物理链路包含多根光纤供不同方向运用。一根光纤上可采用多个波长。 一般情况下,OXC不直接和电设备相连,只起光交叉连接作用。 OXC可分为无波长变换和有波长变换(也可以是部分端

口有波长变换或波长变换的范围有限)两种:无波长变换的OXC的作用是将一根输入光纤上的某一波长信号连到另一根输出光纤的同一波长上,即波长是连续的;有波长变换则是将一根输入光纤上的某一波长信号连到另一根输出光纤 的另一波长上。适当地安排路由和分配波长,可为电设备间建立光路(opticalpath)。在一根光纤上,不能为不同光路分配相同波长。图2(a)为图1建立的光路例子。将图2(a)的光路连接用图2(b)来表示,称为逻辑结构,也称逻辑拓扑或虚拓扑。例如,图2(a)中,节点B与E间的光路是经节点A中的OXC转接的,在图2(b)中用O4表示。图2(b)中,O6、O4、O1都是中间有OXC转接的。O2、O3、O5是直接光路。 这样建立的光路对信号是透明的,即信号可以是任意方式。 实际设计中,一种需求情况是:提出所需建立的光路,为这种光路选取物理路由并分配相应的波长[1,2]。例如,图2(b)中提出要建立6条光路,图2(a)就是一种选路和波长分配方案。 网络向分组化发展,图1中的电设备可以是ATM交换机或IP路由器。例如,连在端口B2的路由器可以通过光路O6和连在端口C3的路由器相连。B2到C3可有多条路径,O6是最近的,也可以经过O4―O5―O3或O4―O5―O1―O2连接,但需要路由器转接,即电的多跳连接。A与B间

嵌入式操作系统实验报告

中南大学信息科学与工程学院实验报告 姓名:安磊 班级:计科0901 学号: 0909090310

指导老师:宋虹

目录 课程设计内容 ----------------------------------- 3 uC/OS操作系统简介 ------------------------------------ 3 uC/OS操作系统的组成 ------------------------------ 3 uC/OS操作系统功能作用 ---------------------------- 4 uC/OS文件系统的建立 ---------------------------- 6 文件系统设计的原则 ------------------------------6 文件系统的层次结构和功能模块 ---------------------6 文件系统的详细设计 -------------------------------- 8 文件系统核心代码 --------------------------------- 9 课程设计感想 ------------------------------------- 11 附录-------------------------------------------------- 12

课程设计内容 在uC/OS操作系统中增加一个简单的文件系统。 要求如下: (1)熟悉并分析uc/os操作系统 (2)设计并实现一个简单的文件系统 (3)可以是存放在内存的虚拟文件系统,也可以是存放在磁盘的实际文件系统 (4)编写测试代码,测试对文件的相关操作:建立,读写等 课程设计目的 操作系统课程主要讲述的内容是多道操作系统的原理与技术,与其它计算机原理、编译原理、汇编语言、计算机网络、程序设计等专业课程关系十分密切。 本课程设计的目的综合应用学生所学知识,建立系统和完整的计算机系统概念,理解和巩固操作系统基本理论、原理和方法,掌握操作系统开发的基本技能。 I.uC/OS操作系统简介 μC/OS-II是一种可移植的,可植入ROM的,可裁剪的,抢占式的,实时多任务操作系统内核。它被广泛应用于微处理器、微控制器和数字信号处理器。 μC/OS 和μC/OS-II 是专门为计算机的嵌入式应用设计的,绝大部分代码是用C语言编写的。CPU 硬件相关部分是用汇编语言编写的、总量约200行的汇编语言部分被压缩到最低限度,为的是便于移植到任何一种其它的CPU 上。用户只要有标准的ANSI 的C交叉编译器,有汇编器、连接器等软件工具,就可以将μC/OS-II嵌入到开发的产品中。μC/OS-II 具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点,最小内核可编译至2KB 。μC/OS-II 已经移植到了几乎所有知名的CPU 上。 严格地说uC/OS-II只是一个实时操作系统内核,它仅仅包含了任务调度,任务管理,时间管理,内存管理和任务间的通信和同步等基本功能。没有提供输入输出管理,文件系统,网络等额外的服务。但由于uC/OS-II良好的可扩展性和源码开放,这些非必须的功能完全 可以由用户自己根据需要分别实现。 uC/OS-II目标是实现一个基于优先级调度的抢占式的实时内核,并在这个内核之上提供最基本的系统服务,如信号量,邮箱,消息队列,内存管理,中断管理等。 uC/OS操作系统的组成 μC/OS-II可以大致分成核心、任务处理、时间处理、任务同步与通信,CPU的移植等5个部分。如下图:

WDM光传送网的选路和波长分配算法

WDM 光传送网的选路和波长分配算法 为了克服电处理的速率“瓶颈” ,宽带网络向光网络发展。目前,光突发交换、光分组 (包)交换正在积极研究中,但是距商用还较远。已可商用的是具有光分插复用器 (OADM,OpticalAdd - DropMultiplexer) 和光交叉连接器(OXC,OpticalCross- Connect)的波分复用(WDM)网络。由于是提供可调度的传送用光路,称这种网络为 WDM 光传送网 (OTN,OpticalTransportNetwork) 。 1 网络结构 图 1 是网络物理结构的一个例子,虚线内为光传送网。图中有 5 个 OXC:A,B,C,D,E;5 个具有光接口的电设备: S1? S5; 6个将OXC相连的物理链路:11?16。一般一条物理链路包含一对光纤供双向运用,有的OXC间没有物理链路相 连。但更多的情况是一条物理链路包含多根光纤供不同方向运用。一根光纤上可采用多个波长。 一般情况下,OXC不直接和电设备相连,只起光交叉连接作用。 OXC可分为无波长变换和有波长变换(也可以是部分端口有波

长变换或波长变换的范围有限 )两种:无波长变换的 OXC的作用是将一根输入光纤上的某一波长信号连到另一根输出光纤的同一波长上,即波长是连续的;有波长变换则是将一根输入光纤上的某一波长信号连到另一根输出光纤的另一波长上。适当地安排路由和分配波长,可为电设备间建立光路 (opticalpath) 。在一根光纤上,不能为不同光路分配相同波长。图2(a)为图1建立的光路例子。将图 2(a)的光路连接用图2(b)来表示,称为逻辑结构,也称逻辑拓扑或虚拓扑。例如,图2(a)中,节点B与E间的 光路是经节点 A中的OXC 转接的,在图2(b)中用04表示。图2(b)中,06、04、01都是中间有 OXC转接的。02、03、05是直接光路。 这样建立的光路对信号是透明的,即信号可以是任意方式。 实际设计中,一种需求情况是:提出所需建立的光路,为这 种光路选取物理路由并分配相应的波长 [1,2]。例如,图 2(b)中提出要建立6条光路,图2(a)就是一种选路和波长分配方案。 网络向分组化发展,图1中的电设备可以是 ATM交换机或 IP 路由器。例如,连在端口 B2 的路由器可以通过光路 06 和连在端口 C3的路由器相连。B2到C3可有多条路径,06 是最近的,也可以经过 04— 05— 03或04— 05— 01—02连接,但需要路由 器转接,即电的多跳连接。 A与B间没有光 路,至少需经 C 电跳连接一次 实际设计中另一种需求情况是:提出各路由器间的所需业务 量强度;设计出逻辑拓扑并为其光路选取物理路由和分配波长 [2

ASON中一种新的动态路由和波长分配算法_杜荔

收稿日期:2008-05-31 基金项目:国家高技术研究发展计划项目(2003AA781011);辽宁省自然科学基金资助项目(20072022)·作者简介:杜 荔(1962-),女,辽宁沈阳人,东北大学副教授· 第30卷第4期2009年4月东北大学学报(自然科学版)Journal of Northeastern University (Natural Science )Vol .30,No .4 Apr .2009 ASON 中一种新的动态路由和波长分配算法 杜 荔,孟艳楼,毕晓红 (东北大学信息科学与工程学院,辽宁沈阳 110004) 摘 要:在A SO N 中的网络节点不具备波长变换能力且光纤中复用的波长数有限的情况下,针对为到达的业务请求动态选路和波长分配问题,提出了一种新的动态路由和波长分配算法(N -RWA )·该算法中设计了一种同时考虑节点跳数和当前网络状态的合理适应度函数,并将遗传算法和最小影响波长分配算法相结合,实现对传统RWA 算法的改进·仿真结果表明,与传统的RWA 算法相比,N -RWA 算法在保证全网业务负 载均衡的同时,大大降低了网络阻塞的可能性· 关 键 词:自动交换光网络;路由和波长分配;最小影响;遗传算法;进化代数 中图分类号:T N 915 文献标识码:A 文章编号:1005-3026(2009)04-0518-04 A New Dynamic Routing /Wavelength Assignment Algorithm in AS ON DU Li ,MENG Yan -lou ,B I Xiao -hong (School of Info rma tio n Science &Engineering ,N ortheastern U niversity ,Shenyang 110004, China . Correspondent :D U Li ,E -mail :duli @ise .neu .edu .cn ) A bstract :Considering the conditions that the nodes are unable to convert the w aveleng th and that the number of multiplex wavelengths is limited in optical fibres ,a new routing /w aveleng th assig nment (N -RWA )algorithm is proposed to solve dynamically the routing and w aveleng th assig nment problem for the arrival of service request .In the new algorithm a rational fitness function is designed taking account simultaneously of the number of hops in a lightpath and the current netw ork conditions and the genetic algorithm is in combination with least influence w aveleng th assignment algorithm ,thus improving the conventio nal RWA algo rithm .Simulation results showed that N -RWA can significantly reduces the blocking probability in com parison w ith the conventional RWA algorithm w ith balanced load kept o n in the w hole netwo rk .Key words :ASON (automatically sw itched optical netw ork );routing /wavelength assig nment ;least influence ;genetic algorithm ;evolution generation 自动交换光网络(ASON )是在信令网控制之下完成光传送网内光通道连接和自动交换功能的新型网络[1],代表未来网络技术的发展方向·而RWA 问题是指当一个连接请求到来时,为连接请求计算路由并分配波长的问题,是ASON 中的关键技术之一[2]·针对不同的业务特性和连接请求方式,RWA 问题的研究主要分为静态和动态RWA 问题[3]·由于RWA 问题是NP -C 问题,因而为降低问题复杂度,一般将RWA 问题分为路由问题和波长分配问题来研究[4]· 当前路由选择策略包括固定路由(fixed routing ,FR )、固定可选路由(fixed alternate routing ,FAR )和自适应路由(alternate routing , AR )[5]·波长分配算法主要有首次命中( first fit ,FF )、最小负载(least loaded ,LL )、最小影响(least influence ,LI )、相对容量损失(relative capacity loss ,RC L )等·在ASON 智能光网络中,静态RW A 算法通常是在建网初期对静态网络业务的规划方法,一般可采用整数线性规划方法实现[6] ·而动态RWA 算法通常是在网络运行期间对动态网络业

Pintos pro 1 实验报告

Pintos pro 1 实验报告 第丁组 王小花 201201102 李三强 201201103 1.Alarm Clock timer_sleep的作用是让此线程等待ticks单位时长,然后再执行。函数原型: void timer_sleep (int64_t ticks) //参数的意思是你想要等待的时间长度 { int64_t start = timer_ticks (); //记录开始时的系统时间 ASSERT (intr_get_level () == INTR_ON); while (timer_elapsed (start) < ticks) //如果elapse(流逝)的时间>=ticks时就返回。否则将持续占用cpu。 thread_yield (); } 在timer_sleep()函数中让该进程暂时阻塞(调用thread_block()),然后过了ticks个时间段后再把它加回到ready queue中。 至于因为每一次时间中断的时候恰好是ticks加一的时候,因此我们可以改进timer_interrup()函数,使得系统每次调用他的时候都检查一下我的这个进程是否已经等待了足够长得时间了。如果还没有够,则不管它,如果已经足够长了,则调用thread_unblock()函数将它召唤回ready_queue中。 加入一个整形变量int block_ticks。当这个线程被block的时候,将block_ticks记录为需要等待的时间长度。之后每次中断的时候检查它一次,并且顺便使其自减。当它小到等于0的时候,把线程调到ready queue中。 Threads.h tread.c interrup.h timer.c

几种操作系统调度算法

保证调度算法 基本思想:向用户做出明确的性能保证,然后去实现它.如你工作时有n个用户的登录,则你将获得cpu处理能力的1/n 算法实现:跟踪计算各个进程已经使用的cpu时间和应该获得的cpu时间,调度将转向两者之比最低的进程 五,保证调度算法 思想:向用户做出明确的性能保证,然后去实现它. 算法:容易实现的一种保证是:当工作时己有n个用户登录在系统,则将获得CPU处理能力的1/n.类似的,如果在一个有n个进程运行的用户系统中,每个进程将获得CPU处理能力的1/n. 实现方法:OS应记录及计算,各个进程在一定时间段内,已经使用的CPU时间和应该得到的CPU时间,二者之比小者优先级高. 5. 保证调度 一种完全不同的调度算法是向用户作出明确的性能保证,然后去实现它。一种很实际并很容易实现的保证是:若用户工作时有n个用户登录,则用户将获得CPU处理能力的1/n。类似地,在一个有n个进程运行的单用户系统中,若所有的进程都等价,则每个进程将获得1/n的CPU时间。看上去足够公平了。 为了实现所做的保证,系统必须跟踪各个进程自创建以来已使用了多少CPU时间。然后它计算各个进程应获得的CPU时间,即自创建以来的时间除以n。由于各个进程实际获得的CPU时间是已知的,所以很容易计算出真正获得的CPU时间和应获得的CPU时间之比。比率为0.5说明一个进程只获得了应得时间的一半,而比率为2.0则说明它获得了应得时间的2倍。于是该算法随后转向比率最低的进程,直到该进程的比率超过它的最接近竞争者为止。 彩票调度算法 基本思想:为进程发放针对系统各种资源(如cpu时间)的彩票;当调度程序需要做出决策时,随机选择一张彩票,持有该彩票的进程将获得系统资源 合作进程之间的彩票交换 六,彩票调度算法 彩票调度算法: 为进程发放针对各种资源(如CPU时间)的彩票.调度程序随机选择一张彩票,持有该彩票的进程获得系统资源. 彩票调度算法的特点: 平等且体现优先级:进程都是平等的,有相同的运行机会.如果某些进程需要更多的机会,可被给予更多彩票,增加其中奖机会. 易计算CPU的占有几率:某进程占用CPU的几率,与所持有的彩票数成正比例.该算法可实现各进程占用CPU的几率. 响应迅速 各个进程可以合作,相互交换彩票. 容易实现按比例分配如图象传输率,10帧/s,15帧/s,25帧/s

北邮光网络技术作业第2次 路由波长分配(RWA)算法的研究现状

路由波长分配(RWA)算法的研究现状 班级:2010211117 学号:10210518 姓名:刘芷若 1. 前言 波分复用(Wavelength Division Multiplexing—WDM)网络利用了光纤传输链路的巨大带宽,随着WDM技术日趋成熟,WDM传输技术已经进入实用化和商用化阶段。WDM全光通信网是光纤通信未来发展的主要方向之一。由于光网络对传输信号的速率和格式透明,具有灵活的波长选路和动态资源配置能力,可以实现网络的动态重构,被认为是通信网络升级的首选方案。如何利用现有的和即将敷设的光纤连网,构成未来高速、大容量、多业务的WDM 网络已经成为光通信领域中的一个重大问题。WDM网络节点处采用光分插复用器(OADM)或光交叉连接设备(OXC)在光层建立光连接,即光通道(optical path),为高层的多个逻辑电网络提供了高速、大容量的信息传送平台。光通道的建立,要求在传送网的物理结构中选择一条由业务源点到宿点的路由,并为其分配一定的波长信道(参见图1.1)。考虑到波长资源的重利用以及提高网络的阻塞性能,优化光通道的选路和波长分配(Routing and Wavelength Assignment —RW A)方案成为光通道层设计的核心问题。RW A解决如何寻找一条合适的光通道并合理地分配通道所使用的波长,使有限的资源充分发挥作用,以提供尽可能大的通信容量。 2.RWA算法的分类 WRON被认为是构建下一代光网络的候选方案之一。但是由于网络资源有限(如波长数、收发器数目等),不可能在网络中为每一节点对都建立一条直接相连的光路,因此针对不同的网络需求,需要考虑对现有可用资源进行高效利用和优化设计。WRON的核心问题是优化设计光路的选路和波长分配,寻找一条合适的光路并为之合理地分配波长,使有限的资源充分发挥作用,以提供尽可能大的通信容量。根据光通道连接请求的特点,可以把RWA问 题分成静态和动态两类。 (1)静态RWA(SRWA)问题:网络的业务类型是静态的,而且当所有连接建立好之后,连接将保持不变。光通道连接请求是预先给出的,因此要求离线计算路由和分配波长,而不需要实时计算。SR—WA问题的研究适合广域网(或骨干网),因为对于广域网来说,其业务流量基本是确定的。SRWA的输出结果是所有的源一目的节点对之间的光通道的路由以及给这些光通道分配的波长。 (2)动态RWA(DRWA)问题:光通道连接请求是逐条提出的,而且一条光通道持续一段时间后又被拆除,因此需要为每一条光通道做实时RWA计算。对于DRWA问题,对光通道建立请求的处理通常有两种策略:可重构型策略和不可重构型策略。所谓可重构型策略,就是当网络拥塞发生的时候,光网络的逻辑拓扑可以进行重构,以消除拥塞情况。但是这样的操作可能会中断很多现有的连接,而且需要对网络节点之间的光通道进行大量的调整(拆除或者重新建立),因此不适合大规模的网络。而不可重构型策略,则在拥塞发生的时候不能重构光通道,只能拒绝该请求。

操作系统第二版第四章课后习题答案

第四章调度作业答案 2,8,9,11,13 2. 高级调度与低级调度的主要功能是什么?为什么要引入中级调度? 参考答案: 高级调度的主要功能是根据一定的算法,从输入的一批作业中选出若干作业,分配必要的资源,如内存、外设等,为它建立相应的用户作业进程和为其服务的系统进程(如输入/输出进程),最后把它们的程序和数据调入内存,等待进程调度程序对其执行调度,并在作业完成后做善后处理工作。 低级调度的主要功能是根据一定的算法将CPU分派给就绪队列中的一个进程。 为了使内存中同时存放的进程数目不至于太多,有时需要把某些进程从内存移到外存上,以减少多道程序的数目,为此设立了中级调度。引入中级调度的主要目的是为了提高内存的利用率和系统吞吐量。它实际上就是存储管理中的对换功能。 8. 假定在单CPU条件下执行的作业表如表4-8所示。 作业到来的时间是按作业编号顺序进行的(即后面作业依次

比前一个作业迟到一个时间单位)。 ①用一个执行时间图描述使用下列算法时各自执行这些作业的情况:FCFS,RR(时间片=1)和非抢占式优先级。 ②对于上述每种算法,各个作业的周转时间是多少?平均周转时间是多少? ③对于上述每种算法,各个作业的带权周转时间是多少?平均带权周转时间是多少? 表4-8 作业列表 参考答案:24351 ①FCFS执行时间图 RR执行时间图 非抢占式优先级时间图

②和③ FCFS算法: RR算法:

非抢占式优先级算法: 13、中断处理的主要步骤是什么? 参考答案: 中断处理的一般步骤是:保存被中断程序的现场,分析中断原因,转入相应处理程序进行处理,恢复被中断程序现场(即中断返回)。 9. 在一个有两道作业的批处理系统中,作业调度采用短作业优先级调度算法,进程调度采用抢占式优先级调度算法。设作业序列如表4-9所示。

优先级调度算法

优先级调度算法 1、调度算法 考虑到紧迫型作业进入系统后能得到优先处理,引入了高优先级优先调度算法。 优先级调度的含义: (1)当该算法用于作业调度时,系统从后背作业队列中选择若干个优先级最高的,且系统能满足资源要求的作业装入内存运行;(2)当该算法用于进程调度时,将把处理机分配给就绪进行队列中优先级最高的进程。 2、调度算法的两种方式 非抢占式优先级算法:在这种调度方式下,系统一旦把处理机分配给就绪队列中优先级最高的进程后,该进程就能一直执行下去,直至完成;或因等待某事件的发生使该进程不得不放弃处理机时,系统才能将处理机分配给另一个优先级高的就绪队列。 抢占式优先级调度算法:在这种调度方式下,进程调度程序把处理机分配给当时优先级最高的就绪进程,使之执行。一旦出现了另一个优先级更高的就绪进程时,进程调度程序就停止正在执行的进程,将处理机分配给新出现的优先级最高的就绪进程。常用于实时要求比较严格的实时系统中,以及对实时性能要求高的分时系统。 3、优先级的类型 进程的优先级可采用静态优先级和动态优先级两种,优先级可由用户自定或由系统确定。

静态优先级调度算法 含义:静态优先级是在创建进程时确定进程的优先级,并且规定它在进程的整个运行期间保持不变。 确定优先级的依据: 1)进程的类型。 2)进程对资源的需求。 3)根据用户的要求。 优点:简单易行;系统开销小。 缺点:不太灵活,很可能出现低优先级的作业,长期得不到调度而等待的情况;静态优先级法仅适合于实时要求不太高的系统。 动态优先级调度算法 含义:动态优先级是创建进程时赋予该进程一个初始优先级,然后其优先级随着进程的执行情况的变化而改变,以便获得更好的调度性能。 优点:使相应的优先级调度算法比较灵活、科学,可防止有些进程一直得不到调度,也可防止有些进程长期垄断处理机。 缺点:需要花费相当多的执行程序时间,因而花费的系统开销比较大。 4、实时调度算法 由于在任何一个实时系统中毒存在着若干个实时进程或任务,用来反应或控制相应的外部事件,并往往具有某种程度的紧迫性,所以对实时系统中的调度算法提出了某些特殊要求。 对实时系统的要求

西电计算机操作系统课程设计pintos-pro3

西安电子科技大学 操作系统课程设计 (2016年度) 实 验 报 告 实验名称:Priority-Scheduling--Task 2 班级: 姓名: 学号:

一、实验内容 解决优先级反转的问题,在高优先级和低优先级之间竞争锁的问题。 二、分析及设计 使用多重优先级捐赠,解决优先级反转的问题。 1、一个线程获得锁,如果获得这个锁的线程比自己低就提高它的优先级,如果这个锁也是被锁着,那就递归捐赠优先级,在线程释放掉锁之后,恢复未捐赠的优先级。 2、在释放掉锁的时候,若优先级改变可以发生抢占。 3、将信号量的等待队列实现为优先队列。 4、将condition的等待队列实现为优先队列。 5、一个线程被多个线程捐赠,保持当前优先级为捐赠优先级中最大值。 6、在对一个线程设置优先级时,如果处于被捐赠状态,对original_priority进行设置,如果设置的优先级大于当前的优先级,改变当前的优先级,否则在捐赠完成时恢复 original_priority。 7、在释放锁对一个锁优先级有改变的时候应考虑其余被捐赠优先级和当前优先级。 三、详细实现 1、修改thread数据结构(thread.h) 2、在lock结构体中添加成员(synch.h)

3、修改lock_acquire函数(synch.c) 4、thread_hold_the_lock()函数的实现 5、thread_donate_priority()函数的实现

6、锁队列排序函数lock_cmp_priority实现 7、在lock_release函数加入以下语句 8、thread_remove_lock实现 9、thread_update_priority函数实现处理当前线程的优先级

优先级调度算法实验报告

优 先 级 调 度 算 法 实 验 报 告 院系:****************学院班级:*********** 姓名:*** 学号:************

一、实验题目:优先级调度算法 二、实验目的 进程调度是处理机管理的核心内容。本实验要求用高级语言编写模拟进程调度程序,以便加深理解有关进程控制快、进程队列等概念,并体会和了解优先级算法的具体实施办法。 三、实验内容 1.设计进程控制块PCB的结构,通常应包括如下信息: 进程名、进程优先数(或轮转时间片数)、进程已占用的CPU时间、进程到完成还需要的时间、进程的状态、当前队列指针等。 2.编写优先级调度算法程序 3.按要求输出结果。 四、实验要求 每个进程可有三种状态;执行状态(RUN)、就绪状态(READY,包括等待状态)和完成状态(FINISH),并假定初始状态为就绪状态。(一)进程控制块结构如下: NAME——进程标示符 PRIO/ROUND——进程优先数 NEEDTIME——进程到完成还需要的时间片数 STATE——进程状态 NEXT——链指针 注: 1.为了便于处理,程序中进程的的运行时间以时间片为单位进行

计算; 2.各进程的优先数或,以及进程运行时间片数的初值,均由用户在程序运行时给定。 (二)进程的就绪态和等待态均为链表结构,共有四个指针如下:RUN——当前运行进程指针 READY——就需队列头指针 TAIL——就需队列尾指针 FINISH——完成队列头指针 五、实验结果:

六、实验总结: 首先这次实验的难度不小,它必须在熟悉掌握数据结构的链表和队列的前提下才能完成,这次实验中用了三个队列,就绪队列,执行队列和完成队列,就绪队列中的优先级数是有序插入的,当进行进程调度的时候,需要先把就绪队列的队首节点(优先级数最大的节点)移入执行队列中,当执行进程结束后,判断该进程是否已经完成,如果已经完成则移入完成队列,如果没有完成,重新有序插入就绪队列中,这就是这次实验算法的思想。 附录(算法代码):

采用静态优先权优先算法的进程调度程序

采用静态优先权优先算法的进程调度程序 学号: 姓名: 专业: 指导教师: 日期: 目录 第1部分课设简介 (3)

1.1 课程设计题目 (3) 1.2 课程设计目的 (3) 1.3 课程设计内容 (3) 1.4 时间安排 (3) 第2部分实验原理分析 (3) 2.1问题描述 (3) 2.2解决方法 (4) 第3部分主要的功能模块 (5) 3.1主要的函数 (5) 3.2 测试用例及运行结果 (7) 第4部分源代码 (9) 第5部分总结及参考文献 (16) 5.1 总结 (16) 5.2 参考文献 (17)

第1部分课设简介 1.1 课程设计题目 采用静态优先权优先算法的进程调度程序 1.2 课程设计目的 操作系统课程设计是计算机专业重要的教学环节,它为学生提供了一个既动手又动脑,将课本上的理论知识和实际有机的结合起来,独立分析和解决实际问题的机会。 1)进一步巩固和复习操作系统的基础知识。 2)培养学生结构化程序、模块化程序设计的方法和能力。 3)提高学生调试程序的技巧和软件设计的能力。 4)提高学生分析问题、解决问题以及综合利用C语言进行程序设计的能力。 1.3 课程设计内容 设计并实现一个采用静态优先权算法的进程调度演示程序 1.4 时间安排 1)分析设计贮备阶段(1 天) 2)编程调试阶段(7 天) 3)写课程设计报告、考核(2 天) 第2部分实验原理分析 2.1问题描述 (1)每一个进程有一个PCB,其内容可以根据具体情况设定。 (2)进程数、进入内存时间、要求服务时间、优先级等均可以在界面上设定

(3)可读取样例数据(要求存放在外部文件中)进行进程数、进入内存时间、时间片长度、作业大小、进程优先级的初始化 (4)可以在运行中显示各进程的状态:就绪、执行(由于不要求设置互斥资源与进程间的同步关系,故只有两种状态) (5)采用可视化界面,可在进程调度过程中随时暂停调度,查看当前进程的状态以及相应的阻塞队列 (6)有性能比较功能,可比较同一组数据在不同调度算法下的平均周转时间(7)具有一定的数据容错性 2.2程序设计流程图

最早期限优先调度算法(EDF)的特点和实现

最早期限优先调度算法(EDF)的特点和实现 摘要:最早期限优先调度算法是基于优先级的动态调度方法,是最优的单处理器调度算法,具有灵活性高、能充分利用CPU计算能力的特点。但是同时也具有调度开销增大、不能确定优先级低的任务截止之间能否得到满足的缺点,从而产生了EDF算法的优化算法NEDF和DPDS,较好的解决了上述问题,平衡了CPU使用率、响应时间、公平性和截止时间的问题。关键词:任务调度;动态调度;优先级;EDF 引言:随着计算机的发展,多道程序处理的出现需要强大的调度算法来对多任务进行调度,以确定多任务环境下任务的执行顺序以及占有CPU时间。相对于静态、不可抢占的调度方法,EDF的出现使之凭借灵活性高、CPU占有率高很快成为最优的单处理器调度算法。 一、任务调度的基本概念 在计算机发展的初期,需要使用计算机时,通常要集中在计算机所在的地方,人为的以作业的方式把工作内容一件一件的交给计算机处理,也就不存在调度的概念。随后,出现了计算机的批处理方式,计算机把作业按照先来先服务的方式进行处理,体现了一种非常简单的调度概念。随着多道程序处理方式的出现,调度逐渐变得重要和复杂起来。 在多任务的实时操作系统中,调度是一个非常重要的功能,用来确定多任务环境下任务执行的顺序和获得CPU资源后能够执行的时间长度。操作系统通过一个调度程序看来实现调度功能,调度程序以函数的形式存在,用来实现操作系统的调度算法。 调度程序是影响系统性能(如吞吐率、延迟时间等)的重要部分。在设计调度程序时,通常要综合考虑如下因素:CPU的使用率、输入、输出设备的吞吐率、响应时间、公平性和截止时间。这些因素之间有一定的冲突性,在设计调度程序时需要优先考虑最重要的需求,然后再各种因素之间进行折中处理。 二、调度方法的分类 对于大量的实时调度方法来说,主要存在以下几种划分方法: 1、离线(off-line)和在线(on-line)调度 根据获得调度信息的时机,调度算法可以分为离线调度和在线调度两类。对

非抢占式优先级

非抢占式优先级#include #define MAX 10 struct Process { char name[10]; float AT; float sT; float RT; float fT; int priority;//优先数 int order;//进程执行次序 int flag;//标记进程状态 }p[MAX]; int count; //排列到达时间 //按到达时间与优先数计算执行序列 void P() { float temp_time=0; int i=0,j; int k,temp_count; int max_priority; max_priority=p[i].priority; j=1; while((jp[i].priority){ max_priority=p[j].priority; i=j; } j++; } k=i; p[k].sT=p[k].A T;//开始时间=达到时间 p[k].fT=p[k].sT+p[k].RT; p[k].flag=1; temp_time=p[k].fT; p[k].order=1; temp_count=1; while(temp_count

//判断到达时间是否小于上一个进程的结束时间并且非处在运行状态 if((p[j].AT<=temp_time)&&(!p[j].flag)) //判断进程优先数是否大于最大优先数,如果大于,就将其值赋给max_priority if(p[j].priority>max_priority){ max_priority=p[j].priority; k=j; } if(p[j].AT>temp_time) { k=j; temp_time=p[j].AT; } } p[k].sT=temp_time; p[k].fT=p[k].sT+p[k].RT; p[k].flag=1; temp_time=p[k].fT; temp_count++; p[k].order=temp_count; } } void input() { int i; printf("\n-------------------------------------------------------------------------------\n"); printf("\n请输入进程名到达时间运行时间优先数,例如:a 0 100 1\n"); for(i=0;i

设计一个按优先数调度算法实现处理器调度的程序 改

题目:设计一个按优先数调度算法实现处理器调度的程序 提示: (1)假定系统有5个进程,每个进程用一个PCB来代表。PCB的格式为: 进程名、指针、要求运行时间、优先数、状态。 进程名——P1~P5。 指针——按优先数的大小把5个进程连成队列,用指针指出下一个进程PCB的首地址。 要求运行时间——假设进程需要运行的单位时间数。 优先数——赋予进程的优先数,调度时总是选取优先数大的进程先执行。 状态——假设两种状态,就绪,用R表示,和结束,用E表示。初始状态都为就绪状态。 (2) 每次运行之前,为每个进程任意确定它的“优先数”和“要求运行时间”。 (3) 处理器总是选队首进程运行。采用动态改变优先数的办法,进程每运行1次,优先 数减1,要求运行时间减1。 (4) 进程运行一次后,若要求运行时间不等于0,则将它加入队列,否则,将状态改为“结 束”,退出队列。 (5) 若就绪队列为空,结束,否则,重复(3)。 2.程序中使用的数据结构及符号说明: #define num 5//假定系统中进程个数为5 struct PCB{ char ID;//进程名 int runtime;//要求运行时间 int pri;//优先数 char state; //状态,R-就绪,F-结束 }; struct PCB pcblist[num];//定义进程控制块数组 3.流程图: (1)主程序流程图: (2)子程序init()流程图:

(3) 子程序max_pri_process()流程图:

(4)子程序show()流程图:

(5)子程序run()流程图:

pintos Lab2 实验报告

华东师范大学软件学院实验报告 实验课程:操作系统实践年级:大二实验成绩: 实验名称:Pintos-User Programs 姓名: 实验编号:学号:实验日期:2018/12/27 指导教师:组号:实验时间:4学时 一、实验目的 当前, 我们已经完成了pintos 的第一部分(熟悉了其基础结构和线程包), 现在是开始处理系统中允许运行用户程序的部分的时候了。基本代码已经支持加载和运行用户程序, 但不能加载和运行或交互性。在此项目中, 我们将使程序能够通过系统调用与操作系统进行交互。我们将在"userprog" 目录中进行工作, 但我们也将与pintos 的几乎所有其他部分进行交互。 具体目的如下: (1)了解Pintos操作系统的功能流程及内核的软件工程结构。 (2)通过Pintos操作系统内核的剖析,了解现有Pintos操作系统在处理用户程序方面中存在的参数传递问题,有效解决其参数传递的问题。 (3)通过Pintos内核剖析,了解其中断处理的机制,学会操作系统中断功能的编写方法。 (4)了解现有Pintos操作系统的系统调用功能,根据其中断机制,完善系统调用功能,使Pintos系统具有处理用户中断请求的功能。 (5)通过Pintos内核剖析,解决现有Pintos操作系统中存在的进程终止时缺少终端提示的问题。 (6)通过Pintos内核剖析,解决现有Pintos操作系统中存在的运行文件禁止写操作的问题。 二、实验内容与实验步骤

实验内容如下: (1)在分析内核的基础上,对Pintos操作系统的参数传递问题提出有效的策略,设计算法,分步跟踪和调试,通过实践,有效解决参数传递问题,并对实验结果进行分析。 (2)通过Pintos操作系统内核的剖析,了解其中断处理的机制,在此基础上,完善Pintos的系统调用功能,设计算法,分步跟踪和调试,通过测试分析完善的系统调用功能。 (3)在分析内核的基础上,对现有Pintos操作系统进行完善,增加进程终止的终端提示功能,设计算法,分步跟踪和调试,通过实践,验证终端提示功的有效性。 (4)在分析内核的基础上,对现有Pintos操作系统进行完善,增加运行文件禁止写操作的功能,设计算法,分步跟踪和调试,通过实践,验证禁止写操作功能的有效性。 具体步骤: (1)进程终止的终端提示 每当用户进程终止时,不管是自愿退出或出于任何其他原因, 请打印进程的名称和退出代码, 格式为printf ("%s: exit(%d)\n", ...)。打印的名称应该是传递给 process_execute() 的全名, 省略了命令行参数。当不是用户进程的内核线程终止 或调用停止系统调用时, 不要打印这些消息。当进程加载失败时, 该消息是可选 的。除此之外, 不要打印任何其他消息。 (2)参数传递 目前, process_execute() 不支持将参数传递给新进程。实现此功能, 通过扩展process_execute(), 使其不是简单地将程序文件名作为其参数, 而是将其划分为空 格中的单词。第一个单词是程序名称, 第二个单词是第一个参数, 依此类推。也 就是说, process_execute ("grep foo bar") 应该运行grep 传递两个参数foo 和 bar。在命令行中, 多个空格等效于单个空格, 因此process_execute("grep foo bar") 相当于我们最初的示例。我们可以对命令行参数的长度施加合理的限制。 (3)系统调用 在"userprogsecalls. c" 中实现系统调用处理程序。我们通过终止进程提供" 句柄" 系统调用的骨架实现。它将需要检索系统调用号码, 然后检索任何系统调 用参数, 并执行适当的操作。实现以下系统调用。列出的原型是由一个用户程序 看到的, 其中包括"lib/usersicl. h"(此h文件以及“lib/user“中的所有其他h文 件仅供用户程序使用)。每个系统调用的系统调用编号在"libsicall-nr. h" 中定义:

非抢占式高优先级调度算法

/* 非抢占式高优先级调度算法(优先数越大级别越高) 算法思想:在按进程达到时间由小到大的顺序输入进程信息后,先对其优先数进行排列,将最先到达的进程的到达时间设为开始时间,计算结束时间, 然后对后面到达的时间与该进程的结束时间进行比较,如若小于该进程的结束时间,记录进程的个数,再对其优先数逐个进行比较,将优 先数最大的提到前面,每次进程结束都要进行比较,得到执行序列,在依次输出结果 */ #include<> #define MAX 100 struct hrfs { char name[10]; float arrvitetime; float starttime; float servietime; float finishtime; int priority;riority; j=1; while((jp[i].priority){ max_priority=p[j].priority; i=j; } j++; } k=i; p[k].starttime=p[k].arrvitetime;inishtime=p[k].starttime+p[k].servietime; p[k].run_flag=1; temp_time=p[k].finishtime; p[k].order=1; temp_count=1; while(temp_countmax_priority){ max_priority=p[j].priority; k=j; } } p[k].starttime=temp_time; p[k].finishtime=p[k].starttime+p[k].servietime;

相关文档
最新文档