一个系统有四个基本组成部分:

  • 输入部分:接收系统的数据(键盘等)
  • 处理中心:处理(cpu)
  • 能源部分:处理需要的硬件资源(内存等)
  • 输出部分:显示给用户(显示器等)

计算机系统分为:

计算机系统分为软件系统硬件系统 ,两者相互依存

硬件:计算机的可见部分,物质,可摸得着的。(人的器官)

软件:控制硬件操作和动作的指令流。(大脑思维)

微型计算机组成原理:

一个传统微型计算机硬件组成结构:

cpu通过

地址线:内存或I/O设备的地址(读写的具体位置)

数据线:cpu和内存或I/O设备之间提供数据传输的通道

控制线:读 和 写

内部总线:地址线和数据线都是32位 因此地址空间范围是2的32次方 从0到4GB

和其他部分进行数据通信.

中断控制器:intel8259A

DMA控制器:intel8237A

定时控制器:intel8253定时芯片

键盘控制器intel8042芯片与键盘中的扫描电路进行通信



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

I/O端口和寻址

cpu要访问I/O接口控制器或控制卡上的数据和状态信息,需要找到他们的地址。这种地址就称为I/O端口或简称端口

端口地址的设置方式:统一编址独立编址

  • 端口统一编址:I/O接口控制器将所有端口归入存储器寻址地址空间范围。(存储器映像地址,用访问内存的指令)
  • 端口独立编址:I/O控制器和控制卡的寻址空间单独作为一个独立的地址空间对待。(专门的I/O指令来访问端口)



I/O接口数据传输控制方式:

  • 程序循环查询方式:cpu通过程序中循环查询指定设备控制器的状态来判断是否可以与设备进行数据交换。缺点:特别耗费CPU宝贵时间
  • 中断处理方式:需要有中断控制器的支持相当于cpu中断当前的程序去执行相应的I/O中断处理服务过程,完成后然后去执行以前的程序
  • DMA传输方式:直接存储器访问用于I/O设备与系统内存之间进行批量数据传送,整个过程需要使用专门的DMA控制器来进行而无需CPU插手,这种操作效率很高

主存储器、BIOS和CMOS存储器

主存储器(内存)

以前的DOS操作系统流行年代,640K或1MB内存容量基本上能满足普通应用程序的运行都采用Intel32位CPU,即都是PC/AT计算机。因此CPU的物理内存寻址范围已经高达4GB.

当计算机上电初始化,物理内存被设置从地址0开始的连续区域。除了地址0xA0000到0xFFFFF(640K到1M共384K)和0xFFFE0000到0xFFFFFFFF(4G处的最后一64K)范围以外的所有内存都可以操作系统内存。这两个特定范围被用于I/O设备和BIOS程序。

假设我们的计算机中有16MB的物理内存,

那么在linux0.1x系统中,0--640K将被作用存放内核代码和数据。

640k--1M之间的384K仍然保留用作图中指明的用途。

0xA0000开始的128K用作显示内存缓冲区,,随后部分用于其他控制卡的ROMBIOS或其映射区域。

0xF0000到1M范围用于高端系统ROMBIOS的映射区。

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

另外高速缓存区和内存虚拟盘也会占用内核代码和数据后面的一部分内存区域,该区域通常会跨越640K--1M的区域。

基本输入/输出程序BIOS

存放在ROM中的系统BIOS程序主要用于计算机开机时执行系统的各部分的自检,建立起操作系统需要使用的各种配置表,例如中断向量表,硬盘参数表,提供硬件设备接口服务。由于BIOS的这些服务不具备可重入性(即程序不可并发运行)。

开机时:cpu将段寄存器CS设置为0xF000其段地址则被设置为0xFFFF0000,段长设置为64K IP被设置为0xFFF0,因此cpu代码指针指向0XFFFFFFF0处,即4G空间最后一个64J的最后16字节处(ROMBIOS存放的位置)

BIOS里会存放一条jmp指令跳转到BIOS代码中64KB范围内的某一条指令执行

最后:BIOS就会从硬盘或其他块设备把操作系统引导程序加载到0x7c00处,并跳转到这个地方继续执行引导程序。

CMOS存储器

CMOS(Complementary Metal Oxide Semiconductor,互补金属氧化物半导体)存储器来存放计算机的实时时钟信息和系统硬件配置信息。

CMOS的内存地址空间在基本内存地址空间之外,需要使用I/O指令来访问

中断控制器

两个级联的8259A可编程中断控制芯片组成一个中断控制器,用于实现I/O设备的中断控制数据存取方式,并且为15个设备提供独立的中断控制功能,



DMA控制器

DMA控制器的主要功能是通过让外部设备直接与内存传输数据来增强系统的性能,它由机器上的Intel 8237芯片或其兼容芯片实现。通过对DMA控制器进行编程,外设与内存之间的数据传输能在不受CPU控制的条件下进行。因此在数据传输期间,CPU可以做其他事情。

定时/计数器

用于处理计算机中的精确时间延迟。该芯片提供了3个独立的16位计数器通道。每个通道可工作在不同的工作方式下,并且这些工作方式均可以使用软件来设置。

键盘控制器

当按一个键被按下时,键盘发送的扫描码称为接通码

当松开一个键时,被称为断开码

串行控制卡

  • 通信协议:计算机设备与计算机设备之间的语言(有效数据长度的格式:帧)
  • 帧信息包括:起始同步信息和传输的实际数据和校验信息
  • 串行通信:指在线路上以比特位数据流一次一个比特进行传输的通信方式。包括异步(以字符为单位)和同步串行(多个字符或字节组成的序列作为一个帧数据进行传输)两种类型。他们之间的主要区别在于传输时同步的通信单位或帧的长度不同。

  • 异步串行传输格式

