文档库 最新最全的文档下载
当前位置:文档库 › THREADX操作系统各模块详解第一部分

THREADX操作系统各模块详解第一部分

THREADX操作系统各模块详解第一部分
THREADX操作系统各模块详解第一部分

THREADX深入学习

简介

最近在做THREADX移植项目,所以在开始学习THREADX操作系统。想把自己学到的东西总结一下。学习操作系统时,按照领导的意思把操作系统进行模块划分。通过查找资料将操作系统划分为任务调度模块、任务管理模块、任务间同步和通信模块、内存管理模块、中断管理模块、时钟管理模块。下面将分别对各个模块进行分析和研究。我将深入介绍各个模块的工作原理,通过此文档能对操作系统的工作原理有深入的了解。首先得我的分析是针对MIPS、ARM、251内核进行分析。

我移植的平台是16位的251平台。个人认为移植一个操作系统,首先对操作系统的内核调度原理必须十分清楚,然后对你的移植平台架构、指令集也要十分清楚,比如说下面几个方面:

1、子程序调用时PC值是怎么被保存得(MPIS,将子程序的返回值存放在了RA寄存器中,251是PC自动入栈(ECALL指令)退出时使用ERET等指令,ARM是在LR寄存器中要计算相应减去的数值)。

2、中断发生时(251PC自动入栈但顺序和子程序调用压入顺序不一样,中断返回使用RETI指令。MIPS,PC是被存入了EPC寄存器中,使用eret指令。ARM,LR中数值的计算,赋值给PC即可)

2.任务调度

操作系统的核心模块就是内核调度。首先要弄清楚其调度原理。带着下面几个问题去思考。

1、任务入口函数第一次是怎么被执行的。

2、任务是怎么被切换的。

3、任务是怎么被抢占的。

以上几个问题是任务调度的核心。带着这几个问题去看内核源码发现任务调

度使用的方法就是任务栈和系统栈,内核利用入栈和出栈完成对任务的调度和切换。而任务被调度起来是依靠timer驱动来工作。基于此分析可以得出内核调度重点是以下几个方面:

1、明白任务栈的构建方式,即任务创建时初始化任务堆栈时保存的数

据。这些数据要根据具体的硬件平台去实现,这个栈的初始化就是解决上面的第一个问题的。因为在内核调度时,任务第一次被执行是出此栈来执行对应的入口函数的。对于栈我们要明白任务栈和系统栈的区别,要针对不同的硬件平台而做不同的设计。任务栈有两种类型,一种叫做中断类型栈,是在产生中断保存任务上下文到任务栈空间的数据,其出栈方式是要利用中断返回时的出栈方式;另外一种栈叫做用任务栈是任务在执行过程中自挂起时需要把CPU控制权重新交给调度器的时候需要把当前的任务上下文进行保护,在任务出此栈的时候要用子程序返回的方式去出栈。系统栈主要系统内核自己需要使用的栈。移植过程中我们可能要不断的切换SP在这两个栈之间。也可能只用系统的SP,不切换只是来回的复制两个栈空间的内容(如51系列)。

这里移植的时候可能会出现以下几个问题:

a、TIMER中断产生后,任务调度任务第一次执行出栈时,是按照子程

序返回的方式去出栈。这样中断将永远不会被返回。这样就有问题了,这个在任务切换的时候经常遇到就是任务入口函数第一次被执行的时候。解决的办法是初始化任务栈的时候初始化成中断类型的栈。

b、要明白硬件平台的压栈方式。发生中断时的压栈方式和子程序调用

时的压栈方式是不同的。像MIPS这样产生中断和子程序调用时都有相应的寄存器保存相应的值,这样的平台实现起来比较简单。而251平台确没有,251不管是中断还是子程序调用都是把PC值压入栈中,而且压入得顺序也不一样。(251中产生中断和子程序调用时PC值入栈的顺序是不一样的,PC分三次入栈,见具体的芯片手册)

c、任务的出栈方式。任务出栈是在任务调度后恢复优先级最高的任务

时执行的,先判断任务栈类型然后采用相应的出栈方式。251平台任务栈和中断栈保护的数据一样,但出栈的方式也就是子程序返回的方式是RETI和ERET。子程序调用可以采用RETI而中断产生时不能采用ERET否则会中断

一直无法返回。

d、入栈的方式:对于mips把相应的寄存器数据压入到任务栈就OK了。而251平台是系统自动压栈,出栈的时候要出对应的PC值才OK。因此在产生中断时先进行入栈操作,然后调用子程序。由于是在子程序中把栈数据拷贝到任务栈中,因此要把SP减去相应的值,要看子程序调用压入了几个数据。ECALL是减3。切记不要在任务栈中存入额外的数据。否则出栈就出错了。

2、TIMER产生中断执行timer中断处理函数,timer中断会对当前任务的时间片进行计时,时间到期后会调用任务切换函数,切换下一个更高优先级的任务。任务切换函数只是把当前任务切换到同一个优先级列表的最后,并没有去执行下一个任务。这个工作交给了任务上下文恢复函数,此函数会比较当前正在执行的任务和下一个要执行的任务控制块指针。如果两个控制块指针的值不一样就要去回到调度接口去重新调度了。正好上面的2问题。

3、任务在执行过程中释放信号量、中断等操作时使一个更高优先级任务就绪时就会发生抢占。此时当前任务上下文会被保存同时高优先级任务的控制块指针会赋值给更高下一个要被执行的控制块指针。如果是中断产生的下面的操作如同2中的一样。如果是任务间同步等操作导致则会调用转交CPU控制权到调度接口去重新调度。这样更高优先级的任务就被执行了。这个就是上面的3问题。

4、任务调度流程图。力求详细而明了。

图1是任务调度流程图。

图1.任务调度流程图2.1 任务调度接口

图2.是THREADX操作系统函数总体框架示意图。

图2.THREADX操作系统函数总体框架示意图

2.1.1调度器接口

1、_tx_thread_schedule (调度器)

调度器接口主要负责从就绪列表中获取优先级最高的任务去执行。

2.1.2 TIMER中断接口

2、_tx_timer_interrupt (timer中断处理函数)

2.1.3 任务切换接口

1、_tx_thread_time_slice (任务切换函数)

2.1.4 定时器任务入口函数

2、_tx_timer_thread_entry (定时器任务入口函数)

3.任务管理

任务管理主要有任务创建、任务挂起、任务恢复、睡眠、等接口组成。

一、注意问题:

1、就绪列表的组成以及获取下一个可以执行的最高优先级任务的方式。THREADX支持的优先级为32个,任务个数为任意,视具体资源而定。具有一32个元素的就绪链表,是按照任务优先级进行排序存放的。还有一个最低位映射表thread_lowest_bit。

3.1 任务初始化

