linux内核完全注释之微型计算机组成结构

计算机组成原理

1、传统计算机计算机组成框图

CPU通过地址线、数据线、控制线组成的本地总线(或内部总线),与系统的其他部分进行数据通信,地址线用于提供内存或I/O设备的地址,指明所需读写数据的具体操作位置。数据线用于在CPU和内存或I/O之间的数据传输通道;控制线用于控制内存与I/O的具体读写操作

内存的大小由地址线的位数决定:如32位232字节,共4GB

下方的各种控制卡(也可成适配卡)是通过扩展插槽与系统总线进行连接,总线插槽是系统地址线、数据总线、控制总线与扩展设备控制器的标准接口。总线接口的标准由ISA(Industry Standard Aarchitecture)总线,EISA,PCI(Peripheral component Interconnect)外围组件互连总线,AGP(Accelerated Graphics Port)加速图形端口视频总线

2、现代计算机组成结构

现代pc根据各个设备的传输数据速度不同,分为南北桥,北桥连接AGP总线、内存、CPU与总线。南桥用于硬盘、键盘、USB端口、PCI总线等中低速设备与总线的通信

I/O端口的寻址与访问控制方式

1、I/O端口寻址:CPU为了访问I/O控制卡上的数据和状态信息,需要先指定其地址,此地址就称为I/O端口地址或者端口。通常根据与不同总线通信分为访问数据的数据端口,输出命令的命令端口、访问控制器执行状态的状态端口。

2、端口地址的设置方法一般由两种:统一编址、独立编址

端口统一编址的原理是把I/O端口地址归入存储器寻址地址空间范围内,也叫存储器映像编址,CPU访问一个I/O端口的操作与访问内存一样,且命令也用访问内存命令

端口独立编址的方法是把I/O控制器与控制卡的端口地址作为一个独立的地址空间对待,称为I/O地址空间,故其访问需要专门的I/O指令

接口访问控制

PC机I/O接口数据传输控制方式一般可以采用程序循环查询方式、中断处理方式和DMA传输方式

1、循环查询方式是指CPU通过在程序中循环查询指定设备控制器中的状态来判断是否可以与设备进行数据交换(浪费CPU)

2、中断处理控制方式需要中断处理器支持,只有在I/O设备通过中断向CPU提出处理请求时,CPU才会暂时中断当前执行的程序而去执行I/O中断处理服务过程,在I/O控制器或设备发出中断请求时,CPU通过中中断向量表(中断描述符)来寻址相应的中断处理服务程序的入口地址。中断控制方式需要事先设置好中断向量表

3、直接内存访问(DMA):该方式时用过DMA控制器无需CPU干预完成内存与I/O设备之间的数据传输。

主存储器

当计算机初始化上电时,物理内存被设置成从地址0开始的连续区域。除了地址从0xA0000到0xFFFFF(640K到1M共384K)和 4G处的最后64K范围以外所有的内存都可用作系统内存。

在linux0.1x系统中,若内存大小位16M

0-640K被用作存放内核代码和数据

640K-1M之间的384K仍保留指定用途

1M-16M将被内核用作作为可分配的主存区

BIOS

1、存放在ROM中的系统BIOS程序主要用于计算机开始时候执行系统各部分的自检,建立起操作系统所需的各种配置表,例如中断向量表、硬盘参数表。(由于BIOS提供的服务不具备可重入性,为了保证访问效率,除了在初始化时候会利用BIOS提供一些系统参数以外,Linux操作系统在运行时并不使用BIOS中的功能)

2、当计算机系统上电开机或这按了机箱上的复位按钮时,CPU会自动把代码段寄存器CS设置为0xF000,段基地址则被设置为0xFFFF0000处,段长度为64K,IP程序计数器被设置为0xFFF0,因此此时CPU的代码指针指向0xFFFFFFF0,即4G空间的最后一个64K的最后16字节处。此处在系统bios的存储位置区域,而此处存储了一条跳转指令JMP跳转到BIOS代码中64KB范围内的某一条指令开始执行,由于现代PC机一般BIOS的容量都是1M-2M,并且存储在闪存中,因此为了执行访问BIOS中超出64K范围的BIOS代码或数据,BIOS程序首先会使用一种32位的大模式的技术把数据段寄存器的访问范围设置位4G,会后BIOS执行一系列硬件检测和初始化操作后,就会把与原来PC机兼容的64KBIOS代码和数据复制到内存低端1M末端的64K处,然后跳转到这个地方并且让cpu进入真正的实地址工作模式,最后BIOS从硬盘或其他块设备把操作系统引导程序加载到内存0x7C00处,并跳转到0x7C00继续执行

串行控制卡

1、异步串行通信原理

两台计算机/设备进行数据交换,即通信。计算机通信中,把计算机/设备与计算机/设备之间的语言称为通信协议。通信协议中传送一个有效数据长度单位的格式,通常用帧来表示这种格式,通信帧的一般结构包括起始同步信息、传输的实际数据、校验等信息。

串行通信是指在线路上以比特数据流一次一个比特进行传输的通信方式。串行通信可以分为异步与同步,其主要区别在于传输时同步的通信单位或帧的大小不同。同步通信与异步通信的区别就好像两个人交谈,同步通信就像两个人你说一句我说一句。而异步通行就好像两个人交谈不在同一个频道,各说各的。(异步表示一个字符一个字符发送,且无需等待对端响应,同步则是一端一端(该段有特定的含义)发送,且可能需要等待对端给出响应后方才继续发送)

2、异步串行传输的格式

