[TOC]

第一章.基础介绍

0.计算机概论

Q: 什么是计算机(Computer)?

答: 其实是接受用户输入指令和数据经给中央处理器的数据与逻辑单元运算处理后,所产生或者存储成有用的信息。
简单的说: 数据 -> 计算机 -> 有效信息

Q: 计算机五大单元有那些?

答:输入单元
CPU 内部控制单元
CPU 内部算数逻辑单元
内存单元
输出单元

Q: 什么是中央处理器(CPU)?

答:中央处理器(Central Processing Unit,CPU) 是一个具有特定功能的芯片(包含有微指令集), 主要工作于管理(控制单元)和运算(运算逻辑单元);

Q: CPU中的算术逻辑单元与控制单元的区别?

答: 算数逻辑单元: 主要负责程序运算和逻辑判断
控制单元: 主要负责协调各组件与各单元间的工作;

Q: CPU中被运算与判断的数据从何而来?

答: CPU读取的数据都是从内存(memory)读取出来的,而内存中的数据是从输入单元获得的;
简单的说: CPU中处理的数据都是通过内存进行转入或者转出的(重要概念), 数据的流进或者流出内存都是有CPU所发布的指令控制;

Q: CPU的种类?

答: CPU实际上就是包含一些小指令集而根据指令集的设置又被分为两种设计理念,即目前流行的两种主要CPU种类:

  • 1.精简指令集(Reduced Instruction Set Computing,RISC): 微指令集较为精简、单个指令执行时间短、完成操作简单、指令执行性能较佳,但是若做复制的操作就需要多个指令完成;
  • 2.复杂指令集(Complex Instruction Set Computing,CISC): 为指令集中数目多并较为复杂、单个指令可以执行较低阶的硬件操作(即处理的工作较为丰富)、每条指令长度不同由于其复杂性执行时间较长;

Q: CPU中微指令集的精简指令集与复杂指令集处理器系列运用架构?

  • 1.RISC: 主要有Sun公司的SPARC系列、IBM公司的Power Architecture(包括PowerPC)系列与ARM系列等;
    • 1.1 SPACRC 架构: 主要运用在学术领域大型工作站、包括银行金融体系的主要服务器也有这类计算机架构;
    • 1.2 PowerPC 架构: Sony的PS3(Play Station 3)就是使用PowerPC架构中的Cell处理器;
    • 1.2 ARM 架构: 当前应用非常广泛手机、导航系统、网络与安全设备(交换机、路由器)、嵌入式设备等(重点);
  • 2.CISC: 主要用AMD、Intel、VIA等x86架构的CPU
    • 2.1 X86架构: 被大量使用在个人计算机(Personal Computer),所以个人计算机通常被称为x86架构计算机,随着发展现在基本被X64位处理器替代;
    • 2.1 X64架构: 当前主流的处理器架构被广泛应用于个人电脑与服务器;

Q: 分别介绍一下X86与X64架构的处理器及其区别?

答: x86 :因为最早的那个intel发展出来的CPU代号称为8086后来以此架构又开发出80286、80386所以这种架构的CPU就被称为X86架构;
x64 : 在 2003 年以前由Intel所开发的X86架构CPU由8位升级到16、32位后来ADM依照此架构又修改了新一代的64位CPU(AMD64),但为了区别两者的不同, 因此64位个人计算机又被统称为x86_64的架构;
区别 : 主要在于微指令集不同x86_64较x86的CPU含有许多先进的微指令集可以让加速多媒体运行、增加虚拟化的性能、以及增加能源效率让CPU耗电降低;

Q: 最新的Intel/AMD的X86架构中多媒体、虚拟化、省电功能各需要哪些微指令集?

答: 先来说说64、32位兼容技术的指令集: AMD-AMD64, Intel-EM64T
1.多媒体微指令集: MMX/SSE/SSE2/SSE3/SSE4/AMD-3DNOW!
2.虚拟化指令集:Intel-VT/AMD-SVM
3.省电功能指令集: Intel-SpeedStep/AMD-PowerNow!

Q: 计算机组成运作流程?

  • 1.CPU = 大脑 : 每人做的事不一样(微指令集的区别)
  • 2.内存 = 大脑中的记录区块 : 短暂的记忆供大脑使用
  • 3.硬盘 = 大脑中的记忆区块 : 将重要的数据进行记录不可磨灭的记忆(人的经历)
  • 4.主板 = 神经系统 : 类似人的神经将各个组件进行连接统一起来
  • 5.接口设备 = 人体和外界通信的手脚、皮肤、眼睛
  • 6.显卡 = 大脑中的影像 : 将来自眼睛的刺激转成影响后在大脑中呈现, 即先开来源数据也是CPU控制的
  • 7.电源 = 人的心脏 : 提供能量;
    流程: 活动中大脑是非常重要的即CPU它与内存进行交互工作、任何外界的接触都需由大脑找那个的内存记录下来,然后由大脑CPU进行判断处理,再发送命令给各个外部接口; 如何需要过去经验则由过去的经验(硬盘) 进行读取以供CPU使用;

Q:计算机如何分类?

答:通常安装计算机运算能力与复杂程度进行分类大致以下几类:

  • 1.超级计算机(SuperComputer): 运算速度最快
  • 2.大型计算机(MainframeComputer): 处理大量数据与复杂运算
  • 3.迷你计算机(MiniComputer): 工作场所要求低、通常用于科学研究、工程分析和工程流程管理、工业控制等领域
  • 4.工作站(Workstation): 针对于特殊用途设计的计算机,强调的是稳定不死机;
  • 5.微电脑(MicroComputer): 又称个人电脑分为(桌面电脑、笔记本电脑)

Tips: 超级计算机世界TOP500一览: https://www.top500.org/

Q: 计算机大小与速度的计量单位?

  • 大小: 计算机中常规的文件大小使用二进制进行计算则1G=(1024x1024x1024B),速度单位通常采用十进制进行计算例1Ghz=(1000x1000x1000);
  • 速度: CPU运算速度使用Mhz或者Ghz的单位(hz表示秒分之一),网络传输中采用bit为单位因此网络中常用单位为Mbit/s, 而计算机中以Bytes为最小单位(注意区别流量、带宽、宽带等区别); 例如在电信开通了8M/1M宽带传输速度,则在计算机中实际理论最大传输值是1MB/s / 125KB/s

Tips: 我们购买的一块500G的硬盘装入电脑后发现仅仅只要466GB左右的空间,这是由于硬盘制造商(十进制单位)与文件存储大小单位(二进制不一致导致的),十进制单位及500x1000x1000x1000B=500G而转成文件存储大小时由于采用二进制则以1024为底500x(1000)^3 / (1024)^3 约等于 466GB;

Q: 为何磁盘厂商使用十进制的单位标识硬盘大写?

答: 因为磁盘最小的物理量为512bytes,其最小组成单位为扇区(sector),而通常硬盘容量采用多少个sector来进行计算机的所以才使用十进制进行处理;

Q: 个人计算机架构与组成设备有哪些?

答: 主要组件CPU、内存、磁盘设备(IDE/SATA/SSD)、总线芯片组(南桥、北桥)、显卡接口(PCI-Express)与其他适配卡(PCI)共同组成;

Q: 计算机主板上的芯片组是什么?

答: 它是整个主板上最重要的部分,在此芯片组通常又分为两个桥接器来控制各组件的通信分别是

  • 1.北桥(north bridge-系统总线) : 负责连接速度较快CPU、内存、以及显卡等组件;(内存传输的主要通道所以速度快、散发的热量也大)
    • 1.1 其支持的频率依照芯片组功能的不同而有所不同
    • 1.2 北桥所支持的频率我们叫前端总线速度(Front Side Bus,FSB),而每次传递的位数则是总线宽度,而总线频宽表示每秒钟可以传送的最大数据量其计算方式为FSB X 总线宽度,目前常见的总线宽度为32/64位(bit);
    • 1.3 例如某架构在总线宽度为64bit并且前度总线速度高达1600 MHz,计算可得内存与北桥的频宽为12.GB/s,根据上面计算方式可得 1600MHz * 64 bit(8B) = 12800 MB/s = 12.8GB;
  • 2.南桥(south bridge-输入输出总线) : 负责连接速度较慢的外部设备接口(例硬盘、USB、网卡等)、BIOS(基础接口系统);
CPU - 中央处理器

Q: CPU处理器厂商Intel、AMD其CPU架构区别?

  • 1.两大主流CPU厂商所需要主板芯片组设计不相同,比如其x86的CUP架构并不相互兼容;
  • 2.AMD不同于Intel地方是内存直接与CPU通信不经过北桥(AMD加速两者通信并将内存控制组件集成到CPU中),好处是加速CPU与内存的传输速度;
  • 3.不同的CPU具有不同的脚位并且能够搭配的主板芯片组也不同
  • 4.封装类型不同Intel采用LGA封装(插针式),而AMD采用PGA封装(触点式);

Q: CPU封装的类型主要为三种LGA,PGA,BGA技术区别?

Q: 什么是双核或者多核处理器?

答: 目前主流的CPU基本是双核以上的架构,原本单核CPU仅有一个运算单元,而多核则是在一个CPU封装当中嵌入了两个以上的运算单元

Q: CPU性能如何比较?

