这是一篇个人学习笔记,若有疏漏或错误请见谅
计算机组成及功能简记:
计算机系统由硬件系统hardware和软件系统software两大部分组成;而硬件系统主要由主机和各种外部设备组成,软件系统由系统自带系统软件和第三方应用软件构成;
**冯诺依曼体系结构**:计算机硬件由运算器、控制器、存储器、输入设备和输出设备五大部门组成
CPU、内存、外部存储器、输入设备、输出设备
CPU即中央处理器由运算器、控制器、寄存器、缓存组成
运算器主要做算术运算、逻辑运算等各种运算
控制器:控制使用权限,协调各种程序的运行等等
寄存器、缓存:用来存储数据,为了提升CPU性能而提供的辅助工具
存储器包含内存和外部存储器;内存即运行内存;外部存储器即硬盘、U盘、软盘、光盘等
内存是CPU对外部存储中程序与数据运算时存放指令及数据还有中间结果的临时场所;是一组具备数据输入输出和数据存储功能的高速集成电路,计算机所有程序运行都在内存中进行
内存和外存的区别在于,内存断电后数据丢失,不会保存,而外存则是专门用来存放各种数据的
内存带宽的计算公式:
内存带宽=内存总线频率x数据总线位数/8
外部存储器例如硬盘主要由存储介质盘片、读写头磁头和马达组成;硬盘接口类型有IDE、SCSI、SATA、SAS、光纤通道
SCSI:专为小型计算机系统设计的存储单元接口模式,支持同步和异步传输,Ultra320中引入调步传输模式;SCSI的SCA2接口支持热拔插技术,与SCSI背板配合使用实现硬盘热拔插
SATA:常见标准有SATA-1和SATA-2两种,以连续串行方式传输数据,一次只传送一位数据,减少连接电缆数目,效率更高,支持热拔插技术
SAS:和SATA相同,都是采用串行技术,SAS背板可兼容SAS和SATA两类硬盘,SCSI和SAS具有CPU占用率低、多任务并发操作效率高、连接设备多、连接距离长等优点
输入输出设备:提供命令和数据等,返回结果,如键盘输入,显示器输出
软件系统通常指操作系统,操作系统由内核Kernerl和应用程序Application组成;并由此提供了驱动程序、进程管理、网络、内存管理、文件系统等等功能,为硬件和各种软件之间交互提供一个平台,使编译成更加便捷。
操作系统是由一堆通用程序演变而来,
内核是用来驱动底层硬件,把底层各硬件资源抽象成简单的资源,管理各程序的运行的;而Linux、Unix等都是内核狭义上的操作系统而不包含运行在其上的各种应用程序
发展历史图:http://futurist.se/gldt/wp-content/uploads/12.10/gldt1210.svg
Linux的发行版有数百种之多,其主流有三种:Debin、Slackware、RedHat;而在其中也有很多著名的发行版如Arch其下的ArchLinux、Gentoo等等
Debin是唯一一个以社区形式存在的,基于Debin的二次发行版中最著名的是ubuntn和knopix,而ubuntn的二次发行版中也有一个比较出名的分支mint
Slackware是sls的一个分支,并发展出来众多发行版,其下最著名的是S.U.S.E,Opensuse是S.U.S.E之下的另一个著名发行版
RedHat的二次发行版中最著名的是从RedHat9.0之前分裂的两个分支RedHat Enterprise Linux(RHEL)(18个月一版)和Fedora Core:(6个月一版);Centos:Community ENTerprise OS是基于RHEL二次开发,最初由第三方根据RHEL提供的各种源码包完全编译后开源传播,并改名为Centos,最终被RedHat收购。
开源运动由Stallman发起,常见的开源协议有GPL、LGPL、 BSD、Apache…
GPL协议
General Public License 只要使用了就需要开源,不允许将修改后代码作为闭源商品使用;GPL严格要求使用了GPL类库的软件产品必须使用GPL协议,对于使用GPL协议的开源代码,商业软件或者对代码有保密要求的部门就不适合集成/采用作为类库和二次开发的基础
LGPL协议
LGP协议允许商业软件通过类库引用方式使用LGPL类库而不需要开源,所以采用LGPL协议的开源代码可以被商业软件作为类库引用并 发布和销售。如果修改LGPL协议的代码或者衍生,则所有修改的代码,涉及修改部分的额外代码和衍生的代码都必须采用LGPL协议。因此LGPL协议的开源 代码很适合作为第三方类库被商业软件引用,但不适合希望以LGPL协议代码为基础,通过修改和衍生的方式做二次开发的商业软件采用。
BSD协议
BSD协议使用者可以自由使用,修改源码,也可以将修改后的代码二次发布但要遵循如下三种规则
如果二次发布的产品中包含源代码则在源代码中必须带有原来代码中的BSD协定;
如果二次发布的产品是二进制格式的库或者程序则需要在发布的文档或版权声明中说明包含原来的代码中的BSD协定;
不可以用开源代码的作者或者组织以及原来的产品的名字做市场推广
Apache协议
是非盈利开源组织Apache采用的协议,和BSD类似,同样鼓励代码共享尊重原作者的版权,允许代码修改、再发布。需要满足的条件也和BSD类似
MIT协议
也是一个较宽松的协议,允许在标明版权后对代码进行任何形式的使用
Artistic协议
要求更改后的软件不能英雄原软件的使用
Linux的哲学思想有4条,
一、一切皆文件
几乎所有的资源全部都被抽象化为文件形式,包括各种硬件设备和通信接口都会有对应的文件
物理终端: /dev/consle 路径
虚拟终端:/dev/tty# #是在1-6之间
串行终端:/dev/ttys#
伪终端:/dev/pts/#
二、 由众多功能单一的程序组成 :一个程序只做一件事 并且做好,组合小程序完成复杂任务
例如由多个命令共同完成一个功能
三、尽量避免跟用户交互
易于以编程的方式实现自动化任务
四、使用文本文件保存配置信息
例如IP的配置文件,所有程序的配置信息都会用文本的形式保存下来,所有配置信息也直接通过文本文件更改
FHS:Filesystem Hierarchy Standard 文件系统层次结构标准
文件系统标准旨在供Unix分发开发人员,程序包开发人员和系统实现者使用。但是,它主要用于参考,而不是如何管理Unix文件系统或目录层次结构的教程
/bin:所有用户可用的基本命令程序文件
/sbin:供系统管理使用的工具程序;
/boot:引导加载器必须用到的各静态文件:kernel,initramfs(initrd),grub等
/dev:存储特殊文件或设备文件
设备有两种类型:字符设备(线性设备,有时序),块设备(随机设备)
/etc:系统程序的静态配置文件,只能为静态不能是二进制格式
/home:普通用户家目录的集中位置:一般每个普通用户的家目录默认为此目录下与用户名同名的子目录/home/USERNAME
/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 存储常发生变化的数据
特殊目录
/proc:基于内存的虚拟文件系统,用于为内核及进程存储其相关信息:它们多为内核参数例如net.ipv4.ip_forward,虚拟net/ipv4/ip_forward存储于/proc/sys下因此其完整路径为/proc/sys/net/ipv4/ip_forward
/sys:sysfs虚拟文件系统提供了一种比proc更为理想的访问内核数据的途径,其主要作用在于为管理Liunx设备提供一种统一模型的接口