什么是操作系统?
操作系统的历史:
计算机与计算器没有本质的区别。
1940s
1940s:计算机系统就是一个状态机
标准的Mealy型数字电路。
计算机到底是怎么造出来的?
实现方法: - 逻辑门:电子管(vacuum tubes)——工作原理
触发器可以用几个逻辑门简单实现,但用电子管效率比较低。
- 存储器:延迟线(delay lines) —— 雷达技术:将01序列以机械波的的形式调制到水银管中,由于水银管 密度很大,波动震动频率来encode0和1。通过输入输出就保留了数据。cool!!!
- 输入/输出:打孔纸带/指示灯
操作系统:使程序能够更好运行的系统软件
1940s没有操作系统,计算机唯一的对象是相对机械的数值计算
操作系统中唯一的对象就是独占计算机运行的程序。
1950s
磁芯(内存)
中断机制出现(1953)——程序指令跳转
I/O设备的速度已经严重低于处理器的速度
数据、资源共享——批处理操作系统:多个程序使用一个计算机
操作任务(operate jobs)的系统:
批处理系统——大量任务处理
os是串行程序调度器和一系列的库函数
1960s
计算资源增加——同时将多个程序载入内存
OS决定哪些程序装入到内存
在多个隔离的程序之间切换——隔离使一个程序bug不会crash整个系统
操作系统中多了进程对象和进程管理API
进程:正在运行的程序 —— 处理器调度问题
定时切换进程(程序)——时钟中断
时钟中断:使程序运行时,异步地插入函数调用
由操作系统(调度策略)决定是否要切换到另一个程序执行
进入modern era (1965,MIT)
为什么程序死循环时系统没有崩溃?
中断打断(os),运行其他程序。os可以接管系统中所有的中断,但普通程序是不能的。如"cli"
进程、中断、虚拟内存
1970s
CISC指令集
PASCAL
个人计算机
1970s+
1969:UNIX
1973:信号API(信号传递)、管道(对象)、grep(应用程序) —— ls | grep 程序输入输出链接
1983:BSD socket(对象) —— 网络编程对象,与其他机器通信
1984:procfs(对象) —— 目录 cd /proc, 查看信息 cat cpuinfo | less, —— 管理进程信息
进入进程目录,来查看进程运行信息 /proc/1 进入1号进程
1970s:
虚拟化:
进程、虚拟存储、设备抽象
并发:
多个程序分时共享多个处理器;进程/线程间通信
持久化:
UNIX文件系统等(ext2,ext3…)