笔试题:操作系统 (1)

1. 死锁的条件

四个必要条件:互斥、请求与保持、非剥夺、循环等待。

三个主要原因:资源不足、资源分配不当、进程推进顺序非法。

两个检测图:资源分配图、进程等待图。

死锁的处理

四个预防方法:申新先释旧、一次请求完、按序申请。依次破坏了死锁的第2、3、4个必要条件。

两个恢复方法:撤销死锁进程(撤销资源)、挂起死锁进程(剥夺资源)。

一个避免方法:银行家算法。(动态避免)

论述解决死锁的方法和策略

2. 进程与线程

进程是程序的一次执行,而线程可以理解为程序中运行的一个片段

进程之间地址空间独立。全局变量也就只有在同一个进程内的线程之间可以共享

线程之间的通信是为了同步(毕竟共享进程的资源),同步措施实施起来并不高效。

线程有独立的虚拟地址空间,但是拥有的资源相对进程来说,只有运行所必须的堆栈,寄存器等

可通过文件在不同进程间进行数据传递和共享

3. 使用pthread库的多线程程序编译时需要加什么连接参数? ()

A. -pthreadB.-fthis-is-varialbleC.-fcond-mismatchD. -MMD

pthread最简单的多线程编程-001

4. 文件索引结构

直接索引、间接索引、优缺点

5. 在调试程序时,可以把所有输出送到屏幕显示,而不必正式输出到打印设备,其运用了(B).

A. Spooling技术 B. I/O重定向 C. 共享技术 D. 缓冲技术

SPOOLing(Simultaneous Peripheral Operation On-Line)技术,即外部设备联机并行操作。是为实现低速输入输出设备与高速的主机之间的高效率数据交换而设计的。通常称为“假脱机技术”,又称为排队转储技术。

I/O重定向:在Unix系统中,每个进程都有STDIN、STDOUT和STDERR这3种标准I/O,它们是程序最通用的输入输出方式。

对Linux进程来讲,每个打开的文件都是通过文件描述符(File Descriptor)来标识的,内核为每个进程维护了一个文件描述符表,这个表以FD为索引,再进一步指向文件的详细信息。在进程创建时,内核为进程默认创建了0、1、2三个特殊的FD,这就是STDIN、STDOUT和STDERR。

所谓的I/O重定向也就是让已创建的FD指向其他文件。比如,下面是对STDOUT重定向到testfile.txt前后内核文件描述符表变化的示意图。

重定向前:


重定向后:





6. 分布式系统和网络系统的主要区别是(透明性)

分布式系统(distributed system)是建立在网络之上的软件系统。正是因为软件的特性,所以分布式系统具有高度的内聚性和透明性

内聚性是指每一个数据库分布节点高度自治,有本地的数据库管理系统。

透明性是指每一个数据库分布节点对用户的应用来说都是透明的,看不出是本地还是远程。

7. 实时系统的分类

实时控制系统:要求与被控制的变化速度相比,其反应速度足够快;工作安全可;需要人工干预时,操作简便。

如  (2)过程控制系统 ,  (5)办公自动化系统

实时信息处理系统:要求计算机能够在容许的延迟时间内,相应外部的事件请求,完成对该事件的处理,并控制所有的实时设备和实时任务协调运行。

(1)航空订票系统 , 期货、股票交易系统等。

8. 解释一下什么是IPC(Inter-Process Communication),及它的典型技术。

IPC,进程间通信。代表了一款处理器的设计架构,一旦该处理器设计完成之后,IPC值就不会再改变了。主要技术有:

用于进程间通讯(IPC)的四种不同技术: 

(1)消息传递(管道,FIFO,posix和system v消息队列) 

(2)同步(互斥锁,条件变量,读写锁,文件和记录锁,Posix和System V信号灯) 

(3)共享内存(匿名共享内存区,有名Posix共享内存区,有名System V共享内存区) 

(4)过程调用(Solaris门,Sun RPC) 

----------------------第二个版本--------------------

进程间通信主要包括:管道、系统IPC(包括消息队列,信号量,共享存储)、SOCKET.

----------------------第三个版本--------------------

(1)文件映射

文件映射(Memory-Mapped Files)能使进程把文件内容当作进程地址区间一块内存那样来对待。

因此,进程不必使用文件I/O操作,只需简单的指针操作就可读取和修改文件的内容。

(2)共享内存

Win32 API中共享内存(Shared Memory)实际就是文件映射的一种特殊情况。

进程在创建文件映射对象时用0xFFFFFFFF来代替文件句柄(HANDLE),就表示了对应的文件映射对象是从操作系统页面文件访问内存。

其它进程打开该文件映射对象就可以访问该内存块。
由于共享内存是用文件映射实现的,所以它也有较好的安全性,也只能运行于同一计算机上的进程之间。

(3) 匿名管道

管道(Pipe)是一种具有两个端点的通信通道:有一端句柄的进程可以和有另一端句柄的进程通信。

管道可以是单向-一端是只读的,另一端点是只写的;也可以是双向的一管道的两端点既可读也可写。

匿名管道(Anonymous Pipe)是 在父进程和子进程之间,或同一父进程的两个子进程之间传输数据的无名字的单向管道。

通常由父进程创建管道,然后由要通信的子进程继承通道的读端点句柄或写 端点句柄,然后实现通信。

父进程还可以建立两个或更多个继承匿名管道读和写句柄的子进程,这些子进程可以使用管道直接通信,不需要通过父进程。

(4)命名管道

命名管道(Named Pipe)是服务器进程和一个或多个客户进程之间通信的单向或双向管道。

不同于匿名管道的是命名管道可以在不相关的进程之间和不同计算机之间使用。

服务器建立命名管道时给它指定一个名字,任何进程都可以通过该名字打开管道的另一端,根据给定的权限和服务器进程通信。

(5) 邮件槽

邮件槽(Mailslots)提 供进程间单向通信能力,任何进程都能建立邮件槽成为邮件槽服务器。

其它进程,称为邮件槽客户,可以通过邮件槽的名字给邮件槽服务器进程发送消息。

进来的消 息一直放在邮件槽中,直到服务器进程读取它为止。

一个进程既可以是邮件槽服务器也可以是邮件槽客户,因此可建立多个邮件槽实现进程间的双向通信。

(6)剪贴板

非常松散的交换媒介,可以支持任何数据格式。只能在基于Windows的程序中使用,不能在网络上使用。

(7)其他基于Windows的应用程序

Sockets、WM_COPYDATA消息、动态数据交换、对象连接与嵌入、远程过程调用、NetBios函数、

Sockets的跨平台性要比其它IPC机制好得多,唯一缺点是它支持的是底层通信操作。这使得在单机的进程间进行简单数据传递不太方便,这时使用WM_COPYDATA消息将更合适些。

WM_COPYDATA是一种非常强大却鲜为人知的消息:当一个应用向另一个应用传送数据时,发送方只需使用调用SendMessage函数,参数是目的窗口的句柄、传递数据的起始地址、WM_COPYDATA消息。接收方只需像处理其它消息那样处理WM_COPY DATA消息,这样收发双方就实现了数据共享。

WM_COPYDATA是一种非常简单的方法,它在底层实际上是通过文件映射来实现的。它的缺点是灵活性不高,只能用于Windows单机环境。

©️2020 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值