《linux 内核全然剖析》 chapter 2 微型计算机组成结构

《linux 内核全然剖析》 chapter 2 微型计算机组成结构

微型计算机组成结构

系统的基本组成:


<span>《linux 内核全然剖析》 chapter 2 微型计算机组成结构</span>


            软件是一种控制硬件操作和动作的指令流。


2.1 微型计算机的组成原理



<span>《linux 内核全然剖析》 chapter 2 微型计算机组成结构</span>

    当中CPU通过地址线,数据线,和控制信号线组成的内部总线与系统其它部分进行数据通信。地址线用于提供内存或者I/O设备的地址,即指明须要读写的数据的详细位置。数据线用于在CPU和内存的I/O设备之间提供传输数据的通道,而控制线则负责指挥运行的详细读写操作




          除了CPU以外,现代计算机PC主板主要由两个超大规模芯片构成的芯片组(chipsets):北桥(Northbrige)和南桥(Southbrige)芯片。北桥芯片用于与CPU,内存,和AGP视频接口,这些接口传输的速度快,北桥起着储存控制器的控制作用,于是Intel把该芯片标号为MCH(memory control chip)。南桥用来管理低中速芯片,被称为ICH(IO control hub)


<span>《linux 内核全然剖析》 chapter 2 微型计算机组成结构</span>



2.2 I/Oport寻址和控制方式

2.2.1 I/Oport和寻址

          port地址的设置一般有两种方法:统一编址和独立遍址


          port统一编址的原理就是把IO控制器的port地址归入储存器寻址地址空间范围内。因此这样的编址方式也被称作储存器映像编址。




我的Ubuntu里面查看/proc/ioports 能够看到各个控制器设备或设置能够使用的地址范围:

0000-0cf7 : PCI Bus 0000:00
  0000-001f : dma1
  0020-0021 : pic1
  0040-0043 : timer0
  0050-0053 : timer1
  0060-0060 : keyboard
  0064-0064 : keyboard
  0070-0071 : rtc0
  0080-008f : dma page reg
  00a0-00a1 : pic2
  00c0-00df : dma2
  00f0-00ff : fpu
  0170-0177 : 0000:00:07.1
    0170-0177 : ata_piix
  01f0-01f7 : 0000:00:07.1
    01f0-01f7 : ata_piix
  02f8-02ff : serial
  0376-0376 : 0000:00:07.1
    0376-0376 : ata_piix
  0378-037a : parport0
  03c0-03df : vga+
  03f2-03f2 : floppy
  03f4-03f5 : floppy
  03f6-03f6 : 0000:00:07.1
    03f6-03f6 : ata_piix
  03f7-03f7 : floppy
  03f8-03ff : serial
  0cf0-0cf1 : pnp 00:00
0cf8-0cff : PCI conf1
0d00-feff : PCI Bus 0000:00
  1000-103f : 0000:00:07.3
    1000-103f : pnp 00:00
      1000-1003 : ACPI PM1a_EVT_BLK
      1004-1005 : ACPI PM1a_CNT_BLK
      1008-100b : ACPI PM_TMR
      100c-100f : ACPI GPE0_BLK
      1010-1015 : ACPI CPU throttle
  1040-104f : 0000:00:07.3
    1040-104f : pnp 00:00
  1060-107f : pnp 00:0c
  1080-10bf : 0000:00:07.7
  10c0-10cf : 0000:00:07.1
    10c0-10cf : ata_piix
  10d0-10df : 0000:00:0f.0
    10d0-10df : vmwgfx probe
  1400-14ff : 0000:00:10.0
  2000-3fff : PCI Bus 0000:02
    2000-203f : 0000:02:01.0
      2000-203f : e1000
    2040-207f : 0000:02:02.0
      2040-207f : Ensoniq AudioPCI
    2080-209f : 0000:02:00.0
      2080-209f : uhci_hcd
  4000-4fff : PCI Bus 0000:03
  5000-5fff : PCI Bus 0000:0b
  6000-6fff : PCI Bus 0000:13
  7000-7fff : PCI Bus 0000:1b
  8000-8fff : PCI Bus 0000:04
  9000-9fff : PCI Bus 0000:0c
  a000-afff : PCI Bus 0000:14
  b000-bfff : PCI Bus 0000:1c
  c000-cfff : PCI Bus 0000:05
  d000-dfff : PCI Bus 0000:0d
  e000-efff : PCI Bus 0000:15

2.2.2 接口訪问控制

三种方式:循环查询,中断处理,DMA传输


循环查询不须要过多的硬件支持,简单,可是耗费宝贵的CPU时间。

中断处理的方式须要有中断控制器的支持。linux 大多数都是採用这样的方式进行接口訪问。

