00. 目录

文章目录

  • 00. 目录
  • 01. 概述
  • 02. 互斥的概念
  • 03. 同步的概念
  • 04. 总结
  • 05. 附录

01. 概述

现代操作系统基本都是多任务操作系统,即同时有大量可调度实体在运行。在多任务操作系统中,同时运行的多个任务可能:

  • 都需要访问/使用同一种资源
  • 多个任务之间有依赖关系,某个任务的运行依赖于另一个任务

这两种情形是多任务编程中遇到的最基本的问题,也是多任务编程中的核心问题,同步和互斥就是用于解决这两个问题的。

02. 互斥的概念

互斥:是指散步在不同任务之间的若干程序片断,当某个任务运行其中一个程序片段时,其它任务就不能运行它们之中的任一程序片段,只能等到该任务运行完这个程序片段后才可以运行。最基本的场景就是:一个公共资源同一时刻只能被一个进程或线程使用,多个进程或线程不能同时使用公共资源。

03. 同步的概念

同步:是指散步在不同任务之间的若干程序片断,它们的运行必须严格按照规定的某种先后次序来运行,这种先后次序依赖于要完成的特定的任务。最基本的场景就是:两个或两个以上的进程或线程在运行过程中协同步调,按预定的先后次序运行。比如 A 任务的运行依赖于 B 任务产生的数据。

04. 总结

总之,同步是一种更为复杂的互斥,而互斥是一种特殊的同步。也就是说互斥是两个任务之间不可以同时运行,他们会相互排斥,必须等待一个线程运行完毕,另一个才能运行,而同步也是不能同时运行,但他是必须要按照某种次序来运行相应的线程(也是一种互斥)!因此互斥具有唯一性和排它性,但互斥并不限制任务的运行顺序,即任务是无序的,而同步的任务之间则有顺序关系。

05. 附录

5.1 参考: 同步和互斥

【Linux系统编程】同步和互斥的概念相关推荐

  1. linux多线程编程——同步与互斥

    一. 为什么要用多线程技术? 1.避免阻塞,大家知道,单个进程只有一个主线程,当主线程阻塞的时候,整个进程也就阻塞了,无法再去做其它的一些功能了. 2.避免CPU空转,应用程序经常会涉及到RPC,数据 ...

  2. 嵌入式Linux系统编程学习之十三信号概念

      信号是进程在运行过程中,由自身产生或由进程外部发过来的消息(事件),是硬件中断的软件模拟(软中断),它是 UNIX 进程通信最古老的方法.信号可以直接进行用户空间进程和内核进程之间的交互,内核进程 ...

  3. Linux系统编程【文件IO、进程、进程间通信、信号、线程、互斥】

    linux系统编程 个人通过学习,手打了一份48000字的Linux系统编程的笔记,包含了[文件IO.进程.进程间通信.信号.多线程.互斥]等知识点,并给出了大量的代码案例对每个重要的知识点进行了代码 ...

  4. Linux系统编程(九)线程同步

    Linux系统编程(九)线程同步 一.什么是线程同步? 二.互斥量 三.条件变量 pthread_cond_wait函数 pthread_cond_signal函数 生产者和消费者模型 一.什么是线程 ...

  5. Linux 系统编程 -进程概念篇

    Linux系统编程-进程篇 冯诺依曼体系结构 冯诺依曼的两个重要思想 当代计算机的三级缓存 操作系统 操作系统的概念 操作系统的组成 操作系统作用 Linux下的操作系统体系 进程 进程概念 进程特性 ...

  6. linux 可定义信号数,Linux系统编程(20)——信号基本概念

    信号及信号来源 信号是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的.信号是异步的,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知 ...

  7. 【Linux】一步一步学Linux系统编程教程汇总(暂时暂停更新......)

    00. 目录 文章目录 00. 目录 01. 概述和标准 02. 文件操作 03. 进程概念 04. 进程间通信 05. 多线程 06. 信号 07. 同步与互斥 08. 高级IO 09. 其它 10 ...

  8. 【Linux | 系统编程】Linux系统编程(文件、进程线程、进程间通信)

    文章目录 Linux系统编程 文件IO open/close函数 read/write函数 文件描述符 阻塞.非阻塞 fcntl函数 lseek函数 传入传出参数 文件系统 文件存储 文件操作 sta ...

  9. Linux系统编程笔记

    文章目录 1.Linux系统编程 2.文件IO 2.1 文件描述符 2.2 open 2.3 perror 2.4 close 2.5 write 2.6 read 2.7 remove 2.8 系统 ...

  10. 一文带你Linux系统编程入门

    文件和文件系统 文件是linux系统中最重要的抽象,大多数情况下你可以把linux系统中的任何东西都理解为文件,很多的交互操作其实都是通过文件的读写来实现的. 文件描述符 在linux内核中,文件是用 ...

最新文章

  1. Spring MVC 返回json数据 报406错误 问题解决方案
  2. Python技巧-只用一行代码轻松实现图片文本识别
  3. SpringBoot高级-任务-异步任务
  4. Mysql Hunter
  5. imagej链接资源
  6. linux发布tomcat项目项目流程,linux下tomcat的配置及项目的部署流程
  7. 3-1机器学习中的分类与回归问题
  8. Node.js 初步学习总结
  9. 基于微信小程序的疫情防控平台设计与实现-计算机毕业设计源码+LW文档
  10. Markdown文件转pdf方法
  11. 瑞芯微Rockchips RK3368对比晶晨Amlogic S905
  12. 51单片机AD模数转换(SPI通信)
  13. python 字符串(二)
  14. 联想拯救者Legion Y7000P 2020款ubuntu20.04安装ros noetic与bloom-generate打包ros noetic为deb软件包
  15. Java加密体系结构(JCA)参考指南
  16. 小米手环4怎么使用_小米运动手环4使用说明
  17. 拥有一本CISP证书,我的工资会翻倍吗?
  18. 【时间函数】gettimeofday
  19. 最小二乘法的原理及python实现
  20. Android SurfaceView预览变形完美解决方法

热门文章

  1. 【Demo 0121】纯资源DLL中提取资源
  2. c语言 sdk,适用于 C 语言的 Azure IoT 设备 SDK
  3. 计算机信息安全与病毒6,信息安全与计算机病毒……毕业.docx
  4. 奇安信cdn配置教程_PicGo+jsDelivr+GitHub搭建免费cdn加速的图床
  5. python跟易语言的爬虫_新人Python,第一只爬虫,,我就只会re.findall,你咬我?
  6. 中英文切换_王者荣耀:模拟战奖励一览,新增中英文切换,李白第二套星元来袭...
  7. atoi() 与 itoa()函数用法
  8. webpack学习1-打包
  9. Sharepoint client model 中出现Cannot invoke HTTP DAV request. There is a pending query 的解决办法...
  10. Data Warehouse Hardware - DW硬件需求计算