• 进入"运维那点事"后,希望您第一件事就是阅读“关于”栏目,仔细阅读“关于Ctrl+c问题”,不希望误会!

计算机操作系统发展史

系统初识 彭东稳 9年前 (2015-07-21) 29368次浏览 已收录 0个评论

计算机

计算机体系分为硬件系统和软件系统,软件系统又分为操作系统和应用程序。

在这里我们回想一下我们的操作系统在整个计算机中起到的作用是什么?在一颗CPU单核心并有一段内存和输入输出设备的计算机中在某一时刻它只能进行一个运算,但是现在我们在玩电脑时会发现我们同时打开多个任务都在并行执行那么它们又是如何一块运行起来的呢?

世界上第一台电脑是没有操作系统的,主要是因为太慢而运行不了。由于晶体管的发明和微程序概念的应用,使得电脑从机械装置变成了真正的电子产品。这样系统管理工具和简化硬件操作流程的程序很快就出现了。这称为操作系统,随着电脑速度的提升,充分利用计算资源这种“节能减排”的需求呼之欲出。

纸带和穿孔卡技术

早期的计算机刚刚出来的时候都是人工操作,在电子管和晶体管时代,纸带和穿孔卡片成了不二之选。早期的计算机运行的程序也只是程序,由程序员编好转换二进制再使用穿孔纸带,二进制1就把穿孔纸带打个孔,0就不打孔,然后多长打一个位,再由输入设备专门读穿孔纸带,把数据读进计算机的内存里面。然后CPU开始运算输出结果,使用发光二极管显示出来;亮就是1,不亮就是0,再由记录员记录下来。所有的程序员在需要运算程序时都是需要预约上机,那时候的计算机非常昂贵,体积也非常大,如果每个程序员都需要预约2个小时的上机时间,后来研究人员发现每个程序员的大部分时间都浪费在操作机器上;和有的程序员的程序一个小时就完成而浪费了另外一个小时;而有的程序员2个小时不够用,没办法只能等到下一次再预约时间重新开始了。这个中间浪费的时间是人们不能容忍的,因此后来就出现了管理员(他对机器的操作非常熟系,然后每个程序员把做好的程序都交给管理员去运行)

批处理系统

上世纪50年代中期发明了晶体管,人们开始用晶体管替代真空管来制作计算机,从而出现了第二代计算机。它不仅使计算机的体积大大减小,功耗显著降低,同时可靠性也得到大幅度提高,使计算机已具有推广应用的价值。但计算机系统仍非常昂贵,为了能充分地利用它,应尽量使该系统连续运行,减少空闲时间。为此,通常是把一批作业以脱机方式输入到磁带上,并在系统中配上监督程序(Monitor),在它的控制下使这批作业能一个接一个地连续处理。其自动处理过程是:首先,由监督程序将磁带上的第一个作业装入内存,并把运行控制权交给该作业,当该作业处理完成时,又把控制权交还给监督程序,再由监督程序把磁带(盘)上的第二个作业调入内存。计算机系统就这样自动地一个作业一个作业地进行处理,直至磁带(盘)上的所有作业全部完成,这样便形成了早期的批处理系统。

磁带的出现大大简化了程序运行时间,程序员把程序都放在磁带上计算机自己读取(磁带的坏处就是不能随机访问、只能通过倒带来实现)。

批处理系统不是严格意义上的操作系统,虽然可用Monitor监督,可用汇编语言开发,但也只是操作系统的原型。

分时操作系统(多任务)

虽然批处理系统能节约系统的浪费时间,但是这个时候一次还是只能执行一个程序,因为内存还是只有一整段。一次只能执行一个程序它全权暂用内存,如果交叉运行的话第二个程序它就会暂用内存而损毁第一个程序。人们还发现程序运行大量时间都浪费在CPU等待I/O上(CPU很快其他设备很慢)。大家就想怎么样可以减少CPU的浪费时间并且批处理系统问题很多,比喻提交的任务不受控制。这个时候又有人提出一个概念也就是“分时操作系统”也称多任务,根据这个概念美国通用电气、MIT、贝尔实验室就合伙搞起了Multics项目,所谓分时系统就是让CPU在这个100毫秒处理第一个程序,时间到然后再保存现场第一个程序排队等待第二个程序的运算时间到时,再恢复第一个程序进行运算这个也称恢复现场,进而也就引进了进程的概念。

进程是怎么工作的,首先把CPU分成时间片(slice)。比喻说一个时间片是5毫秒,程序在这个时间片上来回切换,CPU是随着时间的流失而流失。而程序暂用全部内存这个问题,在内存上是使用虚拟地址空间解决的,虚拟地址空间就是把物理内存分段,因此每个进程或多个程序就这样运行起来了。那么这一切就需要一个机制来管理时间片,控制该哪个进程运行哪个进程退出等工作,管理这个机制的软件也就是“操作系统”。它负责CPU的时间片管理和内存分段协调,所以说操作系统也是一个软件,只不过它运行在硬件上,负责管理硬件资源,而且负责把硬件的计算能力切割成多个片分配给多个不同的程序运行,内存分配多个段并且在它们之间协调,它还负责程序的启动、终止、和内存回收及程序切换等工作。而这个时候我们把占用CPU和内存空间的程序也就称为“进程”(进程是有生命周期的,从启动到结束;而程序是放在硬盘上面的,是持久化的;)

