• 计算机操作系统


    1.为何要有操作系统

    计算机是由一个或多个处理器加上、内存、硬盘、键盘、鼠标、等输入输出设备组成的,这些复杂的硬件要想协调工作就必须在此基础上加一层管理和控制计算机硬件软件资源的计算机程序,这就是操作系统!

    任何其他软件都必须在操作系统的支持下才能运行。它的任务就是为用户程序提供一个更好、更简单、更清晰的计算机模型,并管理刚才提到的所有设备。

    2.操作系统的位置

    以图为例

    操作系统位于计算机硬件与应用软件之间,本质也是一个软件。操作系统由操作系统的内核(运行于内核态,管理硬件资源)以及系统调用(运行于用户态,为应用程序员写的应用程序提供系统调用接口)两部分组成,所以,单纯的说操作系统是运行于内核态的,是不准确的。

    3.操作系统的功能

    操作系统(Operating System,简称OS)是一管理电脑硬件与软件资源的程序,同时也是计算机系统的内核与基石。操作系统是一个庞大的管理控制程序,大致包括5个方面的管理功能:进程与处理机管理、作业管理、存储管理、设备管理、文件管理
     4.操作系统的发展

    1980年代前[编辑]

     
    IBM System/360,大型主机的经典之作

    第一部电脑并没有操作系统。这是由于早期电脑的创建方式(如同建造机械算盘)与性能不足以运行如此程序。但在1947年发明了晶体管,以及莫里斯·威尔克斯发明的微程序方法,使得电脑不再是机械设备,而是电子产品。系统管理工具以及简化硬件操作流程的程序很快就出现了,且成为操作系统的滥觞。到了1960年代早期,商用电脑制造商制造了批处理系统,此系统可将工作的建置、调度以及运行序列化。此时,厂商为每一台不同型号的电脑创造不同的操作系统,因此为某电脑而写的程序无法移植到其他电脑上运行,即使是同型号的电脑也不行。

    到了1964年,IBM System/360推出了一系列用途与价位都不同的大型机,而它们都共用代号为OS/360的操作系统(而非每种产品都用量身订做的操作系统)。让单一操作系统适用于整个系列的产品是System/360成功的关键,且实际上IBM目前的大型系统便是此系统的后裔,为System/360所写的应用程序依然可以在现代的IBM机器上运行。

    OS/360也包含另一个优点:永久贮存设备—硬盘的面世(IBM称为DASD)。另一个关键是分时概念的创建:将大型机珍贵的时间资源适当分配到所有用户身上。分时也让用户有独占整部机器的感觉;而Multics的分时系统是此时众多新操作系统中实践此观念最成功的。

    1963年,奇异公司贝尔实验室合作以PL/I语言创建的Multics[1],是激发1970年代众多操作系统创建的灵感来源,尤其是由AT&T贝尔实验室的丹尼斯·里奇肯·汤普逊所创建的Unix系统,为了实践平台移植能力,此操作系统在1973年由C语言重写;另一个广为市场采用的小型电脑操作系统是VMS

    1980年代[编辑]

    第一代微型计算机并不像大型机或小型电脑,没有装设操作系统的需求或能力;它们只需要最基本的操作系统,通常这种操作系统都是从ROM读取的,此种程序被称为监视程序(Monitor)。1980年代,家用电脑开始普及。通常此时的电脑拥有8-bit处理器加上64KB内存显示器键盘以及低音质喇叭。而80年代早期最著名的套装电脑为使用微处理器6510(6502芯片特别版)的Commodore C64。此电脑没有操作系统,而是以一8KB唯读记忆体BIOS初始化彩色显示器、键盘以及软盘驱动器和打印机。它可用8KB唯读记忆体BASIC语言来直接操作BIOS,并依此撰写程序,大部分是游戏。此BASIC语言的解释器勉强可算是此电脑的操作系统,当然就没有内核或软硬件保护机制了。此电脑上的游戏大多跳过BIOS层次,直接控制硬件。

    家用电脑C64的抽象架构
    简单应用程序 机器语言
    (游戏直接操作)
    8k BASIC ROM  
    8k ROM-BIOS  
    硬件中央处理器、存储设备等)

    早期最著名的磁盘引导型操作系统是CP/M,它支持许多早期的微电脑,且被MS-DOS大量抄袭其功能。最早期的IBM PC其架构类似C64。当然它们也使用了BIOS以初始化与抽象化硬件的操作,甚至也附了一个BASIC解释器!但是它的BASIC优于其他公司产品的原因在于他有可携性,并且兼容于任何匹配IBM PC架构的机器上。这样的PC可利用Intel-8088处理器(16-bit寄存器)定址,并最多可有1MB的内存,然而最初只有640KB。软式磁盘驱动器取代了过去的磁带机,成为新一代的存储设备,并可在他512KB的空间上读写。为了支持更进一步的文件读写概念,磁盘操作系统(Disk Operating System,DOS)因而诞生。此操作系统可以合并任意数量的扇区,因此可以在一张磁盘片上放置任意数量与大小的文件。文件之间以档名区别。IBM并没有很在意其上的DOS,因此以向外部公司购买的方式获取操作系统。1980年微软公司获取了与IBM的合约,并且收购了一家公司出产的操作系统,在将之修改后以MS-DOS的名义出品,此操作系统可以直接让程序操作BIOS与文件系统。到了Intel-80286处理器的时代,才开始实现基本的存储设备保护措施。MS-DOS的架构并不足以满足所有需求,因为它同时衹能运行最多一个程序(如果想要同时运行程序,只能使用ISR(中断处理函数)的方式来跳过OS而由程序自行处理多任务的部分),且没有任何内存保护措施。对驱动程序的支持也不够完整,因此导致诸如音效设备必须由程序自行设置的状况,造成不兼容的情况所在多有。某些操作的性能也是可怕地糟糕。许多应用程序因此跳过MS-DOS的服务程序,而直接访问硬件设备以获取较好的性能。虽然如此,但MS-DOS还是变成了IBM PC上面最常用的操作系统(IBM自己也有推出DOS,称为IBM-DOS或PC-DOS)。MS-DOS的成功使得微软成为地球上最赚钱的公司之一。

    MS-DOS在个人电脑上的抽象架构
    普通应用程序(Shell script、文本编辑器
    MS-DOS(文件系统)  
    BIOS(驱动程序)  
    硬件中央处理器、存储设备等)

    而1980年代另一个崛起的操作系统异数是Mac OS,此操作系统紧紧与麦金塔电脑捆绑在一起。此时一位施乐帕罗奥多研究中心的员工Dominik Hagen访问了苹果电脑的史蒂夫·乔布斯,并且向他展示了此时施乐发展的图形用户界面。苹果电脑惊为天人,并打算向施乐购买此技术,但因帕罗奥多研究中心并非商业单位而是研究单位,因此施乐回绝了这项买卖。在此之后苹果一致认为个人电脑的未来必定属于图形用户界面,因此也开始发展自己的图形化操作系统。现今许多我们认为是基本要件的图形化接口技术与规则,都是由苹果电脑打下的基础(例如下拉菜单、桌面图标、拖曳式操作与双点击等)。但正确来说,图形用户界面的确是施乐创始的。

    1990年代[编辑]

     
    Apple I电脑,苹果电脑的第一代产品。

    延续1980年代的竞争,1990年代出现了许多影响未来个人电脑市场深厚的操作系统。由于图形用户界面日趋繁复,操作系统的能力也越来越复杂与巨大,因此强韧且具有弹性的操作系统就成了迫切的需求。此年代是许多套装类的个人电脑操作系统互相竞争的时代。

    上一年代于市场崛起的苹果电脑,由于旧系统的设计不良,使得其后继发展不力,苹果电脑决定重新设计操作系统。经过许多失败的项目后,苹果于1997年发布新操作系统——Mac OS X的测试版,而后推出的正式版获取了巨大的成功。让原先失意离开苹果的史蒂夫·乔布斯风光再现。

    除了商业主流的操作系统外,从1980年代起在开放原码的世界中,BSD系统也发展了非常久的一段时间,但在1990年代由于与AT&T的法律争端,使得远在芬兰赫尔辛基大学的另一股开源操作系统——Linux兴起。Linux内核是一个标准POSIX内核,其血缘可算是Unix家族的一支。Linux与BSD家族都搭配GNU项目所发展的应用程序,但是由于使用的许可证以及历史因素的作弄下,Linux获取了相当可观的开源操作系统市占率,而BSD则小得多。相较于MS-DOS的架构,Linux除了拥有傲人的可移植性(相较于Linux,MS-DOS衹能运行在Intel CPU上),它也是一个分时多进程内核,以及良好的内存空间管理(普通的进程不能访问内核区域的内存)。想要访问任何非自己的内存空间的进程衹能通过系统调用来达成。一般进程是处于用户态(User mode)底下,而运行系统调用时会被切换成内核态(Kernel mode),所有的特殊指令衹能在内核态运行,此措施让内核可以完美管理系统内部与外部设备,并且拒绝无权限的进程提出的请求。因此理论上任何应用程序运行时的错误,都不可能让系统崩溃

    几乎完整的Linux架构图
    用户
    模式
    应用程序(sh、viOpenOffice.org等)
    复杂KDE、glib等)  
      简单库(opendbm、sin等)  
    C库(open、fopen、socket、exec、calloc等)
    内核
    模式
    系统中断、调用、错误等软硬件消息
    内核(驱动程序、进程、网络、内存管理等)
    硬件(处理器、内存、各种设备)

    另一方面,微软对于更强力的操作系统呼声的回应便是Windows NT于1999年的面世。

    1983年开始微软就想要为MS-DOS建构一个图形化的操作系统应用程序,称为Windows(有人说这是比尔·盖茨被苹果的Lisa电脑上市所刺激)。一开始Windows并不是一个操作系统,只是一个应用程序,其背景还是纯MS-DOS系统,这是因为当时的BIOS设计以及MS-DOS的架构不甚良好之故。在1990年代初,微软与IBM的合作破裂,微软从OS/2(早期为命令行模式,后来成为一个很技术优秀但是曲高和寡的图形化操作系统)项目中抽身,并且在1993年7月27日推出Windows 3.1,一个以OS/2为基础的图形化操作系统。并在1995年8月15日推出Windows 95。直到这时,Windows系统依然是创建在MS-DOS的基础上,因此消费者莫不期待微软在2000年所推出的Windows 2000上,因为它才算是第一个脱离MS-DOS基础的图形化操作系统。

    底下的表格为Windows NT系统的架构:在硬件层次结构之上,有一个由微内核直接接触的硬件抽象层(HAL),而不同的驱动程序以模块的形式挂载在内核上运行。因此微内核可以使用诸如输入输出、文件系统、网络、信息安全机制与虚拟内存等功能。而系统服务层提供所有统一规格的函数调用库,可以统一所有副系统的实现方法。例如尽管POSIX与OS/2对于同一件服务的名称与调用方法差异甚大,它们一样可以无碍地实现于系统服务层上。在系统服务层之上的副系统,全都是用户态,因此可以避免用户程序运行非法行动。

    简化版本的Windows NT抽象架构
    用户
    模式
    OS/2
    应用程序
    Win32
    应用程序
    DOS
    程序
    Win16
    应用程序
    POSIX
    应用程序
      其他DLL库 DOS系统 Windows模拟系统
    OS/2副系统 Win32副系统 POSIX.1副系统
    内核
    模式
    系统服务层
    输入输出管理
    文件系统、网络系统
    对象管理系统 / 安全管理系统 / 进程管理 / 对象间通信管理 / 进程间通信管理 / 虚拟内存管理

    微内核
    视窗管理程序
    驱动程序 硬件抽象层(HAL) 图形驱动
    硬件(处理器、内存、外部设备等)

    副系统架构第一个实现的副系统群当然是以前的微软系统。DOS副系统将每个DOS程序当成一进程运行,并以个别独立的MS-DOS虚拟机承载其运行环境。另外一个是Windows 3.1模拟系统,实际上是在Win32副系统下运行Win16程序。因此达到了安全掌控为MS-DOS与早期Windows系统所撰写之旧版程序的能力。然而此架构只在Intel 80386处理器及后继机型上实现。且某些会直接读取硬件的程序,例如大部分的Win16游戏,就无法套用这套系统,因此很多早期游戏便无法在Windows NT上运行。Windows NT有3.1、3.5、3.51与4.0版。Windows 2000是Windows NT的改进系列(事实上是Windows NT 5.0)、Windows XP(Windows NT 5.1)以及Windows Server 2003(Windows NT 5.2)与Windows Vista(Windows NT 6.0)也都是立基于Windows NT的架构上。

    而本年代渐渐增长并越趋复杂的嵌入式设备市场也促使嵌入式操作系统的成长。

    5.多道技术

    多路复用

    现代计算机或者网络都是多用户的,多个用户不仅共享硬件,而且共享文件,数据库等信息,共享意味着冲突和无序。

    操作系统主要使用来

    1.记录哪个程序使用什么资源

    2.对资源请求进行分配

    3.为不同的程序和用户调解互相冲突的资源请求。

    我们可将上述操作系统的功能总结为:处理来自多个程序发起的多个(多个即多路)共享(共享即复用)资源的请求,简称多路复用

    而实现多路复用的方式有两种

    1.时间上的复用

    2.空间上的复用

    这两种方式合起来便是多道技术

  • 相关阅读:
    kotlin中值范围
    kotlin中集合
    kotlin数据解构
    Java 8 Lambda 表达式
    kotlin 之内联函数
    kotlin之函数的范围和泛型函数
    kotlin函数的参数和返回值
    kotlin 之单表达式函数
    kotlin使用中辍标记法调用函数
    kotlin之函数的基本用法
  • 原文地址:https://www.cnblogs.com/niubin/p/6878967.html
Copyright © 2020-2023  润新知