我正在编写一个单一操作系统(把它称为OS是一个笑话,但它确实有非常小的、学校级别的功能主义者)。当我说单块时,我的意思是,它被编译成一个二进制blob,不支持文件系统等等。目前,我只有一个基本的简单的用户空间,它只不过是无限的时间循环。
我计划让我的操作系统更有用,并希望能够编写用户应用程序,可以终止像常规应用一样,在一个完整的操作系统。
我没有滑头或类似的东西。我当前在用户空间中的库是我编写的代码。现在我的问题是如何为用户空间应用程序添加一个框架,让它们在一个定点终止。
我知道程序是如何在常规系统上编译的,以及当程序终止时会发生什么。然而,在我的例子中,我没有权利针对库编译程序,如果一个程序终止了,那么我的指令指针就会走弯路。
目前,我正在制作所有的应用程序来做一个“回传”,我正在预装一个固定地址的应用程序栈(在发布期间)。有什么更好的方法来解决这个问题吗?
除了答案之外,我非常乐意澄清一些操作系统的概念。
我正在x86模拟器平台上工作,并静态编译我的二进制文件.(我确实有虚拟内存支持)
发布于 2014-09-12 02:15:38
手工制作第一个堆栈框架,并返回到您需要运行的任何流程清理代码,似乎是一种非常合理的方法。如果您的操作系统有"syscalls“,那么用户空间进程清理代码(可能称为exit()
)可能以调用_exit()
syscall结束。您仍然需要处理程序试图在‘la-la land’中执行代码的情况,因为这种情况仍然可能发生(然而,在您拥有页面保护系统之前这样做可能是一个困难的问题)。
https://stackoverflow.com/questions/25799435
复制相似问题