gpt4 book ai didi

c - 在 write (2) 到 stdout 直到字符串显示在 tty 或虚拟 tty 上之后,Linux 中发生了什么?

转载 作者:行者123 更新时间:2023-11-30 18:12:45 25 4
gpt4 key购买 nike

我想知道系统调用 write (2) 到 stdout 直到字符串显示在 tty 或虚拟 tty 上之后发生了什么?换句话说,内核如何接收系统调用并最终让VGA驱动读取并渲染它?该控制流中调用了哪些函数?

很抱歉,我是提问方面的新手,如果您能告诉我如何缩小主题,我将不胜感激,谢谢。

我对此有一个非常简单的理解:

  1. 字符串通过系统调用 write (2) 从用户空间传输到内核空间。
  2. 内核处理它,将字符串放在内存中VGA或其他东西可以读取它的位置。(这是我真正想知道细节的部分)
  3. VGA 驱动程序读取该内存并将其呈现在 tty 上。

有人可以帮我吗?如果你能给出内核中的函数名称,我可以在 LXR 中检查,那就更好了。

最佳答案

据我所知,写入虚拟控制台的典型情况(例如 /dev/tty1):

  1. write(2) 按照您的描述被调用。
  2. write(2) 委托(delegate)(通过 file ops )到 TTY 驱动程序的 tty_write .
  3. TTY 驱动程序委托(delegate)(通过 ldisc ops )到 n_tty 线路规程的 n_tty_write .
  4. n_tty 行纪律委托(delegate)(通过 tty ops )到控制台驱动程序的 con_write .
  5. 控制台驱动程序处理数据,解释控制字符和转义序列,最终redraws the screen通过调用(通过 consw ops )VGA 控制台的 vga_con_switch .
  6. 数据直接 memcpy 到视频内存中由 vgacon_startup 确定的位置。 ,例如0xB0000,熟悉于 OS independent x86 console rendering文学。硬件现在将此视频内存渲染到屏幕上。

对于虚拟控制台以外的终端,例如串行控制台和 xterm,第 4 步以上会发生变化,因为它使用串行 tty 和伪 tty,而不是控制台 tty 驱动程序。

关于c - 在 write (2) 到 stdout 直到字符串显示在 tty 或虚拟 tty 上之后,Linux 中发生了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31705957/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com