9.7 临界区与临界资源
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.临界资源 2.临界区 二.习题 1.习题 总结 前言 临界区.临界资源的概念及相关习题 一.相关概念 总体呈现:为了保护共享资源,不让多个进程同时访问这个共享资源,即 ...
- 一文弄懂原子性、临界区、临界资源
原子性 原子性是指一个操作是不可中断的,要么全部执行成功要么全部执行失败.是一种独立不可分割的操作,不会被线程调度机制打断的操作:这种操作一旦开始,就一直运行到结束,中间不会有任何 context s ...
- Linux系统编程37:多线程之什么是临界区和临界资源以及如何使用mutex互斥锁
文章目录 (1)临界区,临界资源和原子性问题 (2)互斥量(锁) A:互斥锁 B:锁的作用 C:互斥锁实现的原理 (3)可重入函数和线程安全 A:可重入函数和线程安全 B:常见的线程安全和不安全情况 ...
- 面试题:操作系统临界区,临界资源,信号量
1.临界资源: 一个时间段内只允许一个进程访问的资源称为临界资源 2.临界区: 访问临界资源的代码称为临界区 3.如何实现进程互斥: 空闲让进:当没有进程处于临界区时,可以允许一个请求进入临界区的进程 ...
- OS_process_sync_producercomsumer进程同步/互斥/信号量管程:临界资源/临界区:生产者和消费者问题(缓冲池(缓冲区)问题)
文章目录 OS_process_sync_producer&comsumer reference 临界资源 (Critical Resouce) 代码的划分 临界区(critical sect ...
- 计算机系统中临界资源与临界区,2020年中国地质大学(武汉)操作系统原理
中国地质大学研究生院 硕士研究生入学考试<操作系统原理>考试大纲 一.操作系统概述 考试内容: 操作系统的基本概念.操作系统的发展过程.操作系统在计算机系统中的地位.操作系统的组成.操作系 ...
- 进程在操作系统内核程序临界区不能进行调度与切换,在普通临界区能够调度与切换?什么是临界资源?什么是临界区
要弄清楚这个问题,首先要了解什么是临界资源和临界区. 临界资源 一个时间段内置允许一个进程使用的资源.各进程需要互斥的访问临界资源 临界区 访问临界资源的那段代码 那么为什么进程在操作系统内核程序临界 ...
- 临界资源和临界区的区别
临界资源和临界区的区别 1.临界资源是一种系统资源,需要不同进程互斥访问,而临界区则是每个进程中访问临界资源的一段代码,是属于对应进程的,临界区前后需要设置进入区和退出区以进行检查和恢复.临界区和临界 ...
- 操作系统:临界资源与临界区的区别
1.不论是硬件临界资源,还是软件临界资源,多个进程必须互斥地对它进行访问.每个进程中访问临界资源的那段代码称为临界区(CriticalSection). 每个进程中访问临界资源的那段程序称为临界区(C ...
最新文章
- C语言博客作业--函数
- mysql差异备份数据库get shell_shell进行完整和增量备份mysql数据库
- 组件端Apollo配置放到NAS中
- 多线程 NSThread 的使用
- Linux命令:more
- 家庭上网用路由器和ADSL的连接
- 在线教育:最常见的直播课程有哪些?
- linux文件l是什么意思,linux 中 我看到lrwxrwxrwx 那个l是什么意思?
- Oracle脏读处理方式
- 深入理解MATLAB中contour函数
- AHRS和IMU的区别
- Java实验四:类和对象;类的继承和派生;多态性; 接口;构造器应用
- java程序设计实用教程_清华大学出版社-图书详情-《Java程序设计实用教程》
- Bug随手记----关于java.lang.IllegalStateException: The following classes could not be excluded because the
- ovs-docker实现容器网络vlan隔离
- SourceTree使用配置
- Java游戏开发框架LGame-0 2 8版发布(含JavaSE及Android版,已有文档)
- 恶意url_预测URL的恶意
- 苹果教你如何保持iPhone电池健康、延长电池寿命
- 题—送外卖2(最短路径dfs)