操作系统相关
文章平均质量分 76
_子宽
这个作者很懒,什么都没留下…
展开
-
操作系统概念-内核同步-原子操作
在同一个操作系统中,不同的进程经常需要相互协同工作,协同的方法一般有两种,一是直接共享逻辑地址空间,二是通过文件或消息共享数据。如果共享逻辑地址空间,则在进程执行的时候有可能会发生多个进程同时访问同一个数据的冲突问题,特别是在多处理器的情况下。对于这类冲突,内核采用了一些方法进行进程同步,例如原子操作、自旋锁、信号量等方法。接下来的四篇(包括本文)将分别介绍原子操作、自旋锁、信号量和死锁的一些概念,同时以Linux4.8.1版本的内核代码(x86架构部分)为例进行分析。原创 2016-12-28 21:09:02 · 7998 阅读 · 0 评论 -
操作系统概念-内核同步-自旋锁
有了原子操作,就可以了制作控制临界区的锁机制了。自旋锁就是其中的一个代表。 自旋锁机制可以用门和锁的例子来比喻。进程执行到某个临界区,相当于要进入一栋房子,这是进程会检查屋内是否有人(进程),如果屋内没有人,则直接拿起钥匙进入并把门锁上(进入临界区);如果屋内有人(进程),则在门口等待(忙等待)屋内的进程出来再进去。可以看出,自旋锁最多只能被一个进程持有,如果有新的进程希望获取自旋锁,它将会一直忙等待直到前一个持有自旋锁的进程释放锁。原创 2017-01-06 15:47:44 · 932 阅读 · 0 评论 -
操作系统概念-内核同步-信号量
继续内核同步的话题。自旋锁是一种快速简单的锁实现,可以用于临界区很短的情况。但是由于等待锁的进程要不断检测锁的状态,会造成一定的CPU资源浪费。对于这个问题的解决方案就是信号量。信号量是一种睡眠锁,当一个进程试图获得正在使用的锁时,它不会像自旋锁那样原地等待,而是会被丢入一个等待队列,等到这个锁被释放时,等待队列会中的(第一个)进程会被唤醒,并获得该锁。 还是用前面门和锁的例子来说原创 2017-01-08 15:42:33 · 435 阅读 · 1 评论 -
中断的上半部分与下半部分
为了让内核能够快速响应硬件设备的消息,引入了中断机制。当硬件设备需要被处理(比如网卡收到了包),会发送一个异步的中断请求给处理器,然后处理器陷入中断上下文中,停止当前执行的程序,转而执行预先设定好的中断处理程序。完成中断处理程序之后给硬件设备一个信号再返回原先的工作继续。在这套机制中,中断处理程序的编写非常关键。一方面,它必须完成对硬件中断响应的处理,比如网卡中断,要把缓冲区里的内容复制到内存原创 2017-01-11 19:13:31 · 950 阅读 · 0 评论