IO是什么 ?

IO(Input and Output)是输入输出接口。是CPU和其他外部设备(如串口、LCD、触摸屏、LED等)之间通信的接口。一般的,我们说的IO就是指CPU的各种内部或外部外设。对于CPU而言,CPU操作外设就是操作外设中的寄存器,为了区分外设中的寄存器,每个被操作的外设寄存器就需要一个地址。

什么是IO端口的寻址方式?

CPU为了访问IO接口控制器或控制卡上的数据和状态信息,首先需要指定他们的地址。这种地址就称为I/O端口地址或者简称端口。通常,一个IO控制器包含访问数据的数据端口、输出命令的命令端口和访问控制器执行状态的状态端口
端口地址的设置方法一般有两种:统一编址和独立编址;

CPU访问各种外设有2种方式:一种是类似于访问内存的方式,即把外设的寄存器当作一个内存地址来读写,从而以访问内存相同的方式来操作外设寄存器,这时,IO与内存统一编址;
IO的地址与内存的地址在同一个地址空间下,这种编址方式叫做IO与内存统一编址;
另一种编址方式是IO地址与内存地址分开独立编址,这种编址方式叫做IO与内存独立编址,此时,CPU访问内存和访问IO就需要不同的CPU指令去访问。

统一寻址与独立编址的优缺点:

外设与内存统一的编址方式,优点是编程简单,因为可以像访问内存一样去访问外设。缺点是IO也占用CPU的寻址空间。

而独立编址的方式,优点是不占用CPU的寻址空间,但是CPU的构造比较复杂。(因为额外的CPU指令需要对CPU进行额外的设计处理)。

linux内核完全剖析——基于0.12内核-笔记(2)-统一编址和独立编址的更多相关文章

  1. linux内核完全剖析——基于0.12内核-笔记(1)-CPU 数据通信

    CPU数据通信总线 CPU通过地址线.数据线.控制信号组成的本地总线(或称为内部总线)与系统其它部分进行数据通信. 地址总线 地址总线用于内存或I/O设备的地址,即指明需要读/写数据的具体位置. 数据 ...

  2. Linux内核完全剖析基于0.12内核

    控制寄存器(CR0,CR1,CR2,CR3)用于控制和确定处理器的操作模式以及当前执行任务的特性.CR0中含有控制处理器操作模式和状态的系统控制标志,CR1保留不用,CR2含有导致页错误的线性地址,C ...

  3. Linux 0.12 内核管理存储器

    Linux 0.12 内核管理存储器 其分段,用分段的机制把进程间的虚拟地址分隔开. 每一个进程都有一张段表LDT.整个系统有一张GDT表.且整个系统仅仅有一个总页表. 其地址翻译过程为: 程序中给出 ...

  4. 《linux 内核全然剖析》编译linux 0.12 内核 Ubuntu 64bits 环境

    我×.. . 最终好了,大概3 4个小时吧...各种毛刺问题.终究还是闯过来了.. .. ubuntu2@ubuntu:~/Downloads/linux-0.00-050613/linux-0.00 ...

  5. linux使用glibc版本安装mysql8.0.12

    1.前言 使用yum安装虽然很方便,但是如果要是在没有公网的环境下,是没有办法使用yum源的.所以我们可以使用mysql提供的glibc版本的安装包,进行安装. 但是在安装之前,一定要将以前的版本删除 ...

  6. Linux系统启动那些事—基于Linux 3.10内核【转】

    转自:https://blog.csdn.net/shichaog/article/details/40218763 Linux系统启动那些事—基于Linux 3.10内核 csdn 我的空间的下载地 ...

  7. 从内核3.7版本开始,Linux就开始支持VXLAN 到了内核3.12版本,Linux对VXLAN的支持已经完备,支持单播和组播,IPv4和IPv6。

    一.关于VXLAN VXLAN 是 Virtual eXtensible LANs 的缩写,它是对 VLAN 的一个扩展,是非常新的一个 tunnel 技术,在Open vSwitch中应用也非常多. ...

  8. Linux 从4.12内核版本开始移除了 tcp_tw_recycle 配置。 tcp_max_tw_buckets TIME-WAIT 稳定值

    被抛弃的tcp_recycle_小米云技术-CSDN博客_sysctl: cannot stat /proc/sys/net/ipv4/tcp_tw_recy https://blog.csdn.ne ...

  9. Ubuntu 编译安装 Linux 4.0.5 内核,并修复 vmware 网络内核模块编译错误

    . . . . . 今天把 Ubuntu 14.04 升级到了最新的 4.0.5 的内核版本,本来不打算记录下来的,但是升级的过程中确实遇到了一些问题,所以还是记录下来,分享给遇到同样问题的猿友. 先 ...

随机推荐

  1. java中this$0 this$1 this$2

    import java.lang.reflect.Field; public class Outer {//this$0 public class FirstInner {//this$1 publi ...

  2. 大佬带你深入浅出Lua虚拟机

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由鹅厂优文发表于云+社区专栏 作者:郑小辉 | 腾讯 游戏客户端开发高级工程师 写在前面:本文所有的文字都是我手工一个一个敲的,以及本文 ...

  3. 关于SAN和NAS的区别-转

    什么是SAN与NAS By  王文平 发表于 2006-7-10 18:03:53  NAS和SAN字面上相似,并且都是新型数据存储模式,但这二者是完全不同的,针对不同方向的技术. 什么是SAN(St ...

  4. Spring Import注解

    今天了解了,Spring @Import的使用 先贴上Spring官方关于Spring @Import注解的文档链接   https://docs.spring.io/spring/docs/3.0. ...

  5. CATransaction(参考其他博客敲)

    #import "ViewController.h" @interface ViewController () @property(nonatomic,strong)CALayer ...

  6. Trace & Error log in file

    1. Log机制 做一些大型项目的时候,对代码的调试最有效的办法往往是最直接.最简单的log机制: 即对可以出设置打印店,对应打印信息进行调试(当然是有gdb也许你会觉得很高大上,但是实际项目中,gd ...

  7. [转]DevOps解决方案-腾讯云

    本文转自:https://cloud.tencent.com/solution/devops 什么是 DevOps?   DevOps 集文化理念.实践和工具于一身,可以提高企业高速交付应用程序和服务 ...

  8. sqlserver清除缓存(转载)

    sqlserver清除缓存,记录查询时间   1 2 3 4 5 6 7 8 9 10 11 12 --1. 将当前数据库的全部脏页写入磁盘.“脏页”是已输入缓存区高速缓存且已修改但尚未写入磁盘的数据 ...

  9. Cookies读写

    /** * Minified by jsDelivr using Terser v3.14.1. * Original file: /npm/js-cookie@2.2.0/src/js.cookie ...

  10. find the most comfortable road(hdu1598)不错的并查集

    find the most comfortable road Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ...