操作系统课程设计题目及任务

更新时间:2023-12-03 01:27:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

题目1:时间片轮转调度算法模拟

要求:用实验方法模拟单处理机系统的进程调度,并采用时间片轮转调度算法作为进程调度算法。 具体任务:

1、理解掌握进程调度实现所涉及到的主要问题:如何组织进程、如何实现处理机调度。

进程控制块的作用和结构,进程控制块的链表组织。

进程调度程序包含从进程就绪队列选择并摘取进程、给该进程分配处理机。 2、设计进程控制块相关数据结构,进程状态跃迁的相关模拟; 3、实现时间片进程调度算法模拟程序设计、编码及调试。

题目2:静态优先级调度算法模拟

要求:用实验方法模拟单处理机系统的进程调度,并采用静态优先级调度算法作为进程调度算法。 具体任务:

1、理解掌握进程调度实现所涉及到的主要问题:如何组织进程、如何实现处理机调度。

进程控制块的作用和结构,进程控制块的链表组织。

进程调度程序包含从进程就绪队列选择并摘取进程、给该进程分配处理机。 2、设计进程控制块相关数据结构,进程状态跃迁的相关模拟; 3、实现静态优先级调度算法模拟程序设计、编码及调试。

题目3:最短剩余时间优先(动态优先)调度算法模拟

要求:用实验方法模拟单处理机系统的进程调度,并采用最短剩余时间优先调度算法作为进程调度算法。 具体任务:

1、理解掌握进程调度实现所涉及到的主要问题:如何组织进程、如何实现处理机调度。

进程控制块的作用和结构,进程控制块的链表组织。

进程调度程序包含从进程就绪队列选择并摘取进程、给该进程分配处理机。 2、设计进程控制块相关数据结构,进程状态跃迁的相关模拟; 3、实现最短剩余时间优先调度算法模拟程序设计、编码及调试。

题目4 作业调度设计

1、目的

本实验的目的是通过模拟作业调度算法的设计加深对作业管理基本原理的理解。 2、内容

⑴在后备作业队列中,输入5个作业各自运行所需要的时间及存储空间。 ①按先来先服务的原则进行调度,输出作业调度的顺序及等待的时间。 ②按最短作业(即运行时间最短)优先的原则进行调度,输出作业调度的顺序及等待时间。

③按最小作业(即存储空间最小)优先的原则进行调度,输出作业调度的顺序及等待的时间。根据运行情况,比较各种算法。

⑵在后备作业队列中,先输入5个作业各自运行所需要的时间,然后每输入一个作业的运行时间,就按响应比高优先的原则进行调度,直到输入作业的运行时间为0时,依次输出响应比高的其它作业。 3、要求

⑴对输入的每个作业必须编号,输出时要有作业序号、运行时间、存储空间及等待时间(包括总的等待时间);

⑵报告中的运行情况要包括输入和输出情况; ⑶比较上面几种调度算法的优劣。 4、举例

建主程序、三个子程序(例如:先来先服务FCFS、最短作业优先LSFS、最短运行时间作业优先SRFS)、打印程序及原始数据。

五个作业运行时间,建文件DATA.DAT,其中包含num、runtime、storage、waittime和The waiting time。

题目5 存储管理页面置换算法模拟实现及比较

1、目的

通过请求页式管理中页面置换算法了解虚拟存储技术的特点,掌握请求页式存储管理的页面置换算法。 2、内容

⑴通过随机数产生一个指令序列,共320条指令。指令的地址按下述原则生成: ①一半的指令是顺序执行的;

②四分之一的指令是均匀分布在前地址部分; ③四分之一的指令是均匀分布在前地址部分。 具体的实施办法是:

①在[0,319]之间选一起点m;