在异步通信规范中,把传送1称为传号,传送0称为空号,当无数据传输时,发送端持续发送传号,而需要发送数据时,则发送端首先发送一个比特位时间间隔的空号。

接收方可能检测出三种错误:奇偶校验错误、过速错误、帧格式错误。

时间: 2024-08-06 03:25:33

linux内核完全注释之微型计算机组成结构的相关文章

linux内核参数注释与优化

转自:http://yangrong.blog.51cto.com/6945369/1321594 目录 1.linux内核参数注释 2.两种修改内核参数方法 3.内核优化参数生产配置 参数解释由网络上收集整理,常用优化参数对比了网上多个实际应用进行表格化整理,使查看更直观. 学习linux也有不少时间了,每次优化linux内核参数时,都是在网上拷贝而使用,甚至别人没有列出来的参数就不管了,难道我就不需要了吗? 参考文章: linux内核TCP相关参数解释 http://os.chinaunix

Linux内核完全注释阅读笔记1:O(1)时间复杂度查找timeout定时器

前言 一直有Linux kernel情节,之前也一直在看Linux kernel相关的书和代码,但是每次到最后又由于兴趣转变而荒废了.这次终于静下心来想把Linux内核相关的代码好好看看,算是对自己的一个沉淀吧.由于之前工作做的是分布式调度这块的东西,也稍微有过分布式文件系统相关的实习经历,所以阅读Linux内核代码的重心可能会往调度和文件系统这两大块倾斜. 个人感觉读读Linux kernel还是蛮有必要的,其实现在各种分布式框架.各种云计算,其实很多的思想都是借鉴Linux kernel的.

Linux内核完全注释之编程语言和环境(一)

as86汇编器 1.来源与对于linux的用途 as86来源minix-386开发的intel 8086.80386汇编编译程序和链接程序,他主要为linux创建16位的启动引导扇区程序boot/bootsect.s和实模式下初始设置程序boot/setup.s的二进制执行代码. 2.语法 as86语法是基于minix系统的汇编 语言语法,与gnu as汇编器的语法不兼容 汇编的命令基本格式: as [option] -o objfile srcfile 3.语句 汇编语言程序srcfile是一

Linux TCP/IP调优-Linux内核参数注释

固定文件的内核参数 下列文件所在目录: /proc/sys/net/ipv4/ 名称 默认值 建议值 描述 tcpsyn_retries 5 1 对于一个新建连接,内核要发送多少个SYN连接请求才决定放弃.不应该大于255,默认值是5,对应于180毫秒左右时间.(对于大负载而物理通信良好的网络来说,这个值偏高,可以修改为2.这个值仅仅是针对对外的连接,对进来的连接,是由tcp_retries1决定) tcp_synack_retries 5 1 对于远端的连接请求SYN,内核会发送SYN+ACK

linux内核学习之进程管理------task_struct结构体

struct task_struct { volatile long state;    /* -1 unrunnable, 0 runnable, >0 stopped */ struct thread_info *thread_info; atomic_t usage; unsigned long flags;    /* per process flags, defined below */ unsigned long ptrace; int lock_depth;     /* Lock

操作系统——Linux内核完全注释011c-3.0

4.2保护模式和内存管理(80X86) 4.21 内存寻址 物理内存 计算机的物理内存是字节的线型数组,每个字节具有一个唯一地物理地址. 地址总线32位,共2^32个不同的物理地址.即内存物理地址空间有4G,总共可以寻址4G字节的物理内存. 小端法 段寻址技术 为了进行内存寻址,80X86使用了段寻址技术.寻址通过段地址+段内偏移地址. 段选择符:16位 段内偏移地址:32位,故一个段最大长度可达4G. 程序中由16位的段和32位的段偏移构成48位地址,称为一个逻辑地址(虚拟地址).它唯一确定了

linux内核编译与开发

一.Linux内核简介linux kernel map: linux 系统体系结构: linux kernel体系结构: arm有7种工作模式,x86也实现了4个不同级别RING0-RING3,RING0级别最高, 这样linux用户代码运行在RING3下,内核运行在RING0,这样系统本身就得到了 充分的保护 用户空间(用户模式)转到内核空间(系统模式)方法: ·系统调用 ·硬件中断 linux kernel 体系结构: 虚拟文件系统VFS: VFS(虚拟文件系统)隐藏各种文件系统的具体细节,

Linux内核经典书籍

1.<Linux内核设计与实现> 本书重在原理.适合入门的最佳图书.作者是为2.6内核加入了抢占的人,对调度部分非常精通,而调度是整个系统的核心,因此本书是很权威的. 2.<深入理解Linux内核> 此书比上一本多了些细节.是Linux内核黑客在推荐图书时的首选.写的比较简单易懂,适合刚刚接触LINUX内核的.此书图表很多,形象地给出了关键数据结构的定义,与<Linux内核源代码情景分析>相比,本书内容紧凑,不会一个问题讲解动辄上百页,有提纲挈领的功用,但是深度上要逊于

和菜鸟一起学linux内核源码之基础准备篇

注:以下大部分内容摘自Linux内核编程入门篇和linux内核完全注释 在工作的这段时间,发现我的visio画图熟悉了点点,总喜欢把什么源码啊,结构啊之类的就当作流程图来画来理解,因为对于图,有一个很直观的认识,所以接下去也是以图为中心. 关于linux内核体系结构 说到操作系统,我们都会知道windows操作系统,linux操作系统,苹果的iOS操作系统,以前很火的塞班操作系统,还有最近消费类电子很火的Android操作系统.一个完整的操作系统分为4个部分. 可以把这个理解为我们用的手机.其中