Unix的开发不受控于某一个厂商或者组织,是由诸多商业和非商业团体共同贡献进行演化的。这导致两个结果:一是Unix集多种特性于一身,二是由于参与者众多,随着时间推移,Unix实现方式逐渐趋于分裂。

由于第二个结果导致的发展就是:大家要求统一标准。类似秦王扫六合,统一文字和货币。

Unix出现之后很快出现了C语言,随后Unix被C语言重写,这也是第一个以高级语言开发的操作系统。由于使用了高级语言,使得Unix能够像其他硬件架构进行移植,因为不再使用依赖硬件的低级语言了。

C/C++语言是系统编程语言,相对应的Java、Python等语言则是非系统编程语言。

Unix系统在1979年的第七版之后正式分裂成了2种实现:BSD和System V。

BSD是Unix发明人Thompson在母校加州大学伯克利分校带领研究生们增加诸多新功能新特性实现的。

System V则是由发明人Thompson之前所在的公司AT&T的Unix部门实现。

两者都相互使用了对方的专有源码,因此打了2场官司,最终于1994年达成和解,双方继续能够发布各自的系统(专有源码需要重写或删除,或者标记有copyright)。

当时的年代,计算机行业的传统形式是:每个公司提供自己的硬件和操作系统,硬件和操作系统相互搭配,不可移植,硬件和操作系统均是收费的,类似于今天iPhone只能是iPhone手机和iOS系统搭配,而不能iPhone和Android系统搭配

所以从一种硬件和系统换到另一种硬件和系统,代价昂贵,不仅要移植应用,技术人员还要重新学习适应。使用高级语言重写并且经过广泛移植在各种硬件并测试可行的Unix系统开始占领服务器系统OS市场。

Linux是从Andrew Tanenbaum(现代操作系统/Modern Operating Systems的作者)Minix借鉴而来,而Minix则是借鉴于Unix。完全的Linux应该叫做GNU/Linux,最初的Linux只是一个内核,只提供了管理硬件的功能,除此之外几乎不能做任何事,仅仅能让计算机开机而已,随后Linux使用了大量的GNU工具(包括shell,Emacs,gcc,glibc等等),才组成了一个完整的Linux系统。(个人认为Linux的真正名称应该是GNU/Linux,而不是Linux,大量工具来自于GNU,内核也是源自于Minix,后期更是诸多大牛加入出力,功劳全成Linus Torvalds的了,还把他说的像神一样,真是呵呵)。

2003年之前,Linux版本有稳定版和开发版的奇偶数之分,2003年之后不再有这个区分。

由于Uni存在两个分支,许多公司基于这2个分支中的一个基于自己的硬件进行开发并增加自己的特色导致Unix种类繁多,某一个程序无法很好的适应于所有的Unix实现,由此而出现了“标准化”的呼声。在此呼声下,国际统一了C语言和Unix系统的标准。

标准的演化是:首先出现了POSIX标准 ---> 基于POSIX产生了XPG标准 ---> 基于XPG和额外增加的标准产生了SUS标准 ---> 规范及修订POSIX和SUS标准产生了新标准,新标准可以称作POSIX,也可以叫做SUS。

最后是总结本章:

1969年Ken Thompson在AT&T公司发明了Unix系统,而后Thompson在加州大学伯克利分校和AT&T公司的Unix部门各自维护了一个实现,分裂成了2种版本。

分裂的2种版本各自吸收使用了对方的一些特色和专有源码,并相互起诉,最终和解。

分裂的2种版本导致各种不同的演化,最终由此产生了统一标准。Linux符合此标准,在Unix的市场上普及开来。

