当说3节目(可执行文件)都载入存储器的布局可能看起来是这样的:

alt文本http://img97.imageshack.us/img97/3460/processesm.jpg

我以下问题:

  1. 是的概念虚拟存储器局限于用户的过程?因为,我想知道哪里操作系统的核心,司机的生活吗?如何为其存储器的布局?我想知道更多关于核侧存储器。我知道它的操作系统,具体做出你的选择(windows/linux)。

  2. 是的概念虚拟存储器中每个进程的基础?我的意思是这是正确的,对我来说4G的process1+4G的过程2+4G的process3=12GB的虚拟存储器(用于所有过程)。这并不健全的权利。或者共有4GB空间1GB是采取了通过内核和其余3GB共享b/w所有进程。

  3. 他们说,在一个32位的机4G地址的空间。它的一半(或更多的近1GB)被占领的核心。我可以看看这个示意图,"核心的虚拟存储器"被占领0xc0000000-0xffffffff(=1GB)。他们是在谈论这个吗?或者是别的东西吗?只是想确认。

  4. 什么样的 到底 不会的 Kernel Virtual Memory 每个这些进程包含?什么是它的布局?

  5. 当我们做IPC我们谈到共享内存。我看不到任何记忆之间共享这些进程。它在哪里住?

  6. 资源(文件,登记册在windows)是全球性的所有进程。因此,资源/文件的处理表必须在一些全球性的空间。这一领域,是吗?

  7. 我在哪里可以知道更多关于这个内核侧的东西。

有帮助吗?

解决方案

  1. 当系统使用虚拟内存时,内核也使用虚拟内存。 Windows将使用上部2GB(如果您指定了Windows Bootloader中的 /3GB开关)以供其自身使用。这包括内核代码,数据(或至少是在中间分页的数据 - 正确的是,Windows可以将内核地址空间的一部分分配到硬盘上)和页面表。

  2. 每个过程都有自己的VM地址空间。当过程开关发生时,通常将页面表与另一个进程的页面表交换。这在X86处理器上很容易做到 - 更改页面表库地址 CR3 控制寄存器就足够了。桌子取代了完全不同的4GB地址空间,可以取代整个4GB地址空间。话虽如此,通常会在过程之间共享地址空间的区域。这些区域在页面表中标有特殊标志,这些标志向处理器表明这些区域不需要在处理器的中无效 翻译lookAside缓冲液.

  3. 正如我之前提到的,内核的代码,数据和页面表本身需要位于某个地方。此信息位于内核地址空间中。内核代码,数据和页面表的某些部分可能会根据需要将其换成磁盘。某些部分比其他部分更为关键,根本不会被换成。

  4. 参见(3)

  5. 这取决于。用户模式共享内存位于用户模式地址空间中。核模式地址空间的一部分很可能在过程之间也很可能共享。例如,在系统中的所有过程之间共享内核代码并不少见。该内存所在的位置不精确。我在这里使用任意地址,但是共享内存位于 0x100000 在一个过程中可能位于 0x101000 在另一个过程中。不同地址空间中的两个页面,在完全不同的地址,可以指向相同的物理内存。

  6. 我不确定您在这里的意思。打开的文件手柄并非所有进程全局。存储在硬盘上的文件系统是所有进程的全局。在Windows下,文件手柄由内核管理,并且对象存储在内核地址空间中,并由内核对象管理器管理。

  7. 对于基于Windows NT的系统,我建议 Windows内部,5ED 马克·罗西诺维奇(Mark Russinovich)和大卫·所罗门(David Solomon)

对评论的回应:

现在,这个3GB已共享B/W所有流程?还是每个过程都有4GB空间?

这取决于操作系统。一些内核(例如 L4 微粒)使用同一页表进行多个进程,并使用 分割. 。在Windows上,每个进程都有自己的页面表。请记住,即使每个过程都可能有自己的 虚拟的 地址空间,这并不意味着 身体的 内存总是不同的。例如,图像 kernel32.dll 加载过程A与 kernel32.dll 在过程B中。在过程之间也共享了许多内核地址空间。

为什么每个过程都有内核虚拟内存?

想到这一点的最佳方法是问自己:“如果内核不使用虚拟内存执行,它将如何工作?”在这种假设的情况下,每次您的程序将上下文切换到内核时(假设您进行了系统调用)时,在CPU在内核空间执行时,必须禁用虚拟内存。这样做是有成本的,当您切换回用户空间时,将其重新打开是一笔费用。

此外,让我们假设用户程序以指向其系统调用的一些数据指针传递。该指针是一个虚拟地址。您已经关闭了虚拟内存,因此需要将指针转换为物理地址,然后再对其进行任何操作。如果您有虚拟内存打开,则可以免费获得CPU上的内存管理单元。相反,您必须在软件中手动翻译地址。我可以描述各种示例和场景(有些涉及硬件,有些涉及页面表维护等),但要点是,拥有同质的内存管理方案要容易得多。如果用户空间使用虚拟内存,则在内核空间中维护该方案,编写内核将更容易。至少那是我的经验。

