临界区:不论是硬件资源还是软件资源,进程都必须互斥的进行访问,每个进程访问临街资源的那个程序或者代码,称为临界区。临界区即为一次仅允许一个进程使用的共享资源,多个进程必须互斥访问。
互斥量:采用互斥对象机制,只有拥有互斥对象的线程才有访问公共资源的权限。因为互斥对象只有一个,所以保证了临界区资源不会同时被多个线程访问。互斥不仅能够实现同一个应用程序之间的共享,还能实现不同程序之间的公共资源的共享。
信号量:允许多个线程在同一时候访问同一个资源,但需要限制在同一时候访问此资源的最大线程数目。pv操作,信号量S是一个整数,S大于等于0代表可供并发进程使用的资源实体数,S<0代表正在等待使用共享资源的进程数。
事件:通过通知操作的方式来保持线程的同步,还可以方便实现对多个线程的优先级比较的操作
进程通信l:指的是不同进程之间传播或交换信息。进程之间的用户空间是相互独立的,一般情况下是不能相互访问的,唯一的例外是共享内存。
进程间通信主要包括管道,消息队列,共享内存,信号量,套接字
死锁:指两个或者两个以上的进程(线程)在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,则无法推进下去
产生死锁的四个必要条件:
互斥条件: 一个资源每次只能被一个进程使用
请求和保持条件:一个进程(线程)因为请求资源受阻时,对已获得的资源保持不放
不剥夺条件:此进程艺的资源,在未使用完成之前,不能强行剥夺
循环等待条件:多个进程之间形成了一种头尾想接的循环等待资源关系
逆波兰表达式