能源及电源,有了电能就可以控制电子管的通与不通,从而实现与、或、非、异或、位移、脉冲、传输、存储等基础功能。
 
1:CPU通过系统总线(3合1的通信总线)与其他外设相接。
大多数控制器、控制卡都集成于主板上,以大规模集成电路芯片组成的功能电路。
把控制器、控制卡集成到南桥芯片和北桥芯片中。
 
2:CPU与IO接口控制器、控制卡通信接口是IO端口。
IO端口类型及作用
访问数据:数据端口。
输出命令:命令端口。
访问控制器状态:状态端口。
 
IO端口地址的设置方法:
统一编址:将IO端口地址归入存储器寻址地址空间范围内,访问IO端口使用访问内存的指令。
独立编址:将IO端口的寻址空间单独作为一个独立的地址空间,使用专门的IO指令来访问端口。
cat  /proc/ioports  #查看linux本机的IO端口地址范围。
 
IO接口数据传输控制方式:
程序循环查询(耗费CPU时间,linux只在设备或者控制器能立即返回信息时才会在很少几个地方采用)。
中断处理(IO设备通过中断向CPU提出处理请求,及硬件中断。CPU在事先设置好的中断向量表中找到中断处理服务过程并上下文切换执行。大多数设备采用的方式)。
DMA传输(直接存储器访问,IO设备与系统内存之间进行批量数据传送,过程中无需CPU插手)。
 
3:主存储器、BIOS、CMOS
主存储器:
初代个人电脑:1981年IBM PC机:640KB RAM内存,20根地址线 8088/8086CPU寻址1024KB。BIOS处于CPU能寻址的内存最高端位置处。
二代:intel 32位CPU(寻址4GB、64GB(通过修改页面大小实现))。BIOS任然处于CPU能寻址的内存最高端位置处,为了与原来的PC机在软件上兼容,系统1MB以下物理内存的使用和分配仍然与原来的PC基本一致,BIOS将从4G处以下位置拷贝一份(称为影子)放到1MB位置处以下的位置, 以到达兼容一代。
物理内存使用规范:
除了[0xA0000, 0xFFFFF](640KB-1MB)和[0xFFFE0000, 0xFFFFFFFF](4GB最后64KB)两段被用于IO设备和BIOS程序。其他地址可以作为系统内存。
Linux不使用BIOS功能,也不使用BIOS设置的中断向量表。所以此部分[0x00000, 0x00500]也可以当做系统内存。
BIOS:(存放于ROM中)
Linux只在初始化时会利用BIOS提供的一些系统参数(因为BIOS的功能是必要的),运行中不使用BIOS中的功能(因为BIOS不能并发)。
系统引导时的控制流:(加电)->0xFFFFFFF0->[0xFFFF0000, 0xFFFFFFFF]->(Big Mode)->(Self-Test and Init)->(copy 64KB to 0xF0000)->[0xF0000, 0x100000]->(CPU进入实地址模式)->(load boot to 0x7c00)->(load os kernel)
CMOS:
存储空间很小(例如64Byte/128Byte),存放实时时钟信息、系统硬件配置信息。通常和实时时钟芯片做在一块集成块中。CMOS地址空间是独立编址。
 
 
4:控制器和控制卡
4.1:中断控制器:实现IO设备的中断控制数据存取方式。IBM PC/AT 80x86兼容微机使用两片级联的8259A可编程中断控制芯片组成一个中断控制器。
1:初始时ROM BIOS对中断控制器芯片进行初始化。
2:并把15级中断优先级分配给时钟定时器、键盘、串行口、打印口、软盘控制、协处理器、硬盘等设备或控制器使用。
3:同时在内存开始处[0x000, 0xFFF]区域内建立一个中断向量表。
注:这些设置违背了Intel公司的要求,Linux kernel初始化期间又会重新设置中断控制器及中断向量表。
中断控制器电路图:
ROM BIOS根据上图中的 硬件中断请求号 设置成 下图中的 中断向量号(电信号->内存记录)。(后期Linux会重新设置)
4.2:DMA控制器:让外设和内存直接传输数据来增强系统性能。通常由Intel 8237芯片或其他兼容芯片实现。
4.3:定时/计数器:每隔一个固定间隔发出一个信号产生中断请求信号(IRQ0),产生内核工作脉搏。Intel 8253/8254芯片(可编程定时/计数器)。
4.4:键盘控制器:对接收到的键盘扫描码进行解码,把解码后的数据发送到操作系统的键盘数据队列中。Intel 8042单片微处理器芯片或其他兼容电路。
键盘编码器(键盘上的处理器,Intel8048或兼容芯片)收集扫描码(按下(接通码)和松开(断开码)的状态信息),并发送到键盘控制器。
键盘所有按键的接通码和断开码组成了键盘的一个扫描码集。
扫描码集已有三套:
AT键盘默认发送的是第二套扫码集。为了向前兼容,键盘控制器会把它转换成第一套扫码集,也就意味着软件只需要认识第一套扫码集。
键盘控制器收到键盘发来的11位串行格式数据,其中,第1位是起始位,第2-9位是8位键盘扫描码,第10位是奇校验校验位,第11位是停止位。然后转换成第一套扫码集中的扫描码,然后通过中断控制器IRQ1引脚向CPU发送中断请求。当CPU响应该中断请求后,就会调用键盘中断处理程序来读取控制器中的扫描码(第一套扫码集,同一个键盘按键的接通码加上0x80就是断开码)。
注意:扫描码不等于字符代码。
第一套扫码集(PC/XT)标准83键键盘以后新添加的(扩展)AT键盘上的按键(例如右手边的ctrl、右手边的alt键等),其接通码和断开码通常有2-4字节,并且第1字节一定是0xE0。(第一套原有键接通码只有1字节)
现今主板上不再包括独立的8042芯片,但会主板上的其他集成电路会兼容8042芯片的功能,所以现在键盘的编程方式仍然采用8042的编程方法。
另外键盘控制器8042的输出端口P2用于其他目的:P20引脚用于实现CPU复位,P21引脚用于控制A20信号线开关。
 