任务初始化主要是对任务的一些全局变量做初始化。主要包括以下变量和数组:_tx_thread_current_ptr:当前正在运行的任务。

_tx_thread_execute_ptr:下一个要执行的任务。

_tx_thread_priority_map:记录任务优先级的位置,每一位对应一位优先级。

_tx_thread_highest_priority:就绪任务中最高的优先级值。

_tx_thread_lowest_bit:优先级最低位映射表。

_tx_thread_priority_list:就绪链表优先级链表。

_tx_thread_created_ptr:创建的任务链表的头指针。

_tx_thread_created_count:创建任务的数量。

_tx_thread_preempt_disable:禁止抢占标志。

具体含义详细解释见附录A。

3.1 任务创建

注意点:

1、初始化任务的定时器超时入口函数。这个入口函数很有作用,在定时器到时时会调用这个接口。所有的任务延时到时间时最终由定时器处理任务来调用。

2、如果禁止抢占,则在调用tx_tcr.s 时判断如果禁止抢占,则直接从中断中退出,不会再发生抢占。

3.2 任务超时处理函数

在任务采用延时挂起时,定时器如果到期则调用该处理函数。该处理函数的入口参数就是任务自己的控制块。任务cleanup函数为任务挂起时相应导致任务挂起的模块,如信号量、消息队列等。

3.3 任务挂起

注意问题:

1、任务正在挂起标志设置为TRUE代表任务正在挂起,任务还在就绪链表中,当被设置为FALSE的时候,已经从就绪链表中删除了此任务,在从链表中删除任务时,操作时是关闭中断的,所以是不可能是被抢占的。

2、因为任务要被挂起,所以获取下一个能被执行的任务,就是从就绪链表中获取下一个优先级最高的任务去执行。判断和被挂起的任务同一个优先级就绪链表中是否还有其它任务。如果这个链表中有其它任务存在并且挂起任务为链表的头,从就绪链表中删除此任务并直接把这个链表的头指针指向挂起任务的下一个任务,判断下个要执行的任务是否为挂起任务,如果是则获取下一个就绪链表中优先级最高的任务;如果不是链表的头就直接从链表中删除此任务就好了。如果同一个优先级的就绪链表中就只有一个任务,要做两个方面的工作:

a、把此优先级的就绪链表的头指针指向为空。

b、获取下一个要执行的任务。

c、清楚挂起任务在优先级位映射标志的对应位。

d、获取优先级位映射标志。

e、获取挂起任务所在的优先级组和优先级组中对应的数据,即这个优先级组对应的8位数据。获取优先级组对应的位数据的方法为优先级位映射表向右移动组号乘以8位,

priority_group = (UINT) (priority_map >> TX_THREAD_GROUP_1);。

如果系统只创建了一个任务,则挂起任务后,系统就会进入调度接口的死循环。

f、获取任务就绪链表中最高优先级。

g、判断下一个要执行的任务是否为挂起任务,如果不是则执行i。

如果是则先利用最高优先级值获取下一个要执行的任务,然后再判断是否有阈值

抢占的情况发生。

h、如果没有则执行i,如果有,利用_tx_thread_preempted_map值获取阈值抢占的最高优先级任务,平判断该任务的阈值和最高优先级值得大小。如果优先级大于等于阈值则设置下一个要执行的任务为阈值抢占发生时的任务。具体解释看_tx_thread_preempted_map变量解析。

i、判断是否有抢占发生。有重新调度,没有则退出。

3、_tx_thread_priority_map此标志是用来记录优先级对位的位的。如果就绪链表中同一个优先级还有其它任务,则此优先级对应位不用清除,如果链表中只有挂起任务自己就得清除此位。

3.4 任务恢复

注意问题:

1、任务恢复接口主要是把挂起任务恢复到就绪状态。

2、一般是在发生任务抢占的时候会调用此接口。

3、用于调用任务恢复接口。

4、调用该接口前都会把禁止抢占标志加1操作,也就是禁止抢占。但是在该接口里面会设置完成是否发生抢占标志后进行减1操作,恢复抢占。

3.5 任务睡眠

睡眠只能在任务中调用。必须有时间片的支持。在定时器到时的时候会调用睡眠

任务的超时处理函数,超时处理函数会判断是什么导致任务挂起计时,如果是睡眠就直接恢复任务。

3.6 创建任务栈

就是根据要保存的硬件资源主要是一些在被中断打断时必须要保存的寄存器在建立一个足够大小的任务栈空间。

操作系统作业题及答案

《操作系统》课程作业 (2013年春) 姓名: 学号: 专业: 年级: 学校: 日期:

作业一:作业管理 1、有三道程序A、B、C在一个系统中运行,该系统有输入、输出设备各1台。三道程序 A、B、C构成如下: A:输入32秒,计算8秒,输出5秒 B:输入21秒,计算14秒,输出35秒 C:输入12秒,计算32秒,输出15秒 问:(1)三道程序顺序执行的总时间是多少? (2)充分发挥各设备的效能,并行执行上述三道程序,最短需多少时间(不计系统开销)?并给出相应的示意图。 2、假设一个单CPU系统,以单道方式处理一个作业流,作业流中有2道作业,共占用CPU 计算时间、输入卡片数和打印输出行数如下: 其中,卡片输入机速度为1000张/分钟,打印机输出速度为1000行/分钟,试计算:(1)不采用spooling技术,计算这两道作业的总运行时间(从第1道作业输入开始到最后一个作业输出完毕)。 (2)如采用spooling技术,计算这2道作业的总运行时间(不计读/写盘时间),并给出相应的示意图。

