你需要了解操作系统发展历程

本文我们大概回顾计算机操作系统发展历程,这里不会记录关于操作系统的完整历史记录,只是记录那些里程碑事件,看看各位接触计算机时,操作系统发展正处于哪个年代

起初

没有操作系统,没有编程语言或编译器,甚至没有鼠标,没有窗口,啥都么有,太难了

假设我们需要建立一台计算机,那么如何获得它来阅读和运行将要编写的程序?它如何访问设备:读取输入和写入输出数据?程序从内存中运行,但是必须以某种方式将程序放入内存,然后将如何运行其他程序?是否需要重新启动计算机吗?编写的程序对系统的硬件了解多少:访问磁盘或扫描键盘的详细信息?可以向应用程序程序员隐藏此信息吗?

诸如此类的问题导致了操作系统的发展,操作系统的开发与计算机系统的开发,用户如何使用它们以及对它们的期望紧密相关。接下来是对过去七十多年左右的计算系统的快速浏览。

1945 

 

ENIAC,宾夕法尼亚大学摩尔工程学院

ENIAC(电子数值积分器和计算机)可以说是第一台通用电子计算机(第一台确实是Colossus,但是它的存在一直被保密数十年)。它的创建是出于非常特定的目的:计算军用点火表。主要用于战斗中,考虑了温度,风向和弹药类型,为枪支找到合适的仰角。在第二次世界大战期间,随着枪支生产进入高速发展阶段,并且制造了越来越多的枪支,陆军正面临着大量积压的计算。这导致为ENIAC项目提供资金,以解决这些问题。

该机器包含:200个十进制数字的内部存储器、每分钟8,000个十进制数字的I / O速度、每秒5,000次操作的计算速度、装有18,000个真空管,消耗了100,000瓦特(其中40,000瓦去了灯丝并转化为热量)、通过配线架和开关进行编程、从打孔卡读取的数据

准备ENIAC进行一系列运行是一个难以置信的过程。首先,必须编写详细的说明来定义问题和解决问题的过程。这些说明是通过手动调节开关并将数千根电缆插入多达40个大型插板中来编写的。一个由五名操作员组成的团队可能需要花费几天的时间进行外部接线,而要花费更多的时间来查找错误并进行纠正—突破计算机时代,哈里·沃尔福斯特(Harry Wulforst),查尔斯·斯克里伯纳父子出版社(1982)

1949 

 

EDSAC和EDVAC

计算机获取内存

EDVAC(电子离散变量自动计算机)和EDSAC(电子延迟存储自动计算器)都于1949年完成。EDVAC是ENIAC的后继产品。EDSAC是由剑桥大学计算实验室的Maurice Wilkes领导的一个项目,基于EDVAC的建议而构建。两者都是存储程序的计算机:指令可以从计算机的内存中运行,而不是硬连线。他们使用了约翰·冯·诺依曼(John von Neumann)的体系结构,其中计算机的程序代码与数据驻留在同一存储中。

汞延迟线用于系统的内存,这些是含有汞的长密封管,数据表示为流体中的波动。它通过换能器进入,在流体中传播,并在远端通过换能器提取,那时,计算机可以读取数据(进入真空管)或将其循环回以通过汞管再循环。

EDSAC具有高达512个35位字的内存。

1949

 

BINAC – ENIAC的后继者

编程语言

第一个编程语言的先驱出现:John Mauchly的 Short Order Code,它具有一个简单的代数解释器。程序员可以用伪代码而不是实际机器的代码来编写。该伪代码可以包括一组“子例程”。就我们所知,这些不是子例程。程序查看每个语句,跳到所需的子例程,执行该语句,然后循环返回,但堆栈的概念和返回指令还未出现。

1951 

 

雷明顿市UNIVAC

可重用代码

代码共享的概念应运而生,它创建了一组标准的数学子例程,这些都写在纸上,并根据需要复制(到打卡机上)。不幸的是,程序员并不能够总是非常准确地进行复制,因此经常需要进行调试。

John Mauchly估计,世界上可能有十二个组织需要并负担得起UNIVAC,超过45被出售。

1952 

 

IBM 701

真正的可重用代码和真正的汇编程序

701是IBM的第一台商业科学计算机。它包含1,024字的随机存取存储器,并使用塑料磁带作为存储介质。该计算机采用模块化结构。它由几个单元组成,将被运送到客户那里进行最终连接。这与必须在客户现场完全组装的UNIVAC等较早的机器形成对比。

汇编器风格语言的出现:IBM Speed Coding

创建了一个IBM用户组织SHARE(帮助减轻冗余工作的协调)。它维护了通用例程的存储库。例如,如果需要用于将磁带前进到某个位置并写入数据块的代码,则可以从SHARE获取它。这些共享的I/O例程是当今操作系统中设备驱动程序的先驱。

1956

 

中断

