草庐IT

linux - Linux 内核中磁盘文件的 I/O 缓冲区缓存

我对磁盘文件的内核I/O缓存有疑问。据我所知,当write()或read()被调用时,内核空间中有一个缓冲区缓存用于磁盘文件I/O操作。我的问题是,这个I/O缓冲只适用于磁盘文件,还是它也适用于终端、FIFO、管道和套接字?谢谢 最佳答案 它被称为“页面缓存”。它由文件支持的页面和交换支持的“匿名页面”组成。这些都是Linux虚拟内存(VM)子系统的一部分。它不用于TTY、FIFO、管道或套接字。它们中的每一个都在本质上提供了自己的缓冲。例如,您写入管道的数据在被再次读出之前必须驻留在某个地方。但该缓冲与VM子系统无关。[更新]请注

linux - Linux 内核中磁盘文件的 I/O 缓冲区缓存

我对磁盘文件的内核I/O缓存有疑问。据我所知,当write()或read()被调用时,内核空间中有一个缓冲区缓存用于磁盘文件I/O操作。我的问题是,这个I/O缓冲只适用于磁盘文件,还是它也适用于终端、FIFO、管道和套接字?谢谢 最佳答案 它被称为“页面缓存”。它由文件支持的页面和交换支持的“匿名页面”组成。这些都是Linux虚拟内存(VM)子系统的一部分。它不用于TTY、FIFO、管道或套接字。它们中的每一个都在本质上提供了自己的缓冲。例如,您写入管道的数据在被再次读出之前必须驻留在某个地方。但该缓冲与VM子系统无关。[更新]请注

linux - 编译到内核中的驱动程序的 init 函数调用

在Linux中,如果设备驱动程序被构建为可加载的内核模块,那么在插入设备驱动程序内核模块时,内核会调用module_init()宏所指出的设备驱动程序的init函数。这对于静态编译到内核中的设备驱动程序是如何工作的?他们的init函数是如何调用的? 最佳答案 内置驱动程序的init例程仍然可以使用module_init()宏来声明该入口点。或者当驱动程序永远不会被编译为可加载模块时,驱动程序可以使用device_initcall()。或者要在引导序列的早期移动其初始化,驱动程序可以使用subsys_initcall()。在inclu

linux - 编译到内核中的驱动程序的 init 函数调用

在Linux中,如果设备驱动程序被构建为可加载的内核模块,那么在插入设备驱动程序内核模块时,内核会调用module_init()宏所指出的设备驱动程序的init函数。这对于静态编译到内核中的设备驱动程序是如何工作的?他们的init函数是如何调用的? 最佳答案 内置驱动程序的init例程仍然可以使用module_init()宏来声明该入口点。或者当驱动程序永远不会被编译为可加载模块时,驱动程序可以使用device_initcall()。或者要在引导序列的早期移动其初始化,驱动程序可以使用subsys_initcall()。在inclu

linux - 是否可以关闭 linux 内核并在实模式下恢复?

假设我想在我的普通操作系统启动之前启动一个小型Linux发行版。BIOS加载MBR并执行MBR。MBR定位事件分区,这是我的linux分区。Linux启动,我执行我需要做的事情。Linux关闭,我再次切换到实模式。加载原始分区引导扇区并启动我的普通操作系统。据我所知,第4步将是一项艰巨的任务,在linux之前恢复所有设备上的状态,INT13h会起作用吗?我需要恢复中断向量表吗?仅举几例。这可能已经在任何现有项目中完成了吗? 最佳答案 Linux通常不支持这一点,特别是因为它以BIOS和DOS程序可能不希望的方式重新初始化硬件。然而,

linux - 是否可以关闭 linux 内核并在实模式下恢复?

假设我想在我的普通操作系统启动之前启动一个小型Linux发行版。BIOS加载MBR并执行MBR。MBR定位事件分区,这是我的linux分区。Linux启动,我执行我需要做的事情。Linux关闭,我再次切换到实模式。加载原始分区引导扇区并启动我的普通操作系统。据我所知,第4步将是一项艰巨的任务,在linux之前恢复所有设备上的状态,INT13h会起作用吗?我需要恢复中断向量表吗?仅举几例。这可能已经在任何现有项目中完成了吗? 最佳答案 Linux通常不支持这一点,特别是因为它以BIOS和DOS程序可能不希望的方式重新初始化硬件。然而,

linux - 单步调试 Linux 内核源代码?

我的目标是学习Linux的工作原理。我知道那里有更小的内核——我有Minix的书,但问题是虽然教授概念是可以的——我真的很想学习linux内核的细节。我有一份linux内核源代码。是否有任何技术可以让我“启动”此源代码并以某种方式单步执行代码以便我可以看到发生了什么?如果没有,下一个最好的技术是什么来准确了解正在发生的事情(包括推荐的书籍、博客、技术文档等)?编辑源代码是否有针对特定操作系统领域的良好文档? 最佳答案 您可以在“用户模式​​Linux”架构中构建内核,并在另一个(Linux)操作系统中将其作为正常进程运行。(提示:R

linux - 单步调试 Linux 内核源代码?

我的目标是学习Linux的工作原理。我知道那里有更小的内核——我有Minix的书,但问题是虽然教授概念是可以的——我真的很想学习linux内核的细节。我有一份linux内核源代码。是否有任何技术可以让我“启动”此源代码并以某种方式单步执行代码以便我可以看到发生了什么?如果没有,下一个最好的技术是什么来准确了解正在发生的事情(包括推荐的书籍、博客、技术文档等)?编辑源代码是否有针对特定操作系统领域的良好文档? 最佳答案 您可以在“用户模式​​Linux”架构中构建内核,并在另一个(Linux)操作系统中将其作为正常进程运行。(提示:R

c - 如何在 Linux 中使用新内核编译模块

切换到Ubuntu13.10后,我需要为新内核编译设备驱动程序。调用make会导致2个错误:error:implicitdeclarationoffunction‘kzalloc’error:implicitdeclarationoffunction‘kfree’相同的make命令在Ubuntu13.04中运行良好,但现在失败了。我还检查了KDIR:=/lib/modules/$(shelluname-r)/build在Makefile中使用,解析后变为/lib/modules/3.11.0-18-generic/build。与此modulecompilationguide相比,Mak

c - 如何在 Linux 中使用新内核编译模块

切换到Ubuntu13.10后,我需要为新内核编译设备驱动程序。调用make会导致2个错误:error:implicitdeclarationoffunction‘kzalloc’error:implicitdeclarationoffunction‘kfree’相同的make命令在Ubuntu13.04中运行良好,但现在失败了。我还检查了KDIR:=/lib/modules/$(shelluname-r)/build在Makefile中使用,解析后变为/lib/modules/3.11.0-18-generic/build。与此modulecompilationguide相比,Mak