计算机系统是由硬件系统(hardware)和软件系统(software system)两部分组成。html
从硬件基本结构上来说,计算机是由运算器、控制器、存储器、输入设备、输出设备五大部分组成的,每一部分分别按要求执行特定的基本功能。linux
一、运算器(算数逻辑单元Arithmetical and Logical Unit)的主要功能是对数据进行各类运算。这些运算除了常规的加、减、乘、除等基本的的算术运算以外,还包括能进行“逻辑判断”的逻辑处理能力,即“与”、“或”、“非”这样的基本逻辑运算以及数据的比较、位移等操做。数据库
二、控制器(Control Unit) 控制器是整个计算机系统的控制中心,它指挥计算机各部分协调地工做,保证计算机按照预先规定的目标和步骤有条不紊地进行操做及处理。 控制器从存储器中逐条取出指令,分析每条指令规定的是什么操做以及所需数据的存放位置等,而后根据分析的结果向计算机其它部分发出控制信号,统一指挥整个计算机完成指令所规定的操做。所以,计算机自动工做的过程,其实是自动执行程序的过程,而程序中的每条指令都是由控制器来分析执行的,它是计算机实现“程序控制”的主要部件。 一般把控制器与运算器合称为中央处理器(Central Processing Unit-CPU)。工业生产中老是采用最早进的超大规模集成电路技术来制造中央处理器,即 CPU 芯片。它是计算机的核心部件。它的性能,主要是工做速度和计算精度,对机器的总体性能有全面的影响。编程
三、存储器(Memory unit)的主要功能是存储程序和各类数据信息,并能在计算机运行过程当中高速、自动地完成程序或数据的存取。存储器是具备“记忆”功能的设备,它具备两种稳定状态的物理期间来存储信息。这些器件也称为记忆元件。因为记忆元件只有两种稳定状态,所以在计算机中采用只有两个数码“0”和“1”的二进制来表示数据。记忆元件的两种稳定状态分别表示“0”和“1”。平常使用的十进制数必须转换成等值的二进制数才能存入存储器中。计算机中处理的各类字符,例如英文字母、运算符号等,也要转换成二进制代码才能存储和操做。 存储器是由成千上万个“存储单元”构成的,每一个存储单元存放必定位数(微机上为8位)的二进制数,每一个存储单元都有惟一的编号,称为存储单元的地址。“存储单元”是基本的存储单位,不一样的存储单元是用不一样的地址来区分的,就好像居民区的一条街道上的住户是用不一样的门牌号码来区分同样。 计算机采用按地址访问的方式到存储器中存数据和取数据,即在计算机程序中,每当须要访问数据时,要向存储器送去一个地址指出数据的位置,同时发出一个“存放”命令(伴以待存放的数据),或者发出一个“取出”命令。这种按地址存储方式的特色是,只要知道了数据的地址就能直接存取。但也有缺点,即一个数据每每要占用多个存储单元,必须连续存取有关的存储单元才是一个完整的数据。 计算机在计算以前,程序和数据经过输入设备送入存储器,计算机开始工做以后,存储器还要为其它部件提供信息,也要保存中间结果和最终结果。所以,存储器的存数和取数的速度是计算机系统的一个很是重要的性能指标。ubuntu
四、输入设备(Input device) 用来向计算机输入各类原始数据和程序的设备叫输入设备。输入设备把各类形式的信息,如数字、文字、图像等转换为数字形式的“编码”,即计算机可以识别的用1和0表示的二进制代码(其实是电信号),并把它们“输入”(INPUT)到计算机内存储起来。键盘是必备的输入设备、经常使用的输入设备还有鼠标器、图形输入板、视频摄像机等。小程序
五、输出设备(Output device) 从计算机输出各种数据的设备叫作输出设备。输出设备把计算机加工处理的结果(仍然是数字形式的编码)变换为人或其它设备所能接收和识别的信息形式如文字、数字、图形、声音、电压等。经常使用的输出设备有显示器、打印机、绘图仪等。安全
系统软件是指控制和协调计算机及外部设备,支持应用软件开发和运行的系统,是无需用户干预的各类程序的集合,主要功能是调度,监控和维护计算机系统;负责管理计算机系统中各类独立的硬件,使得它们能够协调工做。系统软件使得计算机使用者和其余软件将计算机看成一个总体而不须要顾及到底层每一个硬件是如何工做的。服务器
基本概念:网络
各类应用软件,虽然完成的工做各不相同,但它们都须要一些共同的基础操做,例如都要从输入设备取得数据,向输出设备送出数据,向外存写数据,从外存读数据,对数据的常规管理,等等。这些基础工做也要由一系列指令来完成。人们把这些指令集中组织在一块儿,造成专门的软件,用来支持应用软件的运行,这种软件称为系统软件。通常来说,系统软件包括操做系统和一系列基本的工具(好比编译器,数据库管理,存储器格式化,文件系统管理,用户身份验证,驱动管理,网络链接等方面的工具),是支持计算机系统正常运行并实现用户操做的那部分软件。系统软件通常是在计算机系统购买时随机携带的,也能够根据须要另行安装。数据结构
系统软件的主要特征是:
*与硬件有很强的交互性
*能对资源共享进行调度管理
*能解决并发操做处理中存在的协调问题
主要类别:
系统软件在为应用软件提供上述基本功能的同时,也进行着对硬件的管理,使在一台计算机上同时或前后运行的不一样应用软件有条不紊地合用硬件设备。例如,两个应用软件都要向硬盘存入和修改数据,若是没有一个协调管理机构来为它们划定区域的话,必然造成互相破坏对方数据的局面。
操做系统
操做系统管理计算机的硬件设备,使应用软件能方便、高效地使用这些设备。在微机上常见的有:DOS、WINDOWS、UNIX、OS/2等。
在计算机软件中最重要且最基本的就是操做系统(OS)。它是最底层的软件,它控制全部计算机运行的程序并管理整个计算机的资源,是计算机裸机与应用程序及用户之间的桥梁。没有它,用户也就没法使用某种软件或程序。
操做系统是计算机系统的控制和管理中心,从资源角度来看,它具备处理机、存储器管理、设备管理、文件管理等4项功能。
经常使用的系统有DOS操做系统、WINDOWS操做系统、UNIX操做系统和Linux、Netware、Mac OS X等操做系统。
语言处理程序
编译软件CPU执行每一条指令都只完成一项十分简单的操做,一个系统软件或应用软件,要由成千上万甚至上亿条指令组合而成。直接用基本指令来编写软件,是一件极其繁重而艰难的工做。
计算机只能直接识别和执行机器语言,所以要计算机上运行高级语言程序就必须配备程序语言翻译程序,翻译程序自己是一组程序,不一样的高级语言都有相应的翻译程序。
为了提升效率,人们规定一套新的指令,称为高级语言,其中每一条指令完成一项操做,这种操做相对于软件总的功能而言是简单而基本的,而相对于CPU的一眇操做而言又是复杂的。用这种高级语言来编写程序(称为源程序)就象用预制板代替砖块来造房子,效率要高得多。但CPU并不能直接执行这些新的指令,须要编写一个软件,专门用来将源程序中的每条指令翻译成一系列CPU能接受的基本指令(也称机器语言)使源程序转化成能在计算机上运行的程序。完成这种翻译的软件称为高级语言编译软件,一般把它们纳入系统软件。目前经常使用的高级语言有VB、C++、JAVA等,它们各有特色,分别适用于编写某一类型的程序,它们都有各自的编译软件。
数据库管理
数据库管理系统有组织地、动态地存贮大量数据,令人们能方便、高效地使用这些数据。
数据库管理系统是一种操纵和管理数据库的大型软件,用于创建、使用和维护数据库。
Foxpro,Access,Oracle,Sybase,DB2和Informix则是数据库系统。
辅助程序
系统辅助处理程序也称为“软件研制开发工具”、“支持软件”、“软件工具”,主要有编辑程序、调试程序、装备和链接程序、调试程序。
内核结构:
操做系统是一个用来和硬件打交道并为用户程序提供一个有限服务集的低级支撑软件。一个计算机系统是一个硬件和软件的共生体,它们互相依赖,不可分割。计算机的硬件,含有外围设备、处理器、内存、硬盘和其余的电子设备组成计算机的发动机。可是没有软件来操做和控制它,自身是不能工做的。完成这个控制工做的软件就称为操做系统,在Linux的术语中被称为"内核",也能够称为"核心"。Linux内核的主要模块(或组件)分如下几个部分:存储管理、CPU和进程管理、文件系统、设备管理和驱动、网络通讯,以及系统的初始化(引导)、系统调用等。
Linux发行版(Linux distribution)是一种为通常用户预先集成好的Linux操做系统及各类应用软件。通常不须要用户从新编译,在直接安装以后,只须要做出小幅度的更改设置便可。Linux发行版一般包含了桌面环境、办公包、媒体播放器、数据库等应用软件。这些操做系统一般使用Linux、以及来自GNU计划的软件、和基于X Window的图形界面组成。
Linux发行版一般分为商业发行版和社区发行版。也有少部分既不属于发行版又不属于社区发行版,其中最有名的是Slackware.
著名的Linux发行版
按照程序包管理器的不一样,一般Linux的发行版也被分红了不一样的派系。
基于Debian |
Debian |
Ubuntu |
Linux Mint |
knoppix |
MEPIS |
Sidux |
|
基于Red Hat |
|||
|
|||
基于Slackware |
|||
基于Gentoo |
|||
|
|
Debian系列,包括Debian和Ubuntu等。Debian是社区类Linux的典范,是迄今为止最遵循GNU规范 的Linux系统。Debian最先由Ian Murdock于1993年建立,分为三个版本分支(branch): stable, testing 和 unstable。其中,unstable为最新的测试版本,其中包括最新的软件包,可是也有相对较多的bug,适合桌面用户。testing的版本都经 过unstable中的测试,相对较为稳定,也支持了很多新技术(好比SMP等)。而stable通常只用于服务器,上面的软件包大部分都比较过期,可是 稳定和安全性都很是的高。Debian最具特点的是apt-get / dpkg包管理方式,其实Redhat的YUM也是在模仿Debian的APT方式,但在二进制文件发行方式中,APT应该是最好的了。Debian的资 料也很丰富,有不少支持的社区,有问题求教也有地方可去:)
Ubuntu严格来讲不能算一个独立的发行版本,Ubuntu是基于Debian的unstable版本增强而来,能够这么说,Ubuntu就是 一个拥有Debian全部的优势,以及本身所增强的优势的近乎完美的 Linux桌面系统。根据选择的桌面系统不一样,有三个版本可供选择,基于Gnome的Ubuntu,基于KDE的Kubuntu以及基于Xfc的 Xubuntu。特色是界面很是友好,容易上手,对硬件的支持很是全面,是最适合作桌面系统的Linux发行版本。
Redhat系列,包括RHEL(Redhat Enterprise Linux,也就是所谓的Redhat Advance Server,收费版本)、Fedora Core(由原来的Redhat桌面版本发展而来,免费版本)、CentOS(RHEL的社区克隆版本,免费)。Redhat应该说是在国内使用人群最多 的Linux版本,甚至有人将Redhat等同于Linux,而有些老鸟更是只用这一个版本的Linux。因此这个版本的特色就是使用人群数量大,资料非 常多,言下之意就是若是你有什么不明白的地方,很容易找到人来问,并且网上的通常Linux教程都是以Redhat为例来说解的。Redhat系列的包管 理方式采用的是基于RPM包的YUM包管理方式,包分发方式是编译好的二进制文件。稳定性方面RHEL和CentOS的稳定性很是好,适合于服务器使用, 可是Fedora Core的稳定性较差,最好只用于桌面应用。
Gentoo,伟大的Gentoo是Linux世界最年轻的发行版本,正由于年轻,因此能吸收在她以前的全部发行版本的优势,这也是Gentoo 被称为最完美的Linux发行版本的缘由之一。Gentoo最初由Daniel Robbins(FreeBSD的开发者之一)建立,首个稳定版本发布于2002年。因为开发者对FreeBSD的熟识,因此Gentoo拥有媲美 FreeBSD的广受美誉的ports系统 ——Portage包管理系统。不一样于APT和YUM等二进制文件分发的包管理系统,Portage是基于源代码分发的,必须编译后才能运行,对于大型软 件而言比较慢,不过正由于全部软件都是在本地机器编译的,在通过各类定制的编译参数优化后,能将机器的硬件性能发挥到极致。Gentoo是全部Linux 发行版本里安装最复杂的,可是又是安装完成后最便于管理的版本,也是在相同硬件环境下运行最快的版本。
SuSE AG在商界已经奋斗了8年多,它一直致力于建立一个链接数据库的最佳Linux版本。为了实现这一目的,SuSE与Oracle 和IBM合做,以使他们的产品能稳定地工做。SuSE还开发了SuSE Linux eMail Server III,一个很是稳定的电子邮件群组应用。基于2.4.10内核的SuSE 7.3,在原有版本的基础上提升了易用性。安装过程经过GUI完成,磁盘分区过程也很是简单,但它没有为用户提供更多的控制和选择。在SuSE 操做系统下,能够很是方便地访问Windows磁盘,这使得两种平台之间的切换,以及使用双系统启动变得更容易。SuSE的硬件检测很是优秀,该版本在服务器和工做站上都用得很好。SuSE拥有界面友好的安装过程,还有图形管理工具,可方便地访问Windows磁盘,对于终端用户和管理员来讲使用它一样方便,这使它成为了一个强大的服务器平台。 SuSE也经过基于Web的论坛提供技术支持,另外我还发现它有电话技术支持。
咱们很熟悉的Linux就是采用了GPL。GPL协议和BSD, Apache Licence等鼓励代码重用的许可很不同。GPL的出发点是代码的开源/无偿使用和引用/修改/衍生代码的开源/无偿使用,但不容许修改后和衍生的代码作为闭源的商业软件发布和销售。这也就是为何咱们能用免费的各类linux,包括商业公司的linux和linux上各类各样的由我的,组织,以及商业软件公司开发的免费软件了。
GPL(GNU General Public License):
GPL协议的主要内容是只要在一个软件中使用("使用"指类库引用,修改后的代码或者衍生代码)GPL 协议的产品,则该软件产品必须也采用GPL协议,既必须也是开源和免费。这就是所谓的"传染性"。GPL协议的产品做为一个单独的产品使用没有任何问题,还能够享受免费的优点。
因为GPL严格要求使用了GPL类库的软件产品必须使用GPL协议,对于使用GPL协议的开源代码,商业软件或者对代码有保密要求的部门就不适合集成/采用做为类库和二次开发的基础。其它细节如再发布的时候须要伴随GPL协议等和BSD/Apache等相似。
LGPL(GNU Lesser General Public License):
LGPL 是GPL的一个为主要为类库使用设计的开源协议。和GPL要求任何使用/修改/衍生之GPL类库的的软件必须采用GPL协议不一样。LGPL容许商业软件经过类库引用(link)方式使用LGPL类库而不须要开源商业软件的代码。这使得采用LGPL协议的开源代码能够被商业软件做为类库引用并发布和销售。
可是若是修改LGPL协议的代码或者衍生,则全部修改的代码,涉及修改部分的额外代码和衍生的代码都必须采用LGPL协议。所以LGPL协议的开源代码很适合做为第三方类库被商业软件引用,但不适合但愿以LGPL协议代码为基础,经过修改和衍生的方式作二次开发的商业软件采用。
GPL/LGPL都保障原做者的知识产权,避免有人利用开源代码复制并开发相似的产品
BSD(Berkeley Software Distribution)协议:
一、若是二次发布的产品中包含源代码,则在源代码中必须带有原来的代码中的BSD协定;
二、若是二次发布产品是二进制格式的库或程序,则须要在发布的文档或版权声明中说明包含原来的代码中的BSD协定;
三、不能够用开源代码的做者或组织,以及原来的产品的名字作市场推广;
Apache Licence:
Apache Licence是著名的非盈利开源组织Apache采用的协议。该协议和BSD相似,一样鼓励代码共享和尊重原做者的著做权,一样容许代码修改,再发布(做为开源或商业软件)。须要知足的条件也和BSD相似:
一、须要给代码的用户一份Apache Licence
二、若是你修改了代码,须要在被修改的文件中说明。
三、在延伸的代码中(修改和有源代码衍生的代码中)须要带有原来代码中的协议,商标,专利声明和其余原来做者规定须要包含的说明。
四、若是再发布的产品中包含一个Notice文件,则在Notice文件中须要带有Apache Licence。你能够在Notice中增长本身的许可,但不能够表现为对Apache Licence构成更改。
Linux的哲学思想:
一、一切皆文件:把几乎全部资源通通抽象为文件形式;包括硬件设备,甚至通讯接口等;
二、 由众多功能单一的程序组成;一个程序只作一件事,而且作好;组合小程序完成复杂任务;
三、尽可能避免跟用户交互;目标:易于以编程的方式实现自动化任务;
四、使用文本文件保存配置信息;
Linux目录结构(倒置树状结构):
文件系统的层次结构标准FHS(Filesystem Hierarchy Standard)
/bin:全部用户可用的基本命令程序文件;
/sbin:供系统管理使用的工具程序;
/boot:引导加载器必须用到的各静态文件:kernel, initramfs(initrd), grub等;
/dev:存储特殊文件或设备文件;
设备有两种类型:字符设备(线性设备)、块设备(随机设备);
/etc:系统程序的配置文件,只能为静态;
/home:普通的家目录的集中位置;通常每一个普通用户的家目录默认为此目录下与用户名同名的子目录,/home/USERNAME;
/root:管理员的家目录;可选;
/lib:为系统启动或根文件系统上的应用程序(/bin, /sbin等)提供共享库,以及为内核提供内核模块
libc.so.*:动态连接的C库;
ld*:运行时连接器/加载器;
modules:用于存储内核模块的目录;
/lib64:64位系统特有的存放64位共享库的路径;
/media:便携式设备挂载点,cdrom, floppy等;
/mnt:其它文件系统的临时挂载点;
/opt:附加应用程序的安装位置;可选路径;
/srv:当前主机为服务提供的数据;
/tmp:为那些会产生临时文件的程序提供的用于存储临时文件的目录;可供所用户执行写入操做;有特殊权限;
/usr:usr Hierarchy,全局共享的只读数据路径;
bin, sbin
lib, lib64
include:C程序头文件;
share:命令手册页和自带文档等架构特有的文件的存储位置
local:另外一个层级目录;
X11R6:X-Window程序的安装位置
src:程序源码文件的存储位置
/usr/local:Local hierarchy,让系统管理员安装本地应用程序;也一般用于安装第三方程序;
/var:/var Hierarchy,存储常发生变化的数据的目录;
cache Application cache data
lib Variable state information
local Variable data for /usr/local
lock Lock files
log Log files and directories
opt Variable data for /opt
run Data relevant to running processes
spool Application spool data
tmp Temporary files preserved between system reboots
/proc:基于内存的虚拟文件系统,用于为内核及进程存储其相关信息;它们多为内核参数,例如net.ipv4.ip_forward, 虚拟为net/ipv4/ip_forward, 存储于/proc/sys/, 所以其完整路径为/proc/sys/net/ipv4/ip_forward;
/sys:sysfs虚拟文件系统提供了一种比proc更为理想的访问内核数据的途径;其主要做用在于为管理Linux设备提供一种统一模型的的接口;
Linux目录命令规定:
严格区分字符大小写:file1, File1, FILE1
目录也是文件,在同一路径下,两个文件不能同名;
支持使用除/之外的任意字符;
最长不能超过255个字符;