Unix 发展简史

1965年时,贝尔实验室(Bell Labs)加入一项由通用电气(General Electric)和麻省理工学院(MIT)合作的项目;该项目要建立一套多使用者、多任务、多层次(multi-user、multi-task、multi-level)的MULTICS操作系统。直到1969年,因MULTICS项目的工作进度太慢,该项目就被停了下来。当时,Ken Thompson已经有一个称为“星际旅行”的程序在GE-635的机器上运行,但是反应非常的慢,正巧被他发现了一台被闲置的PDP-7(Digital的主机),Ken Thompson和Dennis Ritchie就将“星际旅行”的程序移植到PDP-7上。而这部PDP-7就此在整个计算机历史上留下了芳名。

MULTICS 其实是"MULTi-plexed Information and Computing System"的缩写,在1970年时,那台PDP-7却只能支持两个使用者,当时,Brian Kernighan 就开玩笑地戏称他们的系统其实是:“UNi-plexed Information and Computing System”,缩写为"UNICS",后来,大家取其谐音,就称其为"UNIX"了。1970年可称为是UNIX元年。

1971年,他们申请了一台PDP-11/20,申请的名义是:要发展文书处理系统。该提案被采纳,他们也就发展出了一套文书处理系统——就是现在UNIX操作系统里面文书处理系统(nroff/troff)的前身。有趣的是,没有多久,贝尔实验室的专利部门真的采用了这套系统作为他们处理文件的工具,而贝尔实验室的专利部门也就顺理成章地成为UNIX的第一个正式使用者。当时,那部PDP-11/20只有0.5MB磁盘空间。而描述这整个系统的文件被标示为:“First Edition”,版本日期是1970年11月。从此以后,UNIX的版本就以系统文件的版本来称呼。

1973年,Ken Thompson (肯 汤姆森)和 Dennis Ritchie(丹尼斯·里奇)发明了C语言之后,着手将UNIX程序用高阶的C语言改写,这个时候已经是第4版了(C的前身叫B,也是他们两个人发明的,为了改写UNIX,他们将B语言做了一番改进,而成了C语言)。这个划时代的动作让UNIX能够很轻易地被移植到各种不同的机器上。

1974年,他们在计算机协会交流杂志(Communications of the ACM)上正式发表了UNIX,吸引了更多学术界的注意与参与。从此,UNIX逐渐成为网络工作站的标准,让使用不同机器的使用者,都能使用类似的UNIX操作系统,这对于网络世界的标准化有着很大的贡献。
在UNIX的诞生初期,贝尔实验是还是一个大的集合体,包括贝尔电话公司以及西部电气(Western Electric Co.)。碍于反托拉斯法的规定,它不能利用UNIX做任何的商业行为,也因此,内部的管理阶层自然没有兴趣对UNIX有任何的支持,UNIX就全靠一群玩家在琢磨,主要人物当然还是Ken Thompson和Dennis Richie。

1975年第6版(6th Edition)UNIX发表,在UNIX发展史上,它具有里程碑式的意义。因为这是一个真正具有现代意义的操作系统,它已经几乎具备了现代(单机)操作系统的所有概念:进程、进程间通信、多用户、虚拟内存、系统的内核模式和用户模式、文件系统、中断(自陷)管理、I/O设备管理、系统接口调用(API)、用户访问界面(shell)。当然由于这时国际互联网(Internet)还没有产生,所以该版本并不具备网络功能。
该版shell已经具备了很多常用的命令:ls, mkdir, rm, mknod, cd等。
同时,这也是贝尔实验室对外发布的最后一版免费UNIX。在这一版本上,衍生了众多厂商开发的UNIX大家族。从其下一个版本System V开始,贝尔实验室使对其不再开放,而要付费才能获取了。

1977年,加州大学伯克利分校(UC Berkeley)开始公开Pascal编译器,连带地发布了对UNIX 6th Edition的改进程序代码,这就是所谓的"1 BSD"(1st Berkeley Software Distribution),也开创了UNIX的另一个分支:BSD系列,向外发行。这个时候的BSD已经很不同于AT&T了( 4.3BSD中来自AT&T UNIX的代码已经不足10%),并且早已经领先与AT&T的UNIX(最早实现TCP/IP协议的就是BSD)。而AT&T的UNIX系统实验室,也在不断改进它们的商用UNIX版本,它们吸收了BSD UNIX 中已有的各种先进特性,并结合其本身的特点,推出了System V版本。这样就使得UNIX分裂为了两个大的派系,即基于AT&T的SystemV和基于伯克利代码的BSD。

