1. 并发程序的基本概念

  • 程序顺序性

    • 内部顺序性:CPU严格按照顺序执行指令
    • 外部顺序性:程序员设计程序时往往用顺序设计的思想
  • 顺序程序特性
    • 程序执行的顺序性
    • 计算环境的封闭性: 程序执行时犹如独占资源
    • 计算结果的确定性
    • 计算过程的可再现性
  • 并发进程
    • 无关的并发进程:一组并发进程,在不同变量集上运行
    • 交往的并发进程:一组并发进程,共享某些变量,相互影响
  • 并发进程制约关系
    • 进程互斥:争夺某一个资源
    • 进程同步:共同完成某一个任务,协调先后顺序
    • 发生问题:
      • 与时间有关的错误:结果错误、永远等待
  • 临界区:
    • 临界资源:一次只能被一个进程使用的资源(互斥共享变量)
    • 临界区:是个程序段,是并发进程中与互斥共享变量相关的程序段
    • 相关的临界区:两个进程的临界区有相同的临界资源(必须互斥进入)
    • 问题
      • 多个并发进程访问临界资源存在制约关系
      • 如果两个进程同时处在相关的临界区,会发生与时间有关的错误
    • 临界区管理的要求
      • 一次至多允许一个进程停留在相关临界区
      • 一个进程不能无限制停留在临界区内
      • 一个进程不能无限制等待进入临界区内
    • 临界区嵌套使用

2. 并发程序控制和问题

  • 临界区管理实现:

    • 思路判断锁获取锁要作为原子操作,不然会死锁或时间错误
    • 实现
      • 原子指令:测试并建立锁指令、对换指令(忙式等待,效率不高)
      • 中断控制:进出临界区时开关中断,这样临界区执行时就不会被中断,自然实现了原子性
        • 这个时操作系统的原语,是操作系统解决这个问题的办法
        • 不建议用户程序使用,因为无法保证程序员设计出短小精悍的原语
      • PV操作:用信号量,“申请-等待队列-中断恢复”
    • 生产者消费者问题
  • 进程间通信
    • 信号量:低级通信方式
    • 信件:进程通信机制(直接通信、间接通信)
    • 基于流:多个进程共同使用一个缓冲区
    • RPC:远程过程调用
  • 死锁
    • 概念:两个进程分别等待对方占有的资源
    • 死锁的产生
      • 互斥:进程互斥地使用资源
      • 占有和等待:一个进程得不到资源,就等待且不释放已有资源
      • 不剥夺:进程不能从另一个进程抢走资源
      • 循环等待:每个进程都等待它前一个进程所持有的资源
    • 死锁的防止
      • 破坏上述四个条件之一即可
      • eg. 层次分配:资源分成多个层次,一个进程获得某个资源后只能获得比他层次更高的资源  
    • 死锁的避免:银行家算法
    • 死锁的检测
      • 算法:warshall闭包

