资源分配
当每个进程请求系统中可用的资源时,操作系统会为其执行目的分配所需的资源。分配的资源可以是硬盘驱动器、扫描仪、内存中的任何文件,甚至打印机。任何进入就绪或执行状态的程序都被称为进程。此程序需要来自一个或多个其他进程的资源才能完成其分配的任务。
在多编程环境中,一个进程可能同时请求多个资源,因此这些进程必须等待,直到它收到所有资源。操作系统中存在的资源分配器通常负责根据用户请求分配资源,并在各种进程之间完成时释放资源。资源分配必须以这样一种方式分配,即所有进程都拥有完成其任务所需的足够资源。
资源分配
当根据请求向进程分配资源时,在多用户处理中会出现各种问题,这些问题在提供不可共享的资源以使其与更高的需求相平衡方面将是昂贵的。操作系统必须分配资源而不会丢失系统的完整性。
考虑一个用户正在使用 Excel 文件并希望使用连接到系统的打印机设备打印一些数据的实际示例。然后,操作系统根据其可用性将打印机分配给 Excel 进程。如果打印机被系统中的另一个进程使用,则该进程将进入等待状态。
操作系统用于将资源分配给进程的分配机制如下所示:
内存分配 - 当程序请求操作系统资源时,进程和输入数据需要存储在主内存中以执行其执行。内存管理器有责任根据可用的或空闲的空间分配资源,并在向请求的进程提供内存后,程序的执行开始。内存管理有两种不同的方法将进程分配到系统中。在连续方法中,进程被分配到固定大小的内存块中,并且具有更大的大小并存储在具有连续地址的内存位置中,而在非连续方法中,进程存储在位于不同内存部分的不同块中,不需要以连续的方式存储,这似乎是一种有效的技术,因为它仅在需要时才使用内存空间。
处理器
操作系统有一个进程描述符,用于指定进程从处理器获取资源。通常存在一个中央处理器,而在多处理器环境中,可以同时运行许多处理器来服务用户请求。进程控制块包含有关每个进程创建时资源状态的信息。这提供了每个进程的状态,例如新、运行、等待、就绪、阻塞或终止。
文件权限
文件包含用户信息的集合,有时称为程序。资源与文件一起分配,以及所有者为个人或用户组指定的访问权限。读取、写入和执行等操作也与存储在内存中的文件一起分配。如果同时请求多个文件,则某些进程将进入队列,直到到达其过期时间。
内存备份
如前所述,资源可以由内存管理器分配。虚拟内存也可用于存储最近使用过的文件。在备份存储中,无法将用户的请求排队,因为将为请求的进程分配空闲空间。
分配方法
分配方法 当向进程分配资源时,操作系统有两种分配方法策略:
死锁 - 当一个进程等待由其他进程持有的资源集并且它等待在变为未阻塞之前收到所有请求的资源时,就会发生死锁。死锁可能在某些条件下发生,例如持有并等待、互斥、不可抢占和循环等待。
考虑一个示例,其中两个进程 P1 和 P2 需要资源 X 和 Y。在这种情况下,P1 等待资源 Y,而 P2 持有资源 Y,而 P2 又等待资源 X,该资源必须由持有它的 P1 释放。因此,当 P1 需要资源 Y 并等待 P2 释放它时,并且 P2 需要 X 并等待 P2 释放它时,此处创建了循环。可以通过检测、预防、避免和鸵鸟问题等方法解决死锁。
无死锁 - 如果内存中可用的资源丰富并且可以同时为多个进程服务,则可能不会发生死锁。
结论
资源的分配由操作系统根据分配机制进行管理和控制。它检测将不同类型的资源分配到内存、处理器、外设和备份存储的方法。分配给每个进程的资源可能会或可能不会进入死锁状态,并且必须实施检测和预防机制以从发生的死锁中恢复。