只有一个OS内核的Instnace对吗?那么,为什么每个过程都具有单独的内核虚拟空间?

正如我上面提到的,大量的地址空间将在过程中共享。内核空间中的每个程序数据在过程之间的上下文切换中被交换了,但是其中很多是共享的,因为只有一个内核。

其他提示

来回答你的问题,需要了解更多关于核和技术,它采用的管理资源(器、存储器,...)并提供优雅的抽象的应用程序。

首先我要明确指出,'虚拟存储器'是一个存管理技术的采用通过现代化操作系统;它提供了各种好处等过程中的隔离,没有通过保护,允许多个程序运行起来,使程序的尺寸大于物理存储器中存在的系统。在这种技术,又有两个方面'虚拟存储器"和"虚拟地址空间';这是不同的,但仍然密切相关。(你会想知道如何是虚拟存储器既是一种技术,以及作为一个概念之下,但是是的,这是正确的,你会明白那下面)

在计算机科学的单词'存储器'有2的含义。第一个,是什么东西,你可以用它来储存数据(寄存器,高速缓存、RAM、ROM,硬盘,等等)。第二个是同义词 主存储器 (即, RAM).当你代替逐字,'虚拟 存储器'是什么,但'虚拟 RAM'.这是总量的空间可在任何时候都在系统中,在该计划载于执行。所以这只是物理内存存储器+交换存在辅助的储存分配的核心。所以如果你有2GB RAM和4个交换空间搁置的核心在安装时间,那么虚拟存储系统是6GB.我不会解释更多的交换内存在这里,因为这会偏离自的主题。

移动到地址的虚拟空间。因此,要了解这个你需要调整你的头脑一点。作为本身的名称"虚拟"说,地址空间是不存在现实!这只是一种幻想通过创建核心应用程序(实现很多好处,正如我所提到第2段) 所以,每个进程都有一个单独的地址的虚拟空间的核心。(如果没有核对系统已经运行的应用程序上的硬件,那么它会有用的地址的物理空间,即RAM作为其地址空间) 这样一台机器上有32位地址寄存器中,核能提供一个虚拟空间的地址2^32=4G的每个过程。(所以这个地址的虚拟空间范围的变化的硬件结构。最近处理的有48个位址注册,使他们可以提供一个虚拟空间的地址2^48=256TB) 重要的是这个地址的虚拟空间是只是在空气!! 你会是现在的想法,如果它是只是在空中,如何可以代码、数据的过程甚至执行。是的,这需要进行映射的物理存储器。它是如何映射的物理存储器是管理的核心使用的概念,称为寻呼。所以现在你可以看到如何在核有实现过程中的隔离使用的地址的虚拟空间。这样的地址,每一个过程可以产生之间0至4GB(假定系统有32个位址注册为简单起见),所以其在全部内容。它什么都不知道有关的任何其他过程的运行的系统。所以这就像是每个进程都被装在一个单独的空间。

所以核码也喜欢的另一个程序/实体。因此,如果核们居住在一个完全不同地址的空间。那么有没有用于一种应用程序的互动与核心。如果应用不能与核和核不能与应用程序随后没有用处的核驱动的系统。所以现在的问题是- 如何使申请程序进行交互核心? 一个选择就是如果核码是在虚拟空间的地址的申请程序然后他们可以互相交流。这就是为什么核码是存在于每个过程的'虚拟空间地址,因为每一个过程需要与核心。不用担心核码不是实物复制的,用于每个过程。正如我前面提到的增值服务只是一种幻觉,因此这里将是一个复制的核码存在的物理存储器,并将基准通过的所有地址的虚拟空间(通过寻呼)。在linux内核可置上的地址之间的空间C000 0000至录录(即1gb原因是保留核心在VAS)和其余3GB(从0000 0000至BFFF录)允许对应用程序使用。该地址的虚拟空间核的驻留称为核心的空间和其中的应用程序的驻留称为用户的空间。如果你仔细观察,然后你会想出的问题,如果这两个应用程序的代码和核码是居住在同一地址的虚拟空间,并且由于内核的驻留在一个预定地址的位置,然后是它不可能的应用程序的代码破坏的核码!哎呀,起初看起来是可能的,但它不能。原因-这是受保护的使用帮助的HW.那将标志在处理其指示是否执行模式是管理程序方式或用户模式。核心空间代码应该执行在监督程序方式(设置标志,适当地)以及用户的空间代码应该执行的用户模式。所以如果你正在用户的模式,并试图访问/修改码的核心空间然后一个例外是扔!(处理器得知道它的基础上的地址指的是试图访问。如果它是高于C000 0000然后它可以很容易检测它是试图访问的核心空间代码和目前的执行模式没有适当的权限,因为标志设定与用户模式许可)。只是一个注:在监督方式,处理器提供了访问的其他组指示设置的。

我希望如果你了解这个概念,你自己可以回答你的问题。我已经回答了直接对许多问题,而解释这一概念本身。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top