显示控制

硬盘控制(外存储设备,用磁性介质来保存信息)







linux内核笔记(二)微机计算机组成结构的更多相关文章

  1. 《Linux内核分析》 之 计算机是如何工作的

    [李行之原创作品 转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000] <Linux内 ...

  2. Linux内核笔记--内存管理之用户态进程内存分配

    内核版本:linux-2.6.11 Linux在加载一个可执行程序的时候做了种种复杂的工作,内存分配是其中非常重要的一环,作为一个linux程序员必然会想要知道这个过程到底是怎么样的,内核源码会告诉你 ...

  3. 【转载】linux内核笔记之进程地址空间

    原文:linux内核笔记之进程地址空间 进程的地址空间由允许进程使用的全部线性地址组成,在32位系统中为0~3GB,每个进程看到的线性地址集合是不同的. 内核通过线性区的资源(数据结构)来表示线性地址 ...

  4. 【转载】linux内核笔记之高端内存映射

    原文:linux内核笔记之高端内存映射 在32位的系统上,内核使用第3GB~第4GB的线性地址空间,共1GB大小.内核将其中的前896MB与物理内存的0~896MB进行直接映射,即线性映射,将剩余的1 ...

  5. Linux学习笔记(二) 文件管理

    了解 Linux 系统基本的文件管理命令可以帮助我们更好的使用 Linux 系统,以下介绍几个常用的文件管理命令 1.pwd pwd 是 Print Working Directory 的简写,用于显 ...

  6. (笔记)Linux内核学习(二)之进程

    一 进程与线程 进程就是处于执行期的程序,包含了独立地址空间,多个执行线程等资源. 线程是进程中活动的对象,每个线程都拥有独立的程序计数器.进程栈和一组进程寄存器. 内核调度的对象是线程而不是进程.对 ...

  7. Linux 读书笔记 二

    一.实验说明 1. 环境登录 无需密码自动登录,系统用户名shiyanlou,密码shiyanlou 若不小心登出后,直接刷新页面即可 2. 环境使用 完成实验后可以点击桌面上方的“实验截图”保存并分 ...

  8. Linux内核笔记:epoll实现原理(一)

    一.说明 针对的内核版本为4.4.10. 本文只是我自己看源码的简单笔记,如果想了解epoll的实现,强烈推荐下面的文章: The Implementation of epoll(1) The Imp ...

  9. linux内核系列(二)内核数据结构之链表

    双向链表 传统链表与linu内核链表的区别图: 图一 图二 从上图中看出在传统链表中各种不同链表间没有通用性,因为各个数据域不同,而在linux内核中巧妙将链表结构内嵌到数据域结构中使得不同结构之间能 ...

  10. linux内核第一二章总结

    1 Linux内核简介 1 Unix的历史 1.Unix演化版实现了任务管理.换页机制.TCP/IP等新的特性. 2.Unix的特点: Unix很简洁,仅仅提供几百个系统调用并且有一个非常明确的设计目 ...

随机推荐

  1. 移除List的统一逻辑写法 LeetCode 203

    原理:通过创建一个新的结点,放在头结点的前面,作为真正头结点的前驱结点,这样头结点就成为了意义上的非头结点,这样就可以统一操作结点的删除操作. 需要注意的是:这个新的结点是虚拟头结点,真的的头结点依然 ...

  2. Golang每日一库之bcrypt

    本文 官方文档: https://pkg.go.dev/golang.org/x/crypto/bcrypt 前言 之前讲过JWT Token https://www.cnblogs.com/zich ...

  3. 2021-12-19:找到所有数组中消失的数字。 给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1, n] 内。请你找出所有在 [1, n] 范围内但没有出现在 nums

    2021-12-19:找到所有数组中消失的数字. 给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1, n] 内.请你找出所有在 [1, n] 范围内但没有出现在 nums ...

  4. 2021-11-15:四数相加 II。给你四个整数数组 nums1、nums2、nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足:0 <= i,

    2021-11-15:四数相加 II.给你四个整数数组 nums1.nums2.nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足:0 <= ...

  5. pages.json 文件:自定义导航栏

    自定义导航栏使用注意 当navigationStyle设为custom或titleNView设为false时,原生导航栏不显示,此时要注意几个问题: 非H5端,手机顶部状态栏区域会被页面内容覆盖.这是 ...

  6. boot-admin 项目数据库缺省字段设计之最佳实践

    数据库(Database)中的缺省字段(也称为默认字段),就是在一般情况下,每个数据表(Table)必须包含的字段(Field),这类字段用于满足特定的数据需求,字段值的填充或更改一般遵照一定的逻辑要 ...

  7. Python基础 - 运算符优先级

    以下表格列出了从最高到最低优先级的所有运算符: 运算符 描述 ** 指数 (最高优先级) ~ + - 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@) * / % // 乘,除,取模 ...

  8. ODOO13之五:Odoo 13开发之导入、导出以及模块数据

    大多数Odoo 模块的定义,如用户界面和安全规则,实际是存储在对应数据表中的数据记录.模块中的 XML 和 CSV 文件不是 Odoo 应用运行时使用,而是载入数据表的手段.正是因为这个原因,Odoo ...

  9. Java实现Kafka生产者和消费者的示例

    Kafka简介 Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写.Kafka的目标是为处理实时数据提供一个统一.高吞吐.低延迟的平台. 文章持续更新,微信搜索「 ...

  10. python测试系列教程——python+Selenium+chrome自动化测试框架

    需要的环境 浏览器(Firefox/Chrome/IE-) Python Selenium Selenium IDE(如果用Firefox) FireBug.FirePath(如果用Firefox) ...