UNIVAC 1103A引入了中断。接收到中断后,处理器会将其程序计数器的值存储在固定的存储位置中,并且程序计数器将被预设的地址替换,从而迫使执行切换到中断服务程序。为了返回,中断服务程序将跳转到存储在特殊存储器位置中的值。使用中断的一种方法是允许较低优先级的批处理过程在陆军作战研究办公室的战争游戏模拟程序之间运行。这是分时共享的先驱,后者将在未来几十年主导操作系统设计。

操作应运而生

早期计算的一大浪费时间是设置计算机来运行作业,然后将其重置并在第一个程序完成时加载下一个作业所花费的时间。为了运行程序,将包含该程序的一副打孔卡加载到机器的内存中。在程序终止之前,该程序是在该计算机上运行的唯一程序。作业完成后,操作员将加载程序以转储内存,并删除磁带,卡和所有打印输出,之后,下一个作业将被加载到计算机上。

早期的操作系统通过分批而非单独处理作业来提高系统吞吐量,作业完成后,它将分支到操作系统中的某个位置,该位置将包含将转储当前作业状态并加载下一个作业的软件。这大大减少了操作员干预的需要。在最早的系统中,此作业转换软件封装在一组打孔卡中,这些打孔卡已添加到包含用户程序的卡组中。

作业控制语言为程序提供了一种定义其资源需求的方式,例如它们需要使用什么磁带或读卡器以及它们的预期运行时间是多少。

1954 

 

FORTRAN诞生

高级语言

使用高级语言,程序员不再需要了解计算机的体系结构。

早期的编译器,包括早期的FORTRAN(FORmula TRANslator),必须容纳1024个12个字符的单词,并且仍然留有足够的数据空间。但是由于磁带机一直忙于获取数据,因此编译程序通常要耗费两个小时。

到1950年代末,操作系统支持:单流批处理、用于设备访问的通用,标准化的输入/输出例程、程序转换功能可减少开始新工作的开销、错误恢复以清理作业异常终止后的情况、作业控制语言,允许用户指定作业定义和资源要求

开启1960时代

1960年代初操作系统的目标是提高吞吐量,计算机非常昂贵,因此找到利用CPU每一秒可能的时间的方法很重要。

多程序:将几个程序一次保存在主存储器中,并在程序之间切换处理器。由于I / O(输入/输出)设备速度和处理器速度之间的不匹配,因此可以进行多程序编程。在程序等待I/O操作完成时,可能浪费数万个周期(在当今的处理器上为数千万至数十亿),I/O操作正在进行时,与其让处理器坐在那里而不执行任何操作,不如将其切换为运行其他程序。

多处理系统:多个处理器相互配合。其中一些开始出现在1960年代。

交易处理系统:IBM在1960年为美国航空开发了SABRE航空公司预订系统。它由两台相连的IBM 7090计算机(由分立晶体管构成)组成,旅行代理商通过打字机终端与中央计算机进行通信。尽管SABRE是专用系统,而不是通用操作环境,但它迎来了对计算的新要求。

对于SABRE这样的系统:用户帐户和并发访问需要创建保护机制和密码存储。

现在,计算机必须进行交互操作(对话)。因此,人为因素成为一个问题:响应时间和易用性。随着磁盘的广泛部署,访问存储组织技术得到了发展,随后是文件系统。数据通信链接用于远程访问。在大多数情况下,这些是电话线。

该年代,磁盘成为主流、随机存取大容量存储。第一个磁盘驱动器是IBM 350磁盘存储单元,于1956年推出。它的容量为3.75兆字节,以500万个六位字符存储在直径为50的24英寸磁盘上。IBM以每月3200美元的价格租用了它。

到1960年代,磁盘存储终于被广泛使用。它提供高容量,几乎随机的访问存储。IBM创建了一系列磁盘操作系统(DOS,DOS-2314,DOS MP,DOS VS,DOS/VSE)以利用该技术。

1961

 

小型计算机

大众计算

数字设备公司(DEC)推出了程序数据处理器1(PDP-1)。售价在$125,000- $ 250,000之间,因为当时任何竞争性系统的起价都是$100万。此外,它不需要服务员和操作员。现在,更多公司可以负担得起计算机的费用。

1962 

 

麻省理工学院兼容的分时系统(CTSS)

分时

CTSS在具有特殊硬件的IBM 7094上运行。它证明了交互式时间共享系统的价值以及在线共享数据和程序的价值,该系统是Multics操作系统的前身。

1963 

 

Burroughs B5000系统的主控制程序(MCP)

虚拟内存和多处理

MCP是第一个用高级语言编写的操作系统(请注意,这不是便携式操作系统,它只能在B5000计算机上运行)。运行MCP的B5000系统为用户提供了:多程序

多处理、虚拟存储(即系统具有比实际更多的物理内存)、源语言调试功能

1964 

 

IBM System / 360

SOME TITLE HERE

