临界资源

           临界资源是指每次仅允许一个进程访问的资源。
          属于临界资源的硬件有打印机、磁带机等,软件有消息缓冲队列、变量数组、缓冲区等。 诸进程间应采取互斥方式,实现对这种资源的共享。
          每个进程中访问临界资源的那段代码称为临界区。显然,若能保证诸进程互斥地进入自己的临界区,便可实现诸进程对临界资源的互斥访问。为此,每个进程在进入临界区之前,应先对欲访问的临界资源进行检查,看它是否正被访问。如果此刻该临界资源未被访问,进程便可进入临界区对该资源进行访问,并设置它正被访问的标志;如果此刻该临界资源正被某进程访问,则本进程不能进入临界区
         在操作系统中,有临界区的概念。临界区内放的一般是被1个以上的进程或线程(以下只说进程)共用的数据。
临界区内的数据一次只能同时被一个进程使用,当一个进程使用临界区内的数据时,其他需要使用临界区数据的进程进入等待状态。
         操作系统需要合理的分配临界区以达到多进程的同步和互斥关系,如果协调不好,就容易使系统处于不安全状态,甚至出现死锁现象。
FreeRTOS提供了多种方法来保护临界资源,其中最常用的是使用任务间通信机制中的二值信号量(Binary Semaphore)或互斥量(Mutex)。这两种机制都可以用来保护临界资源,防止多个任务同时访问临界资源导致数据不一致或错误。 使用二值信号量时,可以将信号量的初始值设置为1,表示临界资源未被占用。当一个任务需要访问临界资源时,首先获取信号量,如果信号量的值为1,则表示临界资源未被占用,该任务可以访问临界资源;如果信号量的值为0,则表示临界资源已被占用,该任务需要等待直到信号量的值变为1才能访问临界资源。当任务访问完临界资源后,需要释放信号量,将其值设置为1,表示临界资源已经被释放。 使用互斥量时,可以将互斥量的初始值设置为1,表示临界资源未被占用。当一个任务需要访问临界资源时,首先获取互斥量,如果互斥量的值为1,则表示临界资源未被占用,该任务可以访问临界资源;如果互斥量的值为0,则表示临界资源已被占用,该任务需要等待直到互斥量的值变为1才能访问临界资源。当任务访问完临界资源后,需要释放互斥量,将其值设置为1,表示临界资源已经被释放。 需要注意的是,使用二值信号量或互斥量保护临界资源时,需要保证所有访问该临界资源的任务都使用同一个信号量或互斥量对象进行保护,否则会出现数据不一致或错误的情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值