操作系统是什么
- 计算机是由若干硬件组成:显示器、CPU、内存、主板(提供总线)、键盘、鼠标、硬盘等。
- 计算的发明是帮助人类完成一些计算与逻辑任务。
- 但是人们不能直接的使用计算机硬件,需要在计算机硬件上包上一层软件,我们使用这些软件来完成一些特定的任务,比如进行数学计算、文字排版、聊天、邮件等。
- 操作系统就是计算机硬件与应用软件之间的一层软件(或者说是接口),两个目标:1)方便我们使用硬件;2)高效的使用硬件
- 操作系统管理哪些硬件呢:CPU管理、内存管理、终端管理、磁盘管理、文件管理、网络管理、电源管理和多CPU管理。
- 网络管理、电源管理和多核管理属于高级操作系统的相关知识。在Udacity的高级操作系统中有讲授。
操作系统的发展历史
操作系统是伴随着计算机的发展而发展的,在任何时期都是以解决当时遇到的实际问题为创新点,大致经历了如下几个时期:
- 第一个阶段,以上古神机IBM7094为代表的计算上的操作系统,计算机的主要目的是大量计算,所以当时的操作系统是一种批处理操作系统,作业一批一批的被顺序执行。输入输出都是磁带。
- 第二个阶段,计算机开始进入多个行业,需要完成各种不同的任务,一台计算机需要干更多的事,这时候就出现了多道程序操作系统,因为有的作业是计算任务,有的作业是IO类型的任务,所以可以在作业之间进行切换和调度,让CPU忙碌起来。典型代表为IBM OS/360。
- 第三个阶段,出现了分时操作系统,每个使用计算机的人都可以启动一个作业,作业之间快速的进行切换,而不是像上个阶段那样只有处理IO时,才会换到下个作业。这个时期的代表是MIT的MULTICS。
- 第四个阶段是,随着小型机的大量普及,出现了Unix和Linux操作系统。从设计上更简单和灵活。同时Windows操作系统也诞生了,它主要是在用户界面方面做了很大的创新与改进。
学习操作系统的三个层次
Learn OS concepts by coding them!
学习操作系统根据学习深浅的不同可以分为三个层次:
- 层次一:从应用软件出发“探到操作系统”,主要讲解如何使用操作系统提供的接口如:
printf/fork/open/read
等。 - 层次二:从应用软件出发“进入操作系统”:了解操作提供的系统接口是如何实现的,可以自己给操作系统增加服务接口,为新的硬件写驱动程序等。
- 层次三:硬件出发“设计操作系统”,给一个硬件板子,通过查硬件手册,可以自己配一个操作系统,针对这个板子实现自己的操作系统。
我们要以对照一下Standford的操作系统的学习要求,主要是能完成4个操作系统实验,这4个实验也体现了操作系统的真正核心。
- 实验一: 扩展线现,实现线程调度
- 实验二: 实现系统调用,将整个接口剥掉,添加
- 实验三: 实现虚存管理,扩展实现内存管理
- 实验四: 扩展文件系统,扩展实现一个文件管理