许式伟的架构课
许式伟
七牛云CEO
立即订阅
20092 人已学习
课程目录
已更新 72 讲 / 共 77 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 怎样成长为优秀的软件架构师?
免费
基础平台篇 (21讲)
01 | 架构设计的宏观视角
02 | 大厦基石:无生有,有生万物
03 | 汇编:编程语言的诞生
04 | 编程语言的进化
05 | 思考题解读:如何实现可自我迭代的计算机?
06 | 操作系统进场
07 | 软件运行机制及内存管理
08 | 操作系统内核与编程接口
09 | 外存管理与文件系统
10 | 输入和输出设备:交互的演进
11 | 多任务:进程、线程与协程
12 | 进程内协同:同步、互斥与通讯
13 | 进程间的同步互斥、资源共享与通讯
14 | IP 网络:连接世界的桥梁
15 | 可编程的互联网世界
16 | 安全管理:数字世界的守护
17 | 架构:需求分析 (上)
18 | 架构:需求分析 (下) · 实战案例
19 | 基础平台篇:回顾与总结
加餐 | 我看Facebook发币(上):区块链、比特币与Libra币
加餐 | 我看Facebook发币(下):深入浅出理解 Libra 币
桌面开发篇 (16讲)
20 | 桌面开发的宏观视角
21 | 图形界面程序的框架
22 | 桌面程序的架构建议
23 | Web开发:浏览器、小程序与PWA
24 | 跨平台与 Web 开发的建议
25 | 桌面开发的未来
26 | 实战(一):怎么设计一个“画图”程序?
27 | 实战(二):怎么设计一个“画图”程序?
28 | 实战(三):怎么设计一个“画图”程序?
29 | 实战(四):怎么设计一个“画图”程序?
30 | 实战(五):怎么设计一个“画图”程序?
31 | 辅助界面元素的架构设计
课外阅读 | 从《孙子兵法》看底层的自然法则
加餐 | 想当架构师,我需要成为“全才”吗?
32 | 架构:系统的概要设计
33 | 桌面开发篇:回顾与总结
服务端开发篇 (14讲)
34 | 服务端开发的宏观视角
35 | 流量调度与负载均衡
36 | 业务状态与存储中间件
37 | 键值存储与数据库
38 | 文件系统与对象存储
39 | 存储与缓存
40 | 服务端的业务架构建议
41 | 实战(一):“画图”程序后端实战
42 | 实战(二):“画图”程序后端实战
43 | 实战(三):“画图”程序后端实战
44 | 实战(四):“画图”程序后端实战
45 | 架构:怎么做详细设计?
46 | 服务端开发篇:回顾与总结
加餐 | 如何做HTTP服务的测试?
服务治理篇 (11讲)
47 | 服务治理的宏观视角
48 | 事务与工程:什么是工程师思维?
49 | 发布、升级与版本管理
50 | 日志、监控与报警
加餐 | 怎么保障发布的效率与质量?
51 | 故障域与故障预案
52 | 故障排查与根因分析
53 | 过载保护与容量规划
54 | 业务的可支持性与持续运营
55 | 云计算、容器革命与服务端的未来
56 | 服务治理篇:回顾与总结
架构思维篇 (9讲)
57 | 心性:架构师的修炼之道
用户故事 | 站在更高的视角看架构
58 | 如何判断架构设计的优劣?
59 | 少谈点框架,多谈点业务
60 | 架构分解:边界,不断重新审视边界
加餐 | 实战:“画图程序” 的整体架构
61 | 全局性功能的架构设计
62 | 重新认识开闭原则 (OCP)
63 | 接口设计的准则
许式伟的架构课
登录|注册

06 | 操作系统进场

许式伟 2019-05-03
你好,我是七牛云许式伟。
在编程语言出现后,软件生产效率得到了大幅度的提升。随着越来越多软件的出现,自然而然就诞生了多个软件如何共处,也就是软件治理的需求。比如下面的这些需求场景。
多个软件如何同时运行(多任务的需求)?
多个软件如何共同使用计算机上的存储空间(内存管理、文件系统的需求)?
多个软件如何共同使用同一个外部设备(设备管理的需求)?
多个软件如何相互通讯,如何进行数据交换(进程间通讯、共享内存的需求)?
病毒、恶意软件如何治理(安全管理的需求)?
如果没有一个中间的协调方,软件与软件之间并不知道彼此的存在,你不难想象出,这种没有统一规则约束下的场面,会有多么凌乱。
于是,操作系统就出现了。对于软件而言,它像一个大法官,制定规则并据此约束大家的行为。

