网站建设微信公众号小程序app,渭南住建网,晋江论坛怎么发图,网页源代码提取文件前提知识
在介绍信号量之前#xff0c;先来看看一些概念和一些简单的前提知识#xff1a;
进程间通信的前提是让不同的进程看到同一份资源。于是#xff0c;就有提出让这种资源成为一种公共资源的方法#xff0c;方法的提出#xff0c;导致了一种新的问题的出现#xf…前提知识
在介绍信号量之前先来看看一些概念和一些简单的前提知识
进程间通信的前提是让不同的进程看到同一份资源。于是就有提出让这种资源成为一种公共资源的方法方法的提出导致了一种新的问题的出现那就是数据不一致的问题。
数据不一致问题在公共资源中如果有规定需要让资源的数量到达了一定量后才能被读取但是有些进程却在其写入一半的时候就去读取接着一些按照规定去读取数据的进程去读取的时候读取不够了种种问题都导致了数据不一致问题
因此就有对公共资源进行保护的必要了被保护起来的公共资源称为临界资源。
去访问临界资源的进程一定是由该进程对应的代码去访问的而代码访问的区域称为临界区。
信号量本质上是一个计数器通常用来表示公共资源中资源的数量。那么我们结合上面所说的举个例子来理解信号的有什么用。
去电影院看电影
我们通过去电影院看电影做个例子。
一个电影院的一个影厅卖票假设这个影厅有100个座位那么肯定就只卖100张票。
当小张去买票的时候只要买了票就在一定的时间中不管小张有没有去看电影那个位置的使用权是属于小张的因此买票本质上就是预定位置。
我们使用这个例子来转化成对信号量的理解
影厅就是一个临界区每个座位就是一个个临界资源。也就是说这个临界区中有100个临界资源。小张就是一个进程进程去访问临界资源的时候先是通过信号量去“预定”资源。需要注意的是进程拿到了这个临界资源的访问权不代表这可以马上去访问。
特别的当信号量sem等于1的时候这意味共享资源的作为一整个资源被使用的。这种信号量称为二元信号量通过互斥功能保护公共资源 所有的进程在访问公共资源前都必须先申请信号量而申请信号量的前提是让不同进程看到同一个信号量因此信号量本身就是一个公共资源这意味着信号量必须保证自己 的安全性