From c030349cf3a028749e7e0aa4e702c8ac58540a5b Mon Sep 17 00:00:00 2001 From: zouyi <1530193044@qq.com> Date: Sun, 13 May 2018 13:38:32 +0800 Subject: [PATCH] bg:add principle chapter principle.md (#4) --- zh-cn/background/principle.md | 172 ++++++++++++++++++++++++++++++++++ 1 file changed, 172 insertions(+) create mode 100644 zh-cn/background/principle.md diff --git a/zh-cn/background/principle.md b/zh-cn/background/principle.md new file mode 100644 index 0000000..f079f10 --- /dev/null +++ b/zh-cn/background/principle.md @@ -0,0 +1,172 @@ +# 微机原理 + +在本篇文章中,我们将内容分为微机结构概述,操作系统概述以及计算机硬件概述三个部分对我们研究 linux 0.11 版本所需要的知识进行简要的整理,以便我们更好的理解 0.11 版本内核的具体内容。 + +## 微机结构概述 + +微机原理主要包括了计算机体系结构、微处理指令系统、汇编语言设计以及介绍计算机系统的各组成部分等内容。在计算机发展过程中,其系统的组成越来越复杂,性能越来越强大。对用户而言功能的使用越来越容易,但对系统的研究者而言了解计算机的组成是十分重要的,这有利于我们更好的使用计算机系统并完善其功能,提升其性能。在研究 0.11 版本内核的过程中,我们也需要有一些基础知识进行铺垫,这也是本篇文章的目的所在。 + + ![System](https://raw.githubusercontent.com/zouyi9807/lad-book-image/master/bc-system.png) + +图一:微机系统的基本组成 + +>1 微型计算机概述 +>>1.1 微处理器 + +微处理器是微型计算机进行控制和处理的核心,一般使用 CPU(中央处理单元)表示微处理器。 + +微处理器(缩写:µP 或 uP)主要由算术逻辑单元( ALU ),控制部件和寄存器三部分组成。 + +* ALU:进行算数和逻辑运算。 + +* 控制部件:产生一定的时序控制信号,控制指令的执行。 + +* 寄存器:存放指令、操作数、中间结果、地址信息等。 + +>>>微处理器的发展和分类 + +| 名称 | 版本 | 日期 | 说明 | 典型代表 | +| ----- | ----- | ---- | ---- | -------- | +| 4位或低档8位微处理器 | 第一代 | 1971~1973年 | 指令系统简单,运算功能单一 。但价格低廉,使用方便。| Intel 公司的 Intel 4004 和 Intel 8008 | +| 中高档8位微处理器 | 第二代 | 1974~1978年 |具有多种寻址方式,指令系统更加完善。并且已经具有了典型的计算机体系结构,并具有中断、直接存储器存取等控制功能。在设计上考虑了机器间兼容性、端口的标准化和通用性。软件方面的支持包括汇编、高级语操作系统。 | Intel 公司的Intel 8080, Motorola 公司的 MC6809,Zilog 公司的 Z-80 | +| 16位微处理器 | 第三代 | 1978~1983年 |指令系统十分丰富,有多种寻址方式以及数据处理形式,采用多级中断。具有完善的操作系统 | Intel 公司的 Intel 8086, Motorola 公司的 MC68000 , Zilog 公司的 Z-8000 | +| 32位高档微处理器 | 第四代 | 1983~1993年 |内部采用流水线控制。并行操作取指令、指令译码、内存管理、执行指令和总线访问。| Intel 公司的 Intel 80386, Motorola 公司的 MC68020,Zilog 公司的 Z-80000 | +| 准64位高档微处理器 | 第五代 | 1993~1995年 | 采用了全新的体系结构,内部采用超标量流水线设计,在微处理器内部有并行工作的U、V两条流水线;Cache 还采用了回写技术,节省了大量处理器时间;通过分支指令预测技术,实现动态预测和分支程序的指令流向,节省了大量处理器判别分支程序的时间 | Intel 公司的Pentium, IBM、 Motorola、 Apple联合推出的 Power PC; AMD 公司的 K5 +| 64位高档微处理器 | 第六代 | 1995~至今 | 性能优异,可以很好的适应当今时代对于多媒体,网络,通信等多方面的需求 | Intel 公司的 Pentium PRO(P6)以及 Pentium 4 | + +>>1.2 微型计算机 + +微型计算机(简称:微机,微型机)一般来说是以微处理器作为 CPU 的计算机,也被称作微型机。 + + ![CPU](https://raw.githubusercontent.com/zouyi9807/lad-book-image/master/bc-cpu.png) + +图二:微型计算机的组成 + +微型计算机主要由微处理器、主存储器、 I/O 接口" -> " I/O 接口、总线四部分组成。 + +* 微处理器:详见 1.1 微处理器部分介绍,是微型计算机执行指令,进行控制和运算处理的核心部件。 + +* 主存储器:存储部件,用来存储正在使用的程序和数据。 + +* I/O接口:微型计算机和外部设备之间通过 I/O 接口建立联系和数据传输。 + +* 总线:微处理器和其他部件之间的通路。可细分为:地址总线( AB,用于传输地址)、数据总线( DB,用于传输数据)、控制总线( CB,用于控制信息)。 + +>>1.3 微型计算机系统 + +微型计算机系统可分为硬件系统和软件系统,并且在硬件系统和软件系统相互配合的条件下才能有效地工作。 + +* 硬件系统组成包括:微机、电源、辅助电路和外部设备(外部设备:键盘、鼠标、显示器等)。 + +* 软件系统包括:系统软件、数据库管理软件、各类应用程序和编译程序。 + +>>>微型计算机的发展和分类 + +| 名称 | 版本 | 时间 | 说明 | +| ----- | ----- | ---- | ---- | +| 电子管计算机 | 第一代 | 1964年~20世纪50年代后期 |计算机采用晶体管为基本器件,逐步转型为工业产品 | +| 晶体管计算机 | 第二代 | 20世纪50年代中期~20世纪70年代前期 | 电子管逐渐被晶体管取代,机体缩小功耗降低,运算速度和可靠性提高,成本降低| +| 集成电路计算机 | 第三代 | 20世纪60年代中期~20世纪70年代前期 | 开始采用集成电路,体积功耗进一步下降,性能进一步提高,应用领域进一步扩大 | +| 大规模/超大规模集成电路计算机 | 第四代 | 120世纪70年代~ | 采用大规模和超大规模的集成电路作为基本器件,芯片集成度和微处理器工作速度发展迅速,计算机的应用已经十分普及 | + +>>>微型计算机系统的主要技术指标 + +微机的发展过程中,性能是一个重要的评价因素。而其性能的优劣,主要是通过它的硬件组成、系统的结构和总线、软件配置以及外部设备等因素决定的。具体的性能我们可以参考以下的技术指标: + +>>>>(1)字长 + +字长是指微处理器的内部一次可以并行处理二进制代码的位数,其内部寄存器的寄存器数据总线宽度和 CPU 内部数据总线宽度是一致的。字长越长其数据表示的精度越高,速度越快。 + +>>>>(2)主存容量 + +主存容量是主存储器所能够存储的二进制信息的总量,主存储容量的大小决定了微机处理信息时对于数据的容纳能力。主存储容量越大,处理信息时速度就越快,数据交换的次数也就越少。 + +常用单位:字节(Byte);其他单位:KB、MB、GB、TB。 + +换算关系:1 KB = 1024 B; 1 MB = 1024 KB; 1 GB = 1024 MB; 1 TB = 1024 GB 。 + +>>>>(3)指令执行时间 + +指计算机执行一条指令所需要时间的平均值,该项数据反映了执行一条指令的速度快慢。指令执行时间的快慢取决于两个方面:微机工作的时钟频率以及指令系统的设计, CPU 体系结构等。 + +微处理器工作时钟频率可用单位位兆赫兹( MHz )或吉赫兹( GHz )。 + +微处理器执行速度指标为 MIPs ( Millions of Instructions Per Second ,即每秒运行多少百万条指令)。 + +>>>>(4)系统总线 + +系统总线是微机系统中连接各个功能部件的公共数据通道。其支持的数据传输位数和时钟频率是影响整机性能的重要指标。数据传输位数越多,总线的工作时钟频率以及信息吞吐率越高,性能就越强。 + +系统总线标准:ISA、 EISA、 PIC、 PIC-Express 等。 + +>>>>(5)外部设备 + +计算机的输入、输出、存储都由外部设备来完成,外部设备的速度快慢、容量大小、分辨率高低等都影响着系统的整体性能。 + +>>>>(6)系统软件 + +软件也是计算机系统的重要组成部分。硬件系统想要正常使用必须要有软件系统的支持。基本的要求如:Linux、 Dos、 Window 等操作系统。系统的功能是否强大,软件的功能是否齐全,对用户的需求支持(如多用户,多任务等)是否完善,都是微机系统性能能否得到充分利用的重要条件。 + +## 操作系统概述 + +操作系统( Operating System ,简称 OS )是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。且多数的操作系统都使用某些基本概念,诸如进程,地址空间以及文件等。接下来我们会简要分析一下其中比较重要的概念。而我们本次研究的 Linux 系统内核也需要我们对操作系统有一定的了解。只有了解了操作系统我们才能更好的去理解 Linux 0.11 版本内核的具体内容。 + +### 进程 + +在进程模型中,计算机上所有可运行的软件,一般也包括操作系统,被组织成若干顺寻进程,简称进程。提到进程就不能不提进程的地址空间( address space ),从某个最小的存储位置 (一般为0)达到某个最大存储位置的列表。进程可以在每个地址空间中进行读写。在地址空间中,可以存放可执行程序,以及程序的数据和堆栈。与进程相关的还有资源集,一般包括寄存器(含有堆栈指针和程序计数器)、打开文件和有关进程的清单、突出的报警,以及程序运行所需要的其他信息。 + +### 地址空间 + +每台计算机上都需要有一些主存,用来保存正在执行的程序。在一些简单的操作系统中,内存中一次只允许运行一个程序。如果想要运行第二个程序,那么就必须将第一个程序移出内存,再把第二个程序装入内存。在较为复杂的操作系统中虽然可以同时运行多个程序,但也会有一种保护机制的存在来避免他们之间相互干扰(这种形式虽然一般都为硬件形式,但其由操作系统掌控)[1]。上述内容对计算机主存的管理保护进行了一些观点上的阐述,除此之外还有一个很重要的管理方式就是管理进程的地址空间。一般而言,一个进程拥有的最大地址空间小于主存,通过这种方式我们可以保证进程可以有足够的地址空间,并且内存也可以有足够的容量容纳下进程。 + +### 文件 + +文件系统是计算机操作系统的另一个重要的概念。操作系统的一个很重要的功能就是隐藏磁盘和其他 I/O 设备的细节特性,并且提供给用户以及开发人员一个清晰,易用的文件模型。为了提供保存文件的地方,大部分操作系统都支持目录的概念,目录项可以是文件或者目录,这样就产生了层次结构——文件系统。 + +进程和文件层次都可以组成树状结构,但进程的结构一般不超过三层,文件的树状结构则会更多。且文件的目录层次可以存在非常久,但进程树的层次结构一般最多存在几分钟。 + +在UNIX中还有一个特殊文件的概念,其目的为了使 I/O 设备看起来像文件一样。这样就可以使 I/O 设备就像系统读写文件一样操作。有两类特殊文件:块特殊文件和字符特殊文件。 + +关于管道,是一种虚文件,可以链接两个进程。具体理解如下图所示: + +![Pipes](https://raw.githubusercontent.com/zouyi9807/lad-book-image/master/bc-pipes.png) + +### 输入/输出 + +所有计算机用来获取输入和产生输出的物理设备(如键盘、显示器、鼠标等)。这些设备的管理仍旧依靠操作系统,在操作系统中一般都包括一个 I/O 子系统来管理 I/O 设备。某些 I/O 软件是设备是独立的,可以应用在其他的 I/O 设备上。 I/O 软件的其中一部分,如驱动程序则是为某些特定的I/O设备设计的。 + +## 计算机硬件概述 + +操作系统与运行该操作系统的计算机硬件联系密切。操作系统扩展了计算机指令集并管理计算机的资源。从概念上来讲,一台简单的个人计算机可以抽象分为 CPU、存储器、视频控制器、键盘控制器、USB 控制器、硬盘控制器。 + +### 处理器 + +计算机的“大脑”,即 CPU,它从内存中取出命令并执行之。在每个 CPU 基本周期中。首先从内存中取出指令,解码以确定其类型和操作数,接着执行之,然后取指、解码并执行下一条指令。按照这一方式,程序被执行完成。 + +每个 CPU 都有其一套可执行的专门指令集。所有的CPU内都有一些用来保存的关键变量和临时数据的寄存器。通常在指令集中提供一些指令,用以将一个字从内存调入寄存器,以及将一个字从寄存器存入内存。 + +除此之外,多数计算机还有一些对程序员可见的专门寄存器,如程序计数器,它保存了将要取出的下一条指令的内存空间。在指令取出之后,程序计数器就被更新以便指向后面的指令。 + +另一个寄存器是堆栈指针,它指向内存的顶端。该栈含有已经进入但还没有退出的每个过程的一个框架。在一个过程中的堆栈框架中保存了有关的输入参数、局部变量以及那些没有保存在寄存器中的临时变量。 + +### 存储器 + +在任何一种计算机中的第二种主要部件都是存储器。存储器系统采用一种分层次的结构,如下图。顶层的存储器速度较高,容量较小。 + +![Menory](https://raw.githubusercontent.com/zouyi9807/lad-book-image/master/bc-memory.png) + +存储器系统的顶层是 CPU 中的寄存器,它们用与 CPU 相同的材料制成,所以和 CPU 一样快。其典型的存储容量是,在 32 位 CPU 中为 32\*32 位,而在64位CPU中为 64\*64 位。在这两种情形下,其存储容量都小于 1KB.程序必须在软件中管理这些寄存器。 + +下一层是高速缓存,它多数由硬件控制。主存被分割成高速缓存行。最常用的高速缓存行放置在 CPU 内部或者非常接近 CPU 的高速缓存中。当某个程序需要读取一个存储字时,高速缓存硬件检查总线把访问请求送往主存。 + +再往下一层是主存,这是存储器系统的主力。主存通常称为随即访问存储器。过去使用很小的可磁化的铁磁体制作主存。目前,存储器的容量在几百兆字节到若干吉字节之间,并且其容量正在迅速增长。所有不能在高速缓存中得到满足的访问请求都会转往主存。 + +### 磁盘 + +下一个层次是磁盘(硬盘)。在一个磁盘中有一个或多个金属盘片,从边缘开始有一个机械臂悬横在盘面上。信息写在磁盘上的一系列同心圆上。在任意一个给定臂的位置,每个磁头可以读取一段环形区域,称为磁道。把一个给定臂的位置上的所有磁道合并起来,组成了一个柱面。另外,很多计算机支持一种著名的虚拟内存机制,这种机制使得期望运行大于物理内存的程序成为可能,其方法是将程序放在磁盘上,而将主存作为一种缓存,用来保存最频繁使用的部分程序。这种机制需要快速地映像内存地址,以便把程序生成的地址转换为有关字节在 RAM 上的物理地址。这种映像由 CPU 中的一个部件,称为存储器管理单元来完成。 + +### 磁带 + +在存储器体系中的最后一层是磁带。这种介质经常用于磁盘的备份,并且可以保存非常大的量的数据集。在访问磁带前,首先要把磁带装到磁带机上,然后,磁带可能还需要向前绕转以便读取所请求的数据块。磁带的最大特点是每个二进制位的成本极其便宜,并且是可移动的,这对于为了必须离线存储的备份磁带而言,是非常重要的。 + +[1] 本句内容引用自 现代操作系统 Andrew S.Tanenbaum ( Vrije 大学) 著 陈向群 马洪兵 等译 第一章 第22页。