作业二:进程管理 1、 请写出两程序S1和S2可并发执行的Bernstein 条件。 2、 有以下5条语句,请画出这5条语句的前趋图。 S1:y=x+1 R(x) W(y) S2:c=f-w R(f,w) W(c) S3:d=r-y R(r,y) W(d) S4:x=a+b R(a,b) W(x) S5:r=c+y R(c,y) W(r) 3、 设在教材第62页3.6.4节中所描述的生产者消费者问题中,其缓冲部分为m 个长度相等 的有界缓冲区组成,且每次传输数据长度等于有界缓冲区长度以及生产者和消费者可对缓冲区同时操作。重新描述发送过程deposit(data)和接收过程remove(data)。 P P P i P .. .. 1 2 i k .. 4、 设有k 个进程共享一临界区,对于下述情况,请说明信号量的初值、含义,并用P ,V 操作写出有关互斥算法。 (1) 一次只允许一个进程进入临界区; (2) 一次允许m (m

(售后服务)操作系统编程进程或作业先来先服务高优先权按时间片轮转调度算法

(售后服务)操作系统编程进程或作业先来先服务高优先权按时间片轮转调度 算法

湖南农业大学科学技术师范学院 学生实验报告

(高优先权流程图) (按时间片轮转调度) 程序说明及实现: 1)先来先服务调度算法: 高响应比优先实现进程调度.(用C语言实现), 2)优先级调度程序: 该程序由主程序、构造队列子程序、打印子程序、运行子程序构成。 3)时间片轮转法程序: 于此程序中由于程序比较小,未进行分模块设计。直接采用单壹模块。 1先来先服务 #include floatt,d;/*定义俩个全局变量*/ struct/*定义壹个结构体数组,包括进程的信息*/ { intid; floatArriveTime; floatRequestTime; floatStartTime; floatEndTime; floatRunTime; floatDQRunTime; intStatus; }arrayT ask[4];/*定义初始化的结构体数组*/ GetTask()/*给结构体数组赋值,输入到达,服务时间*/ {inti; floata; for(i=0;i<4;i++) {arrayT ask[i].id=i+1; printf("inputthenumber"); printf("inputthetheArriveTimeofarrayT ask[%d]:",i);/*用户输入进程的时间,初始为零*/ scanf("%f",&a); arrayT ask[i].ArriveTime=a; printf("inputtheRequestTimeofarrayT ask[%d]:",i); scanf("%f",&a); arrayT ask[i].RequestTime=a; arrayT ask[i].StartTime=0; arrayT ask[i].EndTime=0; arrayT ask[i].RunTime=0;

操作系统第一章作业讲解

第一章 习题 1、有3个作业A 、B 、C , A 是计算作业、 B 是检索磁带上数据的作业, C 是打印作业。3个作业单道运行时间分别为5分钟、15分钟和10分钟。假设可在15分钟内并行完成这3个作业。则各资源的利用率分别为多少? 单道CPU 利用率:5 /(5+15+10)= 5 / 30 = 1 / 6 磁带利用率:15 /(5+15+10)= 15 / 30 = 1 / 2 打印利用率:10 /(5+15+10)= 10 / 30 = 1 / 3 多道CPU 利用率:5 / 15 = 1 / 3 磁带利用率:15 / 15 = 1 打印利用率:10 / 15 = 2 / 3 2、在有一台CPU 和两台输入/输出设备磁盘和磁带的多道程序系统中,同时投入运行2个程序A 和B 。这2个程序对CPU 和磁盘和磁带的使用顺序和使用时间为: 程序A :磁带(30S )、CPU (10S )、磁盘(30S )、CPU (10S )、磁带(20S ) 程序B :磁盘(20S )、CPU (30S )、磁带(40S ) 假定:CPU 、磁盘和磁带都能并行工作,试问:在单道和多道两种方式下, 1)程序A 和B 从投入运行到运行完成所用的时间分别是多少? 2)CPU 、磁盘和磁带的利用率是多少? 答:在单道情况下,从投入到运行完成所用的时间A 为:100S ;B 为100S+90S=190S 在两道情况下,从投入到运行完成所用的时间A 为:120S ;B 为90S (非抢占式) 在两道情况下,从投入到运行完成所用的时间A 为:100S ;B 为120S (抢占式) 单道运行的时间关系图 计算 磁带 多道、非抢占式运行的时间关系图

操作系统教程第5版课后解析

操作系统教程第5版课后答案 费祥林、骆斌编著 第一章操作系统概论 习题一 一、思考题 1.简述现代计算机系统的组成及层次结构。 答:现代计算机系统由硬件和软件两个部分组成。是硬件和软件相互交织形成的集合体,构成一个解决计算问题的工具。硬件层提供基本可计算的资源,包括处理器、寄存器、内存、外存及I/O设备。软件层由包括系统软件、支撑软件和应用软件。其中系统软件是最靠近硬件的。 2、计算机系统的资源可分成哪几类?试举例说明。 答:包括两大类,硬件资源和信息资源。硬件资源分为处理器、I/O设备、存储器等;信息资源分为程序和数据等。 3.什么是操作系统?操作系统在计算机系统中的主要作用是什么? 答:操作系统是一组控制和管理计算机硬件和软件资源,合理地对各类作业进行调度,以及方便用户使用的程序的集合。 操作系统在计算机系统中主要起4个方面的作用。 (1)服务用户观点——操作系统提供用户接口和公共服务程序 (2)进程交互观点——操作系统是进程执行的控制者和协调者 (3)系统实现观点——操作系统作为扩展机或虚拟机 (4)资源管理观点——操作系统作为资源的管理者和控制者 4.操作系统如何实现计算与操作过程的自动化? 答:大致可以把操作系统分为以下几类:批处理操作系统、分时操作系统、实时操作系统、网络操作系统和分布式操作系统。其中批处理操作系统能按照用户预先规定好的步骤控制作业的执行,实现计算机操作的自动化。又可分为批处理单道系统和批处理多道系统。单道系统每次只有一个作业装入计算机系统的主存储器运行,多个作业可自动、顺序地被装入运行。批处理多道系统则允许多个作业同时装入主存储器,中央处理器轮流地执行各个作业,各个作业可以同时使用各自所需的外围设备,这样可以充分利用计算机系统的资源,缩短作业时间,提高系统的吞吐率 5.操作系统要为用户提供哪些基本的和共性的服务? 答:(1)创建程序和执行程序;(2)数据I/O和信息存取;(3)通信服务;(4)差错检测和处理。为了保证高效率、高质量的工作,使得多个应用程序能够有效的共享系统资源,提高系统效率,操作系统还具备一些其他的功能:资源分配,统计,保护等。 6.试述操作系统所提供的各种用户接口。 答:操作系统通过程序接口和操作接口将其服务和功能提供给用户。程序接口由一组系统调用组成,在应用程序中使用“系统调用”可获得操作系统的低层服务,访问或使用系统管理的各种软硬件资源,是操作系统对外提供服务和功能的手段;操作接口由一组命令和(或)作业控制语言组成,是操作系统为用户提

操作系统例题讲解

操作系统例题讲解 一、调度算法 对如下表所示的5个进程: 采用可剥夺的静态最高优先数算法进行调度(不考虑系统开销)。 问 题: ⑴ 画出对上述5个进程调度结果的Gantt 图; ⑵ 计算5个进程的平均周转时间、平均带权周转时间。 解: ⑴ 调度结果的Gantt 图如下: 0 2 4 5 7 9 10 12 14 (2) 时间计算: 二、存储管理 某系统采用虚拟页式存储管理方式,页面大小为2KB ,每个进程分配的页框数固定为4页。采用局部置换策略,置换算法采用改进的时钟算法,当有页面新装入内存时,页表的时钟指针指向新装入页面的下一个在内存的表项。设当前进程P 的页表如下(“时钟”指针指向逻辑页面3的表项): 逻辑页号 0 1 2 3 4 5 问 题: ⑴ 当进程P 依次对逻辑地址执行下述操作: ① 引用 4C7H ; ② 修改 19B4H ; ③ 修改 0C9AH ; 写出进程P 的页表内容; ⑵ 在 ⑴ 的基础上,当P 对逻辑地址27A8H 进行访问, 该逻辑地址对应的物理地址是多少?

