操作系统(一)

操作系统学习记录:
1.什么是操作系统?

简而言之:管理和控制计算机   硬件与软件资源    的计算机程序。具体结构就如下图所示。

 

操作系统(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。 操作系统是用户和计算机的接口,同时也是计算机硬件和其他软件的接口。操作系统的功能包括管理计算机系统的硬件、软件及数据资源,控制程序运行,改善人机界面,为其它应用软件提供支持,让计算机系统所有资源最大限度地发挥作用,提供各种形式的用户界面,使用户有一个好的工作环境,为其它软件的开发提供必要的服务和相应的接口等。实际上,用户是不用接触操作系统的,操作系统管理着计算机硬件资源,同时按照应用程序的资源请求,分配资源,如:划分CPU时间,内存空间的开辟,调用打印机等。

其中,内核态也称管态和核心态。

 

2.计算机组成与运行机理是怎样的?

CPU,内部存储器(Memory)和输入/输出(I/O)设备合称为电子计算机三大核心部件。

操作系统与曹祖系统内核硬件密切相关,极大的扩展了计算机指令集并管理计算机资源,简单的PC结构如下所示。

3.CPU作用? 

简单说:它的功能主要是   解释计算机指令以及处理计算机软件中的数据

CPU的结构主要由运算器、控制器、寄存器三大块组成。

其中控制单元完成数据处理整个过程中的调配工作,逻辑单元则完成各个指令以便得到程序最终想要的结果,存储单元就负责存储原始数据以及运算结果。浑然一体的配合使得CPU拥有了强大的功能,可以完成包括浮点、多媒体等指令在内的众多复杂运算。

中央处理器(CPU,CentralProcessingUnit)是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心( Control Unit)。它的功能主要是解释计算机指令以及处理计算机软件中的数据。 中央处理器主要包括运算器(算术逻辑运算单元,ALU,Arithmetic Logic Unit)和高速缓冲存储器(Cache)及实现它们之间联系的数据(Data)、控制及状态的总线(Bus)。

 

逻辑部件

  英文Logic components;运算逻辑部件。可以执行定点或浮点算术运算操作、移位操作以及逻辑操作,也可执行地址运算和转换。

  寄存器

  寄存器部件,包括寄存器、专用寄存器和控制寄存器。 通用寄存器又可分定点数和浮点数两类,它们用来保存指令执行过程中临时存放的寄存器操作数和中间(或最终)的操作结果。 通用寄存器是中央处理器的重要部件之一。

  控制部件

  英文Control unit;控制部件,主要是负责对指令译码,并且发出为完成每条指令所要执行的各个操作的控制信号。

补充:

3.1 CPU的逻辑单元

  更细一点,从实现的功能方面看,CPU大致可分为如下八个逻辑单元:

  指令高速缓存,俗称指令寄存器 : 它是芯片上的指令仓库,有了它CPU就不必停下来查找计算机内存中的指令,从而大幅提高了CPU的运算速度。

  译码单元,俗称指令译码器 : 它负责将复杂的机器语言指令解译成运算逻辑单元(ALU)和寄存器能够理解的简单格式,就像一位翻译。

  控制单元 : 既然指令可以存入CPU,而且有相应指令来完成运算前的准备工作,背后自然有一个扮演推动作用的角色——它便是负责整个处理过程的操作控制器。具体流程为根据来自译码单元的指令,它会生成控制信号,告诉运算逻辑单元(ALU)和寄存器如何运算、对什么进行运算以及对结果进行怎样的处理。

  寄存器 : 它对于CPU来说非常的重要,除了存放程序的部分指令,它还负责存储指针跳转信息以及循环操作命令,是运算逻辑单元(ALU)为完成控制单元请求的任务所使用的数据的小型存储区域,其数据来源可以是高速缓存、内存、控制单元中的任何一个。

  逻辑运算单元(ALU) : 它是CPU芯片的智能部件,能够执行加、减、乘、除等各种命令。此外,它还知道如何读取逻辑命令,如或、与、非。来自控制单元的讯息将告诉运算逻辑单元应该做些什么,然后运算单元会从寄存器中间断或连续提取数据,完成最终的任务。

  预取单元 : CPU效能发挥对其依赖非常明显,预取命中率的高低直接关系到CPU核心利用率的高低,进而带来指令执行速度上的不同。根据命令或要执行任务所提出的要求,何时时候,预取单元都有可能从指令高速缓存或计算机内存中获取数据和指令。当指令到达时,预取单元最重要的任务就是确保所有指令均排列正确,然后发送给译码单元。

  总线单元 : 它就像一条高速公路,快速完成各个单元间的数据交换,也是数据从内存流进和流出CPU的地方

  数据高速缓存 : 存储来自译码单元专门标记的数据,以备逻辑运算单元使用,同时还准备了分配到计算机不同部分的最终结果。

3.2 cpu的工作原理:

  我们都知道CPU的根本任务就是执行指令,对计算机来说最终都是一串由“0”和“1”组成的序列。CPU从逻辑上可以划分成3个模块,分别是控制单元、运算单元和存储单元,这三部分由CPU内部总线连接起来。如下所示:

控制单元:控制单元是整个CPU的指挥控制中心,由指令寄存器IR(InstrucTIon Register)、指令译码器ID(InstrucTIon Decoder)和操作控制器OC(OperaTIon Controller)等,对协调整个电脑有序工作极为重要。它根据用户预先编好的程序,依次从存储器中取出各条指令,放在指令寄存器IR中,通过指令译码(分析)确定应该进行什么操作,然后通过操作控制器OC,按确定的时序,向相应的部件发出微操作控制信号。操作控制器OC中主要包括节拍脉冲发生器、控制矩阵、时钟脉冲发生器、复位电路和启停电路等控制逻辑。

  运算单元:是运算器的核心。可以执行算术运算(包括加减乘数等基本运算及其附加运算)和逻辑运算(包括移位、逻辑测试或两个值比较)。相对控制单元而言,运算器接受控制单元的命令而进行动作,即运算单元所进行的全部操作都是由控制单元发出的控制信号来指挥的,所以它是执行部件。

  存储单元:包括CPU片内缓存和寄存器组,是CPU中暂时存放数据的地方,里面保存着那些等待处理的数据,或已经处理过的数据,CPU访问寄存器所用的时间要比访问内存的时间短。采用寄存器,可以减少CPU访问内存的次数,从而提高了CPU的工作速度。但因为受到芯片面积和集成度所限,寄存器组的容量不可能很大。寄存器组可分为专用寄存器和通用寄存器。专用寄存器的作用是固定的,分别寄存相应的数据。而通用寄存器用途广泛并可由程序员规定其用途,通用寄存器的数目因微处理器而异。这个是我们以后要介绍这个重点,这里先提一下。

 

3.3 总结一下,CPU的运行原理就是:

  1、(读)取指令:CPU的控制器从内存读取一条指令并放入指令寄存器。指令的格式一般是这个样子滴:

  cpu的基本结构及其工作原理

操作码就是汇编语言里的mov,add,jmp等符号码;操作数地址说明该指令需要的操作数所在的地方,是在内存里还是在CPU的内部寄存器里。

  2、译码指令(解码):指令寄存器中的指令经过译码,决定该指令应进行何种操作(就是指令里的操作码)、操作数在哪里(操作数的地址)。

  3、 执行指令,分两个阶段“取操作数”和“进行运算”。

  4、 修改指令计数器,决定下一条指令的地址。

  

cpu的基本结构及其工作原理

通用寄存器:保存变量和临时结果。

程序计数器(prigram counter):程序计数器会指示下一条需要从内存中提取指令的地址。提取指令后,程序计数器将更新为下一条需要提取的地址。

堆栈指针(stack pointer):它指向内存中当前栈的顶端。堆栈指针会包含输入过程中的参数,局部变量以及没有保存在寄存器中的临时变量。

PSW(program status word):程序状态器寄存器,该寄存器由操作系统维护的8字节类型的数据集合。它会跟踪当前系统的状态。用户可以读取PSW,通常只能写入某些字段。PSW在系统调用和I/O中起着重要作用。

在时间多路复用(time multiplexing)(寄存器)的CPU中,当操作系统正在运行的一个程序被中断而运行另外一个程序时候,每当操作系统停止运行一个程序时,操作系统会保存所有寄存器的值,以便与后续重新运行该程序。

许多现代的CPU都具有同时读取多条指令的机制。

例如,一个CPU可能会有单独访问,解码和执行单元,所以,当CPU 执行第N条指令时,还可以对N+1条指令解码,还可以读取N+2条指令。像这样的组织形式被称为 流水线(pipeline)。

比流水线更先进的设计是  超标量(superscalar)CPU,超标量CPU设计如下

在超标量的设计中,存在多个被执行单元。例如,一个用来进行整数的计算,一个用来浮点计算,一个用来布尔计算。2个或者更多的指令被一次性取出,解码并放入缓冲区,直至他们执行完毕。只要一个执行单元空闲,就会去检查缓冲区是否有可以执行的指令。如果有,就把指令从缓冲区中取出并执行。

2个或者多个指令被一次性取出,解码并放入缓冲区中,直至执行完毕。

带有L2缓存的4核芯片,具体结构如下所示

4.内存

理想情况,内存比执行一条指令要快,从而不会拖慢CPU执行效率,足够大而且便宜。但实际情况是顶层的存储器速度最高,容量最小,但成本非常高,层级结构越向下,其访问效率越慢,容量越大,造价也越便宜

5.寄存器

存储器顶层是CPU中的寄存器,它是和CPU用一样的材质支撑,因此访问速度和CPU一样。程序必须在软件中自行管理

6.高速缓存

寄存器下面就是高速缓存,如上图所示,它由多数硬件控制。主存被分割成高速缓存行(cache line)为64字节,内存地址的0-63对应高速缓存行 0 ,地址63-127对应高速缓存行1,等等。使用最频繁的高速缓存行保存在CPU内部或者靠近CPU的高速缓存行中。 如果当程序需要从内存中读取关键字的时候,高速缓存行的硬件会检查所需要的高速缓存行是否在高速缓存中,如果在的话,就发生了 高速缓存命中(cache hit)。(这个时候,高速缓存满足了该请求,并且就不会通过总线将内存请求发送到主内存,从而减少访问时间。这个差别是10ns与1ns的差别,至少将近或者超过10倍的速度。距离这个时候,我们在实际的应用场景中,往往更加关注内存对齐,和一些大型数组或者图的操作是否是否满足最优的访问速度的要求。实际,我们往往关注是发生在L1 L2 cache上,还是LL cache上)。

这里分为2种情况,

情况一:

正常调用,程序所需要的高速缓存小于高速缓存大小,可以直接使用高速缓存高效完成任务。

情况二:程序所需要的高速缓存大于高速缓存大小,此时,需要解决一下几个问题。

1.何时把新的内容放进缓存?

2.把新的内容放在缓存行哪一行?

3.在需要空闲空间时,应该把哪块内容从缓存中移除?

4.把移除的内容放到哪里较大的存储器何处?

对于CPU缓存行的主存缓存行,当有缓存未命中时,就会调入新的新的内容,通常通过所引用内存地址的高位计算应该使用的缓存行。

缓存是一种较为高效的设计,现代CPU分为2种缓存,第一级缓存为L1 cache(典型大小为16KB)位于CPU内部,用来将已经解码的指令调入CPU的执行引擎。对于频繁使用的关键字,多数芯片会有第二个L1 cache。另外还存在L2 cache,用来存放最近使用过的关键字,一般为MB大小。L1 cache 与 L2 cache 最大的不同在是否存在延迟。L2 cache 会有1--2个时钟周期的延时。

时钟周期,振荡器2个脉冲之间的时间量为时钟周期,决定CPU速度/处理器速度。

4GHz处理器 (千兆赫GHz)  对应时间 0.25ns

7 主存

主存(RAM Random Access Memory),是内存的主要组成部分。60年代主存材质使用微信的科刺花铁氧体磁芯作为主存储器,因此又称为核心存储器。所有不能在高速缓存中的内存访问都会转存到主存中去。

除了主存外还有ROM(Read Only Memory),属于非易失性随机存取存储器,村后内容不会被修改。计算机的引导架子啊模块程序也即bootstrap也存放在其中。

EEPROM(Electrically Erasable PROM)和闪存(flash memory)属非易失性。与ROM相反,可以用于上电擦除与重写,写入时间比RAM长,通常用他们通过重写字段来纠正程序中出现的错误。

8 磁盘

与RAM相比,每个二进制位成本低了2个数量级,但容量大2个数量级别。磁盘文艺问题就是随机访问大约满了3个数量级,原因是由磁盘自身结构决定。

虚拟内存机制:

作用:可使得到期望运行的存储空间大于实际的物理存储空间。

实现方法:将程序放到磁盘上,而将主存作为一部分缓存,用来保存使用最频繁的程序,该机制需要快速的实现内存地址的映射,将程序生成的地址转换成有关字节在RAM中的物理地址,这种映射由CPU中的存储管理单元(MMU,Memory Management Unit)完成。

缓存和MMU对系统性能很重要,在多道程序系统中,从一个程序切换到另一个程序的机制称为 上下文切换(context switch),对来自缓存中的资源进行修改并把其写回磁盘。

9 I/O

任何复杂的东西都可以加一层代理来解决,这是计算机或者人类社会很普世的一个解决方案。

每种类型的设备控制器都是不同的,所以需要不同的软件进行控制。专门与控制器进行信息交流,发出命令处理指令接收响应的软件,称为设备驱动程序(device driver)。每个控制器厂家都应该针对不同的操作系统提供不同的设备驱动程序。

为了使设备驱动程序能够工作,必须把它安装在操作系统中,这样能够使它在内核态中运行。要将设备驱动程序装入操作系统,一般有三个途径

第一个途径是将内核与设备启动程序重新连接,然后重启系统。这是UNIX系统采用的工作方式。

第二个途径是在一个操作系统文件中设置一个入口,通知该文件需要一个设备驱动程序,然后重新启动系统。在重新系统时,操作系统回寻找有关的设备启动程序并把它装载,这是 Windows采用的工作方式

第三个途径是操作系统能够在运行时接收新的设备驱动程序并立刻安装,无需重启操作系统,这种方式采用的少,但是正变得普及起来。热插拔设备,比如USB和IEEE 1394都需要动态可装载的设备驱动程序。

10 总线

X86系统架构如下:

上图中的 x86 系统包含很多总线,高速缓存、内存、PCle、PCI、USB、SATA和 DMI,每条总线都有不同的传输速率和功能。操作系统必须了解所有的总线配置和管理。其中最主要的总线是PCIe(Peripheral Component Interconnect Express)总线。

PCle选用了串行总线架构(serial bus architecture),并通过单个连接(称为通道)发送消息中的所有比特数据,就像网络数据包一样。这样做会简化很多,因为不再确保所有32位数据在同一时刻准确到达相同的目的地。通过将多个数据通路并行起来,并行性仍可以有效利用。例如,可以使用32条数据通道并行传输32条消息。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大江东去浪淘尽千古风流人物

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值