文章目录
信号量理解
为了进程通信—>我们需要让不同的进程看到同一份资源---->我们之前讲的所有通信方式,本质都是优先解决一个问题:让不同的进程看到同一份资源。
让不同的进程看到了同一份资源,但是也带来了一些问题,比如共享内存会带来一些时序问题,造成数据不一致问题。
我们把对个进程(也称执行流)看到的公共的一份资源叫做临界资源
我们把自己进程访问临界资源的代码称为临界区。
所以多个执行流互相运行的时候,会互相干扰,主要是我们不加保护的访问了同样的资源(临界资源),在非临界区多个执行流互相是不影响的!
为了更好的进行临界区的保护,可以让多执行流在任何时刻,都只能有一个进程进入临界区-----这种行为也叫互斥!
例子:假设明天你喜欢的外国球星将来到当地的某个球馆比赛,但并不是你想去就能进去的,我们需要买票,因为球馆座位有限,所以看表演一定要有座位(球馆的一个资源),这个座位真正属于你吗?你坐在这个座位上,这个座位就属于你吗?当然不是!!!
我们要先买票,只要买了票,我们就拥有了这个座位。
买票的本质:对座位的预订机制。
每一个进程想进入临界资源,访问临界资源中的一部分