草庐IT

linux - 我可以阅读 Linux 内核的哪些部分以获得乐趣?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题吗?更新问题,以便editingthispost提供事实和引用来回答它.关闭7年前。Improvethisquestion编程不是我的主要工作,尽管我喜欢它并且有时会为此获得报酬。多年来,我一直在听说Linux,我的friend向我展示了许多*nix(或*nici?),尽管我坚持使用MacOS。您认为Linux内核的哪些部分是我喜欢看的,可以帮助我理解全部内容是什么?例如,Linux与Darwin有何不同?我是在汇编程序和DOS环境下长大的,因此中断或低级C之类的东西不应该成为理解的障碍。但最后我对高级概念更

linux - initrd 和 initramfs 的区别?

据我所知,initrd充当block设备,因此需要文件系统驱动程序(例如ext2)。内核必须至少有一个内置模块用于检测initrd的文件系统。在这篇文章中,Introducinginitramfs,anewmodelforinitialRAMdisks,是这样写的:Butramdisksactuallywasteevenmorememoryduetocaching.Linuxisdesignedtocacheallfilesanddirectoryentriesreadfromorwrittentoblockdevices,soLinuxcopiesdatatoandfromthera

linux - initrd 和 initramfs 的区别?

据我所知,initrd充当block设备,因此需要文件系统驱动程序(例如ext2)。内核必须至少有一个内置模块用于检测initrd的文件系统。在这篇文章中,Introducinginitramfs,anewmodelforinitialRAMdisks,是这样写的:Butramdisksactuallywasteevenmorememoryduetocaching.Linuxisdesignedtocacheallfilesanddirectoryentriesreadfromorwrittentoblockdevices,soLinuxcopiesdatatoandfromthera

linux - 什么是抢占/什么是可抢占内核?到底有什么好处呢?

用你自己的话解释一下,什么是抢占,它对(linux)内核意味着什么?拥有可抢占内核的优点和缺点是什么? 最佳答案 抢占式多任务-在单个处理器上运行多个进程/线程,当实际上每个都被分配了小的多路复用时间片来运行时,创造了它们同时运行的错觉。当一个进程被调度为不执行时,它被“抢占”并且等待下一个时间片运行。抢占式内核是可以在执行代码(例如响应系统调用)的过程中被中断的内核,以执行其他操作并运行其他线程,可能是那些不在内核中的线程。抢占式内核的主要优点是系统调用不会阻塞整个系统。如果一个系统调用需要很长时间才能完成,那么这并不意味着内核在

linux - 什么是抢占/什么是可抢占内核?到底有什么好处呢?

用你自己的话解释一下,什么是抢占,它对(linux)内核意味着什么?拥有可抢占内核的优点和缺点是什么? 最佳答案 抢占式多任务-在单个处理器上运行多个进程/线程,当实际上每个都被分配了小的多路复用时间片来运行时,创造了它们同时运行的错觉。当一个进程被调度为不执行时,它被“抢占”并且等待下一个时间片运行。抢占式内核是可以在执行代码(例如响应系统调用)的过程中被中断的内核,以执行其他操作并运行其他线程,可能是那些不在内核中的线程。抢占式内核的主要优点是系统调用不会阻塞整个系统。如果一个系统调用需要很长时间才能完成,那么这并不意味着内核在

linux - 有没有办法找出使用 Linux 内核模块的内容?

如果我加载内核模块并使用lsmod列出加载的模块,我可以得到模块的“使用计数”(引用该模块的其他模块的数量)。但是,有没有办法弄清楚使用模块的内容?问题是我正在开发的模块坚持其使用计数为1,因此我不能使用rmmod卸载它,但它的“by”列是空的。这意味着每次我想重新编译和重新加载模块时,我都必须重新启动机器(或者,至少,我想不出任何其他方法来卸载它)。 最佳答案 实际上,似乎有一种方法可以列出声明模块/驱动程序的进程——但是,我还没有看到它的广告(在Linux内核文档之外),所以我会在这里记下我的笔记:首先,非常感谢@haggai_

linux - 有没有办法找出使用 Linux 内核模块的内容?

如果我加载内核模块并使用lsmod列出加载的模块,我可以得到模块的“使用计数”(引用该模块的其他模块的数量)。但是,有没有办法弄清楚使用模块的内容?问题是我正在开发的模块坚持其使用计数为1,因此我不能使用rmmod卸载它,但它的“by”列是空的。这意味着每次我想重新编译和重新加载模块时,我都必须重新启动机器(或者,至少,我想不出任何其他方法来卸载它)。 最佳答案 实际上,似乎有一种方法可以列出声明模块/驱动程序的进程——但是,我还没有看到它的广告(在Linux内核文档之外),所以我会在这里记下我的笔记:首先,非常感谢@haggai_

c - 什么是 vdso 和 vsyscall?

我做了sudocat/proc/1/maps-vv我正在尝试理解输出。我可以看到许多共享库按预期映射到内存映射段。7f3c00137000-7f3c00179000r-xp0000000008:0121233923/lib/x86_64-linux-gnu/libdbus-1.so.3.5.87f3c00179000-7f3c00379000---p0004200008:0121233923/lib/x86_64-linux-gnu/libdbus-1.so.3.5.87f3c00379000-7f3c0037a000r--p0004200008:0121233923/lib/x86_

c - 什么是 vdso 和 vsyscall?

我做了sudocat/proc/1/maps-vv我正在尝试理解输出。我可以看到许多共享库按预期映射到内存映射段。7f3c00137000-7f3c00179000r-xp0000000008:0121233923/lib/x86_64-linux-gnu/libdbus-1.so.3.5.87f3c00179000-7f3c00379000---p0004200008:0121233923/lib/x86_64-linux-gnu/libdbus-1.so.3.5.87f3c00379000-7f3c0037a000r--p0004200008:0121233923/lib/x86_

Linux 进程状态

在Linux中,当进程需要从磁盘读取block时,它的状态会发生什么变化?被封锁了吗?如果是,如何选择另一个进程来执行? 最佳答案 当一个进程需要从磁盘获取数据时,它实际上会停止在CPU上运行以让其他进程运行,因为该操作可能需要很长时间才能完成——磁盘至少5毫秒的寻道时间是常见的,而5毫秒是1000万个CPU周期,从程序的角度来看是永恒的!从程序员的角度来看(也称为“在用户空间中”),这称为阻塞系统调用。如果您调用write(2)(它是同名系统调用的一个精简的libc包装器),您的进程不会完全停止在该边界处;它继续在内核中运行系统调