9.7 临界区与临界资源

不可重入函数应用场合

多任务环境
在执行过程中可能会被中断、任务切换打断

临界资源

一次只允许一个进程使用的共享资源
互斥访问,同一时刻只允许一个进程访问
举例:打印机、全局变量、静态变量、缓冲区

临界区

访问临界资源的代码段
临界区访问方式:互斥访问
同时刻只允许一个进程访问

临界区的实现

操作原语

EnterCriticalSection()
LeaveCriticalSection()

实现方式

互斥访问:信号量、互斥量、自旋锁
关中断

uC/OS 临界区实现

#if OS_CRITICAL_METHOD == 1
#define OS_ENTER_CRITICAL() __asm__("cli") /* Disable interrupts */
#define OS_EXIT_CRITICAL() __asm__("sti") /* Enable interrupts */
#endif
#if OS_CRITICAL_METHOD == 2
#define OS_ENTER_CRITICAL() __asm__("pushf cli") /* Disable interrupts */
#define OS_EXIT_CRITICAL() __asm__("popf") /* Enable interrupts */
#endif
#if OS_CRITICAL_METHOD == 3
#define OS_ENTER_CRITICAL() (cpu_sr = OSCPUSaveSR()) /*Disable interrupts*/
#define OS_EXIT_CRITICAL() (OSCPURestoreSR(cpu_sr)) /*Enable interrupts*/
#endif

Linux/windows中的临界区

实现方式

加锁:pthread_mutex_lock
解锁:pthread_mutex_unlock

//Linux
#ifdef _LINUX
pthread_mutex_lock(&mutex_lock);
//访问临界资源
pthread_mutex_unlock(&mutex_lock);
#endi
//windows
#ifdef _WIN32
EnterCriticalSection(&mutex_lock);
//访问临界资源
LeaveCriticalSection(&mutex_lock);
#endif

9.7 临界区与临界资源相关推荐

  1. 操作系统:临界区、临界资源的概念及相关习题

    文章目录 前言 一.相关概念 1.临界资源 2.临界区 二.习题 1.习题 总结 前言 临界区.临界资源的概念及相关习题 一.相关概念 总体呈现:为了保护共享资源,不让多个进程同时访问这个共享资源,即 ...

  2. 一文弄懂原子性、临界区、临界资源

    原子性 原子性是指一个操作是不可中断的,要么全部执行成功要么全部执行失败.是一种独立不可分割的操作,不会被线程调度机制打断的操作:这种操作一旦开始,就一直运行到结束,中间不会有任何 context s ...

  3. Linux系统编程37:多线程之什么是临界区和临界资源以及如何使用mutex互斥锁

    文章目录 (1)临界区,临界资源和原子性问题 (2)互斥量(锁) A:互斥锁 B:锁的作用 C:互斥锁实现的原理 (3)可重入函数和线程安全 A:可重入函数和线程安全 B:常见的线程安全和不安全情况 ...

  4. 面试题:操作系统临界区,临界资源,信号量

    1.临界资源: 一个时间段内只允许一个进程访问的资源称为临界资源 2.临界区: 访问临界资源的代码称为临界区 3.如何实现进程互斥: 空闲让进:当没有进程处于临界区时,可以允许一个请求进入临界区的进程 ...

  5. OS_process_sync_producercomsumer进程同步/互斥/信号量管程:临界资源/临界区:生产者和消费者问题(缓冲池(缓冲区)问题)

    文章目录 OS_process_sync_producer&comsumer reference 临界资源 (Critical Resouce) 代码的划分 临界区(critical sect ...

  6. 计算机系统中临界资源与临界区,2020年中国地质大学(武汉)操作系统原理

    中国地质大学研究生院 硕士研究生入学考试<操作系统原理>考试大纲 一.操作系统概述 考试内容: 操作系统的基本概念.操作系统的发展过程.操作系统在计算机系统中的地位.操作系统的组成.操作系 ...

  7. 进程在操作系统内核程序临界区不能进行调度与切换,在普通临界区能够调度与切换?什么是临界资源?什么是临界区

    要弄清楚这个问题,首先要了解什么是临界资源和临界区. 临界资源 一个时间段内置允许一个进程使用的资源.各进程需要互斥的访问临界资源 临界区 访问临界资源的那段代码 那么为什么进程在操作系统内核程序临界 ...

  8. 临界资源和临界区的区别

    临界资源和临界区的区别 1.临界资源是一种系统资源,需要不同进程互斥访问,而临界区则是每个进程中访问临界资源的一段代码,是属于对应进程的,临界区前后需要设置进入区和退出区以进行检查和恢复.临界区和临界 ...

  9. 操作系统:临界资源与临界区的区别

    1.不论是硬件临界资源,还是软件临界资源,多个进程必须互斥地对它进行访问.每个进程中访问临界资源的那段代码称为临界区(CriticalSection). 每个进程中访问临界资源的那段程序称为临界区(C ...

最新文章

  1. C语言博客作业--函数
  2. mysql差异备份数据库get shell_shell进行完整和增量备份mysql数据库
  3. 组件端Apollo配置放到NAS中
  4. 多线程 NSThread 的使用
  5. Linux命令:more
  6. 家庭上网用路由器和ADSL的连接
  7. 在线教育:最常见的直播课程有哪些?
  8. linux文件l是什么意思,linux 中 我看到lrwxrwxrwx 那个l是什么意思?
  9. Oracle脏读处理方式
  10. 深入理解MATLAB中contour函数
  11. AHRS和IMU的区别
  12. Java实验四:类和对象;类的继承和派生;多态性; 接口;构造器应用
  13. java程序设计实用教程_清华大学出版社-图书详情-《Java程序设计实用教程》
  14. Bug随手记----关于java.lang.IllegalStateException: The following classes could not be excluded because the
  15. ovs-docker实现容器网络vlan隔离
  16. SourceTree使用配置
  17. Java游戏开发框架LGame-0 2 8版发布(含JavaSE及Android版,已有文档)
  18. 恶意url_预测URL的恶意
  19. 苹果教你如何保持iPhone电池健康、延长电池寿命
  20. 题—送外卖2(最短路径dfs)

热门文章

  1. XShell和Xftp自动联动
  2. 37、VS2019创建QT基础工程
  3. css 对话框 水平居中,css 水平居中的几种实现方式
  4. Spring Data Jpa And 和 Or 组合使用的简单方式
  5. 3X3c语言子函数行列式,3x3矩阵行列式函数
  6. windows 网络
  7. [idea] idea没有错误提示的解决方法(一直处于错误分析中)
  8. 能链科技深耕苏州,受邀参加中国金融科技产业峰会
  9. 量化对冲投资策略到底在哪?
  10. 通过淘宝接口用ip获取位置信息