第一部分:枝繁叶茂的操作系统篇

一:操作系统功用

操作系统的作用在很多书里已经讲得太多了,笔者这就不赘述了,笔者只想给出一个形象的例子来理解操作系统。 
人脑就是一个很好地例子:人脑就是一个高速运行而且又极为复杂的CPU,里面又有一套极为复杂的系统----生理系统(操作系统),而脑中的思绪就如同应用软件考虑着大千世界的纷纷扰扰;人的思绪处理着人脑所接受来的信号(虽然经过了耳朵和眼睛的前期加工),思考着自身的未来何去何从。而自己虽然没有意识的去维持身体健康,但是身体还是在生理系统下健壮如牛。所以思绪把握着整体的发展方向,而不用分神去维持身体的各个部件的正常运行,比如那个细胞分泌多少荷尔蒙,那个细胞分泌多少胰岛素;诚如是,那人不给整的精神分裂啊!!可见,生理系统是多么重要啊,它完全把人的思绪给解放出来了(解放生产力嘛),并且维持着机体的正常运行。
咱也来个总结呗,生理系统就是一个中间层,将思绪和机体分离了开来,并维持着机体正常运行,机体的正常运行又保证了思绪的存在(物质和思维的辩证关系)。同理:操作系统就属于这样的一个中间层,解放了应用程序开发员,从而使得应用程序井喷式的增长;同时,也在维持硬件的正常运行,保证个体的存在。
由此可见,操作系统的重要性是不言而喻的。操作系统的规划的优劣直接影响着系统的稳定,直接决定上层开发的难易。

二:操作系统的发展历程

操作系统,如同一个进化的物种,在时间的长河中不断的自我完善。并不是一簇而就,上帝捏造了人,人就一直这样,那也太恐怖了。流动性是整个世界精彩的根源,如果这都没了,那世界会是多么的单调,生活有时多么的乏味。人们可以从白衣而至王侯将相,而王侯将相也不免成为阶下囚,巡回轮转早就大千世界喜怒哀乐愁。而历史不是用来摆设的,而是用来让人们体会事情为什么会如此进展,而不是这样活着那样,中间有巧合和偶遇,而更多的是事在人为,把握事情的发展规律,才能决胜千里之外(前事不忘后事之师)。
而什么是驱动操作系统发展的激励因素呢?第一点是硬件成本的降低;可以想象当时的硬盘直径两米,完全可以当饭桌使用,而如今的硬盘揣在裤兜还有余;第二点:系统的复杂性和功能不断地变化;当时的程序使用纸带记录,人为控制执行,而如今程序程序执行都是自动运行,两者的复杂性是不可同日而语的。第三点:就是操作系统和攻击者的博弈;总有些人就是以找操作系统的漏洞为乐趣,不断攻击操作系统,而操作系统不断完善,填补漏洞,在这样的对弈中,操作系统不断发展。(引自:计算机的心智)

第一阶段:状态机操作系统(1940年以前)

这是计算机处在萌芽期时出现的操作系统。它实际上算不上是我们现在通常所定义的操作系统,而是一种简单的状态转换程序:根据特定输入和现在特定状态进行状态转换而已。这个时候的计算机是所谓的自动机:只限于加减法,更不支持交互命令输入,也不支持自动程序设计,甚至没有存储程序的概念。
驱动这一阶段的操作系统的动力是个人英雄主义,完全是某些人的个人努力。这个阶段没有现代意义上的操作系统,如果非要说有的话,人就是这个时代的操作系统:因为自动机的一切动作均是人在操控的。

第二阶段:单一操作员、单一控制端操作系统(20世纪40年代)

这种单一操作员单一控制终端(SOSC,single operator,single console)的操作系统时在刚出现计算机是人们能想到的最直观的控制计算机的方式。这个时候代表机型为美国宾夕法尼亚大学与其他机构合作制作的ENIAC计算机。这是第一台电子计算机,但不是第一台计算机。在这之前有个英国人造了一部机械计算机,通过手柄摇动能够进行计算。在ENIAC刚造出来的时候,谁都不知道计算机是怎么回事,所以没有操作系统的整体概念,唯一能想到的就是提供一些标准命令供用户使用,这些标准命令集合就构成了我们原始操作系统SOSC。
SOSC操作系统的设计目的就是满足基本的功能,并提供人机交互。在这种操作系统下,任何时候只能做一件事,即不支持并发和多道程序运行。操作系统本身只是一组标准库函数而已。操作系统并不自我运行,而是等待操作员输入命令再运行。用户想使用什么服务,就直接在命令行键入代表该服务的对应操作系统的库函数名(文件名)即可。
这种操作系统的资源利用率很低:你输入一个命令就执行一个库函数,拨一下动一下。当操作员在思考时或进行输入输出时,计算机则静静的等待。当然了,从人的角度来看,效率并不低,你键入什么,计算机就立即执行什么。但从机器的角度考虑,因为时刻都等着人相对较慢的动作,效率就太低了。所以提高计算机的利用率就变得十分重要。

