熟肉视频地址:
第一节课主要是关于课程介绍以及操作系统是什么、为什么这么重要的简介。现代最伟大的发明之一是互联网,它把全世界不同规模的设备都通过统一的网络连接在了一起:
互联网的发展很迅猛,像最初的ARPANET,不能处理超过256个设备,大概是在90年代初万维网开始发展的时候,互联网突然变成了很多人可以使用的东西,现在我们的互联网上大概有 45 亿台设备,覆盖了世界的 60% 的人口。另一件有趣的事情是在这张图片中也有设备的多样性:
我们再来看看贝尔定律,他表示一个人拥有的设备的数量:
最初,数百万人使用一台计算机,然后随着发展,现在你们每个人可能都有数百个设备在为你们工作,比如现代汽车有数百个处理器,你们都有手机,笔记本电脑等等。每个人的电脑数量随着电脑的大小变小而增加,这很有趣。
如何让这么多系统正常运作并且连接在一起,我们就要考虑这个耗时尺度的问题:
这个图也是大家经常能看到的,大小越小的存储离 CPU 越近访问速度越快,大小越大离 CPU 越远访问速度越慢。不管怎样,操作系统必须在这些不同的耗时尺度正常运作,让系统正常运行。
操作系统基本上是所有这些的核心,你在底层技术上不断取得令人难以置信的进步的同时,会造成每个设备都有一些不同的差异性,每一代技术的发展都会有所不同,但是不管硬件有多复杂,你都要为应用程序提供一个一致的编程抽象;同时,需要管理不同应用之间的资源共享,我们连接的设备越多,可以共享的资源就越多。另外,到这学期的最后三分之一的时候,我们将开始讨论其中的一些非常有趣的点对点系统,这样我们可以拥有跨越许多设备的巨大存储系统。
我们会学习操作系统的关键组成:
- 进程
- 线程,并发,调度,协调
- 地址空间
- 保护,隔离,共享,安全
- 通信,协议
- 持久化存储,事务,一致性,弹性
- 设备接口
在你想访问一个网页的时候,背后发生了什么?首先,会发出一个 DNS 请求试图找出这个网站的 IP 地址,这个请求会到网络上的 DNS 服务器,他们会返回有用的信息,之后使用这些信息,将实际网页请求发出;经过网络路由,之后它可能会被送到一个有负载均衡器的数据中心;然后将从几个可能的设备中选择一个可用的设备;然后,它可能会从页面存储中进行搜索和检索信息,把它拼成你可以用的页面之后返回。一旦我们开始深入思考这个流程中的细节,就会有很多有趣的问题,比如 DNS 服务器是如何保持一致的,为什么很难黑进它们呢?事实上,在 2000 年中期,有人侵入了它们。还有就是你如何确保数据包有足够的优先权当它们进入一个操作系统时,确保你的特响应查询不会被延迟很长时间,这是一个调度相关的问题。希望在这堂课结束时,你将对操作系统的各个部分有足够的了解,能够帮助你对这些问题有更好的理解。
那什么是操作系统呢?这方面其实没有统一的概念,但是我们可以从操作系统做的事情来理解什么是操作系统。操作系统负责:
- 内存管理
- IO管理
- CPU 调度
- 通信
- 多任务处理或多处理器编程
操作系统和什么有关呢?文件系统?多媒体系统?用户界面?还有浏览器?
对于操作系统的定义,我们很难给出,一个近似的定义是当你订购操作系统时供应商提供的所有东西,但是不同的供应商提供的东西差别很大,它可能是电脑上一直在运行的一个程序即内核(kernel),随着学期的进行,你们会学到很多关于内核的知识。没有人会否认内核是操作系统的核心,但是当我们试图深入研究什么是操作系统时,你们要记住,我们要讲的是它的作用和重要的部分,但也许你永远不会完全知道到底操作系统是什么。
其实操作系统可以理解为是一个典型的软件层,它提供应用程序对硬件资源的访问,这是对复杂硬件设备的方便抽象以及对共享资源的受保护访问与通信,以及提供安全性保护和认证。