Shengyu Zhang

Results 187 comments of Shengyu Zhang

> 我之前在实模式下将内核加载到了0x10000开头的位置,我认为保护模式下GDT的起点是0x0000,那么我是不是将基指向gdt的data段然后跳转到0x10000就行,如果是那么ELF我需要如何执行?是直接将其装载到0X10000他就会被系统识别并通过找入口直接跳转到入口开始执行么? 当然不「会被系统识别」,你就是系统,并没有一个第三者来帮你识别 elf 文件,除非你用更先进的 bootloader(比如基于 UEFI 的)。 如我刚才所说,OS67 的内核并不是一个 elf 文件,而是一个普通的 binary,因此与你现在的实现有出入,从汇编跳转到 C 代码这一段可能缺少参考价值。 对于 elf 来说,你直接跳转到 0x10000 也就是 elf 的 0x0 处当然是不行的,于渊的 Orange's 的做法是在汇编里解析 ELF 的 header,你可以参考看看,当年我看得很累于是采用了现在的做法……

应该可以,只要你保证总是能找到「入口点」,是什么格式都没所谓其实。 注意在跑 C 代码前先把其他的各种段基址设置好 [kern/loader.asm#L21](https://github.com/SilverRainZ/OS67/blob/master/)。

> 之前抄了一遍30天的代码,但是那位大佬的编译器什么什么的全是他自带了。。。感觉抄一遍代码交了学到的东西不多 看 30 天只能看到有趣的东西,重要的细节通通被作者藏起来了,这也是我放弃抄 [SilverRainZ/OSASK](https://github.com/SilverRainZ/OSASK) 的原因。 我对这本书的看法:https://www.cnblogs.com/lastavengers/p/4115612.html > 然后看了os67和neuos neuos 是 @VOID001 那个么 :joy: 么?世界真小。 > 图形化 等你跨过保护模式和 C 语言的坎,开始做驱动,内存和进程部分的工作时,你会发现图形化实在算不得内核的一部分,尽管它也应该很有趣。 > 我现在是在centos下创建img然后挂载之后往里面存东西来打img的 这是科学的做法。 > 然后现在又卡在了c编译成内核,我想的是c编译成bin然后c里面加个头来引用其他所有的内容 可以参考下 loader.asm 是怎么做的,如果你不介意内核不是 elf...

请提供详细的报错信息。

Hello,我现在不常用 QQ 了,有问题可以在这里开 issue 。

你好,os67 应该是不支持内核线程的。

具体细节记不太清了……如果你说的「其他程序」是指其他用户进程的话,不同用户进程之间不共享页表,一个进程尝试 读/写 其他进程地址的时候是会触发异常中断的。

无法稳定复现该 bug,猜测是因为多个进程对 proc 变量和 ptable 表的操作产生的冲突。 有趣的现象: 进程一 `init` 有时会在 `0xc000000d` 处发生错误,出错指令是 `int 0x80`,但实际上进程一的 `0xc000000d` 处是 `jmp $` ,对于其他用户程序,`0xc0000000` 处才是 `int 0x80`指令,即,进程空间和 proc 变量不对应。

Kindly ping, any plan to make a new release? :D

cc @lilydjwg @DDoSolitary 也很久不活跃了,他有在群里出现么?