4.5:串行控制卡:串行数据的收发工作。2个符合RS-232C标准的串行接口+串行控制器(由通用异步接收/发送器控制芯片UART组成,或者16650A及兼容芯片(支持FIFO传输(最多16字节才引发一次中断)))。
串行接口:25芯的DB-25或9芯的DB-9链接器,主要连接MODEM设备。
串行通信:在线路上以一次一个bit进行传输的通信方式。可分为同步和异步两种类型。
异步串行通信:一个字符作为一个通信单位(帧)进行传输。
发送方:无数据传输时发送方处于传号(MARK,1)状态,持续发1。需要发送数据时,发送方需要首先发送一个空号(SPACE)起始位。接收方收到空号后就开始与发送方同步,然后接收随后的数据位,奇偶校验位,停止位。多个字符帧之间可以不用传号,也可以任意多个传号。
注:数据位长范围是[5, 8]bit,奇偶校验位可有可无,停止位可以是1、1.5、2位。但是再通信开始之前,双方必须设置成相同的格式。
接收方:每接收到一字符帧时,可能检测到三种错误之一。
奇偶校验错误:应要求对方重发。
过速错误:取字符速度慢于接收速度,修改程序加快取字符频率。
帧格式错误:线路干扰、或者双方帧格式设置的不一样导致。
同步串行通信:以多个字符或字节 组成的序列作为一帧数据进行传输。
PC启动时通过MR引脚对串行控制卡复位,此后使用之前需要初始化编程操作设置工作波特率、数据位数以及工作方式等。
 
4.6:显示控制:
可以使用多种不同标准的显卡,有单色和彩色的。后面的AGP显示卡也兼容前几种标准。
单色MDA标准:(Monochrome Display Adapter)
    仅支持黑白两色显示,只支持独有的文本字符显示方式(BIOS显示方式7)。
    显示规格是80列*25行,共可以显示2000字符。
    每个字符除了ASCII编码1字节外,还带有1个属性字节。因此显示1屏(1帧)内容需要占4KB,其中偶数地址(0,2,4...,3998)字节存放字符代码,奇数地址(1,3,5...,3999)字节存放属性字节。
    MDA显卡配置了8KB显示内存,在PC机内存寻址范围是[0xb0000, 0xb2000]。能够通过计算得出屏幕中指定位置字符在内存寻址中的地址。
    每个字符的属性:D7置1使字符闪烁,D3置1使字符高亮度显示。其他位对显示的影响效果如下图。
