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

  • 输入部分:接收系统的数据(键盘等)
  • 处理中心:处理(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. Prism Sample 7 Modules Directory

    这种方式用扫描目录的方式来增加模块,具备最大的灵活性 仍然在App.xaml.cs中增加了以下代码 protected override IModuleCatalog CreateModuleCata ...

  2. Windows亚克力特效代码实现(Dev c++可以编译通过)

    #include <windows.h> #include <dwmapi.h> // 定义一个枚举类型,表示不同的窗口组合状态 enum AccentState { ACCE ...

  3. PaddlePaddle 飞桨复现 VGG16

    import paddle.nn as nn class VGG16(nn.Layer): def __init__(self, num_classes=1000): super(VGG16, sel ...

  4. 2021-02-06:假设字符串str长度为N,请问最长回文子串的长度是多少?

    福哥答案2021-02-06: 1.动态规划.无代码,见图.2.中心扩展法.无代码.3.Manacher算法.有代码,见图.1)理解回文半径数组.2)理解所有中心的回文最右边界R,和取得R时的中心点C ...

  5. 2022-05-23:给定一个数组arr,你可以随意挑选其中的数字, 但是你挑选的数中,任何两个数a和b,必须Math.abs(a - b) > 1。 返回你最多能挑选几个数。 来自美团。

    2022-05-23:给定一个数组arr,你可以随意挑选其中的数字, 但是你挑选的数中,任何两个数a和b,必须Math.abs(a - b) > 1. 返回你最多能挑选几个数. 来自美团. 答案 ...

  6. vue全家桶进阶之路36:Vue3 全局路由useRouter和本地路由useRoute

    在 Vue.js 3.x 中,我们可以使用 useRouter 和 useRoute 来获取当前路由对象和当前路由信息. useRouter useRouter 可以用来获取当前路由对象.我们可以通过 ...

  7. vue全家桶进阶之路6:Vue的安装以及js引入

    1.安装 注意:Vue 不支持 IE8 及以下版本 创建一个文件夹用于下载引入Vue D:\BaiduSyncdisk\vue2 按照最新版本的Vue npm install vue 创建完成后便可以 ...

  8. springboot 多环境配置及配置文件的位置

    了解即可

  9. python基础:重新认识装饰器

    Python中的装饰器是你进入Python大门的一道坎,不管你跨不跨过去它都在那里. 为什么需要装饰器 我们假设你的程序实现了say_hello()和say_goodbye()两个函数. def sa ...

  10. 基于 Dash Bio 的生物信息学数据可视化

    Dash 是用于搭建响应式 Web 应用的 Python 开源库.Dash Bio 是面向生物信息学,且与 Dash 兼容的组件,它可以将生物信息学领域中常见的数据整合到 Dash 应用程序,以实现响 ...