1、(1) 联机输入方式: 用户和系统通过交互式会话来输入作业。2)脱机输入方式:利用低档个人计算机作为外围处理机进 行输入处理,存储在后援存储器上,然后将此后援存储 器连接到高速外围设备上和主机相连,从而在较短的时 间内完成作业的输入工作。3)直接耦合方式:直接耦合方式把主机和外围低档机通过 一个公用的大容量外存直接耦合起来,从而省去了在脱 机输入中那种依靠人工干预来传递后援存储器的过程。4)SPOOLING 系统: SPOOLING 又可译作外围设备同时 联机操作。 在 SPOOLING 系统中,多台外围设备通过 通道或 DMA 器件和主机与外存连接起来。作业的输入 输出过程由主机中的操作系统
2、控制。5)网络输入方式:网络输入方式以上述几种输入方式为基 础。当用户需要把在计算机网络中某一台主机上输入的 信息传送到同一网中另一台主机上进行操作或执行时, 就构成了网络输入方式2.4试述 SPOOLING 系统的工作原理。答:在 SPOOLING 系统中,多台外围设备通过通道或 DMA 器 件和主机与外存连接起来。 作业的输入输出过程由主机中的操作 系统控制。 操作系统中的输入程序包含两个独立的过程, 一个过 程负责从外部设备把信息读入缓冲区;另一个是写过程 , 负责把 缓冲区的信息送到外存输入井中。在系统输入模块收到作业输入请求信号后, 输入管理模块中 的读过程负责将信息从输入装置读入缓
3、冲区。 当缓冲区满时, 由 写过程将信息从缓冲区写到外存输入井中。 读过程和写过程反复 循环,直到一个作业输入完毕。 当读过程读到一个硬件结束标志 之后,系统再次驱动写过程把最后一批信息写入外存并调用中断 处理程序结束该次输入。然后,系统为该作业建立作业控制块 JCB,从而使输入井中的作业进入作业等待队列,等待作业调度 程序选中后进入内存。2.5操作系统为用户提供哪些接口?它们的区别是什么?操作系统为用户提供两个接口界面。 一个是系统为用户提供 的各种命令接口界面。 用户利用这些操作命令来组织和控制作业 的执行或管理计算机系统。 另一个接口是系统调用。 编程人员使 用系统调用来请求操作系统提供
4、服务。 操作系统的命令控制界面 就是用来组织和控制作业运行的。2.6作业控制方式有哪几种?调查你周围的计算机的作业控制 方式 。作业控制的主要方式有两种:联机和脱机方式。 脱机控制方式利用作业控制语言来编写表示用户控制意图 的作业控制程序, 也就是作业说明书。 作业控制语言的语句就是 作业控制命令。不同的批处理系统提供不同的作业控制语言。联机控制方式不要求用户填写作业说明书, 系统只为用户提 供一组键盘或其他操作方式的命令。 用户使用系统提供的操作命 令和系统会话,交互地控制程序执行和管理计算机系统。2.7什么是系统调用?系统调用与一般用户程序有什么区别? 与库函数和实用程序有什么区别?答:
5、系统调用是操作系统提供给编程人员的唯一接口。 编程人员 利用系统调用 ,在源程序一级动态请求和释放系统资源,调用系 统中已有的系统功能来完成那些与机器硬件部分相关的工作以 及控制程序的执行速度等。因此,系统调用像一个黑箱子那样, 对用户屏蔽了操作系统的具体动作而只提供有关的功能。区别:系统调用是在核心层执行, 调用它们需要一个类似于 硬件中断处理的中断处理机制来提供系统服务。2.8简述系统调用的实现过程。用户在程序中使用系统调用,给出系统调用名和函数后,即 产生一条相应的陷入指令, 通过陷入处理机制调用服务, 引起处 理机中断, 然后保护处理机现场, 取系统调用功能号并寻找子程 序入口, 通过
6、入口地址表来调用系统子程序, 然后返回用户程序 继续执行。2.9为什么说分时系统没有作业的概念?因为在分时系统中,每个用户得到的时间片有限,用户的程 序和数据信息直接输入到内存工作区中和其他程序一起抢占系 统资源投入运行,而不必进入外存输入井等待作业调度程序选 择。因此,分时系统没有作业控制表,也没有作业调度程序。2.10Linux 操作系统为用户提供哪些接口?试举例说明。操作系统为用户提供两种接口, 即面向操作命令的借口 Shell 和面向编程用户的接口,即系统调用。常见的 Shell 命令如: login,logout,vi,emacs,cp,rm,ls,cc,link,adduser,c
7、howm,chm od,service,pgrep 等;常见的系统调用如: read,write,openg,close,creat,mount,fork,wait,exit,socket 等。2.11编写一个简单的 Shell 程序,完成一个已有数据文件的复 制和打印。答 : # .xt02cplp.sh# copy filecat copy.c copy.bak# print file /dev/lp2.12用 Linux 文件读写的相关系统调用, 编写一个 copy 程序。/ homeosxt02copy.c/ usage copy src dst#include sys/stat.hf
8、cntl.hunistd.hstdlib.hstdio.h#define BUFSIZE 8192int main(int argc,char* argv) printf(argv0 : %sn,argv0); printf(argv1 :,argv1);argv2 :,argv2); if (argc!=3) nusage : copy src dst n); return -1;int src,dst;char bufBUFSIZE;int n;src = open(argv1,O_RDONLY);dst = open(argv2,O_RDWR | O_CREAT | O_TRUNC,S_
9、IRUSR | S_IWUSR | S_IXUSR);while (n=read(src,buf,BUFSIZE) 0 ) if (write(dst,buf,n)!=n) printf(write error ! if (n0) printf(read error !close(src);close(dst);nSuccess !nexit(0);2.13略第3章进程管理Page 8.33.10设在书3.6节中所描述的生产者-消费者问题中,其缓冲 部分为m个长度相等的有界缓冲区组成,且每次传输数据长度 等于有界缓冲区长度,以及生产者和消费者可对缓冲区同时操 作。重新描述发送过程deposit
10、(data) 和接收过程remove(data) 。1:设第i块缓冲区的公用信号量为 mutexi,保证生产者进程和消费者进程对同一块缓冲区操作的互斥,初始值为 1。2 :设信号量avail为生产者进程的私有信号量,初始值为 m。3:设信号量full为消费者进程的私有信号量,初始值为 0。Deposit(data)Beg inP(avail)选择一个空缓冲区 bufiP(mutexi)bufi dataV(full)V(Mutexi)EndRemove ( data)P(full)选择一个满缓冲区 bufiData bufiV(avail)3.11两进程PA , PB通过两FIFO缓冲区队列连
11、接(如图), 每个缓冲区长度等于传送消息长度。进程 PA , PB之间的通信满足如下条件:电 IT 一(1)至少有一个空缓冲区存在时,相应的发送进程才能发送一个 消息。(2)当缓冲队列中至少存在一个非空缓冲区时, 相应的接收进程才能接收一个消息。(3)接受与发送进程可以同时操作缓冲区队列。试描述发送过程send(i,data) 和接收过程receive(i,data)。这里i代表缓冲队列。1:定义数组buf0(图中上面的缓冲区),buf1(图中下面的缓 冲区)2:设bufempty0,buffull1 为PA的私有信号量,初始值分别为n, 0设bufempty1,buffull0 为PB的私有
12、信号量,初始值分sen d(i,data)begi nP(bufemptyi)按FIFO方式选择一个空缓冲区 bufijBufij dataV(buffulli);remove(i,data)P(buffulli)按FIFO方式选择一个满缓冲区 bufijV(bufemptyi);3.14设有5个哲学家,共享一张放有五把椅子的桌子,每人分 得一把椅子。但是,桌子上总共只有5支筷子,在每人两边分开 各放一支。哲学家们在肚子饥饿时才试图分两次从两边拾起筷子 就餐。条件:(1)只有拿到两支筷子时,哲学家才能吃饭。(2)如果筷子已在他人手上,则该哲学家必须等待到他人吃完之 后才能拿到筷子。(3)任一哲
13、学家在自己未拿到两支筷子吃饭之前, 决不放下自己 手中的筷子。试:(1)描述一个保证不会出现两个邻座同时要求吃饭的通信算 法。(2)描述一个既没有两邻座同时吃饭,又没有人饿死(永远拿 不到筷子)的算法。(3)在什么情况下, 5 个哲学家全部吃不上饭?(1)sendi: begin设信号量c0c4,初始值为1,分别表示第i号筷子(i= 0,1,2,3,4 )。第 I 个哲学家要吃饭P(ci) / 左手边的筷子P(ci+1 mod 5) / 右手边的筷子吃饭V(ci+1 mod 5)V(ci)(2)解决思路:奇数号的哲学家先取右手边的筷子,偶数号的哲 学家先取左手边的筷子 ;Send(i)BeginIf I mod 2 = 0 then P(ci+1 mod 5) / 右手边的筷子 吃饭Else P(ci) / 左手边的筷子 吃饭但会出现 5(3) 算法( 1)能保证相邻两个哲学家不会同时吃饭, 个哲学家一人拿一支筷子,谁也吃不上饭的情况。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1