答: 由于CPU内部所含微指令集而不同的指令集往往会导致CPU工作效率的不同,可参考CPU频率(一般比较同款CPU)和其外频与倍频、CPU子组大小、以及CPU等级来进行综合评价;

Q: 什么是频率?什么是CPU的外频与倍频;

  • 1.频率就是CPU每秒可以进行多少工作次数,所以频率越高表示CPU单位时间内可以做更多的工作,例如某CPU频率为3.0GHz表示该CPU在一秒内可以进行 3.0x10^9 = 3.0 x 1000 x 1000 x 1000 次工作即每次工作可以运行少数的指令;
  • 2.外频指CPU与外部组件进行数据传输、运算时候的速度;
  • 3.倍频指CPU内部用来加速工作性能的倍数,即外频x倍频才是CPU的频率,例某3.0GHz而外频是333MHz因此倍频是9倍(3.0G 约等于 333MB x 9)。

Tips: 许多计算机发烧友喜欢玩”超频”,而所谓的超频是指将CPU倍频或者是外频通过主板设定功能更改较高频率的一种方式;但是 由于CPU倍频通常在出厂时已经被锁定固化而无法修改,因此常常设置外频以达到超频;例如某CPU的频率为3.GHz将其外频从333调整到400MHz但是如此一来整个主板上的各个组件的运行频率可能都会被增加成本的1.333倍,虽然CPU可能达到3.6GHz但是因为其频率大于CPU额定频率则有可能导致死机的情况发生.

Q: 什么是字组大小?它有何作用?

答: 它与总线宽度相似表示CPU每次能够处理的数据量称为字组大小(Word Size),其大小根据CPU设计解析而有32位与64位之分;

Q: 计算机中32位与64位如何区分?

答: 计算机中的32位或者64位主要是依据CPU解析的字组大小而来,其次可根据总线宽度进行判断(不一定准确由于字组大小与总线宽度可以不同),所以常常我们以CPU的字组打大小来判读CPU的架构;
例如,早期32位处理中由于CPU处理能力有限导致从内存中传来的数据库也有所限制,从而导致至多支持4GB内存,并且在32位处理器上芯片组可以设置出64位的总线宽度,所以还是以字组大小为准。

Q: CPU 等级区分?

答: 至 Intel 的 Pentium 系列(1993年)后就有不统一的引脚位与设计,为了使不同种类的CPU进行规范等级则有了 i386 / i586 / i868 等名称出现;
目前的64位CPU统称为X86_64等级,而32位CPU统称为X86等级;


Memory - 内存

Q: 计算机中内存种类?及其特征?

答: 大致分为三类即动态随机访问内存(Dynamic Random Access Memory,DRAM)静态随机访问内存(Static Random Access Memory,SRAM)只读存储器(Read Only Memory,ROM)其区别如下:

  • 1.DRAM : 个人计算机内存的主要组件,其特征是通电才能记录使用、断电后数据消失所以也叫挥发性内存;
    • 1.1 技术分类使用广泛的SDRAM与DDR SDRAM两种,其区别在于引脚位与工作电压、以及传输的速度不同;
    • 1.2 由于DDR SDRAM当前使用广泛常见型号有DDR2/DDR3/DDR4(目前主流),而DDR(Double Date Rate)表示双倍的数据传输速度,在一次工作周期中进行两次数据传输类似于CPU的倍频;
  • 2.SRAM : CPU内部缓存的主要组件,其特征是设计上使用晶体管数量较多,价格便宜、且不易做成大容量、IO速度快;
    • 2.1 其主要运用在CPU的内部缓存之中,使得CPU对于常用数据读取不用通过北桥来访问内存从而使性能得到大大的提升;因此集成到CPU内成为高速缓存以加快数据的访问是一个不错的选择;
    • 2.2 现在CPU一般内置的是三级缓存即L1/L2/L3 Cache,其内存相关性CPU L1 Cache < L2 Cache < L3 Cache < (系统流) < 内存 < 外置存储装置
  • 3.ROM : 从字面上就很好理解它是一种非挥发性的内存, 它即使在没有通电的情况下也能将数据记录下来;

Tips: 内存型号挑选与CPU及其芯片组有关需要关注其系列版本以及时钟频率等,并且与使用场景息息相关比如个人电脑和服务器除了前面需要关注点外还需要内存大小、是否支持ECC错误纠正,以及成本费用等;

Q: DDR 内存版本型号性能判别的主要参数?

答: 数据宽度(bit)、频率(MHz)、外频(MHz)、以及频宽=(数据宽度(bit)*频率(MHz))等

Q: 什么是双通道?

答: 由于内存是与CPU交互的非常重要的数据存放地所以其内存数据宽度越大传输速率就越大,而传统总线大约可达64bit所以为了加大厂商便把两张内存条进行整合在一起(注意相同型号、频率的内存),从而使数据宽度达到128bit,简单的说就是将两张内存串起来增加数据宽度; 在主板上往往相同颜色的内存卡槽可组成多通道;

Q: CPU频率与内存之间的关系?

答: 理论上CPU需要外存的外频一致才好,不过由于CPU架构以及封装技术的飞速发展两则的频率速度往往是不同的所以尽量选择CPU支持的频率的内存;

Q: 什么是CMOS?

答: CMOS是Complementary Metal Oxide Semiconductor(互补金属氧化物半导体)的缩写。它是指制造大规模集成电路芯片用的一种技术或用这种技术制造出来的芯片,是电脑主板上的一块可读写的RAM芯片;该芯片需要额外的电源供电(即主板上的纽扣电池)来发挥记录功能,主要用于记录BIOS中设置主板上组件各项参数,并提供BIOS进行读取与更新;
记录参数: 系统时间、CPU电压与频率、各项设备的I/O地址与IRQ;

Q: 什么是BIOS?

答: 基本输入输出系统(Basic Input Output System,BIOS)是一套程序并且写入到主板上的一个内存芯片(ROM)之中即使在没有通电的情况下也能够将数据记录下来,它对于我们计算机来说非常重要因为他是计算机开机读取的第一个程序,由于其掌握着系统硬件的详细信息与开机设备;
BIOS 程序可以修改CMOS中的数据或者读取它的数据,并尝试调用存储设备上的引导程序进入到系统之中;

Tips: 当前我们可对BIOS程序做适量的更改,所以通常固件来进行升级BIOS程序,由于原本使用的ROM内存时候是无法修改的,即现在大多厂商基本将BIOS写入到闪存(Flash Memory)和EEOROM中;

Q: 什么是固件(Firmware)?

答: 是一种嵌入在硬件设备中的软件。固件的所在是位于软件和硬件之间的,像软件一样他是一个被电脑所运行的程序,然而它是对于硬件内部而言更加贴近以及更加重要的部分,而对于外在的世界而言较无重要的意义。
描述: 通常它是位于特殊应用集成电路(ASIC)或可编程逻辑器件(PLD)之中的闪存或EEPROM或PROM里,有的可以让用户更新。
作用: 固件的更新可以确保硬件保持在最新的状态以及确保其兼容性。
特征: 随时以 电流清除并重写 或 更换存储介质 的方式更新


显卡 - Video Graphics Array

Q: 什么是显卡?有何作用?

答: 显卡又称为VGA它是图像影像扮演相当关键的角色, 对于图像影像的显示重点在于分辨率与色彩深度,每个图像的显示的颜色会占用内存(容量决定着你最终屏幕的分辨率和色彩深度), 显卡也是通过北桥与内存和CPU联系;
作用: 将3D画面渲染的运算交由显卡上的一个3D加速芯片完成即GPU

Q: 显卡性能参数?

答: 它是一个高速运算的一个组件,所以数据传输也是越快越好,因此显卡的规格由早期的PCI转变为AGP然后又被PCI-Express所替代;
规格最大的区别: 数据传输时候的频宽
主要参数: 宽度(bit) 速度(MHz) 频宽等相关联

Q: 什么是PCI-Express?

答: 又称PCIe,它使用类似管线的概率处理且每条管线具有250MB/s(PCIe 1.0规格中)的频宽性能管线越大则总频宽就越高;
规格: PCIe 1.0 / 2.0 / 3.0

Q: 主板上主流的PCI-E插槽PCI-E x1/x4/x8/x16四种有何区别?

  • 1.PCI-E x1 : 插槽长度是最短的仅有25mm ,数据针脚14个其插槽的带宽通常由主板芯片提供;
    • 1.1 应用: 独立网卡、独立声卡、USB 3.0/3.1扩展卡,甚至可以通过转接线给PCI-E x1插槽装上显卡,用来挖矿或者实现多屏输出。
  • 2.PCI-E x4 : 插槽全长为39mm,同样是在PCI-E x16插槽的基础上,以减少数据针脚的方式实现,一班以M.2接口的形式出现;
    • 2.1 应用: 主要用于PCI-E SSD固态硬盘,或者是通过PCI-E转接卡安装的M.2 SSD固态硬盘。
  • 3.PCI-E x8 : 插槽全长56mm、有98根针脚(数据针脚76根,短的供电针脚22根),插槽通常加工成PCI-E x16插槽的形式,但数据针脚只有一半有效;
    • 3.1 应用: 万兆网卡
  • 4.PCI-E x16 : 插槽全长89mm、有164根针脚卡口将其分为两组(较短的插槽有22根针脚用于供电,较长的插槽142根用于数据传输-高带宽),可以向下兼容x1/x4/x8级别的设备,其主要特点离CPU最近;
    • 4.1 应用: 显卡以及RAID阵列卡