Linux/Unix系统编程手册 第一章:历史和标准的更多相关文章

  1. Linux/Unix系统编程手册 第二章:基本概念

    本章预热与后续系统编程有关的概念. 术语“操作系统”通常包含2种含义:一是指完整的软件包,包括管理计算机资源的核心组件,已经附带的标准软件:二是独指管理硬件的内核. 内核具有诸多概功能,包括: 进程管 ...

  2. 《Linux/UNIX系统编程手册》第63章 IO多路复用、信号驱动IO以及epoll

    关键词:fasync_helper.kill_async.sigsuspend.sigaction.fcntl.F_SETOWN_EX.F_SETSIG.select().poll().poll_wa ...

  3. 《Linux/UNIX系统编程手册》第56章 SOCKET:介绍

    关键词: 1. socket基础 一个典型的客户端/服务器场景中,应用程序使用socket进行通信的方式如下: 各个应用程序创建一个socket.socket是一个允许通信的设备,两个应用程序都需要用 ...

  4. 《Linux/Unix系统编程手册》读书笔记6

    <Linux/Unix系统编程手册>读书笔记 目录 第9章 这章主要讲了一堆关于进程的ID.实际用户(组)ID.有效用户(组)ID.保存设置用户(组)ID.文件系统用户(组)ID.和辅助组 ...

  5. 《Linux/Unix系统编程手册》读书笔记5

    <Linux/Unix系统编程手册>读书笔记 目录 第8章 本章讲了用户和组,还有记录用户的密码文件/etc/passwd,shadow密码文件/etc/shadow还有组文件/etc/g ...

  6. 《Linux/Unix系统编程手册》读书笔记1

    <Linux/Unix系统编程手册>读书笔记 目录 最近这一个月在看<Linux/Unix系统编程手册>,在学习关于Linux的系统编程.之前学习Linux的时候就打算写关于L ...

  7. 《Linux/Unix系统编程手册》读书笔记8 (文件I/O缓冲)

    <Linux/Unix系统编程手册>读书笔记 目录 第13章 这章主要将了关于文件I/O的缓冲. 系统I/O调用(即内核)和C语言标准库I/O函数(即stdio函数)在对磁盘进行操作的时候 ...

  8. 《Linux/Unix系统编程手册》读书笔记7 (/proc文件的简介和运用)

    <Linux/Unix系统编程手册>读书笔记 目录 第11章 这章主要讲了关于Linux和UNIX的系统资源的限制. 关于限制都存在一个最小值,这些最小值为<limits.h> ...

  9. 《Linux/Unix系统编程手册》读书笔记4

    <Linux/Unix系统编程手册>读书笔记 目录 第7章: 内存分配 通过增加堆的大小分配内存,通过提升program break位置的高度来分配内存. 基本学过C语言的都用过mallo ...

随机推荐

  1. 官方下拉刷新控件SwipeRefreshLayout的使用

    今天看博客,发现有了这个下拉刷新的控件,效果看上去还蛮好的,于是我也想研究的是使用一下,写个demo.其实使用很简单的,但就是为了能使用这个新组建我下了好久的更新,后来还是直接去官网下载最新的ADT得 ...

  2. token是干啥子的

    http://www.cnblogs.com/wweichao/p/9325668.html 在上面这篇博客中,我们知道了通过weibo提供的一系列接口,我们可以实现登录,然后也有了token,可以获 ...

  3. 计算机网络【1】—— OSI七层协议和TCP/IP四层协议

    新开一贴,专门用来记录计算机网络相关知识. 一.OSI七层协议 物理层.数据链路层.网络层.传输层.会话层.表示层.应用层 二.TCP/IP四层协议 网络接口层.网际层.运输层.应用层 三.五层协议 ...

  4. RF相关知识

    前言:下文中的总结都是来自于网络,有的来自与博客,有的来自于维基百科/百度百科,仅仅是为了方便查看.   ASK: ASK:幅移键控调制的简写,例如二进制的,把二进制符号0和1分别用不同的幅度来表示, ...

  5. BZOJ5123 线段树的匹配(树形dp)

    线段树的任意一棵子树都相当于节点数与该子树相同的线段树.于是假装在树形dp即可,记忆化搜索实现,有效状态数是logn级别的. #include<iostream> #include< ...

  6. java解数独

    先输入要解的数独,采用多维数组来保存其中的值,未填数字的地方,初始化为0,然后采用递归的方法来解数独. 直接上代码: /** * * @author walker * */ public class ...

  7. C++接口继承与实现继承的区别和选择

    1.接口继承与实现继承的区别 <Effective C++>条款三十四:区分接口继承和实现继承中介绍的比较啰嗦,概括地说需要理解三点: (1)纯虚函数只提供接口继承,但可以被实现: (2) ...

  8. js子节点children和childnodes的用法

    想要获取子节点的数量,有几种办法. childNodes 它会把空的文本节点当成节点, <ul> 文本节点 <li>元素节点</li> 文本节点 <li> ...

  9. R读取excel文件

    2017.09.05 我一个下午的成果啊啊啊啊,看看失败 不禁感叹一声,失败的路真是多啊!!!! 一.安装xlsx包 下面具体讲一讲怎么弄的(太笨了,所以学得慢,需要一步一步的来) 用R读取excel ...

  10. PyCharm引入自定义类报错

    This inspection detects names that should resolve but don't. Due to dynamic dispatch and duck typing ...