问题标签 [osdev]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1966 浏览

gcc - 设置起始地址以执行原始二进制文件

引导加载程序分为 2 个阶段。第一阶段是用汇编编写的,只加载第二阶段,第二阶段是在 C 中。Stage1 将 C 中的代码加载到地址 0x0500:0,然后跳转到那里。Stage2 必须写“hello message”并停止。

我尝试了不同的方法来将起始地址设置为原始二进制文件:(但没有任何效果)

链接器脚本

也许我用 objcopy 删除了不应该删除的东西。

那我该如何执行这个 stage2.bin 呢?

据我了解,使用 32 位长度指令编写的 C 代码,而原始二进制文件只允许 16 个?

PS 参数 -set-start (objcopy) 返回错误:无效的 bfd 目标。是因为输出文件是二进制的吗?


谢谢你的回答。

0 投票
1 回答
1659 浏览

operating-system - Qemu hanging in main system call

I was working on the Pintos project . And while I was implementing a priority donation mechanism for the proper priority scheduling , QEMU emulator just hung up (I have attached an image and the dump of the pintos is as below ) . I tried debugging and inserting printf statements , but during debugging qemu via a remote host , it again hung up as soon as it entered main . Can anybody tell me how do I troubleshoot all this . Otherwise I will have to reinstall the entire code and qemu and everything in between .

The dump from pintos:

Pintos emulated on QEMUPintos emulated on QEMU

0 投票
2 回答
304 浏览

x86 - pte 修改是否与通常的内存访问一样通过相同的页表?

我知道通常的内存访问将通过页表进行虚拟地址到物理地址的转换。但是 pte 修改呢?说操作系统要修改一个进程的页表项,是不是也要经过进程的页表呢?换句话说,页表中是否有指向自身的条目?

0 投票
2 回答
429 浏览

x86-64 - AMD 的 MP 规范,如何使用代码来启动与 AMD 相关的多处理器

我正在尝试编写一个支持多处理器的操作系统,但是我不知道如何为 AMD 引导多处理器,我已经搜索了 AMD 主页以找到 MP 规范,但没有找到,谁能告诉我链接地址?

0 投票
1 回答
2203 浏览

c - 为交叉编译器构建 newlib 时“gettimeofday”的类型冲突

在尝试构建 newlib 1.20.0 时...我遵循了本教程http://wiki.osdev.org/OS_Specific_Toolchain#newlib.2Flibc.2Fsys.2Fmyos

但是在尝试构建 newlib 时出现以下错误:

sycalls.c 用于 gettimeofday 声明:

时间.h:

那么什么是冲突类型?请帮助....任何帮助表示赞赏...

0 投票
3 回答
11530 浏览

assembly - 使用 UEFI 编写操作系统

由于学校的原因,我最近没有太多编码,但我决定我想再次开始从事 OS 开发工作。然而,最近我听说 EFI 可以替代 BIOS。我想为使用 EFI 而不是 BIOS 的平台开发操作系统。我很难弄清楚从哪里开始。谁能指出我正确的方向?也许解释一下 EFI 对操作系统开发意味着什么,也许告诉我我可以使用哪些测试环境(最好是虚拟的)。坦率地说,我不太确定 EFI 到底是什么。我还应该花时间研究 ARM 组装吗?我知道 x86 Assembly,但我觉得它也已经过时了。我真的很迷茫,我很想听听你的意见。

谢谢

0 投票
1 回答
1547 浏览

assembly - 远跳到保护模式后的 GPF

在使用 GRUB 作为我的引导加载程序进行了几周的工作后,我决定自己动手做,这样我就可以了解它们是如何工作的。我在互联网上找到了 Brokenthorn 的教程(目前在http://www.brokenthorn.com/Resources/OSDev9.html上)。当我尝试切换到保护模式时,cpu 硬件在远跳后重置。我正在运行 bochs v. 2.6。

这是我的第二阶段引导加载程序(几乎是教程的副本,因为我认为它可以解决我的问题 - 它没有)

我的 GDT:

这是我尝试此代码时 bochs 给出的错误:

我能做些什么来解决这个问题?

0 投票
3 回答
1138 浏览

assembly - 引导加载程序崩溃

我目前正在开发我的引导加载程序,但我有问题。

我使用 Bochs 测试引导加载程序,编译引导加载程序并制作磁盘映像:

这是 bootloader.asm:

和 postmbr.asm:

这是来自 Bochs 的崩溃日志:

这是 Bochs 的配置文件:

我不知道出了什么问题,我还没有在其他平台上测试过我的引导加载程序。

0 投票
6 回答
1616 浏览

c++ - 是否存在 LibC 操作系统?

我记得听说过一个嵌入式操作系统,它本质上只是 libc(也许它支持 c++)。它没有内核、管道或您期望从操作系统获得的任何其他东西。我尝试在维基百科中查找它,但我没有看到它列出。

这样的操作系统存在吗?是否有支持仅终端或 C/C++ + (tcp) 套接字在 VM 外部通信的操作系统?作为玩具,这对我很有用。

0 投票
4 回答
1012 浏览

x86 - IA-32 上自我 IPI 的目的

在 IA-32 架构上,处理器向自身发送处理器间中断的目的是什么?

根据英特尔 IA-32 架构软件开发人员手册,卷。3,第。10.1:

IPI 用于软件自中断、中断转发或抢占式调度。

但是,当处理器也可以使用 INT 指令中断自身时,为什么还要使用自 IPI?这个功能似乎是多余的。