《操作系统》实验题目
- 格式:doc
- 大小:125.50 KB
- 文档页数:13
实验一批处理系统的作业调度一、实验目的1.加深对作业概念的理解。
2.深入了解批处理系统如何组织作业、管理作业和调度作业。
二、实验预备知识1.作业的概念。
2.作业的创建。
3.作业的调度。
三、实验内容编写程序完成批处理系统中的作业调度,要求采用响应比高者优先的作业调度算法。
实验具体包括:首先确定作业控制块的内容,作业控制块的组成方式;然后完成作业调度;最后编写主函数对所做工作进行测试。
四、提示与讲解操作系统根据允许并行工作的道数和一定的算法从系统中选取若干作业把它们装入主存储器,使它们有机会获得处理器运行,这项工作被称为“作业调度”。
实现这部分功能的程序就是“作业调度程序”。
作业调度的实现主要有两个问题,一个是如何将系统中的作业组织起来;另一个是如何进行作业调度。
为了将系统中的作业组织起来,需要为每个进入系统的作业建立档案以记录和作业相关的信息,例如作业名、作业所需资源、作业执行时间、作业进入系统的时间、作业信息存储器中的位置、指向下一个作业控制块的指针等信息。
这个记录作业相关信息的数据块称为作业控制块(JCB),并将系统中等待作业调度的作业控制块组织成一个队列,这个队列称为后备队列。
一个作业全部信息进入系统后,就为其建立作业控制块,并挂入后备队列。
当进行作业调度时,从后备队列中查找选择作业。
由于实验中没有实际作业,作业控制块中的信息内容只使用了实验中需要的数据。
作业控制块中首先应该包括作业名;其次是作业所需资源,根据需要,实验中只包括需要主存的大小(采用可移动的动态分区方式管理主存,作业大小就是需要主存的大小)、需要打印机的数量和需要磁带机的数量;采用响应比作业调度算法,为了计算响应比,还需要有作业的估计执行时间、作业在系统中的等待时间;另外,指向下一个作业控制块的指针必不可少。
实验中,作业控制块及队列的数据结构定义如下:typedef struct jcb {char name[4]; //作业名int length; //作业长度,所需主存大小int printer; //作业执行所需打印机的数量int tape; //作业所需磁带机的数量int runtime; //作业估计执行时间int waittime; 作业在系统中的等待时间int next; //指向下一个作业控制块的指针}JCB //作业控制块类型定义存放作业控制块的区域:define n 10 //假定系统中可容纳的作业数量为nJCB jobtable[10]; //作业表int jobcount ; //系统内现有作业数量将作业控制块组织成一个队列,实验中采用静态链表的方式模拟作业的后备队列,如下图所示。
1、在操作系统中,进程与线程的主要区别是什么?A. 进程是资源分配的基本单位,线程是处理器调度的基本单位B. 进程和线程都是资源分配和处理器调度的基本单位C. 线程是资源分配的基本单位,进程是处理器调度的基本单位D. 进程和线程都不涉及资源分配问题(答案:A)2、以下哪种调度算法可能会导致饥饿问题?A. 先来先服务(FCFS)B. 短作业优先(SJF)C. 时间片轮转(Round Robin)D. 优先级调度(非抢占式)(答案:B)3、在操作系统的存储管理中,分段存储管理方式的主要目的是?A. 提高内存利用率B. 实现内存保护C. 方便用户编程D. 提高程序运行速度(答案:C)4、关于死锁,以下哪个说法是正确的?A. 死锁是指多个进程因竞争资源而无限期等待的现象B. 死锁只可能发生在多道批处理系统中C. 死锁发生时,系统中一定存在多个进程同时处于就绪状态D. 预防死锁的方法之一是破坏“请求和保持”条件,即要求进程一次性申请所有所需资源(答案:A,注:同时D也是预防死锁的一种方法,但题目要求选择正确说法,A更直接描述了死锁的定义)5、在操作系统的文件系统中,目录结构的主要作用是?A. 实现文件的按名存取B. 提高文件存储的效率C. 增强文件系统的安全性D. 便于用户对文件进行备份(答案:A)6、下列哪一项不是虚拟内存技术的优点?A. 扩大内存容量B. 提高内存利用率C. 简化内存管理D. 加快程序运行速度(在某些情况下可能因换页开销而减慢)(答案:D)7、在操作系统的设备管理中,缓冲区的设置主要是为了?A. 提高设备利用率B. 缓和CPU与I/O设备之间速度不匹配的矛盾C. 实现设备的即插即用D. 减少I/O操作的次数(答案:B)8、关于操作系统的中断机制,以下哪个说法是错误的?A. 中断是由硬件或软件发出的,用于请求CPU处理的事件B. 中断处理过程中,CPU会暂停当前程序的执行,转而执行中断处理程序C. 中断向量表是存储中断处理程序入口地址的表D. 在所有情况下,中断处理程序的执行优先级都高于当前正在运行的程序(答案:D,注:中断处理程序的优先级通常较高,但并非在所有情况下都绝对高于所有正在运行的程序,特别是在某些实时系统中可能有更复杂的优先级策略)。
实验1 进程调度算法的模拟(6学时)1.用语言来实现对n个进程采用不同调度算法的进程调度。
2.每个用来标识进程的进程控制块PCB用结构来描述,包括以下字段:(1)进程优先数ID,其中0为闲逛进程,用户进程的标识数为1,2,3…。
(2)进程优先级Priority,闲逛进程(idle)的优先级为0,用户进程的优先级大于0,且随机产生,优先数越大,优先级越高。
(3)进程占用的CPU时间CPUtime,进程每运行一次,累计值等于4。
(4)进程总共需要运行时间Alltime,利用随机函数产生。
(5)进程状态,0:就绪态;1:运行态;2:阻塞态。
(6)队列指针next,用来将多个进程控制块PCB链接为队列。
3.优先数改变的原则(1)进程在就绪队列中每呆一个时间片,优先数增加1。
(2)进程每运行一个时间片,优先数减3。
4.在调度前,系统中拥有的进程数PCB_number由键盘输入,经初始化后,所有的进程控制块PCB链接成就绪队列。
实验2 系统动态分配资源的模拟(6学时)编程序模拟银行家算法,要求能体现算法的全过程实验3 内存分配算法模拟(6学时)设计一个虚拟存储区和内存工作区,编程序演示下述算法的具体实现过程,并计算访问命中率:1、先进先出的算法(FIFO)2、最近最少使用算法(LRU)3、最佳淘汰算法(OPT)4、最不经常使用算法(LFU)实验4 磁盘调度算法模拟(4学时)编程序实现下述磁盘调度算法,并求出每种算法的平均寻道长度:1、先来先服务算法(FCFS)2、最短寻道时间优先算法(SSTF)3、扫描算法(SCAN)4、循环扫描算法(CSCAN)附:实验报告文档格式1.设计目的2.算法及数据结构2.1算法的总体思想(流程)2.2 XXX模块2.2.1 功能2.2.2 数据结构2.2.3 算法2.3 YYY模块3.3.1功能3.3.2 数据结构3.3.3算法3.调试问题及解决过程4.实验结果及分析4.1 实验结果4.2 结果分析。
操作系统实验报告实验二时间片轮转进程调度算法学号:班级:姓名:【实验题目】: 时间片轮转进程调度算法【实验目的】通过这次实验, 加深对进程概念的理解, 进一步掌握进程状态的转变、进程调度的策略与对系统性能的评价方法。
【实验内容】问题描述:设计程序模拟进程的时间片轮转RR 调度过程。
假设有n 个进程分别在T1, … ,Tn 时刻到达系统, 它们需要的服务时间分别为S1, … ,Sn 。
分别利用不同的时间片大小q, 采用时间片轮转RR 进程调度算法进行调度, 计算每个进程的完成时间, 周转时间和带权周转时间, 并且统计n 个进程的平均周转时间和平均带权周转时间。
程序要求如下:1)进程个数n ;每个进程的到达时间T 1, … ,T n 和服务时间S 1, … ,S n ;输入时间片大小q 。
2)要求时间片轮转法RR 调度进程运行, 计算每个进程的周转时间, 带权周转时间, 并且计算所有进程的平均周转时间, 带权平均周转时间;3)输出: 要求模拟整个调度过程, 输出每个时刻的进程运行状态, 如“时刻3: 进程B开始运行”等等;4)输出:要求输出计算出来的每个进程的周转时间, 带权周转时间, 所有进程的平均周转时间, 带权平均周转时间。
实现提示:用C++语言实现提示:1)程序中进程调度时间变量描述如下:int ArrivalTime[100];int ServiceTime[100];int PServiceTime[100];int FinishTime[100];int WholeTime[100];double WeightWholeTime[100];double AverageWT,AverageWWT;bool Finished[100];➢2)进程调度的实现过程如下:➢变量初始化;➢接收用户输入n, T1, … ,Tn, S1, … ,Sn;时间片大小q;➢按照时间片轮转RR算法进行进程调度, 计算进程的完成时间、周转时间和带权周转时间;➢计算所有进程的平均周转时间和平均带权周转时间;➢按格式输出调度结果。
操作系统原理与实践试题及解析第一部分:选择题1. 操作系统的作用是:A. 管理计算机硬件和软件资源B. 提供用户接口C. 控制程序运行D. 执行输入输出操作答案:A2. 操作系统中负责调度进程的是:A. 进程管理器B. 文件管理器C. 内存管理器D. 网络管理器答案:A3. 以下哪个不是操作系统的核心功能:A. 处理器管理B. 文件管理C. 网络管理D. 内存管理答案:C4. 操作系统调度算法中,最短作业优先算法适用于:A. 短作业B. 长作业C. 实时作业D. 批处理作业答案:A5. 在分页系统中,页面置换算法中最优算法的缺点是: A:实现复杂B:无法实时进行C:产生大量的页面失效D:存在局部性原理答案:C第二部分:简答题1. 解释进程和线程的区别。
答:进程是资源分配的最小单位,拥有独立的内存空间和上下文,而线程是CPU调度的最小单位,存在于进程内部,共享相同的内存空间和上下文。
2. 什么是死锁?如何避免死锁的发生?答:死锁是指多个进程或线程因相互请求对方占用的资源而陷入无限等待的状态。
避免死锁的方法包括破坏死锁产生的四个必要条件:互斥条件、请求与保持条件、不剥夺条件和环路等待条件。
3. 请简要解释分页系统和分段系统的原理。
答:分页系统将物理内存和逻辑内存划分为固定大小的页和页面框,通过页表实现页的映射和置换;分段系统根据程序的逻辑结构将程序的地址空间划分为若干段,通过段表实现段的映射和保护。
4. 请简要解释页面置换算法中的FIFO算法和LRU算法。
答:FIFO算法是最简单的页面置换算法,选择最早进入内存的页面进行置换;LRU算法则选择最近最久未使用的页面进行置换。
第三部分:计算题1. 假设一个操作系统具有3个可执行程序,分别需要占用400KB、600KB和800KB的内存空间。
系统的物理内存有1.5MB。
若系统采用固定分区分配方式,分区大小为500KB、800KB和1MB。
请计算内存碎片大小。
实验一进程调度一、实验目的观察、体会Linux 系统的进程调度方法,并通过一个简单的进程调度模拟程序的实现,加深对进程调度算法,进程切换的理解。
二、实验内容采用动态优先数的方法,编写一进程调度程序模拟程序。
模拟程序只进行相应的调度模拟操作,不需要实际程序。
[提示]:(1) 假定系统有五个进程,每一个进程用一个进程控制块PCB来代表,进程控制块的格式为:进程名指针要求运行时间优先数状态其中,进程名——作为进程的标识,假设五个进程的进程名分别为P1,P2,P3,P4,P5。
指针——按优先数的大小把五个进程连成队列,用指针指出下一个进程的进程控制块的首地址,最后一个进程中的指针为“0”。
要求运行时间——假设进程需要运行的单位时间数。
优先数——赋予进程的优先数,调度时总是选取优先数大的进程先执行。
状态——可假设有两种状态,“就绪”状态和“结束”状态。
五个进程的初始状态都为“就绪”,用“R”表示,当一个进程运行结束后,它的状态为“结束”,用“E”表示。
(2) 在每次运行你所设计的处理器调度程序之前,为每个进程任意确定它的“优先数”和“要求运行时间”。
(3) 为了调度方便,把五个进程按给定的优先数从大到小连成队列。
用一单元指出队首进程,用指针指出队列的连接情况。
(4) 处理器调度总是选队首进程运行。
采用动态改变优先数的办法,进程每运行一次优先数就减“1”。
由于本实习是模拟处理器调度,所以,对被选中的进程并不实际的启动运行,而是执行:优先数-1要求运行时间-1来模拟进程的一次运行。
提醒注意的是:在实际的系统中,当一个进程被选中运行时,必须恢复进程的现场,让它占有处理器运行,直到出现等待事件或运行结束。
在这里省去了这些工作。
(5) 进程运行一次后,若要求运行时间?0,则再将它加入队列(按优先数大小插入,且置队首标志);若要求运行时间=0,则把它的状态修改成“结束”(E),且退出队列。
(6) 若“就绪”状态的进程队列不为空,则重复上面(4)和(5)的步骤,直到所有进程都成为“结束”状态。
操作系统实验上机准备:➢熟悉Cygwin环境➢编译源程序使用gcc 源程序名–o 目标文件名(缺省为a.out)。
➢学习Linux(Unix)的常用命令。
➢学习vi 编辑器的使用。
➢C语言语法1 进程管理1.1 实验目的加深对于进程并发执行概念的理解。
实践并发进程的创建和控制方法。
观察和体验进程的动态特性。
进一步理解进程生命期期间创建、变换、撤销状态变换的过程。
掌握进程控制的方法,了解父子进程间的控制和协作关系。
练习Linux系统中进程创建与控制有关的系统调用的编程和调试技术。
1.2 实验说明1)与进程创建、执行有关的系统调用说明进程可以通过系统调用fork()创建子进程并和其子进程并发执行.子进程初始的执行映像是父进程的一个复本.子进程可以通过exec()系统调用族装入一个新的执行程序。
父进程可以使用wait()或waitpid()系统调用等待子进程的结束并负责收集和清理子进程的退出状态。
fork()系统调用语法:#include <unistd.h>pid_t fork(void);fork成功创建子进程后将返回子进程的进程号,不成功会返回-1. exec 系统调用有一组6个函数,其中示例实验中引用了execve 系统调用语法:#include <unistd.h>int execve(const char *path, const char *argv[], const char * envp[]); path 要装入的新的执行文件的绝对路径名字符串.argv[] 要传递给新执行程序的完整的命令参数列表(可以为空).envp[] 要传递给新执行程序的完整的环境变量参数列表(可以为空). Exec 执行成功后将用一个新的程序代替原进程,但进程号不变,它绝不会再返回到调用进程了。
如果exec 调用失败,它会返回-1。
getpid()---获取进程的pid● 每个进程都执行自己独立的程序,打印自己的pid ,每个父进程打印其子进程的pid;● 每个进程都执行自己独立的程序,打印自己的pid ,父进程打印其子进程的pid;● 编写一个命令处理程序,能处理max(m,n), min(m,n)和 average(m,n,l)这几个命令。
操作系统实验笔试1.设周期性任务P1, P2, P3的周期T1, T2, T3分别为100, 150, 350; 执行时间分别为20,40,100. 试计算后回答是否可以用频率单调调度算法进行调度?答:频率单调调度算法是一种被广泛用于多周期性实时处理的调度算法。
频率单调调度算法的基本原理是频率越低(周期越长)的任务的优先级越低。
这时,设任务周期为T,任务的执行时间为C,则使用频率单调调度算法的必要条件是C<=T。
已经证明,对于n(n≥1)个周期的不同任务来说,设每个周期为Ti,其相应任务的执行时间为Ci,则使用频率单调调度算法的充分条件是:.对于由3个周期组成的实时任务序列来说,其执行时间与周期之比应是:.由于:所以, 可以用频率单调调度算法进行调度.2.假定某多道程序设计系统供用户使用的主存空间100K, 磁带机2台, 打印机1台, 采用可变分区方式管理主存, 采用静态分配方式分配磁带机与打印机. 忽略用户作业I/O时间. 现有如下作业序列:作业号进入输入井时间要求计算时间主存需求量磁带机需求打印机需求1 8:00 25分钟15K 1台1台2 8:20 10分钟30K 0台1台3 8:20 20分钟60K 1台0台4 8:30 20分钟20K 1台0台5 8:35 15分钟10K 1台1台作业调度策略先来先服务, 优先分配主存的低地址区域且不准移动已在主存的作业, 在主存中的各作业平分CPU时间, 问题如下:(1) 作业调度选中各作业的次序是什么? (2) 全部作业运行结束的时刻是什么? (3) 如果把一个作业从进入输入井到运行结束的时间定义为周转时间, 在忽略系统开销时间条件下, 最大的作业周转时间是多少? (4) 平均周转时间是多少?答:作业号装入主存时间开始执行时间执行结束时间周转时间1 8:00 8:00 8:25 25分钟2 8:45 9:05 9:15 55分钟3 8:20 8:25 8:45 25分钟4 8:30 8:45 9:05 35分钟5 9:15 9:15 9:30 55分钟(1) 1, 3, 4, 2, 5(2) 9:30(3) 55分钟(4) (25+55+25+35+55)/5=39(分钟)3. 设有n个缓冲区构成的循环缓冲区池, 每个缓冲区能容纳一个整数. 写进程Writer把整数逐个存入缓冲区池, 读进程Reader则逐个从缓冲区池中读出并打印输出, 要求打印的与输入的完全一样, 即个数,次序,数值一样. 试问:(1) 写进程与读进程间具体的制约关系如何? (2) 用PV操作写出这两个进程的同步算法程序.答:(1)写进程要领先于读进程, 但当缓冲区全填满时, 要等读进程取数; 读进程要后于写进程, 当缓冲去中无待读的整数时, 要等待写进程写数.(2)程序:beginB: array[0…n-1] of integerW, R: integer;SW, SR: Semaphore;W := 0; R := 0;SW := n; SR := 0;cobeginPROCESS WriterbeginL1: produce a integer into X; (或写生成一整数X;)P( SW );B[W] := X;W := (W+1) mod nV( SR );goto L1;end;PROCESS ReaderbeginL2: P( SR )Y := B[R];R := (R+1) mod nV( SW );Print y;goto L2;end;coend;end;4.某系统对主存采用页式管理, 供用户使用的主存区域共640K字节, 被分成160块, 块号为0,1,2......159. 现有一作业的地址空间共占4页, 其页号为0,1,2,3, 被分配到主存的第2,4,1,5块中, 回答:(1) 作业每一页的长度为多少字节? (2) 写出该作业被装入主存时, 其对应的页表. (3) 把该作业的每一页在主存中的起始地址(用16进制表示)填在下表中页号起始地址0 0020001 0040002 0010003 005000答:(1)每一页的长度为640K/160 = 4K 字节(2)页表1235.作业的调度算法有几种? 简述各自的优缺点.答:1、先来先服务算法.先来先服务算法是最简单的调度算法,它是按照作业进入“输入井”的先后次序来挑选作业,先进入的作业优先被挑选。
综合实验题目
1. 处理机调度模拟(先来先服务(FCFS)、短进程优
先(SPF)、高优先权调度(FPF )、时间片轮转(RR)
2. 模拟动态分区主存空间的分配和回收
3. 模拟页式主存空间的分配和回收
4. 模拟磁盘空间的分配和回收
5. 模拟实现资源分配。
同时要求编写和调试一个系统
动态分配资源的简单模拟程序,观察死锁产生的条
件,并使用适当的算法,有效的防止和避免死锁的
发生。
具体用银行家算法实现资源分配。
6. 模拟spooling系统
7. 模拟电梯调度算法,实现对磁盘的驱动调度
8. 模拟文件系统
• 每人任选一题
操作系统综合实验报告格式
1 操作系统综合实验报告内容
(1) 基本信息:完成人姓名、学号、报告日期
(2) 实验内容
(3) 实验目的
(4) 实验题目
(5) 设计思路和流程图、算法
(6) 主要数据结构及其说明
(7) 源程序并附上注释
(8) 程序运行时的初值和运行结果
(9) 综合实验体会:实验中遇到的问题及解决过程、实验中产生的错
误及原因分析、实验的体会及收获。
综合实验报告以电子文档形式提交到ftp://192.168.40.14
截止日期:2010.1.15
2操作系统综合实验报告样本
封面
目录
标题
一、实习内容
二、实习目的
三、实习题目
四、源程序及注释
五、程序运行时初值和运行结果
六、实验体会。
题目1:Windows进程的创建与销毁内容及要求:①掌握Windows进程的创建和销毁API的调用方法;编程代码,在程序中创建和销毁一个Word进程;②能够挂起和激活被创建进程的主线程;③通过Windows进程管理器查看系统进程列表的变化。
实验指导:①创建进程的APIBOOL CreateProcess(LPCTSTR lpApplicationName,LPTSTR lpCommandLine,LPSECURITY_A TTRIBUTES lpProcessAttributes,LPSECURITY_A TTRIBUTES lpThreadAttributes,BOOL bInheritHandles,DWORD dwCreationFlags,LPVOID lpEnvironment,LPCTSTR lpCurrentDirectory,LPSTARTUPINFO lpStartupInfo,LPPROCESS_INFORMA TION lpProcessInformation);例程:void main( VOID ){STARTUPINFO si;PROCESS_INFORMATION pi;ZeroMemory( &si, sizeof(si) );si.cb = sizeof(si);ZeroMemory( &pi, sizeof(pi) );// Start the child process.if( !CreateProcess( NULL, // No module name (use command line)."MyChildProcess", // Command line.NULL, // Process handle not inheritable.NULL, // Thread handle not inheritable.FALSE, // Set handle inheritance to FALSE.0, // No creation flags.NULL, // Use parent's environment block.NULL, // Use parent's starting directory.&si, // Pointer to STARTUPINFO structure.&pi ) // Pointer to PROCESS_INFORMATION structure.) {ErrorExit( "CreateProcess failed." );}// Wait until child process exits.WaitForSingleObject( pi.hProcess, INFINITE );// Close process and thread handles.CloseHandle( pi.hProcess );CloseHandle( pi.hThread );}②销毁进程APIBOOL TerminateProcess(HANDLE hProcess,UINT uExitCode);③挂起进程的主线程APIDWORD SuspendThread(HANDLE hThread);④激活进程的主线程APIDWORD ResumeThread(HANDLE hThread);⑤进程查看器题目2:Windows进程间的通信内容及要求:①理解Windows进程间通信的原理,掌握Windows进程间通信的编程方法;②掌握Windows管道的编程API调用方法;③编写两个不同的程序,使用管道方式实现这两个程序运行时进程间的通信。