-
Notifications
You must be signed in to change notification settings - Fork 13
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
bg:add principle chapter principle.md #21
Open
shipujin
wants to merge
1
commit into
tinyclub:master
Choose a base branch
from
shipujin:dev
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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]。上述内容对计算机主存的管理保护进行了一些观点上的阐述,除此之外还有一个很重要的管理方式就是管理进程的地址空间。一般而言,一个进程拥有的最大地址空间小于主存,通过这种方式我们可以保证进程可以有足够的地址空间,并且内存也可以有足够的容量容纳下进程。 | ||
|
||
### 文件 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 文件还是文件系统? |
||
|
||
文件系统是计算机操作系统的另一个重要的概念。操作系统的一个很重要的功能就是隐藏磁盘和其他 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页。 |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
章节概要改为 ' 在本章节中,我们将分别从微机结构,操作系统以及计算机硬件这三个方面对微机原理进行剖析,为我们后续分析 0.11 版本内核提供基础的知识储备。'
如何?