解:页面大小为2KB,2KB=2×210=211, 即逻辑地址和物理地址的地址编码的低11位为页内偏移; ⑴①逻辑地址4C7H=0100 1100 0111B,高于11位为0,所以该地址访问逻辑页面0; 引用4C7H,页表表项0:r=1; ②逻辑地址19B4H=0001 1001 1011 0100B,高于11位为3,所以该地址访问逻辑页面3; 修改19B4H,页表表项3:r=1, m=1; ③逻辑地址0C9AH=0000 1100 1001 1010B,高于11位为1,所以该地址访问逻辑页面1; 逻辑页1不在内存,发生缺页中断; ①、②两操作后,P的页表如下: 逻辑页号 1 2 3 4 5 按改进的时钟算法,且时钟指针指向表项3,应淘汰0页面, 即把P的逻辑页面1读到内存页框101H,页表时钟指针指向表项2。 并执行操作:修改0C9AH。 经上述3个操作后,P的页表如下: 逻辑页号 1 2 3 4 5 ⑵逻辑地址27A8H=0010 0111 1010 1000B,高于11位为4,所以该地址访问逻辑页面4; 页面4不在内存,发生缺页中断;按改进的时钟算法,淘汰页面2,页面4读到110H页框, 所以,逻辑地址27A8H对应的物理地址为: 0001 0001 0000 111 1010 1000B=887A8H。 三、设备与I/O管理 设系统磁盘只有一个移动磁头,磁道由外向内编号为:0、1、2、……、199;磁头移动一个磁道所需时间为1毫秒;每个磁道有32 个扇区;磁盘转速R=7500r/min. 系统对磁盘设备的I/O请求采用N-Step Look (即N-Step Scan,但不必移动到磁道尽头),N=5。设当前磁头在60号磁道,向内移动;每个I/O请求访问磁道上的1个扇区。现系统依次接收到对磁道的I/O请求序列如下: 50, 20, 60, 30, 75, 30, 10, 65, 20, 80,15, 70 问题: ⑴写出对上述I/O请求序列的调度序列,并计算磁头引臂的移动量; ⑵计算:总寻道时间(启动时间忽略)、总旋转延迟时间、总传输时间和总访问处理时间。 解:⑴考虑序列中有重复磁道的I/O请求,调度序列为: 60→75→50→30→20→15→10→65→70→80 磁头移动量=(75-60)+(75-50)+(50-30)+(30-20)+ (20-15)+(15-10)+(65-10)+(70-65)+(80-70) =15+25+20+10+5+5+55+5+10=155(磁道)

操作系统第三章作业讲解

第三章 作业讲解 1、有5个作业进入就绪队列等待运行,预计它们的运行时间分别为9、6、3、5与X ,它们以什么样的调度顺序运行时会取得最小的响应时间?(答案与X 值有关) 答:短作业优先调度算法是使响应时间最小的调度算法: 0 < X ≤ 3时,调度顺序为: X 、3、5、6、9 3 < X ≤ 5时,调度顺序为: 3、X 、5、6、9 5 < X ≤ 6时,调度顺序为: 3、5、X 、6、9 6 < X ≤ 9时,调度顺序为: 3、5、6、X 、9 X > 9时,调度顺序为: 3、5、6、9、X 2、假设一个系统中有4个进程,它们的到达时间和服务时间如表所示,忽略I/O 以及其他开销时间,若分别按先来先服务(FCFS )、非抢占及抢占的短进程优先(SPF )、高响应比优先(HRRN )、时间片轮转(RR ,时间片=1)、多级反馈队列调度算法(FB ,第i 级队列的时间片=2i-1)进行CPU 调度,请给出各进程的完成时间、周转时间、带权周转时间、平均周转时间和平均带权周转时间。 算法 时间 进程 平均时间 A B C D FCFS 完成时间 周转时间 带权周转时间 5 5 1 7 6 3 16 13 1.44 23 1 7 2.43 10.25 1.97 SPF (非抢占) 完成时间 周转时间 带权周转时间 5 5 1 7 6 3 23 20 2.22 14 8 1.14 9.75 1.835 SPF (抢占) 完成时间 周转时间 带权周转时间 7 7 1.4 3 2 1 23 20 2.22 14 8 1.14 9.25 1.435 HRRN 完成时间 周转时间 带权周转时间 5 5 1 7 6 3 16 13 1.44 23 17 2.43 10.25 1.97 RR (q=1) 完成时间 周转时间 带权周转时间 12 12 2.4 4 3 1.5 23 20 2.22 22 16 2.29 12.75 2.1 FB (q=2i-1) 完成时间 周转时间 带权周转时间 13 13 2.6 6 5 2.5 23 20 2.22 21 15 2.14 13.25 2.365 3、若有4个周期性任务,任务A 要求每30ms 执行一次,执行时间为15ms ;任务B 要求每50ms 执行一次,执行时间为5ms ;任务C 要求每50ms 执行一次,执行时间为15ms ;任务D 要求每100ms 执行一次,执行时间为10ms ,应如何按最低松弛度优先算法对它们进行CPU 调试? (要求画出0-150ms 时段的调度时序图,并列出每次切换时每个任务的松弛度) 进程 到达时间 服务时间 A 0 5 B 1 2 C 3 9 D 6 7

Windows操作系统正常系统服务services参数详解

