zoukankan      html  css  js  c++  java
  • 进程同步机制

    临界区

      虽然多个进程可以共享系统资源,但是其中许多资源一次只能被一个进程使用,这种资源称为临界资源。将每一个进程访问临界资源的那段代码称作临界区,为了保证临界资源正常使用,可以把临界资源访问分为四个部分:

    1. 进入区   进入区检查当前代码是否可以进入临界区,如果可以进入临界区,则应该应该设置正在访问临界区的标志,以阻止其它进程同时进入临界区。
    2. 临界区   指进程访问临界资源的那段代码。
    3. 退出区   将正在访问临界区的标志清除。
    4. 剩余区   代码中的其余部分。

    为避免两个进程同时进入临界区,同步机制应该遵寻以下准则:

    • 空闲让进   临界区空闲时,可以允许一个请求进入临界区的进程立即进入临界区
    • 忙则等待   当已有`进程进入临界区时,其它试图进入临界区的进程必须等待
    • 有限等待   对请求访问的进程,应该保证能在有限时间内进入临界区
    • 让权等待   当进程不能进入临界区时,应立即释放处理器,防止进程忙等待。

    区分同步和互斥: 同步称作直接制约关系,它是指为了完成某种任务而建立的2个或者多个进程,这些进程因为要在某些位置上协调工作次序而等待、传递消息所产生的制约关系。例如:写进程A通过单缓冲区向读进程B提供数据。当缓冲区为空时,进程B因为不能获得数据而阻塞,一旦进程B将数据写入缓冲区,进程B被唤醒,反之,当缓冲区满时,进程A被阻塞,仅当B取走缓冲区数据时,才唤醒A。 互斥称作间接制约关系,它指当一个进程进入临界区时空,另一个进程必须等待,当它退出临界区时,另一个进程才允许访问临界区。例如有一台打印设备,有两个进程A和B,如果A需要打印时,系统已经将打印机分配给B,则进程A必须阻塞,一段进程B将打印机释放,系统便唤醒进程A,并将其阻塞状态变为就绪状态。

    未完,待续....

  • 相关阅读:
    如何在IIS添加MIME扩展类型
    如何在ASP.NET的web.config配置文件中添加MIME类型
    Entity Framework 数据库先行、模型先行、代码先行
    Entity Framework 代码先行之约定配置
    netcore3.0 IOptions 选项(一)
    netcore3.0 IFileProvider 文件系统
    netcore3.0 IServiceCollection 依赖注入系统(三)
    netcore3.0 IServiceCollection 依赖注入系统(二)
    netcore3.0 IServiceCollection 依赖注入系统(一)
    netcore3.0 IConfiguration配置源码解析(四)
  • 原文地址:https://www.cnblogs.com/td15980891505/p/7464199.html
Copyright © 2011-2022 走看看