操作系统简史

操作系统(Operating System,OS)是管理计算机硬件与软件资源的计算机程序。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。

早期的操作系统:库

一开始,操作系统并不像现在的操作系统,它只是一些库,甚至可以说是一堆函数。它们的作用只是为了让程序员可以远离对类似于低级I/O处理的重复代码,而是让OS这个库来为程序员提供接口,进而减少程序员的工作。当时,在那些古老的大型机系统上,一次有一个操作员来控制运行一个程序,这个操作员做的工作就是当今的操作系统做的大多数事情,例如分配“你”的工作的执行顺序。这种方式可以称为“批处理”,先将准备工作做好,然后分批执行。

 

库的进步:独立

在对库操作系统的使用中,程序员们渐渐发现了库操作系统与其他普通库的不同,库操作系统可以控制设备的运行,而不再是单纯的被人所控制才能运行。于是系统调用(system call)的概念诞生,这是Atlas计算系统率先采用的。不再只是将操作系统作为一个简单的库,而是只通过创建一个过程调用(procedure call)来访问它。系统调用和过程调用之间的关键区别是:系统调用将空值转移到OS中,同时提高硬件特权级别(hardware privilege level)。用户应用程序以所谓的用户模式(user mode)运行,这意味着硬件限制了应用程序的功能。例如:用户的应用程序不能发起对磁盘的I/O请求,不能访问任何物理内存页,在发起系统调用时,硬件将控制转交给OS,由OS取访问系统的硬件,当OS完成应用程序请求的服务后,再通过特殊的指令将控制权交还给应用程序,回到应用程序交出控制权的地方继续进行。

 

多程序时代

操作系统的真正兴起是在小型机时代,在当时出现的如DEC的PDP系列等经典机器让计算机变得便捷,不再是大型组织的专属,而是每个小型组织甚至个人可以拥有属于自己的计算机。这时人们希望计算机可以不是一次运行只能执行一到程序,而是希望CPU可以同时运行多个程序(同时是指将多个程序加载到内存然后不停的切换,模拟出多程序同时运行的假象),这样可以大大提高CPU利用率。因为在CPU只执行单道程序时,会因为I/O的阻塞导致浪费大量时间。

这一需求使得IS不得不出现在人们眼前并承担其比之前更加复杂的工作,要在支持多道程序的重叠运行的情况下,支持内存保护等问题,因为没有人希望自己程序的内存可以被另一道程序所访问,这也就是OS的并发性。后来出现的一个主要进展是贝尔实验室引入的UNIX操作系统。UNIX从很多当时的操作系统取到了精华 ,然后不断的优化自己,贝尔实验室又将UNIX发送给了世界各地的人们,使得后续更多的人参与到了操作系统中来。

UNIX在操作系统的历史中的重要性举足轻重。最初的UNIX的基础是统一的原则,即构建小而强大的程序,这些程序连接在一起形成更大的工作流。在输入命令的地方,shell提供了管道(pipe)之类的原语来支持这种元编程。并且UNIX对开发人员极为友好,为当时的C语言提供了编译器,使得程序员更容易的进行编程开发,,这使得UNIX在开发人员中快速的流行起来。而作为一个开源软件,也使得使用其的大量开发者对其源码的扩展与维护产生了极大地兴趣。其用C语言编写的小内核很容易被其他人了解并扩展,为其不断添加新的功能。比较有名的例如Bill Joy领导的伯克利创业团队发布的Berkeley Syetems Distribution(BSD),这个发行版有先进的虚拟内存、文件系统与网络子系统。虽然后来由于公司试图维护其所有权来获取利润,UNIX的传播速度开始变缓,但很多公司都在基于UNIX的基础上为自己创造了变种,例如IBM的AIX,HP的HPUX等等。更后来,一个名为Linus Torvalds的芬兰黑客决定编写他自己的UNIX,他借鉴了UNIX的背后思想与原则,但是没有使用源码,在世界各地人物的帮助下创造出了linux,并一直免费运行使用。

 

NOW

当今,个人计算机PC已经变得极为普遍,然而在个人计算初初兴起时,操作系统却发生了一次巨大的倒退,因为早期操作系统忘记了小型机的教训。例如:DOS,它并没有把内存保护看做一件重要的事,导致DOS中运行的恶意程序可以在内存中写满各种乱七八糟的东西;第一代macOS,采取合作的方式进行作业调度,这种情况下一个无限循环的线程就会占用整个操作系统,最终导致系统崩溃只能重启。类似的问题在PC早期的操作系统中比比皆是,直到后来人们逐渐吸取教训开始进步。例如macOS的核心是UNIX,包括了人们期望从这样一个成熟系统中获得的所有功能。Windows也吸收了许多伟大的思想,特别是自WindowsNT开始,是操作系统的一次巨大飞跃。如今在操作系统开发鼎盛时期出现的好思想已经遍布全世界,人们也在不断的扩展这些好思想,来为用户和程序提供更多功能,让现代系统更加完善。

 

 

参考资料:

"Operating System: Three Easy Pieces"

Remzi H.Arpaci-Dusseau, Andrea C.Arpaci-Dusseau

"TENEX, a paged time sharing system for the PDP - 10"

Daniel G. Bobrow, Jerry Burchfiel, Daniel L.Murphy,

"The Evolution of Operating Systems"

P.Brinch Hansen

"The Manchester Mark I and Atlas: A Historical Perspective"

S.H.Lavington

 

©️2020 CSDN 皮肤主题: 技术黑板 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值