zoukankan      html  css  js  c++  java
  • 待编辑

    进程同步:

    (1) 间接相互制约关系。同处于一个系统中的进程,通常都共享着某种系统资源,如共享CPU、共享I/O 设备等。所谓间接相互制约即源于这种资源共享,例如,有两个进程A和B,如果在A 进程提出打印请求时,系统已将惟一的一台打印机分配给了进程B,则此时进程A只能阻塞;一旦进程B将打印机释放,则A进程才能由阻塞改为就绪状态。

    (2) 直接相互制约关系。这种制约主要源于进程间的合作。例如,有一输入进程A通过单缓冲向进程B 提供数据。当该缓冲空时,计算进程因不能获得所需数据而阻塞,而当进程A把数据输入缓冲区后,便将进程B唤醒;反之,当缓冲区已满时,进程A因不能再向缓冲区投放数据而阻塞,当进程B将缓冲区数据取走后便可唤醒A。

    临界资源:

    诸进程间需要互斥方式对其进行共享的资源,如打印机、磁带机等。

    临界区:每个进程中访问临界资源的那段代码成为临界区。

    同步机制应遵循的规则:空闲让进、忙则等待、有限等待和让权等待(当进程不能进入自己的临界区时,应立即释放处理机,以免进程陷入“忙等”状态。

    整型信号量:用于表示资源数目的整形量S,它与一般整型量不同,除初始化外,仅能通过PV操作访问。


    PV操作:

    P(S):wait(S)

    每次wait操作,意味着进程请求一个单位的该类资源,使系统可供分配的该类资源数减少一个。
    ① 将信号量S的值减1,即S.value:=S.value-1;
    ② 当S.value<0时,表示该类资源分配完毕,进程调用block原语,进行自我阻塞,放弃处理机,并插入到信号量链表中。

    V(S):signal(S)

    每次signal操作,表示执行进程释放一个单位资源,使系统中可供分配的该类资源数增加一个
    ① 将信号量S的值加1,即S.value:=S.value+1;
    ② 如果S.value<=0,表示在该信号量链表中,仍有等待该资源的进程被阻塞,故还应调用wakeup原语,将链表中的第一个等待进程唤醒

  • 相关阅读:
    HDU4812 D Tree(树的点分治)
    BZOJ1834 [ZJOI2010]network 网络扩容(最小费用最大流)
    HDU4862 Jump(放大边权的费用流)
    SCU3185 Black and white(二分图最大点权独立集)
    HDU3729 I'm Telling the Truth(字典序最大的最大流)
    HDU3586 Information Disturbing(树形DP)
    HDU3657 Game(最小割)
    POJ3162 Walking Race(树形DP+尺取法+单调队列)
    SCU3312 Stockholm Knights(最大流)
    Codeforces 161D Distance in Tree(树的点分治)
  • 原文地址:https://www.cnblogs.com/feichangnice/p/5933892.html
Copyright © 2011-2022 走看看