Windows操作系统正常系统服务services参数详解操作系统启动项命令参数详解有很多朋友感觉自己的电脑运行速度比较慢,那就让我们来了解一下电脑的启动组的构成,首先在运行中输入(services.msc)回车,会看到本地服务的框线,tab一次就是列表: 01.显示名称:alerter◎进程名称:svchost.exe-kLocalService◎微软描述:通知所选用户和计算机有关系统管理级警报。如果服务停止,使用管理警报的程序将不会受到它们。如果此服务被禁用,任何直接依赖它的服务都将不能启动。◎补充描述:警报器。该服务进程名为Services.exe,一般家用计算机根本不需要传送或接收计算机系统管理来的警示(Administrativealerts),除非你的计算机用在局域网络上。◎默认:禁用建议:禁用 02.显示名称:ApplicationLayerGatewayService◎进程名称:alg.exe◎微软描述:为Internet连接共享和Windows防火墙提供第三方协议插件的支持。◎补充描述:XPSP2自带的防火墙,如果不用可以关掉。◎默认:手动(已启动)建议:禁用 03.显示名称:ApplicationManagement◎进程名称:svchost.exe-knetsvcs◎微软描述:提供软件安装服务,诸如分派,发行以及删除。◎补充描述:应用程序管理。从Windows2000开始引入的一种基于msi文件格式的全新有效软件管理方案:程序管理组件服务。该服务不仅可以管理软件的安装、删除,还可以使用此服务修改、修复现有应用程序,监视文件复原并通过复原排除基本故障等,软件安装变更的服务。◎默认:手动建议:手动 04.显示名称:AutomaticUpdates◎进程名称:svchost.exe-knets vcs◎微软描述:允许下载并安装Windows更新。如果此服务被禁用,计算机将不能使用WindowsUpdate网站的自动更新功能。◎补充描述:自动更新,手动就行,需要的时候打开,没必要随时开着。不过2005年4月12日以后微软将对没有安装SP2的WindowsXP操作系统强制安装系统补丁SP2。◎默认:自动建议:手动 06.显示名称:ClipBook◎进程名称:clipsrv.exe◎微软描述:启用“剪贴簿查看器”储存信息并与远程计算机共享。如果此服务终止,“剪贴簿查看器”将无法与远程计算机共享信息。如果此服务被禁用,任何依赖它的服务将无法启动。◎补充描述:剪贴簿。把剪贴簿内的信息和其它台计算机分享,一般家用计算机根本用不到。◎默认:禁用建议:禁用 07.显示名称:COM+EventSystem◎进程名称:svchost.exe-knetsvcs◎微软描述:支持系统事件通知服务(SENS),此服务为订阅组件对象模型(COM)组件事件提供自动分布功能。如果停止此服务,SENS将关闭,而且不能提供登录和注销通知。如果禁用此服务,显式依赖此服务的其他服务将无法启动。◎补充描述:COM+事件系统。有些程序可能用到COM+组件,如自己的系统优化工具BootVis。检查系统盘的目录“C:\ProgramFiles\ComPlusApplications”,没东西可以把这个服务关闭。◎默认:手动(已启动)建议:手动 08.显示名称:COM+SystemApplication◎进程名称:dllhost.exe/Processid:{02D4B3F1-FD88-11D1-960D-00805FC79235}◎微软描述:管理基于

操作系统_第四章作业讲解

1、“整体对换从逻辑上也扩充了内存,因此也实现了虚拟存储器的功能”这种说法是否正确?请说明理由 答:上述说明法是错误的。整体对换将内存中暂时不用的某个程序及其数据换出至外存,腾出足够的内存空间以装入在外存中的、具备运行条件的进程所对应的程序和数据。虚拟存储器是指仅把作业的一部分装入内存便可运行作业的存储器系统,是指具有请求调入功能和置换功能,能从逻辑上对内存容量进行扩充的一种存储器系统,它的实现必须建立在离散分配的基础上。虽然整体对换和虚拟存储器均能从逻辑上扩充内存空间,但整体对换不具备离散性。实际上,在具有整体对换功能的系统中,进程的大小仍受到实际内存容量的限制。 2、某系统采用页式存储管理策略,拥有逻辑空间32页,每页为2KB,拥有物理空间1MB。 1)写出逻辑地址的格式 2)若不考虑访问权限等,进程的页表有多少项?每项至少有多少位? 3)如果物理空间减少一半,页表结构应相应作怎样的改变? 答:1)该系统拥有逻辑空间32页,故逻辑地址中页号必须用5位来描述,而每页为2KB,因此,页内地址必须用11位来描述。这样,可得到它的逻辑地址格式如下: 2)每个进程最多有32个页面,因此,进程的页表项最多为32项;若不考虑访问权限等,则页表项中只需给出页所对应的物理块号。1MB的物理空间可分成29个内存块,故每个页表项至少有9位。 3)如果物理空间减少一半,则页表中项表项数仍不变,但每项的长度可减少1位。 3、已知某系统页面长4KB,每个页表项为4B,采用多层分页策略映射64位的用户地址空 间。若限定最高层页表只占1页,则它可采用几层分页策略 答:方法一:由题意可知,该系统的用户地址空间为264B,而页的大小为4KB,故作业最多可有264/212(即252)个页,其页表的大小则为252*4(即254)B。因此,又可将页表分成242个页表页,并为它建立两级页表,两级页表的大小为244B。依次类推,可知道它的3、4、5、6级页表的长度分别是234B、224B、214B、24B,故必须采取6层分页策略。 方法二:页面大小为4KB=212B,页表项4B=22B,因此一个页面可以存放212/22=210个面表项,因此分层数=INT[64/10]=6层 4、对于表所示的段表,请将逻辑地址(0,137)、(1,4000)、(2,3600)、(5,230)转换 成物理地址。 答:[0,137]:50KB+137=51337;

操作系统实验-先来先服务、短作业优先算法