IBM对此公司进行投入,它创建了由五台计算机组成的产品线,全部兼容,为用户提供了随着计算需求增长而迁移的途径。它包括迄今为止为实现向后兼容性而组装的种类最多的仿真器。重新设计了读卡器,磁带驱动器,打印机和存储设备,以使其更快(例如,System/360 1403型链式打印机每分钟可打印1100行文本)。

该项目的研发费用超过10亿美元,公告发布后的六个月内,IBM预订了System / 360的订单,其订单总额是IBM全年总收入的三倍以上。赌注回报很大。

System/360操作系统目标:为整个计算机系列提供一个操作系统。

事实证明,创建一个满足用户不同程度复杂程度的系统非常困难,用重型操作系统负担较小的机器似乎也不公平。由此出现了一系列操作系统:

PCP/360 :顺序作业系统

MFT:多个作业系统,固定数量的任务。系统内存分为固定数量的分区,程序被加载到这些分区中,并且处理器在每个分区上需要耗费一些时间

MVT:具有可变数量任务的多重编程。一项新作业要求一个特定大小的分区,获取该分区,然后运行,然后该分区再次可用。后来成为IBM的MVS系统。此时所有内存引用都是直接内存引用(要求的内存地址就是获得的地址)。

1966

 

微型计算机变得更便宜,更强大且真正有用

广泛计算

DEC引入了PDP-8,它的成本仅为20,000美元,并被小型企业,大学和高中使用。提供了五个操作系统,这是从1969年数字设备公司的PDP-8系列家庭计算机入门简介中得到的清单 :

纸带编程系统—程序和数据的I/O通过纸带阅读器手动执行,并打孔。所有编程系统都始于通过纸带将某些系统和实用程序加载到核心中。

DECtape编程系统—程序和数据的I/O通过DECtape单元执行。

4K磁盘监视器系统— 4K系统程序在具有磁盘输入和输出的磁盘监视器的控制下运行。您可以将其用于4K内存系统。DECtape包含超过一百万个八进制字的存储。

PS/8编程系统—使用DECtape或磁盘输入/输出,在8K执行程序的控制下运行8K系统程序。系统和实用程序包括语言(FOCAL,BASIC,FORTRAN-D,汇编器)和实用程序(用于外围设备控制的PIP,用于调试的DDT和编辑器)。

TSS/8分时系统—多个用户在磁盘环境中使用4K系统程序在TSS/8 Monitor的控制下共享计算机。每个用户都有一个单独的电传打字终端。它允许与设备无关的访问多达15个I / O设备。用户程序可以为几种服务调用执行例程,包括加载设备处理程序,为设备分配名称,创建文件以及对电传打字机进行线路输入/输出。

开启1970年代

1970年代操作系统具有以下特征:多用户,多任务处理是至高无上的、动态地址转换硬件创建操作系统必须处理的虚拟内存。虚拟机现在可以存在、模块化架构、便携式设计的出现、个人互动系统

另外还有改变计算的两个发展:

数据网络:计算机开始通过数据通信链接进行连接。

微处理器:这些将使计算机更小,更便宜,更个性化。在大约20年的时间里,这些将成为技术落后者,重新发现许多年前真正的计算机已经拥有的东西 。到1990年代,他们已成为技术领导者。

1967 

 

鼠标

引入了一种新的用户交互形式,在iPhone和iPad之前占主导地位,此处省略若干字

鼠标是由斯坦福研究所增强研究中心(ARC)的道格拉斯·恩格尔巴特(Douglas Engelbart)创建的 。他和他在ARC的团队发明了鼠标,位图显示,图形用户界面概念,电话会议和超文本,这在1968年秋季联合计算机会议上得到了证明,被称为 “所有演示之母”,这可以一直追溯到1968年,大概47年以来,我们从未对此进行实质性的更改!

1969 

 

贝尔电话实验室的UNIX分时系统

小型操作系统,工具箱方法

UNIX的第一版在PDP-7上运行,并以汇编语言编写。它强调了一个小而简单的内核和一组丰富的实用程序(这些实用程序主要用于处理基于行的基于文本的数据),可以将它们连接在一起以执行各种任务。它结合了Multics的许多想法,例如分层文件系统,多层文件访问权限,输入/输出重定向和管道。

1971 

 

英特尔宣布推出微处理器

英特尔4004包含2000个晶体管,每秒执行60,000次操作。这是一台四位机器,具有与ENIAC一样高的功率。

1972 

 

IBM推出了VM:虚拟机操作系统

虚拟内存和虚拟机

目标:是否可以构建一台可以在其上同时运行不同操作系统以开发它们,调试它们并评估其性能的机器呢?

开发操作系统非常棘手:需要一台专用计算机来运行操作系统,由于大型计算机非常昂贵(数百万美元)并且占用大量空间,因此即使IBM程序员也无法使用一台。

