CrashCourseComputerScience18操作系统

155 阅读2分钟

操作系统

计算机最开始一次只能运行一个程序,通过打孔卡纸录入、运行、停机。为了让计算机自动运行,操作系统诞生。

1.批处理 batch processing

操作系统起始于 1950s,有操作硬件的特殊权限,可以运行和管理其他程序,操作系统一般是开机第一个启动的程序。这就实现了批处理程序,事先准备好打孔纸,操作系统可以自动按顺序运行。
随着代码分享的需要,操作系统需要支持不同的硬件设备,尤其是外部设备。而程序员往往无法清楚了解硬件设备的细节,所以操作系统需要提供一套统一的接口,让程序员可以通过操作系统来操作硬件设备。这些 API 叫 设备驱动程序 device drivers

操作系统成为了软件和硬件之间的媒介。

2.多任务处理 multitasking

随着计算机运行越来越快,出现了处理器闲置等待机械设备的情况(例如打印机、读卡器),程序阻塞在 I/O 上。英国曼彻斯特大学研发第一台超级计算机 Atlas,解决方案是配备了 Atlas Supervisor 程序,可以在单个 CPU 上同时运行多个程序,通过调度器实现。多个程序同时运行以共享 CPU 时间的形式实现。
多任务处理要求能够持久化和加载上下文数据,不能丢失,解决方法是给每个程序分配专属内存块。这样会造成某个程序的内存块不连续,为了隐藏这种追踪的困难和复杂性,操作系统会把内存地址进行虚拟化 virtualization,程序总可以从 0 开始使用内存。

3.多用户处理 multiuser processing

随着计算机价格进一步下降,学校开始提供计算机给学生使用,这就需要操作系统支持多用户。用户通过终端连接到主计算机,终端只提供键盘+屏幕的能力。为了不让一个人占满计算机的使用资源,开发出分时操作系统 time-sharing system,每个用户只能使用一小部分处理器和内存。为了保障数据的安全,早期的操作系统被过度设计,占用了太多资源,没有成功商业化。
接着 Dennis 和另一个 Multics 研究员 Ken Thompson 开发了 Unix 操作系统,Unix 将操作系统分成两部分:一个是操作系统的核心部分 kernel,一个是提供常用工具的用户部分,在 1970-80s 成为了最流行的操作系统之一。

这样设计简单,如果出错就会报错 panic,无法恢复只能重启,但极大的减少了资源的使用量。