osdev

    0热度

    1回答

    我想成立一​​个工作环境,根据该页面组装一个引导程序和编译和链接一个简单的内核:enter link description here 到目前为止,一切都很顺利,但是我似乎无法来解决这个连接错误: C:\Users\----\Desktop\>ld -T linker.ld -o kernel.bin --oformat binary loader.o kernel.o ld: cannot p

    1热度

    2回答

    我正在C和程序集中开发一个简单的小玩具操作系统作为实验,但我开始担心自己对系统内存缺乏了解。 我已经能够编译内核,在Bochs的运行(通过GRUB加载),并将它打印“你好,世界!”现在我试图做一个简单的内存管理器,以便我可以开始尝试其他的东西。 我发现了一些资源上的内存管理,但他们真的没有足够的代码熄灭的(在我的理解这个概念,但我是在为实际知道如何实现它的亏损)。 我尝试了一些或多或少复杂的策略,

    2热度

    2回答

    如何在保护模式下执行间接远程跳转/呼叫?首先,我在想,这样做是允许的: jmp 0x10:eax; (不要担心我的GDT的段selector..the第二项是有效的代码段) 但是当NASM组装好,这是一个语法错误。查看英特尔(指令集参考)手册2a,只能使用jmp ptr16:32(其中ptr16:32是立即数)或jmp m16:32来完成,其中m16:32是包含48位跳转地址( 16:32)。

    4热度

    2回答

    我正在制作自定义操作系统。我有两个NASM文件: boot.asm: [BITS 16] ;tell the assembler that its a 16 bit code [ORG 0x7C00] ;Origin, tell the assembler that where the code will ;be in memory after it is been loaded INT

    0热度

    1回答

    在OSX,GCC,基于x86的情况下: 如何在x86分割H/W和寻呼H/W使用?

    0热度

    2回答

    中的进程PCB,我在Linux上工作,我有点混淆,我是否可以访问过程的PCB?如果是,那么我们可以访问它的哪些内容并将它们打印到终端上,如果没有,那么为什么不呢? 谢谢回答.....

    1热度

    1回答

    我已经在寻找适用于X86-64处理器的NUMA文档,不幸的是我只找到NUMA的优化文档。 我要的是:我怎么在系统初始化NUMA(这将包括获取系统的内存拓扑结构和处理器拓扑)。有没有人知道关于NUMA X86-64 AMD和Intel处理器的良好文档?

    2热度

    1回答

    基本上我按照这里的指示http://sig9.com/bochs-grub来创建一个裸露的映像文件,它除了让BIOS启动GRUB之外什么也不做。 的问题是: 我写的内核将是32位,使用http://www.jamesmolloy.co.uk/tutorial_html/index.html的开始,但我的主机(物理)机器是x86_64的配置有这样的Bochs: ./configure --prefi

    5热度

    1回答

    当初始化我的内核时,我有一些需要发生的事情:1)需要启用分页,2)物理内存管理器需要从grub解析内存映射,3)配套启动代码需要访问需要留在那里的数据(例如GDT,IDT,内存管理结构)。 这些步骤之间的依赖关系让我疯狂。在更高一半的情况下,内核链接到它的虚拟地址,所以我提出的选项是1)在汇编中启用分页,这将涉及所有多重启动指针(汇编中),以便它们仍然可以访问到物理内存管理器,然后将其全部取消映射

    0热度

    1回答

    Grub是一个兼容多引导的引导加载程序。当它启动一个操作系统时,它会创建一个定义可用内存的结构,并在内存中留下一个指向该结构的指针。 我得到的信息在这里: http://wiki.osdev.org/Detecting_Memory_(x86)#Memory_Map_Via_GRUB 这是我认为我感兴趣的结构: typedef struct memory_map { unsigned