【哈工大李治军操作系统听课笔记】L16 L17 进程同步与信号量

多个进程在操作系统中并发执行,这是操作系统的核心视图。但是多个进程在并发执行的时候并不是完全独立的,它们有时候需要互相依赖执行,操作系统需要提供一种机制来帮助进程实现这些依赖关系,这就是进程同步的问题。

1.信号量

信号量(semaphore)是操作系统用来解决并发中的互斥和同步问题的一种方法。信号量是一个整形变量,用来记录和进程同步有关的重要信息。其能够让进程阻塞睡眠在这个信号量上。需要同步的进程通过操作(加1或减1)信号量实现进程的阻塞与唤醒,即进程间的同步。
信号量的详细解释参考这里:
https://blog.csdn.net/weixin_43914272/article/details/108317212

在这里插入图片描述
2.临界区

由于信号量控制着进程的停与走。因此信号量的数值非常重要,只有信号量的数值对应的语义信息保持一致,才能正确地使用信号量来决定进程的同步(停与走)。而在多个进程并发执行的过程中,可能出现多个进程对信号量进行修改的情况。由于CPU调度顺序的不确定可能会导致信号量出现语义错误的问题。
在这里插入图片描述
在这里插入图片描述
因此,在多个进程共同修改信号量时就要实现对信号量进行保护,不能随意求改。每个进程对信号量的修改应该是要么一点不做,要么全部做完,中途不能打断。即对信号量的修改必须是一个原子操作。
所以需要将信号量这种共享资源用一层代码“包裹”起来,以达到保护信号量的作用。这就是临界区的概念。

临界区指的是一个访问共用资源的程序片段,而这些共用资源又无法同时被多个线程访问的特性。
当有线程进入临界区段时,其他线程或是进程必须等待,有一些同步的机制必须在临界区段的进入点与离开点实现,以确保这些共用资源是被互斥获得使用。
在这里插入图片描述
临界区本质上就是进程中的一段代码,这段代码和其他相关进程中的相关代码对应,一次最多允许一个进程进入,即互斥进入。之所以被成为临界区,是因为一旦进入了这段代码,操作系统的状态就发生了改变,现在就不能在进程之间随意切换了,而执行进程中的其他代码时是可以随意切换的。
在这里插入图片描述
4.临界区的软件和硬件实现
这里不再赘述,具体请参考《操作系统原理 实现与实践》P127~P134

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值