实验报告 【实验名称】实验一进程调度【实验目的】 巩固和加深处理机调度的概念。 【实验内容】 设计调度算法,模拟实现处理机的调度。 1.设计先来先服务调度算法 数据结构和符号说明: typedef struct PCB { char name[10]; //进程名 char state; //进程状态 int arrivetime; //到达时间 int starttime; //开始时间 int finishtime; //完成时间 int servicetime;//服务时间 float turnaroundtime;//周转时间 float weightedturnaroundtime;//带权周转时间 struct PCB *next; //指向下个进程的指针 }pcb; int time;//全局变量,计时器 int n;//全局变量,进程个数 pcb *head = NULL,*p,*q;//进程链表指针 流程图:

开始 输入进程名、到达时间、服务时间存入链表 进程是否全部处理完毕? 当前进程状态是否为F ?N 处理进程,计算完成时间,周转时间等,并更新当前时间Y 处理下一进程 N 结束Y 程序源代码 /* 操作系统实验一 先来先服务调度算法 */ #include #include typedef struct PCB//进程控制 { char name[10];//进程名 char state;//进程状态 int arrivetime;//到达时间 int starttime;//开始时间 int finishtime;//结束时间 int servicetime;//服务时间 float turnaroundtime;//周转时间 float weightedturnaroundtime;//带权周转时间 struct PCB *next;//指向下个进程 }pcb; int time;//当前时间 int n;//进程个数 pcb *head = NULL,*p,*q; //处理未完成的进程 void run_fcfs(pcb *p1) { time = p1->arrivetime > time ? p1->arrivetime : time; //如果进程到达时间大于当前时间,则当前时间=到达时间 p1->starttime = time;//当前时间即为进程开始时间

操作系统第三章作业讲解

操作系统第三章作业讲解

第三章作业讲解 1、有5个作业进入就绪队列等待运行,预计它们的运行时间分别为9、6、3、5与X,它们以什么样的调度顺序运行时会取得最小的响应时间?(答案与X值有关)答:短作业优先调度算法是使响应时间最小的调度算法: 0 < X ≤ 3时,调度顺序为: X、3、5、6、9 3 < X ≤ 5时,调度顺序为: 3、X、5、6、9 5 < X ≤ 6时,调度顺序为: 3、5、X、6、9 6 < X ≤ 9时,调度顺序为: 3、5、6、X、9 X > 9时,调度顺序为:3、5、6、9、X 2、假设一个系统中有4个进程,它们的到达时间和服务时间如表所示,忽略I/O以及其他开销时间,若分别按先来先服务(FCFS)、非抢占及抢占的短进程优先(SPF)、高响应比优先(HRRN)、时间片轮转(RR,时间片=1)、多级反馈队列调度算法(FB,第i级队列的时间片=2i-1)进行CPU调度,请给出各进程的完成时间、周转时间、带权周转时间、平均周转时间和平均带权周转时间。 进程到达 时间 服务 时间 A 0 5 B 1 2 C 3 9 D 6 7

算法时间 进程平均时间A B C D FCFS 完成时 间 周转时 间 带权周 转时间 5 5 1 7 6 3 1 6 1 3 1. 4 4 2 3 1 7 2. 4 3 10.25 1.97 SPF(非抢占)完成时 间 周转时 间 带权周 转时间 5 5 1 7 6 3 2 3 2 2. 2 2 1 4 8 1. 1 4 9.75 1.835 SPF(抢占)完成时 间 周转时 间 带权周 转时间 7 7 1. 4 3 2 1 2 3 2 2. 2 2 1 4 8 1. 1 4 9.25 1.435

操作系统课后练习答案解析

1. 什么是操作系统?它的主要功能是什么? 答:操作系统是用来管理计算机系统的软、硬件资源,合理地组织计算机的工作流程,以方便用户使用的程序集合; 其主要功能有进程管理、存储器管理、设备管理和文件管理功能。 2. 什么是分时系统?什么是实时系统?试从交互性、及时性、独立性、多路性和可靠性几个方面比较分时系统和实时系统。 答:分时系统:一个计算机和许多终端设备连接,每个用户可以通过终端向计算机发出指令,请求完成某项工作,在这样的系统中,用户感觉不到其他用户的存在,好像独占计算机一样。 实时系统:对外部输入的信息,实时系统能够在规定的时间内处理完毕并作出反应。 比较:(1)交互性:实时系统具有交互性,但人与系统的交互,仅限于访问系统中某些特定的专用服务程序。它不像分时系统那样向终端用户提供数据处理、资源共享等服务。实时系统的交互性要求系统具有连续人机对话的能力,也就是说,在交互的过程中要对用户得输入有一定的记忆和进一步的推断的能力。 (2)及时性:实时系统对及时性的要求与分时系统类似,都以人们能够接受的等待时间来确定。而分时系统则对及时性要求更高。 (3)独立性:实时系统与分时系统一样具有独立性。每个终端用户提出请求时,是彼此独立的工作、互不干扰。 (4)多路性:实时系统与分时一样具有多路性。操作系统按分时原则为多个终端用户提供服务,而对于实时系统,其多路性主要表现在经常对多路的现场信息进行采集以及对多个对象或多个执行机构进行控制。 (5)可靠性:分时系统虽然也要求可靠性,但相比之下,实时系统则要求系统高度可靠。 9.设内存中有三道程序,A ,B ,C ,他们按A →B →C 的先后次序执行,它们进行“计算”和“I/O 操作”的时间如表1-2所示,假设三道程序使用相同的I/O 设备。 表1-2 三道程序的操作时间 (1) 试画出单道运行时三道程序的时间关系图,并计算完成三道程序要花多少时间。 I/O 操作 计算 90 60 50 14020160170190 200 A A B B B C C C 总时间=20+30+10+30+50+20+10+20+10=200 (2) 试画出多道运行时三道程序的时间关系图,并计算完成三道程序要花多长时间。

操作系统实验-先来先服务FCFS和短作业优先SJF进程调度算法

操作系统实验报告 实验一 先来先服务FCFS和短作业优先SJF进程调度算法 学号: 班级: 姓名:

【实验题目】:先来先服务FCFS和短作业优先SJF进程调度算法 【实验目的】 通过这次实验,加深对进程概念的理解,进一步掌握进程状态的转变、进程调度的策略及对系统性能的评价方法。 【实验内容】 问题描述: 设计程序模拟进程的先来先服务FCFS和短作业优先SJF调度过程。假设有n个进程分别在T1, …,T n时刻到达系统,它们需要的服务时间分别为S1, …,S n。分别采用先来先服务FCFS和短作业优先SJF进程调度算法进行调度,计算每个进程的完成时间,周转时间和带权周转时间,并且统计n个进程的平均周转时间和平均带权周转时间。 程序要求如下: 1)进程个数n;每个进程的到达时间T1, … ,T n和服务时间S1, … ,S n;选择算法1-FCFS,2-SJF。 2)要求采用先来先服务FCFS和短作业优先SJF分别调度进程运行,计算每个进程的周转时间,带权周转时间,并且计算所有进程的平均周转时间,带权平均周转时间; 3)输出:要求模拟整个调度过程,输出每个时刻的进程运行状态,如“时刻3:进程B开始运行”等等; 4)输出:要求输出计算出来的每个进程的周转时间,带权周转时间,所有

进程的平均周转时间,带权平均周转时间。 实现提示: 用C++语言实现提示: 1)程序中进程调度时间变量描述如下: static int MaxNum=100; int ArrivalTime[MaxNum]; int ServiceTime[MaxNum]; int FinishTime[MaxNum]; int WholeTime[MaxNum]; double WeightWholeTime[MaxNum]; double AverageWT_FCFS,AverageWT_SJF; double AverageWWT_FCFS,AverageWWT_SJF; 2)进程调度的实现过程如下: 变量初始化; 接收用户输入n,T1, … ,T n,S1, … ,S n;算法选择1-FCFS,2-SJF; 按照选择算法进行进程调度,计算进程的完成时间、周转时间和带权周转时间; 计算所有进程的平均周转时间和平均带权周转时间; 按格式输出调度结果。 实验要求: 1)上机前认真复习FCFS和SJF进程调度调度算法,熟悉进程调度的执行过

操作系统 计算题

四、计算题 1.有以下三个作业,分别采用先来先服务和短作业优先作业调度算法。试问它们的平均周转时间各是什么?是否还可以给出一种更好的调度算法,使其平均周转时间优于这两种调度算法? 解:(1)采用先来先服务作业调度算法时的实施过程如下。 这时,作业的调度顺序是1→2→3。其平均周转时间为:(8 + 11.6 + 12)/ 3 = 10.53 (2)采用短作业优先作业调度算法时的实施过程如下。

