
1. 操作系统
1.1. 操作系统是基础软件,它负责管理计算机硬件,并为其他被称作应用程序的程序运行提供支持
- 1.1.1. 几乎每台电脑,无论是笔记本电脑、手机、平板电脑、媒体播放器、智能手表、相机还是其他小玩意,都有某种类型的操作系统来管理硬件
1.2. 20世纪50年代初,还没有应用程序与操作系统之分
-
1.2.1. 操作计算机的工作就交给了专业操作员,由他们将程序输入计算机,然后分发计算结果
-
1.2.2. 操作系统最初就是为了将人工操作员的上述工作自动完成才诞生的
1.3. 硬件不断发展,控制它们的操作系统也日益完善
-
1.3.1. 随着硬件越来越强大和复杂,就有必要投入更多的资源来控制它们
-
1.3.2. 第一批广泛使用的操作系统诞生于20世纪50年代末、60年代初,通常由制造硬件的同一家公司提供,并通过汇编语言与之紧密结合
1.4. 弗雷德·布鲁克斯
-
1.4.1. Fred Brooks
-
1.4.2. 曾在1965年至1978年间管理IBM的System/360系列计算机和OS/360的开发
-
1.4.3. 1999年,布鲁克斯因其对计算机架构、操作系统和软件工程的贡献而获得图灵奖
1.5. 操作系统也是很多大学和业界实验室的研究目标
-
1.5.1. 在1961年开发了一个名为CTSS(Compatible Time-Sharing System,兼容分时系统)的系统,该系统在当时非常先进
-
1.5.2. 1969年,贝尔实验室的肯·汤普森(Ken Thompson)和丹尼斯·里奇(Dennis Ritchie)开始着手开发UNIX
- 1.5.2.1. 曾开发过Multics系统,这是一个延续自CTSS,较之更完善但却不那么成功的系统
1.6. 用程序来管理程序,这是让计算机自己执行操作的又一个例子
- 1.6.1. 这个程序就叫作操作系统
1.7. 家用和工作中使用的计算机中最常见的操作系统是微软开发的各种版本的Windows
-
1.7.1. Windows 10被猜测大约有5000万行,尽管没有权威公布的数据
-
1.7.2. 我们日常见到的台式计算机和笔记本电脑90%都运行着Windows
1.8. 苹果电脑运行的是macOS
- 1.8.1. iPhone和iPad运行的iOS就源自macOS,其核心是一种UNIX的变体
1.9. 很多做幕后工作的计算机运行的是Linux
-
1.9.1. Linux最早就是由芬兰大学生林纳斯·托瓦兹(Linus Torvalds)在1991年写出来的,他当时的想法就是从头编写一个自己的UNIX版本
-
1.9.2. 今天的Linux已经有超过1000万行的代码,是几千人历经几十年工作的成果
-
1.9.3. 电视机、TiVo、亚马逊的Kindle和Google Nest运行的也是Linux
1.10. 手机中也有操作系统,开始运行的是特定的系统,不过现如今通常是精简版的UNIX或Linux
- 1.10.1. Android手机运行的是Linux
1.11. 以UNIX操作系统第6版为例进行比较,它是今天很多操作系统的鼻祖
- 1.11.1. 在1975年的时候是一个包含9000行C语言和汇编语言的程序,由两个人编写
1.12. 可以在一个操作系统的控制下运行另一个虚拟操作系统
-
1.12.1. VMware、VirtualBox和Xen(开源的)等虚拟操作系统软件,可以在一台macOS主机上运行另一个客户操作系统,比如Windows或Linux
-
1.12.2. 当主机和客户都为相同的硬件编译时,客户系统在大多数情况下以完全的硬件速度运行,并且感觉几乎与在裸机上一样快
1.13. 当计算机启动时,处理器首先执行存储在永久存储器中的一些指令
-
1.13.1. 这些指令继而从一小块闪存中读出足以运行某些设备的代码
-
1.13.2. 这些代码在运行过程中再从磁盘、USB存储器或网络连接的既定位置读出更多指令
1.14. 计算机启动过程中通常还要检查硬件,以便知道有哪些设备接入了计算机
- 1.14.1. 还会检查内存和其他组件,以确保它们都可以正常工作
1.15. 操作系统会响应各种事件
2. 控制和分配计算机资源
2.1. 操作系统负责管理处理器,调度和协调当前运行的程序
-
2.1.1. 控制处理器在任意时刻执行着的程序间切换,包括应用程序和后台进程
-
2.1.2. 同时运行数百个进程
2.2. 操作系统管理主存储器
-
2.2.1. 把程序加载到内存中以便执行指令
-
2.2.2. 如果内存空间不足以让所有程序同时运行,它就会将某些程序暂时挪到磁盘上,等有了空间之后再挪回来
-
2.2.3. 有效利用主存储器需要良好的工程技术
- 2.2.3.1. 一种技术是在需要时仅将程序的一部分加载到内存,而在程序处于非活动状态时再把它转存回磁盘,这个过程称为交换(swapping)
-
2.2.4. 操作系统必须支持这种“假象”,方法就是硬件的帮助下,在程序内存地址和真实内存的真实地址间转换,将程序块换入换出
- 2.2.4.1. 虚拟内存(virtual memory)
2.3. 操作系统管理存储在二级存储上的信息
- 2.3.1. 文件系统是操作系统中的一个主要组成部分,提供了我们在使用计算机时所看到的文件夹和文件的熟悉层次结构
2.4. 操作系统管理和协调计算机外接设备的活动
-
2.4.1. 一个程序可以假设它有完全属于自己的非重叠窗口
-
2.4.2. 操作系统维护屏幕上的多个窗口的复杂任务,确保每个窗口都能显示正确的信息,而且在这些窗口被移动、缩放或隐藏后再次显示时,都能准确地恢复原貌
3. 系统调用
3.1. system call
3.2. 操作系统提供硬件和其他软件之间的接口
3.3. 它使硬件看起来提供了比实际更高层次的服务,使得编程变得更容易
3.4. 操作系统为应用程序定义了一组操作,或称为服务
- 3.4.1. 将数据存储至文件或者从文件中读取数据,建立网络连接,获取键盘的任何输入,报告鼠标移动和按钮点击,绘制屏幕
3.5. 操作系统以标准化的或者说协商一致的方式提供这些服务,而应用程序通过执行一种特殊的指令来请求这些服务,并将控制权移交给操作系统中特定的地址
4. 文件系统
4.1. 文件系统是操作系统的一个组成部分,它能够让硬盘、CD和DVD,以及其他移动存储设备等物理存储媒介,变成看起来像是由文件和文件夹组成的层次结构
4.2. 文件系统是逻辑组织和物理实现之间区别的一个很好的例子
4.3. UNIX系统则一直使用目录(directory)而不是文件夹这一词汇
4.4. 文件系统管理所有这些信息,方便其他应用程序和操作系统的其他部分读写这些信息
4.5. 在底层,文件系统服务是通过系统调用来提供的
4.6. 二级存储文件系统
- 4.6.1. SSD设备有不同的驱动程序,设备本身有复杂的代码来记住信息在设备上的位置
4.7. 文件夹也是一个文件,其中包含着文件夹和文件的位置信息
4.8. 在应用程序要访问已有的某个文件时,文件系统必须从其层次的根部开始搜索该文件,在相应文件夹里查找文件路径中的每一部分
4.9. 路径的每个组成部分都将搜索范围缩小到该文件夹内的文件和文件夹
4.10. 应用程序在创建新文件时会向文件系统发送请求,文件系统会在相应的文件夹中增加一个新条目,包含文件名、日期等项,还有文件大小为零
4.11. 删除文件
-
4.11.1. 删除文件时,过程恰好相反:文件占用的块会回到空闲列表,而文件夹中该文件的条目会被清除,结果就好像文件被删除了一样
-
4.11.2. 即使新信息已覆盖原有内容,一个具有大量资源并且有职业精神的对手可能能够提取信息的痕迹
-
4.11.3. 军用级文件擦除会用随机的1和0对要被释放的块进行多次覆盖
-
4.11.4. 更好的方法是将硬盘放在强磁铁附近,使其退磁
-
4.11.5. 最好的办法是在物理上摧毁它;只有这样才能确保里面的内容都没了
-
4.11.6. 数字化记录是会扩散的,可以很容易地复制到可移动设备上,并可以隐藏在许多地方
4.12. 其他文件系统
-
4.12.1. CD-ROM和DVD同样以文件系统的方式提供访问接口,同样由不同层次的文件夹和文件组成
-
4.12.2. USB和SD驱动器上的闪存文件系统也是广泛适用的
-
4.12.3. 熟悉而统一的界面以及标准的媒介代替了笨拙而专有的软硬件
-
4.12.4. 网络文件系统经常用于备份,当然也可以作为主文件存储系统
5. 设备驱动程序
5.1. 设备驱动程序是一种沟通操作系统与特定硬件设备(如打印机和鼠标)的程序
5.2. 驱动程序的代码具有怎么让特定设备执行自己的工作的详细知识,比如从特定的鼠标或触摸板得到运动和按钮的信息、让磁盘通过集成电路或旋转的磁表面读写信息、让打印机在纸上留下标识、让特定的无线芯片发送和接收无线电信号
5.3. 驱动程序将系统的其他部分与特定设备的特性隔离开来—同一类型的所有设备都具有操作系统关心的基本属性和操作—而驱动程序接口允许操作系统以统一的方式访问设备,因此可以很容易地切换设备
5.4. 打印机专属的驱动程序,要负责把操作系统请求转换为特定设备完成相应任务必需的指令
5.5. 操作系统发送通用的请求,而具体的驱动程序为自己的硬件实现这些请求
5.6. 通用的操作系统都包含很多驱动程序
- 5.6.1. 通常不需要寻找新的驱动程序
6. 其他操作系统
6.1. “物联网”也是基于此:恒温器、灯光、安全系统等由嵌入式计算机控制,并与互联网相连
6.2. 随着这种趋势的不断发展,选择现成的操作系统要比自己从头写一个来得更实际
6.3. 除非用途特殊,否则在Linux基础上改一改是成本最低的,Linux非常稳定、容易修改、方便移植,而且免费
6.4. 改造Linux的缺点在于必须把改造后的操作系统部分代码按照GPL许可发布,由此可能引发如何保护设备中知识产权的问题
- 6.4.1. 从Kindle和TiVo等许多案例来看,这并不是不可逾越的障碍
7. 云计算
7.1. 云计算依赖于虚拟机
7.2. 云服务提供商拥有大量的物理计算机,具有足够的存储和网络带宽,用来为客户提供计算能力
7.3. 每个客户使用一定数量的虚拟机,这些虚拟机由少数物理机器支持
- 7.3.1. 多核处理器非常适合这种操作
7.4. 亚马逊网络服务(AWS)是最大的云计算提供商,其次是微软Azure和谷歌云平台
- 7.4.1. AWS尤其成功,占亚马逊营业利润的一半以上
7.5. 针对任何给定客户的容量都可以随着负载的变化而增长或收缩
7.6. 具有足够的资源可以让单个用户随时增加或减少运算规模
7.7. 许多公司,包括像Netflix这样的大公司,发现使用云计算比运行自己的服务器更划算,这要归功于规模经济、对负载变化的适应性,以及需要较少的内部员工

1万+

被折叠的 条评论
为什么被折叠?



