what's the 操作系统?
首先,我们要知道,为什么要有操作系统。现代的计算机系统主要是由一个或者多个处理器,主存、硬盘、键盘、鼠标、显示器、打印机、网络接口及其他输入输出设备组成。现代计算机的组成部分极其复杂,我们不可能全部了解完再去写开发,所以就需要用到操作系统。程序员只需要做自己的本职开发工作,应用软件直接使用操作系统提供的功能来间接使用硬件。
操作系统位于计算机硬件与应用软件之间,本质也是一个软件。操作系统由操作系统的内核(运行于内核态,管理硬件资源)以及系统调用(运行于用户态,为应用程序员写的应用程序提供系统调用接口)两部分组成,所以,单纯的说操作系统是运行于内核态的话,是不准确的。
操作系统的功能主要有两个,一个是隐藏了丑陋的硬件调用接口,为应用程序员提供调用硬件资源的更好,更简单,更清晰的模型(系统调用接口)。应用程序员有了这些接口后,就不用再考虑操作硬件的细节,专心开发自己的应用程序即可。比如,磁盘资源的抽象是文件系统(C盘,D盘,E盘...下的目录及文件),有了文件的概念,我们直接打开文件,读或者写就可以了,无需关心记录是否应该使用修正的调频记录方式,以及当前电机的状态等细节。操作系统的实际客户是应用程序(应用程序员负责开发应用程序,因而也可以说应用程序员是操作系统的客户)。另一个是将应用程序对硬件资源的竞态请求变得有序化。
操作系统的发展。(了解即可,记住也并没有什么卵用。。)
第一代计算机(1940~1955):真空管和穿孔卡片 特点:没有操作系统的概念,所有的程序设计都是直接操控硬件。优点:程序员在申请的时间段内独享整个资源,可以即时地调试自己的程序(有bug可以立刻处理)。缺点:浪费计算机资源,一个时间段内只有一个人用。
第二代计算机(1955~1965):晶体管和批处理系统 特点:有了操作系统的概念,有了程序设计语言。优点:批量处理,节约时间。缺点:整个流程需要人参与控制,计算的过程仍然是顺序计算,程序员原来独享一段时间的计算机,现在必须被统一规划到一批作业中,等待结果和重新调试的过程都需要等同批次的其他程序都运作完才可以(这极大的影响了程序的开发效率,无法及时调试程序)。
第三代计算机(1965~1980):集成电路芯片和多道程序设计 第三代计算机的操作系统广泛应用了第二代计算机的操作系统没有的关键技术——多道技术(需要记住的知识)。cpu在执行一个任务的过程中,若需要操作硬盘,则发送操作硬盘的指令,指令一旦发出,硬盘上的机械手臂滑动读取数据到内存中,这一段时间,cpu需要等待,时间可能很短,但对于cpu来说已经很长很长,长到可以让cpu做很多其他的任务,如果我们让cpu在这段时间内切换到去做其他的任务,这样cpu不就充分利用了吗。这正是多道技术产生的技术背景。多道技术中的多道指的是多个程序,多道技术的实现是为了解决多个程序竞争或者说共享同一个资源(比如cpu)的有序调度问题,解决方式即多路复用,多路复用分为时间上的复用和空间上的复用。空间上的复用:将内存分为几部分,每个部分放入一个程序,这样,同一时间内存中就有了多道程序。时间上的复用:当一个程序在等待I/O时,另一个程序可以使用cpu,如果内存中可以同时存放足够多的作业,则cpu的利用率可以接近100%。空间上的复用最大的问题是:程序之间的内存必须分割,这种分割需要在硬件层面实现,由操作系统控制。如果内存彼此不分割,则一个程序可以访问另外一个程序的内存。为了解决这个问题,第三代计算机广泛采用了必须的保护硬件(程序之间的内存彼此隔离)。
第四代计算机(1980~至今):个人计算机
总结:
操作系统是有古人类写的为现代人类提供方便的软件,要写出一份完善的操作系统是一件非常人能做到的事。
操作系统的作用是使我们在不了解硬件为何物的情况下能方便的对硬件进行操控,有了操作系统应用程序员就不用再考虑操作硬件的细节,专心开发自己的应用程序即可,用户使用电脑进行日常操作也显得边界无疑。重点是,操作系统能将应用程序对硬件资源的竞态请求变得有序化,即多路复用。