计算机组成
计算机由硬件和软件组成
硬件由5部分组成,分别是运算器、存储器、控制器、输入设备、输出设备。而控制器和运算器就组成了我们所说的CPU。
(1) 控制器(Control):是整个计算机的中枢神经,其功能是对程序规定的控制信息进行解释,根据其要求进行控制,调度程序、数据、地址,协调计算机各部分工作及内存与外设的访问等。
(2) 运算器(Datapath):运算器的功能是对数据进行各种算术运算和逻辑运算,即对数据进行加工处理。
(3) 存储器(Memory):存储器的功能是存储程序、数据和各种信号、命令等信息,并在需要时提供这些信息。
(4) 输入(Input system):输入设备是计算机的重要组成部分,输入设备与输出设备合称为外部设备,简称外设,输入设备的作用是将程序、原始数据、文字、字符、控制命令或现场采集的数据等信息输入到计算机。常见的输入设备有键盘、鼠标器、光电输入机、磁带机、磁盘机、光盘机等。
(5) 输出(Output system):输出设备与输入设备同样是计算机的重要组成部分,它把外算机的中间结果或最后结果、机内的各种数据符号及文字或各种控制信号等信息输出出来。微机常用的输出设备有显示终端CRT、打印机、激光印字机、绘图仪及磁带、光盘机等。
软件指计算机系统中的程序及其文档,程序是计算任务的处理对象和处理规则的描述;文档是为了便于了解程序所需的阐明性资料。程序必须装入机器内部才能工作,文档一般是给人看的,不一定装入机器。
计算机软件总体分为系统软件和应用软件两大类:
(1).系统软件是各类操作系统,如windows、Linux、UNIX等,还包括操作系统的补丁程序及硬件驱动程序,都是系统软件类。
(2).应用软件可以细分的种类就更多了,如工具软件、游戏软件、管理软件等都属于应用软件类。
系统原件
系统软件是负责管理计算机系统中各种独立的硬件,使得它们可以协调工作。系统软件使得计算机使用者和其他软件将计算机当作一个整体而不需要顾及到底层每个硬件是如何工作的。
一般来讲,系统软件包括操作系统和一系列基本的工具(比如编译器,数据库管理,存储器格式化,文件系统管理,用户身份验证,驱动管理,网络连接等方面的工具)。
应用软件
应用软件是为了某种特定的用途而被开发的软件。它可以是一个特定的程序,比如一个图像浏览器。也可以是一组功能联系紧密,可以互相协作的程序的集合,比如微软的Office软件。也可以是一个由众多独立程序组成的庞大的软件系统,比如数据库管理系统。
内核功能以及作用
(1)进程管理
内核负责创建和销毁进程, 并处理它们与外部世界的联系(输入和输出).不同进程间通讯(通过信号, 管道, 或者进程间通讯原语)对整个系统功能来说是基本的, 也由内核处理. 另外, 调度器, 控制进程如何共享 CPU, 是进程管理的一部分. 更通常地, 内核的进程管理活动实现了多个进程在一个单个或者几个 CPU 之上的抽象.
(2)内存管理
计算机的内存是主要的资源, 处理它所用的策略对系统性能是至关重要的. 内核为所有进程的每一个都在有限的可用资源上建立了一个虚拟地址空间. 内核的不同部分与内存管理子系统通过一套函数调用交互, 从简单的 malloc/free 对到更多更复杂的功能.
(3)文件系统
Unix 在很大程度上基于文件系统的概念; 几乎 Unix 中的任何东西都可看作一个文件. 内核在非结构化的硬件之上建立了一个结构化的文件系统, 结果是文件的抽象非常多地在整个系统中应用. 另外, Linux 支持多个文件系统类型, 就是说, 物理介质上不同的数据组织方式. 例如, 磁盘可被格式化成标准 Linux 的 ext3 文件系统, 普遍使用的 FAT 文件系统, 或者其他几个文件系统.
(4)设备控制
几乎每个系统操作最终都映射到一个物理设备上. 除了处理器, 内存和非常少的别的实体之外, 全部中的任何设备控制操作都由特定于要寻址的设备相关的代码来进行. 这些代码称为设备驱动. 内核中必须嵌入系统中出现的每个外设的驱动, 从硬盘驱动到键盘和磁带驱动器. 内核功能的这个方面是本书中的我们主要感兴趣的地方.
(5)网络
网络必须由操作系统来管理, 因为大部分网络操作不是特定于某一个进程: 进入系统的报文是异步事件. 报文在某一个进程接手之前必须被收集, 识别, 分发. 系统负责在程序和网络接口之间递送数据报文, 它必须根据程序的网络活动来控制程序的执行. 另外, 所有的路由和地址解析问题都在内核中实现.
常见Linux的发行版之间的联系与区别。
Linux发行版主要有三个分支:Debian、Slackware、Redhat。
(1)Debian:(以社区的方式运作)
Ubuntu:基于Debian开发的开源Linux操作系统,主要针对桌面和服务器;
Linux Mint:基于Debian和Ubuntu的Linux发行版,致力于桌面系统对个人用户每天的工作更易用,更高效,且目标是提供一种更完整的即刻可用体验。
(2)slackware
suse:基于Slackware二次开发的一款Linux,主要用于商业桌面、服务器。
SLES(SUSE Linux Enterprise Server(SLES):企业服务器操作系统,是唯一与微软系统兼容的Linux操作系统。
OpenSUSE:由suse发展而来,旨在推进linux的广泛使用,主要用于桌面环境,用户界面非常华丽,而且性能良好。
(3)Redhat
rhel(red hat enterprise Linux):Red Hat公司发布的面向企业用户的Linux操作系统。早起版本主要用于桌面环境,免费:
Fedora:基于Red Hat Linux终止发行后,红帽公司计划以Fedora来取代Red Hat Linux在个人领域的应用,而另外发行的Red Hat Enterprise Linux取代Red Hat Linux在商业应用的领域。Fedora的功能对于用户而言,它是一套功能完备、更新快速的免费操作系统,而对赞助者Red Hat公司而言,它是许多新技术的测试平台,被认为可用的技术最终会加入到Red Hat Enterprise Linux中。Fedora大约每六个月发布新版本。
Centos:基于Red hat Linux提供的可自由使用源代码的企业级Linux发行版本。每个版本的Centos都会获得十年的支持(通过安全更新的方式)。新版本的Centos大约每两年发行一次,而每个版本的Centos会定期(大概6个月)更新一次,以支持新的硬件。这样,建立一个安全、低维护、稳定、高预测性、高重复性的Linux环境。
(4)其他发行版本:
Gentoo:基于linux的自由操作系统,基于Linux的自由操作系统,它能为几乎任何应用程序或需求自动地作出优化和定制。追求极限的配置、性能,以及顶尖的用户和开发者社区,都是Gentoo体验的标志特点, Gentoo的哲学是自由和选择。得益于一种称为Portage的技术,Gentoo能成为理想的安全服务器、开发工作站、专业桌面、游戏系统、嵌入式解决方案或者别的东西--你想让它成为什么,它就可以成为什么。由于它近乎无限的适应性,可把Gentoo称作元发行版。
Aech Linux(或称Arch):以轻量简洁为设计理念的Linux发行版。其开发团队秉承简洁、优雅和代码最小化的设计宗旨。
不同发行版之间的联系和区别:
联系:所有发行版都是使用Linux内核;都需要遵循GNU的GPL协定;所有的发行版都有自己的版本号,版本格式约定基本一样(主版本号.次版本号.发行号.修正号)。
区别:发行版的本质区别,在于继承不同版本的内核,库、程序的组成。不同发行版几乎采用了不同包管理器(SLES、Fedora、openSUSE、centos、RHEL使用rmp包管理系统,包文件以RPM为扩展名;Ubuntu系列,Debian系列使用基于DPKG包管理系统,包文件以deb为扩展名。
常见的开源协议(GPL,LGPL, BSD,Apache等)以及开源协议的区别
GPL:
GPL的出发点是代码的开源/免费使用和引用/修改/衍生代码的开源/免费使用,但不允许修改后和衍生的代码做为闭源的商业软件发布和销售。也就是说在一个软件中使用了库引用,修改后的代码或者衍生代码等GPL协议中的产品,就必须开源和免费。
LGPL:
LGPL允许商业软件通过类库引用(link)方式使用LGPL类库从而不需要开源商业软件的代码。
Apache:
该协议和BSD类似,同样鼓励代码共享和尊重原作者的著作权,同样允许代码修改,但需要对修改或延伸的内容作声明
BSD:
基本上使用者可以”为所欲为”,可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。但使用了协议的码源,需要声明作者,且不得用作者姓名进行推广。
MIT:
和BSD一样,只需在发行版利包含原协议声明。
Linux的哲学思想解释性描述
(1)一切皆文件,Linux把几乎所有的资源通通抽象为文件形式。
(2)由众多功能单一的程序共同完成复杂任务,Linux倾向于让一个程序只做一件事,并且做好;让这样的程序能够基于统一的标准开放接口,再由多个这种功能单一的程序组合起来,共同完成更为复杂的任务。
(3)尽量避免跟用户交互,正是由于面向的对象不同,Linux系统管理多使用命令行接口,通过命令对系统进行操作和管理,这与Windows的设计理念有着迥然的区别。
(4)使用文本文件保存配置信息,所有的配置文件都采用文本文件的方式保存,管理人员可以通过vi或vim文本编辑工具对其进行修改
Linux目录结构以及目录结构命名规定
在 Linux 中,所有的文件和目录都被组织成以一个根节点开始的倒置的树状结构。文件系统的最顶层是由根目录开始的,系统使用 / 来表示根目录。在根目录之下的既可以是目录,也可以是文件,而每一个目录中又可以包含子目录文件。如此反复就可以构成一个庞大的文件系统。
FHS:Filesystem Hierarchy Standard 文件系统层级标准http://www.pathname.com/fhs/pub/fhs-2.3.html
/bin:所有用户可用的基本命令程序文件
/sbin:供系统管理使用的工具命令
/boot:引导加载器必须用到的各静态文件:kernel,initramfs(initrd),grub等
/dev:存储特殊文件或设备文件:
设备有两种类型:字符设备(线性设备)、块设备(随机设备)
/etc:系统程序的配置文件,只能为静态
/home:普通的家目录的集中位置:一般每个普通用户的家目录默认此目录下与用户名同名的子目录,/hone/USERNAME
/root:管理员的家目录,可选
/lib:为系统启动或跟文件系统上的应用程序(/bin,/sbin等)提供共享库,以及为内核提供内核模块
libc.so.:动态链接的C库
ld:运行时链接器/加载器
modules:用于存储内核模块的目录
/lib64:64位系统特有的存放64位共享库的路径
/media:便携式设备挂载点,cdrom,floppy等
/mnt:其它文件系统的临时挂载点
/opt:附加应用程序的安装位置,可选路径
/srv:当前主机为服务提供的数据
/tmp:为那些会产生临时文件的程序提供的用于存储临时文件的目录,可供用户执行写入操作,有特殊权限
/usr:usr Hierarchy,全局共享的只读数据路径
include:c程序头文件
share:命令手册页和自带文档等框架特有的文件的存储位置
local:另一个层级目录
X11R6:X-Window程序的安装位置
sre:程序源码文件的存储位置
/usr/local:local hierarchy,让系统管理员安装本地应用程序,也通常用于安装第三方程序
/var:/var hierarchy,存储常发生变化的数据目录
/proc:基于内存的虚拟文件系统,用于为内核及进程存储其相关信息,它们多为内核参数,例如net.ipv4.ip_forward,虚拟为net/ipv4/ip_forward,存储于/proc/sys/,因此其完整路径为/proc/sys/net/ipv4/ip_forward
/sys:sysfs虚拟文件系统提供了一种比proc更为理想的访问内核数据的途径,其只要作用在于管理linux设备提供一种统一模型的接口
参考:https://www.ibm.com/developerworks/cn/linux/l-cn-sysfs/
原文地址:https://blog.51cto.com/14198778/2368178