1983年Ken Thompson (肯 汤姆森)和 Dennis Ritchie(丹尼斯·里奇)获图灵奖

90年代开始到现在是Unix操作系统的完善阶段。
当AT&T推出System V Release 4(第五版本的第四次正式发布产品)之后,它和伯克利的4.3BSD已经形成了当前Unix操作系统的两大流派。
此时,AT&T认识到了Unix操作系统价值,因此他起诉包括伯克利在内的很多厂商,伯克利不得不推出不包含任何AT&T源代码的4.4BSD Lite,这次司法起诉也使很多Unix操作系统厂商从BSD转向了System V流派。而FreeBSD的发展速度之所以会落于后起之秀Linux上,这也是一个重要原因。这时候Linux出现了,它是一个完全免费的与Unix兼容的操作系统,可运行在多种平台上。

虽然Unix操作系统已经非常开放,但在80年代其内核代码也不是随意就可以得到的。最容易得到的代码是Minix,用于教学目的而编写
的一个系统,这远不是一个成熟的系统。于是1991年的十月,由一个名为 Linus Torvalds的年轻芬兰大学生带头开发的作业系统。芬兰的Linus决定自己编写一个独立的操作系统,在Internet上发布了一个通告。这个成为Linux的系统在Internet上的众多爱好者的帮助下迅速开发出来,并取得了巨大的成功。

Linux和其他Unix操作系统的源码完全无关,严格来讲只能算仿制品。但Linux的开发者来自整个Internet,具有各种Unix系统的背景,因此
Linux也集中了各种Unix操作系统的优点,从性能上与商业产品毫不逊色。所以从广义上来说,Linux 就是类 Unix 系统,也可以算是 Unix 系统的一个派系吧。

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

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

相关文章

linux服务器不会中毒,[转载]ubuntu 不会中毒的原因(转)

ubuntu不会中毒的原因不是因为linux用户少,而是其它原因。如下是转载的高手的文章:可能不少人持这样一种观点,认 为 Linux病毒少是因为Linux不像Windows那么普及,其实这种观点很早已经被人批驳过了,一个最有力的论据是…

6-7 使用函数输出水仙花数_「Java」再议printf函数

System.out.printf() 是在JDK1.5版开始引入的方法,即在JDK1.5以后的版本才可以使用此函数,printf 方法有 printf(String format, Object ... args) 和 printf(Locale l, String format, Object ... args) 两种重载方式。其实学过C语言的小伙伴应该会觉得…

Debian GNU/Linux 的发展简史

Debian 是最早的 Linux 发行版之一,由 Ian Murdock(伊恩默多克) 创立。lan Murdock 于1973年4 月28日出生于德国的君斯坦市(Konstanz, Germany)。他是Debian GNU/Linux 发行版的创始人,也是商用Linux发行商Progeny公司的创始人。他…

jdk 细粒度锁_使用JDK 8轻松进行细粒度排序

jdk 细粒度锁Java的8的推出流和有用的静态 / 默认的方法比较接口可以很容易地根据个人的领域两个对象比较“值,而不需要实现一个比较(T,T)在其对象的类方法被比较。 我将使用一个简单的Song类来帮助演示这一点,接下来…

c语言命名规则_C语言的基本数据类型及变量

学习目标了解C语言的基本数据类型了解变量的基本概念了解变量的使用方法了解了变量的命名方法了解格式占位符了解变量的输出了解C语言程序的基本数据类型及概念的使用方法擦在C语言编程中,系统定义了多种数据类型,本节将讲解基本数据类型的分类。基本数据…

linux socket默认超时时间设置,Socket中如何设置连接超时 (转)

Socket中如何设置连接超时 (转)Socket中如何设置连接超时AntGhazi/2001.12.14 主页:antghazi.yeah把CSDN与中文翻了底朝天,也没找到如何设置socket的连接超时的满意方法,问此问题的兄弟已有一大堆,这里偶就讲一下win下如何设置soc…

Linux 常用的软件包管理器/软件包管理工具详解

文章目录RPM 是什么?应用于哪些系统RPM 的前端工具有哪些RPM 包命名规范RPM 安装软件的默认路径RPM 安装原理图RPM 命令详解YUM 是什么?应用于哪些系统YUM 原理说明主要特点YUM 和 RPM 的区别YUM 命令详解DNF 是什么应用于哪些系统DNF 命令详解APT 是什么…

java world_Java World中的GraphQL简介