这里要注意,在作业1运行完毕进行作业调度时,作业2和3都已经到达。由于是实行短作业优先作业调度算法,因此先调度作业3运行,最后调度作业2运行。所以,这时的作业调度顺序是1→3→2。其平均周转时间为:(8 + 8 + 12.6)/ 3 = 9.53 (3)还可以有更好的作业调度算法,使其平均周转时间优于这两种调度算法。例如,如果知道在作业1后面会来两个短作业,那么作业1到达后,先不投入运行。而是等所有作业到齐后,再按照短作业优先作业调度算法进行调度,具体实施过程如下。 这时的作业调度顺序是3→2→1。其平均周转时间为:(1 + 5.6 + 14)/ 3 = 6.87 2.有一组作业,它们的到达时间和所需CPU时间如下所示,分别采用先来先服务和短作业优先作业调度算法,给出它们的调度顺序、作业周转时间以及平均周转时间。 解:(1)采用先来先服务作业调度算法时的实施过程如下:

这时,作业的调度顺序是1→2→3→4,其平均周转时间为:(70 + 60 + 60 + 45)/ 4 = 58.75 (2)采用短作业优先作业调度算法时的实施过程如下: 这时,作业的调度顺序是1→4→3→2,其平均周转时间为:(70 + 5 + 35 + 75)/ 4 = 46.25 三、简答题 1.对临界区的管理应遵循哪些基本准则? 答:为了合理利用临界资源,保证进程互斥地进入临界区,对临界区的管理应遵循以下准则: (1)空闲让进。当无进程处于临界区时,表明临界资源处于空闲状态,应允许一个请求进入临界区的进程立即进入自己的临界区,以有效地利用临界资源。 (2)忙则等待。当已有进程进入临界区时,表明临界资源正在被访问,因而其他试图进入临界区的进程必须等待,以保证对临界资源的互斥访问。 (3)有限等待。对要求访问临界资源的进程,应保证在有限时间内能进入自己的临界区,以免陷入“死等”状态。

操作系统习题讲解

操作系统习题讲解 一、单项选择题 1、关于操作系统的叙述,是不正确 ...的。 A、管理资源的程序 B、能使系统资源提高效率的程序 C、管理用户程序执行的程序 D、能方便用户编程的程序 2、不是分时系统的基本特征。 A、及时性 B、实时性 C、交互性 D、独立性 3、如果允许不同用户的文件可以具有相同的文件名,通常采用来保证按名存取的安全性。 A、建立索引表 B、多级目录结构 C、重名翻译机构 D、建立指针 4、设计批处理多道系统时,首先要考虑的是。 A、交互性和响应时间 B、系统效率和吞吐量 C、灵活性和可适应性 D、实时性和可靠性 5、对于辅助存储器,的说法是正确的。 A、可被中央处理器直接访问 B、能永久地保存信息,是文件的主要存储介质 C、是CPU与主存之间的缓冲存储器 D、不是一种永久性的存储设备 6、中文Windows系统本身不提供的输入法。 A、全拼 B、双拼 C、微软 D、五笔字型 7、Windows XP不支持文件系统。 A、FAT32 B、NTFS C、ext2 D、FAT 按硬件结构来划分操作系统,可分为。 A、单用户操作系统、多用户操作系统 B、批处理操作系统、分时操作系统和实时操作系统 C、分时操作系统、分布式操作系统和多媒体操作系统 D、网络操作系统、分布式操作系统和多媒体操作系统 9、清理磁盘不能 ..对进行整理。 A、硬盘 B、软盘 C、光盘 D、以上三种 10、菜单命令后的“…”表示。 A、暂时不能用的菜单 B、选择该项后会出现子菜单 C、选择该项后会出现一个对话框 D、该项已经被选中 11、应用程序窗口不包含部分。 A、标题栏 B、选项卡 C、工具栏 D、最小化、最大化/恢复按钮、关闭按钮 12、对话框与其它窗口相比有什么区别。 A、没有菜单栏 B、对话框可以移动,不能改变窗口的大小。 C、没有工具栏 D、对话框不可以移动,不能改变窗口的大小。 13、下面有关计算机操作系统的叙述中,______是不正确 ...的。 A、UNIX、Windows 2000属于操作系统 B、操作系统只管理内存,而不管理外存 C、操作系统属于系统软件 D、计算机的内存、I/O设备等硬件资源也由操作系统管理。

操作系统课程设计磁盘调度先来先服务算法完整版

操作系统课程设计磁盘 调度先来先服务算法 HUA system office room 【HUA16H-TTMS2A-HUAS8Q8-HUAH1688】

《操作系统原理》 课程设计报告书 题目:磁盘调度先来先服务算法 学号: 学生姓名: 专业:计算机科学与技术 指导教师: 2014年5月29 目录 1.1功能实现思想 (1) 1.2功能详述 (1) 2系统设计 (1) 2.1系统总体设计 (1) 2.1.1数据结构描述 (1) 2.1.2函数功能分析 (1)

2.1.2程序函数调用关系 (2) 2.2系统详细设计 (2) 2.2.1设计任务 (2) 2.2.2设计要求 (2) 2.2.3算法思想 (2) 2.2.4FCFS算法流程图 (3) 3系统实现 (3) 4系统测试与分析 (4) 4.1系统运行结果 (4) 4.2系统运行结果分析 (4) 5总结 (5) 参考文献 (5) 附:源程序代码 (6) 教师评分表 (9)

1功能描述 根据进程请求访问磁盘的先后次序进行调度,从而计算出磁头移动的总距离和平均寻道长度。 1.1功能实现思想 这是一种比较简单的磁盘调度算法。它根据进程请求访问磁盘的先后次序进行调度。此算法的优点是公平、简单,且每个进程的请求都能依次得到处理,不会出现某一进程的请求长期得不到满足的情况。此算法由于未对寻道进行优化,在对磁盘的访问请求比较多的情况下,此算法将降低设备服务的吞吐量,致使平均寻道时间可能较长,但各进程得到服务的响应时间的变化幅度较小。 1.2功能详述 根据进程请求访问磁盘的先后次序进行调度,首先根据提示输入总的磁道数、提出磁盘I/O申请的进程数、开始磁道号和磁道序列。通过程序调用函数输出磁盘请求序列和磁盘扫描序列,从而计算出磁头移动的总距离和平均寻道长度。 2系统设计 2.1系统总体设计 2.1.1数据结构描述 voidFCFS(intcidao[],intm)输入磁道号,按先来先服务的策略输出磁盘请求序列和磁盘扫描序列,求移动的总距离和平均寻道长度,输出移动的总磁道数和平均寻道长度。

操作系统重点概念知识讲解