彩色CGA标准:(Color Graphics Adapter)
    支持7种 彩色和图形显示 方式(BIOS显示方式0--6)。
    其中有两种80列*25行的文本字符显示方式:单色和16色彩色两种(BIOS显示方式2和3),这两种和MDA标准类似。
    CGA显卡标配有16KB显示内存(内存地址范围为[0xb8000, 0xbc000]),能存放4帧显示信息。在console.c程序中只使用了8KB([0xb8000, 0xba000])。
    在CGA16色彩色文本显示方式中,每个字符属性字节的格式如下表:
RGB位标识了每个字符的颜色和背景色:
EGA标准、VGA标准:(增强型图形适配器(Enhanced Grpahics Adapter)、视频图形阵列(Video Graphics Adapter))
    除了兼容MDA和CGA的显示方式外,还支持其他在图形显示方面的增强显示方式。标配32KB显示内存,还是占用从0xa0000开始的物理内存地址。兼容(MDA/CGA)模式下运行的话显存地址也是兼容的。
 
4.7:软盘、硬盘控制器:(FDC(Floppy Disk Controller))
外存原理:利用磁性介质在电磁化后的剩磁状态来存储信息。
外存控制子系统=盘片+盘驱动器。硬盘驱动器和硬盘盘片放在一起不可分割。
例如:软盘:300转/分钟。硬盘:5000转/分钟。
磁头先转到相应的磁道,磁盘相对于磁头做匀速运动,相当于磁头在切割磁介质上的磁力线,从而根据剩磁状态方向不同在磁头的读线圈上产生不同方向的电流,并转换成0/1信号读入。
GAP:间隔字段,起隔离作用,通常是12字节的0。
地址场的地址字段:存放柱面号、磁头号、扇区号。读这个区域就能得到唯一标识地址。
磁盘控制器:CPU和驱动器之间的逻辑接口电路,他从CPU接收请求命令,向驱动器发送寻道、读写和控制信号,并控制和转换数据流形式。控制器与驱动器之间串行传输所有驱动器读到的数据,控制器负责分离出地址信息、其他控制信息和数据,并转为并行字节数据。
 