第三阶段:批处理操作系统(20世纪50年代)

为了提套SOSC的效率,人们提出了批处理操作系统。在仔细观察SOSC后,人们发现,SOSC效率之所以低下,是因为计算机总是在等待人们的下一步动作,而人的动作总是很慢。因此,人们觉得,如果将人的因素拿走,让所用的人先想好自己要运行的命令,形成一个清单,打印在纸带上,然后交由一个工作人员来一批一批地处理,效率不就提高了吗?就这样就形成了我们所说的批处理操作系统。
批处理操作系统针对的是第二代通用计算机,如IBM的1401和7094,通过去除人机交互达到CPU和输入输出利用率的改善。批处理过程是:用户将自己的程序编在卡片或纸带上,交给计算机管理员。管理员在收到一定数量的用户程序后,将卡片及纸带上的程序和数据通过IBM1401机器读入,并写到磁带上。这样每盘磁带通常会含有多个用户的程序。然后,计算机操作员将这盘磁带加载到IBM7094上,一个一个地运行用户的程序,运行的结果写在另一个磁盘上。所有用户程序运行结束后,将存有结果的磁盘取下来,连到IBM1401机器上进行结果打印,然后就可以将打印结果交给各个用户了。如下图所示:

很显然,在批处理下,操作系统的功能和复杂性均得到提升。在SOSC环境下,每个用户自己控制程序的开始和结束。而在批处理下,很多用户的程序一个接一个地存放在磁盘上,用户本人并不在场,无法自己控制程序的开始和结束。而这个任务交给了批处理操作系统。负责这个任务的操作系统功能就称为批处理监视器(batch monitor)。整个批处理操作系统就是由批处理监视器和原来的操作系统库函数组成。
因为磁带上的多个用户程序必须以某种方式进行隔离,这需要一个抽象的东西来区分一下。这个抽象的东西不是别的,就是文件。处理文件管理外,此时的操作系统还能够管理读卡机,磁带,打印机等。这种操作系统的任务就是加载一个程序、运行、打印结果,然后执行下一个程序。批处理操作系统的两个部分的关系也很清楚:一部分是控制程序执行,一部分是支持程序执行。
驱动这个阶段操作系统反战的动力是改善效率。因为机器的昂贵,我们不能容忍机器在操作员思考或I/O设备工作起来闲置起来。

第四阶段:多道批处理操作系统(20世纪60年代)

虽然批处理操作系统通过无需人机交互过程而在一定程度上提高了计算机的效率,但还是不那么令人满意。因为,CPU和输入输出设备的运行是串行的,即在程序进行输入输出时,CPU这能等待。CPU需要不断地探询I/O是否完成,因而不能执行别的程序。在程序量少时,还能处理,但随着待处理的程序大量增加,这逐步成为限制因素。
人们有考虑,能否将CPU和I/O进行并发呢?即在一个程序输入输出的时候,让另一个程序继续执行。不过需要付出代价。应为CPU和I/O重叠需要我们将多个程序同时加载到计算机内存里,从而出现了所谓的多道批处理操作系统。典型的多道批处理操作系统是IBM的OS/360。
  显而易见,操作系统的功能和复杂性都比简单批处理时要复杂得多:既要管理工作,又要管理内存,还要管理CPU调度。
操作这个阶段操作系统发展的动力仍然是改善效率。

第五阶段:第五代之一------分时操作系统(20世纪70年代)

多道批处理操作系统出现使计算机的效率(主要是吞吐量)大大提高。不过这时人们又提出了另外一个问题:将程序制作在卡片上交给计算机程序员统一管理,将使得用户无法即时获知程序运行的结果。而这是一个大问题。想想如果你编了一个程序,却需要别人去运行,并等上若干天才知道结果,这个滋味显然不好受。万一计算机管理员疏忽了,忘记运行你的程序,或者操作失误,导致程序丢失,情况就更糟糕。
基于上面的考虑,人们就像,能否让人互道计算机前面来,每个人自己管理自己的程序,但是,大家的程序可以同时运转。人的因素又引回来了。这看上去与原始的SOSC似乎一样,但有个关键的不同:多个人同时连接在计算机上,每个人看作是另外的一个I/O终端而已。每个用户拥有一个终端显示器,这些终端显示器经过RS232穿行缆与计算机连接。终端显示器只能接受和有限的发送文本命令和信息。计算机在所有连接的终端用户之间进行分时,即分给每个人有限的时间,只要时间到了,就换一个进程。这种时分切换下的操作系统就是分时操作系统。以前是机器等人,现在是人等机器,将机器彻底解放了!!
显然,和前面几代操作系统相比,分时操作系统要复杂得多。相比于多道批处理系统,最主要的变化是资源的公平管理。除此之外,池化(pooling)、互斥、进程通信等机制相机出现,使得分时操作系统的复杂性大为增加。分时操作系统里面最有名的应该是MULTICS和UNIX。
驱动这个阶段操作系统发展的动力是影响时间和对越来越多资源的管理。因为机器昂贵,我们不能容忍机器(CPU)在I/O设备工作期间闲置下来。同时,应为人的时间宝贵,我们不能容忍人们坐在机器前进行漫长的等待。因此,我们发明了分时操作系统来解决这两个问题。因为分时而引入的多道程序设计,又造成操作系统空前复杂,我们需要应对竞争。通信、死锁、保护等一系列的新功能。因此,操作系统在本阶段变得相当复杂。

