Menu Close

OS简史

当你跨入计算机及相关的专业的时候,OS是你绕不过去的一个话题,并且是你最初就应该深刻认识的!当你接触到并了解到整个OS发展,你就会意识到他是一扇开的越来越大的门,就像一把有型的手帮助着你去解决那些复杂的问题,他的使命就是;把复杂的交给他,把轻松的还给你!当你从一万米高空落下,到你触地那一刹那,OS就像一股温柔的风,将你轻巧的卸下,让你感受来自计算机硬件的柔情!
OS 简单历史
OS 简单历史
第一篇博客,既然是博客的入门,那对应的就是计算机的入门,汤子瀛撰写的《计算机操作系统》对我留下了很深的印象,是这本书启蒙了我,推荐大家都去看一哈!简单的分享一下心中OS在我心里成长的过程!
初识OS,总免不了一堆官方语言;操作系统(operating system)是配置在计算机硬件上第一层软件系统,是对硬件系统的首次扩充,其主要作用是方便管理好设备,提高系统的吞吐量和利用率,并为用户和应用程序提供一个简单的接口!很生硬,那我就从三个方向。第一,OS的作用和目标。第二,OS的发展过程。第三,OS基本特点。这三个方向来介绍一下,相信在我通俗易懂的语言下,你会很轻松的了解他!
OS的目标:
一、方便性,计算机硬件上配置OS系统,可以使程序员书写的高级代码翻译成机器语言,或者通过一系列命令直接操作计算机系统!
二、有效性,有效性分为两个部分,其一,提高系统资源的利用率!其二,通过合理地组织计算机工作流程,来提高系统的吞吐量!
三、可扩充性,微内核系统是目前最流行的系统,其结构功能能方便的添加新的功能和模块,以及对原有的功能和模块进行修改,具有良好的可扩展性!
四、开放性,必须遵循国际标准,尤其是遵循开放系统互连的OSI国际标准,开放性也是衡量一个操作系统能否被广泛使用的一个重要标准!
OS的作用:
一、OS作为用户与计算机的接口,并处在用户和计算机硬件之间,用户通过操作系统来控制计算机硬件,交互方式有三种;命令方式,系统调用方式,图标–窗口方式!
二、OS作为计算机资源系统的管理者,在一台计算机系统中,包括以下四个方面;处理机,I/O设备,文件,存储器!处理机管理是用于分配和控制处理机,存储器管理主要负责内存的分配与回收,I/O设备管理是负责I/O设备的分配和操纵,文件是用于实现对文件的存取、共享和保护。
三、OS实现对计算机资源的抽象,对于一台无软件的计算机,称为裸机,因为它向用户提供的是硬件接口(物理接口),但是物理接口是十分复杂的!不利于人们去使用和学习I/O设备,于是就在物理接口上覆盖了一层I/O管理软件,通过这层软件人们可以方便的操作和调用I/O设备,而无需关心I/O是具体如何实现的,简单的说,在裸机上铺设I/O软件隐藏I/O设备的具体细节,向上提供了一组抽象的I/O设备。然后这些覆盖了上述软件的机器称为扩充机器或虚机器!同理,再在这层I/O管理软件上再覆盖一层文件管理的软件,通过这层软件可以实现对文件操作更加细节化,并向上层提供一组实现对文件进行存取的数据结构及命令,这样,用户就可以通过该软件提供的数据结构及命令对文件进行存取,这个时候,用户就可以看到一台功能更加强,使用更方便的虚拟机!也就是说,文件管理软件实现了对硬件资源的第二个层次的抽象,依次类推,如果再在文件管理软件上再覆盖一层窗口软件,使用户可以通过窗口更加方便快捷的操作计算机系统,从而形成一台功能更强的虚机器。
那么综上所述,我们说的正式一点;OS是铺设在计算机硬件上的多层软件的集合,它们不仅增强了系统功能还隐藏了硬件操作的具体细节,实现了对计算机硬件操作的多个层次的抽象模型,值得说明是,不仅可在底层对一个硬件资源加以抽象,还可以在高层对该资源底层已抽象的模型再次进行抽象,成为更高层的抽象模型。随着抽象层次的提高,抽象接口所提供的功能就越强!用户使用就越来越方便!
第一部分很简单就讲完了,但是却是之后的基础,我的布局是层层推进!
OS的发展可不是最近几年,要知道现在的很多充满人类智慧的产物都是经过几代人的努力才发展到现在的!在20世纪50年代中期,出现了第一个简单的批处理OS;60年代中期开发了出多道程序批处理系统;不久又推出分时系统,与此同时,用于工业和武器控制的实时OS也相继问世。20世纪70-90年代,是VLSI和计算机体系结构大发展的年代,导致了微型机、多处理机和计算机网络的诞生和发展,与此相应的,也开发出了微机OS,多处理机OS和网络OS,并得到极为迅猛的发展。
一、未配置操作系统的计算机系统
1、人工操作方式;
通俗的来说,人工操作是指由程序员将事先已穿孔的纸带(或卡片),装入纸带输入机(卡片输入机),再启动它们将纸带(或卡片)上的数据的程序输入计算机,然后启动计算机运行!当然了,缺点很明显。第一,一个用户就会占用整个机器,实在奢侈!第二,CPU等待人工输入程序再进行作业,当人工装纸带和卸载纸带的时候,CPU完全是空闲的!而且这样的人机矛盾日益加剧,CPU随着时间发展会越来越快,但是I/O设备的发展却十分缓慢,这使得CPU和I/O设备严重不匹配!所以接下来就提出来脱机输入输出的方式。
2、脱机输入输出方式;
接上面继续分析,如果当CPU需要输出时,可先由CPU把数据直接从内存高速的输送到磁带上,在由外围机的控制下,从磁带在通过相对应的输出设备输出,也就是通过将数据的输入输出交给外围机来完成,换句话来说,是在脱离主机的情况下完成的,所以叫脱机输入输出方式,那我们举一反三,在主机控制下进行输入输出的方式就叫联机输入输出方式。那我们来总结一下脱机输入输出的优点吧;第一,首先它肯定是减少了CPU的等待时间,将原始的转载纸带和将数据从低速的I/O设备传输到磁带上任务交给外围机来完成,完全的不占用主机的时间,所以直接的减少了CPU的空闲时间。第二,极大的提高了I/O速度,因为当CPU需要输入数据时,是直接从磁带上告诉的导入的内存的,比起来低速的I/O设备,在时间上占有很大的优势!
二、单通道批处理系统
原理很简单单通道就是只有一个通道,也正是因为只有一个通道,一次只能执行一个程序,当这个程序执行完了,才能执行下一个!具体细节是;首先需要把一批作业以脱机的方式输入到磁带上去,然后给系统配备一个监督程序,在这道监督程序的安排下,是这批作业能一个接一个的进入!首先将第一个程序装入内存,监督程序会把监督权交给作业本身,当作业处理完成时,再将监督权交给监督程序,监督程序就会再调下一个程序进入内存,就这样,一个接一个程序就会有序的进行执行,但是内存中始终只有一道程序运行。所以名字叫单通道批处理系统!当然了,他的缺点也是显而易见的,就是系统的资源还是得不到有效的利用,内存中不管怎么说,都只有一道程序在运行,那如果这个程序在运行过程中发出了I/O请求,之前多次说过,I/O设备的低速性,所以CPU还是处在等待态!这就是单通道很明显的缺点!
三、多通道批处理系统
如果你有了单通道批处理的概念的话,你就会基本了解多通道的意思!OS的发展是环环相扣的,刚才提到了单通道时运行中的程序如果突然发出I/O请求,因为I/O设备的低速性,CPU又会处在空闲状态,那在这个空闲状态何不让CPU去执行别的程序呢?这就延伸出多通道批处理系统,具体细节是;先将用户提交的作业放到外存上,并让他们排成一个队列,称为后备队列,然后又作业调度程序按照一定的算法,从后备队列中选择若干个程序进入内存,是它们共享CPU和系统的各种资源,然后,利用运行其中一个程序时提出的I/O请求,去处理另外一个程序!接下来我们来分析他的优缺点;第一,多通道批处理的资源利用率高,这种交替的运行,可以保持CPU一直处于忙碌状态,而且他是一次装入若干的程序,那也可以把内存的利用率提高,也可以提高I/O设备的利用率。第二,系统的吞吐量大,就是因为CPU和其他资源保持了忙碌的状态,而且只有当作业完成时运行不下去了才会进行切换,系统开销比较小。第三,平均周转时间比较长,由于作业要排队依次进行处理,因而作业的周转时间较长,通常需要几个小时,甚至需要几天。第四,他并没有交互能力,作业一旦交给系统,直到作业完成,用户是不能和自己的作业进行交互的,所以你修改和调试程序都是极不方便的!
如果有了多通道批处理系统解决问题你就不要以为可以万事大吉了,不管什么样的系统都是为了使之前的变得更好,而对于计算机操作系统的发展来说需要解决的问题还多着呢!我们可以分析一个需要解决的问题
多通道批处理系统需要解决的问题;
1、处理机争用的问题,既要能满足各道程序运行的需要,又要提高处理机的利用率。
2、内存分配和保护问题,系统应该为每道程序分配必要的内存空间,使他们都能“各得其所”,且不会因为某道程序出现异常情况而破坏其他程序。
3、I/O设备的分配问题,系统应该适当的采取策略去分配系统中的I/O设备,以达到既能方便使用,又能提高I/O设备利用率。
4、文件的组织和管理问题,系统应该有效的组织和管理系统存放的大量的程序和数据,使他们既方便于用户使用,又能保证数据的安全性。
5、作业管理问题,系统中存放着各种作业(应用程序),系统应该对系统中所有作业使他们既便于用户使用,以满足这些作业用户的不同要求。
6、用户与系统的接口问题,为了使用户能更加的使用操作系统,OS还应该提供用户和OS之间的接口。
所以我们分析到现在,也可以把操作系统定义为;操作系统是一组能有效的组织和管理计算机硬件和软件资源,合理地对各类作业进行调度,以及方便用户使用的集合。
四、分时系统
操作系统的发展说到底还是为了更好的服务于人,上面我们说的多通道批处理系统是为了提高资源利用率和系统吞吐量,那么分时系统就是建立在人机交互上的需求上,所以就形成这种新型的OS,根据用户的需求可以总结为一下几个方面;
1、人–机交互,当一个程序员编写好一个程序之后,都需要进行上机调试,由于新编的代码难免会出现一些问题,所以就需要程序员及时对程序进行调试,此时人–机交互就显得尤为重要!
2、共享主机,因为在20世界60年代计算机还十分昂贵,所以一台计算机需要很多人共同使用,当然了,对于每一个人,都希望在共享计算机时,能和自己独占计算机一样!你既可以干自己的事,还可以感觉不到别人的存在!
那么首先解决第一个问题,人机交互,在我们分析多通道批处理系统的时候,我们知道,作业都是先留在外存上,即便被调入内存中,也是需要时间的等待才能运行,用户无法于作业进行交互,为此,系统就必须提供多个终端,同时给多个用户使用,其次,当用户在自己的终端上键入命令,系统能即使接收命令,并及时处理该命令,再将结果返回给用户,此后,用户可以根据系统反应回的情况,在继续键入下一条命令,这就是所谓的人–机交互,而且,也可以满足多个用户在多个终端上通过自己键入命令,系统也都能全部及时接受并处理。
1、及时接收;想要做到及时接收多个用户的键入的命令,在系统配置一块多路卡就可以,啥叫多路卡呢?比如现在有64个用户,那就配置一块64用户的多路卡,多路卡主要是实现分时多路复用,就是说主机会快速周期性的扫描各个终端,在每个终端停留的时间很短,例如30ms,用来接收从终端发来的数据,所以一个64位的多路卡,用不到两秒的时间就可以把64个用户终端都扫描一次,当然了,我们还需要保证从终端接收到的命令可以依次逐条的进行处理,那我们就为从,每一个终端配置一个缓冲区,用来暂存用户键入的命令!
2、及时处理;人机交互最关键的一点就是,用户能及时对自己的程序进行处理和修改,所以每一个用户的作业都必须放在内存上进行处理,并能频繁的获得处理机运行,否则用户键入的命令无法进入到自己的程序,所以为了解决这个问题,就必须彻底的改变原来批处理系统的运行方式,转而采用以下方式;
1、作业直接进入内存,因为作业在磁盘上是无法运行的,所以必须进入内存。
2、采用轮转运行方式,如果一个作业独占CPU并长时间运行,那么其他作业根本就没有机会被运行,为避免一个作业长期独占处理机,就引入时间片这个概念,一个时间片就是很短的一段时间(30ms),每个作业只允许执行一个时间片,然后就换下一个作业执行,那么在不长的时间的里,所有的作业都能被执行一下,便可以使用户都能及时的和自己的作业进行交互,从而可使用户的请求得到及时响应。
那我们既然介绍了分时系统,那我们把他再和多通道批处理系统进行对比一下吧!
1、多路性,一台主机,通过多个终端使得同时多个用户都可以使用,显著地提高了计算机资源的利用率,直接就可促进计算机得到更加广泛的使用。
2、独立性,对于每一个用户来说,在自己的终端去使用计算机,都像是在独自占用主机进行操作。
3、及时性,就是说,你的请求在很短的时间内就可以得到反应!
4、交互性,用户可以通过终端和计算机进行广泛的人机对话!比如你要访问文件系统和数据库系统,请求打印服务等等!
五、实时系统
在我们深入认识实时系统之前,有必要把分时系统和实时系统做一个区分,切记!分时系统最重要的概念是时间片!而“实时”,是表示“及时”,所以实时系统是指系统能及时响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时任务协调一致地运行。我在举几个常见例子;
第一个,工业(武器)控制系统,如果计算机被用于生产过程的控制,形成以计算机为中心的控制系统时,该系统应具有能实时采集现场数据,并对所采集的数据进行及时处理,进而能够自动的控制相应得执行机构,使之具有按预定的规律变化的功能,确保产品的质量和产量,类似的,也可以将计算机用于对武器的控制,如火炮的自行控制系统、飞机的自动驾驶系统,以及导弹的制导系统等。
第二,信息查询系统,该系统接收从远程终端上发来的服务请求,根据用户提出的请求,对信息进行检索和处理,并能及时对用户做出正确的回答,实时信息处理系统有火车和飞机的订票系统等。
第三,多媒体系统,随着计算机硬件和软件的快捷发展,已可将文本、图像、音频和视频等信息集成在一个文件中,形成一个多媒体文件,如在用DVD播放器所播放的数字电影中就包含了音频、视频和横向滚动的文字等信息,为了保证有好的视觉和听觉感受,用于播放音频和视频的多媒体系统等,也必须是实时信息处理系统。
第四,嵌入式系统,随着集成电路的发展,已制作出各种类型的芯片,可将这些芯片嵌入到各种仪器和设备中,用于对设备进行控制或对其中的信息作出处理,这样就构成了所谓的智能仪器和设备,此时还需要配置嵌入式OS,它同样需要具有实时控制或处理的功能。
在此向大家介绍实时任务中比较有代表性的两组;
第一组;周期性实时任务和非周期性实时任务,周期性实时任务是指这样一类任务,外部设备周期性的发出激励信号给计算机,要求他按照指定周期循环执行,以便周期性的控制某个外部设备,反之,非周期性实时任务并无明显的周期性,但是都必须联系着一个截止时间,或称为最后期限,他又可分为;1、开始截止时间,指某个任务在某个时间以前必须开始执行;2、完成截止时间,指某个任务在某时间以前必须完成。
第二组;硬实时任务和软实时任务,硬实时任务是指系统必须满足任务对截止时间的要求,否则可能出现难以预料的后果,用于工业和武器的实时控制系统,通常他执行的是硬实时任务。软实时任务也联系着一个截止时间,但并不严格,若偶尔错过了任务的截止时间,对系统产生的影响也不会太大,诸如用于信息查询系统和多媒体系统中的实时系统,通常是软实时任务。
当你看完发展过程其实你已经算是一个伪IT人员了,因为你对系统的发展了如指掌,这时你是可以挤进他们的人群插一句话了!
继续!之前我们介绍了多通道批处理系统,实时系统,分时系统,多通道批处理系统能够提高系统的利用率和系统的吞吐量,实时系统具有实时的特征,分时系统能够获得及时响应,在此之外他们都之间都具有的一些特性有四个,分别是共享、并发、虚拟、异步!我们先来看一下并发
一、并发
如果没有并发,那么OS根本无法做到提高系统的利用率和吞吐量!但是说到并发,大家可能都会联想到一个概念就是并行,其实这两者之间既有着相似之处又有着区别,并行性只要指的是两个或多个事件在同一时刻发生,而并发性是指两个或者多个在同一一个时间间隔内发生。
其实从宏观上来说,再多道程序环境下,并发性是指在一个时间段内宏观上有多个程序在同时运行,但是在单处理机系统中,每一个时刻却仅有一道程序在运行,所以从微观的角度上来说,这些程序只不过是交替执行,举个例子;一秒时间内,0-15ms程序A运行,15-30ms程序B运行,30-45ms程序C运行,45-60ms程序D运行,所以我们可以这样说,在宏观上有四道程序在同时进行,但是在微观上,这四个程序是交替进行的。
于是,大家就可以清楚的知道要想真正的并发,就要做到拥有多个处理机,然后多个程序就可以分配到多个处理机上,实现同时。
但是没有什么能难倒聪明的开发者,于是乎,便催生出了进程这个概念,之前我们说过,当一个程序在运行过程中发出了一个I/O请求,那么这个程序是顺序执行的,所以它会停止,等待I/O程序执行,在I/O程序未完成之前,该程序也是不可以执行的。但是有了进程这个概念之后,给多个程序都分别建立一个进程,这样就能使他们并发执行了。
其实进程,严格意义来说,是指在系统中能独立运行并作为资源分配的基本单位,它是有一组机器指令、数据和堆栈等组成的,是一个能独立运行的活动实体,而且多个进程之间可以并发执行和交换信息。事实上,进程和并发是现代操作系统中最重要的基本概念,也是操作系统运行的基础。
二、共享
这个共享在计算机中是不同的概念,大家所熟知的共享其实就是某种资源能够被大家使用,比如一座图书馆里面的图书能够提供给大家借阅,而且只需要通过适当安排,彼此之间不要出现竞争同一本书就好了,这样的资源管理是比较简单的。
但是在OS环境下的资源共享又被称为资源复用,是指系统中的资源可供内存中多个并发执行的进程共同使用。这一句话限制了两个东西,一个是时间(进程在内存期间),另一个是地点(内存)。你要知道系统中的资源远少于多道程序需要的资源的总和,所以多道程序必然会争夺资源,这个妥善的管理资源共享就显得尤为重要!接下来介绍两种资源共享的方式
1、互斥共享方式
举个例子,当进程A要访问某个资源时,必须先提出要求,若此时该资源空闲,系统便可以将该资源分配给进程A,但是如果有其他进程也要访问该资源,只要A未用完就必须等待,只有当A用完之后并释放系统资源后,才允许另一个进程访问,这种资源共享方式叫互斥共享并且把这种一段时间内只允许一个进程访问的资源叫临界资源!
临界资源有哪些呢?它包括了系统中的大多数物理设备,以及栈、变量和表格,都属于临界资源。
2、同时访问方式
除了临界资源之外,系统还存在另一类资源,允许在一段时间内由多个进程“同时”对他们进行访问,这里所谓的“同时”,在单处理机环境下是宏观的,而在微观上,这些进程对该资源的访问时交替进行的。典型的可供多个进程“同时”访问的是磁盘设备,一些重入代码编写的文件也可以被“同时”共享,允许若干用户同时访问该文件。
三、虚拟
其实最早出现“虚拟”的技术是在通信中,在早期,每一条物理信道只能供一对用户通话,为了提高通信信道的利用率而引入“虚拟”技术。是该技术是通过“空分复用”或者“时分复用”技术,将一条物理信道变为若干个逻辑信道,使原来只能供一对用户通话的物理信道,变为能供多个用户同时通话的逻辑信道。
其实在OS中,把通过某种技术将一个物理实体变为若干个逻辑上的对应物的功能称为“虚拟”前者是实的,后者是虚的,是用户感觉上的东西。相应的,把用于实现虚拟的技术称为虚拟技术,在OS中也是利用时分复用和空分复用技术来实现“虚拟”的。
1、时分复用技术
虽然名字很复杂,但是其提供的技术却也很好理解,它利用某设备为一用户服务的空闲时间,又又转去为其他用户服务,使设备得到最充分的利用。比如;
虚拟处理技术;利用多道程序设计技术,为每道程序建立至少一个进程,让多道程序并发执行,此时虽然系统中只有一台处理机,但是通过分时复用的方法,能实现(宏观上)多个用户同时使用,并且让每个终端上的用户都认为自己是在独自使用处理机。
虚拟设备技术;通过虚拟设备技术,也通过分时复用的方法,将一台物理I/O设备虚拟为多台逻辑上的I/O设备,并允许每个用户占用一台逻辑上的I/O设备。这样就把一个在一段时间内只允许一个用户访问的设备变成了可以支持多个用户“同时”访问的共享设备。
2、空分复用技术
就像开头所说的那样,在20世纪初的电信业中,就已经通过使用频分复用技术来提高信道的利用率。它是指将一个频率范围比较宽的信道划分成多个频率较窄的信道(称为频带),其中任何一个频带都仅供一对用户通话,早期的频分复用技术只能将一条物理信道划分为几条到几十条话路,后来发展到成千上万条,每条话路供一对用户通话。再后来计算机也把空分复用技术用于对储存空间的管理,用以提高存储空间的利用率。
那就是说,多道程序技术是通过利用处理机的空闲时间运行其他程序,提高了处理机的效率,那么,空分复用技术就是利用存储器的空闲空间分区域存放和运行其他的多道程序,以此来提高内存的利用率。
但是,仅仅只是单纯的空分复用技术也只是提高了空闲空间的利用率,并不能从逻辑意义上扩大存储器的容量,还必须使用虚拟储存技术才能达到目的,虚拟储存技术本质就是内存的分时复用,也就是说他可以采用分时复用的形式,使一个程序运行在远小于他的内存空间上。举个例子,一个100MB的程序可以运行在30MB内存空间上,那是因为系统每次都是把一部分的程序调入内存之中,运行完之后再将这部分换出,再换下一部分进去。这样的不停置换,保证用户程序的各个部分分时地进入内存。
在这里我们应该着重指出的是,虚拟功能的实现,如果是使用分时复用技术的方法,既对某一物理设备进行分时使用,假设N为虚拟的逻辑设备总数,那么每台虚拟设备的速度都一定小于或者等于物理设备速度的1/N,类似的,如果使用空分复用的方法,此时每一台虚拟的设备所占用的空间大小必然等于或者小于物理设备空间的1/N。
四、异步
我们需要一点篇幅去描述异步,首先在单道程序下,只允许运行一道进程,其余进程只能等待,当执行的进程正在执行时,突然提出了一个打印机的请求,但是此时打印机正在为其他进程服务,由于打印机属于临界资源,因此正在执行的进程必须等待,并释放出处理机,直到打印机空闲并在此获得处理机,该进程方能继续执行,可见,因为资源等因素的限制,使进程的执行通常都不可能一气呵成,而是走走停停的形式运行。
所以呢,对于内存中的每一个进程,在何时能获取处理机运行,何时又因提出某种资源请求而暂停,以及进程以怎样的速度向前推进,每道程序需要花费多长时间才能完成等等,都是不可预知的。由于各个用户程序性能不同,比如,有的程序侧重于计算而较少需要I/O;而有的程序其计算少而较多需要I/O,这样的话就很可能先进入内存的程序是后完成的,而后进入内存的事先完成的,或者说,进程是以人们不可预知的速度向前推进的,此即进程的异步性!就算是这个样子,我们在OS中配置有完善的进程同步机制,且运行环境相同,则作业即便经过多次运行,也会获得完全相同的结果,因此异步运行方式是允许的,而且操作系统的一个重要特征。
三大部分已经写得差不多了,不知道是否勾起你对OS的兴趣了呢?这只是小小的一部分而已,其他的浩瀚无比,但是又充满了极强的趣味性!期待着我们的探索呦!!
Posted in Linux内核
0 0 投票数
Article Rating
订阅评论
提醒
guest
0 评论
内联反馈
查看所有评论

相关链接