Linux/Unix系统编程手册 第一章:历史和标准
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系统编程手册 第一章:历史和标准的更多相关文章
- Linux/Unix系统编程手册 第二章:基本概念
本章预热与后续系统编程有关的概念. 术语“操作系统”通常包含2种含义:一是指完整的软件包,包括管理计算机资源的核心组件,已经附带的标准软件:二是独指管理硬件的内核. 内核具有诸多概功能,包括: 进程管 ...
- 《Linux/UNIX系统编程手册》第63章 IO多路复用、信号驱动IO以及epoll
关键词:fasync_helper.kill_async.sigsuspend.sigaction.fcntl.F_SETOWN_EX.F_SETSIG.select().poll().poll_wa ...
- 《Linux/UNIX系统编程手册》第56章 SOCKET:介绍
关键词: 1. socket基础 一个典型的客户端/服务器场景中,应用程序使用socket进行通信的方式如下: 各个应用程序创建一个socket.socket是一个允许通信的设备,两个应用程序都需要用 ...
- 《Linux/Unix系统编程手册》读书笔记6
<Linux/Unix系统编程手册>读书笔记 目录 第9章 这章主要讲了一堆关于进程的ID.实际用户(组)ID.有效用户(组)ID.保存设置用户(组)ID.文件系统用户(组)ID.和辅助组 ...
- 《Linux/Unix系统编程手册》读书笔记5
<Linux/Unix系统编程手册>读书笔记 目录 第8章 本章讲了用户和组,还有记录用户的密码文件/etc/passwd,shadow密码文件/etc/shadow还有组文件/etc/g ...
- 《Linux/Unix系统编程手册》读书笔记1
<Linux/Unix系统编程手册>读书笔记 目录 最近这一个月在看<Linux/Unix系统编程手册>,在学习关于Linux的系统编程.之前学习Linux的时候就打算写关于L ...
- 《Linux/Unix系统编程手册》读书笔记8 (文件I/O缓冲)
<Linux/Unix系统编程手册>读书笔记 目录 第13章 这章主要将了关于文件I/O的缓冲. 系统I/O调用(即内核)和C语言标准库I/O函数(即stdio函数)在对磁盘进行操作的时候 ...
- 《Linux/Unix系统编程手册》读书笔记7 (/proc文件的简介和运用)
<Linux/Unix系统编程手册>读书笔记 目录 第11章 这章主要讲了关于Linux和UNIX的系统资源的限制. 关于限制都存在一个最小值,这些最小值为<limits.h> ...
- 《Linux/Unix系统编程手册》读书笔记4
<Linux/Unix系统编程手册>读书笔记 目录 第7章: 内存分配 通过增加堆的大小分配内存,通过提升program break位置的高度来分配内存. 基本学过C语言的都用过mallo ...
随机推荐
- Android Apollo MQTT入门
一.Apache Apollo服务器其实是一个消息中转站 下载地址 http://activemq.apache.org/apollo/download.html 服务搭建方式,参看博客Android ...
- topcoder srm 738 div1 FindThePerfectTriangle(枚举)
Problem Statement You are given the ints perimeter and area. Your task is to find a triangle wi ...
- Long Long Message POJ - 2774(最长公共子串)
题意: 给你两串字符,要你找出在这两串字符中都出现过的最长子串 解析: 先用个分隔符将两个字符串连接起来,再用后缀数组求出height数组的值,找出一个height值最大并且i与i-1的sa值分别在两 ...
- The Bells are Ringing UVALive - 4060(枚举求解)
输出整数N,使得 t1 <= N 统计有多少组t1,t2,t3,满足:1<t1<t2<t3<=1000000,t3-t1<=25,且t1,t2,t3的最小公倍数 ...
- Trailing Zeroes (II) LightOJ - 1090(预处理+前缀和)
求C(n,r)*p^q的后缀零 考虑一下 是不是就是求 10^k*m 的k的最大值 而10又是由2 和 5 组成 所以即是求 2^k1 * 5^k2 * m1 中k1和k2小的那一个数 短板效应嘛 ...
- 小Z的袜子(hose) HYSBZ - 2038 (莫队算法)
原文地址:http://hzwer.com/2782.html 「BZOJ2038」[2009国家集训队] 小Z的袜子(hose) 2014年4月26日13,34721 Description 作为一 ...
- STL 基本概念
STL 基本概念 STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称.现在是一个C++软件库,也是C++标准程序库的一部分,但在被引入C++之前 ...
- 【转】一口气读懂NB-IoT
在过去的一年多,NB-IoT真的可以说是大红大紫.在通信圈里,除了说5G,就是说物联网.如果说物联网,八成就是在说NB-IoT. 在目前5G还没来的情况下,NB-IoT基本上是独领风骚.风光无限. 各 ...
- USACO Section 1.5 Prime Palindromes 解题报告
题目 题目描述 题目就是给定一个区间[a,b]((5 <= a < b <= 100,000,000)),我们需要找到这个区间内所有既是回文串又是素数的数字. 输入样例 5 500 ...
- Android获取长按按键响应
Android获取长按按键响应http://www.2cto.com/kf/201312/261719.html Android下Listview的onItemClick以及onItemLongCli ...