From 064214755fb0a39481f5e26a1aa38e0a653fd986 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=AE=B8=E5=A4=A7=E4=BB=99?= <1900919313@qq.com> Date: Mon, 21 Oct 2024 11:06:11 +0800 Subject: [PATCH] c --- docs/notes/01_c-basic/07_xdx/assets/7.png | Bin 0 -> 30036 bytes docs/notes/01_c-basic/07_xdx/assets/8.png | Bin 0 -> 25510 bytes docs/notes/01_c-basic/07_xdx/index.md | 66 +++++++++++----------- 3 files changed, 34 insertions(+), 32 deletions(-) create mode 100644 docs/notes/01_c-basic/07_xdx/assets/7.png create mode 100644 docs/notes/01_c-basic/07_xdx/assets/8.png diff --git a/docs/notes/01_c-basic/07_xdx/assets/7.png b/docs/notes/01_c-basic/07_xdx/assets/7.png new file mode 100644 index 0000000000000000000000000000000000000000..a6c3c822629beab20ce6324c1007859901dec876 GIT binary patch literal 30036 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
Rv_|_#kTdXcHN2!3mVQ>3 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 z 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 literal 0 HcmV?d00001 diff --git a/docs/notes/01_c-basic/07_xdx/assets/8.png b/docs/notes/01_c-basic/07_xdx/assets/8.png new file mode 100644 index 0000000000000000000000000000000000000000..857ff4352ccd28502521a37d98d7a04046c5e16e GIT binary patch literal 25510 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: 按下按键 - Keyboard->>Controller: 生成输入信号 - Controller->>CPU: 发送中断请求 (IRQ) - CPU->>OS: 执行中断处理程序 (ISR) - OS->>OS: 处理输入并存储到缓冲区 (stdin) - Program->>OS: 通过系统调用读取缓冲区数据 - OS->>Program: 返回键盘输入数据 - -``` - - - - - - - -> [!NOTE] +> [!IMPORTANT] > > 其实,C 语言中的 `printf` 函数和 `scanf` 函数,其内部就使用了缓冲区。 > > * ① 当我们使用 `printf` 函数输出数据的时候,数据并不会立即就写出到输出设备(如:屏幕等)。而是先将其放置到 `stdout 缓冲区`中,然后在满足条件的时候,再从缓冲区中刷新到输出设备。 > * ② 当我们使用 `scanf` 函数输入数据的时候,数据并不会立即就从输入设备中读取(如:键盘等)。而是先将其放置到 `stdin 缓冲区`中,然后在满足条件的时候,再从缓冲区中加载数据。 - - ### 1.3.2 如果没有缓冲区,键盘输入的数据是怎么到达程序的? +* 当我们在键盘上输入数据并传递给程序时,通常会经历如下的几个步骤: + * ① `键盘生成输入信号`:当我们在键盘上按下某个键的时候,键盘会将这个动作转换为对应的电信号,传递给键盘控制器。 + * ② `键盘控制器发送中断信号`:键盘控制器检测到按键动作,向 CPU 发送`中断请求`,通知操作系统有输入数据。 + * ③ `操作系统处理输入`:操作系统接收到`中断信号`后,立即获取键盘数据并处理。由于没有缓冲区,操作系统必须将数据立即传递给程序。 + * ④ `程序直接读取数据`:程序必须在键盘每次输入后立即读取数据,并且处理这个输入,不会有任何数据被暂存或积累。 +> [!NOTE] +> +> 如果没有缓冲区,键盘输入的数据将无法有效地被程序管理和处理,系统的工作效率会显著下降,具体影响体现在以下几个方面: +> +> * ① `程序与设备的频繁交互`:在没有缓冲区的情况下,程序需要直接与键盘设备进行交互。这意味着每次按键输入,操作系统都必须立即将数据传递给程序处理。这样会带来以下问题: +> * **频繁的 I/O 操作**:每一次键盘输入都会触发一个 I/O 操作,将数据直接传输给程序。程序必须每次都立即响应输入设备,执行读操作,导致程序处理器频繁被中断。 +> * **实时响应要求**:程序需要时刻等待并响应输入,哪怕是输入非常小的数据(比如一个字符),程序都必须立即读取并处理。这对程序的设计提出了很高的实时性要求,可能会降低程序的运行效率。 +> * ② `处理效率低下`:由于没有缓冲区,程序无法积累多个输入数据再进行批量处理。每一次输入必须立即处理,程序执行的效率会受到影响: +> - **I/O 阻塞**:程序可能会因为等待输入设备的响应而阻塞。没有缓冲区的情况下,程序不能继续执行其他任务,必须等待每一次输入完成后才能继续执行其他操作。 +> - **浪费系统资源**:程序频繁地切换到处理I/O操作,导致处理器资源被大量占用。在处理较大数据量时,这种方式的效率极低,容易造成资源浪费。 +> * ③ `用户体验差`:从用户角度来看,程序对键盘输入的响应会显得非常僵硬,无法处理多个输入操作的积累: +> - **输入延迟**:程序必须实时处理每个键盘输入,用户输入数据的速度一旦超过程序的处理能力,可能导致输入延迟或丢失输入。 +> - **无法处理复杂输入**:如果用户需要输入多个字符或进行复杂的输入操作(比如连续输入多个命令),程序可能难以一次性正确处理,因为它只能逐一处理每一个输入,而无法一次性获取多个输入进行批量处理。 +* 其对应的图示,如下所示: +![](./assets/8.png) + +> [!IMPORTANT] +> +> 其实,C 语言中的 `printf` 函数和 `scanf` 函数,其内部就使用了缓冲区。 +> +> * ① 当我们使用 `printf` 函数输出数据的时候,数据并不会立即就写出到输出设备(如:屏幕等)。而是先将其放置到 `stdout 缓冲区`中,然后在满足条件的时候,再从缓冲区中刷新到输出设备。 +> * ② 当我们使用 `scanf` 函数输入数据的时候,数据并不会立即就从输入设备中读取(如:键盘等)。而是先将其放置到 `stdin 缓冲区`中,然后在满足条件的时候,再从缓冲区中加载数据。