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

  • 输入部分:接收系统的数据(键盘等)
  • 处理中心:处理(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. java指定时间失效Calendar

    获取第二天的1:30的毫秒数 public static Long getEveryDayTime() { Calendar calendar = Calendar.getInstance(); ca ...

  2. ffmpeg音视频基础学习

    ffmpeg音视频基础学习 从去年开始了解音视频,中间也由于项目的需要,学习过ffmpeg.live555.以及QTAV框架,一直没总结过,现在大致总结下音视频中的常见词汇,后续慢慢更新添加!博客也会 ...

  3. linux高级编程之线程间的通信(pthread_cleanup_push和pthread_cleanup_pop)

    linux高级编程之线程间的通信(pthread_cleanup_push和pthread_cleanup_pop) 线程可以安排他退出时需要调用的函数,这与进程可以用atexit函数安排进程退出时需 ...

  4. dataX源码学习

    文章目录 前言 开始准备 运行配置 开始运行 JobContainer 1.进入init prepare schedule post阶段 this.invokeHooks(); 总结 前言 在用dat ...

  5. 虚拟机的安装与linux系统的使用

    虚拟机的安装与应用 下载安装VMware Workstation Pro 安装成功之后点击创建虚拟机 勾选典型机型 勾选自动检测安装映像文件 设置虚拟机的命名和安装路径 设置磁盘的大小和虚拟磁盘的储存 ...

  6. JavaWeb 中 Filter过滤器

    Filter过滤器 每博一文案 师傅说:人生无坦途,累是必须的背负,看多了,人情人暖,走遍了离合聚散,有时会 在心里对自己说,我想,我是真的累了,小时候有读不完的书,长大后有赚不尽的力. 白天在外要奋 ...

  7. 2022-11-18:给定一个数组arr,表示连续n天的股价,数组下标表示第几天 指标X:任意两天的股价之和 - 此两天间隔的天数 比如 第3天,价格是10 第9天,价格是30 那么第3天和第9天的指

    2022-11-18:给定一个数组arr,表示连续n天的股价,数组下标表示第几天 指标X:任意两天的股价之和 - 此两天间隔的天数 比如 第3天,价格是10 第9天,价格是30 那么第3天和第9天的指 ...

  8. 2020-10-28:go中,好几个go程,其中一个go程panic,会产生什么问题?

    福哥答案2020-10-28: 1.运行时恐慌,当panic被抛出异常后,如果我们没有在程序中添加任何保护措施的话,程序就会打印出panic的详细情况之后,终止运行.2.有panic的子协程里的def ...

  9. Structured Streaming 的异常处理 【Concurrent update to the log. Multiple streaming jobs detected】

    目录 异常信息 一.异常表象原因 1.异常源码: 2.打个断点 二.解决方案 1.可以通过代码指定各分区的开始offset 2.不删除而是更改checkpoint offset下的批次文件 三.异常背 ...

  10. 【GiraKoo】C++编译中常用的内置宏

    开源项目:https://girakoo.com/ 联系方式:girakoo@163.com 简介 针对不同的平台,很多头文件,函数名称,类型占用空间不一致. 为了保证跨平台可编译,经常需要在项目中使 ...