Q: 屏幕使用的显卡显存计算?

答: 假如桌面的分辨率为1024768且使用全彩(每个像素占用3B的容量),其计算公式为`1024\768 = 786432 像素 * 3B = 2.25MB`内存;


磁盘 - Disk

Q: 什么是磁盘?

答: 用来供计算机存储或者读取数据的设备,其尺寸大多为3.5 / 2.5 英寸的;

Q: 硬盘的物理组成?

答: 由许多的盘片、主轴马达、磁头、机械手臂锁组成的;
运行流程: 实际运行时候主轴马达让磁盘转动,然后机械手臂可伸展让读取头(Heade)在盘片(数据都是写在具有磁盘磁性物质)上进行读写操作;

Q: 盘片的数据如何写入?

答: 需先了解盘片的数据格式扇区(sector)和磁道(track)以及柱面(Cylinder);
扇区: 由圆心以放射状的方式分割出磁盘的最小单位即一小块饼图类似于年轮,在物理组成方面每个扇区大小为512bytes该值固定且不会改变;
磁道: 由扇区组成的圆
柱面: 如果在多磁盘上面所有的盘片上面的同一磁道可以组成一个柱面(平面圆环),而它是分割磁盘时候的最小单位;

Q: 磁盘基本知识补充详解?

答: 主要从盘片(platter)/ 磁头(head)/ 磁道(track)/ 扇区(sector)/柱面(cylinder)五个方面进行讲解

1.盘片与磁头的关系

  • 1.1 硬盘中一般会有多个盘片组成(受到硬盘整体体积和生产成本的限制一般在五片以内),每个盘片包含两个面每个盘面都对应地有一个读/写磁头,盘片的编号自下向上从0开始,如最下边的盘片有0面和1面,再上一个盘片就编号为2面和3面。
盘片与磁头

盘片与磁头

