操作系统实验指导
一、操作系统用户接口实验
1.实验目的
熟悉操作系统的命令接口、图形接口和程序接口
2.实验内容
UNIX或LINUX环境:
熟悉开机登录进入系统、退出系统的过程。
使用UNIX或LINUX常用命令以及图形化接口X-Windows。
使用C语言编制一个小程序,使其可以通过某个系统调用来获得操作系统的服务。
Windows环境:
熟悉开机登录进入系统、退出系统的过程。
熟悉使用命方式启动应用程序的过程、熟悉Windows图形用户接口。
使用汇编语言编制一个小程序,使其可以通过某些系统调用来获得操作系统的服务。
3.实验分析和思考
操作系统向用户提供的各种接口分别适用于什么场合?
4. 实验学时安排:
4学时,在第一章学习完之后可以进行。
二、进程控制实验
1. 实验目的
通过进程的创建、撤消和运行加深对进程概念和进程并发执行的理解,明确进程与程序之间的区别。
2.实验内容
本实验必须在UNIX或LINUX环境下进行。
了解UNIX系统调用fork(>、exec(>、exit(>和waitpid(>的功能和实现过程。
编写一段程序,使用系统调用fork(>来创建两个子进程,并由父进程重复显示字符串“Parent:”和自己的标识数,而子进程则重复显示字符串“Child:” 和自己的标识数。
编写一段程序,使用系统调用fork(>来创建一个子进程,子进程通过系统调用exec(>更换自己的执行代码,显示新的代码“New program.”后,调用exit(>结束。而父进程则调用waitpid(>等待子进程结束,并在子进程结束后显示子进程的标识符,然后正常结束。
3. 实验分析和思考
系统调用fork(>是如何创建子进程的?
当首次将CPU分配给子进程时,其入口在哪里?
系统调用exec(>是如何更换进程的可执行代码的?
系统调用exit(>是如何终止一个进程的?
对一个应用,如果用多个进程的并发执行来实现,与单个进程来实现由什么不同?
4. 实验学时安排:
4学时,在进程控制内容学习之后进行。
三、进程通信实验
1.实验目的
学习如何利用管道机制、消息缓冲队列机制、共享存储区机制进行进程间的通信,加深对进程通信机制的理解。
2.实验内容
本实验必须在UNIX或LINUX环境下进行。
了解系统调用pipe(>、msgget(>、msgsnd(>、msgrcv(>、msgctl(>、shmget(>、shmat(>、shmdt(>、shmctl(>的功能和实现过程。
编写一段程序,使其用管道来实现父子进程之间的进程通信。子进程向父进程发送自己的进程标识符,以及字符串“is sending a message to parent!”。父进程则通过管道读出子进程发来的消息,将消息显示在屏幕上,然后终止。
编写一段程序,使其用消息缓冲队列来实现Client进程与Server进程之间的进程通信。Server进程先建立一个关键字为SVKEY(如75>的消息队列,然后等待接收类型为REQ(如1>的消息;在收到请求消息后,它显示字符串“serving for client”和接收到的Client进程的进程标识数,表示正在为Client进程服务;然后再向Client进程发送一条应答消息,该消息的类型是Client进程的进程标识数,而正文则是Server进程自己的标识数。Client进程则向消息队列发送类型为REQ的消息
编写一段程序,使其用共享存储区来实现两个进程之间的进程通信。进程A创建一个长度为512字节的共享内存,并显示写入该共享内存的数据;进程B将共享内存附加到自己的地址空间,并向共享内存中写入数据。
3.实验分析和思考
上述哪些通信机制提供了发送进程和接收进程之间的同步功能?这些同步是如何进行的?
上述通信机制各有什么特点?它们分别适合于何种场合?
4. 实验学时安排:
4学时,在进程同步与通信内容学习之后进行。
四、进程调度模拟实验
1.实验目的
通过对进程调度算法的模拟加深对进程概念和进程调度过程的理解。
2. 实验内容
用C语言或Pascal语言实现对N
每个用来标识进程的进程控制块PCB用结构
进程标识数ID。
进程优先数Priority,并规定优先数越大的进程,其优先权越高。采用简单轮转法时该字段无用。
进程已经占