自己动手写操作系统
━━( ̄ー ̄*|||━━
一个渴望成为不平凡程序员的渣渣。
展开
-
pmtest1.asm from 自动手写操作系统 粗略解释
第一章其实还是很好理解的,配置相关寄存器,使用10号中断显示helloworld,到了第三章一开始就讲了一堆没法让人理解的东西,着实让人崩溃,看了很多博客,两天才大概明白是怎么回事!首先得有8086的相关知识,王爽那本书。然后就是为啥实模式跳到保护模式会有gdt这东西。因为在8086下, 段(16位)×16+偏移(16位)=20位,所以2^20=1048576B=1024KB=1mb 最多只能访原创 2016-06-22 17:07:00 · 452 阅读 · 0 评论 -
orange 一个操作系统的实现 较新的gcc和ld编译后无法运行的问题
手贱更新了全部东西,然后用最新gcc编译后发现项目运行不了了尝试从原版文件运行,发现是可行的。然后尝试怀疑boot或loader问题,但是拖了能运行的kernel到img中是可运行的,排除用bochs断点单步,发现elf拷贝内存时出错,尝试用readelf给出的信息和调试信息做对比单步调试时发现前三个程序头无错,但是第四个就不行了,分析VirtAddr0x80480f4=134512...原创 2019-07-05 13:16:06 · 432 阅读 · 0 评论 -
orange 一个操作系统的实现 较新的gcc编译导致fork不出child的问题
第十章第a小节的地方无法fork出child,原版光盘镜像可运行,显然这又是一个编译器升级之后的问题通过trace打印发现child的limit值为零继续往上去跟踪,发现一处计算可能出现问题写一个简单的demo来验证这个问题发现它竟然给我默认为零了??然后我变量a却不会给我报错(实际上也不会报错,因为1048575远远小于int的最大值),那也就是说编译器提前预测了会超过int嘛?反...原创 2019-07-05 14:51:49 · 592 阅读 · 0 评论 -
[抛砖引玉] orange 一个操作系统的实现 较新的gcc导致untar无法解压出最后一个文件
其实这问题我也是没有解决,只是通过另外一个方法给规避掉了,但是也没有能够理解为什么会产生这种问题问题的表现是下面这个样子的,untar包中的最后一个文件pwd怎么都解压不出来,就卡在那里通过不停的打trace,一点一点跟下去发现,等硬盘中断这个地方始终都等不到硬盘响应中断导致执行程序一直都无法继续执行下去但是奇怪的是我将上面的注释给去掉的时候文件就可以被解压出来了,而且可以从端口读取到数...原创 2019-07-05 15:30:01 · 3290 阅读 · 4 评论