DOS常规内存布局
DOS 下的传统内存(至少 640kB)包含操作系统、驱动程序,还可能包含一个正在执行的程序。如何布置这些内存以避免这些程序之间的冲突?例如,该地址空间的一部分是否被保留?
Conventional memory under DOS (fist 640kB) contains the operating system, drivers, and possibly one executing program. How is this memory laid out to avoid conflict between those programs? For example, is part of that address space reserved?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
此链接更详细:
http://www.frontiernet.net/~fys/rombios.htm
This link goes into more detail:
http://www.frontiernet.net/~fys/rombios.htm
DOS 将程序加载到内存中,使用 EXE 标头中的信息重新定位内存引用以使其正确相对于加载 EXE 时 DOS 分配的内存块。
话虽如此,没有什么可以阻止你的程序干扰操作系统、设备驱动程序等。你可以读写任何内存位置。此技术通常由 TSR 程序 使用(重写 中断向量表)来挂钩键盘、定时器、鼠标或类似的东西,然后在保留在内存中时终止。
DOS loads the program into memory, using information in the EXE header to relocate memory references to be correct relative to the memory block assigned by DOS when the EXE is loaded.
Having said that, nothing prevents your program from interfering with the OS, device drivers, etc. You can read and write any memory location. This technique was commonly used e.g. by TSR programs (rewriting the interrupt vector table) to hook the keyboard, timer, mouse, or similar and then terminate while remaining in memory.
请参阅此处了解 DOS 内存布局的详细视图。
See here for a far detailed view of the DOS Memory layout here.