2.扇区与磁道的关系

  • 2.1 以一个盘面为例进行讲解,盘面中一圈圈灰色同心圆为一条条磁道,从圆心向外画直线,可以将磁道划分为若干个弧段,每个磁道上一个弧段被称之为一个扇区(图践绿色部分)。
  • 2.2 扇区是磁盘的最小组成单元,通常是512字节(由于不断提高磁盘的大小,部分厂商设定每个扇区的大小是4096字节
扇区与磁道

扇区与磁道

3.磁头和柱面关系

  • 3.1 硬盘通常由重叠的一组盘片构成,每个盘面都被划分为数目相等的磁道;
  • 3.2 并从外缘的“0”开始编号,具有相同编号的磁道形成一个圆柱,称之为磁盘的柱面
  • 3.3 磁盘的柱面数与一个盘面上的磁道数是相等的。由于每个盘面都有自己的磁头,因此盘面数等于总的磁头数。
磁头和柱面

磁头和柱面

Q: 什么是块和簇?

答: 其实它们磁盘块/簇都是虚拟出来的;

  • 1.块是操作系统中最小的逻辑存储单位,OS与磁盘打交道的最小单位是磁盘块,但由于操作系统文件系统类型的不同导致的叫法不同,如在Windows下NTFS等文件系统中叫做簇,而在Linux下如Ext4等文件系统中叫做块(block);
  • 2.每个簇或者块可以包括2、4、8、16、32、64…2的n次方个扇区。

Q: 为什么存在磁盘块?

答: 1.读取方便:由于扇区的数量比较小,数目众多在寻址时比较困难,所以操作系统就将相邻的扇区组合在一起,形成一个块,再对块进行整体的操作。
2.分离对底层的依赖:操作系统忽略对底层物理存储结构的设计。通过虚拟出来磁盘块的概念,在系统中认为块是最小的单位。

Q: 什么是Page(页)?

  • 操作系统经常与内存和硬盘这两种存储设备进行通信,类似于“块”的概念,都需要一种虚拟的基本单位。
  • 与内存操作是虚拟一个页的概念来作为最小单位。
  • 与硬盘打交道就是以块为最小单位。

Q: 扇区、块/簇、page的关系?

答: 扇区(硬盘的最小读写单元)、块/簇(是操作系统针对硬盘读写的最小单元)、page(是内存与操作系统之间操作的最小单元)
关系: 扇区 <= 块/簇 <= page

Q: 计算磁盘存储量的公式?

答: Header 数量 每个 Header 负责的柱面数量 每个柱面含有的扇区数 扇区容量;
单位换算: header
(cylinder / header) (sector /cylinder) 512byte
简单写法: Head Cylinder Sector 512Bytes
简单描述: 存储容量 = 磁头数 × 磁道(柱面)数 × 每道扇区数 × 每扇区字节数
例如上图磁盘是一个 3个圆盘6个磁头,7个柱面(每个盘片7个磁道) 的磁盘,图3中每条磁道有12个扇区;
磁盘的容量: 6
7 12 512 Bytes = 258048 B

  • 外圈的密度小,内圈的密度大,每圈可存储的数据量是一样的
  • 新的硬盘数据的密度都一致,这样磁道的周长越长,扇区就越多,存储的数据量就越大。

Q: 磁盘读取响应时间?

答: 读写一次磁盘信息所需的时间可分解为寻道时间、延迟时间、传输时间,为提高磁盘传输效率软件应着重考虑减少寻道时间和延迟时间。
1.寻道时间:磁头从开始移动到数据所在磁道所需要的时间,寻道时间越短,I/O操作越快,目前磁盘的平均寻道时间一般在3-15ms,一般都在10ms左右。
2.旋转延迟:盘片旋转将请求数据所在扇区移至读写磁头下方所需要的时间,旋转延迟取决于磁盘转速。普通硬盘一般都是7200rpm,慢的5400rpm。
3.数据传输时间:完成传输所请求的数据所需要的时间。
小结一下: 从上面的指标来看、其实最重要的、或者说、我们最关心的应该只有两个寻道时间、旋转延迟

Q: 磁盘传输接口?

答: 目前磁盘应该与主机系统连接主要的几种传输接口规格;

  • 1.IDE 接口: 排线较宽并每个排线可以接两个IDE设备(主/从)Master/Slave架构,调整Jump成为Master或Slave,一般采用Ultra 133规格(Ultra ATA data cable)即每秒理论传输速度可达133MB;
  • 2.SATA 接口: 每条SATA线接一个设备、接口速度较快、排线细小利于主机散热与安装,其发展已经到第三代(SATA Revision 3.0)每秒传输600MB/S,前一代每秒传输300MB/S; 有两条线一条信号线缆另外一条是电源线缆;
  • 3.SCSI 接口: 工作站等级上的硬盘传输接口为SCSI接口,该接口的磁盘在控制器上含有一块处理器、运转速度快并不会消耗CPU资源
  • 4.M.2 接口: 用于固态SSD磁盘设备提供高性能的传输速率;

Q: 不同接口的固态硬盘协议速度对比?

WeiyiGeek.固态硬盘协议速度对比

WeiyiGeek.固态硬盘协议速度对比

Q: 磁盘性能关键参数?

缓冲存储器 : 磁盘内部含有一个缓冲存储器,主要将磁盘内常使用的数据缓存起来以加速系统读取性能。目前主流产品可达32MB
转速 : 主轴马达转速直接影响到期磁盘性能,一般常规的台式机磁盘每分钟7200转、笔记本则为5400转,若有高性能的数据访问需求建议选择高转速硬盘;

Tips: 由于磁盘内部机械手臂上磁头与盘面接触是非常细微的空间,所以任何非正常抖动会导致数据损坏或者磁盘损坏,尽量不要直接断开电源因为机械手臂必须要回归原位(正常关机即可);


PCI 适配卡

Q: 那些设备使用PCI适配卡?

答: 显卡、Raid卡、网卡、声卡、USB控制卡、特殊功能卡等等,现在由于流行小机箱所以为了减少空间的占用,主板集成了很多常用功能芯片所以主板上的PCI 适配卡插槽就变少了;


主板 - MainBoard

Q: 什么是设备I/O地址与IRQ中断(Interrupt)信号?

I/O地址 : 类似于每个设备的门牌号码它是唯一不重复的,便于主板知道自己有哪些组件。
IRQ : 各个设备连接到处理器的专门路径,各个设备通过IRQ中断信道来告诉CPU该设备的工作情况。

Q: 早期接口现在已经启用的接口(Deprecated)

答: 九孔串行端口(COM1)以及连接打印机的25针并列口LPT1等;


电源 - Power

Q: 电源设备的选择与性能关键?

答: 计算机电源的额定功率需要大于并超出各个组件之和的功率,否则会导致计算机不稳定以及设备损坏;
能源转换率: 由于电源本省也需要吃掉一部分电力所以当主机系统需要300W时建议电源的额定功率在400W及其以上,即最好挑选高转化率(输出的功率与输入的功率的比值)的电源,例250W(组件所需) / 320W(实际功率) = 0.78
连接接口: 目前主板与电源供应器连接接口主要有20pin与24pin两种规格;


计算机编码

Q: 计算机语言表示方式?

答: 计算机由于其组成由成千上万个晶体管组成,通过其开/关完成或记录各项操作,则计算机只能识别 0 和 1所以计算机常用数据是二进制的。

Q: 计算机数字系统常用进制?

答: 二进制(binary逢二进一)、八进制(octal)、十进制(Decimal)、十六进制(Hexadecimal)

Q: 什么是文字编码系统?他有何作用?

答: 实际上是一个字码对照表,将人类语言通过该表转换成为计算机所能识别的计算机数字;
例如: 当写入文件的文字数据时首先会由编码对照表将该文字转成计算机所能识别的数字系统后再存入文件当中(读取则相反);

Q: 计算机中常见的编码表有哪些?

答: 英文编码表(ASCII)、中文简体编码表(GB2312)、Unicode编码表系统其特点如下:
ASCII : 每个符号(英文、数字、字符)都会占用1B记录一共有2^8=256字符;
GB2312 : 它是中文系统编码表每个中文占用2B理论上最有2^16=65536中文字符,注意该编码对默写数据库系统来说存在一定问题可能会乱码;
Unicode : 常常称为 UTF-8、统一码或者万国码,由国际ISO/IEC组织定制;


操作系统 - OS

Q: 计算机系统将软件分为两大类其特征是?

  • 1.系统软件: 即操作系统它是也是一组程序是内核与其提供的接口工具,其主要管理计算机的所有活动以及驱动系统中的所有硬件设备,并且能开发一个软件接口给开发者进行开发各类软件;
  • 2.应用软件: 是参考操作系统所提供的API开发接口所开发出来的软件(软件运行环境依赖于操作系统),例如计算机上的计算器、QQ、Offices等

Q: 操作系统(Operation System)简述?

答: 主要用于管理与驱动硬件,因此必须要能足够管理内存、管理设备、负责进程管理以及系统调用等,所以只要能够让硬件准备妥当的情况下,它就是一个操作系统;

Q: 操作系统的角色?

答:将整个计算机系统相关软件/硬件绘制成图表示如下: 硬件 > 操作系统(内核 -> 系统调用) -> 应用程序;

Q: 什么是机器程序与编译程序?

答: 机器程序: 就是我们所说的二进制编程语言由01数字组成的一串(难记也难懂)也叫机器码以及最靠近计算机语言的汇编语言通过微指令让CUP读得懂的指令码给CPU执行运算;
编译程序 : 即我们所说编译器(常见的有C/C++/Java/Python等)能够将开发者所写的高级程序语言的代码进行转译为机器能看懂的机器码;

Q: 什么是内核?其作用是什么?

答: 内核是操作系统非常重要的一部分其提供了管控硬件与计算机系统相关资源的分配(包括CPU、内存等资源),在其上层还需要应用程序用户才能操作系统。
其主要功能如下;

  • 1.系统调用接口(System call interface) : 便于和内核通信使之将硬件资源进一步利用
  • 2.程序管理(Process control) : 多任务多线程、CPU调度
  • 3.内存管理(Memory management) : 通常内核提供虚拟内存的功能当内存不足时候可以提供内存交换(SWAP)功能
  • 4.文件系统管理(File system management) : 文件的管理、数据的输入/输出IO等工作
  • 5.设备驱动(Device driver) : 设备驱动程序是内核需要做的事情,目前将驱动程序编辑成模块就不需要重新编译内核,实际上硬件设备驱动提供者应该是由硬件厂商完成的,由其参考操作系统的驱动程序开发接口;

Q: 操作系统与驱动程序的关系?

答:操作系统通常会提供一个开发接口给硬件开发商,让其根据这个接口设计可以驱动他们硬件的驱动程序,然后由用户安装驱动程序后即可在该操作系统上驱动并使用这张显卡;
注意: 适当的驱动程序表明了不同的操作系统驱动程序可能无法成功安装和驱动;


1.Linux介绍

Q: Linux是什么?

描述: Linux是一套完整操作系统,其内核原型由1991年Linux Torvalds开发,不过当前的内核仅仅驱动389所有的硬件而已并不包含其他的应用程序, 随着作者的开源该项目越来越多的开发者加入其中并得到基金会的帮助使其生态圈逐渐完善; 虽然Linux仅是其内核与内核提供工具,然而他们通过与软件开发者锁提供的软件整合,使得Linux成为了一个更完整的、功能强大的操作系统;

Q: Linux有什么用?

答: 完成操作系统应有的功能比如有效的管理和控制硬件设备资源,并提供计算机运行所需的软件功能;

Q: Linux特征特点?

  • 0.开源(Open Source) : 基于GPL授权之下拥有自由与开放的使用与学习环境;
  • 1.可移植性: 由于其开源(开发源代码)所以程序代码可以被修改为适合在各种机器上运行的;
  • 2.设备需求配置低 : 支持个人86机器;
  • 3.内核功能强大而稳定 : 由于越来越多的公司以及团体个人的加入
  • 4.独立作业 : 在发行版中集成了大量的软套件

Q: Linux 优缺点?

优点:

  • 0.稳定的系统 :具有与UNIX系统相似的程序接口和操作方式,也就继承了UNIX稳定并且有效率的特点;
  • 1.免费或少许费用 : 基于GUN项目的CPL授权,只要在购买使用 Redhat系统中的服务才收取费用
  • 2.安全性、快速漏洞的修补 : 使用团体、爱好者多
  • 3.多任务、多用户 : 比起Windows的单人多任务系统稳定得多;
  • 4.用户与用户组的规划
  • 5.系统只耗费小量的系统资源
  • 6.适合需要小内核程序的嵌入式系统
  • 7.整合度佳且多样的图形界面 : Linux 下现常用的图形界面:KDE 以及 GNOME(比较耗费资源)
    缺点:
  • 1.没有特定的支持厂商 : 出现问题 只能在发行版论坛 以及 硬件设备的技术支持寻求帮助;
  • 2.游戏支持度不足 : 不过近些年有所改观Steam支持在Ubuntu Desktop上安装;
  • 3.专业软件支持不足

Tips: 因为Linux具有硬件设备需求低、架构开发、系统稳定性以及保密性功能强大,完全免费的优点,并且有些许反微软联盟的程序设计高手不断开发新软件以与微软抗衡;

Q: Linux 操作系统与内核之间的关系?

答: 操作系统的内核必须要和硬件配合,以提供及控制硬件的资源进行良好的工作;

Q: 什么叫软件移植?

答: 由于不同硬件的功能函数并不相同,例如IBM的Power CPU与Intel的X86框架是不一样所以导致了同一套开发系统无法在不同的硬件平台上运行,但是可以通过参考硬件功能函数并修改操作系统程序代码后便可以在另外一个硬件平台运行,这一系列操作我们称为软件移植;

Q: Linux 历史演变?

答: 我们知道Linux的前身其实是UNIX操作系统以下简单的梳理一下发展流程

  • 1.1969年 - Bell和MIT(麻省理工学院)与GE - Multics(有复杂、多数的意思)系统(分时操作系统-Compatible Time-Sharing System,CTSS) - 它近现代操作系统的鼻祖;
  • 2.1969年 - Ken Thompson - File Server System(文件系统-Unics) - 利用汇编语言(Assembler)写出一组内核程序同时包括一些内核工具程序以及小的文件系统它是UNIX的原型,他有两个重要概念所有程序或系统装置都是文件、不管构建编辑器还是附属文件所写的车闽侯县只有一个目的就是有效的完成目标工作;
  • 3.1973年 - Ken Thompson与Ritchie - 以C语言重写第一个正式的UNIX内核 - 起初UNIX由于B语言(更高级的程序语言)编译出来的内核性能效率并不是很高,所以以C语言重新改写(使得UNIX很容易被移植到不同的机器上)与编译Unics内核最后发行出UNIX的正式版本;
  • 4.1977年 - 贝尔实验室(属于AT&T公司)与加州柏克莱(Berkeley)大学的Bill joy - BSD(Berkeley Software Distribution)重要的Unix分支,后创办了SUN公司并以BSD开发的内核进行自己商业UNIX版本的开发,注意FreeBSD即是由BSD改版而来;
  • 5.1979年 - AT&T公司 - 自家的System v - 此时其他公司也推出UNIX相应的衍生版IBM的AIX,由于商业的考虑AT&T想把UNIX版本进行回收特别提到了不可对学生提供源码的严格要求;
  • 6.1984年 - AndreTanenbaum(谭玲邦) - Minix(X86架构的操作系统诞生) - 但是仅仅只是用于教育方面,用户要求和需要就可能比较没有办法上升到比较高的地方;
  • 7.1984年 - 发起GUN项目与FSF基金会的成立 - 为了创建自由而有开放的操作系统(FreeUnix),为了更好的推广他编写了GUN C Compiler(GCC)编译器以及Emacs编辑器并公布源代码:
  • 8.1985年 - GUN通用公共许可证 - 起草了有名的通用公共许可证(General Public License,GPL)并称呼他为CopyLeft相对于专利软件(CopyRight)
  • 9.1988 年 - 图像接口XFree86项目 - 鉴于图形用户接口(Graphical User Interface,GUI)MIT发表了X Windows System并创立了XFress86组织(X Window System + Free + X86)的整合名称,并且该GUI界面更在Linux的内核1.0版本于1994年集成与Linux操作系统当中;
  • 10.1991年 - Linus Torvalds - 芬兰 赫尔辛基大学 BSS - 采用GCC与Bash编写了一个Kernel程序并可以运行在386机器上Linux就这样诞生了

Q: Unix操作系统特点?

答: Unix强调多用户、多任务环境; 目前纯种的UNIX是指System V 以及BSD两种;

Q: 什么是GUN项目?

答: GUN=GUN’s Not UNIX指无穷的循环,由Richard Mathew Stallman(史托慢-1953年-RMS)发起的GNU项目,起初是他一个人单打独斗后来发现一个人并无法完成所有的工作于是成立一个开放的团体来共同努力,对现今的自由软件风潮真的有不可磨灭的地位,并且我们所使用的许多自由软件几乎直接或者间接的受益于GUN该项目,该项目是创建一个自由开放的UNIX操作系统(Free Unix)

Q: FSF 基金会的成立?

答: Richard Mathew Stallman将Emacs以磁带出售并配有相应的服务说明书赚了第一桶金从此全力编写其他软件,并成立自由软件基金会(Free Software Foundation,FSF)请更多的工程师与自愿者来编写软件,避免GUN所开发的自由软件被其他人利用而成为专利软件,并且完成了GCC以及C函数库(GUN C Library-glibc)以及可以被用来操作操作系统的基本接口Bashshell这些基本都在1990年完成;
观念: 版权制度是促进社会进步的手段而版本本省部署自然的权利;

Q: 自由(Free)的真谛?

答: 史托曼对通用公共许可证(General Public License,GPL)中的Free进行解释,Free Software是一种自由的权利并非是价格,也就是说自由软件的重点并不是指免费的,而是指具有自由度(Freedom)的软件,并且进一步阐明了其意义用户可以自由执行、复制、在发行、学习、修改与强化自由软件等,这一句话你会在任意的GUN项目或者设置GPL许可中看见它。

Q: GPL对自由软件作者有何优点?

  • 1.软件安全较佳
  • 2.软件执行性能较佳
  • 3.软件拍错时间较短
  • 4.贡献的源码永远存在
  • 5.促进技术的发展以及开发人员技术的提升

Q: 自由软件与商业行为?

答: GPL许可的项目也是可以从事商业行为的,而许多作者也是借由这些商业行为来获取生活所需从而进步去开发优秀自由的软件;
商业行为实际就是售后服务,提供数年不等的咨询、售后、软件升级以及其他协力工作的附加价值所收取的费用并不违背GPL许可原则

Q: 黑客与怪客?

答: 黑客专指计算机功力很强的人而非破坏计算机的怪客(Cracker)

Q: 什么是汇编语言(Assembly Language)?

答: 它是直接与芯片对谈的程序语言也就是低级语言,它与硬件架构相互相成必须对硬件有所了解才能进行编写.

Q: 什么是多任务处理(Multi-tasking)?

答: 理论上一个CPU在某个时间段内仅能运行一个程序,而多任务处理实际上是CPU在某段时间内不断的在两个程序间切换运行直到运行结束,由于其切换的时间无法以人的肉眼所感知所以给使用者的感觉基本是同步的;

  • 1.多任务处理与CPU频率也是密不可分的比如某CPU频率为1GHz表示一秒钟可以进行10^9(1*1000*1000*1000)操作,而假设CPU对每个程序都进行1000次运行周期,那么CPU一秒钟便能切换10^6次是不是很快呀!
  • 2.多任务处理需要由硬件方面和操作系统方面支持,否则两个程序同时执行是不可能的即后面的程序不可能主动被执行。
  • 3.多任务处理有个重要特性实际就是进程的5个状态,每个程序都有一个最大占用CPU的使用时间,一旦超出此时间程序将被丢出运作中进入内核工作调度中,等待下一次被CPU调取执行;

Q: 编译程序需要什么?

答: 实际上就是我们的工作开发环境包含两部分编辑器与程序编译器;

Q: 什么是POSIX?

答: 它是可携式操作系统接口(Portable Operating System interface)由美国电气与电子工程师学会(IEEE)所发布的标准,其主要运用于规范内核与应用程序之间的接口。

Q: Linux 的出现历史与开发阶段?

(1) 出现历史

  • 1.1 托瓦兹根据Minix操作系统学习内核程序设计的概念,并在此系统上实现一个小程序并且能运行在Intel386机器上;
  • 1.2 它采用GUN项目所提供的BASH工作环境软件以及GCC编译软件完成了内核程序的编写并成功在386机器上运行,由于其公布的时候放入内核的FTP目录名称为linux所以大家便称该内核为Linux;
  • 1.3 起初UNIX上运行的软件无法直接在Linux内核上运行,后托瓦兹参考POSIX标准规范进行设计软件与内核,使得UNIX上的软件兼容Linux,这也让Linux使用率大增;
    (2) 开发阶段
  • 2.1 单打独斗阶段 : 由个人开发更新Linux并收集使用者的需求,从而迅速的进行Linux内核更新与排错;
  • 2.2 志愿者加入阶段 : 由于个人精力以及硬件设备有限无法编写某些用户提交的需求,此时他只要求先能跑起来然后在想优化的事情,这也是后面Linux开发具有模块的功能原因。
  • 2.3 开发分工细化阶段 : 托瓦兹主要负责提交代码的审核与整合,其副手将志愿者的修补程序或者新功能的程序进行测试并将结果上传给托瓦兹。与此同时为了虚拟团队的数据传输Linux便成立了Linux内核网站:https://www.kernel.org
  • 2.4 1994年 - Linux 内核正式版 1.0 诞生
  • 2.5 1996年 - Linux 内核正式版 2.0 诞生
    总结: Linux成功的地方在于Minix、GUN、Intelnet、POSIX以及虚拟的志愿者开发团队;

Q: 为啥选择小企鹅当做Linux的Logo?

答: 网传托瓦兹小时候去动物园时被企鹅咬了一口而恋恋不忘,在正式版2.0推出前将其小企鹅当成Linux的吉祥物;

Q: 什么是Linux的模块化功能开发?

答: 因为Linux是全球志愿者共同协力开发,当然会存在随时都有程序代码加入的情况于是乎Linux便逐渐开发具有模块的功能;
即: 将某些功能独立于内核外只有在使用的时候才加载到内核之中,当有新的驱动程序或者其他协议的程序代码提交进来时就可以模块化;
实际上模块化后原本内核程序无需变动,当然也不需要重新编译和系统重装,你可以将其类比于”驱动程序”
其好处就是增加Linux内核的可维护性;

Q: Linux 内核版本编号说明?

答: 2.6.18-92.e15 对应 主版本.次版本.释放(末)版本-修改版本

  • 1.主.次版本为奇数(2.7)为开发中版本(Development) : 主要测试与开发新功能,涉及内核程序代码的新增;
  • 2.主.次版本为偶数(2.6)为正式版本(Stable) : 主要用在一般家庭计算机以及企业版本中提供用户一个相对稳定的Linux作业平台;
  • 3.释放版本 : 在主次版本架构不变的情况,新增功能积累到一定程度会后所新释出的内核版本;
  • 4.修改版本 : 由于Linux使用的GPL授权声明,因此对某个版本的内核修改过部分程序代码的被修改的版本应加上修改版本号标识;

Q: 什么是Linux Distributions(发行版)?

答: 因为Linux参考POSIX设计规范,因此兼容UNIX操作系统,故称UNIX Like(很像UNIX的操作系统),为了让普通用户可以接触到Linux许多商业公司或者非盈利团体奖Linux Kernel(含光盘)与可运行的软件集成起来并加上特殊的工具集,然后用户将可通过网络或者DVD进行安装使用Linux系统,所以我们将 Linux Kernel + Software(自由软件和商业软件) + Tools + Documentation 的可完全安装的系统称为Linux Distributions;

Q: 各大Linux发行版的主要异同?

  • 1.异: 就是开发者自家所开发出来的管理工具以及套件管理模式,除此之外并无太大差异;
  • 2.同: 都按照Linux Standard Base(LSB)标准以及目录架构的File System Hierarchy Standard (HFS)规范开发者,所以你才会看见各发行版的根目录的文件差异不是很大;

Q: 当前Linunx发行版分类?

  • 1.rpm方式安装软件包: Redhat、CentOS、Fedora、SuSE
  • 2.dpkg方式安装软件包: Debian 、Ubuntu、Kail
  • 3.apk方式安装软件包: Alpine

Q: 互联网中常见的几个授权模式?

(1) 开发源码(Open Source)的代表授权为GUN的GPL授权以及BDS等

  • 1.1 GUN General Public License(GPL) : Version 2 、3;
  • 1.2 Berkeley Software Distribution BSD : 该授权模式与GPL类似,其精神与Open Source相互呼应;
  • 1.3 Apache License : Version 2.0由Apache基金会管理发布授权规定使用者在重新发布该软件时候必须加上原软件名称以及作者;

(2) 闭源:仅推出可执行的二进制程序而已,使用者无法手动编译改动

  • 2.1 Freeware :它是免费软件而非自由软件,往往这类软件附带着一些数据窃取的目的;
  • 2.2 Shareware :起初免费试用但并非全部功能,到了试用期后就必须要付费使用否则便不能正常使用;

2.Linux 如何学习

实践是学习Linuxde最佳方案,多读书建立兴趣与成就感很重要、另外协助回答问题参与团队活动也是增加热情的方式!

Q: 以笔者个人的经验为例:

  • 0.学习的原动力?
    • 成就感、兴趣
  • 1.首先需要知道你学习Linux目的是什么?
    • 毕设 实验 工作 娱乐
  • 2.其次是个人环境使用还是企业环境以及开发环境使用?
    • 知道使用Linux侧重点方便选择发型版本
    • 企业环境 : 着重于网络服务器、关键任务应用(金融数据库、大型网管、以及高性能运算等任务)
    • 个人环境 : 着重于桌面计算机、手持系统(PDA/手机)、嵌入式设备
  • 3.然后是从命令行模式进行学习(推荐)还是从桌面的GUI发行版进行学习?
    • 初学者建议从基础命令行开始操作,本身选择两则是差不多的在GUI你也可以用命令行操作方便初学者学习实践,一句话能用命令行操作的绝不用界面化操作
  • 4.Linux distribution 发型版本的选择
    • Linux 爱好者 Debian 系
    • 娱乐 、开发 Ubuntu-desktop
    • 企业服务器 Redhat SuSE CentOS Ubuntu-server
  • 5.内核版本的选择?
    • 建议选择稳定版本Stale即内核主次版本为偶数

Q: Linux 学习流程?

  • 1.计算机概论与硬件相关知识
  • 2.Linux安装与基础命令学习
  • 3.Linux操作系统基础技能
  • 4.Linux下的文本编辑器、以及程序编译器
  • 5.Shell语法学习与Shell脚本编写
  • 6.Linux上软件管理以及操作系统管理
  • 7.网络基础概念以及网络Socket学习
  • 8.Linux内核学习
  • 9.学习笔记整理(定期归类与整理),在浏览关于Linux技术好文章随时浏览并收藏;
  • 10.参与回答别人提交的问题,协助他同时让自己也加深理解;

Q: 如何提交自己Linux操作学习所遇问题?

答: 在提交问题前一定要清楚自己想要询问什么,表达不能模糊不清。
在提交问题的同时应该加上你当前Linux发行版 + 内核版本 + 软件信息 + 异常错误信息;


3.主机规划基础知识

Q: 进行计算机硬件购买配置需要考虑哪些角度?

  • 1.目的: 游戏娱乐 、设计工作站、企业服务器
  • 2.价格: 简单的说就是性价比;
  • 3.支持度: 购买的硬件不至于太陈旧(我们知道计算机更新换代确实很快)而系统不能识别或者不支持,当然最新的设备也要慎重;
  • 4.性能: 与购买的硬件息息相关
  • 5.消耗: 一般耗电量以每瓦性能为单位,每瓦电力所发挥的性能越高当然代表越省电;

Q: 硬件设备在Linux的文件名称?

答: Linux 中有一个概念即 一切皆文件,也包括硬件设备在Linux上的对待方式;
常见的接口设备与文件名称对应:
IDE 硬盘 : /dev/hd[a-d]
SCSI/SATA/USB 硬盘 : /dev/sd[a-p]
CD / DVD : /dev/cdrom
鼠标 : 当前鼠标 /dev/mouse ,USB /dev/usb/mouse[0-15],PS2 /dev/psaux

Q: 磁盘连接方式和顺序与设备文件名称关系?

答: 对于IDE磁盘接口的设备(现在已经很少使用)来说,一个IDE扁平电缆可以接两个IDE设备即被区分为Master(主设备)与Slave(从设备)
对于SCSI接口磁盘都是以SCSI模块进行驱动而Linux系统上的文件名称是使用检测到的顺序来决定设备文件名称而非是实际插槽;

Q: 简单复习磁盘方面的知识

答: 磁盘的组成盘片、主轴马达、磁头、机械手臂,而盘片又细分出扇区(Sector)与柱面(Cylinder)两种单位其中扇区每个为512bytes;

Q: 磁盘中盘片上的扇区的作用?

答:磁盘中第一个扇区(保留为主引导扇区位于0磁头0柱面1扇区)非常重要,因为其记录了整块磁盘的重要信息分别是(以扇区512bytes为例):

  • 1.硬盘主引导记录MBR(Main Boot Record): 446 bytes, 安装引导加载程序的地方,系统在开机时会主动去读取这个区块内容然后才进行加载内核进行读取文件系统;
  • 2.分区表DPT(Disk Partition Table): 64 bytes, 记录整块磁盘分区的状态,将磁盘分区为多个区段;

Q: Linux 操作系统的文件系统(file system)使用目录树结构系统,文件系统中需要挂载磁盘中建立的对应分区后才能操作,文件系统支持多种格式类型;

Q: 分区表DPT(Disk Partition Table)的划分?

答: 磁盘中开始与结束的柱面是文件系统分区的最小单位;

  • 1.在分区表64bytes容量中总共分为四组记录每组记录区记录了该区段的起始柱面号码;
  • 2.由于分区表的大小有限64=4*8 bytes最多容纳四个分区(主(Primary)或扩展(Extended)分区)

Q: 为什么需要分区?

答:当系统对磁盘写入数据时需参考磁盘分区表才能针对某个分区进行数据的处理;

  • 1.数据的安全习惯: 不同分区间的数据互不干扰
  • 2.系统的搜寻性能: 指定搜索的分区有助于数据读取的速度与性能;

Q: 主分区与扩展分区?

  • 1.主分区: 主分区与扩展分区最多只能有四个对于512bytes的扇区(磁盘限制)
  • 2.扩展分区: 其本身不能被拿来格式化并且由于操作系统限制最多只能有一个,目的是使用额外的扇区来记录分区信息
    • 2.1 逻辑分区: 由扩展分区记录的分区可以进行格式化后存储数据,需要注意逻辑分区的设备名称号码由5号开始编号,因为前四个号码是给主、扩展分区使用,例如
      P1: /dev/hda1
      P2: /dev/hda2
      L1: /dev/hd5
      注意: 逻辑分区数量因操作系统不同在Linux中IDE硬盘最多有59个逻辑分区(5~63号)而SATA磁盘有11个逻辑分区(5~15号)
      分区以柱面(cylinder)为单位的连续的磁盘空间,且扩展分区又是一个类似于独立的磁盘空间所以在分区时需要特别注意;

Q: 分区划分推荐方式?

  • 1.P+P+P+E即三个主分区加上一个扩展分区
  • 2.P+E

Q: Linux 磁盘分区与文件结构规划?

答: 将未来可能被读写频繁的目录或者重要的目录分别独立为一个分区并挂载到一个目录中;
例如以下方式:/boot 、/ 、/home、/usr、Swap(一般设备内存的50%)进行单独分区,为了方便扩展建议使用LVM创建磁盘分区;

Q: Swap 交换分区的作用?

答: 即内存交换分区,swap 内存交换空间的功能是当有数据被存放在物理内存里面,但是这些数据又不是常被CPU所取用时,这些不常被使用的程序将被丢到硬盘的swap交换空间当中,而将速度较快的物理内存空间释放出来给真正需要的程序使用。
当系统内存不够用时候(80%)将会使用到硬盘的内存交换空间(swap),简单的说就是将内存存放不了的一部分写入磁盘的swap分区中;
所以如果您的系统不是很忙而内存又很大则自然不需要swap, 一般在购买的VPS中由于内存有限而需要进行swap分区的创建;

Q: 磁盘阵列一句话描述?

答: 他就是我们经常所说的Raid, 利用硬件技术将数个硬盘整合成为一个大硬盘的方法,在操作系统中识别为一块硬盘,并且拥有速度快、性能好、容灾等方面的特性;

Q: 开机流程与主引导分区(MBR)?

开机流程:BIOS->MBR->Boot Loader->Kernel
Boot Loader : 主要提供菜单、加载内核、转交控制权给其他Loader,其安装位置有两个分别是MBR与boot sector;


4.系统安装与多重引导
文件系统

文件系统类型:

  • (1) Ext类型
    • 1.ext2:有日志记录便于系统的恢复(较快)
    • 2.ext3:文件日志系统
    • 3.ext4:
  • (2) Physical volume(LVM-Logical Volume Manager): LVM是逻辑卷管理的简写弹性调整文件大小的机制,即让文件系统大小变大或者变小而不改变原有的文件数据内容(缩小分区大小时需要非常注意)
  • (3) Software Raid : 就是我们通常所说的软raid即用软件仿真出磁盘阵列功能(有选择Riad等级/文件成员/文件系统格式),默认的软件磁盘阵列的设备名称为/dev/md0;
  • (4) Swap : 内存交换空间当内存不够用时候采用磁盘进行临时存放内存中的数据(一般为物理内存的1.5~2倍),注意该分区类型不需要挂载并且如何内存一般为4G以上时一般不需要建立swap分区(常在VPS上创建swap),;
  • (5) vfat : 同时被Liunx与Windows所支持便于两个系统间文件的操作;

磁盘分区

Q:例如CentOS安装常用的四种分区结构?

  • 1.在选定的磁盘上删除所有分区并创建默认分区结构: 将硬盘里面的分区全部删除后,以安装程序的默认方式重新创建分区,简单的说就是整个磁盘会被Linux使用;
  • 2.在选定驱动上删除Linux分区并创建默认的分区结构: 磁盘中的 Linux 分区会被删除然后在以安装程序的默认方式重新创建分区;
  • 3.使用选定的驱动器中的空余空间并创建默认的分区结构: 使用磁盘内还未被分区的柱面进行默认分区的创建创建;
  • 4.建立自定义分区结构: 使用我们需要的方式创建默认分区(系统管理员常用)

Q: 磁盘分区创建项目解析?

答: 每个分区的设备文件名, 挂载点, 文件系统类型, 格式化, 分区容量大小, 开始与结束柱面;
常常创建的分区:
(1) /boot : 引导程序安装到MBR时就得安装到每块partition的启动扇区(Boot sector),然后只想必须在磁盘在最前面(Primary partition),;
(2) / : Linux 根分区 (Primary partition)
(3) /swap : 内存交换分区(无线挂载点)
(4) /home : 用户家目录分区

Q: 引导装载程序的安装?

答: 分区完成就进入引导装载程序的安装, 并且 grub 引导程序必须安装在MBR里面才行;

Q: 什么是SELinux?

答: SELinux(Secure Enhanced Linux)它由美国国家安全局(Notional Security Agency,NAS), SELinux 是一个Linux系统访问控制(Access control)的细化设置重点在于控制程序对于系统文件的访问权限限制;

Q: 什么是Kdump?

答:它实际上就是内核崩溃转储机制,当内核出现错误的时候是否要将当时的内存内的消息写到文件中,便于内核开发者分析研究错误,而对于普通使用者来说它是一个可选功能缺点就是他

Q: 多重引导安装流程相关知识?

答: 多重引导来选择登录不同的操作系统,但是需要注意多重引导系统是由很多风险存在的,而且您也不能随时变动这个多重和操作系统的启动扇区;
答: 建议使用两块硬盘并且先给其中一块硬盘安装Windows系统再在另外一台机器上安装Linux,但是需要注意的时两块硬盘安装系统计算机仅仅会有一个MBR而已;

Q: 为啥两块硬盘只有一个MBR分区?

答: 因为在BIOS里面调整开机启动的设备,只有第一个可开机设备内的MBR会被系统主动读取,而我们可以将GRUB引导程序安装到该MBR分区从而控制全部的开机菜单,当然您也可以采用spfdisk国人写的引导程序;

当然您也可以调整BIOS内的开机顺序,使得要进入不同的操作系统时就用不同的开机启动设备来开机,但是存在一个问题即 SATA 设备文件名是利用检测的顺序来决定的;

Q: 多重引导后续维护注意事项?

(1): Windows环境中最好将Linux的根目录与swap取消挂载,否则在打开资源管理器时会要求你格式化;
(2): Linux不可随意删除因为grub会去读取Linux根目录下的/boot启动分区否则将导致Window系统无法引导(需要重新PE引导修复);

5.Linux 基础操作

Q: Linux 中的图像化界面与字符界面

答: 会话指的是使用不同的图形界面来操作整个Linux系统;
在CentOS 5.x中使用两种常用的图形界面即GNOME / KDE,我们称为窗口管理员Window Manager;
GNOME 资源管理器实际称为 鹦鹉螺(Nautilus)
KDE 资源管理器实际称为 征服家(Konqueror)

Q: X-Windows与命令行模式的切换

答:命令行模式常常称为终端界面(Terminal 或者 Console),快捷键切换如下:

  • Ctrl + Alt + [F1]~[F6] : 文字界面登录 tty1~tty6 终端,即运行等级run level 3(init 3);
  • Ctrl + Alt + [F7] : 图形界面桌面即tty7终端,即运行等级run level 5(init 5);
    或者采用startx命令进行切换到图形界面桌面;

Q: 命令行模式下的执行命令的方式

答: 第一个被输入的数据绝对是命令或者是可执行文件,如果命令太长可以使用反斜杠\来转义enter符号使命令连续到下一行之中;

  • 1.命令行模式 : 命令执行后会直接显示结果然后回到命令提示符等待下一个命令的输入;
    命令执行->信息输出->提示符环境
  • 2.命令行交互模式 : 进入到该命令的环境直到结束该命令才回到命令提示符环境中;
    命令执行->软件功能环境->提示符环境

Q: linux 下的命令帮助方式:

1.man 命令 : UNIX likes 系统机器上,主要目录/usr/share/man
2.info 命令 : Linux 系统机器上,主要目录/usr/share/info
3.软件自身文档 : 即其他有用的文件(documents),主要目录/usr/share/doc

Q: Linux 下正确的关机方式:

答:Linux由于是多用户、多任务操作系统若不正常关机则可能造成文件系统的损坏(因为来不及将数据回写到文件中从而导致某些服务存在问题;)
1.先将数据同步到磁盘之中 sync
2.关机命令: shutdown 、poweroff 、halt
3.重启命令: reboot
PS: 只有高权限才能执行poweroff或者reboot,以及拥有sudo权限相关的用户

Q: 文件系统错误的问题?

答: 系统开机过程中可能遇到问题是磁盘有坏道或文件系统发生错误(数据损坏)的情况常常导致这种情况有以下原因:
1.由于断电或者不正常的关机导致文件系统发生错误, 注意文件系统错误并非硬件错误;
2.硬盘长时间使用率过高
3.主机硬盘所处环境,如果没有散热的设备或者是相对湿度比较高的环境也是很容易导致硬盘的损坏;

Q: 文件系统损坏修复解决方式?

答: 解决方式非常的简单但是由于出错扇区所挂载的目录不同处理的流程困难度就有区别了;
1.如果根分区没有损坏的情况下进行单用户维护工作: 输入 fsck /dev/sda7 命令采用fsck文件系统检查/dev/sda7的错误分区并进行修复;
2.如果根分区损坏的情况下可以利用Live CD光盘进行Linux系统后执行 fsck /dev/sdb1进行根分区的修复;
3.如果整个硬盘损坏的情况下需要先将其中能救的数据转救出来,然后换上一块新的硬盘来重新安装Linux;

Q :Linux 内核启动参数解析与使用;

  • 1.在Linux内核不要加载一些特殊功能即可;
    1
    2
    3
    4
    boot: linux nofb apm=off acpi=off pci=off # 笔记本电脑中关闭省电模式;
    # nofb : 取消显卡上面的缓冲存储器检测;
    # apm(Advanced Power Management) : 早期的电源管理模块;
    # acpi(Configuration and Power Interface) : 近期的电源管理模块; 两者都是硬件本身就有支持的但是笔记本电脑可能不是使用这些机制;
    -2.忘记linux启动密码利用grub引导程序进行single单用户维护模式进行重置密码;
    1
    2
    3
    4
    5
    6
    # 启动界面按e键
    root (hd0,0)
    kernel /vmlinuz-2.6.18-128.el5 ro root=LABLE=/ rghb quiet single

    # 然后执行加载内核
    ctrl+x

第二章.文件目录与磁盘

0.文件权限与目录配置

Q: Linux中用户和组的意义?

答: 它们在Linux的世界里面是相当重要的,使得多任务Linux环境变得更容易管理,以及系统资源分配和系统文件访问安全等等;
User : 用户
Group : 用户组
Other : 其它人

Q: Linux中关于用户身份信息以及用户组的记录文件?

1.用户信息: /etc/passwd
2.用户密码信息: /etc/shadow
3.组信息: /etc/group

Q: Linux文件权限与属性重要性及其用途?

答: 最大的用途是数据安全性以及系统保护功能,团队软件开发或数据共享的功能;

1
2
3
4
5
6
7
8
9
10
11
# 以用户与组信息文件为例
❯ ls -alh /etc/passwd
- rw-r--r-- 1 root root 1.6K May 9 17:10 /etc/passwd
[类型] [权限] [连接数] [所属者] [所属组] [文件大小] [修改时间] [文件名称]

❯ ls -alh /etc/shadow
- rw- r-- --- 1 root shadow 842 May 9 17:10 /etc/shadow
[user] [group] [other]

❯ ls -alh /etc/group
-rw-r--r-- 1 root root 735 May 9 17:10 /etc/group
  • 1.类型(Type)说明

    1
    2
    3
    4
    5
    6
    - 表示文件
    d 表示目录
    l 表示连接文件Link
    b 表示块设备
    c 表示串行字符设备
    s 表示数据接口文件
  • 2.权限(Permission)说明

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    rwx = 4 + 2 + 1 = 7 # 三个为一组所以我们常常会看见对于某些文件赋值为700

    # 文件
    r,read 在文件中表示读权限(4)
    w,write 在文件中表示写权限(2)
    x,execute 在文件中表示执行权限(1)

    # 目录
    r,read contents in directory 在目录中表示读取权限(4),可查询该目录下的文件名数据;
    w,modify contents in directory 在目录中表示修改权限(2), 可更改该目录结构(名称、删除、重命名)列表权限
    x,access directory 在目录中访问执行权限(1), 可否进入该目录成为工作目录的用途

补充说明: 要开放目录给任何人浏览时,应该至少要给予r或x的权限,但是w权限一般不能随便给;

Q: 如何改变文件属性与权限?

1.chgrp : 改变文件或者目录所属用户组,例如: chgrp -R weiyigeek /app/
2.chown : 改变文件或者目录所有者,例如: chown -R weiyigeek:worker /app/
3.chmod : 改变文件或者目录的权限, 例如: chown 644 /app/config.txt

Q: Linux 文件种类一览说明?

1.文件种类(普通文件-Regular File, 纯文本文件-ASCII, 二进制文件-Binary, 数据格式文件-Data)
2.目录(Directory)
3.连接文件(Link)
4.设备文件(Device): 块设备文件(block) 与 字符设备文件(Character)
5.套接字(Sockets)即数据接口文件常用于网络上的数据连接,常常所说的socket数据通信通道;
6.管道(FIFO,pipe)即特殊的文件类型与Process有关,主要解决多个程序同时访问一个文件所造成的错误问题;

Q: Linux 文件长度与文件名称限制?

答: 为了协同办公以及编写shell脚本提升效率,Linux对单一文件或者目录的最大容许文件名为255个字符,以及包含完整路径名称及目录(/)的完整文件名为4096字符;
在建立文件或目录时候最好避免以下的特殊符号* ? < > ; & [ ] | \ " ( ) { }等,以及不要采用 . - +等字符来做文件开头名称;

Q: 什么是FHS(FileSystem Hieararchy Standard-文件系统等级制度标准)?

答: 它是Linu目录标准配置其主要目的是让用户可以了解与选择安装软件通常放置在哪一个目录之下,其规范由独立的软件开发商、操作系统制定者以及想要维护系统的用户共同所追寻的;
其主要有四个核心类型: 横向(可分享、不可分享),纵向(可变动(登陆文件、日志文件),不可变动(函数库,说明书,主机配置文件))

Q:事实上FHS针对于目录树架构仅定义出三层目录下应该放置什么数据?

/ : root根目录
/usr : 与软件安装执行有关
/var : 与系统运作过程有关

Q: 不可与根分区放在不同分区的目录?

答: 由于根目录与系统开机启动有密切的关系,所以在开机过程中根分区首先会被其挂载,其它分区则是在开机完成后才会持续进行挂载行为;
因为如此根目录与开机过程有关的目录就不能够与根分区放在不同的分区中去,比如以下分区:
/etc : 系统配置文件
/bin : 系统重要的可执行文件(sh,bash等)
/dev : 所需要的设备文件
/lib : 执行文件所需的函数库与内核所需的模块
/etc : 重要的系统可执行文件


1.文件与目录管理

描述: 本章主要记录文件与目录管理相关的命令即说明;

1. 文件目录处理类命令

  • ls : 查看文件和目录
  • cd : 目录切换
  • basename :取得路径的文件名称
  • dirname : 取得目录名称
  • pwd : 显示当前目录
  • mkdir : 新建立目录
  • rmdir : 删除一个空目录
  • cp : 文件目录复制
  • rm :文件目录删除
  • mv :文件目录移动
  • touch : 修改文件实际或者创建新的文件


2.文件内容查阅

  • cat : 从第一行完整显示文件内容
  • tac : 从最后一行完整显示文件内容
  • head : 显示从头开始的几行
  • tail : 显示从结尾开始显示几行
  • nl : 显示的时候顺便输出行号
  • more : 一页一页向后显示文件的内容
  • less : 一页一页向前/后显示文件的内容
  • od : 非纯文本文件显示
  • file : 查看文件类型


3.文件目录默认权限与隐藏权限

  • chgrp : 更改组所有权
  • chown : 文件目所属者/组设置
  • chomd : 文件目录权限设置
  • umask :文件默认权限
  • chattr : 文件隐藏属性设置
  • lsattr : 文件隐藏属性查看


4.命令与文件查询

  • which : 脚本文件名路径查询
  • whereis : 文件名查找
  • locate : 系统文件名数据库中查找指定的文件(非自带)
  • find : 高级文件目录查询命令


2.文件特殊权限
SUID - 红色

描述: Set UID即当s标志出现在文件所有者的x权限时(-rwsr-xr-x),注意用户必须拥有x权限时候才行;
其特征有以下几点:

  • 1) 仅对二进制程序(Binary program)有效不可用于shell script, 即执行者对该程序有可执行权限以及所有者权限;
  • 2) 它仅在执行该程序的过程中run-time有效
  • 3) 它可以让您在执行该程序时短暂的拥有root权限

简单示例: 非用户查看与更改密码,正常情况用户不能查看到/etc/shadow内容,但是可以通过SUID权限采用passwd来更新自己的密码;

1
2
3
4
5
> ls -alh /usr/bin/passwd
-rwsr-xr-x 1 root root 67K 5月 28 14:37 /usr/bin/passwd

> ls -alh /usr/bin/cat
-rwxr-xr-x 1 root root 43K 9月 5 2019 /usr/bin/cat


SGID - 黄色

描述: set GID 即当s标志出现在用户组的x权限时(-rwx--s--x),注意用户组必须拥有x权限时候才行; 与SUID不同的是SGID可以针对文件或者目录进行设置;
其特征有以下几点:

  • 1) 对于文件来说SGID同样需要执行者拥有x执行权限,执行者在执行过程中将会获得该程序用户组的支持;
  • 2) 对于目录来说用户若对此目录具有r与x的权限时该用户能够进入此目录中
  • 3) 用户在此目录下的有效用户组(effective group)将会变成该目录的用户组
  • 4) 若用户在此目录下具有w的权限(可新建文件),则用户所创建的新文件的用户组与此目录的用户组相同;

简单示例:

  • 1) 当普通用户通过拥有的SGID权限执行locate将会取得slocate用户组的支持从而读取mlocate.db
  • 2) 使用cloud用户在权限为drwxr-srwx的目录/home/stack/test/生成文件test.txt,文件的用户组为目录的用户组stack,而不是创建者的用户组cloud;