直接存储器訪问,(Direct memory access),该方式用于IO设备与系统直接进行批量的传输数据,整个操作过程不须要CPU的插手。有专门的DMA控制器来进行。



2.3 主存储器,BIOS和CMOS储存器

2.3.1 主存储器

就是那个RAM。。。



<span>《linux 内核全然剖析》 chapter 2 微型计算机组成结构</span>




2.3.2 基本输入输出程序BIOS

存放在ROM里面的系统BIOS程序主要用于计算机的开机运行系统各个部分的自检,建立起操作系统须要使用的各个配置表,如中断向量表,硬盘參数表 etc

<span>《linux 内核全然剖析》 chapter 2 微型计算机组成结构</span>




2.3.3 CMOS 储存器

这家伙用的太少了。值得一提的是CMOS内存的地址空间在基本内存地址之外,须要仅仅用IO指令来訪问。



2.4 控制器和控制卡


2.4.1 中断控制器



<span>《linux 内核全然剖析》 chapter 2 微型计算机组成结构</span>



2.4.2 DMA控制器

DMA控制器主要是通过外部设备直接与内存数据传输来增强系统的性能。

DMA数据传输能够不受CPU控制,所以CPU能够做其它事情。


2.4.4键盘控制器


当一个键被按下的时候,键盘发送扫描码被称为接通码(Make code),当一个键放开时发送的扫描码称为断开码(Break code)。


2.4.5串行控制卡

1.原理

<span>《linux 内核全然剖析》 chapter 2 微型计算机组成结构</span>

      串行通信是指在线路上以位数据流一次一个的进行传输的通信方式。串行通信能够分为同步串行通信和异步串行通信。它们之间的主要差别在于,传输时同步的通信单位或帧的长度不同。异步串行通信以一个字符作为通信单位或一帧进行传输,而同步串行通信则以多个字符或字节组成的序列作为一帧数据进行传输。


2.串行通信的传输格式



<span>《linux 内核全然剖析》 chapter 2 微型计算机组成结构</span>

        当无数据传输时,发送方处于传号(Mark)状态,持续发送1.若须要发送数据,则发送方须要首先发送一个位间隔时间的空号起始位。接收方收到空号之后,就開始与发送方同步,然后接受随后的数据。若程序中设置奇偶校验位,那么在数据传输完毕之后,还须要接收奇偶校验位。






版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/119116.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 计算机会员登录系统,华林会员登录系统 会员登录系统.doc「建议收藏」

    计算机会员登录系统,华林会员登录系统 会员登录系统.doc「建议收藏」华林会员登录系统会员登录系统重庆三峡学院验证体系文档题目:会员注册登录系统专业:计算科学与技术年级:2009级学号:200906024129作者:唐承兰完成时间:2011年5月会员注册登录系统目录摘要……………………………………………………………..

    2022年4月20日
    168
  • Maven打包——配置文件

    Maven打包——配置文件当我们需要打包一些灵活性(有可能经常修改代码)的代码时,会遇到这样的问题:每次修改代码完以后,得需要重新对代码进行打包,重新上传使用。此时,我们可以将一些经常修改的代码放置在配置文件中,以便灵活修改,修改时,只需在打包好的压缩包中进行配置的修改,保存即可,无需重新打包。…

    2022年5月29日
    153
  • layer 弹出层传递参数

    layer 弹出层传递参数layer弹出层轻量好用,一直喜欢用,但是却没有弹出层传参的接口,迫于无奈只能Url地址传参,总所周知,这个可是限制大小的,百度一番,看看大神们怎么处理,结果就感觉所有回答都是Ctrl+C加Ctrl+V,全是地址栏传参,页面缓存、cookie、localstorage,本着不甘心的原则,就想为什么不能在open的时候把参数一起作为属性传递了,强行看了layer源码(扒光慢慢看),于是乎…

    2022年7月13日
    10
  • C# winform美化窗体

    C# winform美化窗体记录一下winform美化工具CSkin一个.Net的UI库。参考链接:https://blog.csdn.net/yyl7727/article/details/78904125?spm=1001.2014.3001.5502

    2022年5月24日
    34
  • APP安全环节缺失,手游运营商怎样应对APP破解困境

    APP安全环节缺失,手游运营商怎样应对APP破解困境

    2021年11月28日
    43
  • SPPnet 详解[通俗易懂]

    SPPnet 详解[通俗易懂]RCNN系列:RCNN,SPPNet,FastRCNN,FasterRCNN,R-FCN。  前不久刚刚看完rcnn和fastrcnn,对目标检测的学习更进一步。sppNet简介:作者:何凯明  2016年加入成为FAIR(facebook微软研究员),2011年获得博士学位,主要兴趣和研究在计算机视觉和深度学习。获得cpvr和iccv多个奖项。 SP…

    2022年6月12日
    45

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号