java world许多人认为GraphQL仅适用于前端和JavaScript,它在Java等后端技术中不占优势,但事实确实如此。 还经常将GraphQL与REST进行比较,但是这种比较是否合理? 首先,让我开始回答其中最重要的问题。 什么是GraphQL…

快速排序 动图_Java十大排序算法最强总结

看到一篇很不错的文章,不多说,看吧排序算法说明0.1 排序的定义对一序列对象根据某个关键字进行排序。0.2 术语说明稳定:如果a原本在b前面,而ab,排序之后a仍然在b的前面;不稳定:如果a原本在b的前…

linux安装2870无线网卡,ubuntu15.04安装usb无线网卡

一般这种无线网卡都是联fake芯片,我使用的ralin(你懂的k)的usb无线1150 M。你去找lei凌官网找不到,只能去找芯片类型的制造者,所以只能去联Fake官网查询下载对应型号。1、我是这样子查看型号的,找到通过驱动软件检测并已经安装成功…

Linux 应用程序的源码包如何安装?

文章目录configuremakemake install关于文件 configure 的简单介绍其它命令简介C 语言开发的应用程序的源码包常以 .tar.gz 为扩展名,并且这些源码包通常使用 GNU 的 AUTOCONF 和 AUTOMAKE 生成编译配置文件,我们拿到这样的软件包后,执行下面…

exec su-exec_WildFly Kubernetes exec探针

exec su-exec活动性和就绪性探针会告诉Kubernetes,某个Pod是否正在运行并准备进行一些工作。 企业应用程序可以通过HTTP探测应用程序的状态。 如果没有暴露HTTP端点,Kubernetes也可以通过执行命令进行探测。 WildFly附带了有用的jboss-cli.sh 。 此CLI检…

feignclient注解使用_从 Feign 使用注意点到 RESTFUL 接口设计规范

最近项目中大量使用了Spring Cloud Feign来对接http接口,踩了不少坑,也产生了一些对RESTFUL接口设计的想法,特此一篇记录下。SpringMVC的请求参数绑定机制了解Feign历史的朋友会知道,Feign本身是Netflix的产品,Spring …

Linux 的发行版 Ubuntu 的发展简史

Ubuntu(又称乌班图)是一个是基于 Debian GNU/Linux 的以桌面应用为主的免费开源的 GNU/Linux 操作系统,由全球化的专业开发团队 Canonical 公司打造的。 Ubuntu Linux 是由南非人马克沙特尔沃思(Mark Shuttleworth)创办的基于 Debian Linux的…

linux实验报告五gcc编译,Linux之GCC命令 -- 解析GCC编译的四个过程

在Linux下进行C语言编程,必然要采用GNU GCC来编译C源代码生成可执行程序。Gcc指令的一般格式为:Gcc [选项] 要编译的文件 [选项] [目标文件]。其中,目标文件可缺省,Gcc默认生成可执行的文件名为:编译文件.out看一下经典…

python创建虚拟环境命令_Python创建虚拟环境报错

我使用命令:mkvirtualenv -p python3 test1,创建虚拟环境,然后报错如下(),虚拟机是用nat模式的: Exception: Traceback (most recent call last): File "/home/python/.virtualenvs/test11/share/python-wheels/urllib3-1.13.1-py2.py3-…

java7和java8切换_切换表达式到Java吗?

java7和java8切换已创建一个标题为“ Java语言的开关表达式”的JEP草案 。 当前的“摘要”状态为:“扩展switch语句,以便可以将其用作语句或表达式,并改善switch处理null的方式。 这些将简化日常编码,并为在switch使用模式匹配做好…

Xenix 操作系统的简史

简介 Xenix 是一种UNIX操作系统,可在个人电脑及微型计算机上使用。该系统由微软公司在1979年从美国电话电报公司获得授权,为Intel处理器所开发。后来,圣克鲁兹作业公司(SCO)收购了其独家使用权,自那以后&a…

servlet 配置 使用_配置HTTPS以与Servlet一起使用

servlet 配置 使用要配置Java EE应用程序以通过HTTPS进行通信,需要在web.xml文件中使用几行XML。 web.xml文件位于项目的WEB-INF目录中,通常在IDE生成Java EE Web应用程序时自动创建。 如果不是,您可以自己创建它。 HTTPS的动机 为Web应用程…

python写接口测试代码_python写运单接口测试(增改查)完整代码

importrequestsimportjsonfrom urllib importparseclassHttpWayBillRquest:运单的增改查 defaccess_token(self):获取tokenurl http://xxxxxxxxx.comusername 12333password 12334566res_json requests.get(url, auth(username, password)).json()print(access_token的结果为&a…