版权归原作者所有,如有侵权,请联系我们

[科普中国]-现行已分配资源

科学百科
原创
科学百科为用户提供权威科普内容,打造知识科普阵地
收藏

简介

现行已分配资源是指系统已经分配给进程或程序的资源。现在系统一般都运行多个进程,而系统中的资源一般都是有限的。因此,系统资源的分配一般会基于一定的规则。现行已分配资源是系统中进程进行调度的基础。

内存分配内存分配的主要任务是为每道程序分配内存空间,使它们“各得其所” ;提高存储器的利用率,以减少不可用的内存空间;允许正在运行的程序申请附加的内存空间,以适应程序和数据动态增长的需要。

OS 在实现内存分配时,可采取静态和动态两种方式。在静态分配方式中,每个作业的内存空间是在作业装入时确定的;在作业装入后的整个运行期间,不允许该作业再申请新的内存空间,也不允许作业在内存中“移动” 。在动态分配方式中,每个作业所要求的基本内存空间也是在装入时确定的,但允许作业在运行过程中继续申请新的附加内存空间,以适应程序和数据的动态增长,也允许作业在内存中“移动” 。为了实现内存分配,在内存分配的机制中应具有这样的结构和功能:

(1) 内存分配数据结构。该结构用于记录内存空间的使用情况,作为内存分配的依据;

(2) 内存分配功能。系统按照一定的内存分配算法为用户程序分配内存空间;

(3) 内存回收功能。系统对于用户不再需要的内存,通过用户的释放请求去完成系统的回收功能。

设备分配设备分配的基本任务是根据用户进程的 I/O 请求、 系统的现有资源情况以及按照某种设备的分配策略,为之分配其所需的设备。如果在 I/O 设备和 CPU 之间还存在着设备控制器和 I/O 通道时,还须为分配出去的设备分配相应的控制器和通道。

为了实现设备分配,系统中应设置设备控制表、控制器控制表等数据结构,用于记录设备及控制器的标识符和状态。根据这些表格可以了解指定设备当前是否可用,是否忙碌,以供进行设备分配时参考。在进行设备分配时,应针对不同的设备类型而采用不同的设备分配方式。 对于独占设备(临界资源)的分配, 还应考虑到该设备被分配出去后系统是否安全。在设备使用完后,应立即由系统回收。

死锁操作系统中描述两个或两个以上的进程因竞争资源而无休止地互相等待状态的概念。在计算机系统或网络系统中,如果在某一时刻,有一组进程,其中每个进程都占有了被该组中其他进程所要求的不能抢占的资源,则此组中的进程就被死锁住了。这时系统效率将大大下降或不能继续运行。避免死锁发生的办法是,操作系统根据预先掌握的关于资源用法来控制资源的分配,使得共同进展路径的下一步不致于进入危险区。检测死锁的办法是,操作系统不断地监督进程的共同进展路径,一旦发现已进入死锁时,则立即采取有效措施使之恢复正常运行1。

系统安全状态在预防死锁的几种方法中,都施加了较强的限制条件;在避免死锁的方法中,所施加的限制条件较弱,有可能获得令人满意的系统性能。在该方法中把系统的状态分为安全状态和不安全状态,只要能使系统始终都处于安全状态,便可避免发生死锁。

在避免死锁的方法中,允许进程动态地申请资源,但系统在进行资源分配之前,应先计算此次资源分配的安全性。若此次分配不会导致系统进入不安全状态,则将资源分配给进程;否则,令进程等待。

所谓安全状态,是指系统能按某种进程顺序(P 1 ,P 2 ,…,P n )(称〈P 1 ,P 2 ,…,P n 〉序列为安全序列),来为每个进程 P i 分配其所需资源,直至满足每个进程对资源的最大需求,使每个进程都可顺利地完成。如果系统无法找到这样一个安全序列,则称系统处于不安全状态。

虽然并非所有的不安全状态都必然会转为死锁状态,但当系统进入不安全状态后,便有可能进而进入死锁状态;反之,只要系统处于安全状态,系统便可避免进入死锁状态。因此,避免死锁的实质在于:系统在进行资源分配时,如何使系统不进入不安全状态2。