操作系统“交换”和“页面”之间有什么区别?

时间:2009-11-06 17:07:24

标签: memory operating-system

操作系统中这两个术语有什么区别:交换和页面?

6 个答案:

答案 0 :(得分:62)

尽管这两个术语有历史性的交换,但它们表明了不同的东西。它们都是用于管理内存中移动数据到另一个存储设备的方法,称为后备存储(通常是硬盘驱动器),但它们使用不同的方法。

交换涉及将进程的整个集合数据在内存中移动到后备存储上的一系列空间,通常是交换文件或交换分区。这个过程从内存到完全换出;中间没有。显然,这个过程需要完全闲置才能进行交换。这样做的好处是它掌握起来相对简单,并且程序的内存总是连续分配,缺点是当系统最终处于不断交换的状态时,机器上的性能会变得非常糟糕。该算法还涉及重复交换数据,这些数据在可预见的将来不会被使用。

分页尝试通过获取物理内存并将其分解为某些固定大小的“帧”来解决这些问题。它还占用每个运行进程的内存空间,并将其分为多个页面(与框架大小相同);这称为物理地址空间,因为需要使用物理地址来访问每个内存块。

每个程序都由操作系统提供一个环境,并由现代硬件支持,这使得程序内存占用看起来像一个非常大量内存的单个连续块;这称为逻辑地址空间。

但是,此连续块的每个页面可能位于内存中,或者它可能位于后备存储上。操作系统通过查询称为“页面表”的内容来确定每个页面的位置。如果它找到程序要求的页面在某个内存中,它将只是转到该页面的内存并获取所请求的数据。

如果发现页面不在内存中;这会导致“页面错误”。操作系统将在从后备存储加载所请求的页面时暂停该进程,并且可以基于某些替换算法依次将另一页从内存移动到后备存储以腾出空间。后备存储可以称为页面文件,或者仍然可以称为交换文件或交换分区,从而导致混淆使用哪个系统。它是单独的分区还是仅仅是文件,取决于操作系统。

内存的某些部分无法被分页。其中之一是分页代码本身,以及处理页面错误等内容的内核部分。某些操作系统(如MacOS)将此内存称为“有线”。

现代硬件有几种设备,允许操作系统更有效地支持分页。其中最常见的是Translation Lookaside Buffer或TLB。这存储了一种硬件页表缓存,因此无论何时程序需要对物理地址转换执行逻辑地址,它都不必每次都询问操作系统。

现代操作系统还通过延迟加载正在运行的部分流程来利用分页功能。例如,如果你启动Microsoft Word,而不是将整个程序加载到内存中,操作系统将只将它需要的程序部分加载到内存中,并且只在需要时才抓取程序的其他部分。这需要在内存占用,启动速度以及程序内的延迟发生频率之间进行权衡,因为需要加载新的部件。

无论如何,也许比你想要的更多,但希望有趣。

答案 1 :(得分:21)

交换和分页是正交概念。通过分页,(物理)存储器被分成称为“帧”的小块,并且每个程序的(逻辑)存储器被分成称为“页面”的块。页面和框架具有相同的大小;然后将每个页面映射到一个帧。此映射通过页表执行。分页解决了早期内存管理方案中存在的碎片问题。

通过交换,未使用的部分内存被写入磁盘;这使得人们可以运行多个程序,其总内存消耗大于物理内存量。当程序请求写入磁盘的部分内存时,该部分必须加载到内存中。为了腾出空间,必须将另一部分写入磁盘(实际上两部分交换位置 - 因此得名)。物理内存的这种“扩展”通常称为“虚拟内存”。

现代系统同时使用分页和交换,而页面则是在内存中交换的内容。

答案 2 :(得分:2)

Linux中的交换是一个用于虚拟内存的分区。它包含的页面是可以在实际内存中交换的内存块。

答案 3 :(得分:1)

对于几乎相同的事情只是不同的术语。它们都指的是(通常)存储在硬盘驱动器上的虚拟内存区域。

* nix,et al。称之为“交换” Windows调用是一个页面文件

在Linux等中,交换空间通常是一个单独的分区。在Windows上通常是存储在操作系统文件系统中的某个文件。

答案 4 :(得分:1)

页面是由OS管理的内存块。在Linux上,您可以通过输入

找到操作系统版本的内核分配

$ getconf PAGESIZE  4096

4KB是一个非常常见的分配。

虽然页面指的是大小分配,但交换是指“移动它”。如果您想了解详细信息,请尝试查看All about Linux swap space

答案 5 :(得分:1)

请参阅:Paging and swapping

  

交换和分页的问题是   经常被误解。交换和   分页是两个完全不同的   的东西。

     

交换是第一个使用的技术   在Unix System V中作为物理内存   填满流程有一个   问题。系统会发生什么   完全没有内存?它“研磨   停下来“!

     

保护和正确   RAM的管理非常重要   因为CPU只能使用   RAM中的数据在加载后   来自内核的硬盘。什么   当安装号码和时发生   流程大小超过物理   记忆?为了适应这种情况,   因为只有一个过程可以   在任何时候执行(在   UniProcessor系统),只是真的   进程需要在RAM中。然而   组织这将是非常的   资源密集,多重   计划运行进程   经常在处理器上执行   (参见“调度程序”一节)

     

解决内核的这些问题   宣传抽象内存使用   通过广告宣传应用程序   为他们提供远远超过的空间   物理内存。申请可以   只需要更多的内存和   内核可以授予它。

     

可能已分配了一个进程   即使有可能,也会有100mb的内存   系统中只有64mb的RAM。该   进程不需要访问   同时这是100mb   虚拟内存进入的地方。 [...]