对。从 API 看,和文件的读写差不多。
要使用之前得先 XMS move 到常规内存里面。用完还得再 move 回 XMS. 明显不好用。
但 EMS 也不好用。因为按规范它只能映射到 UBA 区域,这地方没有大的连续的空间给用户使用。所以一次映射不了多少。好像也映射不了连续的 63+1KB,而必须分成四块 16KB 的。
要想真的好用,有个类似于 EMS 的技术,能够把 XMS 内存映射到常规内存里面。我想有个想法就是弄个纤程技术,在纤程切换的时候顺便重新映射常规内存。这样,就算开 1000 个协程用到 16MB 内存,也可以做到只占用 32KB 的常规内存。
【 在 mephistoxp 的大作中提到: 】
: XMS API访问的内存是不是主要用于存放数据,而不是程序上下文~
: 结合XMS的使用方式,要把1MB之外的内存数据copy到实模式64+1024KB的地址空间之后才能使用,导致XMS内存确实更适合存放结构化数据(便于做顺序读写),而不是遍布跳转指令的程序上下文(远距离的跳转地址会给编程带来很大的麻烦)
--
修改:hgoldfish FROM 27.148.57.*
FROM 27.148.57.*