还有实时操作系统:一个能够在指定或者确定的时间内完成系统功能以及对外部或内部事件在同步或异步时间内做出响应的系统,实时意思就是对响应时间有严格要求,要以足够快的速度进行处理,不能够想分时操作系统这样有延迟性,比如在航天、导弹轨迹计算等领域就需要这样的实时性。而实时操作系统又分为分为硬实时和软实时两种,具体的就不多做说明,了解就行了。

再往后发展还有:

通用操作系统:同时兼有多道批处理、分时、实时处理的功能,或者其中两种以上功能的操作系统。

网络操作系统:一种在通常操作系统功能的基础上提供网络通信和网络服务功能的操作系统。

分布式操作系统:一种以计算机网络为基础的,将物理上分布的具有自治功能的数据处理系统或计算机系统互联起来的操作系统。分布式系统中各台计算机无主次之分,系统中若干台计算机可以并行运行同一个程序,分布式操作系统用于管理分布式系统资源。

嵌入式操作系统:一种运行在嵌入式智能芯片环境中,对整个智能芯片以及它所操作、控制的各种部件装置等资源进行统一协调、处理、指挥和控制的系统软件。

等……….

操作系统这种软件不负责具体的工作只是负责协调其他各种程序的工作的,因此这个软件也可以有多个如Linux、Windows、Unix等。

编程语言有哪些?

编写计算机程序所用的语言是人与计算机之间交换的工具,按语言对机器的依赖程度分为机器语言、汇编语言和高级语言。

① 机器语言(Machine Language)

机器语言是面向机器的语言,每一个由机器语言所编写的程序只适用于某种特定类型的计算机,即指令代码通常随CPU型号的不同而不同。它可以被计算机硬件直接识别,不需要翻译。一句机器语言实际上就是一条机器指令,它由操作码和地址码组成。机器指令的形式是用0、1组成的二进制代码串。

② 汇编语言(Assemble Language)

汇编语言是一种面向机器的程序设计语言,它是为特定的计算机或计算机系列设计的。汇编语言采用一定的助记符号表示机器语言中指令和数据,即用助记符号代替了二进制形式的机器指令。这种替代使得机器语言“符号化”,所以汇编语言也是符号语言。每条汇编语言的指令就对应了一条机器语言的代码,不同型号的计算机系统一般有不同的汇编语言。

计算机硬件只能识别机器指令,执行机器指令,对于用助记符表示的汇编指令是不能执行的。汇编语言编写的程序要执行的话,必须用一个程序将汇编语言翻译成机器语言程序,用于翻译的程序称为汇编程序(汇编系统)。

汇编程序是将用符号表示的汇编指令码翻译成为与之对应的机器语言指令码。用汇编语言编写的程序称为源程序,变换后得到的机器语言程序称为目标程序。

③ 高级语言

机器语言与汇编语言受机器限制费工费时,并且缺乏通用性,为解决此问题,人们努力创造一种独立于计算机的语言。从20世纪50年代中期开始到20世纪70年代陆续产生了许多高级算法语言。这些算法语言中的数据用十进制来表示,语句用较为接近自然语言的英文字来表示。它们比较接近于人们习惯用的自然语言和数学表达式,因此称为高级语言。高级语言具有较大的通用性,尤其是有些标准版本的高级算法语言,在国际上都是通用的。用高级语言编写的程序能使用在不同的计算机系统上。
但是,对于高级语言编写的程序计算机是不能识别和执行的。要执行高级语言编写的程序,首先要将高级语言编写的程序翻译成计算机能识别和执行的二进制机器指令,然后供计算机执行。

一般将用高级语言编写的程序称为“源程序”,而把由源程序翻译成的机器语言程序或汇编语言程序称为“目标程序”。把用来编写源程序的高级语言或汇编语言称为源语言,而把和目标程序相对应的语言(汇编语言或机器语言)称为目标语言。

计算机将源程序翻译成机器指令时,通常分两种翻译方式:一种为“编译”方式,另一种为“解释”方式。所谓编译方式是把源程序翻译成等价的目标程序,然后再执行此目标程序。而解释方式是把源程序逐句翻译,翻译一句执行一句,边翻译边执行。解释程序不产生将被执行的目标程序,而是借助于解释程序直接执行源程序本身。一般将高级语言程序翻译成汇编语言或机器语言的程序称为编译程序。


如果您觉得本站对你有帮助,那么可以支付宝扫码捐助以帮助本站更好地发展,在此谢过。
喜欢 (1)
[资助本站您就扫码 谢谢]
分享 (0)

您必须 登录 才能发表评论!