往往基础是最难的,在这一周(快考试啦 啦啦)的补充学习中发现自己以为的相对在扎实的操作系统知识还是存在短板,很多概念已经模糊了,所以在重新整理的时候遇到了一些定义性质的知识点,比如 操作系统是什么 进程和程序的关系 以及调度算法和锁 等等 还是想把这些问题重新梳理 但是 锁 和这些问题的解决方式是
以下都是考虑单处理器的前提下
在讲到计算机组成原理的时候 突然有一个问题 什么是操作系统 关于这个问题 维基百科上的标准答案是 操作系统(英语:operating system,缩写:OS)是管理计算机硬件与软件资源的计算机程序,同时也是计算机系统的内核与基石。这么说有一些晦涩。而且这么说还有一些概括不全,这里的解释更强调的是操作系统是一个管理者和基础服务提供者。这么说会有一种从属关系,毕竟这是”管理者“这个词自带的buff。更加通俗的平和的解释是 操作系统更加类似与 一个协调者(coordinator)和促进者(facilitator)。
作为一个协调者 首先 掌握了所有资源或者说管理了所有资源(这里管理虽然包含了协调等 但是感觉力度不够 不够体现这些能力的重要性)
其次 在分配资源时 处理资源利用的冲突 (这就是操作系统中的调度算法和各种处理机制类似与锁)
还有 就是阻止错误和不正常的操作 容错性 (首先是内核态保护,以及对使用者暴力操作的不确定性的,不能时不时就罢工吧 哈哈哈)
作为一个促进者 原话是 provides facilities that everyyone needs(当年一个大牛学长教我的 在我的笔记上 出自一国外课堂 抱歉不知道)翻译过来是 提供每一个用户所需要的
设施。有人理解为提供用户所需的各种资源 。我更偏向理解为 提供各种环境或者说接口,作为一个促进者提供的各种便利。
调用库函数 (简单的提供你要的环境或者接口还不够力度 这里通过调用库函数为用户提供便利)
可以使得 程序运行更快或者说更简单不容易出错
以上都是从操作系统的能力来考虑的 用四点来概括 内存管理 输入输出管理 cpu调用 通信(这里主要讲的是网络通信)。
解释操作系统是一个很微妙的东西 上面借鉴了很多人的想法 由于思路太多我也不知道借鉴了多少 写下操作系统定义的人那么多 肯定有之前的人总结过。反正每次我重新看之前看过的书 或者是记录 总是有新的感觉。在这里也仅仅作为一些小的思路展示给大家。
而 作为解释进程和程序的区别时 一个广为人知 也是非常经典的比喻 经典到我都不知道它到底出自何处 虽然我不知道为什么这么多人使用 可能是给枯燥的理解一点温馨的东西
某天早上有一手好手艺的计算机科学家正在为他的女儿烘制生日蛋糕。他有做生日蛋糕的食谱,厨房里有所需的原料:面粉、鸡蛋、糖等等。
这个句子就是做蛋糕 结果就是蛋糕 那么从计算机的角度来解释 蛋糕是输出 人是CPU 食谱是程序 原料是数据 那么进程是什么 进程是厨师阅读食谱,取原料,做出蛋糕这些事情。
中断实质可以看成转换控制权利
当解释完这里的时候 我开始知道为什么喜欢这个例子了 因为这个例子讲优先级和进程切换特别容易理解和有说服力 这个时候他女儿被蜜蜂蛰上来哭了(中断信号)这个时候正常的人当然是立马处理女儿的伤口(切换了进程 高优先级的进程),处理完之后再做蛋糕。从人的角度讲这些都符合逻辑,而我们是模拟计算机的做法 人可以立马放弃做蛋糕去处理女儿 回来后又 正常做蛋糕 ,计算机在这需要记录一个状态 即蛋糕做了了哪一步就像人一样 操作过了的步骤就不会重复操作了,在中断的时候计算机会保存现场状态并记录在PCB(进程控制块)中。在再次调用这个进程时就会读取当时的状态和参数。这就是一个合理的操作了
这个例子思想是:一个进程是某种类型的一个活动,它有程序、输入、输出、及状态。单个处理机被若干进程共享,它使用某种调度算法决定何时停止一个进程的工作,并转而为另一个进程提供服务。
至于锁 锁可不是一个小篇幅 考虑到它比较中重要 感觉还是要仔细复习一下它的要点 当然上面的内容也不可能充分介绍出操作系统出来,这里只有不断的补充了
操作系统————精髓与设计原理(第五版)好书哦
如果是刚刚接触操作系统的 又想不枯燥的快速人门 建议 操作系统之哲学原理.第二版
其实网易公开课里 有很多计算机专业基特别好的课 国外的课程更加注重相通 所以可以更好的理解 胡扯许多 总结得也没有章法 希望理解