2019-04-23

计算机的组成及其功能

计算机是一种能接收和存储信息,并按照存储在其 内部的程序对海量数据进行自动、高速地处理,然后把处理结果输出的现代化 智能电子设备 。


计算机组成.jpg

一、计算机硬件

1946年冯·诺依曼提出冯·诺依曼体系结构,计算机硬件由运算器、 控制器、存储器、输入设备和输出设备五大部分组成。

1.运算器

运算器由算术逻辑单元(ALU)、累加器、状态寄存器、通用寄存器组等组成。是对数据进行各种算术运算和逻辑运算。算术运算为加、减、乘、除及其复合运算。逻辑运算为与、或、非等逻辑运算以及数据的比较和移位等操作。

2.控制器

控制器(Control Unit),是整个计算机系统的中枢神经,通常与运算器合称为中央处理器(CPU)。它从存储器中逐条取出指令,分析每条指令规定的是什么操作以及所需数据的存放位置等,然后根据分析的结果向计算机其它部件发出控制信号,统一指挥整个计算机完成指令所规定的操作。

3.存储器

存储器用来存放程序和数据等信息。按用途存储器可分为主存储器(内存)和辅助存储器(外存)。内存用来存放当前正在执行的数据和程序,如果断电数据就会丢失。外存作为内存的延伸,通常以硬盘等形式存在,能长期保存信息。

4.输入设备

输入设备用来向计算机输入数据和信息的设备。常见的输入设备有键盘、鼠标等。

5.输出设备

输出设备用于接收计算机数据的输出显示、打印、声音、控制外围设备操作等。常见的输出设备有显示器、打印机等。

二、计算机软件

计算机软件由系统软件和应用软件组成。

1.系统软件

系统软件是指控制和协调计算机及外部设备,支持应用软件开发和运行的系统,是无需用户干预的各种程序的集合。主要功能是调度,监控和维护计算机系统;负责管理计算机系统中各种独立的硬件,使得它们可以协调工作。

2.应用软件

应用软件是用户可以使用的各种程序设计语言,以及用各种程序设计语言编制的应用程序的集合。主要为了解决某类问题而设计的程序。

Linux内核功能及作用

内核是用来管理和分配计算机资源的,是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件。它主要负责调度进程、管理内存、提供文件系统、驱动设备、联网、提供一套统一的系统调用的接口等功能。

1.进程管理

内核负责创建和销毁进程, 并处理它们与外部世界的联系(输入和输出). 不同进程间通讯(通过信号, 管道, 或者进程间通讯原语)对整个系统功能来说是基本的, 也由内核处理. 另外, 调度器, 控制进程如何共享 CPU, 是进程管理的一部分. 更通常地, 内核的进程管理活动实现了多个进程在一个单个或者几个 CPU 之上的抽象。

2.内存管理

计算机的内存是主要的资源, 处理它所用的策略对系统性能是至关重要的. 内核为所有进程的每一个都在有限的可用资源上建立了一个虚拟地址空间. 内核的不同部分与内存管理子系统通过一套函数调用交互, 从简单的 malloc/free 对到更多更复杂的功能。

3.文件管理

内核在非结构化的硬件之上建立了一个结构化的文件系统, 结果是文件的抽象非常多地在整个系统中应用. 另外, Linux 支持多个文件系统类型, 就是说, 物理介质上不同的数据组织方式. 例如, 磁盘可被格式化成标准 Linux 的 ext3 文件系统, 普遍使用的 FAT 文件系统, 或者其他几个文件系统。

4. 驱动管理

几乎每个系统操作终都映射到一个物理设备上,除了处理器,内存和非常少的别的实体之外,全部中的任何设备控制操作都由特定于要寻址的设备相关的代码来进行。这些代码称为设备驱动。内核中必须嵌入系统中出现的每个外设的驱动,从硬盘驱动到键盘和磁带驱动器。

5.网络管理

网络必须由操作系统来管理,因为大部分网络操作不是特定于某一个进程: 进入系统的报文是异步事件。报文在某一个进程接手之前必须被收集,识别,分发,系统负责在程序和网络接口之间递送数据报文,它必须根据程序的网络活动来控制程序的执行。另外,所有的路由和地址解析问题都在内核中实现。

Linux常见的发行版的联系和区别

常见Linux发行版.jpg

联系

1)都使用linux内核;
2)都需要遵循GNU的GPL协定;
3)版本格式基本一样(主版本号.次版本号.发行号或修正号)。

区别

1.社区组织维护:以Debian为代表; 企业维护:以Redhat为代表。
2.不同发行版采用了不同的包管理器。Debian系使用DPKG包,包管理工具是apt。SUSE、Redhat使用RPM包,SUSE系的包管理工具是zypper,Redhat系的包管理工具是yum,Gentoo包管理工具是emerge,ArchLinux包管理工具是pacman。

常见的开源协议

常见开源协议.jpg
1.GPL