IBM构建了修改的System/360,它支持地址转换,地址转换意味着处理器认为它正在引用一个内存位置,但实际上它被转换为另一个,所以每个进程都可以获取自己的地址空间,就像拥有该计算机一样。

VM是采用模块化方法构建的:将资源管理和用户支持分为单独的组件。控制程序(CP)是VM的一部分,用于创建运行各种操作系统的虚拟机。虚拟机不仅包含虚拟地址空间,还包含虚拟读取器,磁盘,打孔器,打印机和磁带驱动器。两种操作系统都访问设备或执行特权指令会导致CP中断,从而将请求的操作映射为物理操作。若使用VM,我们可以:

继续在旧操作系统上进行生产工作的同时测试新操作系统

运行同一操作系统的多个副本(VM/CMS为每个用户运行一个CMS副本,一个单用户系统)。

运行某些任务的专用操作系统

VM最初是一个内部IBM项目,旨在为其工程师提供开发和测试操作系统的能力,但事实证明对VM客户也很有用。此后直到1990年代,虚拟机几乎全部消失,但在2000年代再一次复兴。

1973

 

UNIX 第 4 版出版

便携式操作系统

这是UNIX的第一个版本,该版本主要使用C编程语言编写。该系统在PDP-11上运行,并配有编辑器,汇编器,计算器,电子邮件,编译器和许多实用程序。由于贝尔系统是受监管的垄断,并且不能从事计算机业务,因此UNIX实际上对大学是免费的(他们必须支付文档和磁带),没有获得支持,但是可以有来源。UNIX是易于理解和修改的系统。很快将其移植到其他计算机上。

关于UNIX的三件事至关重要:

UNIX主要是用C编写的,这使得编写,调试,增强和维护软件变得更加容易。使用高级语言编写操作系统的方法是一种相对新颖的方法。操作系统是为特定的机器编写的,必须高效并且必须访问机器的各个低级方面。1950年代和1960年代主要编译的高级语言是FORTRAN和COBOL(LISP也在那里,但已被解释)。两者都不适合该任务。以前,Burroughs用Algol版本编写了B5000的操作系统。MULTICS是UNIX之前的一个大型OS项目,是使用EPL(PL / I的早期版本)编写的。该语言在很大程度上不适合操作系统,并且编译器没有得到优化,以至于“一个简单的PL / I语句可能会转换成整个代码页面。C是一种简化的高级语言,非常适合系统编程。尽管效率低下,但并非不合理。

使用高级语言可以更轻松地为不同的计算机体系结构重新编译操作系统。传统上,操作系统针对特定的机器体系结构。例如,UNIX的前身MULTICS专为GE–645计算机设计。架构和操作系统齐头并进。虽然UNIX最初是为PDP-8和PDP-11编写的,但是操作系统的大部分都是独立于体系结构并以高级语言编写的,这意味着将代码移植到其中并不是一项艰巨的任务。

到1975年(第六版),UNIX才开始分配给大学使用,这使一大批计算机科学专业的学生接触到源代码级别的操作系统。这是他们可以使用,修改和完全学习的系统,如此导致了UNIX的进一步增强,大多数来自加州大学伯克利分校,以伯克利软件发行版(BSD)的形式提供

1973 

 

以太网

Robert Metcalfe在Xerox PARC(帕洛阿尔托研究中心)期间发明了以太网。它不是第一个数据网络,但它已迅速推广为标准,其数据包交换方法使其价格低廉且具有高度可扩展性,它迅速成为局域网的主导网络技术。

1973 

 

Xerox Alto

视频显示,桌面,鼠标,以太网网络,所见即所得编辑。Alto是Xerox PARC开发的一个项目,尽管在商业上并未取得成功,并且施乐放弃了该项目,但由于它集成了鼠标,以太网网络,位图视频显示和可拆卸的按键,因此在计算机系统的历史上至关重要,它还在图形显示中隐式的引入了桌面交互。

1974

 进入

进入个人计算机时代

第一台个人电脑

大众电子的封面上有MITS Altair计算机。这款基于8080的机器的套件成本为397美元。它没有键盘,视频显示器,磁盘驱动器,磁带存储或软件。大多数系统具有256字节的内存(即bytes,而不是千字节或兆字节)。通过前面板上的开关输入了说明。

更高型号的Altair 8800b具有一条串行线,可支持视频终端和打印机。当时,Lear-Siegler ADM-3A是一款具有80x24字符显示屏的哑视频终端,售价为995美元/套,1195美元/完整组装)。如果负担不起,则可能会得到二手电传打字机,成千上万的人购买了这些计算机,虽然不能做很多事情,但是拥有个人电脑在当时是多么让人羡慕的事情,由此出现很多Homebrew Computer Club,这导致了更多PC和外围设备制造商的产生以及软件的创建。

