为了保护共享资源,不让多个进程同时访问这个共享资源,即阻止多个进程同时进入访问这些资源的代码段,这个代码段称为临界区(也称为管程),这种一次只允许一个进程访问的资源称为临界资源.
临界资源是指每次仅允许一个进程访问的资源.
属于临界资源的硬件有打印机、磁带机等,软件有消息缓冲队列、变量、数组、缓冲区等。 诸进程间应采取互斥方式,实现对这种资源的共享。
每个进程中访问临界资源的那段代码称为临界区。显然,若能保证诸进程互斥地进入自己的临界区,便可实现诸进程对临界资源的互斥访问。为此,每个进程在进入临界区之前,应先对欲访问的临界资源进行检查,看它是否正被访问。如果此刻该临界资源未被访问,进程便可进入临界区对该资源进行访问,并设置它正被访问的标志;如果此刻该临界资源正被某进程访问,则本进程不能进入临界区。
在操作系统中,有临界区的概念。临界区内放的一般是被1个以上的进程或线程(以下只说进程)共用的数据。
临界区内的数据一次只能同时被一个进程使用,当一个进程使用临界区内的数据时,其他需要使用临界区数据的进程进入等待状态。
操作系统需要合理的分配临界区以达到多进程的同步和互斥关系,如果协调不好,就容易使系统处于不安全状态,甚至出现死锁现象。
那么,硬盘是不是临界资源?
从应用程序的角度看,硬盘是以文件为单位进行操作的,对文件写入之前必须先加锁,这个操作的原子性是在操作系统中完成的,每个文件是一个临界资源,不同的文件之间的操作是不互斥的.当然如果直接进行底层调用修改磁盘数据,那就和下面说的从操作系统角度看相同了;
从操作系统或着驱动程序的角度看,磁盘是以磁道为单位进行操作的,无论是DMA方式还是PIO方式,同一时间都只能操作一个位置,整个硬盘是一个资源;
从硬盘自身的控制层面看,一个操作序列下发之后,默认情况下是必须按照顺序进行操作的,但是如果支持NCQ的话,可以对操作的顺序进行更改以适应磁头移动的轨迹.但需要注意的是,一个硬盘即使有多个磁头,也只有一个音圈马达来控制,所以整个硬盘同一时间只能操作一个位置.
从操作系统的角度看,硬盘是临界资源,但要注意对应用程序的呈现.
注:硬盘是磁盘中的一种,软盘也是磁盘。磁盘就是通过磁性进行读写功能的设备,断电后保存的文件不会丢失。内存也可以储存,但存储的载体和磁盘不同,断电后就不能保存数据。