在学习的过程中,我发现自己对操作系统的还是有很多不足的。以下说法不一定正确。
操作系统是依靠CPU去处理各个时刻发生的事情,他就像个准确无比的操作员,按照我们操作指令去做事情。他依靠于寄存器、内存和时钟去完成我们下达的指令。因此,我们需要知道CPU的工作原理是什么。以下是从别的地方找到的参照。
CPU(中央处理器)是计算机系统中的核心组件,负责执行指令和处理数据。CPU的工作原理可以简单概括为以下几个步骤:
1. 取指:CPU从内存中读取下一条指令,通过程序计数器确定下一条指令的地址。
2. 解码:CPU解码并识别取出的指令,确定指令的操作类型和操作数。
3. 执行:根据指令的操作类型,CPU执行相应的操作,可能涉及数据的读取、运算、存储和控制流的改变。
4. 访存:如果指令需要读取或写入内存中的数据,CPU将与内存进行交互,将数据从内存读取到寄存器或将数据从寄存器写入内存。
5. 写回:执行结果将被写回到寄存器文件或内存中,以便后续指令使用。
这些步骤按照时钟周期进行,时钟周期是CPU中的基本时间单位,每个时钟周期内执行一个步骤。在每个时钟周期内,CPU将指令和数据从内存中加载到寄存器中进行操作,以提高数据的访问速度。
CPU还包括多个核心(核心数取决于具体的CPU型号),每个核心都可以独立执行指令,实现并行处理。同时,现代CPU还会应用一些技术来提高性能,如流水线技术、超线程、多级缓存等。
总体而言,CPU的工作原理是通过不断取指、解码、执行和访存的过程,按照指令集架构(如x86、ARM等)执行程序中的指令,从而完成计算机的各种任务。
作者:无忧
链接:https://www.zhihu.com/question/40571490/answer/3047532781
寄存器对于目前的我还不用理解深刻,最多在用crash工具时需要对这个部分有着自己的理解。既然如此,我们将重点放在内存上面。对于cpu而言,硬盘的内存空间非常的大,而cpu不可能全部的都去接受。CPU32位地址线的寻址范围是2^32字节,即4G内存空间。这是因为32位操作系统能够寻址的地址编号范围是1到2的32次方,而每一个地址都是指的内存中一个字节的地址。因此,32位操作系统能够支持访问的最大内存空间是2的32次方字节,也就是4G的内存空间。而这个4G的空间又被分割成两个部分分别是3G用户态空间和1G内核态空间。置于CPU最底层是怎么在电路层面上去跑的,我就不清楚,这就认为我们已经知道这个部分了。
CPU只有一个4G空间,怎么去访问远超于4G的空间,并且兼容更多的设备就是我们需要思考的问题。中断技术、DMA、PCIe等技术都是在利用这有限的空间去实现我们要做的事。
首先,内存是一个至关重要的一个部分。这个内存概念要弄清楚cache、RAM、硬盘内存。这个点千万不能忘记了,要弄清楚我们到底对什么内存的基础上进行讨论。可以说,对内存理解的大成几乎理解一小半的操作系统了。在深入理解linux内核这本书有至少三分之一在讨论内存相关的知识。
这个在关于RAM进行展开。
我们知道在操作系统中有三种地址,逻辑地址、线性地址和物理地址。
逻辑地址指的是包含在机器语言指令中用来指定一个操作数或者一条指令的地址。
线性地址一般就是我们现在用的地址了,也就是线性地址。
物理地址