进程关系:互斥、同步、资源
进程同步:
重点:信号量机制
信号量机制 : 整型信号量(PV操作[p(wait),v(signal)])、记录型信号量(阻塞和唤醒)、AND信号量(swait(p1,p2,...pn),ssignal(p1,p2,p3,...pn))、信号量集(S,T,D)<T:为下限;D:资源需求量>;
进程应用:
程序组成
信号量,初始化
p
{ 进入区
临界区
退出区}
分析进程题的步骤:(独家分享)
1.分析进程个数
2.活动(动词,主要是进程都在干什么)
3.进程关系:互斥、同步、资源
互斥:强调进程与进程之间互斥执行(通常会用到互斥变量mutex),但是对进程的先后顺序并没有严格要求;(值得强调的是共享变量也要互斥使用)
形式:在进入区处加wait(mutex);在退出区处加signal(mutex);
struct stemaphore s;
s.value=1;//注意初始化值为1
A{
进入区
wait(s);
临界区
signal(s);
退出区
}
B{
进入区
wait(s);//执行-1,判断是否小于0
临界区
signal(s);
退出区
}
同步:强调进程与进程之间互斥执行,但是对进程的先后顺序有严格要求,必须是A执行完后B才可以执行;
形式:先执行的进程临界区后面加signal(mutex),后执行临界区前加wait(mutex);
struct stemaphore s;
s.value=0;//注意初始化值为0
A{
进入区
临界区
signal(s);//执行+1,并判断是否小于等于0
退出区
}
B{
进入区
wait(s);//执行-1,判断是否小于0
临界区
退出区
}
资源:针对的是多个进程使用有限资源问题
经典进程的同步问题:生产者