怎么理解直接程序控制和中断方式?

直接程序控制 

看完之后是不是依然一头雾水?来看下面两个例子

无条件传送

假设你正在使用键盘打字。当你敲击键盘上的一个键时,键盘会立即产生一个信号(即输入数据),并且这个信号会立即被电脑接收。在这个过程中,电脑并没有去查询键盘是否准备好发送数据,而是直接接收了这个信号。因为键盘这种输入设备非常简单,它总是准备好发送数据给电脑。

程序查询控制

假设你正在使用电脑看电影,并且想要通过键盘上的某个按键来控制电影的播放或暂停。当你按下这个按键时,电脑并不会立即响应,而是会首先查询这个按键是否确实被按下了(即查询外设状态)。如果按键确实被按下,并且电影播放软件也准备好接收这个指令(即外设准备好接收数据),那么电脑才会执行相应的操作(如暂停或播放电影)。

在这个过程中,电脑需要花费一定的时间(比如几个微秒或毫秒)去查询按键的状态和电影播放软件的状态。虽然这个时间对于人类来说非常短暂,但对于电脑来说却是可以感知的。

中断方式

想象一下你正在使用电脑编写一个文本编辑器,并且你正在通过键盘输入文字。在这种情况下,键盘输入可以视为一个中断源,因为它会在你按下键时产生中断请求。

  1. 正常工作状态
    当文本编辑器在屏幕上等待用户输入时,CPU正在执行其他任务,比如处理图形界面、响应其他用户操作等。此时,键盘处于空闲状态,等待用户按下按键。

  2. 中断请求
    一旦你按下键盘上的一个键,键盘控制器会检测到这个事件,并生成一个中断请求信号。这个信号会被发送到CPU的中断控制器(也称为中断处理器或中断服务程序)。

  3. 中断响应
    CPU在接收到中断请求后,会暂停当前正在执行的任务(即保存当前的状态和上下文),并跳转到中断服务程序(也称为中断处理程序或中断服务例程)去处理这个中断请求。对于键盘输入的中断,中断服务程序会读取键盘控制器中的按键信息,并将其传递给操作系统或应用程序。

  4. 中断处理
    操作系统或应用程序在接收到键盘输入的按键信息后,会进行相应的处理。在这个例子中,文本编辑器会将按键信息转换为对应的字符,并将其插入到编辑器的文本缓冲区中。

  5. 恢复执行
    当中断处理完成后,中断服务程序会恢复CPU之前的状态和上下文,并将控制权交还给CPU。CPU会从之前被打断的地方继续执行原来的任务。

总结

虽然都是I/O输入/输出,但是中断方式CPU无须等待,利用率得到大大提升。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/16231.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

比较两列数据

点其中一个数据 删掉S,回车 大的标红

v-cloak 用于在 Vue 实例渲染完成之前隐藏绑定的元素

如果你是后端开发者&#xff08;php&#xff09;&#xff0c;在接触一些vue2开发的后台时&#xff0c;会发现有这段代码&#xff1a; # CDN <script src"https://cdn.jsdelivr.net/npm/vue2/dist/vue.js"></script> # 或 <script src"https://cd…

三十六计的笔记

系列文章目录 三十六计的笔记 文章目录 系列文章目录1、瞒天过海2、围魏救赵3、借刀杀人4、以逸待劳5、趁火打劫6、声东击西7、无中生有8、暗渡陈仓9、隔岸观火10、笑里藏刀11、李代桃僵12、顺手牵羊13、打草惊蛇14、借尸还魂15、调虎离山16、欲擒故纵17、抛砖引玉18、擒贼擒王…

MongoDB 单点 Docker 启动及其持久化配置

MongoDB 单点 Docker 启动及其持久化配置 Docker Image Version mongodb/mongodb-community-server:5.0-ubuntu2004 单点删除 docker rm -f mongo-single单点启动 docker run -d --name mongo-single --log-driverjson-file \ --log-opt max-size100m --log-opt max-file3…

9.3 Go语言入门(变量声明和函数调用)

Go语言入门&#xff08;变量声明和函数调用&#xff09; 目录二、变量声明和函数调用1. 变量声明1.1 使用 var 关键字声明1.2 简短声明1.3 零值1.4 常量 2. 函数调用2.1 函数定义2.2 多个返回值2.3 命名返回值2.4 可变参数2.5 匿名函数和闭包 目录 Go 语言&#xff08;Golang&a…

粤嵌—2024/5/21—打家劫舍(✔)

代码实现&#xff1a; int rob(int *nums, int numsSize) {if (numsSize 1) {return nums[0];}if (numsSize 2) {return fmax(nums[0], nums[1]);}int dp[numsSize];dp[0] nums[0];dp[1] fmax(nums[0], nums[1]);for (int i 2; i < numsSize; i) {dp[i] fmax(dp[i - 1…

安全性基础知识

文章目录 1.计算机安全概述2.网络攻击3.两类密码体制4.数字签名与消息摘要5.网络安全 1.计算机安全概述 计算机安全可包括安全管理、通信与网络安全、密码学、安全体系及模型、容错与容灾、涉及安全的应用程序及系统开发、法律、犯罪及道德规范等领域。 信息安全的5个基本要素…