操作系统的启动过程

操作系统是怎么获得执行权的?
这是计算机主板 ROM 上的启动程序(BIOS)交给它的。
计算机加电启动后,中央处理器(CPU)会从一个固定的存储地址加载指令序列执行。通常,这个固定的存储地址指向计算机主板的 ROM 上的一段启动程序(BIOS)。这段启动程序通常包含以下这些内容。
存储设备的驱动程序,用以识别常规的外置存储设备,比如硬盘、光驱、U 盘。
基础外部设备的驱动程序,比如键盘、鼠标、显示器。
设备和启动配置的基础管理能力。
支持执行外置存储中引导区的机器代码程序。
跳转到外置存储引导区的固定地址,把执行权交给该地址上的引导程序。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《许式伟的架构课》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(76)

  • 郭小菜
    老师,请收下我的膝盖
    2019-05-03
    55
  • Jiayp
    这才是从需求出发,以前学操作系统,上来就讲有哪些操作系统,操作系统的实现,从来没有考虑过,操作系统到底要实现哪些需求
    2019-05-03
    42
  • coder
    许老师,您好,虽然自己是科班出身,但是对于下面这个问题困扰了我很久:
    1. 一般来说程序的运行需要OS的支撑,那么在BIOS之前,选择运行哪个操作系统那一段程序是怎么运行的?再问一句,编译器可以独立于操作系统运行吗?
    2. 可以用C语言去实现很多其他的语言,比如说python, go等,那在C语言之前,这么一直追寻下去,会衍生成鸡生蛋的问题。但是编程语言又具有自举的功能,那自举是怎么实现的?e.g. 目前版本的go核心实现中,很多是用go本身实现的,它是怎么做到自己编译自己的?

    作者回复: 1、程序运行不需要操作系统支持,有bios支持就可以(把控制权交给它)。编译器可以独立于操作系统存在,而且它应该先于操作系统产生。
    2、语言诞生的过程是这样的:机器码 =》汇编 =〉C =》C写的汇编,C写的C(自举)。当然这个过程不需要每次新架构的cpu或操作系统都重新来一遍,因为人是聪明的,发明了交叉编译这样的东西,C =〉新平台的C,这样就一下子完成整个语言的进化了。

    2019-05-05
    37
  • 公号-代码荣耀
    1 操作系统、浏览器和互联网搜索引擎的关系是什么?
    随着技术的更迭,Web应用程序已经成为主流的软件形态,而浏览器是运行web应用程序的容器(传统的二进制应用程序也已被支持);因此,浏览器已然成为PC时代的访问入口,从分层的技术架构上来看,操作系统已成为浏览器的底层,而浏览器已成为操作系统的入口,用户甚至无法感知操作系统的存在,所以从未来的发展趋势来看浏览器完全可以取代操作系统。
    搜索引擎是浏览器上杀手级的高频应用。在PC时代,已然成为流量的漩涡。

    2 移动时代的浏览器会是什么样的?它和操作系统的关系又是如何?
    移动时代,浏览器就是操作系统上的一个普通App,其重要性较之PC时代已经下降不少;因为浏览器的部分作用已被各类垂直化的应用App所代替。App在移动时代较之浏览器一个突出优点就是用户体验更好。随着5G时代的来临,个人愚见是移动浏览器会焕发新一春。
    2019-05-04
    1
    17
  • 好好学习
    k8s正在接管集群操作系统的角色,服务治理是它根本停不下来
    2019-05-04
    10
  • Enthusiasm
    关于操作系统,浏览器,搜索引擎,可以归结为平台产品。我并不认为每个架构师都有机会做出一款平台产品,而且,我认为平台产品还是类似于基础服务,并不能带来很高的收益,获得收益关键是如何形成一个商业闭环,让钱乖乖流进来。操作系统已然形成不了技术壁垒,也就起不到商业壁垒的目的。未来能形成商业壁垒的,我认为是产品差异化,物联网时代想方设法做出新产品的机会还是蛮多的。微信小程序想让所有程序都集成到微信里,我只想呵呵。微信直接开发个操作系统卖微信手机得了,互联网的流量思维,割韭菜,羊毛出在狗身上猪来买单的思维,我认为是一种浮躁。过去的3q大战,IE和网景大战,共享单车,打车补贴大战,谁真正称得上商业成功?百度成了莆田系的帮凶,谷歌当初要不及时悬崖勒马也晚节难保。踏踏实实做一个良心企业,这样的成功才称得上真正的成功。
    2019-05-03
    10
  • 晓凉
    隐隐感觉到架构的主要难点在于对需求的前瞻性判断,这要求的不仅仅是技术能力。目前几乎所有的架构课程,都是基于确定的需求来讲技术架构,例如秒杀系统怎么做高可用高并发。能听到许老师这么高视角讲架构,实在幸运。

    作者回复: 架构在于创造,如果你从事的事情总是重复别人,那这个公司又有何价值?即使有所参考,也应该有自己的精气神,这个精气神是需要架构师把它干出来的

    2019-05-04
    1
    8
  • Enthusiasm
    老师您的意思是让我们一上来就多考虑一下系统的“收费需求”或者“商业模式”。嗯,很好。总结一下各个公司的成功途径,就是先要满足大量刚需或者打破现有商业壁垒,然后靠技术、工艺和法律形成新的商业壁垒迅速崛起,最后依靠积累的用户基数和粘性,获得规模效应,开发新产品以获得更高的溢价等等。
    做硬件和做软件要相结合,只做上游服务并不能形成良好的商业闭环,所以IoT+人工智能我认为很有发展前景。非常希望NAS存储能走进千家万户,360网盘停止服务,百度网盘的限速,内容失效,且网盘内容无法保证隐私性,我妈妈的手机内存很小,经常需要清理内存,如果每天回到家都能自动把照片视频备份到私有云盘就好了。这些让我觉得,每个家庭有一块属于自己的私有云盘,是将来的刚需。现在NAS用起来没有那么智能和方便,我认为IoT+人工智能可以去做出个像样的可扩展迭代的NAS品牌。
    我想做的还有很多,平时想起一个就把它记在OneNote里,将来有天想创业了,刚好是个项目。只不过,现在要从技术上朝着架构师方向努力!
    2019-05-03
    8
  • 苟范儿
    老师现在主要提到的是终端(PC/Mobile)类的操作系统. 当前的云计算底层的系统,以及未来 IoT 边缘系统会有什么特殊之处么?

    作者回复: 挺好的问题。后面会在第三章服务端开发再次讨论操作系统,会探讨它的演进历程和方向。

    2019-05-06
    7
  • gbfa
    这种对需求的前瞻性探索挺重要,但同时感觉也是最难的,应该如何培养呢~

    作者回复: 很多时候是思维方式的转变。首先要尝试去做前瞻,预测错了并不可怕,但可以事后复盘到底是缺失了什么重要的信息让你判断出现什了偏差。

    2019-05-06
    7
  • Cordova
    根据老师的理论过程来看,个人觉得操作系统它是一个没有明确边界的,只有放在历史(时间)的维度上它才有边界的表现,其实也不需要去深究其边界、在pc时代互联网的出现的确让人感觉浏览器赋予了不同反响的历史使命,以后将发挥更大的价值,移动时代发现我们所需要的内容不仅仅可以在浏览器上才能获取到,在不同的内容平台也能获取到自己想要的内容,而现在正是如此、要说操作系统的下一次演进、我想只有两个方向:更具有便携性、个性化的硬件产品出现了,这会进一步催生… 历史好像就是这样的,但实际是软件反推动硬件(第二个方向):信息数据格式和渲染出现了新的表现形式。浏览器就让他一直停在pc时代随着pc演进吧、app就让他跟着移动端的脚步继续前进吧。至于以后,微系统-多联网、也许是下一步吧、这又将催生出怎样的新生态~ 拭目以待!

    作者回复: 挺好的思考

    2019-05-09
    6
  • frostawn
    许老师,小白请教个很困惑的问题。
    为什么pc可以有兼容机,让操作系统windows收费或者linux免费各占半壁江山,但是手机不能有兼容机呢,而说手机是个性化产品,不能标准化,他们再怎么个性,也脱离不了前面讲过的冯诺依曼体系吧。而且现在现实也是有安卓和ios两大阵营。所以并不是技术上没做到兼容,而是商业盈利模式的区别,ios可以利用支付闭环将流量变现,安卓拿不到支付系统的控制权无法做生意盈利。
    请您指教。谢谢!

    作者回复: 和技术没关系,是人性的问题。手机是人体器官的延伸,是门面,用户不会接受白牌机的,所以手机不是技术上做不到兼容机,而是人性上不会接受白牌机。

    2019-05-09
    5
  • 大胆设想,未来对大众消费者来说会持有各种终端,仅是终端而已,专注于输入输出,绝大多数计算和存储能力由云服务完成。终端设备无需复杂操作系统。设备开启接入网络,可能会在云端有一个针对这种设备这个账号的操门户,用户通过这个门户实现与各种应用的交互。因此,可以预见,云端上对于用户设备门户服务的争夺会很关键。微信小程序就有这个意思。这个门户服务就像是用户终端设备的操作系统,但是部署在云端,对用户使用的各种服务进行管理,支持跨服务的数据交互,跨终端的数据交互,管理用户数据安全,账户安全。再往远想象,这个门户会成为人与数字世界连接的界面,个人的重要身份特征会存储其中,是人生命的一种延伸。
    2019-05-04
    1
    4
  • apk
    对于“PC无法摆脱操作系统控制但是手机厂商可以摆脱Google的控制形成自己的商业闭环”这一点不是明白?
    Pad、一体机这些能不能也形成自己的商业闭环呢?

    作者回复: 历史阶段不同。PC的历史再演一遍,可能会是完全不同的结果。

    2019-05-08
    3
  • zjh
    感觉不论操作系统还是浏览器,一旦成熟就会变为基础设施层,人们就回默认它的存在,从而就会出现建立在其之上的应用来取代他们成为新的入口
    2019-05-05
    1
    3
  • 冰块
    操作系统会因为浏览器退出历史舞台吗

    作者回复: 不会

    2019-05-03
    1
    3
  • Eternal
    老师最后的思考题我有这样的思考:从资源的使用方式来看。1.当互联网还不发达的时候,用户在操作系统上只能通过客户端软件与外界交互,剩下的只能做本地操作,使用的资源少,资源的表现形式少,用户与外界交互少。2.当万维网出现,用户可以用浏览器这个载体使用到更多的资源,资源表现形式更丰富,交互也增多,这个时候浏览器适新形式下用户对资源的使用。3.当互联网发现一定阶段后,网民数量暴增,资源多得用户只通过人力就可以先到想要的资源是不可能的了,这个时候搜索引擎是给用户进入整个网络,使用巨量资源的新的当时,现在如果上网你不用搜索引擎你怎么查资料?所以总结,我认为是资源的数量,资源表现形式的变化,人与计算机,人与网络的交互方式更加多样导致操作系统演化出浏览器,当资源庞大后才有了搜索引擎。

    其实还可以换个角度
    1.全球人口的增大,全球经济的增长,导致网民数量增大,使用网络的需求指数级增大,催生了信息技术的发展。
    2.人是社会群里动物,有天生的沟通交流的需求,互联网和移动互联网突破了大自然的屋里空间和时间空间的限制
    3.当前人工智能又在改变更多的基础限制,正在突破人脑的智力极限
    2019-07-20
    2
  • Tom.G
    1.操作系统是用户入口,浏览器是互联网入口,搜索引擎是互联网流量入口
    2.移动时代的浏览器可以是各种应用,通过应用承载互联网内容,互联网内容分类更细更专业
    2019-06-19
    2
  • Smallfly
    许老师,我今天重新回顾了一遍这篇文章,以需求为出发点的写法,给读者的印象更加深刻,也更好理解,非常赞。但是我有两个问题想请教:

    1、
    对于六大系统的划分,文件和内存被统一为存储管理,为什么不把输入输出合并为设备管理呢?后面也都只是放一篇文章讲的。

    2、
    如何理解 PC 兼容机?是指 PC 能运行 Windows 和 Linux 么?而像三星小米只能运行 Android,iPhone 只能运行 iOS,所以不是兼容机?

    作者回复: 1、这里的输入与输出设备,是指用户输入和面向用户交互的输出设备,不同于冯诺依曼结构中提到的输入输出设备(泛指所有设备,包括存储设备和网络设备)。输入与输出设备管理合并为一章并不是因为它的内容少,而是因为它不是本章的重点。
    2、PC 兼容机是指白牌机,没有品牌或品牌几乎没有知名度。而且很多白牌机连操作系统都没有预装,硬件厂商没有意识到预装是一个巨大的市场。

    2019-06-06
    2
  • Geek_f26a61
    老师写的不错,例子也恰当,只是花的篇幅有点儿多。

    作者回复: 我觉得在计算机的基础架构体系中,操作系统是最值得研究的,最值得反思和复盘的。本章从架构的第一步需求分析入手,我们花费的主要的篇幅集中在需求的演化上。

    2019-05-03
    2
收起评论
76
返回
顶部