如此强大的市场对英特尔市场产生了极大的打击,到1975年,英特尔8080处理器的售价为179美元,同一年,英特尔推出了6502处理器,仅售25美元,由于价格低廉,它成为许多个人计算机的首选处理器,包括Commodore PET,The Apple II,Atari等,同样,1976年Zilog推出了一种更好,更便宜的处理器,该处理器向后兼容Intel 8080指令集-Z80,直到IBM PC,主流个人计算机才会在其中看到Intel处理器。

1974

 比尔

比尔盖茨和艾伦为Altair编写BASIC

可以在PC上编写程序,而不必使用汇编语言

1975

 比尔

基于Intel的8位PC的操作系统

将BIOS引入英特尔PC架构:数字研究的加里·基尔德尔(Gary Kildall)向世界展示了CP/M(微型计算机控制程序)。它可以在Intel 8080(以及后来的8085和Zilog Z80)计算机上运行。它并不是针对任何特定计算机,而是旨在适用于具有8080系列处理器和软盘驱动器的任何计算机,它是一个基本的操作系统:简单的命令解释器,程序加载器和文件系统管理器,而且一次只运行一个程序。完成后,命令转移到控制台命令处理器代码,提示用户输入下一条命令。该操作系统包括:

CCP(Console Command Processor):控制台命令处理器(命令解释器)

BDOS(基本磁盘操作系统):程序加载器和软件,该软件找出了如何管理和解释软盘上的文件系统。

BIOS(Basic I/O System):基本I / O系统(BIOS)。由于每台计算机都不相同,因此必须自己编写低级功能(从输入设备中获取字符,从软盘中读取扇区,写入扇区,将字符写入输出设备,等等)。

该系统还附带一些程序,例如汇编器,行编辑器和用于复制文件的程序。这是当时用户希望随计算机一起提供的那种软件,CP/M是MS-DOS的直接前身,MS-DOS源自QDOS,即Quick and Dirty操作系统,它本质上是8086处理器(英特尔的第一个16位CPU)的CP/M的反向工程版本。微软以50,000美元的价格从Seattle Computer Products购买了QDOS。加里·基尔德尔本来可以和IBM PC操作系统签订IBM合同,但是最终以失败而告终。第一台IBM PC带有ROM中的BASIC解释器和汇编器,行编辑器以及用于复制文件的程序。

1976

 比尔

Apple II

内置BASIC,它允许以彩色显示文本和图形,这是一台即插即用机器,至今已投入生产十五年。该机器面向个人计算机,所以受众市场很大。

到1977年,又售出了其他几款现成的PC:Radio Shack的TRS-80和Commodore Pet。

1977

 比尔

DEC推出了第一台运行VMS的VAX计算机(VAX 11/780)

共享相同指令集和虚拟内存的32位小型计算机系列

VAX 11/780是一台非常流行的大型微型计算机,并且是最早使用虚拟内存来管理(当时)计算机的巨大32位地址空间的计算机之一(较小的PDP-11系列是16位机)。

就像IBM System/360(但更小,更便宜,并且来自其他公司)一样,这也成为了一系列计算机。尽管不同模型的大小和功能范围有所不同,但它们都具有相同的体系结构,VAX(也称为Vaxen)可以联网在一起并以对等关系运行(任何计算机都可以是客户端或服务器)。

尽管VAX很快成为UNIX的流行平台,但VMS(虚拟内存系统)是DEC发行的VAX操作系统。

VMS旨在利用VAX的体系结构,并结合了 需求分页功能,该功能使计算机能够在流程需要时分配和加载内存页面,并将其映射到该流程的正确内存位置。这样避免了必须将整个程序预加载到内存中的情况。Securiy是设计的核心要素。它支持特权检查和帐户锁定。VMS支持用于流程调度的32个优先级,并支持实时流程。

1979

 比尔

Visicalc和WordStar诞生

个人计算机的第一个杀手级应用程序:可以证明所购买计算机的合法性。

开启1980年代

驱动个人计算机,但是操作系统是原始的:仅比命令解释器,程序加载器和设备驱动程序多。即使这样,程序员也经常违反约定并直接访问设备。网络,尤其是在工作站之间的网络,变得广泛而快速。通过网络访问文件就像在本地访问文件一样可行,网络操作系统变得很有趣。

具有消息传递结构的微内核成为热门话题,但从未真正成为主流操作系统。被设计为微内核的Mach成为Windows NT(和派生产品)以及OS X的基础,但实际上它太大了,不能被视为微内核体系结构。

进入操作系统的一种关键机制是多线程,即一个进程具有多个并发执行线程的能力。最初主要用于网络服务器,因为一个进程现在可以同时处理许多请求。

用户界面开始变得重要,窗户系统得到完善。

1981

 比尔

IBM推出IBM PC

