《听windowsxp讲故事(操作系统课程)》由会员分享,可在线阅读,更多相关《听windowsxp讲故事(操作系统课程)(5页珍藏版)》请在金锄头文库上搜索。
1、听 windowsXP 讲故事(2010-06-27 08:56:25)转载标签: 杂谈谁?您叫我呢?我是谁?对,您说对了。我就是那个叫“windowsXP”的家伙,自从老妈生了一个叫 vista 的小妹妹,我就被赶到了一个这个鸟不拉屎的地方做了饭店经理。不过,比起的我的哥哥DOS 和 windows98,我觉得自己比较幸运了。他们这会不知被扔在哪个犄角旮旯里,躲在布满灰尘的光盘上哭啼。但是并不是所有的父母都是那么喜新厌旧,像是隔壁 NUIX 大叔一家,就过的其乐融融,他们兄弟姐妹生活在一起其乐融融。FreeBSD、OpenBSD 和 NetBSD,以及漂亮的 Solaris MM。这几年就连
2、 UNIX 大叔的养子 Linux 也混的不错,和富婆 Google 生了一个叫 Android 的宝宝,和我的小外甥 windows mobile 在幼儿园打得不可开交。好了,既然您想听,我就给你讲讲我们操作系统那点事。一、来盘“宫保鸡丁”(操作系统的虚拟化概念) 操作系统和饭店管理的模型是非常相似的。核心就是虚拟化的概念,当我们需要登录互联网访问网页时,不管 MAC 还是PC 上,不管他 CUP 多快,内存多大,只需打开浏览器,出入网址就行了。根本不需要关心 CUP 怎么处理,内存怎么分配,网络如何连接。同样的“ 虚拟化”也出现在饭店中。当一个脂肪过多的胖子走进饭店喊到: “来盘宫保鸡丁”
3、的时候。他根本不必知道母鸡从哪里来,厨子会先放盐,还是先放醋。饭店和操作系统两者的目的是一致的:为客户提供一个统一、简化的操作模式,屏蔽内部复杂的实现方式差异。凡 是虚拟化的模型都会遇见一个问题,访问的未知性,尽管操作系统近乎“全知全能”的,但是永远也没法知道下一刻用户到底做什么,需要用到什么样的资源。同样 对于饭店也一样,没有办法预知下一刻会来多少客户,他们需要什么样的服务,所以虚拟化模型中没有所谓的最优算法,而是转而考虑一些比较中庸、均衡的策略。二、大厨的杯具(操作系统中的 CPU 调度算法)CPU 是计算机系统中最核心的部件,当然也是最贵的部件之一,CPU 调度的目的是让 CUP 保持最
4、大的吞吐率。就像饭店里面大厨师,他们是整个饭店的核心,经理们调动一切资源让他们忙起来。一个厨师很闲的饭店,生意一定好不到哪里。一个CUP 吞吐率很低的操作系统,肯定不是一个优秀的设计。 因此,CPU“杯具”命运基本上是可以确定的,他们是天生的劳动模范以及被剥削的对象。在计算机系统的早期(比如 80286),只有一个 CPU 的,就像学校边上的农家小店。一个厨师(单指令流系统),只卖陕西著名的小吃“油泼面”和“擀面皮(一种制作简易的凉面的)”,当有很多客户来吃的时候,他们就按照客户到来的顺序为客户提供服务,在操作系统中把这种方式叫做( FCFS, First Come First Serve)
5、当然这样可以保证客户间的公平。小店的生意很好,慢慢的,来的人多了起来,特别是爱吃擀面皮的女生。他们抱怨一小份擀面片却要等待那么多的时间。为了照顾这些“好吃”的女生,老板规定:厨师必须及时响应那些很快能搞定的顾客。并把这个策略称为( SJF, Shortest Job First) , 就 这 样 , 爱 吃 凉 面 的 女 生 越 来 越 多 , 但 是 吃 面的 人 却 因 为 等 待 时 间 过 长 而 越 来 越 少 。 当 然 , 这 个 是 难 不 倒聪 明 的 老 板 的 。 他 在 小 店 里 面 设 立 了 专 门 的 凉 面 专 柜 , 专 门响 应 那 些 爱 吃 擀 面
6、皮 的 女 生 。 于 是 计 算 机 系 统 前 进 到 了80386 模 式 , 除 了 主 CPU 之 外 , 增 加 的 一 个 叫 协 处 理 器 的 东东 , 专 门 处 理 数 学 运 算 。客 户 满 意 当 然 赚 钱 多 多 , 但 是 一 个 厨 师 忙 不 过 来 , 于 是 老板 就 另 外 增 加 了 一 个 厨 师 ( 多 指 令 流 系 统 , 奔 腾 双 核 处 理 器诞 生 了 ) 于 是 做 饭 的 效 率 被 大 大 的 提 高 了 。 但 是 两 个 厨 师间 的 分 工 成 了 新 的 问 题 。 老 板 专 门 设 计 了 一 套 策 略 才 让
7、他 们既 不 相 互 为 了 使 用 同 一 部 勺 子 发 生 冲 突 , 也 要 保 证 他 们 之 间的 工 作 量 大 概 均 衡 , 这 套 方 案 叫 做 “多 指 令 流 并 行 系 统 ”。呵 呵 , 老 板 真 的 很 强 悍 。三 、 操 作 系 统 的 外 设 管 理强悍的老板总是不断进步,随着店面扩大。老板遇到的新的问题。需要招募专门的服务人员照顾客人提出的各种需求,以前这个事情是由厨师直接做的(直接 IO 指令方式),而现在要面对不断增加的客人和他们千奇百怪的要求,必须有人专门处理这件事情(设备适配器)当客户有需求的时候,就招呼服务员(操作系统中外设中断响应)当然,对
8、于那些只是需要一杯水的客户,服务员可以稍晚一点给他,但是有人因为饭菜的质量问题,必须立即响应,所以就有的中断的响应级别。在饭店服务繁忙的时候,老板干脆让服务员不响应那些不会引发重要后果的客户请求。这种情况被称为中断屏蔽位。但是不管如何繁忙,客户因为需要买单的中断请求时永远是最优先级,而且永远不能被屏蔽的。四、Cache memory 的产生搞定了客户需求之后,老板有发现了厨房的效率问题,两个大厨成天忙于需要自己洗菜、切菜等低价值的劳动,没有发挥出应有的水平,为了把好钢用在刀刃上,老板有雇佣了几个学徒,专门处理洗菜、准备物料的事情,这样大厨就能专心的完成最重要的部分了。操作系统中也有类似的概念。
9、各级的 Cache memory 就是预先的需要加工的数据放好。提高 CPU 的使用效率。管理学上有句名言:让最重要的人干最有价值的事情,我想,不管在操作系统设计还是饭店管理中都能体现这句话的思想。五、凉菜与甜点(线程池策略)通过一段时间的观察,老板发现虽然每个客户 点的菜大相径庭,但是在对于凉菜和甜点的数量每天基本上确定,为了缩短上菜时间,老板组织大家在非高峰期制作一批凉菜与甜点,当用户需要时,就能以最快的 素缎响应,这样的情况在操作系统中也很常见,对一些简单、重复性高的业务场景(如 WWW 服务)。可以使用建立线程池的方式。极大的提高访问速度。写在最后我想。我们学习操作系统的目的是学习其设计思想。其优秀的设计思想不能能帮助我们在今后的系统设计中拓展思路,更重要的是我们能够对我们在日常事物处理中提供指导。