计算机的组成前端
通常而言,计算机的组成应该分为两部分:
一部分指的是硬件部分。根据冯诺伊曼提出的计算机体系架构,一台计算机主要分为五个部分:控制器、运算器、存储器、输入设备、输出设备
二部分指的是计算机软件。包括汇编语言、系统软件及应用软件,他们不像硬件同样“有形”,但只有软件硬件互相配合,才是一台标准的计算机组成
各组成的功能linux
硬件部分
控制器(Control):CPU的组成部分之一。至关于计算机的中枢神经,经过控制器,能够有效的控制和协调整个计算机的操做
运算器(Datapath):CPU的组成部分之一。包含算数逻辑单元(ALU)、累加器、状态寄存器、通用寄存器组等
通用寄存器组:可用于传送和暂存数据,也能够参与算术逻辑运算,保存运算结果,通用寄存器组包括如下几类:数据寄存器、变址寄存器、指针寄存器、段寄存器、指令指针寄存器
存储器(memory):存储程序和数据,并能在计算机运行过程当中高速、自动地完成从程序或数据的存取,也就是俗称的内存RAM(Random Access Memory)
输入设备(Input):外部设备之一。做用是将程序、原始数据、文字、字符、控制命令或现场采集的数据输入到计算机。常见的输入设备有:键盘、鼠标、磁带机、磁盘机、光盘机等
输出设备(Output):外部设备之一。做用是把计算机的中间结果或最后结果、机内的各类数据及文字等信息输出来。常见的输出设备有:CRT、打印机、绘图仪等数据库
软件部分
汇编语言(assembly language):一种用于cpu的低级语言。它使用助记符代替二进制语言,方便人类的阅读及操做。但一种汇编语言只能与相对应的计算机系统结构对应,没法在不一样平台移植
系统软件(system software):用来运行或控制硬件所开发的计算机软件,如操做系统、编译器、数据库等等apache
内核指的是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件。内核是一个操做系统的核心,是操做系统最基本的部分。它负责管理系统的进程、内存、设备驱动程序、文件和网络系统等,决定着系统的性能和稳定性。它是为众多应用程序提供对计算机硬件的安全访问的一部分软件,这种访问是有限的,而且内核决定一个程序在何时对某部分硬件操做多长时间。直接对硬件操做是很是复杂的,因此内核一般提供一种硬件抽象的方法来完成这些操做。硬件抽象隐藏了复杂性,为应用软件和硬件提供了一套简洁,统一的接口,使程序设计更为简单。编程
一个内核不是一套完整的操做系统。好比一套基于Linux内核的完整操做系统叫做Linux操做系统,或是GNU/Linux。小程序
进程管理:内核负责建立和销毁进程, 并处理它们与外部世界的联系(输入和输出),不一样进程间通信(经过信号,管道,或者进程间通信原语)对整个系统功能来讲是基本的,也由内核处理。 另外, 调度器, 控制进程如何共享CPU,是进程管理的一部分。更一般地,内核的进程管理活动实现了多个进程在一个单个或者几个CPU 之上的抽象。windows
内存管理:计算机的内存是主要的资源, 处理它所用的策略对系统性能是相当重要的。内核为全部进程的每个都在有限的可用资源上创建了一个虚拟地址空间。内核的不一样部分与内存管理子系统经过一套函数调用交互,从简单的malloc/free对到更多更复杂的功能。缓存
文件管理:Linux 在很大程度上基于文件系统的概念;几乎Linux中的任何东西均可看做一个文件。内核在非结构化的硬件之上创建了一个结构化的文件系统,结果是文件的抽象很是多地在整个系统中应用。另外,Linux 支持多个文件系统类型,就是说,物理介质上不一样的数据组织方式。例如,磁盘可被格式化成标准Linux的ext3文件系统,广泛使用的FAT文件系统,或者其余几个文件系统。安全
驱动管理:几乎每一个系统操做终都映射到一个物理设备上,除了处理器,内存和很是少的别的实体以外,所有中的任何设备控制操做都由特定于要寻址的设备相关的代码来进行。这些代码称为设备驱动。内核中必须嵌入系统中出现的每一个外设的驱动,从硬盘驱动到键盘和磁带驱动器。服务器
网络管理:网络必须由操做系统来管理,由于大部分网络操做不是特定于某一个进程: 进入系统的报文是异步事件。报文在某一个进程接手以前必须被收集,识别,分发,系统负责在程序和网络接口之间递送数据报文,它必须根据程序的网络活动来控制程序的执行。另外,全部的路由和地址解析问题都在内核中实现。
Linux是一种自由和开放源代码的类Unix操做系统。该操做系统的内核由Linus Torvalds于1991年10月5日首次发布。根据其发布的内核(kernel)搭配上GNU上的应用程序,成为了当今世界上运用领域最普遍、使用人数最多的操做系统。一般状况下,Linux被打包成供我的计算机和服务器使用的Linux发行版。
Linux发行版包含Linux内核和支撑内核的实用程序和库,一般还带有大量能够知足各种需求的应用程序。我的计算机使用的Linux发行版一般包含X Window和一个相应的桌面环境,如GNOME或KDE.
什么是Linux发行版
Linux发行版(Linux distribution)
是一种为通常用户预先集成好的Linux操做系统及各类应用软件。通常不须要用户从新编译,在直接安装以后,只须要做出小幅度的更改设置便可。Linux发行版一般包含了桌面环境、办公包、媒体播放器、数据库等应用软件。这些操做系统一般使用Linux、以及来自GNU计划的软件、和基于X Window的图形界面组成。
Linux发行版一般分为商业发行版和社区发行版。也有少部分既不属于发行版又不属于社区发行版,其中最有名的是Slackware.
著名的Linux发行版
按照程序包管理器的不一样,一般Linux的发行版也被分红了不一样的派系。
首先说一下什么是程序包管理器
程序自己是由二进制程序、配置文件、库文件以及帮助文件组成的。有时候咱们发现,可能一个程序会有不少文件,很是不利于安装卸载管理,因而,又产生了程序包管理器。
程序包管理器的做用:
1)程序的组成文件打包成一个或有限几个文件;
2) 安装;
3) 卸载;
4) 查询;
所以,咱们能够划分以下
Redhat系
Slackware系
Debian系
其余
发行版之间的不一样
在Linux发行版中,一般均使用软件包管理系统,不一样的操做系统,软件包管理系统也不尽相同。比较常见的软件包管理系统有如下几种
dpkg:通常为Debian系使用,前端管理工具为apt-get
rpm(The RPM Package Manager):通常为Red Hat系使用,S.u.S.E也有使用,前端工具包含多种:
yum:做为RHEL及CentOS的前端工具
dnf:做为Fedora的前端工具
ZYpper:做为S.u.S.E及opensuse的前端工具
urpmi:做为Mandriva Linux及Mageia的前端工具
软件开源是许多软件企业须要关注的问题,不一样的开源软件协议,对应不一样的源代码使用限制。只有了解这些开源软件协议,才能更好地使用和回馈开源软件,不然就有可能触犯法律。今天介绍四种常见的开源软件协议:
GPL(GNU General Public License)LGPL(GNU Lesser General Public License)BSD(Berkerley Software Distribution)Apache License
GPL
GPL的出发点是代码的开源/无偿使用和引用/修改/衍生代码的开源/无偿使用,但不容许修改后和衍生的代码作为闭源的商业软件发布和销售。
GPL的“传染性”在于:只要在一个软件中使用(”使用”指类库引用,修改后的代码或者衍生代码)GPL 协议的产品,则该软件产品必须也采用GPL协议,既必须也是开源和免费。咱们所熟悉的Linux就是采用了GPL。
LGPL
LGPL是GPL的一个为主要为类库使用设计的开源协议。LGPL容许商业软件经过类库引用(link)方式使用LGPL类库而不须要开源商业软件的代码。所以LGPL协议的开源代码很适合做为第三方类库被商业软件引用,但不适合但愿以LGPL协议代码为基础,经过修改和衍生的方式作二次开发的商业软件采用。
BSD
BSD开源协议是一个给于使用者很大自由的协议。基本上使用者能够自由的使用,修改源代码,也能够将修改后的代码做为开源或者专有软件再发布。
当使用了BSD协议的代码,或者以BSD协议代码为基础作二次开发本身的产品时,须要知足三个条件:
若是再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议;若是再发布的只是二进制类库/软件,则须要在类库/软件的文档和版权声明中包含原来代码中的BSD协议;不能够用开源代码的做者/机构名字和原来产品的名字作市场推广。所以,不少公司企业在选择开源软件的时候都首选BSD协议,由于能够彻底控制这些第三方的代码,并且在必要的时候能够进行修改或者二次开发。
Apache License
Apache Licence是著名的非盈利开源组织Apache采用的协议。该协议和BSD相似,一样鼓励代码共享和尊重原做者的著做权,一样容许代码修改,再发布(做为开源或商业软件)。须要知足的条件也和BSD相似:
须要给代码的用户一份Apache Licence;若是你修改了代码,须要在被修改的文件中说明;在延伸的代码中(修改和有源代码衍生的代码中)须要带有原来代码中的协议,商标,专利声明和其余原来做者规定须要包含的说明;若是再发布的产品中包含一个Notice文件,则在Notice文件中须要带有Apache Licence。你能够在Notice中增长本身的许可,但不能够表现为对Apache Licence构成更改。
Linux系统不一样的目录能够分布在不一样的分区或者不一样的硬盘设备上,这是windows难以作到的。目录和磁盘分区没有关联。
挂载点是系统进入设备的入口。如mount /dev/cdrom /mnt就是把/mnt与/dev/cdrom联系起来。
全部的目录都是按照必定的类别有规律的组织和命名的。FHS(目录层次结构)是Linux的目录规范标准
[FHS(目录层次结构)]