IBM PC是基于Intel 8088处理器的开放式计算机(IBM将为您提供原理图和零件清单)。在销售的个人计算机中,最受人尊敬的品牌已经不再是业余爱好者的玩具,而是可以成为个人商务使用的机器,大部分人都毫无疑问地购买IBM PC,并且IBM设置了仍然遵循的标准。英特尔和微软(不是IBM)成为大赢家,因为许多其他公司开始对IBM PC进行复制,但是这些复制仍然需要处理器和操作系统。

第一台IBM PC具有:16K字节内存(可扩展到256K)、2张软盘,每个软盘容纳160K字节、2种显示方式:彩色和单色、Microsoft的PC-DOS。这本质上是一个CP/M复制,比尔·盖茨同意向IBM提供其操作系统,尽管当时他还没有任何东西可做。他巧妙而且通过协商出售了操作系统的权利(可能预料到不久的将来将是PC时代)。

1983

 比尔

Microsoft开始在MS-Windows上工作

太慢且有故障,用户坚持使用MS-DOS。

1984

 比尔

Apple Macintosh面世

Mac将鼠标和窗口引入了大众市场,就普通用户而言,命令行现在已失效,因其友好的用户界面而受欢迎。基于鼠标的点击界面是从Xerox PARC(帕洛阿尔托研究中心)创建的Xerox Star系统中所派生。

1985

 比尔

工作站上的网络文件系统

SUN的NFS允许用户将其他计算机上的文件系统挂载到自己的计算机上。Apollo的Domain系统将整个机器网络合并到其文件名空间中。现在,我们可以访问驻留在其他计算机上的数据,就像访问计算机上的数据一样,许多公司开始为企业销售联网的个人工作站,最终SUN大获全胜。

1986

 比尔

Mach

Mach是一个微内核系统,旨在允许在其上仿真各种其他操作系统(例如UNIX的各种变体)。它允许透明地访问网络资源,可以利用并行性,并且可以支持较大的地址空间,Mach原理成为Microsoft Windows NT和Apple OS X的理论基础。

1980年代后期,UNIX显的有点过时,没有跟上时代的步伐,然后重新开始认识到过去所建立系统的分布式网络并使其成为一个统一做出的努力并没有完全很成功。

目标:构建一个分布式,可伸缩的系统,该系统看起来像一个分时系统,可以支持数千个用户,数TB的文件和数千兆的内存。计划9由许多单独的组件组成:CPU服务器,终端(带处理),文件服务器和网络。

贝尔实验室计划9从未在商业上获取吸引力甚至没有被广泛采用,尽管它有不错的想法和主意,但社区用户并不关心新的操作系统,当提供操作系统和一些程序时,他们不再得到满足,他们想要运行自己所喜欢的应用程序,向后兼容性很重要。

开启1990年代

Microsoft Windows 1.0于1985年首次问世,其次是1987年的Windows 2.0。这些本质上只是基于MS-DOS的图形外壳,MS-DOS是一个单用户单任务系统。但是,Windows为用户提供了下拉菜单,屏幕窗口上的滚动条和对话框。Windows 1.0需要一台至少具有256 KB内存的PC,由于大多数应用程序仍在MS-DOS下运行,因此此发行版并不是很受欢迎。

1990年,Microsoft推出了Windows 3.0,这是Windows的第一个非常流行的版本,尽管许多DOS基础仍然清晰可见,但性能得到改善,图标得到了更好的友好展示,并且系统完全支持Intel的新386处理器,386处理器是第一个提供对虚拟内存的支持的Intel处理器,该处理器现在允许Windows对MS-DOS程序的多个实例进行多任务处理,从而为每个程序提供自己的虚拟地址空间,同样重要的是,Microsoft引入了Windows软件开发工具包(SDK),该工具包为开发人员提供了用于访问系统功能(包括图形)的标准API,从而为该平台带来了巨大的应用程序开发浪潮。

1991 

 

GNU/Linux

UNIX虽然获得了极大的欢迎,但仅限于大学可以免费使用,贝尔系统是受监管的垄断,不能出售计算机产品。在1984年Bell系统解体之后,AT&T希望涉足计算机业务,并撤销了UNIX操作系统对大学的免费许可,Minix由Andrew Tanenbaum创建,它是一个类似于Unix的小型操作系统,确实,与过去的UNIX一样,它仅对大学和研究机构免费提供。

Linux最初是由Linus Torvalds编写的内核,后来被广泛的GNU用户级工具(gcc,make,emacs和其他人们希望在Unix发行版中获得的其他东西)所补充。它随着时间的流逝而得到发展,尽管它尚未在PC台式机(Windows和OS X占主导)中获得广泛普及,但它可在许多服务器和嵌入式系统上运行,在后一种类别中,它是Google Android和Chrome OS操作系统,TiVo数字视频录像机,各种机顶盒,汽车计算机和工业控制器的基础。

1992 

 

Windows病毒问世

