当前位置:文档之家› 14-15-2操作系统原理实验报告(计131、132)(新)资料

14-15-2操作系统原理实验报告(计131、132)(新)资料

操作系统原理
实验报告
学院:信息与电子工程学院专业:计算机科学与技术班级:计算机130班
学号:1130299000
姓名:某某某
浙江科技学院
2014-2015学年第2学期
实验1 进程管理
一、实验目的
1. 弄清进程和程序的区别,加深对进程概念的理解。

2. 了解并发进程的执行过程,进一步认识并发执行的实质。

3. 掌握解决进程互斥使用资源的方法。

二、实验内容
1. 管道通信
使用系统调用pipe( )建立一个管道,然后使用系统调用fork( )创建2个子进程p1和p2。

这2个子进程分别向管道中写入字符串:“Child process p1 is sending message!”和“Child process p2 is sending message!”,而父进程则从管道中读出来自两个子进程的信息,并显示在屏幕上。

2. 软中断通信
使用系统调用fork( )创建2个子进程p1和p2,在父进程中使用系统调用signal( )捕捉来自键盘上的软中断信号SIGINT(即按Ctrl-C),当捕捉到软中断信号SIGINT后,父进程使用系统调用kill( )分别向2个子进程发出软中断信号SIGUSR1和SIGUSR2,子进程捕捉到信号后分别输出信息“Child process p1 is killed by parent!”和“Child process p2 is killed by parent!”后终止。

而父进程等待2个子进程终止后,输出信息“Parent process is killed!”后终止。

三、实验要求
1. 根据实验内容编写C程序。

2. 上机调试程序。

3. 记录并分析程序运行结果。

四、程序说明和程序流程图
五、程序代码
六、程序运行结果及分析
实验2 线程管理
一、实验目的
1. 弄清线程与进程的区别,加深对线程概念的理解。

2. 了解并发线程的调度和执行过程,进一步理解线程同步机制。

3. 掌握多线程编程的基本方法。

二、实验内容
生产者与消费者问题(Producer-consumer problem),或称有限缓冲区问题(Bounded-buffer problem),是一个多线程/进程同步问题的经典案例。

该问题描述了共享固定大小缓冲区的两类线程:即“生产者”线程和“消费者”线程在实际运行时会发生的问题。

生产者的主要作用是生成一定量的数据(产品)放入缓冲区中,然后重复此过程。

与此同时,消费者从缓冲区中取出数据并消耗。

解决该问题的关键是如何保证生产者不会在缓冲区满时放入数据,而消费者也不会在缓冲区中空时消耗数据。

使用POSIX thread库函数pthread_create创建若干个(至少2个)生产者线程和1个或若干个消费者线程,利用POSIX线程同步机制互斥锁和条件变量实现生产者线程和消费者线程的同步。

三、实验要求
1. 根据实验内容编写C程序。

2. 上机调试程序。

3. 记录并分析程序运行结果。

四、程序说明和程序流程图
五、程序代码
六、程序运行结果及分析
实验3 进程通信
一、实验目的
1. 了解进程间通信IPC的三种方式:消息队列、共享内存和信号量。

2. 掌握使用消息队列进行进程间通信的有关系统调用和编程方法。

3. 掌握使用共享内存进行进程间通信的有关系统调用和编程方法。

二、实验内容
1. 消息队列
使用系统调用msgget( )、msgsnd( )、msgrcv( )和msgctl( ),用消息队列机制实现客户进程和服务器进程间的通信。

客户进程首先建立一个描述符为msgqid的消息队列,接着向服务器进程发送一个消息正文为自己的进程标识pid且类型为1的消息,然后接收来自服务器进程的消息,并在屏幕上显示:“Client receives a message from xxxx!”,其中“xxxx”为服务器进程的进程标识。

服务器进程首先捕捉软中断信号(除不能捕捉的SIGKILL),若捕捉到时则调用函数cleanup( )删除消息队列,终止服务器进程。

否则重复下列操作:接收所有类型为1的消息,并在屏幕上显示:“Server receives a message from xxxx!”,其中“xxxx”为客户进程的进程标识;然后服务器进程将客户进程的进程标识作为返回消息的类型,而将自己的进程标识作为消息正文发送给客户进程。

2. 共享内存
使用系统调用shmget( )、shmat( )和shmctl( ),用共享内存机制实现进程间的通信。

其中一个进程向共享内存中写入数据,另一个进程从共享内存中读出数据并显示在屏幕上。

三、实验要求
1. 根据实验内容编写C程序。

2. 上机调试程序。

3. 记录并分析程序运行结果。

四、程序说明和程序流程图
五、程序代码
六、程序运行结果及分析
实验4 存储管理
一、实验目的
1. 了解虚拟存储管理技术的原理与特点。

2. 掌握请求页式存储管理的页面置换算法。

二、实验内容
1. 通过随机数产生一个指令序列,共320条指令。

指令的地址按下述原则生成:
(1) 50%的指令是顺序执行的;
(2) 25%的指令均匀分布在前地址部分;
(3) 25%的指令均匀分布在后地址部分。

实现方法:
(1) 在[0,319]的指令地址中随机选取一起点s;
(2) 执行指令s;
(3) 顺序执行一条指令,即执行地址为s+1的指令;
(4) 在前地址[0,s]中随机选取一条地址为m的指令执行;
(5) 顺序执行一条指令,即执行地址为m+1的指令;
(6) 在后地址[m+2,319]中随机选取一条指令s;
(7) 重复(2)—(6),直到执行320次指令。

2. 将指令序列变换为页地址流,设:
(1) 页面大小为1K;
(2) 用户内存容量为4—32页面(page frame);
(3) 用户虚存容量为32K(即32页)。

若10条指令为1页,则320条指令在虚存中的存放方式为:
第0页(虚存地址[0,9])——第0条~第9条指令;
第1页(虚存地址[10,19])——第10条~第19条指令;
• • • • • •
第31页(虚存地址[310,319])——第310条~第319条指令。

3. 计算并输出下列算法在不同内存容量下的命中率(命中率=1-缺页率)。

(1) FIFO——First In First Out Page Replacement Algorithm
(2) LRU——Least Recently Used Page Replacement Algorithm
三、实验要求
1. 根据实验内容编写C程序。

2. 上机调试程序。

3. 记录并分析程序运行结果。

四、程序说明和程序流程图
五、程序代码
六、程序运行结果及分析。

相关主题