首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >《计算机组成原理》第 5 章 - 输入输出系统

《计算机组成原理》第 5 章 - 输入输出系统

作者头像
啊阿狸不会拉杆
发布2026-01-21 11:30:16
发布2026-01-21 11:30:16
970
举报

接口的类型

🔍 5.1 概述

🔵 5.1.1 输入输出系统的发展概况
  • 发展阶段
    1. 早期阶段(CPU 直接控制)
    2. 接口模块阶段(程序查询 / 中断方式)
    3. DMA 阶段(直接内存访问)
    4. 通道与 I/O 处理机阶段(独立控制)

🖥️ 5.2 I/O 设备

🔵 5.2.1 概述
  • 分类
    • 输入设备:键盘、鼠标、扫描仪
    • 输出设备:显示器、打印机、绘图仪
    • 存储设备:硬盘、U 盘、光盘
🔵 5.2.2 输入设备

📌 键盘模拟案例(Java 实现)

代码语言:javascript
复制
// 键盘输入模拟程序
import java.util.Scanner;

public class KeyboardSimulator {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in); // 模拟键盘输入接口
        System.out.println("请输入字符:");
        
        while (scanner.hasNextLine()) { // 循环查询输入状态
            String input = scanner.nextLine(); // 获取输入数据
            System.out.println("接收到输入:" + input);
            if ("exit".equals(input)) { // 退出条件
                break;
            }
        }
        scanner.close(); // 关闭输入通道
    }
}
🔵 5.2.3 输出设备

📌 显示器输出案例(Java 实现)

代码语言:javascript
复制
// 显示器输出模拟程序
public class MonitorSimulator {
    public static void displayText(String text) {
        // 模拟显示器缓冲区写入
        System.out.println("【显示器输出】:" + text); 
    }

    public static void main(String[] args) {
        String[] messages = {"Hello, I/O System!", "计算机组成原理"};
        for (String msg : messages) {
            displayText(msg); // 调用输出接口
            try {
                Thread.sleep(1000); // 模拟扫描输出延迟
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}
🔵 5.2.4 其他 I/O 设备
  • 案例:磁盘 I/O 操作(伪代码示意)
代码语言:javascript
复制
# 伪代码:磁盘读写流程
def disk_io(operation, data=None):
    if operation == "read":
        return fetch_data_from_disk() # 从磁盘物理扇区读取
    elif operation == "write":
        write_data_to_disk(data) # 写入磁盘缓冲区
    update_file_table() # 更新文件索引表
🔵 5.2.5 多媒体技术
  • 关键设备
    • 声卡:处理音频输入输出
    • 显卡:图形渲染与显示控制
    • 摄像头:视频采集设备

🚀 5.3 I/O 接口

🔵 5.3.1 概述
  • 接口作用
    • 实现主机与外设的速度匹配
    • 完成数据格式转换
    • 提供设备选择和控制信号
🔵 5.3.2 接口的功能和组成

📌 接口组成示意图

🔵 5.3.3 接口类型

分类方式

类型

典型应用

数据传输方式

并行接口

打印机

串行接口

串口硬盘

总线类型

PCI 接口

显卡

USB 接口

外设通用连接

🕵️ 5.4 程序查询方式

🔵 5.4.1 程序查询流程

📌 流程图

🔵 5.4.2 程序查询方式的接口电路

📌 Java 模拟接口类

代码语言:javascript
复制
// 程序查询方式接口模拟
public class PollingInterface {
    private boolean deviceReady = false; // 设备状态寄存器
    
    // 查询设备状态
    public boolean checkStatus() {
        return deviceReady; // 模拟读取状态寄存器
    }
    
    // 数据传输方法
    public void transferData(String data) {
        if (checkStatus()) {
            System.out.println("数据传输成功:" + data);
            deviceReady = false; // 重置状态
        } else {
            System.out.println("设备忙,等待中...");
        }
    }
    
    // 模拟设备就绪事件
    public void simulateDeviceReady() {
        this.deviceReady = true;
    }
}

🚨 5.5 程序中断方式

🔵 5.5.1 中断的概念
  • 核心思想:外设主动向 CPU 发送请求,CPU 暂停当前任务转去处理中断
🔵 5.5.2 I/O 中断的产生

📌 中断请求逻辑(伪代码)

代码语言:javascript
复制
# 中断请求寄存器操作
def generate_interrupt():
    interrupt_request_flag = True  # 设置中断请求标志
    if interrupt_mask == 0:        # 中断屏蔽位允许
        send_interrupt_signal()    # 向CPU发送中断信号
🔵 5.5.3 程序中断方式的接口电路

📌 中断接口组成图

🔵 5.5.4 I/O 中断处理过程

📌 流程图

🔵 5.5.5 中断服务程序的流程

📌 Java 中断处理模拟

代码语言:javascript
复制
// 中断服务程序模拟
public class InterruptService {
    // 保存现场
    public static void saveContext() {
        System.out.println("保存当前程序状态...");
    }
    
    // 中断处理逻辑
    public static void handleInterrupt() {
        System.out.println("处理I/O设备请求...");
        // 具体设备操作代码
    }
    
    // 恢复现场
    public static void restoreContext() {
        System.out.println("恢复程序执行环境...");
    }
    
    // 中断响应入口
    public static void interruptResponse() {
        saveContext();
        handleInterrupt();
        restoreContext();
    }
}

🚄 5.6 DMA 方式

🔵 5.6.1 DMA 方式的特点
  • 核心优势:不经过 CPU 直接在内存与外设间传输数据
  • 适用场景:大批量数据传输(如磁盘读写)
🔵 5.6.2 DMA 接口的功能和组成

📌 DMA 接口组成表

组件

功能描述

数据寄存器

暂存传输数据

地址寄存器

存储内存 / 外设地址

控制寄存器

设置传输模式 / 字数

状态寄存器

指示传输状态

🔵 5.6.3 DMA 的工作过程

📌 流程图

🔵 5.6.4 DMA 接口的类型
  • 选择型 DMA 接口:同一时间为一个设备服务
  • 多路型 DMA 接口:可交替为多个设备服务

📊 全章思维导图

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-05-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 接口的类型
    • 🔍 5.1 概述
      • 🔵 5.1.1 输入输出系统的发展概况
    • 🖥️ 5.2 I/O 设备
      • 🔵 5.2.1 概述
      • 🔵 5.2.2 输入设备
      • 🔵 5.2.3 输出设备
      • 🔵 5.2.4 其他 I/O 设备
      • 🔵 5.2.5 多媒体技术
    • 🚀 5.3 I/O 接口
      • 🔵 5.3.1 概述
      • 🔵 5.3.2 接口的功能和组成
      • 🔵 5.3.3 接口类型
    • 🕵️ 5.4 程序查询方式
      • 🔵 5.4.1 程序查询流程
      • 🔵 5.4.2 程序查询方式的接口电路
    • 🚨 5.5 程序中断方式
      • 🔵 5.5.1 中断的概念
      • 🔵 5.5.2 I/O 中断的产生
      • 🔵 5.5.3 程序中断方式的接口电路
      • 🔵 5.5.4 I/O 中断处理过程
      • 🔵 5.5.5 中断服务程序的流程
    • 🚄 5.6 DMA 方式
      • 🔵 5.6.1 DMA 方式的特点
      • 🔵 5.6.2 DMA 接口的功能和组成
      • 🔵 5.6.3 DMA 的工作过程
      • 🔵 5.6.4 DMA 接口的类型
    • 📊 全章思维导图
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档