操作系统简介
一、为何要有操作系统?
操作系统就是一个协调、管理和控制计算机硬件资源和软件资源的控制程序。由于计算机系统很复杂,如果每位程序员都必须掌握该操作系统所有的细节,会大大影响到开发效率和跟得上用户对应用程序的需求。管理硬件并加以优化运用是操作系统应该干的活,程序员自此可以从繁琐的工作中解脱出来,考虑开发自己的应用程序即可,这些应用程序可以通过操作系统使用硬件。
二、操作系统的位置
首先我们知道,操作系统是位于硬件和应用程序之间的,本身就是个软件,它由两部分组成:系统调用和内核。系统调用是运行于用户态的,作用是给程序员写的应用程序提供系统调用接口。内核态负责管理硬件资源。
下图我们可以更好的理解:
三、操作系统的功能
我们可以将之分为两部分。一方面,隐藏了丑陋的硬件调用接口,为程序员提供了可以调用硬件资源的系统调用接口(更好,更简单,更清晰)。在此基础上用户可以不用管操作硬件的具体细节,可以专心开发自己的应用程序。例如文件的概念。
另一方面,操作系统将应用程序对硬件资源的竞态请求变得有序化。(多路复用)
操作系统的功能总结为:处理来自多个程序发起的多个(多个即多路)共享(共享即复用)资源的请求,简称多路复用。
四、操作系统的发展
第一代计算机(1940~1955):真空管和穿孔卡片
特点:
没有操作系统的概念
所有的程序设计都是由纯粹的机器语言编写的
优点:
程序员在申请的时间段内独享整个资源,即时的调试自己的程序,如果有bug可以即时处理
缺点:
这对于计算机提供商来说是一种浪费
注意:同一时刻只有一个程序在内存中,被cpu调用执行,多个程序的执行是串行的
第二代计算机(1955~1965):晶体管和批处理系统(这一套需要人参与的情况下机器才能运行的系统乃现代操作系统的前身。)
特点:
有了操作系统的概念,最早期的操作系统是人力与计算机结合的系统,需要人参与。
有了程序设计语言:FORTRAN语言或汇编语言
第二代如何解决第一代的问题:
1.把一堆人的输入攒成一大波输入,
2.然后顺序计算(这是有问题的,但是第二代计算也没有解决)
3.把一堆人的输出攒成一大波输出
优点:批处理,节省了机时
缺点:
1.整个流程需要人参与控制
2.计算的过程仍然是顺序计算-》串行
3.程序员原来独享一段时间的计算机,现在必须被统一规划到一批作业中,等待结果和重新调试的过程都需要等同批次的其他程序都运作完才可以(这极大的影响了程序的开发效率,无法及时调试程序)
第三代计算机(1965~1980):集成电路芯片和多道程序设计
如何解决第二代计算机的问题1:
卡片被拿到机房后能够很快的将作业从卡片读入磁盘,于是任何时刻当一个作业结束时,操作系统就能将一个作业从磁带读出,装进空出来的内存区域运行,这种技术叫做
同时的外部设备联机操作:SPOOLING,该技术同时用于输出。当采用了这种技术后,中间俩小人不再需要
如何解决第二代计算机的问题2:
第三代计算机的操作系统广泛应用了第二代计算机的操作系统没有的关键技术:多道技术
多道技术的实现是为了解决多个程序竞争或者说共享同一个资源(比如cpu)的有序调度问题,解决方式即多路复用,多路复用分为时间上的复用和空间上的复用。
1.时间上的复用:当一个资源在时间上复用时,不同的程序或用户轮流使用它,第一个程序获取该资源使用结束后,再轮到第二个,第三个。由于cpu的切换速度很快,给用户的感觉就是这些程序是同时运行的,谁应该是下一个要运行的程序,以及一个任务需要运行多长时间,这些都是操作系统的工作。
2.空间上的复用:将内存分为几部分,每个部分放入一个程序,这样,同一时间内存中就有了多道程序。但伴随的一个问题是,程序之间的内存必须分割,如果彼此不分割,则可能会导致一个程序可以访问另一个程序的内存,引发安全问题和影响稳定性能。
如何解决第二代计算机的问题3:
多个联机终端+多道技术(时间复用方式和空间复用方式合起来即是多道技术。)
cpu采用多道的方式处理内存中的程序,计算机能够为许多用户提供快速的交互式服务,所有的用户都以为自己独享了计算机资源。
第三代计算机广泛采用了必须的保护硬件(程序之间的内存彼此隔离)之后,分时系统才开始流
第三代计算机的操作系统仍然是批处理。
第四代计算机(1980~至今):个人计算机