1.CPU的两种运行模式:内核态(又称核心态、系统态、管态)和用户态(又称目态)。 2.指令是控制计算机执行某种操作的命令。 3.特权指令:是一类具有特殊权限的指令,只用于操作系统或其他系统软件,普通用户不 能直接使用 4.非特权指令:也称为用户指令或普通指令,是普通用户能够直接使用的指令。这是指令 集中除特权指令外的所有指令。 5.操作系统的用户观点和系统观点:用户观点:为用户提供使用计算机系统的接口和各种 资源管理服务(从系统外部看)系统观点:管理和分配计算机系统硬件及软件资源。因此,操作系统是计算机资源的管理者(从系统内部看 6.操作系统:是控制和管理计算机系统内各种硬件和软件资源、有效地组织多道程序运行 的系统软件(或程序集合),是用户与计算机之间的接口。 功能:处理机管理、存储器管理、设备管理、文件管理、用户接口 7.多道程序设计的基本思想:在内存中同时存放多道程序,在管理程序的控制下交替 地执行。这些作业共享CPU和系统中的其他资源。 8.多道批处理系统优缺点:优点:系统资源利用率高;系统吞吐量大。缺点:用户作业等待 时间长;无交互性,用户一旦提交作业就失去了对其运行的控制能力 9.多道:系统在内存中存放多个作业,并且在外存上还保存大量的后备作业。 10.成批:系统按批次调度作业,而在系统运行过程中不允许用户和机器之间发生交互作用。 11.分时:对时间的共享。在分时系统中,分时主要是指若干并发程序对CPU时间的共享 12.Linux系统特点:与UNIX兼容;自由软件,源码公开;性能高,安全性强;便于定 制和再开发;互操作性高;全面的多任务和真正的32位操作系统 13.进程概念:程序在并发环境中的执行过程 进程最根本的属性:是动态性和并发性 进程的特征:动态性并发性独立性异步性 批处理系统的特征:脱机多道成批处理 分时系统的特征:多路性独立性及时性交互性 14.进程间的相互关系主要分为如下三种形式:1.互斥——竞争同一资源而发生相互制约2. 同步——协同完成一项任务 3. 通信——交换信息,合作完成一项工作 15.进程和程序的区别和联系:(1)进程是动态概念,程序是静态概念(2)进程有并发性, 程序没有(3)一个程序对应多个进程(4)进程有三个基本状态 进程的三种状态及其转换 16.进程控制块的作用:每个进程有唯一的进程控制块;操作系统根据PCB对进程实施控 制和管理;进程的动态、并发等特征是利用PCB表现出来的;PCB是进程存在的唯一标识 17.临界资源:一次仅允许一个进程访问的资源 18.临界区:简称CS区进程中访问临界资源的那段程序代码 19.原语是为完成某些特定的功能而编制的一段系统程序。原语操作也称做“原子操作”,即 一个操作中的所有动作要么全做,要么全不做。执行原语操作时,要屏蔽中断,以保证

计算机操作系统作业及答案

作业2 1.若1页大小为4KB,计算机地址总线为32位,则页号共有多少位?逻辑地址空间最多 包含多少页?逻辑地址60000在第几页?页内偏移是多少?若该页被装进物理块1280中,则物理地址是多少? 0110 0000)2 其中低 12 二进制位为页内偏移,即(A60)16=2656。高 4 二进制位为页号,即(E)16=14。物理块号 1280=(500)16 物理地址=(500A60)16=5245536. 2.假定当前磁头位于100号磁道,进程对磁道的请求序列依次为57,61,39,20,88, 161,139,38,175。当采用先来先服务和最短寻道时间优先算法时,总的移动的磁道数分别是多少?(请给出寻道次序和每步移动磁道数) 解:先来先服务最短寻道时间优先 43 +4+ 22+ 19+ 68+ 73+ 22+ 101 + 137 = 489 12 + 27 + 4 +18 + 1+ 18 + 119 + 22 + 14 = 235 。 3.设系统中有三种类型的资源(A,B,C)和五个进程(P1,P2,P3,P4,P5),A资源的 数量17,B资源的数量为5,C资源的数量为20。在T0时刻系统状态如下表所示。系统采用银行家算法来避免死锁。请回答下列问题: (1)T0时刻是否为安全状态?若是,请给出安全序列。 (2)若进程P4请求资源(2,0,1),能否实现资源分配?为什么?

(3)在(2)的基础上,若进程P1请求资源(0,2,0),能否实现资源分配?为什么? T0时刻系统状态 答:当前的系统状态描述为: (1) 在T0时刻,由于V(2,3,3)大于等于(C-A)中P5所在行的向量(1,1,0),因此V 能满足P5的运行,在P5运行后,系统的状态为: 同样的,在P5运行后,V’(5,4,7)也大于等于C-A中P4所在的行(2,2,1),则能满足P4的运行。P4运行后,系统的状态为: 按照上述同样的方法,P4运行后,P3,P2,P1也能按顺序运行。(备注:考试时需要都写出来)。 因此,在T0时刻,存在安全序列:P5、P4、P3、P2、P1。 T0时刻是安全的。

操作系统 先来先服务FCFS进程调度算法

《操作系统》课程上机实验项目3 先来先服务FCFS进程调度算法 一、实验项目名称 先来先服务FCFS进程调度算法 二、实验目的 1、掌握各种进程调度算法的基本思想 2、掌握进程调度算法的性能评价方法 三、预习内容 阅读教材第2章2.9节处理机调度 四、实验内容 设计程序模拟进程的先来先服务FCFS调度过程。假设有n个进程分别在T1, … ,Tn 时刻到达系统,它们需要的服务时间分别为S1, … ,Sn。采用先来先服务FCFS进程调度算法进行调度,计算每个进程的完成时间,周转时间和带权周转时间,并且统计n个进程的平均周转时间和平均带权周转时间。 程序要求如下: 1)进程个数n;每个进程的到达时间T1, … ,Tn和服务时间S1, … ,Sn; 2)要求采用先来先服务FCFS进程调度算法运行,计算每个进程的周转时间,带权周转时间,并且计算所有进程的平均周转时间,带权平均周转时间; 3)输出:要求模拟整个调度过程,输出每个时刻的进程运行状态,如“时刻3:进程B 开始运行”等等; 4)输出:要求输出计算出来的每个进程的周转时间,带权周转时间,所有进程的平均周转时间,带权平均周转时间。 实现提示: 用C语言实现提示: 1)进程用结构体实现 #define Number 5 struct statedd //声明结构体 { float arrive_time,service_time; //到达时间,服务时间 float finish_time,whole_time,weight_wholetime; //完成时间,周转时间,带权周转时间float run_time; //开始执行时间 }; statedd process[Number]; //声明结构体变量,这里为数组 2)进程调度的实现过程如下: 变量初始化; 接收用户输入:a1, … ,an,s1, … ,sn; //到达时间和服务时间 进行进程调度,计算进程的完成时间、周转时间和带权周转时间; 计算所有进程的平均周转时间和平均带权周转时间;

相关文档
相关文档 最新文档