GPL(Gun General Public License)的出发点是代码的开源/免费使用和引用/修改/衍生代码的开源/免费使用,但不允许修改后和衍生的代码做为闭源的商业软件发布和销售。
1)确保软件自始至终都以开放源代码形式发布,保护开发成果不被窃取用作商业发售。
2)GPL 大致就是一个左侧版权的体现。
3)无论软件以何种形式发布,都必须同时附上源代码。
4)开发或维护遵循 GPL 协议开发的软件的公司或个人,可以对使用者收取一定的服务费用。

2.LGPL

LGPL(Lesser General Public License)是GPL的一个为主要为类库使用设计的开源协议。允许商业软件通过类库引用(link)方式使用LGPL类库而不需要开源商业软件的代码。
如果修改LGPL协议的代码或者衍生,则所有修改的代码,涉及修改部分的额外代码和衍生的代码都必须采用LGPL协议。

3.MPL

MPL(The Mozilla Public License)是1998年初Netscape的 Mozilla小组为其开源软件项目设计的软件许可证。
1) MPL虽然要求对于经MPL许可证发布的源代码的修改也要以MPL许可证的方式再许可出来,以保证其他人可以在MPL的条款下共享源代码。
2)允许被许可人将经过MPL许可证获得的源代码同自己其他类型的代码混合得到自己的软件程序。
3)明确要求源代码的提供者不能提供已经受专利保护的源代码(除非他本人是专利权人,并书面向公众免费许可这些源代码),也不能在将这些源代码以开放源代码许可证形式许可后再去申请与这些源代码有关的专利。

4.BSD

BSD(original BSD license、FreeBSD license、Original BSD license)开源协议是一个给于使用者很大自由的协议。可以自由
的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。
以BSD协议代码为基础做二次开发自己的产品时需要满足三个条件:
1)如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议。
2)如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议。

  1. 不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。
5.MIT

MIT(The MIT License)是作者只想保留版权,而无任何其他了限制。

6.Apache Licence

Apache Licence鼓励代码共享和尊重原作者的著作权,同样允许代码修改,再发布(作为开源或商业软件)。
1)需要给此开源项目的用户一份Apache Licence。
2)如果你修改了代码,需要再被修改的文件中说明。
3)在延伸的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议,商标,专利声明和其他原来作者规定需要包含的说明。
4)如果再发布的产品中包含一个NOTICE文件,则在NOTICE文件中需要带有Apache Licence。你可以在NOTICE中增加自己的许可,但不可以表现为对Apache Licence构成更改。

Linux的哲学思想

1.一切皆文件

几乎把所有的资源系统抽象为文件形式:包括硬件设备,甚至通信接口等

2.由众多功能单一的程序组成

一个程序只做一件事。组合小程序完成复杂任务。

3.尽量避免跟用户交互

使用命令行接口执行效率高,易于以脚本的方式实现自动化任务

4.使用文本文件保存配置信息

linux所有的配置文件都存放在文本配置文件当中,无论什么配置修改都只需修改其配置文件即可,配置文件时文本形式的只需任意一款文本编辑器修改即可。

linux目录结构以及目录结构命名规定

文件目录结构.jpg

依据FHS(Filesystem Hierachy Standard)
/bin:所有用户可用的基本命令程序文件
/boot:引导加载器必须用到的各静态文件:kernel,initramfs(initrd),grub等
/dev:存储特殊文件或设备文件。设备有两种类型:字符设备(线性设备)、块设备(随机设备)
/etc:系统程序的配置文件,只能为静态
/home:普通用户的家目录的集中位置:一般每个普通用户的家目录默认为此目录下与用户名同名的子目录
/lib:为系统启动或根文件系统上的应用程序(/bin,/sbin等)提供共享库,以及为内核提供模块。libc.so.:动态链接的C库;ld:运行时链接器/加载器;modules:用于存储内核模块的目录
/lib64:64位系统特有的存放64位共享库的路径
/media:便携式设备挂载点,CDROM,floppy等
/mnt:其他文件系统的临时挂载点
/opt:附加应用程序的安全位置:可选路径
/proc:基于内存的虚拟文件系统,用于为内核及进程存储其相关信息;它们多为内核参数,例如net.ipv4.ip_forward,虚拟为net/ipv4/ip_forward,存储于/proc/sys/,因此其完整路径为/proc/sys/net/ipv4/ip_forward
/root:管理员的家目录:可选
/sbin:供系统管理使用的工具程序
/srv:当前主机为服务提供的数据
/sys:sysfs虚拟文件系统提供了一种比proc更为理想的访问内核数据的途径;其主要作用在于为管理Lin设备提供一种统一模型的接口
/tmp:为那些会产生临时文件的程序提供的用于存储临时文件的目录:可供所有用户执行写入操作;有特殊权限
/usr:usr Hierachy ,全局共享的只读数据路径
/var:/var Hierarchy,存储常发生变化的数据的目录

你可能感兴趣的:(2019-04-23)