读书笔记《Linux内核完全注释》第二章硬件部分的更多相关文章

  1. 2013337朱荟潼 Linux第一章读书笔记——Linux内核简介

    一.Unix历史 二.Linux足迹 类Linux系统.非商业化产品.用途广泛 三.操作系统和Linux内核简介 1.操作系统 (1)是指在整个最基本功能系统中负责完成最基本功能和系统管理的部分. ( ...

  2. 【读书笔记】C#高级编程 第二章 核心C#

    (一)第一个C#程序 创建一个控制台应用程序,然后输入代码,输入完毕后点击F5 Console.WriteLine();这条语句的意思:把括号内的内容输出到界面上: Console.ReadKey() ...

  3. 《深入理解linux内核架构》第二章 进程管理和调度

    2.1进程优先级 进程优先级 硬实时进程 软实时进程 抢占式多任务处理 2.2进程生命周期 用户太切换到核心态的办法 系统调用 中断 抢占调度模型优先级普通进程<系统调用<中断 普通进程可 ...

  4. Linux内核分析第四章 读书笔记

    Linux内核分析第四章 读书笔记 第一部分--进程调度 进程调度:操作系统规定下的进程选取模式 面临问题:多任务选择问题 多任务操作系统就是能同时并发地交互执行多个进程的操作系统,在单处理器机器上这 ...

  5. linux内核分析第3章&第18章读书笔记

    linux内核分析第3章&第18章读书笔记 第三章 进程管理 进程:处于执行期的程序(目标码存放在某种存储介质上) 包含资源:可执行程序代码,打开的文件,挂起的信号,内核内部数据,处理器状态, ...

  6. 《Linux内核分析》第二周学习笔记

    <Linux内核分析>第二周学习笔记 操作系统是如何工作的 郭垚 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/ ...

  7. linux内核代码注释 赵炯 第三章引导启动程序

    linux内核代码注释 第三章引导启动程序 boot目录中的三个汇编代码文件   bootsect.s和setup.s采用近似intel的汇编语法,需要8086汇编器连接器as86和ld86 head ...

  8. linux内核参数注释与优化

    目录 1.linux内核参数注释 2.两种修改内核参数方法 3.内核优化参数生产配置 参数解释由网络上收集整理,常用优化参数对比了网上多个实际应用进行表格化整理,使查看更直观. 学习linux也有不少 ...

  9. 《C#从现象到本质》读书笔记(七)第9章 泛型

    <C#从现象到本质>读书笔记(七)第9章 泛型 泛型的三大好处:类型安全,增强性能(避免装箱和拆箱),代码复用. 泛型方法是传入的参数至少有一个类型为T(尚未制定的类型,根据微软的命名规则 ...

  10. Linux内核设计(第二周)——操作系统工作原理

    Linux内核设计(第二周)--操作系统工作原理 by苏正生 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/U ...

随机推荐

  1. Linux 离线升级 RSYNC

    前言:本文操作是在 CentOS-7 下执行的,不确定在其他 Linux 发布版是否能同样正常执行. 1.检查前置依赖组件 在安装 rsync 之前,需要确认已安装了相关依赖组件: gcc .open ...

  2. 大量数据topk-分桶+堆+多路并归解决方案

    利用分桶.堆与多路归并解决 TopK 问题:结果处理阶段解析 在处理大规模数据时,TopK 问题是一个常见且具有挑战性的任务,即从海量数据中找出最大(或最小)的 K 个元素.为了高效地解决这个问题,我 ...

  3. Docker安装及使用,Docker 安装MySQL、安装Tomcat、安装RabbitMQ

    CentOS7安装Docker Docker从1.13版本之后采用时间线的方式作为版本号,分为社区版CE和企业版EE. 社区版是免费提供给个人开发者和小型团体使用的,企业版会提供额外的收费服务,比如经 ...

  4. 使用Python可视化潮汐力

    引言 潮汐力,简单来说,就是天体间由于引力差异而产生的力量.这种力在地球上最显著的表现就是潮汐现象,即海水的涨落.潮汐力是由月球和太阳的引力作用引起的,它对地球的影响非常深远,除了海洋潮汐外,还能影响 ...

  5. 在MaxKB中实现准确的Chat TO SQL(BI)

    主要面向考试成绩管理系统(目前支持旭日图.仪表盘柱状图.桑基图.漏斗图.河流图.数据聚合图.散点图.南丁格尔玫瑰图.饼状图.环形图.堆叠柱状图.堆叠折线图.堆叠面积图.面积图.折线图) 主要思路: 第 ...

  6. Mouse Down鼠标操作指令的用法

    如下图 暂无评论的按钮在整页下方,需要拖动页面才会显示出这个按钮,否则不可点击 Mouse Down  提供拖动页面的能提 这个方法因selenium2library和AutoItLibrary 都有 ...

  7. 康谋分享 | ADTF在CAN方面技术的深入探讨

    在当今汽车电子系统的开发中,CAN总线作为车辆内部通信的骨干,承载着大量关键信号的传输.确保这些信号的高效.准确处理,对于车辆系统的稳定性和可靠性至关重要. 一.Signal Config Filte ...

  8. 17.1K star!两小时就能训练出专属于自己的个性化小模型,这个开源项目让AI触手可及!

    「只需一张消费级显卡,2小时完成26M参数GPT训练!」「从零构建中文大模型的最佳实践指南」「兼容OpenAI API,轻松接入各类AI应用平台」 项目介绍 MiniMind是由开发者Jingyao ...

  9. 【记录】Prompt模板|作为甲方怎么清晰专业地描述自己的需求(又名“乙方,给你的甲方扔个GPT解放自己吧”)

    这篇Prompt摘抄并修改自朋友送给我的书的第49页5.2.3让ChatGPT构建提示,质量挺不错,支持一下她的博客:[好书推荐2]AI提示工程实战:从零开始利用提示工程学习应用大语言模型. 书长这样 ...

  10. 0x01 - 我的第一个 Object Visitor

    我的第一个 Object Visitor 预演准备 为了顺利的进行测试,你需要确保本地已经安装了以下这些必备的软件: dotnet 2.1 或者以上版本的 SDK,我们更建议直接安装 dotnet 5 ...