逻辑地址空间

ssbelle 2006-08-28 04:24:36
王爽的书 第一章 所有的物理存储器都被看作一个由若干存储单元组成的逻辑存储器 每个物理存储器在这个逻辑存储器中占有一个地址段 即一段地址空间 比如
地址 0-7FFFH 是内存
地址 8000-9FFFH是显存
地址 A000-FFFFH是各个ROM地址

那么 对于现在32位的机器 各个存储器的逻辑地址是怎么分配的?
对于显存的显示 如果向显存内写入很多随机数据 会有什么结果? 显存显示的规则是什么? 我们在屏幕上看到的所有程序都是写到显存里的吗? 那么它们是怎么被写进去的? 操作系统都作了些什么?
...全文
1011 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Peter_Cheung 2006-08-28
  • 打赏
  • 举报
回复
只是个比喻, 0xb8000有多大是map到display card, google一下.
segment descriptor是os决定, 除非特别请况

ssbelle 2006-08-28
  • 打赏
  • 举报
回复
0xb8000 是一个地址点 而不是一个地址段 说b8000只有64k 是不是b800:0000 到 b800:ffff这段地址是存放显示数据的地址空间?
segment descrptior 刚刚下了一个pdf 今天晚上回去啃去 想问一下segment descrptior是操作系统来规定的 还是程序员可以自己修改的?
ssbelle 2006-08-28
  • 打赏
  • 举报
回复
噢 实在是赧颜 基础知识太贫乏了 呵呵 能知道这么多从来不知道的东西 很是兴奋 我正在从头看汇编 以前学过的都忘掉了 不过有些东西是从书上学不来的 多谢peter 接下来的日子会继续问下去 Thank You!
Peter_Cheung 2006-08-28
  • 打赏
  • 举报
回复
全部map到0xb8000处 这个0xb8000是不是就是显存空间的起始地址? banking是不是就是把向显

存写入的内容自动map到这个起始地址 那么写入的数据不用等待 会立刻被刷新到屏幕上?模式

说的很清楚 谢谢我猜vc里的DC类的函数 SetMapMode是不是和这个有关系

答: 你错了, 不可能把所有video ram都map到0xb8000, 因为0xb8000不够大. 所以只能map一部

份. 来个假设: 你有10M video ram, 而0xb8000只有64k大, 那麽你就有10M/64k个bank了.
banking就是把你想要的bank(就是你想读写video ram的那一个部份), map到0xb8000.

所有写入0xb8000的data会立即影射到video ram然後显示出来, 这个是"一定"以极速"进行

的,你不需要做甚麽.

我知道逻辑地址是段地址*16加上偏移地址 我是问 32位的机器 把所有的存储地址看作一个地址

空间 那么内存的地址空间 显存的地址空间还有其他的地址空间 它们的起始地址和终止地址是

多少 这个空间范围是和什么有关 是和32位这个地址线的位数有关 还是和它们本身的容量有关

是不是一个固定的值

答: 你迷惑了, 所有所为的逻辑地址, 它们的大少, 地始, permission都是自定的, 那些资料是

放在一些叫做segment descrptior的地方, 而segment descriptor是可以放在GDT/LDT/IDT中的
例如你想R/W 0x1000至0x1fff的地址, 那麽你当然要做一个descriptor, 设定它的起始是

0x1000,大小是0x1000啦, 否则怎读呢....

请问影像这个词对应的英文是什么?
答: 影像的英文是image


根据我零散的知识 显存是每秒钟刷新若干次 每次刷新时都会将显存内的数据显示到屏幕上那么

显存如果有256M这么大 它是怎么来刷新的 为什么显存越大越好呢 它是将显存分成每屏每屏这

样的块 然后挨个输出到屏幕上吗还是刷新固定的地址 而写显存 如果是写在固定的地址 我想这

个大概是交给操作系统来做的 那么我向显存内写入随机数据 如果显存的地址空间很大我将数据

写在靠后的地址 那它是马上输出到屏幕上 还是过一段刷新时间 等刷新到那些地址的时候才输

出到屏幕上呢(如果不用banking的话,这大概是您下边说的banking 我还不知道banking是什么

是自己调用还是操作系统自动会调用呢? )
答: 你知否一张就算同一resolution, 256MB的display card是快过一张128mb的display card的, 在video card□, 不是所有video ram都用来做点阵的, 例如你在1024x768 32bit, 你只需要1924x768x4个byte就够了, 为何要这麽多video ram呢? 其实video card提供一些function, 可以帮你去划2d/3d的, 你可以直接叫display card去划一条线, 你只需要给两点它就可以, display card然後就会自动计算中途的点, 而那些点是会store到video ram中, 所参video ram越多, 所cache的object就越多, 自然越快. 这个问题我以前问过老外的.


