Operating system 不支持虚拟内存的系统中的链接和分页 首先,虚拟内存是系统的硬件特性,还是仅由操作系统实现
在链接时间重新定位期间,链接器将运行时地址分配给生成的可执行文件中的每个部分和每个符号Operating system 不支持虚拟内存的系统中的链接和分页 首先,虚拟内存是系统的硬件特性,还是仅由操作系统实现,operating-system,paging,static-linking,dynamic-linking,virtual-memory,Operating System,Paging,Static Linking,Dynamic Linking,Virtual Memory,在链接时间重新定位期间,链接器将运行时地址分配给生成的可执行文件中的每个部分和每个符号 这些运行时地址是否对应于虚拟地址 如果生成可执行文件的系统不使用虚拟内存怎么办 接下来,如果未使用虚拟内存,则应用程序的地址空间将限制为加载时间重新定位后操作系统为其分配的物理地址空间 如果没有使用虚拟内存,是否会发生页面错误 我认为是这样的:如果包含请求的物理地址的物理页还没有存储在RAM中,那么应该发生页面错误,这是由OS页面错误处理程序提供服务的 最后,在没有虚拟内存的情况下可以进行分页吗
- 这些运行时地址是否对应于虚拟地址
- 如果生成可执行文件的系统不使用虚拟内存怎么办
- 如果没有使用虚拟内存,是否会发生页面错误李>
- 最后,在没有虚拟内存的情况下可以进行分页吗
谢谢哇,有很多问题
- 在哪里实现虚拟内存?底层硬件需要支持虚拟内存。请记住,当您访问程序中的内存地址时,CPU需要某种方法来获取属于该地址的数据。如果您只有物理访问权限,那么操作将直接发送到内存控制器。在具有虚拟内存的系统中,您有一个,它将虚拟地址转换为物理地址。(注意,一些微控制器提供了一个精简版本,称为内存保护单元(MPU),它不提供此转换步骤,但至少允许访问权限检查。)
- 链接时间地址在运行时是否对应于虚拟地址?通常,链接时间地址对应于运行时虚拟地址。然而,有一种模式并非如此:位置独立代码。这里,虚拟地址由动态链接器在加载时确定。这种方法通常用于将动态链接库(DLL/.so)加载到应用程序。有关该主题的更多详细信息,请查看
- 如果我的目标系统没有虚拟内存怎么办?如果您的系统不支持虚拟内存,从编译器/加载程序的角度来看,没有什么真正的改变:您仍然需要生成代码来访问内存。唯一的区别是CPU不再执行从虚拟地址到物理地址的额外转换
- 如果没有虚拟内存,是否会出现页面错误?如果没有虚拟内存,则不会出现页面错误。但是,对于MPU,如果您的应用程序试图访问一个不应该读/写的地址,您可能仍然会看到硬件报告的访问冲突。注意,物理地址(更好:物理地址指向的数据)不需要加载到RAM中。它们只是指向已经存在的RAM的指针
- 在没有虚拟内存的情况下可以进行分页吗?通常使用“分页”和“虚拟内存”来表示相同的内容。然而,分页也可能是指将内存分割成大小相同的块(页)的概念。你问题的答案取决于你所说的分页是什么意思李>