高中数学:平面向量-正交分解、坐标表示、坐标运算

一、正交分解 二、坐标表示 这里注意一点 坐标A(x,y)与向量 a → \mathop{a}\limits ^{\rightarrow} a→的坐标记作&#xff1a; a → \mathop{a}\limits ^{\rightarrow} a→(x,y)&#xff0c;表示方式的区别 引申 三、加减运算的坐标表示 四、数乘运算的坐标表示 引申 两向量…

Flutter 中的 PhysicalShape 小部件:全面指南

Flutter 中的 PhysicalShape 小部件&#xff1a;全面指南 在Flutter中&#xff0c;PhysicalShape小部件是一个能够为子组件添加物理效果的边框和阴影的装饰性小部件。它能够模拟真实世界中物体的立体感&#xff0c;通过在子组件的周围创建一个可自定义的形状&#xff0c;并添加…

Go微服务: Nacos的搭建和基础API的使用

Nacos 概述 文档&#xff1a;https://nacos.io/docs/latest/what-is-nacos/搭建&#xff1a;https://nacos.io/docs/latest/quickstart/quick-start-docker/有很多种搭建方式&#xff0c;我们这里使用 docker 来搭建 Nacos 的搭建 这里&#xff0c;我们选择单机模式&#xf…

JVM CMS 在Full GC时针对跨代引用的优化

个人博客 JVM CMS 在Full GC时针对跨代引用的优化 | iwts’s blog 跨代引用问题 Full GC慢的一个很重要的问题&#xff1a;跨代引用。 简单描述就是&#xff1a; 现代JVM一般是根据对象存活的特性进行了分代&#xff0c;提高了垃圾收集的效率。但是像在回收新生代的时候&a…

pytest-sugar插件:对自动化测试用例加入进度条

摘要 在自动化测试过程中&#xff0c;测试进度的可视化对于开发者和测试工程师来说非常重要。本文将介绍如何使用pytest-sugar插件来为pytest测试用例添加进度条&#xff0c;从而提升测试的可读性和用户体验。 1. 引言 自动化测试是软件开发过程中不可或缺的一部分&#xff…

Linux系统命令traceroute详解(语法、选项、原理和实例)

目录 一、traceroute概述 二、语法 1、基本语法 2、命令选项 三、帮助信息 四、示例 1. 使用默认模式&#xff08;ICMP Echo&#xff09;追踪到目标主机 2. 使用UDP模式&#xff08;需要root权限&#xff09;追踪到目标主机 3. 不解析IP地址为主机名&#xff0c;直接显…

K8s Pod 资源进阶

文章目录 K8s Pod 资源进阶pod 资源限制限制资源单位 资源限制实战Pod 服务质量QosDownward API可注入的元数据信息环境变量方式注入元数据存储卷方式注入元数据为注册服务注入Pod 名称为 JVM 注入堆内存限制 K8s Pod 资源进阶 pod 资源限制 资源限制的方法&#xff1a; Req…

厨房防蟑螂3个避坑细节

厨房发黑有蟑螂咋办      检查3个地方&#xff0c;想要厨房卫生干净      1&#xff0c;台面和墙中间这个缝别用美缝剂&#xff0c;      不想后期剁骨头开裂进水&#xff0c;就用有弹性的防霉玻璃胶      2&#xff0c;水槽的下水管用u型存水弯      可以…

纯电动汽车硬件在环测试

纯电动汽车硬件在环测试技术研究综述 1、新能源汽车概述 随着新能源汽车“电动化、智能化、网联化、共享化”进程的不断推进&#xff0c;新能源汽车的整体性能得到显著提高&#xff0c;纯电动汽车已经逐渐走进大众视野&#xff0c;消费者对于新能源汽车的认可度和购买欲望也稳…

Crontab 自动脚本实例 | 校园网保持联网

唠唠闲话 自动化脚本的用途广泛&#xff0c;比如自动挂载磁盘&#xff0c;自动登录校园网等。本篇将介绍 crontab 这一自动脚本执行工具。 Crontab 简介 crontab 是类 Unix 操作系统中用于设置周期性执行任务的工具。crontab&#xff08;代表 “cron table”&#xff09;允许…

php 设置时区

date_default_timezone_set() 设置所有日期/时间函数使用的默认时区 除了在脚本中使用此函数设置默认时区&#xff0c;还可以使用 INI 设置 date.timezone 设置默认时区。 参数 timezoneId 时区标识符&#xff0c;像 UTC、Africa/Lagos、Asia/Hong_Kong 或 Europe/Lisbon。…

Element-UI详解

Element-UI详解 一、Element-UI的特点1. 完整性2. 易用性3. 美观性4. 可扩展性 二、Element-UI的安装和使用1. 安装2. 引入 Element-UI3. 使用组件 三、核心组件详解1. 布局组件示例 2. 表单组件示例 3. 数据展示组件示例 4. 反馈组件示例 5. 导航组件示例 四、Element-UI的应用…

Codeforces Round 927 (Div. 3) D. Card Game 题解 贪心

Card Game 题目描述 Two players are playing an online card game. The game is played using a 32-card deck. Each card has a suit and a rank. There are four suits: clubs, diamonds, hearts, and spades. We will encode them with characters ‘C’, ‘D’, ‘H’, …