ssbelle 2006-08-28
  • 打赏
  • 举报
回复
0_0! faint
ssbelle 2006-08-28
  • 打赏
  • 举报
回复
Thank you!

那么 对于现在32位的机器 各个存储器的逻辑地址是怎么分配的?
答:逻辑地址就是[cs/ds]:[ax/bx/cx/dx], 是自已定的, 例如物理地址0x1000, 可以用逻辑地址0x100:0x0或0x0:0x1000去定位它,如果在p-mode, 会再复习些, 因为有分页.
-----------------------------
我知道逻辑地址是段地址*16加上偏移地址 我是问 32位的机器 把所有的存储地址看作一个地址空间 那么内存的地址空间 显存的地址空间 还有其他的地址空间 它们的起始地址和终止地址是多少 这个空间范围是和什么有关 是和32位这个地址线的位数有关 还是和它们本身的容量有关 是不是一个固定的值





对于显存的显示 如果向显存内写入很多随机数据 会有什么结果?
答:你的随机数据就会变成影像
-------------------------------------------------------
请问影像这个词对应的英文是什么?
根据我零散的知识 显存是每秒钟刷新若干次 每次刷新时都会将显存内的数据显示到屏幕上 那么显存如果有256M这么大 它是怎么来刷新的 为什么显存越大越好呢 它是将显存分成每屏每屏这样的块 然后挨个输出到屏幕上吗 还是刷新固定的地址 而写显存 如果是写在固定的地址 我想这个大概是交给操作系统来做的 那么我向显存内写入随机数据 如果显存的地址空间很大 我将数据写在靠后的地址 那它是马上输出到屏幕上 还是过一段刷新时间 等刷新到那些地址的时候才输出到屏幕上呢 (如果不用banking的话,这大概是您下边说的banking 我还不知道banking是什么 是自己调用还是操作系统自动会调用呢? )


显存显示的规则是什么? 我们在屏幕上看到的所有程序都是写到显存里的吗? 那么它们是怎么被写进去的? 操作系统都作了些什么?
答:现在的display card的ram很大,可能有256MB,不过能全部map到0xb8000处, 所以要做banking. Banking就是把你想读写的video ram到0xb8000.
至无0bx8000□头的ram是如何变成影像, 这要视乎你是甚麽video莫式了, 莫式分两大类:文字/点阵.
文字模式很简单,video card会把0xb8000的bye化成ascii然後显示出来.
点阵模式就是每个bye代表一个rgb值了.
----------------------------------------------------------------------
全部map到0xb8000处 这个0xb8000是不是就是显存空间的起始地址? banking是不是就是把向显存写入的内容自动map到这个起始地址 那么写入的数据不用等待 会立刻被刷新到屏幕上?模式说的很清楚 谢谢 我猜vc里的DC类的函数 SetMapMode是不是和这个有关系


Peter_Cheung 2006-08-28
  • 打赏
  • 举报
回复
王爽的书 第一章 所有的物理存储器都被看作一个由若干存储单元组成的逻辑存储器 每个物理存储器在这个逻辑存储器中占有一个地址段 即一段地址空间 比如
地址 0-7FFFH 是内存
地址 8000-9FFFH是显存
地址 A000-FFFFH是各个ROM地址

那么 对于现在32位的机器 各个存储器的逻辑地址是怎么分配的?
答:逻辑地址就是[cs/ds]:[ax/bx/cx/dx], 是自已定的, 例如物理地址0x1000, 可以用逻辑地址0x100:0x0或0x0:0x1000去定位它,如果在p-mode, 会再复习些, 因为有分页.
对于显存的显示 如果向显存内写入很多随机数据 会有什么结果?
答:你的随机数据就会变成影像
显存显示的规则是什么? 我们在屏幕上看到的所有程序都是写到显存里的吗? 那么它们是怎么被写进去的? 操作系统都作了些什么?
答:现在的display card的ram很大,可能有256MB,不过能全部map到0xb8000处, 所以要做banking. Banking就是把你想读写的video ram到0xb8000.
至无0bx8000□头的ram是如何变成影像, 这要视乎你是甚麽video莫式了, 莫式分两大类:文字/点阵.
文字模式很简单,video card会把0xb8000的bye化成ascii然後显示出来.
点阵模式就是每个bye代表一个rgb值了.

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