操作系统经典题目

1、进程和线程的区别?
进程是系统进行资源调度和分配的一个独立单元,线程是进程的实体,是CPU调度和分配的基本单位,它是比进程更小的能独立运行的基本单位。
一个进程可以有多个线程,多个线程也可以并发执行。

2、线程同步的方式包括:临界区、互斥量、事件、信号量 (线程同步是指多个进程之间的协作)
临界区:每个进程中访问临界资源(一次仅允许一个进程使用的共享资源)的那段代码称为临界区,每次只准许一个进程进入临界区,进入后不允许其他进程进入。
互斥量:是一个可以处于两态之一的变量:解锁和加锁。
事件:用来通知线程有一些事情已发生,从而启动后继任务的开始。
信号量:用来解决线程间同步或互斥的一种机制,也是一个特殊的变量,变量的值代表着当前可以利用的资源。

3、进程间通信方式:管道,系统IPC(包括消息队列、信号、共享存储)、套接字(SOCKET)
管道包括三种:普通管道(PIPE),流管道(s_pipe),命名管道(name_pipe)
1>普通管道:一为单工,只能单向传输;二是只能在父子或者兄弟进程间使用。
2>流管道:为半双工,可以双向传输。
3>命名管道:可以在许多并不相关的进程之间进行通讯。

4、什么是死锁?死锁产生的条件?
死锁:是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。
死锁产生的条件:
1>互斥:一次只有一个进程可以使用一个资源。其他进程不能访问已分配给其他进程的资源。
2>占有且等待:当一个进程等待其他进程时,继续占有已经分配的资源。
3>不可抢占:不能强行抢占进程已占有的资源。
4>循环等待:存在一个封闭的进程链,使得每个进程至少占有此链中下一个进程所需要的一个资源。


5、进程有哪几种状态:就绪状态、运行状态、阻塞状态。

设计内容: 进程死锁的检测:资源分配图的化简判断是否有死锁发生 设计要求: •建立所需的数据结构。 •从文件中读取资源分配的情况(文件格式自定义)。 •编写资源分配图的化简算法。 •每化简一步,在屏幕上显示化简的当前结果。 •最后给出结论,是否死锁。如果死锁,给出死锁进程资源。 设计思路: 程序中主要涉及两个方面:进程资源。两者通过占有和申请发生联系。因此对于每一个进程Pi,建立“占有”和“申请”的数据结构来保存之相关联的资源(由于事先不知道进程拥有和申请的资源数,故用Vector作为数据结构)。同时记录下程序处理的总的进程数目和资源数目。对于资源,另建立两个数组res和work分别记录第i类资源的总数和当前可用数。 从文件中读入资源进程的情况时,要进行一些判断。①处理的资源进程数目不得超过500(500已满足当前实际机器的情况)。②资源进程的编号不得超过相应的数目也不得小于0。③资源的起始值不应该小于0。 ④起始情况下,所有进程拥有的第i资源总数不应该比其总的资源数目还要多。 由于在理论上已经证明,化简的次序不影响化简的最终结果。所以化简的过程就是不停的寻找满足条件(此进程所申请的资源全部都可以满足)的进程进行化简(即把它拥有的资源加到work数组中),直到不再能找到这样的进程为止。然后检查所有的进程,如果仍有未被化简的进程,则表明死锁已经产生。此时记录下发生死锁的进程编号。然后,为进一步明确哪些进程在哪些资源上发生死锁,给定一个进程入口点采用DFS搜索和次进程相关的所有进程。 为了能在每一步化简后显示当前进程资源的状况,定义了两个画图函数。一个是根据当前资源进程的“占有”和“申请”状况,画出整体的资源分配图。另一个是在每次化简掉一个进程时删除和它相关的所有边。 程序在VC++6.0中调试、验收通过。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值