小编use*_*790的帖子

虚拟内存和物理内存

我正在从Abraham Silberschatz和Galvin的书"操作系统概念"一书中研究内存管理单元(MMU)的概念.虽然在第8章之前情况还算不错.但是从第9章开始,事情就开始搞乱了.

我不清楚我的虚拟内存是什么?此外,物理和逻辑地址现在似乎令人困惑?它(虚拟内存)是否存在?根据我现在的理解,我的系统的RAM就是我称之为物理(或主要)内存.我有8GB RAM和64位操作系统.因此,我的RAM可以容纳2 ^ 64-1个地址.这就是我所说的物理地址空间吗?另外,逻辑地址空间究竟是什么?

每个进程都必须在主内存中执行,否则它驻留在硬盘上.给我的代码指令驻留在硬盘上的地址是我称之为逻辑地址的吗?当它被加载到RAM中时,因为位置不是固定的,因此代码可以在任何地方加载,这里分配的地址(RAM)称为物理地址?我认为这种映射称为逻辑 - 物理地址映射.

现在,由于我的代码或进程的大小可能大于可用RAM的大小,因此使用虚拟内存.据我所知,这是一个抽象,给程序员一个视图,他在系统上有无限的可用内存.它基本上是一个硬盘区域,其中一些来自RAM的进程(很少使用)被换出.同时将所需页面放入主存储器中.是这样吗?那么是什么决定了硬盘上这个区域的大小?此外,RAM很便宜,为什么我们需要这样的机制?我们不能增加我们的RAM大小而不是包括交换的开销吗?

我在网上搜索了很多,但没有找到这些术语的确切定义和区别.请帮忙!

谢谢

paging operating-system process virtual-memory memory-address

4
推荐指数
1
解决办法
1万
查看次数

计算结构的大小

当我发现这个struct... 的大小时,我正在经历结构成员对齐和结构填充概念的概念.

struct node{
  int b;
  char a;
 };
Run Code Online (Sandbox Code Playgroud)

...是8个字节(即它包含3个字节的填充),而这个struct... 的大小...

struct node{
  char a;
};
Run Code Online (Sandbox Code Playgroud)

......只有1个字节.为什么后者没有填充?

c struct padding

0
推荐指数
1
解决办法
163
查看次数