我在哪里可以找到关于如何在x86架构bootloader上实现线程的资源/教程……假设我想在显示进度条的同时在后台加载资源。
发布于 2009-12-25 11:09:50
这是一个非常不同寻常的question...so,请允许我提供我的观点……
bootloader实际上是一组有限的汇编代码,确切地说是464字节,64字节用于分区信息,最后两个字节用于魔术标记以指示引导加载程序的结束,即在诸如Grub的total.
上实现线程
您可以通过使用C实现bootloader的第二阶段部分来解决这个问题(但棘手的是,由于运行时环境尚未设置,因此没有使用标准库!)
你可能会更好地使用Grub或甚至检查这个开源BIOS bootloaders here,如今,bios是可闪存的,所以您可能能够获得一个EFI (可扩展固件接口here),它是纯32位bios-这将取决于您的处理器。这里还有另一个网站,可能会提供更多的信息here。
不幸的是,启动时的进度条是用C/C++编写的(已经在32位中,环境设置,任务调度器设置,包含线程,虚拟内存管理器加载等-这是内核级别,在启动过程完成之后),其中是一个已经创建线程的进程,它在后台运行,说明硬件检测/进一步的环境设置等,使用进度栏作为告诉用户“等待,系统正在加载”的方式。
发布于 2009-12-25 10:02:08
This book可能会对您有所帮助--它描述了linux内核的各个方面--包括初始化。您可能想看看GRUB,它是各种风格的UNIX的标准。
我提到的这本书应该是你的首选资源,内核直到初始化周期的很晚才考虑它的金属线程能力,我的意思是为线程设置数据结构已经有了很好的文档。
虽然我似乎想不出在引导加载程序中允许线程构造有什么真正的好处--首先,使用单线程过程代码设置基本硬件更简单,其次,您希望代码是防弹,因此不需要将线程作为防御机制。
所以我希望你能模拟一个进度条:D
https://stackoverflow.com/questions/1960243
复制相似问题