简介
在计算机科学中,系统资源(system resource)意指是一个计算机系统中,限制其运算能力的任何实体或是虚拟的组成元件。任何连结到计算机系统中的装置,都是一个资源,例如键盘、屏幕等。电脑系统内部的任何元件都是资源,如CPU,RAM。计算机系统中的软件虚拟元件,包括档案,网络连线与内存区块等,都是一种资源。分配系统资源是指对计算机软件资源和硬件资源进行分配,使系统资源得到充分利用和不使系统出现死锁。分配系统资源可以分为以下四类:处理机分配、内存分配、I/O设备分配。
处理机分配处理机分配也可以称之为处理机调度,在多道程序设计系统中,内存中有多道程序运行,他们相互争夺处理机这一重要的资源。处理机调度就是从就绪队列中,按照一定的算法选择一个进程并将处理机分配给它运行,以实现进程并发地执行。在传统的操作系统中,包括作业调度和进程调度两步。
(1) 作业调度。作业调度的基本任务是从后备队列中按照一定的算法,选择出若干个作业,为它们分配运行所需的资源(首先是分配内存)。在将它们调入内存后,便分别为它们建立进程,使它们都成为可能获得处理机的就绪进程,并按照一定的算法将它们插入就绪队列。
(2) 进程调度。 进程调度的任务是从进程的就绪队列中, 按照一定的算法选出一个进程,把处理机分配给它,并为它设置运行现场,使进程投入执行。值得提出的是,在多线程 OS中,通常是把线程作为独立运行和分配处理机的基本单位,为此,须把就绪线程排成一个队列,每次调度时,是从就绪线程队列中选出一个线程,把处理机分配给它。
内存分配内存分配的主要任务是为每道程序分配内存空间,使它们“各得其所” ;提高存储器的利用率,以减少不可用的内存空间;允许正在运行的程序申请附加的内存空间,以适应程序和数据动态增长的需要。
OS 在实现内存分配时,可采取静态和动态两种方式。在静态分配方式中,每个作业的内存空间是在作业装入时确定的;在作业装入后的整个运行期间,不允许该作业再申请新的内存空间,也不允许作业在内存中“移动” 。在动态分配方式中,每个作业所要求的基本内存空间也是在装入时确定的,但允许作业在运行过程中继续申请新的附加内存空间,以适应程序和数据的动态增长,也允许作业在内存中“移动” 。为了实现内存分配,在内存分配的机制中应具有这样的结构和功能:
(1) 内存分配数据结构。该结构用于记录内存空间的使用情况,作为内存分配的依据;
(2) 内存分配功能。系统按照一定的内存分配算法为用户程序分配内存空间;
(3) 内存回收功能。系统对于用户不再需要的内存,通过用户的释放请求去完成系统的回收功能。
设备分配设备分配的基本任务是根据用户进程的 I/O 请求、 系统的现有资源情况以及按照某种设备的分配策略,为之分配其所需的设备。如果在 I/O 设备和 CPU 之间还存在着设备控制器和 I/O 通道时,还须为分配出去的设备分配相应的控制器和通道。
为了实现设备分配,系统中应设置设备控制表、控制器控制表等数据结构,用于记录设备及控制器的标识符和状态。根据这些表格可以了解指定设备当前是否可用,是否忙碌,以供进行设备分配时参考。在进行设备分配时,应针对不同的设备类型而采用不同的设备分配方式。 对于独占设备(临界资源)的分配, 还应考虑到该设备被分配出去后系统是否安全。在设备使用完后,应立即由系统回收。