第五阶段:第五代之二------实时操作系统

随着人类技术的进步,计算机得到广泛的应用。其中的一种应用成为进程控制系统,即使用计算机对某些工业进程进行监视,并在需要的时候采取行动。所有这些系统都具备一个特点:计算机对这些应用必须在规定时间内作出响应,不然就有可能发生事故或灾难。这种对计算机响应时间有要求的系统通常称为临界系统或应用。为了满足这些应用对响应时间的要求,人们就开发出了实时操作系统。实时操作系统时指所有任务都在规定时间内完成的操作系统,即必须满足时序可预测性。这里需要提请读者注意的是,实时系统并不是反应很快的系统,而是反应具有时序可预测性的系统。当然了,在实际中,实时系统通常是反应很快的系统,但这是实时系统的结果,而不是定义。
显然,实时操作系统的最重要部分就是进程或工作调度。只有精确、合理和及时的进程调度才能保证响应时间。当然,对资源的管理也非常重要。没有精密复杂得资源管理,确保进程按时完成就称为一句空话。另外,基于其使用环境,实时操作系统对可靠性和可用性要求也非常高。如果在这些方面出了问题,时序可预测性将无法达到。
实时系统通常又分为软实时系统和硬实时系统。软实时系统在规定时间得不到响应所产生的后果是可以承受的,如流水线装配。即时装配线瘫痪,不就是损失点钱嘛。而硬实时系统在得不到实时响应可能产生不能承受的灾难,如导弹防卫系统。如果反应迟钝,结果就可能是人命损失。
商业实时操作系统的代表有VxWorks和EMC的DART系统。

第六阶段:现代操作系统(1980年以后)

在80年代后期,计算机工业获得井喷式的发展。计算机和操作系统领域均进入到了一个百花齐放、百家争鸣的时代。尤其是工作站和个人机的出现,使计算机大为普及。这个时候的操作系统代表有个:DOS、Windows、UNIX、Linux和各种主机操作系统,如VM、MVS、VMS等。DOS、Windows、UNIX、Linux通常称为开放式系统操作系统,分别运行在PC,VAX和工作站上。操作系统重回到子函数库的状态。
由于个人机由用户一个人独享,分时操作系统的许多功能就无需存在。因此,个人机操作系统又变回到了标准函数库系统。这个时候最有名的当然是DOS、Windows 3X、苹果机操作系统(MacOS)等。
但在独享一阵个人机后,人们发现,没有分时功能的操作系统使一些事情做不了。因为,虽然只有一个人在用机器,但这个人可能想同时做好几件事,例如,同时运行好几个程序,没有分时功能是不可能的。于是,人们觉得需要对个人机操作系统进行改善,将各种分时功能又加了进去。
这时候就需要对程序进行保护,应为现在运行的多个程序,虽然都是你的东西,但是也不能混淆。于是,Windows NT 出现了,Xenix 出现了,Ultix出现了。
由于网络的触发,网络操作系统和分布式操作系统出现了。网络操作系统的任务就是将多个计算机虚拟成一个计算机。传统的网络操作系统是在现有的操作系统基础上增加了网络功能,而分布式操作系统则是从一开始就把对多计算机的支持考虑进来。
后来分布式操作系统出现了,因为网络出现了。我们现在虽然有很多电脑,但是很多处于闲置,这就是一个极大的浪费,我们希望空闲的都能利用起来。分布式计算出现的原因是希望把任务分开,得到的结果是计算资源的集合,这让很多计算机看上去像一个。有两种分布式系统,一个是网络操作系统,就是在传统操作系统上加一个补丁,一个是分布式操作系统。网络操作系统就是打补丁,分布式操作系统是重新设计的一套,所以比网络操作系统效率高。
综上我们介绍了操作系统的发展历程基本上摘自《计算机的心智》。

三、UCOS操作系统

UCOS操作系统属于实时操作系统,就必须符合实时操作系统的要求,即必须满足时序可预测性。前提是必须有效的分配和利用系统的资源,合理分配才能达到实时处理的目的。
UCOS操作系统包含内容如下图所示:

另外还有一些机制:锁实现防范探究、调度机制、通信机制、任务堆栈之间的切换等等。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ava实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),可运行高分资源 Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值