WeiyiGeek.SGID

WeiyiGeek.SGID

SBIT - 绿色

描述: Set BIT(Sticky Bit)当t标志出现在Other的x权限时(drwxrwxrwt)
其特征有以下几点:

  • 1) 只针对目录有效,当用户对目录拥有wx权限时,用户在该目录创建的文件或目录,只有自己与root才可以删除。

简单实例: 例如在/tmp目录普通用户可以在该目录下添加修改文件,但是仅仅只有创建者与root才能够删除自己的目录或者文件;

1
2
3
> ls -dl /tmp
drwxrwxrwt 1 root root 4096 Oct 19 21:11 /tmp
-rw-rw-r-- 1 weiyigeek weiyigeek 0 10月 20 05:32 weiyigeek.txt

权限总结

描述: 设置和查看SUID/SGID/SBIT权限的方法,说明SUID是4、SGID是2、SBIT是1;

  • a.查看特殊权限的方法,ls即可
    1
    2
    3
    SUID会在所属用户权限本应是x的地方显示s
    SGID会在所属用户组权限本应是x的地方显示s
    SBIT在其它用户权限本应是x的地方显示t
  • b.增加特殊权限的方法
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    # 注意点1.对于user/group/others没有x执行权限标准的文件对其赋予SUID/SGID/SBIT时,采用S与T标识表示空的;
    > chmod 7644 /tmp/weiyigeek.txt
    > ll /tmp/weiyigeek.txt
    -rwSr-Sr-T 1 weiyigeek weiyigeek 0 10月 20 05:32 /tmp/weiyigeek.txt

    # 注意点2.可以采用符号法来处理,其中SUID为u+s/SGID为g+s/SBIT为o+t;
    > chmod u=rwxs,go=x weiyigeek.txt
    > ll /tmp/weiyigeek.txt
    -rws--x--x 1 weiyigeek weiyigeek 0 10月 20 05:32 /tmp/weiyigeek.txt

    # 注意点3.文件权限中加上GSID与SBIT;
    > chmod g+s,o+t weiyigeek.txt;ll /tmp/weiyigeek.txt
    -rws--s--t 1 weiyigeek weiyigeek 0 10月 20 05:32 /tmp/weiyigeek.txt
    !(WeiyiGeek)[https://images2015.cnblogs.com/blog/944804/201702/944804-20170227210713766-45125491.png]
  • c.目录取消特殊权限的方法
    1
    chmod 000755 /home/stack/test
    !(WeiyiGeek.取消特殊权限的方法)[https://images2015.cnblogs.com/blog/944804/201702/944804-20170227211817188-1660821872.png]
  • d.查找系统中的具有特殊权限的文件和目录
    1
    find / -perm /7000

Q: 权限与命令之间的关系?

(1) 让用户能够进入某目录成为 “可工作目录” 的基本权限为 x , 如需查询该目录内的文件名还需要 r 权限
(2) 让用户在某个目录内读取一个文件的基本权限的目录至少具有 x 权限而文件至少具有 r 权限才行;
(3) 让用户修改一个文件的即基本权限,目录至少 x 权限, 文件至少 r,w 权限;
(4) 让用户创建一个文件的基本权限, 目录至少具有w与x权限
(5) 让用户进入某目录并执行该目录下的某个命令权限,对于目录需要 x 权限,对于文件至少 x 权限;

简单示例: 当用户weiyigeek执行 cp /dir1/demo.txt /dir2 命令时候所需要的权限

1
2
3
/dir1 :x
demo.txt : r
/dir2 : w/x