②顺序执行一条指令,即m+1条; ③向前地址[0,m—1]中执行一条指令m'; ④顺序执行一条指令,即m'+1条; ⑤向后地址(m'+2,319]执行一条指令m'' ⑵将指令序列变换成为页地址流。 假设:

①页面大小为1KB;

②用户实寸容量为4页到32页; ③用户虚存容量为32KB。

用户虚存容量32KB,每1KB中放10条指令,共320条指令(0~319)。其中0~9为0页,10~19为1页?310~319为31页。

⑶使用不同的页面调度算法处理缺页中断,并计算不同实存容量下(4~32KB)的命中率。

①先进先出算法(FIFO); ②最近最少使用算法(LRU);

③最佳淘汰算法(OPT);先淘汰最不常用的页地址; ④最少访问页面算法(LFU)。 命中率的算法为:

命中率=缺页中断次数/页地址流长度 3、要求

⑴实验报告中要有程序的详细框图,特别是有关算法本身的框图; ⑵实验报告中要有程序清单及执行的结果; ⑶对不同算法的性能进行评价。

题目6 linux进程间同步与互斥

1、目的

调用linux系统调用实现多进程的创建、进程间同步与互斥。 2、内容 ⑴进程的创建

编制一段程序,使用系统调用fork( )创建两个子进程,这样在此程序运行时,在系统中就有一个父进程和两个自进程在活动。让每一个进程在屏幕上显示一个字符:父进程显示字符a,自进程分别显示字符 b和字符c。试观察、记录并分析屏幕上进程调度的情况。

如果在程序中使用系统调用nice( )来改变各进程的优先级,会出现什么现象? ⑵进程的控制

修改已编制的程序,将每个进程输出一个字符修改为每个进程输出一句话,再观察程序执行时屏幕上出现的现象。并分析出现问题的原因。进一步理解各个进程争夺临界资源的情况。

如果在程序中使用系统调用locking( )来给每一个进程加锁,可以实现进程之间的互斥,试观察并分析出现的现象。 ⑶进程的软中断通讯

编制一段程序,实现进程的软中断通讯:使用系统调用fork( )创建两个子进程;再使用系统调用。signal( )让父进程捕捉键盘上来的中断信号(即按Del键);在捕捉到中断信号后,父进程用系统调用kill( )向两个子进程发信号;子进程捕捉到信号后分别输出下列信息后终止: child process1 is killed by parent! child process2 is killed by parent!

父进程等待两个子进程都终止以后,输出如下信息后终止。 parent process in killed! 3、要求

⑴仔细观察设计中的各种现象及出现的问题。分析产生各种现象的原因。寻找解决问题的办法。

⑵报告应至少包括带注释的程序清单、输出的结果及对各种现象的分析意见。

题目7 linux进程间管道通信实现生产者-消费者问题

1、目的

调用linux系统调用实现多进程的创建、进程间利用管道进行通信。 2、内容

⑴进程的创建

编制一段程序,使用系统调用fork( )创建两个子进程,这样在此程序运行时,在系统中就有一个父进程和两个自进程在活动。让每一个进程在屏幕上显示一个字符:父进程显示字符a,自进程分别显示字符 b和字符c。试观察、记录并分析屏幕上进程调度的情况。

如果在程序中使用系统调用nice( )来改变各进程的优先级,会出现什么现象? (2)进程的管道通讯

编制一段程序,实现进程的管道通讯:使用系统调用pipe( )建立一条管道线;两个子进程分别循环向这条管道写一句话: child 1 is sending a message! child 2 is sending a message!

而父进程则循环从管道中读出信息,显示在屏幕上。

用管道进行通讯,实质上是一个多生产者单消费者的问题,必须考虑其中都有哪些同步和互斥,同时向管道输入端写的字节数必须和从输出端读的字节数一致,若不一致,则会出现什么问题。 3、要求

⑴仔细观察设计中的各种现象及出现的问题。分析产生各种现象的原因。寻找解决问题的办法。

⑵报告应至少包括带注释的程序清单、输出的结果及对各种现象的分析意见。

题目8 linux进程软中断实现进程间通信

1、目的

调用linux系统调用实现多进程的创建、进程间利用软中断进行通信。 2、内容 ⑴进程的创建

编制一段程序,使用系统调用fork( )创建两个子进程,这样在此程序运行时,在系统中就有一个父进程和两个自进程在活动。让每一个进程在屏幕上显示一个字符:父进程显示字符a,自进程分别显示字符 b和字符c。试观察、记录并分析屏幕上进程调度的情况。

如果在程序中使用系统调用nice( )来改变各进程的优先级,会出现什么现象? (2)进程的“软中断”通信

它可用于同一用户的进程之间通信。其方式是:一个进程通过系统调用kill(pid,sig) 向同一用户的其它进程pid发送一个软中断信号:另一进程通过系统调用signal(sig,func)捕捉到信号sig后,执行予先约定的动作func,从而实现这两个进程间的通信。

①发送信号kill(pid,sig),本进程将指定信号sig发送给指定进程pid,其中参数为pid进程号,pid与sig均为整数值。

②接收信号signal(sig,func),本进程接收到其它进程发送给它的信号后,完成指定的功能func。func一般是函数。

在程序中系统调用sleep(second)用于进程的同步与互斥,自变量是暂停秒数。其功能是使现行进程暂停执行由自变量规定的秒数。

类似的系统调用有pause(),它的功能是暂停执行本进程,等待kill发来的信号,收到信号后再继续执行。

在特殊情况下,常用到如下语句signal(SIGINT,SIG_IGN)。它表示遇到了中断信号SIGINT(按Del键)。本进程不做任何动作,即勿略该中断信号对本进程的影响。

(3) 编写一个程序,实现进程的“软中断”通信。使用系统调用fork()创建2个子进程,再使用系统调用signal()让父进程捕捉键盘上来的中断信号(即按Del键),在捕捉到中断信号后,父进程用系统调用kill()向2个子进程发信号,子进程捕捉到信号后分别输出下列信息后终止: Child process 1 is killed by parent ! Child process 3 is killed by parent !

父进程等待2个子进程都终止后,输出如下信息后终止: Parent process is killed ! 3、要求

⑴仔细观察设计中的各种现象及出现的问题。分析产生各种现象的原因。寻找解决问题的办法。

⑵报告应至少包括带注释的程序清单、输出的结果及对各种现象的分析意见。

题目9 linux进程锁实现进程间同步与互斥

1、目的

调用linux系统调用实现多进程的创建、进程间利用软中断进行通信。 2、内容 ⑴进程的创建

编制一段程序,使用系统调用fork( )创建两个子进程,这样在此程序运行时,在系统中就有一个父进程和两个自进程在活动。让每一个进程在屏幕上显示一个字符:父进程显示字符a,自进程分别显示字符 b和字符c。试观察、记录并分析屏幕上进程调度的情况。 (2)系统调用locking进程的控制

利用系统调用locking(fd,mode,size),对指定文件的指定区域(由size指示)进行加锁或解锁,以实现进程的同步与互斥。其中fd是文件描述字;mode是锁定方式,=1表示加锁,=0表示解锁,size是指定文件fd的指定区域,用0表示从当前位置到文件尾。 常用程序段

fd = open( “a.out”,2 ); i = fork(); if( i==0 )

{ locking(fd,1,0); ???

locking(fd,0,0); }

(3) 编写一个程序,创建一个文件,文件名为lock.dat,同时父进程创建2个子进程,通过系统调用locking(),分别让2个子进程对文件加锁,再输出有关信息,然后解锁。 3、要求

⑴仔细观察设计中的各种现象及出现的问题。分析产生各种现象的原因。寻找解决问题的办法。

⑵报告应至少包括带注释的程序清单、输出的结果及对各种现象的分析意见。

题目10 利用进程同步与互斥实现吃水果问题

1、目的

调用linux系统调用实现多进程的创建、进程间同步与互斥解决具体问题。 2、内容 ⑴进程的创建

编制一段程序,使用系统调用fork( )创建两个子进程,这样在此程序运行时,在系统中就有一个父进程和两个自进程在活动。让每一个进程在屏幕上显示一个字符:父进程显示字符a,自进程分别显示字符 b和字符c。试观察、记录并分析屏幕上进程调度的情况。

(2)利用进程同步与互斥编程实现吃水果问题:

桌上有一盘子,桌上有一个空盘,允许存放一只水果,爸爸可向盘内放苹果,妈妈可向盘内放桔子,儿子专等吃盘内的桔子,女儿专等吃盘中的苹果。 3、要求

⑴仔细观察设计中的各种现象及出现的问题。分析产生各种现象的原因。寻找解决问题的办法。

⑵报告应至少包括带注释的程序清单、输出的结果及对各种现象的分析意见。

题目11 利用进程同步与互斥实现理发师问题

1、目的

调用linux系统调用实现多进程的创建、进程间同步与互斥解决具体问题。 2、内容 ⑴进程的创建

编制一段程序,使用系统调用fork( )创建两个子进程,这样在此程序运行时,在系统中就有一个父进程和两个自进程在活动。让每一个进程在屏幕上显示一个字符:父进程显示字符a,自进程分别显示字符 b和字符c。试观察、记录并分析屏幕上进程调度的情况。

(2)利用进程同步与互斥编程实现理发师问题: (1)一个理发店接待室有n张椅子,工作室有1张椅子; (2)没有顾客时,理发师睡觉;

(3)第一个顾客来到时,必须将理发师唤醒;

(4)顾客来时如果还有空座的话,他就坐在一个座位上等待; (5)如果顾客来时没有空座位了,他就离开,不理发了;

(6)当理发师处理完所有顾客,而又没有新顾客来时,他又开始睡觉。 3、要求

⑴仔细观察设计中的各种现象及出现的问题。分析产生各种现象的原因。寻找解决问题的办法。

⑵报告应至少包括带注释的程序清单、输出的结果及对各种现象的分析意见。

题目12 利用进程同步与互斥实现面包房算法

1、目的

调用linux系统调用实现多进程的创建、进程间同步与互斥解决具体问题。 2、内容 ⑴进程的创建

编制一段程序,使用系统调用fork( )创建两个子进程,这样在此程序运行时,在系统中就有一个父进程和两个自进程在活动。让每一个进程在屏幕上显示一个字符:父进程显示字符a,自进程分别显示字符 b和字符c。试观察、记录并分析屏幕上进程调度的情况。

本文来源:https://www.bwwdw.com/article/625t.html

Top