【重学计算机】操作系统D6章:并发程序设计的更多相关文章

  1. 【重学计算机】操作系统D1章:计算机操作系统概述

    1. 计算机软硬件系统 冯诺伊曼结构 以运算单元为核心,控制流由指令流产生 程序和数据存储在主存中 主存是按地址访问,线性编址 指令由操作码和地址码组成 数据以二进制编码 其他:参考<重学计算机 ...

  2. 【重学计算机】操作系统D3章:存储管理

    1. 存储管理的基本概念 逻辑地址:用户地址,从零开始编号 一维逻辑地址:(地址) 二维逻辑地址:(段号: 段内地址) 主存储器的复用方式 按分区:主存划分为多个固定/可变分区,一个程序占一个分区 按 ...

  3. 重学js之JavaScript 面向对象的程序设计(创建对象)

    注意: 本文章为 <重学js之JavaScript高级程序设计>系列第五章[JavaScript引用类型]. 关于<重学js之JavaScript高级程序设计>是重新回顾js基 ...

  4. 【重学计算机】操作系统D4章:设备管理

    1. IO的控制方式 演进过程:轮询 --> 中断 --> DMA --> IO通道 经典布局:南北桥 PS:详见<计算机组成原理> 2. IO的实现 软件实现层次:硬件 ...

  5. 【重学计算机】操作系统D2章:处理器管理

    1. 指令与处理器模式 指令执行周期:取指.译码.执行 指令分类(根据权限) 特权指令:只能被操作系统内核使用(启动IO,置PC值) 非特权指令:所有程序都能使用 处理器模式: 共有四种:0内核模式, ...

  6. 【重学计算机】操作系统D5章:文件系统

    1. 文件系统 文件系统概述 文件的组织: 逻辑结构:流式.记录式 物理结构:顺序.连接.直接.索引 文件的存取:顺序.直接.索引 文件的控制:逻辑控制.物理控制 文件的使用:打开.关闭.读.写.控制 ...

  7. 【重学计算机】机组D6章:中央处理器

    1. CPU的组成与功能 2. 数据通路 概念:执行部件间传送信息的路径,分共享通路(总线)和专用通路 抽象模型:时钟驱动下,A --> 组合逻辑 --> B D触发器定时模型: 时钟触发 ...

  8. 【重学计算机】机组D4章:存储系统

    1. 存储系统层次结构 主存速度缓慢的原因:主存增速与CPU不同步,执行指令期间多次访问主存 主存容量不足的原因: 存在制约主存容量的技术因素:如由CPU.主板等相关技术指标规定了主存容量 应用对主存 ...

  9. 【重学计算机】计组D1章:计算机系统概论

    1.冯诺依曼计算机组成 主机(cpu+内存),外设(输入设备+输出设备+外存),总线(地址总线+数据总线+控制总线) 2.计算机层次结构 应用程序-高级语言-汇编语言-操作系统-指令集架构层-微代码层 ...

随机推荐

  1. PHP代码审计

    Preface 这篇文章的内容会不断的充实和丰富,前期会增加一些之前爆出漏洞的复现过程,来丰富自己实际代码审计经验,后期如果能挖掘出新的漏洞,便更好. 代码审计之SQL注入:BlueCMSv1.6 s ...

  2. Spring Boot实战笔记(九)-- Spring高级话题(组合注解与元注解)

    一.组合注解与元注解 从Spring 2开始,为了响应JDK 1.5推出的注解功能,Spring开始大量加入注解来替代xml配置.Spring的注解主要用来配置注入Bean,切面相关配置(@Trans ...

  3. File文件操作学习总结

    1.java.io.file用于表示文件(目录),也就是说程序员可以通过File类在程序中操作硬盘上的文件和目录, 2.File类只能用于表示文件(目录)的信息(名称和大小),不能对文件内容进行访问. ...

  4. springboot数据库连接池使用策略

    springboot官方文档介绍数据库连接池的使用策略如下: Production database connections can also be auto-configured using a p ...

  5. (转)JAVA HashSet 去除重复值原理

    Java中的set是一个不包含重复元素的集合,确切地说,是不包含e1.equals(e2)的元素对.Set中允许添加null.Set不能保证集合里元素的顺序. 在往set中添加元素时,如果指定元素不存 ...

  6. Sublime Text 3安装SFTP插件

    前言: 最近在学习网页设计,陆续接触到了HTML.CSS和JavaScript,写的代码越来越多了,也越来越感觉到将代码上传到服务器上的流程太繁琐了.一开始我是用虚拟主机提供的控制面板下载上传网页代码 ...

  7. Scrapy 1.4 文档 03 Scrapy 教程

    在本教程中,我们假设您已经安装了Scrapy.如果没有,请参阅安装指南. 我们将要抓取 quotes.toscrape.com,一个列出著名作家的名言(quote)的网站. 本教程将引导您完成以下任务 ...

  8. Thymeleaf 3.0 专题

    http://www.thymeleaf.org/doc/articles/layouts.html thymeleaf的初次使用(带参请求以及调用带参js方法) 之前对于前端框架接触较少,第一次接触 ...

  9. MySQL索引及查询优化总结 专题

    小结:db名与应用名相同,表名:业务名_此表的作用 ,表名表示内容,不体现数量,如果表示boolean概念,表名需要使用is_业务含义来表示,但POJO中不应该出现isXXX,因为不方便序列化,中间的 ...

  10. bootstrap模态框内容替换时会重新触发模态框?<a>标签到底有哪些特殊的特性呢?

    segmentfault提问 这个问题我将bootstrap导航栏的<a>去除就解决了,那么问题来了,<a>标签到底有哪些特殊的特性呢? 主要属性href 链接href 这是一 ...