⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 linux kernel(

📁 一个操作系统必须和作为它的基础的硬件系统紧密配合。操作系统需要使用一些只有硬件才能提供的功能。为了完整的了解Linux
💻
📖 第 1 页 / 共 5 页
字号:
    width=554></P>
    <P align=justify>微处理器可以执行算术运算如加、乘和除,也可以执行逻辑操作例如“</FONT><FONT 
    size=3>X</FONT><FONT face=宋体 lang=ZH-CN size=3>是否大于</FONT><FONT 
    size=3>Y</FONT><FONT face=宋体 lang=ZH-CN size=3>”。</P>
    <P 
    align=justify>处理器的执行由外部时钟控制。这个时钟,即系统时钟,对处理器产生稳定的时钟脉冲,在每一个时钟脉冲里,处理器执行一些工作。例如,处理器可以在每一个时钟脉冲里执行一条指令。处理器的速度用系统时钟的频率来描述。一个</FONT><FONT 
    size=3>100Mhz</FONT><FONT face=宋体 lang=ZH-CN size=3>的处理器每秒钟接受到</FONT><FONT 
    size=3>100</FONT><FONT face=宋体 lang=ZH-CN size=3>,</FONT><FONT 
    size=3>000</FONT><FONT face=宋体 lang=ZH-CN size=3>,</FONT><FONT 
    size=3>000</FONT><FONT face=宋体 lang=ZH-CN size=3>次时钟脉冲。用时钟频率来描述</FONT><FONT 
    size=3>CPU</FONT><FONT face=宋体 lang=ZH-CN 
    size=3>的能力是一种误解,因为不同的处理器在每一次时钟脉冲中执行的工作量不同。虽然如此,如果所有的条件同等,越快的时钟频率表示处理器的能力越强。处理器执行的指令非常简单,例如:“把内存位置</FONT><FONT 
    size=3>X</FONT><FONT face=宋体 lang=ZH-CN size=3>的内容读到寄存器</FONT><FONT 
    size=3>Y</FONT><FONT face=宋体 lang=ZH-CN 
    size=3>中“。寄存器是微处理器的内部存储空间,用来存储数据并进行操作。执行的操作可能使处理器停止当前操作而转去执行内存中其他地方的指令。正是这些微小的指令集合在一起,赋予现代的微处理器几乎无限的能力,因为它每秒可以执行数百万甚至数十亿的指令。</P>
    <P align=justify> </P>
    <P 
    align=justify>执行指令时必须从内存中提取指令,指令自身也可能引用内存中的数据,这些数据也必须提取到内存中并在需要的时候保存到内存中去。</P>
    <P align=justify> </P>
    <P align=justify>一个微处理器内部寄存器的大小、数量和类型完全决定于它的类型。一个</FONT><FONT size=3>Intel 
    80486</FONT><FONT face=宋体 lang=ZH-CN size=3>处理器和一个</FONT><FONT size=3>Alpha 
    AXP</FONT><FONT face=宋体 lang=ZH-CN size=3>处理器的寄存器组完全不同。另外,</FONT><FONT 
    size=3>Intel</FONT><FONT face=宋体 lang=ZH-CN size=3>是</FONT><FONT 
    size=3>32</FONT><FONT face=宋体 lang=ZH-CN size=3>位宽而</FONT><FONT size=3>Alpha 
    AXP</FONT><FONT face=宋体 lang=ZH-CN size=3>是</FONT><FONT 
    size=3>64</FONT><FONT face=宋体 lang=ZH-CN 
    size=3>位宽。但是,一般来讲,所有特定的处理器都会有一些通用目的的寄存器和少量专用的寄存器。大多数处理器拥有以下特殊用途的专用的寄存器:</P>
    <P align=justify> </P></FONT><FONT size=3>
    <P align=justify>Program Counter</FONT><FONT face=宋体 lang=ZH-CN 
    size=3>(</FONT><FONT size=3>PC</FONT><FONT face=宋体 lang=ZH-CN 
    size=3>)程序计数器</P>
    <P align=justify>这个寄存器记录了下一条要执行的指令的地址。</FONT><FONT size=3>PC</FONT><FONT 
    face=宋体 lang=ZH-CN size=3>的内容在每次取指令的时候自动增加。</P></FONT><FONT size=3>
    <P align=justify>Stack Pointer</FONT><FONT face=宋体 lang=ZH-CN 
    size=3>(</FONT><FONT size=3>SP</FONT><FONT face=宋体 lang=ZH-CN 
    size=3>)堆栈指针</P>
    <P align=justify>处理器必须能够存取用于临时存储数据的大容量的外部读写随机存取内存(</FONT><FONT 
    size=3>RAM</FONT><FONT face=宋体 lang=ZH-CN 
    size=3>)。堆栈是一种用于在外部内存中存放和恢复临时数据的方法。通常,处理器提供了特殊的指令用于将数据压在堆栈中,并在以后需要是取出来。堆栈使用</FONT><FONT 
    size=3>LIFO</FONT><FONT face=宋体 lang=ZH-CN 
    size=3>(后进先出)的方式。换句话说,如果你压入两个值</FONT><FONT size=3>x</FONT><FONT face=宋体 
    lang=ZH-CN size=3>和</FONT><FONT size=3>y</FONT><FONT face=宋体 lang=ZH-CN 
    size=3>到堆栈中,然后从堆栈中弹出一个值,那么你会得到</FONT><FONT size=3>y</FONT><FONT face=宋体 
    lang=ZH-CN size=3>的值。</P>
    <P 
    align=justify>一些处理器的堆栈向内存顶部增长,而另一些向内存的底部增长。还有一些处理器两种方式都可以支持,例如:</FONT><FONT 
    size=3>ARM</FONT><FONT face=宋体 lang=ZH-CN size=3>。</P>
    <P align=justify> </P></FONT><FONT size=3>
    <P align=justify>Processor Status</FONT><FONT face=宋体 lang=ZH-CN 
    size=3>(</FONT><FONT size=3>PS</FONT><FONT face=宋体 lang=ZH-CN size=3>)</P>
    <P align=justify>指令可能产生结果。例如:“</FONT><FONT size=3>X</FONT><FONT face=宋体 
    lang=ZH-CN size=3>寄存器的内容是否大于</FONT><FONT size=3>Y</FONT><FONT face=宋体 
    lang=ZH-CN size=3>寄存器的内容?“可能产生真或假的结果。</FONT><FONT size=3>PS</FONT><FONT 
    face=宋体 lang=ZH-CN size=3>寄存器保留这些结果以及处理器当前状态的其他信息。多数处理器至少有两种模式:</FONT><FONT 
    size=3>kernel</FONT><FONT face=宋体 lang=ZH-CN size=3>(核心态)和</FONT><FONT 
    size=3>user</FONT><FONT face=宋体 lang=ZH-CN size=3>(用户态),</FONT><FONT 
    size=3>PS</FONT><FONT face=宋体 lang=ZH-CN size=3>寄存器会纪录能够确定当前模式的那些信息。</P>
    <P align=justify> </P></FONT><FONT size=3>
    <P align=justify></P>
    <LI>Memory(</FONT><FONT face=宋体 lang=ZH-CN size=3>内存</FONT><FONT size=3>)
    <P></P></FONT><FONT face=宋体 lang=ZH-CN size=3>
    <P align=justify> </P>
    <P align=justify>所有系统都具有分级的内存结构,由位于不同级别的速度和容量不同的内存组成。</P>
    <P align=justify>最快的内存是高速缓存存储器,就象它的名字暗示的一样</FONT><FONT size=3>-</FONT><FONT 
    face=宋体 lang=ZH-CN 
    size=3>用于临时存放或缓存主内存的内容。这种内存非常快但是比较昂贵,因此多数处理器芯片上内置有少量的高速缓冲存储器,而大多数高速缓存存储器放在系统主板上。一些处理器用一块缓存内存同时缓存指令和数据,而另一些处理器有两块缓存内存</FONT><FONT 
    size=3>-</FONT><FONT face=宋体 lang=ZH-CN size=3>一个用于指令,另一个用于数据。</FONT><FONT 
    size=3>Alpha AXP</FONT><FONT face=宋体 lang=ZH-CN 
    size=3>处理器有两个内置的内存高速缓存存储器:一个用于数据(</FONT><FONT size=3>D-Cache</FONT><FONT 
    face=宋体 lang=ZH-CN size=3>),另一个用于指令(</FONT><FONT size=3>I-Cache</FONT><FONT 
    face=宋体 lang=ZH-CN size=3>)。它的外部高速缓冲存储器(或</FONT><FONT 
    size=3>B-Cache</FONT><FONT face=宋体 lang=ZH-CN size=3>)将两者混在一起。</P>
    <P align=justify>最后一种内存是主内存。相对于外部高速缓存存储器而言速度非常慢,对于</FONT><FONT 
    size=3>CPU</FONT><FONT face=宋体 lang=ZH-CN size=3>内置的高速缓存存储器,主内存简直是在爬。</P>
    <P 
    align=justify>高速缓存存储器和主内存必须保持同步(一致)。换句话说,如果主内存中的一个字保存在高速缓存存储器的一个或多个位置,那么系统必须保证高速缓存存储器和主内存的内容一样。使高速缓冲存储器同步的工作一部分是由硬件完成,另一部分则是由操作系统完成的。对于其它一些系统的主要任务,硬件和软件也必须紧密配合。</P>
    <P align=justify> </P></FONT><FONT size=3>
    <P align=justify></P>
    <LI>Buses</FONT><FONT face=宋体 lang=ZH-CN size=3>(总线)
    <P></P>
    <P 
    align=justify>系统板的各个组成部分由被称为总线的连接系统互连在一起。系统总线分为三种逻辑功能:地址总线、数据总线和控制总线。地址总线指定了数据传输的内存位置(地址),数据总线保存了传输的数据。数据总线是双向的,它允许</FONT><FONT 
    size=3>CPU</FONT><FONT face=宋体 lang=ZH-CN size=3>读取,也允许</FONT><FONT 
    size=3>CPU</FONT><FONT face=宋体 lang=ZH-CN 
    size=3>写。控制总线包含了各种信号线用于在系统中发送时钟和控制信号。有许多种不同的总线类型,</FONT><FONT 
    size=3>ISA</FONT><FONT face=宋体 lang=ZH-CN size=3>和</FONT><FONT 
    size=3>PCI</FONT><FONT face=宋体 lang=ZH-CN size=3>总线是系统用于连接外设的常用方式。</P>
    <P align=justify> </P></FONT><FONT size=3>
    <P align=justify></P>
    <LI>Controllers and Peripherals </FONT><FONT face=宋体 lang=ZH-CN 
    size=3>(控制器和外设)
    <P></P>
    <P align=justify> </P>
    <P align=justify>外设指实在的设备,如由系统板或系统板插卡上的控制芯片所控制的图形卡或磁盘。</FONT><FONT 
    size=3>IDE</FONT><FONT face=宋体 lang=ZH-CN size=3>控制芯片控制</FONT><FONT 
    size=3>IDE</FONT><FONT face=宋体 lang=ZH-CN size=3>磁盘,而</FONT><FONT 
    size=3>SCSI</FONT><FONT face=宋体 lang=ZH-CN size=3>控制芯片控制</FONT><FONT 
    size=3>SCSI</FONT><FONT face=宋体 lang=ZH-CN 
    size=3>磁盘。这些控制器通过不同的总线连接到</FONT><FONT size=3>CPU</FONT><FONT face=宋体 
    lang=ZH-CN size=3>并相互连接。现在制造的大多数系统都是用</FONT><FONT size=3>PCI</FONT><FONT 
    face=宋体 lang=ZH-CN size=3>或</FONT><FONT size=3>ISA</FONT><FONT face=宋体 
    lang=ZH-CN size=3>总线将系统的主要部件连接在一起。控制器本身也是象</FONT><FONT 
    size=3>CPU</FONT><FONT face=宋体 lang=ZH-CN size=3>一样的处理器,它们可以看作</FONT><FONT 
    size=3>CPU</FONT><FONT face=宋体 lang=ZH-CN size=3>的智能助手,</FONT><FONT 
    size=3>CPU</FONT><FONT face=宋体 lang=ZH-CN size=3>拥有系统的最高控制权。</P>
    <P align=justify> </P>
    <P align=justify>所有的控制器都是不同的,但是通常它们都有用于控制它们的寄存器。</FONT><FONT 
    size=3>CPU</FONT><FONT face=宋体 lang=ZH-CN 
    size=3>上运行的软件必须能够读写这些控制寄存器。一个寄存器可能包含描述错误的状态码,另一个寄存器可能用于控制用途,改变控制器的模式。一个总线上的每一个控制器都可以分别被</FONT><FONT 
    size=3>CPU</FONT><FONT face=宋体 lang=ZH-CN 
    size=3>寻址,这样软件设备驱动程序就可以读写它的寄存器进而控制它。</FONT><FONT size=3>IDE</FONT><FONT 
    face=宋体 lang=ZH-CN size=3>电缆是一个好例子,它给了你分别存取总线上每一个驱动器的能力。另一个好例子是</FONT><FONT 
    size=3>PCI</FONT><FONT face=宋体 lang=ZH-CN size=3>总线,允许每一个设备(如图形卡)被独立存取。</P>
    <P align=justify> </P></FONT><FONT size=3>
    <P align=justify></P>
    <LI>Address Spaces</FONT><FONT face=宋体 lang=ZH-CN size=3>(寻址空间)
    <P></P>
    <P align=justify> </P>
    <P align=justify>连接</FONT><FONT size=3>CPU</FONT><FONT face=宋体 lang=ZH-CN 
    size=3>和主内存的系统总线以及连接</FONT><FONT size=3>CPU</FONT><FONT face=宋体 lang=ZH-CN 
    size=3>和系统硬件外设的总线是分离的。硬件外设所拥有的内存空间称为</FONT><FONT size=3>I/O</FONT><FONT 
    face=宋体 lang=ZH-CN size=3>空间。</FONT><FONT size=3>I/O</FONT><FONT face=宋体 
    lang=ZH-CN size=3>空间本身可以再进一步划分,但是我们现在先不讨论。</FONT><FONT 
    size=3>CPU</FONT><FONT face=宋体 lang=ZH-CN size=3>可以访问系统内存空间和</FONT><FONT 
    size=3>I/O</FONT><FONT face=宋体 lang=ZH-CN size=3>空间,而控制器只能通过</FONT><FONT 
    size=3>CPU</FONT><FONT face=宋体 lang=ZH-CN 
    size=3>间接访问系统内存。从设备的角度来看,比如软驱控制器,它只能看到它的控制寄存器所在的地址空间(</FONT><FONT 
    size=3>ISA</FONT><FONT face=宋体 lang=ZH-CN size=3>),而非系统内存。一个</FONT><FONT 
    size=3>CPU</FONT><FONT face=宋体 lang=ZH-CN size=3>用不同的指令去访问内存和</FONT><FONT 
    size=3>I/O</FONT><FONT face=宋体 lang=ZH-CN 
    size=3>空间。例如,可能有一条指令是“从</FONT><FONT size=3>I/O</FONT><FONT face=宋体 
    lang=ZH-CN size=3>地址</FONT><FONT size=3>0x3f0</FONT><FONT face=宋体 lang=ZH-CN 
    size=3>读取一个字节到</FONT><FONT size=3>X</FONT><FONT face=宋体 lang=ZH-CN 
    size=3>寄存器“。这也是</FONT><FONT size=3>CPU</FONT><FONT face=宋体 lang=ZH-CN 
    size=3>通过读写系统硬件外设处于</FONT><FONT size=3>I/O</FONT><FONT face=宋体 lang=ZH-CN 
    size=3>地址空间的寄存器从而控制外设的方法。在地址空间中,普通外设(如</FONT><FONT size=3>IDE</FONT><FONT 
    face=宋体 lang=ZH-CN size=3>控制器,串行端口,软驱控制器等等)的寄存器在</FONT><FONT 
    size=3>PC</FONT><FONT face=宋体 lang=ZH-CN size=3>外设的多年发展中已经成了定例。</FONT><FONT 
    size=3>I/O</FONT><FONT face=宋体 lang=ZH-CN size=3>空间的地址</FONT><FONT 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -