TOC[-]
计算机基础知识及UNIX发展史
计算机系统由硬件(Hardware)系统和软件(Software)系统两大部分组成,如下图所示:
1946年数学家冯·诺依曼于提出,其中包括:运算器、控制器、存储器(主/辅助)、输入设备、输出设备。
五大部件组成简要描述:
PC服务器含有的主要部件包括:CPU、内存、硬盘、RAID卡、网卡、HBA卡、风扇、电源等,其硬件结构图如下所示:
对关键部件的简要介绍如下:
a) CPU:
b) 内存:
c) 外存:
d) 硬盘:
磁盘则为永久存放数据的存储器,磁盘上也是有缓存的(芯片),读取数据的性能比内存差,所以,在企业工作中,我们才会把大量的数据缓存到内存中,写入到缓冲区。
e) RAID卡:
用来实现RAID的建立和重建,检测和修复多位错误,错误磁盘自动检测等功能。RAID芯片使CPU的资源得以释放。 有Raid卡后,一般磁盘就会插在raid卡上再连接到主板上,而不是直接插到主板上面。当然Raid卡的级别和具体的配置做运维的同学也得掌握,如RAID0、1、5、6、10等(后续补充)。
RAID作用
如上简要介绍服务器组成结构的关键部件,其他部件如、网卡、HBA卡、风扇及电源等不在此赘述,请大家自行学习。
f) 关键概念:
关于存储容量方面的换算,具体如下:
DT时代,数据大爆炸......
服务器外置存储根据连接方式可以分为:直连式存储(DAS: Direct-Attached Storage)和网络化存储(Fabric-Attached Storage,简称FAS)。网络化存储又分为:网络附加存储(NAS:Network-Attached Storage)和存储区域网络(SAN:Storage Area Network)。
a) DAS(Direct-Attached Storage)
DAS存储设备与服务器主机之间的连接通道通常采用SCSI连接,DAS存储设备主要是磁盘阵列(RAID: Redundant Arrays of Independent Disks)、磁盘簇(JBOD:Just a Bunch Of Disks)等。随着阵列的硬盘数量越来越多,SCSI通道将会成为IO瓶颈。PC中的硬盘或只有一个外部SCSI接口的JBOD都属于DAS架构。 注意: JBOD是在一个底板上安装的带有多个磁盘驱动器的存储设备。通常又称为Span。和RAID阵列不同,JBOD没有前端逻辑来管理磁盘上的数据分布。每个磁盘进行单独寻址,作为分开的存储资源。目前应用比较广泛。
JBOD是在逻辑上把几个物理磁盘一个接一个串联到一起,从而提供一个大的逻辑磁盘。JBOD存储容量等于组成Span的所有磁盘的容量的总和。但JBOD不能提供任何RAID所能带来的容错或是性能方面的好处。
b) NAS(Network-Attached Storage)
NAS存储就是存储设备通过标准的网络拓扑结构(比如以太网)添加到一群计算机上。与DAS以及SAN不同,NAS是文件级的存储方法。采用NAS较多的功能是用来进行文件共享。
NAS存储需要有一台NAS服务器,NAS服务器可以为网络中的所有存储节点建立分布式的网络文件系统,一般采用的协议是网络文件系统(NFS:Network File System)协议或SMB(Server Message Block)协议。
NAS设备,或者说网络文件共享协议,一般支持多计算机平台,如Linux、Windows、Solaris等,即插即用,存储节点随时可以把自己的文件目录挂载到NAS服务器上。
不同的主机(如NFS客户机)通过NFS协议可访问到同一个文件。而DAS与SAN存储设备中的数据只属于与之相连的主机,其他主机则无法访问。
c) SAN(Storage Area Network)
存储区域网络,是通过光纤通道(Fiber Channel)交换机连接存储阵列和服务器主机,最后成为一个专用的存储网络。 与DAS相比,SAN存储的优点在于:
用图示说明DAS、NAS及SAN三者的区别,具体如下:
(后续补充……)
a) ABI和API区别
综上所述,它们都是所谓的应用程序接口,只是它们所描述的接口所在的层面不一样。API往往指源代码级别的接口,必然我们可以说POSIX是一个API标准、windows所规定的应用程序接口是一个API;而ABI是指二进制层面的接口,ABI的兼容程度比API要更为严格,比如我们可以说C++的对象内存分布(Object Memory Layout)是C++ ABI的一部分。
b) Library fuction和System call
实际上,系统调用所提供给用户的是直接而纯粹的高级服务,如果想要更人性化,具有更符合特定情况的功能,那么就要我们用户自己来定义,因此就衍生了库函数,它把部分系统调用包装起来,一方面把系统调用抽象了,一方面方便了用户级的调用。系统调用和库函数在执行的效果上很相似(当然库函数会更符合需求),但是系统调用是运行于内核状态;而库函数由用户调用,运行于用户态。 系统调用是为了方便使用操作系统的接口,而库函数则是为了人们编程的方便。 从实施者的角度,系统调用和库函数之间有重大区别,但从用户角度其区别并不非常重要。
c) 用户和内核空间
a) UNIX发展简史
1946年:世界上第一台电脑ENIAC在美国宾夕法尼亚大学诞生,目的是用来计算炮弹弹道,重达30吨。
1947年:BELL实验室发明晶体管。
1958年:TI发明集成电路。 1969年之前,BELL实验室、MIT、GE联合开发Multics。 1969年:BELL的Ken Thompson为自己开发了Unics(这个是戏称的非正式的名称,因为思想源自Multics)。 1971年:Intel发布第一微处理器4004。 1973年:UNIX正式诞生,BELL实验室的Dennis开发出C语言,并用C语言重写了Unics,正式取名UNIX。 1977年:UNIX分支--BSD诞生,加州伯克利大学Bill Joy取得了UNIX的源代码,加以修改和完善,成为UNIX重要分支BSD-UNIX。之后的x86上的FreeBSD就是BSD改版而来。 1979年:AT&T宣布收回UNIX版权,不再开放,同时发布System V架构的UNIX。期间众多公司的UNIX系统纷纷出现。 1979年:Intel推出8086/8088 CPU。 1981年:IBM发布IBM PC,x86架构的PC机开始流行。 1984年:x86架构的Minix操作系统诞生。 1984年:Stallman启动GNU项目,目的是开放一个自由、开源的UNIX(Free UNIX)。由于工程浩大,Stallman决定先编写应用程序,如GCC,Emacs等出现。 1988年:XFree86诞生,即x86版UNIX上的GUI系统。 1991年:Linux诞生,Linus Torvalds发布的运行在386机器上的内核程序。 2008年:Google发布基于Linux的手机操作系统Android。
b) UNIX发展史博文
分享一篇以故事形式编写的UNIX发展史博文。 http://www.cnblogs.com/Dodge/articles/4264833.html
License就是版权许可证,里面详尽表述了你获得代码后拥有的权利,可以对别人的作品进行何种操作,何种操作又是被禁止的。软件的版权许可证可有很多方式,本文仅限于讨论开源软件协议 Open Source License。 世界上的开源许可证(Open Source License)大概有上百种,而我们常用的开源软件协议大致有GPL、BSD、MIT、Mozilla、Apache和LGPL。我们不必要每个开源协议都了然于心,但是可以了解几个主要的协议的权利和义务。
乌克兰程序员Paul Bagwell,画了一张分析图,说明应该怎么选择开源协议,汉化版详细如下:
如下更加清晰和完全一点的图:
分享几条大咖前辈们总结的Linux哲学思想:
原文地址:http://blog.51cto.com/guogyangq/2095363