开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第16天,点击查看活动详情 这也是第21篇文章
前言
关注了我的jy可能会发现,我已经写过不少关于操作系统的文章了,而且关键词来来去去还都是那几个(没办法,操作系统的核心概念本来就这些么),那为什么还要有【复习随手记】系列呢?原因很简单,就是字面意思————我要开始复习了。
之前的笔记几乎都是参考《现代操作系统》这本书。个人认为,这是一本不可多得的经典好书,值得反复阅读,每一次读都有不同的收获。
初读时只是留意到了一些新奇的概念,关注点放在了名词解释,而对更深入的代码解释和原理机制阐述草草跳过;第二次再看时,对原来在书上圈圈点点的内容已经见怪不怪了,但又会突然留意到某些段落或关键句,觉得它们才是帮助理解一些机制的点睛之笔;同时,由于已经进行过一次系统的学习,看相关的代码和原理解释时也更得心应手,不会有那种陌生的劝退感。
但由于是随手记,所以前后文不一定有必要的关联。是个人看到哪里觉得重要就记下来作为巩固。
概念
什么是操作系统?有什么作用?
操作系统是一层在计算机硬件资源上的软件抽象,有资源管理调度和拓展两大作用,前者是指操作系统能有效管理系统的各个部分,后者的拓展指的是为用户提供比实际机器更便于运用的抽象,包括进程、地址空间、文件等。
什么是竞争条件
两个或多个进程读写某些 共享 数据,而结果取决于进程运行的精确时序。
临界区
是一个代码段,其对共享内存进行访问。
两者关系:使两个进程不同时处于临界区中可避免竞争条件。
并发进程高效协作的要素
- 任意两个进程不同时位于临界区
- 进程不会无限期等待进入临界区
- 在临界区外的进程不得阻塞其他进程
- 不对CPU的速度和数量作任何假设
实现互斥的方案
- 每个进程在刚进入临界区后立即屏蔽所有中断
- 缺点:若单个中断屏蔽后不再打开,会影响整个系统(导致瘫痪)
- 总结:中断屏蔽对用户进程不适用
- 锁
- 缺点:只要是时间上有先后,就有可能出现先后读取值并同时请求上锁
- 严格轮换法
- 缺点:在一个进程比另一个进程慢很多的情况下,轮流进入临界区不是个好办法
- Peterson算法
- 将轮询状态与请求状态绑定
- 硬件支持:TSL(test and lock) XCHG(原子性地互换两个值)
- 缺点:会有忙等待现象