发现了名为WinVir的病毒,被感染的程序将搜索其他可执行文件并编辑这些文件,以在其中插入其自身的副本,然后它将自己从原始文件中删除,以将该文件恢复到原始状态。病毒开始肆虐,主要是因为操作系统用户通常在Windows等系统中以管理权限运行,从而使他们执行的程序可以自由访问系统中的所有文件。

1993 

 

Windows NT

VMS的设计由David Cutler领导,当该项目在1988年被取消时,微软从VMS团队聘请了卡特勒(Cutler)和其他大约20名DEC员工,为Windwos开发与UNIX竞争的下一代操作系统,这导致了Windows NT的创建,从许多方面来说,NT是VMS的继承者,并具有许多共同的术语和概念。

Windows NT也受到Mach微内核体系结构的启发,NT不是微内核,而是使OS 仿真子系统能够作为用户级服务器进程运行。这使它能够实现与其他操作系统(包括DOS,OS / 2,POSIX(UNIX接口)和16位Windows)的向后兼容性支持。

NT代表新技术,它被设计为更好的Windows,提供联网,基于每个对象的进程以及文件保护机制,与VMS不同,它几乎完全是用C编写的,旨在可在不同的处理器和硬件体系结构之间移植,MS-DOS和Microsoft Windows的早期版本仅针对Intel x86系列处理器编写,NT引入了硬件抽象层,以提供与底层硬件的抽象接口,该系统完全是32位的,而Windows是在考虑16位体系结构的情况下编写的。在操作系统的高层,API模块提供了支持各种系统调用接口的选项,尽管最终仅支持Win32,该系统还可以处理各种可安装的文件系统模块

NT可以说是最后一个从头开始编写的现代操作系统,Windows的后续每个版本都是基于Windows NT的发展。

1993 

 

浏览器Mosaic诞生

网络浏览器诞生,Mosaic,Netscape Navigator(1994年)和Internet Explorer(1995年)引入了网络。Web浏览器成为1990年代中期及以后的杀手级应用程序。最初,Web只是一种信息导航工具,但很快就变成为了应用程序和服务交付平台,其中Web浏览器用作驻留在可从Internet访问的远程服务器上的服务的用户界面,若没有网络,可以想象将产生怎样的后果。

浏览器当然不是操作系统,但是它使许多人重新审视操作系统在用户计算中的作用,并想象一个通过Web浏览器提供所有服务的世界。

开启2000年代

移动端的兴起,再一次掀起热潮,诞生了iOS和Android操作系统,对用户的生活产生了深远的影响。

2007

 比尔

iOS操作系统

多点触控界面,苹果的iPhone使多点触控用户界面成为主流,用户交互模型包括一个虚拟键盘,并支持轻击,滑动,捏和松开手势,以放大和缩小以支持基于手指的直接操作屏幕上的对象,多点触摸界面的概念可以追溯到1970年代,在1980年代初创建了使用双指缩放手势的界面。名为iOS的基础操作系统派生自OS X,但进行了更改以支持不同的窗口系统,对后台进程进行了限制以实现更好的应用程序性能和更长的电池寿命,并提供了移动服务(例如推送通知和通知应用程序的功能)或位置发生变化时。

2008

 比尔

Android操作系统

Google开发了针对手机的Linux变体,移除了Linux系统及其库的多余负担,添加了用于访问GPS,加速计,电话和手机上其他组件等组件的标准库,并建立了图形UI框架。所有应用程序均以Java编写,并且运行在类似Java的虚拟机(Dalvik)上,这样可以确保应用程序不依赖于任何特定的处理器平台。

2009

 比尔

物联网(IoT)

各种电器和设备互相交互,所谓的万物可互联。物联网是凯文·阿什顿(Kevin Ashton)于2009年提出,但是这种想法可以追溯到更早的时候,随着微控制器变得更小,更便宜,更省电并且无线网络变得无处不在,很明显,可以控制所有形式的对象或可以报告其状态。这包括诸如:灯泡(例如,Philips Hue连接的灯泡)、健身器材(例如Fitbit活动腕带)、家用警报器,暖气,空调系统(例如Nest Nest温控器和Nest Protect烟雾探测器)、热水炉、、洗衣机,烤箱和其他设备、运输集装箱、自动售货机、数字标牌,从广告牌到货架标签

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/309635.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于 abp vNext 和 .NET Core 开发博客项目 - 使用Redis缓存数据

上一篇文章完成了项目的全局异常处理和日志记录。在日志记录中使用的静态方法有人指出写法不是很优雅,遂优化一下上一篇中日志记录的方法,具体操作如下:在.ToolKits层中新建扩展方法Log4NetExtensions.cs。//Log4NetExtensions.cs using log4…

第一讲 工作区和GOPATH

