操作系统课程设计

以下是我们操作系统的课设,天佑可怜,上课一点没听的我,幸好只是写写程序,要是做书上那些。。。我可能要哭。

先把我的代码贴上来吧,还有一些我参考、学习的网站,嗯,有机会会自己写的,最近是要要去准备期末考了。

操作系统:Linux中进程通信

linux下用程序实现生产者消费者问题

用C/C++实现页面置换(FIFO、LRU、OPT)

“进程是什么,子进程运行的是哪段程序,软中断是什么,管道是什么、用来干什么的

生产者消费者,不用问,你肯定不会”

喵自闭中,操作系统基本是考研必考科目,而且进程这些也基本是考研必考的,喵居然上课没听、课设又没有认真预习,太罪恶了,老师对不起,但是课设还是求高分。



操作系统课程设计

任务书

 

设计一 进程管理

一.设计目的

  • 加深对进程概念的理解,明确进程和程序的区别。

  • 进一步认识并发执行的实质。

  • 实现Linux中进程通信的两种方式:软中断和管道通信。

二.实验预备内容

1.Fork()创建一个新的进程。

2.Lockf(int files,int function,long size)用作锁定文件的某些段或者整个文件。

3.Signal(int sig,(*func)function)进程控制软中断信号的处理。

4.kill(int pid,int sig)向一个进程或一个进程组发送信号。

5.alarm(unsigned int seconds)设置一个指定时间的计时器。

6.int pipe(int filedes[2])创建管道。

7.int wait(int *status)暂停目前进程的执行,直到有信号到来或子进程的结束。

三.设计内容

1. 进程的创建和控制

<任务>

编写一段程序,使用系统调用fork()创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符,试观察记录屏幕上的显示结果,并分析原因。修改已编好的程序,将每个进程的输出由单个字符改为一句话。

 

2. 进程的软中断通信

<任务>

使用系统调用fork()创建两个子进程,再用系统调用signal()让父进程捕捉用函数设置时钟的时间段终止时产生的信号,当捕捉到中断信号后,父进程用系统调用kill()向两个进程发出信号,子进程捕捉到信号后,分别输出子进程被杀死信息后终止: 父进程等待两个子进程终止后,输出父进程被杀死信息终止。试观察记录屏幕上的显示结果,并分析原因。

 

3.进程的管道通信

<任务>

编写一段程序,实现进程的管道通信。使用系统调用pipe()建立一条管道线。两个子进程p1和p2分别向管道写信息,而父进程则从管道中读出来自于两个子进程的信息,显示在屏幕上。

Child process 1 is sending message!

再延迟5秒显示:

Child process 2 is sending message!

 

 

 

 

设计二 进程间通信

一.设计目的

分析进程争用资源的现象,学习解决进程互斥的方法。

二.设计预备内容

Producter:

{While(true)

{wait(empty);//有空缓冲区//

wait(mutex);

a[in]=1;

in=(in+1)%4;

signal(mutex);

signal(full);//有满缓冲区//

}

}

Consumer:

{ While(true)

{wait(full);

wait(mutex);

b[out]=0;

out=(out+1)%4;

signal(mutex);

signal(empty);

}

}

三.设计内容

<任务>

用程序实现生产者——消费者问题

 

设计三 存储管理

一.设计目的

通过请求页面式存储管理中页面置换算法设计,了解存储技术的特点,掌握请求页式存储管理的页面置换算法。

二.设计内容

深入理解教材里的几种页面置换算法后,用程序模拟这几种置换算法的置换过程,并计算分别的命中率。

设计一: 设计任务:模拟Linux文件系统 在任一OS下,建立一个大文件,把它假象成一张盘,在其中实现一个简单的模拟Linux文件系统。 1. 在现有机器硬盘上开辟100M的硬盘空间,作为设定的硬盘空间。 2. 编写一管理程序simdisk对此空间进行管理,以模拟Linux文件系统,要求: (1) 盘块大小1k (2) 空闲盘块的管理:Linux位图法 (3) 结构:超级块, i结点区, 根目录区 3. 该simdisk管理程序的功能要求如下: (1) info: 显示整个系统信息(参考Linux文件系统的系统信息),文件可以根据用户进行读写保护。目录名和文件名支持全路径名和相对路径名,路径名各分量间用“/”隔开。 (2) cd …: 改变目录:改变当前工作目录,目录不存在时给出出错信息。 (3) dir …: 显示目录:显示指定目录下或当前目录下的信息,包括文件名、物理地址、保护码、文件长度、子目录等(带/s参数的dir命令,显示所有子目录)。 (4) md …: 创建目录:在指定路径或当前路径下创建指定目录。重名时给出错信息。 (5) rd …: 删除目录:删除指定目录下所有文件和子目录。要删目录不空时,要给出提示是否要删除。 (6) newfile …: 建立文件。 (7) cat …: 打开文件。 (8) copy …: 拷贝文件,除支持模拟Linux文件系统内部的文件拷贝外,还支持host文件系统与模拟Linux文件系统间的文件拷贝,host文件系统的文件命名为<host>…,如:将windows下D:盘的文件\data\sample\test.txt文件拷贝到模拟Linux文件系统中的/test/data目录,windows下D:盘的当前目录为D:\data,则使用命令: simdisk copy <host>D:\data\sample\test.txt /test/data 或者:simdisk copy <host>D:sample\test.txt /test/data (9) del …: 删除文件:删除指定文件,不存在时给出出错信息。 (10) check: 检测并恢复文件系统:对文件系统中的数据一致性进行检测,并自动根据文件系统的结构和信息进行数据再整理。 4. 程序的总体流程为: (1) 初始化文件目录; (2) 输出提示符,等待接受命令,分析键入的命令; (3) 对合法的命令,执行相应的处理程序,否则输出错误信息,继续等待新命令,直到键入EXIT退出为止。 设计二: 设计任务:模拟文件系统的前端操作shell 实现一个简单的shell(命令行解释器)。 将设计一的管理程序simdisk作为后台进程运行,利用本设计任务的shell操作simdisk。 本设计任务在于学会如何实现在前端的shell进程和后端的simdisk进程之间利用共享内存进行进程间通信(IPC)。 设计三: 设计任务:模拟文件系统的操作管理 实现多个进程同时对模拟文件系统进行操作。设计管理程序simdisk的用户访问权限管理。访问模拟文件系统的每个进程都属于某个用户,管理程序simdisk根据其访问权限决定其对模拟文件系统的操作。 对模拟文件系统的操作要求做到:共享读,互斥写。 本设计任务在于学会如何实现信息的安全管理和进程同步。 注:要求从课程设计的整体来考虑设计任务一、二、三,并分阶段实现。
相关推荐
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页