22
33# 1.操作系统简介
44
5-
6-
75操作系统(Operating System, 简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是一种由引导程序(bootloader)启动并管理计算机中所有程序生命周期的系统程序。任何其他软件都必须在操作系统的支持下才能运行,操作系统能有效组织和管理系统中的各种软、硬件资源,合理组织计算机系统的工作流程并控制程序的执行,为用户提供一个良好的操作环境。 目前比较为人所知的操作系统有Microsoft的Windows系统、Apple的Mac及以Linux为内核的各种Linux发行版(Centos/Ubuntu等)。 现代计算机系统由一个或多个处理器、主存、打印机、键盘、鼠标、显示器、网络接口及各种输入\输出设备构成。
86
97作用: 它可以帮我们管理计算机的各种资源,协助我们完成各种复杂繁琐的任务。
9593
9694### 计算机硬件
9795
98- 从概念上讲,计算机的结构非常简单:首先布置一根总线,然后将各种硬件设备挂在总线上。所有的这些设备都有一个控制设备,外部设备都由这些控制器与CPU通信。而所有设备之间的通信均需通过总线:
96+ 计算机的硬件由大量的IC (Integrated Circuit,集成电路)组成。每块IC上都带有许多引脚。这些引脚有的用于输入,有的用于输出。
97+
98+ 从概念上讲,计算机的结构非常简单:首先布置一根总线,然后将各种硬件设备挂在总线上。所有的这些设备都有一个控制设备,外部设备都由这些控制器与CPU通信。而所有设备之间的通信均需通过总线,如果对总线做一个简单的概括,可以认为总线就是数字信号的集合,而这些信号被提供给计算机上的每块电路板:
9999
100100![ Image] ( https://raw.githubusercontent.com/CharonChui/Pictures/master/computer_hardware.jpg?raw=true )
101101
@@ -236,6 +236,10 @@ CPU(中央处理器)是计算机的大脑,它主要和内存进行交互,从
236236
237237
238238
239+ 为了驱动CPU运转,称为“时钟信号”的电信号必不可少。这种电信号就好像带有一个时钟,滴答滴答地每隔一定时间就变换一次电压的高低。输出时钟信号的元件叫作“时钟发生器”。时钟发生器中带有晶振,根据其自身的频率(振动的次数)产生时钟信号。时钟信号的频率可以衡量CPU的运转速度。这里使用的是2.5MHz(兆赫兹)的时钟发生器。最大时钟频率(maximum clock speed),也称主频,是影响处理器速度的决定性因素之一。时钟频率决定了执行一条指令所需要的时间,处理器的数据位宽也影响处理器的速度。
240+
241+
242+
239243CPU 主要由两部分构成:` 控制单元 ` 和 ` 算术逻辑单元(ALU) `
240244
241245- 控制单元:从内存中提取指令并解码执行
@@ -256,18 +260,20 @@ CPU 的内部由**寄存器、控制器、运算器和时钟**四部分组成,
256260
257261使用高级语言编写的程序会在编译后转化成机器语言,然后通过CPU内部的寄存器来处理。不同类型的CPU,其内部寄存器的数量,种类以及寄存器存储的数值范围都是不同的。根据功能的不同,我们可以将寄存器大致划分为八类:
258262
259- - *** 累加寄存器简称累加器(Accumulator, AC)*** :是一个通用寄存器。存储临时的执行运算的数据和运算后的数据 。
260- - *** 标志寄存器*** :存储运算处理后的CPU的状态。
263+ - *** 累加寄存器简称累加器(Accumulator Register , AC)*** :是一个通用寄存器。存储执行运算的数据和运算后的数据 。
264+ - *** 标志寄存器(Flag Register) *** :存储运算处理后的CPU的状态。
261265- *** 程序计数器(Program Counter, PC)*** :记录将要取出的指令的地址。存储下一条指令所在内存的地址。
262- - *** 基址寄存器*** :存储数据内存的起始地址。
263- - *** 变址寄存器*** :存储基址寄存器的相对地址。
264- - *** 通用寄存器*** :存储任意数据。
265- - *** 指令寄存器(Instruction Register, IR)*** :记录最近取出的指令。 存储指令,CPU取到的指令存放在处理器的一个寄存器中,这个寄存器就是指令寄存器。CPU内部使用,程序员无法通过程序对该寄存器进行读写操作。
266- - *** 堆栈寄存器(stack pointer )*** :目的是跟踪调用堆栈,存储栈区域的起始地址。指向内存中当前栈的顶端。堆栈指针会包含输入过程中的有关参数、局部变量以及没有保存在寄存器中的临时变量。
266+ - *** 基址寄存器(Base Register) *** :存储数据内存的起始地址。
267+ - *** 变址寄存器(Index Register) *** :存储基址寄存器的相对地址。
268+ - *** 通用寄存器(General Purpose Register) *** :存储任意数据。
269+ - *** 指令寄存器(Instruction Register, IR)*** :存储指令,CPU取到的指令存放在处理器的一个寄存器中,这个寄存器就是指令寄存器。CPU内部使用,程序员无法通过程序对该寄存器进行读写操作。
270+ - *** 堆栈寄存器(Stack Register )*** :目的是跟踪调用堆栈,存储栈区域的起始地址。指向内存中当前栈的顶端。堆栈指针会包含输入过程中的有关参数、局部变量以及没有保存在寄存器中的临时变量。
267271- ** 程序状态字寄存器(PSW(Program Status Word))** :这个寄存器是由操作系统维护的8个字节(64位) long 类型的数据集合。它会跟踪当前系统的状态。除非发生系统结束,否则我们可以忽略 PSW 。用户程序通常可以读取整个PSW,但通常只能写入其某些字段。PSW 在系统调用和 I / O 中起着重要作用。
268272
269273其中,程序计数器,累加寄存器,标志寄存器,指令寄存器和栈寄存器都只有一个,其他的寄存器一般有多个。
270274
275+ ![ Image] ( https://raw.githubusercontent.com/CharonChui/Pictures/master/cpu.jpg?raw=true )
276+
271277
272278
273279### 计算机执行的原理是: 取指执行
@@ -497,7 +503,23 @@ CPU 的内部由**寄存器、控制器、运算器和时钟**四部分组成,
497503
498504## 内存
499505
500- 内存就是一个字节数组。要读取(read)内存,必须制定一个地址(address),才能访问存储在那里的数据。要写入(write)或更新(update)内存,还必须制定要写入给定地址的数据。
506+ 通常所说的内存指的是计算机的主存储器(mainmemory)简称主存。主存通过控制芯片等与CPU相连,主要负责存储指令和数据。主存由可读写的元素构成,每个字节(1字节=8位)都带有一个地址编号。CPU可以通过该地址读取主存中的指令和数据,当然也可以写入数据。
507+
508+
509+
510+ 内存实际上是一种名为内存IC的电子元件。虽然内存IC包括DRAM、SRAM、ROM[ 插图] 等多种形式,但从外部来看,其基本机制都是一样的。内存IC中有电源、地址信号、数据信号、控制信号等用于输入输出的大量引脚(IC的引脚),通过为其指定地址(address),来进行数据的读写。
511+
512+ 下内存IC(在这里假设它为RAM)的引脚配置示例。虽然这是一个虚拟的内存IC,但它的引脚和实际的内存IC是一样的。VCC和GND是电源,A0~A9是地址信号的引脚,D0~D7是数据信号的引脚,RD和WR是控制信号的引脚(读取或写入)。将电源连接到VCC和GND后,就可以给其他引脚传递比如0或者1这样的信号。大多数情况下,+ 5V的直流电压表示1,0V表示0。
513+
514+ ![ 内存IC的引脚配置示例] ( https://raw.githubusercontent.com/CharonChui/Pictures/master/ram.jpg?raw=true )
515+
516+ 那么,这个内存IC中能存储多少数据呢?数据信号引脚有D0~D7共八个,表示一次可以输入输出8位(=1字节)的数据。此外,地址信号引脚有A0~A9共十个,表示可以指定0000000000~1111111111共1024个地址。而地址用来表示数据的存储场所,因此我们可以得出这个内存IC中可以存储1024个1字节的数据。因为1024=1K[ 插图] ,所以该内存IC的容量就是1KB。
517+
518+ 虽然内存的实体是内存IC,不过从程序员的角度来看,也可以把它假想成每层都存储着数据的楼房,并不需要过多地关注内存IC的电源和控制信号等。
519+
520+ ![ 1KB内存的模型] ( https://raw.githubusercontent.com/CharonChui/Pictures/master/1kb_memory.jpg?raw=true )
521+
522+
501523
502524内存包括主存(内存条,基于DRAM(动态RAM))与高速缓存(Cache,基于SRAM(静态RAM,静态RAM速度很快但是成本很高,所以用于在CPU内部充当缓冲))两部分。可能是由于Cache相较内存条容量很小,毕竟内存容量只计内存条大小,加上重要性也不及内存条,一般人或许不知道Cache,所以就忽略了高速缓存Cache,直接将主存--内存条等同了内存吧。计算器内存条采用的是DRAM(动态随机存储器),即计算机的主存。通常所说的内存容量即指内存条DRAM的大小。
503525
0 commit comments