1. 操作系统出现前
- 人们使用针孔打卡编程,当计算机运行速度呈指数级速度增长,整理程序(纸卡)的时间远大于运行程序(读卡)的时间,耗时耗力,因此人们需要一个程序让计算机自动运行程序。
- 早期计算机的外接设备的配置不同,导致程序员运行程序时还需要了解外接硬件的底层,造成不必要的精力损耗。
2. 操作系统出现(简称OS,operation system)
- 计算机启动后运行的第一个程序
- 可以运行、管理、存储其他程序
- 有操作硬件的特殊权限,并提供API来抽象硬件(即设备驱动程序)
2.1 操作系统的优点
- 批量处理程序的能力
- 多任务处理能力(多个程序共享CPU)
- 动态内存分配
- 内存保护
2.2 多任务处理带来的问题
- 多个程序之间的内存分配问题
- 解决方案:给每个程序分配专属内存块
- 带来的新问题:内存地址不连续,导致程序员难以追踪,如下图所示:
2.3 内存地址虚拟化(解决内存地址不连续问题)
虚拟内存地址 → 物理内存地址
在虚拟内存地址和物理内存地址之间建立映射关系,也称动态内存分配。动态内存分配的好处:提供内存保护(程序之间的内存互相独立,互不影响)。
- 操作系统隐藏硬件上不连续的内存地址
- 所有程序使用操作系统提供的虚拟内存(从0开始)
3.0 Unix操作系统
3.1 Unix的组成:
- 内核,处理核心功能,如多任务、输入输出处理等
- 工具(如程序和运行库)
3.2 特点
- 不做错误恢复处理,直接调用一个panic函数,让内核崩溃。用户只能通过重启来恢复。
- 与其他做错误恢复处理的操作系统所需占用内存相比(1M),Unix只暂用极小内存,适合商业化。