此为 《极客时间&Go语言核心36讲》 个人笔记,具体课程详见极客时间官网。 Table of Contents generated with DocToc 第一讲 工作区和GOPATH 1. 环境变量配置2. 配置GOPATH的意义 2.1 Go语言源码的组织方式2.2 源码安装后的结果(归档文件、可执行文…

开发大会上,前微软CEO放出的狠话!.NET开发随时起飞,你准备好了吗?

“开发者,开发者,开发者,开发者”,微软前任CEO史蒂夫鲍尔默(Steve Ballmer)用这种略带疯狂、又唱又跳的方式表达他对开发者的热爱。不夸张的说,相比二十年前那个如日中天的巨无霸微软,现在的微软比以往任何…

程序员过关斩将--为微服务撸一个简约而不简单的配置中心

点击上方蓝字 关注我们毫不犹豫的说,现代高速发展的互联网造就了一批又一批的网络红人,这一批批网红又极大的催生了特定平台的一大波流量,但是留给了程序员却是一地鸡毛,无论是运维还是开发,每天都会担心服务器崩溃&a…

Just a Hook HDU - 1698(查询区间求和+最基础模板)

题意: 给你一个1~n的区间,起始区间内均为1,然后对子区间进行值更新,最后求区间和。 题目: In the game of DotA, Pudge’s meat hook is actually the most horrible thing for most of the heroes. The hook is ma…

DDIA笔记——数据复制

Table of Contents generated with DocToc 此篇为《数据密集型应用系统设计》(DDIA)读书笔记,笔记可能存在遗漏,建议直接阅读原书。 第五章 数据复制 主从复制 复制滞后复制滞后带来的问题 多主节点复制 适用场景处理写冲突拓扑结…

基于 abp vNext 和 .NET Core 开发博客项目 - 集成Hangfire实现定时任务处理

上一篇文章成功使用了Redis缓存数据,大大提高博客的响应性能。接下来,将完成一个任务调度中心,关于定时任务有多种处理方式,如果你的需求比较简单,比如就是单纯的过多少时间循环执行某个操作,可以直接使用.…

Docker基本组成 和 基本命令

此篇为Docker笔记,文章可能存在疏忽,建议直接观看原视频。 视频地址:https://www.bilibili.com/video/BV1og4y1q7M4?spm_id_from333.999.0.0 Docker基本组成 和 基本命令 镜像 image:就好比一个模板,可以通过这个模板…

Docker镜像讲解

此篇为Docker笔记,文章可能存在疏忽,建议直接观看原视频。 视频地址:https://www.bilibili.com/video/BV1og4y1q7M4?spm_id_from333.999.0.0 参考:https://blog.csdn.net/11b202/article/details/21389067 Docker镜像讲解 镜像是…

Making the Grade POJ - 3666(离散化+dp)

题意: 给你n个山的高度,单独的一个数可以任意加减,让经过对每座山峰任意加减高度后变成递增或递减的序列时,求对每个数的相加或相减的数目的最小和。 题目: A straight dirt road connects two fields on FJ’s far…

Kubernetes的安全性怎么解?从4个方面为你列出方案清单

导语Kubernetes中的安全性是一个多维问题,必须从各个不同的角度来解决才算完善,这篇文章将从4个方面为读者列出安全清单。正文Kubernetes,经过更快的采用和社区的更多贡献,正日益攀登到新的高度。不过,安全性仍然是Kub…

DDIA笔记—第六章 数据分区

第六章 数据分区 数据分区与数据复制 分区通常与复制结合使用,即每个分区在多个节点都存在副本,这就意味着某条记录属于特定的分区,而同样的内容会保存在不同的节点上以提高系统的容错性。 每个节点同时充当某些分区的主副本和其他分区的从…

Magicodes.IE 2.2发布

Magicodes.IE 2.2发布导入导出通用库,支持DTO导入导出以及动态导出,支持Excel、Word、PDF、CSV和HTML。已加入ncc开源组织.Magicodes.IE2.0发布Magicodes.IE2.1发布如何做好一个开源项目(一)GitHub:https://github.com/dotnetcore/Magicodes.…

C++ 基类,子对象,派生类构造函数调用顺序

#include <iostream> using namespace std;class A {public:A( ) {cout << "A Constructor………" << endl;}~A( ) {cout << "A Destructor………" << endl;} };class B: public A {public:B( ) {cout << "B …

C++ 虚析构函数

代码如下: #include <iostream> using namespace std;class Base {public:Base() {cout << "Base" << endl;}~Base() {cout << "Base destructor" << endl;} };class Derived : public Base {public:Derived() {cout <&…

I - Interesting Permutation Gym - 102394I(排列组合)

题意&#xff1a; 纯数题 1≤i≤n, fimax{a1,a2,…,ai}; 1≤i≤n, gimin{a1,a2,…,ai}; 1≤i≤n, hifi−gi. 数列a是一个排列&#xff0c;问多少种排列方式满足h数列。 题目&#xff1a; DreamGrid has an interesting permutation of 1,2,…,n denoted by a1,a2,…,an. He …