我的问题更多地与 Unix/Linux 开发相关,而不是管理本身。
我认为它是针对 Unix/Linux 低级系统程序员而不是管理员。它将帮助我开始内核开发和/或了解 Linux 系统开发
我需要哪些关于硬件的具体信息才能开始学习 Linux 如何与硬件外设和模块交互。例如总线架构以及如何与控制器通信。
另外,我想提一下,现在大多数环境中 Linux 都在虚拟机上运行。所以,下面的操作系统所看到的就是我的意思。
我需要一些参考资料,或者如何开始学习。
我了解基本的 x86 指令,但我的问题更多是关于处理器本身周围的内存和总线控制器;我指的是现代并行编程环境中的程序员模型。
答案1
它的工作原理在很大程度上取决于架构/机器。 Linux(内核)创建一个树,映射可用设备及其在启动时的连接(以及插入设备出现/消失时)。信息来自哪里取决于底层硬件。
在同一台机器上运行的其他操作系统将有自己的方法来执行此操作,如果它们的目的是非常可移植的,那么它们可能会使用类似的方法。
使用原始 PC(或仿真器)等工具可以让您访问许多固定的设备,在某些情况下访问固定的(或几乎)方式。我很高兴为一些 Unices 提供系统目标代码,添加/重新配置设备意味着编辑一些 C 文件,重新编译和重新链接内核。非常有趣。
答案2
给自己找一个像 z80 原型板这样的东西,并尝试从串行端口中取出东西,或者使用 dos 运行模拟的 ibm PC,并使用 DOS irq 做同样的事情。
在带有内存映射文本显示器的旧 Z80 机器中,至少可以轻松显示文本。
可以(轻松地或有点困难或不切实际地)使用以下语言来完成这样的事情:汇编器、Pascal、Ada、C(为什么要使用 C++)、BASIC 和相当多的其他语言,期待很多工作的 !
对于可以支持相当数量内存的相当现代的处理器,如果您想用 C/汇编器/Ada 编程(i想想帕斯卡。)我这样说是因为该系列处理器具有相当简单的内存架构。
查看 grub 的源代码!
如果您对如何在启动时加载程序(引导加载程序)感兴趣,或者查看 grub 化的游戏,例如太空入侵者(在裸机上运行的太空入侵者的克隆)。
您可以在虚拟机中启动 grub-invaders查看幼虫入侵者