aigle是什么牌子| 福五行属什么| 什么人不能吃石斛| 教师节什么时候| 西林是什么药| 上海有什么好玩的地方适合小孩子| 一日无书下一句是什么| 吃什么补维生素D效果最好| 直肠炎用什么药效果最好| 刘禹锡是什么朝代的| 天蝎座男是什么性格| roca是什么品牌| 老年人经常头晕是什么原因造成的| 经心的近义词是什么| 什么是繁体字| 痰栓是什么意思| 牛刀割鸡是什么生肖| 浑身没劲吃什么药| 肉便器是什么意思| 率性是什么意思| 什么原因造成耳鸣| 七月一日什么节| 精分是什么| 血口喷人是什么意思| 十二指肠球炎吃什么药| 头发痒是什么原因| 面部痉挛是什么原因引起的| roa是什么意思| 精液长什么样| 属鸡在脖子上戴什么好| 营销号是什么| 维生素b3又叫什么| 老实人为什么总被欺负| 哈密瓜什么时候成熟| 翡翠的五行属性是什么| 胃恶心想吐是什么原因| 什么原因会导致尿路感染| 籺是什么意思| 购物狂是什么心理疾病| 璎珞是什么意思| 白凉粉是什么做的| 7月25是什么星座| 血糖高早饭吃什么最好| 随诊是什么意思| 一月二十五号是什么星座| 蜈蚣泡酒有什么功效| 为什么飞机撞鸟会坠机| 梦见钓到大鱼是什么意思| 开眼镜店需要什么设备| 为什么一饿就胃疼| 木吉他什么牌子比较好| 请惠存是什么意思| 肚子里有积水是什么病| 葛根粉吃了有什么好处| 脚上长鸡眼是什么原因| 雨水是什么意思| 缝纫机油是什么油| 脚筋疼是什么原因| 紫苏泡水喝有什么好处| 牛黄是什么东西| 壁虎进家里预示什么| 浇花的水壶叫什么| 纳氏囊肿是什么意思| 沧州有什么好玩的地方| 10月23号是什么星座| 风寒感冒咳嗽吃什么药| 老是干咳嗽是什么原因| 为什么一直想睡觉| 什么人不适合做业务员| 鼻息肉是什么样的图片| 悟性是什么意思| 谷草转氨酶高吃什么药| 医美是什么专业| 收缩压偏高是什么意思| 送男生什么生日礼物好| mri是什么意思| 单身为什么中指戴戒指| 红虫是什么的幼虫| 无疾而终是什么意思| 老年性脑改变是什么意思| tid是什么意思| 过敏性紫癜什么症状| 什么的鼓励| 剑桥英语和新概念英语有什么区别| 阴囊潮湿瘙痒用什么药| 狗狗为什么会咬人| 三七花泡水喝有什么功效和作用| 13岁属什么生肖| 肚子咕噜响是什么原因| 人乳头瘤病毒阴性是什么意思| 梦见恐龙是什么预兆| 梦见在水里游泳是什么意思| 三叉神经痛挂什么科就诊| 右胸是什么器官| 吃饭后胃胀是什么原因| 自由基是什么| 耳什么目明| 孩子鼻子流鼻血是什么原因| 什么是结扎| 1994年属什么生肖| nox是什么意思| 心血管科是看什么病| 血压偏高吃什么药| 一花一世界下一句是什么| 如什么如什么成语| 鼓目念什么| 梦见煤是什么意思| 职业病是什么意思| 鬼压床是什么原因造成的| 脐血流检查是什么| 梦见手机丢了又找到了是什么意思| 鹿查什么部首| 开塞露属于什么剂型| 鸡冠油是什么| 预判是什么意思| 菠萝蜜吃多了有什么坏处| 本钱是什么意思| 得瑟是什么意思| 指责的意思是什么| 知了猴吃什么长大的| 阉了是什么意思| 女人什么时候性欲最强| 半套是什么意思| 什么叫肾病综合征| 鱼靠什么呼吸| decaf是什么意思| 左侧头皮发麻是什么原因| 提辖相当于现在什么官| 肚脐周围是什么肠| 减肥可以吃什么零食| 什么的山顶| 爽约是什么意思| 幽门螺旋杆菌感染吃什么药| 葡萄又什么又什么| 风寒水饮是什么意思| 国家电网需要什么专业| 什么动物会冬眠| 单脐动脉是什么意思| 人质是什么意思| 室性逸搏是什么意思| 左撇子是什么意思| 球镜柱镜是什么意思| 乌龟为什么不吃东西| 舌根痛吃什么药好得快| 膀胱炎挂什么科| mm是什么单位| 山字五行属什么| 断生是什么意思啊| 退步是什么意思| 注意力不集中是什么原因| 什么萌| 田共念什么| 守株待兔是什么意思| 脱发严重是什么原因| land rover是什么车| 1984年属鼠是什么命| 7月6号什么星座| 湖北有什么好玩的地方| 没有美瞳护理液用什么代替| 鼻子上长脓包型痘痘是什么原因| 现在是什么时辰| 春天有什么水果| 蝴蝶是什么变的| 让平是什么意思| 什么是针灸| 急性肠胃炎是什么原因引起的| 将星是什么意思| 青少年吃什么钙片有助于长高| 嗜什么意思| 大爱什么意思| 玮是什么意思| 经常放屁吃什么药好| 肾不好挂什么科| 吃什么去湿气最快| 12378是什么电话| 补血补气吃什么好| 羊内腰和外腰分别是什么| 钢铁侠是什么意思| 蓝莓什么时候种植| 做肠镜检查需要提前做什么准备| 白细胞弱阳性是什么意思| 穗字五行属什么| 心肾不交有什么症状| ems代表什么| 哮喘是什么病| 自省是什么意思| 天机不可泄露是什么意思| 蝎子怕什么| 感染是什么症状| 悠悠什么意思| 乐极生悲是什么意思| 吃什么东西对肺部好| 脂肪肝吃什么中成药| 孕妇oct是什么检查| 6月23日是什么节日| 田七与三七有什么区别| 什么叫糖化血红蛋白| 发烧能吃什么| 什么叫早泄| 宫颈管搔刮术是什么| mp是什么意思| 乙肝25阳性什么意思| 双手合十什么意思| 溶血性黄疸是什么原因引起的| 怀孕什么时候可以同房| 深深是什么意思| 百步穿杨是什么生肖| 画风是什么意思| 尿酸高是什么造成的| 脚底板黄是什么原因| hpv有什么症状| hbv是什么病毒| 为什么手淫很快就射| 神经内科看什么病的| 手指疼挂什么科| 前列腺用什么药| 男蛇配什么属相最好| 雪媚娘是什么| 总胆红素高是怎么回事有什么危害| 什么叫智商| 右耳烫代表什么预兆| 卫冕冠军是什么意思| 强阳下降到什么程度开始排卵| 孕妇心率快是什么原因| 什么动物没有耳朵| 官方翻新机是什么意思| 硅油是什么| 玉米淀粉能做什么美食| 前列腺多发钙化灶是什么意思| 肌肉溶解是什么意思| 月经量多吃什么药| 一什么杯子| 吃什么可以祛斑| 纠葛是什么意思| 咳出血是什么原因| 嗓子发炎吃什么水果| 为什么有两个六月| 为什么呢| 红枣不能和什么一起吃| co2是什么| 发质硬适合什么发型| 什么王| 做不好的梦预示着什么| 7.14日是什么日子| 马拉色菌是什么| 来减一笔是什么字| 包皮真菌感染用什么药| 肾阴阳两虚吃什么| 拼音的音序是什么| 脚趾头抽筋是什么原因引起的| 青龙男是什么意思| 为什么乳头会疼| 吃什么最容易消化| 山楂泡酒有什么功效| 人生的意义是什么| 377是什么| 指甲疼是什么原因| 阴道镜是检查什么的| 为什么叫买东西不叫买南北| 什么是尿毒症啊| 大蒜泡酒治什么病| 排长是什么军衔| 飞机杯什么感觉| 无名指长痣代表什么| 百度Jump to content

特朗普将公布税改架构 美媒:对企业和富人减税

From Wikipedia, the free encyclopedia
百度 2016年9月,乐视汽车融资亿美元中,也有深创投的身影。

In computer operating systems, memory paging is a memory management scheme that allows the physical memory used by a program to be non-contiguous.[1] This also helps avoid the problem of memory fragmentation and requiring compaction to reduce fragmentation.

Paging is often combined with the related technique of allocating and freeing page frames and storing pages on and retrieving them from secondary storage[a] in order to allow the aggregate size of the address spaces to exceed the physical memory of the system.[2] For historical reasons, this technique is sometimes referred to as swapping.

When combined with virtual memory, it is known as paged virtual memory. In this scheme, the operating system retrieves data from secondary storage in blocks of the same size (pages). Paging is an important part of virtual memory implementations in modern operating systems, using secondary storage to let programs exceed the size of available physical memory.

Hardware support is necessary for efficient translation of logical addresses to physical addresses. As such, paged memory functionality is usually hardwired into a CPU through its Memory Management Unit (MMU) or Memory Protection Unit (MPU), and separately enabled by privileged system code in the operating system's kernel. In CPUs implementing the x86 instruction set architecture (ISA) for instance, the memory paging is enabled via the CR0 control register.

History

[edit]

In the 1960s, swapping was an early virtual memory technique. An entire program or entire segment would be "swapped out" (or "rolled out") from RAM to disk or drum, and another one would be swapped in (or rolled in).[3][4] A swapped-out program would be current but its execution would be suspended while its RAM was in use by another program; a program with a swapped-out segment could continue running until it needed that segment, at which point it would be suspended until the segment was swapped in.

A program might include multiple overlays that occupy the same memory at different times. Overlays are not a method of paging RAM to secondary storage[a] but merely of minimizing the program's RAM use. Subsequent architectures used memory segmentation, and individual program segments became the units exchanged between secondary storage and RAM. A segment was the program's entire code segment or data segment, or sometimes other large data structures. These segments had to be contiguous when resident in RAM, requiring additional computation and movement to remedy fragmentation.[5]

Ferranti's Atlas, and the Atlas Supervisor developed at the University of Manchester,[6] (1962), was the first system to implement memory paging. Subsequent early machines, and their operating systems, supporting paging include the IBM M44/44X and its MOS operating system (1964),[7] the SDS 940[8] and the Berkeley Timesharing System (1966), a modified IBM System/360 Model 40 and the CP-40 operating system (1967), the IBM System/360 Model 67 and operating systems such as TSS/360 and CP/CMS (1967), the RCA 70/46 and the Time Sharing Operating System (1967), the GE 645 and Multics (1969), and the PDP-10 with added BBN-designed paging hardware and the TENEX operating system (1969).

Those machines, and subsequent machines supporting memory paging, use either a set of page address registers or in-memory page tables[d] to allow the processor to operate on arbitrary pages anywhere in RAM as a seemingly contiguous logical address space. These pages became the units exchanged between secondary storage[a] and RAM.

Page faults

[edit]

When a process tries to reference a page not currently mapped to a page frame in RAM, the processor treats this invalid memory reference as a page fault and transfers control from the program to the operating system. The operating system must:

  1. Determine whether a stolen page frame still contains an unmodified copy of the page; if so, use that page frame.
  2. Otherwise, obtain an empty page frame in RAM to use as a container for the data, and:
    • Determine whether the page was ever initialized
    • If so determine the location of the data on secondary storage[a].
    • Load the required data into the available page frame.
  3. Update the page table to refer to the new page frame.
  4. Return control to the program, transparently retrying the instruction that caused the page fault.

When all page frames are in use, the operating system must select a page frame to reuse for the page the program now needs. If the evicted page frame was dynamically allocated by a program to hold data, or if a program modified it since it was read into RAM (in other words, if it has become "dirty"), it must be written out to secondary storage before being freed. If a program later references the evicted page, another page fault occurs and the page must be read back into RAM.

The method the operating system uses to select the page frame to reuse, which is its page replacement algorithm, affects efficiency. The operating system predicts the page frame least likely to be needed soon, often through the least recently used (LRU) algorithm or an algorithm based on the program's working set. To further increase responsiveness, paging systems may predict which pages will be needed soon, preemptively loading them into RAM before a program references them, and may steal page frames from pages that have been unreferenced for a long time, making them available. Some systems clear new pages to avoid data leaks that compromise security; some set them to installation defined or random values to aid debugging.

Page fetching techniques

[edit]

Demand paging

[edit]

When pure demand paging is used, pages are loaded only when they are referenced. A program from a memory mapped file begins execution with none of its pages in RAM. As the program commits page faults, the operating system copies the needed pages from a file, e.g., memory-mapped file, paging file, or a swap partition containing the page data into RAM.

Anticipatory paging

[edit]

Some systems use only demand paging—waiting until a page is actually requested before loading it into RAM.

Other systems attempt to reduce latency by guessing which pages not in RAM are likely to be needed soon, and pre-loading such pages into RAM, before that page is requested. (This is often in combination with pre-cleaning, which guesses which pages currently in RAM are not likely to be needed soon, and pre-writing them out to storage).

When a page fault occurs, anticipatory paging systems will not only bring in the referenced page, but also other pages that are likely to be referenced soon. A simple anticipatory paging algorithm will bring in the next few consecutive pages even though they are not yet needed (a prediction using locality of reference); this is analogous to a prefetch input queue in a CPU. Swap prefetching will prefetch recently swapped-out pages if there are enough free pages for them.[9]

If a program ends, the operating system may delay freeing its pages, in case the user runs the same program again.

Some systems allow application hints; the application may request that a page be made available and continue without delay.

Page replacement techniques

[edit]

Free page queue, stealing, and reclamation

[edit]

The free page queue is a list of page frames that are available for assignment. Preventing this queue from being empty minimizes the computing necessary to service a page fault. Some operating systems periodically look for pages that have not been recently referenced and then free the page frame and add it to the free page queue, a process known as "page stealing". Some operating systems[e] support page reclamation; if a program commits a page fault by referencing a page that was stolen, the operating system detects this and restores the page frame without having to read the contents back into RAM.

Pre-cleaning

[edit]

The operating system may periodically pre-clean dirty pages: write modified pages back to secondary storage[a] even though they might be further modified. This minimizes the amount of cleaning needed to obtain new page frames at the moment a new program starts or a new data file is opened, and improves responsiveness. (Unix operating systems periodically use sync to pre-clean all dirty pages; Windows operating systems use "modified page writer" threads.)

Some systems allow application hints; the application may request that a page be cleared or paged out and continue without delay.

Thrashing

[edit]

After completing initialization, most programs operate on a small number of code and data pages compared to the total memory the program requires. The pages most frequently accessed are called the working set.

When the working set is a small percentage of the system's total number of pages, virtual memory systems work most efficiently and an insignificant amount of computing is spent resolving page faults. As the working set grows, resolving page faults remains manageable until the growth reaches a critical point. Then faults go up dramatically and the time spent resolving them overwhelms time spent on the computing the program was written to do. This condition is referred to as thrashing. Thrashing occurs on a program that works with huge data structures, as its large working set causes continual page faults that drastically slow down the system. Satisfying page faults may require freeing pages that will soon have to be re-read from secondary storage.[a] "Thrashing" is also used in contexts other than virtual memory systems; for example, to describe cache issues in computing or silly window syndrome in networking.

A worst case might occur on VAX processors. A single MOVL crossing a page boundary could have a source operand using a displacement deferred addressing mode, where the longword containing the operand address crosses a page boundary, and a destination operand using a displacement deferred addressing mode, where the longword containing the operand address crosses a page boundary, and the source and destination could both cross page boundaries. This single instruction references ten pages; if not all are in RAM, each will cause a page fault. As each fault occurs the operating system needs to go through the extensive memory management routines perhaps causing multiple I/Os which might include writing other process pages to disk and reading pages of the active process from disk. If the operating system could not allocate ten pages to this program, then remedying the page fault would discard another page the instruction needs, and any restart of the instruction would fault again.

To decrease excessive paging and resolve thrashing problems, a user can increase the number of pages available per program, either by running fewer programs concurrently or increasing the amount of RAM in the computer.

Sharing

[edit]

In multi-programming or in a multi-user environment, many users may execute the same program, written so that its code and data are in separate pages. To minimize RAM use, all users share a single copy of the program. Each process's page table is set up so that the pages that address code point to the single shared copy, while the pages that address data point to different physical pages for each process.

Different programs might also use the same libraries. To save space, only one copy of the shared library is loaded into physical memory. Programs which use the same library have virtual addresses that map to the same pages (which contain the library's code and data). When programs want to modify the library's code, they use copy-on-write, so memory is only allocated when needed.

Shared memory is an efficient means of communication between programs. Programs can share pages in memory, and then write and read to exchange data.

Implementations

[edit]

Ferranti Atlas

[edit]

The first computer to support paging was the supercomputer Atlas,[10][11][12] jointly developed by Ferranti, the University of Manchester and Plessey in 1963. The machine had an associative (content-addressable) memory with one entry for each 512 word page. The Supervisor[13] handled non-equivalence interruptions[f] and managed the transfer of pages between core and drum in order to provide a one-level store[14] to programs.

Microsoft Windows

[edit]

Windows 3.x and Windows 9x

[edit]

Paging has been a feature of Microsoft Windows since Windows 3.0 in 1990. Windows 3.x creates a hidden file named 386SPART.PAR or WIN386.SWP for use as a swap file. It is generally found in the root directory, but it may appear elsewhere (typically in the WINDOWS directory). Its size depends on how much swap space the system has (a setting selected by the user under Control Panel → Enhanced under "Virtual Memory"). If the user moves or deletes this file, a blue screen will appear the next time Windows is started, with the error message "The permanent swap file is corrupt". The user will be prompted to choose whether or not to delete the file (even if it does not exist).

Windows 95, Windows 98 and Windows Me use a similar file, and the settings for it are located under Control Panel → System → Performance tab → Virtual Memory. Windows automatically sets the size of the page file to start at 1.5× the size of physical memory, and expand up to 3× physical memory if necessary. If a user runs memory-intensive applications on a system with low physical memory, it is preferable to manually set these sizes to a value higher than default.

Windows NT

[edit]

The file used for paging in the Windows NT family is pagefile.sys. The default location of the page file is in the root directory of the partition where Windows is installed. Windows can be configured to use free space on any available drives for page files. It is required, however, for the boot partition (i.e., the drive containing the Windows directory) to have a page file on it if the system is configured to write either kernel or full memory dumps after a Blue Screen of Death. Windows uses the paging file as temporary storage for the memory dump. When the system is rebooted, Windows copies the memory dump from the page file to a separate file and frees the space that was used in the page file.[15]

Fragmentation

[edit]

In the default configuration of Windows, the page file is allowed to expand beyond its initial allocation when necessary. If this happens gradually, it can become heavily fragmented which can potentially cause performance problems.[16] The common advice given to avoid this is to set a single "locked" page file size so that Windows will not expand it. However, the page file only expands when it has been filled, which, in its default configuration, is 150% of the total amount of physical memory.[17] Thus the total demand for page file-backed virtual memory must exceed 250% of the computer's physical memory before the page file will expand.

The fragmentation of the page file that occurs when it expands is temporary. As soon as the expanded regions are no longer in use (at the next reboot, if not sooner) the additional disk space allocations are freed and the page file is back to its original state.

Locking a page file size can be problematic if a Windows application requests more memory than the total size of physical memory and the page file, leading to failed requests to allocate memory that may cause applications and system processes to fail. Also, the page file is rarely read or written in sequential order, so the performance advantage of having a completely sequential page file is minimal. However, a large page file generally allows the use of memory-heavy applications, with no penalties besides using more disk space. While a fragmented page file may not be an issue by itself, fragmentation of a variable size page file will over time create several fragmented blocks on the drive, causing other files to become fragmented. For this reason, a fixed-size contiguous page file is better, providing that the size allocated is large enough to accommodate the needs of all applications.

The required disk space may be easily allocated on systems with more recent specifications (i.e. a system with 3 GB of memory having a 6 GB fixed-size page file on a 750 GB disk drive, or a system with 6 GB of memory and a 16 GB fixed-size page file and 2 TB of disk space). In both examples, the system uses about 0.8% of the disk space with the page file pre-extended to its maximum.

Defragmenting the page file is also occasionally recommended to improve performance when a Windows system is chronically using much more memory than its total physical memory.[18] This view ignores the fact that, aside from the temporary results of expansion, the page file does not become fragmented over time. In general, performance concerns related to page file access are much more effectively dealt with by adding more physical memory.

Unix and Unix-like systems

[edit]

Unix systems, and other Unix-like operating systems, use the term "swap" to describe the act of substituting disk space for RAM when physical RAM is full.[19] In some of those systems, it is common to dedicate an entire partition of a hard disk to swapping. These partitions are called swap partitions. Many systems have an entire hard drive dedicated to swapping, separate from the data drive(s), containing only a swap partition. A hard drive dedicated to swapping is called a "swap drive" or a "scratch drive" or a "scratch disk". Some of those systems only support swapping to a swap partition; others also support swapping to files.

Linux

[edit]

The Linux kernel supports a virtually unlimited number of swap backends (devices or files), and also supports assignment of backend priorities. When the kernel swaps pages out of physical memory, it uses the highest-priority backend with available free space. If multiple swap backends are assigned the same priority, they are used in a round-robin fashion (which is somewhat similar to RAID 0 storage layouts), providing improved performance as long as the underlying devices can be efficiently accessed in parallel.[20]

Swap files and partitions
[edit]

From the end-user perspective, swap files in versions 2.6.x and later of the Linux kernel are virtually as fast as swap partitions; the limitation is that swap files should be contiguously allocated on their underlying file systems. To increase performance of swap files, the kernel keeps a map of where they are placed on underlying devices and accesses them directly, thus bypassing the cache and avoiding filesystem overhead.[21][22] When residing on HDDs, which are rotational magnetic media devices, one benefit of using swap partitions is the ability to place them on contiguous HDD areas that provide higher data throughput or faster seek time. However, the administrative flexibility of swap files can outweigh certain advantages of swap partitions. For example, a swap file can be placed on any mounted file system, can be set to any desired size, and can be added or changed as needed. Swap partitions are not as flexible; they cannot be enlarged without using partitioning or volume management tools, which introduce various complexities and potential downtimes.

Swappiness
[edit]

Swappiness is a Linux kernel parameter that controls the relative weight given to swapping out of runtime memory, as opposed to dropping pages from the system page cache, whenever a memory allocation request cannot be met from free memory. Swappiness can be set to a value from 0 to 200.[23] A low value causes the kernel to prefer to evict pages from the page cache while a higher value causes the kernel to prefer to swap out "cold" memory pages. The default value is 60; setting it higher can cause high latency if cold pages need to be swapped back in (when interacting with a program that had been idle for example), while setting it lower (even 0) may cause high latency when files that had been evicted from the cache need to be read again, but will make interactive programs more responsive as they will be less likely to need to swap back cold pages. Swapping can also slow down HDDs further because it involves a lot of random writes, while SSDs do not have this problem. Certainly the default values work well in most workloads, but desktops and interactive systems for any expected task may want to lower the setting while batch processing and less interactive systems may want to increase it.[24]

Swap death
[edit]

When the system memory is highly insufficient for the current tasks and a large portion of memory activity goes through a slow swap, the system can become practically unable to execute any task, even if the CPU is idle. When every process is waiting on the swap, the system is considered to be in swap death.[25][26]

Swap death can happen due to incorrectly configured memory overcommitment.[27][28][29]

The original description of the "swapping to death" problem relates to the X server. If code or data used by the X server to respond to a keystroke is not in main memory, then if the user enters a keystroke, the server will take one or more page faults, requiring those pages to read from swap before the keystroke can be processed, slowing the response to it. If those pages do not remain in memory, they will have to be faulted in again to handle the next keystroke, making the system practically unresponsive even if it's actually executing other tasks normally.[30]

macOS

[edit]

macOS uses multiple swap files. The default (and Apple-recommended) installation places them on the root partition, though it is possible to place them instead on a separate partition or device.[31]

AmigaOS 4

[edit]

AmigaOS 4.0 introduced a new system for allocating RAM and defragmenting physical memory. It still uses flat shared address space that cannot be defragmented. It is based on slab allocation and paging memory that allows swapping. Paging was implemented in AmigaOS 4.1. It can lock up the system if all physical memory is used up.[32] Swap memory could be activated and deactivated, allowing the user to choose to use only physical RAM.

Performance

[edit]

The backing store for a virtual memory operating system is typically many orders of magnitude slower than RAM. Hard disks, for instance, introduce several milliseconds delay before the reading or writing begins. Therefore, it is desirable to reduce or eliminate swapping, where practical. Some operating systems offer settings to influence the kernel's decisions.

  • Linux offers the /proc/sys/vm/swappiness parameter, which changes the balance between swapping out runtime memory, as opposed to dropping pages from the system page cache.
  • Windows 2000, XP, and Vista offer the DisablePagingExecutive registry setting, which controls whether kernel-mode code and data can be eligible for paging out.
  • Mainframe computers frequently used head-per-track disk drives or drums for page and swap storage to eliminate seek time, and several technologies[33] to have multiple concurrent requests to the same device in order to reduce rotational latency.
  • Flash memory has a finite number of erase-write cycles (see limitations of flash memory), and the smallest amount of data that can be erased at once might be very large,[g] seldom coinciding with pagesize. Therefore, flash memory may wear out quickly if used as swap space under tight memory conditions. For this reason, mobile and embedded operating systems (such as Android) may not use swap space. On the attractive side, flash memory is practically delayless compared to hard disks, and not volatile as RAM chips. Schemes like ReadyBoost and Intel Turbo Memory are made to exploit these characteristics.

Many Unix-like operating systems (for example AIX, Linux, and Solaris) allow using multiple storage devices for swap space in parallel, to increase performance.

Swap space size

[edit]

In some older virtual memory operating systems, space in swap backing store is reserved when programs allocate memory for runtime data. Operating system vendors typically issue guidelines about how much swap space should be allocated.

Physical and virtual address space sizes

[edit]

Paging is one way of allowing the size of the addresses used by a process, which is the process's "virtual address space" or "logical address space", to be different from the amount of main memory actually installed on a particular computer, which is the physical address space.

Main memory smaller than virtual memory

[edit]

In most systems, the size of a process's virtual address space is much larger than the available main memory.[35] For example:

  • The address bus that connects the CPU to main memory may be limited. The i386SX CPU's 32-bit internal addresses can address 4 GB, but it has only 24 pins connected to the address bus, limiting installed physical memory to 16 MB. There may be other hardware restrictions on the maximum amount of RAM that can be installed.
  • The maximum memory might not be installed because of cost, because the model's standard configuration omits it, or because the buyer did not believe it would be advantageous.
  • Sometimes not all internal addresses can be used for memory anyway, because the hardware architecture may reserve large regions for I/O or other features.

Main memory the same size as virtual memory

[edit]

A computer with true n-bit addressing may have 2n addressable units of RAM installed. An example is a 32-bit x86 processor with 4 GB and without Physical Address Extension (PAE). In this case, the processor is able to address all the RAM installed and no more.

However, even in this case, paging can be used to support more virtual memory than physical memory. For instance, many programs may be running concurrently. Together, they may require more physical memory than can be installed on the system, but not all of it will have to be in RAM at once. A paging system makes efficient decisions on which memory to relegate to secondary storage, leading to the best use of the installed RAM.

In addition the operating system may provide services to programs that envision a larger memory, such as files that can grow beyond the limit of installed RAM. Not all of the file can be concurrently mapped into the address space of a process, but the operating system might allow regions of the file to be mapped into the address space, and unmapped if another region needs to be mapped in.

Main memory larger than virtual address space

[edit]

A few computers have a main memory larger than the virtual address space of a process, such as the Magic-1,[35] some PDP-11 machines, and some systems using 32-bit x86 processors with Physical Address Extension. This nullifies a significant advantage of paging, since a single process cannot use more main memory than the amount of its virtual address space. Such systems often use paging techniques to obtain secondary benefits:

  • The "extra memory" can be used in the page cache to cache frequently used files and metadata, such as directory information, from secondary storage.
  • If the processor and operating system support multiple virtual address spaces, the "extra memory" can be used to run more processes. Paging allows the cumulative total of virtual address spaces to exceed physical main memory.
  • A process can store data in memory-mapped files on memory-backed file systems, such as the tmpfs file system or file systems on a RAM drive, and map files into and out of the address space as needed.
  • A set of processes may still depend upon the enhanced security features page-based isolation may bring to a multitasking environment.

The size of the cumulative total of virtual address spaces is still limited by the amount of secondary storage available.

See also

[edit]

Notes

[edit]
  1. ^ a b c d e f Initially drums, and then hard disk drives and solid-state drives have been used for overlays and paging.
  2. ^ E.g., Multics, OS/VS1, OS/VS2, VM/370
  3. ^ E.g.,z/OS.
  4. ^ Some systems have a global page table, some systems have a separate page table for each process, some systems have a separate page table for each segment[b] and some systems have cascaded page tables.[c]
  5. ^ For example, MVS (Multiple Virtual Storage).
  6. ^ A non-equivalence interruption occurs when the high order bits of an address do not match any entry in the associative memory.
  7. ^ 128 KiB for an Intel X25-M SSD[34]

References

[edit]
  1. ^ Operating System Concepts, 10th Edition. February 2021. 9.3 Paging. ISBN 978-1-119-80036-1.
  2. ^ "Paging in Operating System". GeeksforGeeks. Retrieved 2025-08-06.
  3. ^ Belzer, Jack; Holzman, Albert G.; Kent, Allen, eds. (1981). "Operating systems". Encyclopedia of computer science and technology. Vol. 11. CRC Press. p. 442. ISBN 0-8247-2261-2. Archived from the original on 2025-08-06.
  4. ^ Cragon, Harvey G. (1996). Memory Systems and Pipelined Processors. Jones and Bartlett Publishers. p. 109. ISBN 0-86720-474-5. Archived from the original on 2025-08-06.
  5. ^ Belzer, Jack; Holzman, Albert G.; Kent, Allen, eds. (1981). "Virtual memory systems". Encyclopedia of computer science and technology. Vol. 14. CRC Press. p. 32. ISBN 0-8247-2214-0. Archived from the original on 2025-08-06.
  6. ^ Kilburn, T; Payne, R B; Howarth, D J (1962). "The Atlas Supervisor".
  7. ^ R. W. O'Neill. Experience using a time sharing multiprogramming system with dynamic address relocation hardware. Proc. AFIPS Computer Conference 30 (Spring Joint Computer Conference, 1967). pp. 611–621. doi:10.1145/1465482.1465581.
  8. ^ Scientific Data Systems Reference Manual, SDS 940 Computer (PDF). 1966. pp. 8–9.
  9. ^ "Swap prefetching". Linux Weekly News. 2025-08-06.
  10. ^ Sumner, F. H.; Haley, G.; Chenh, E. C. Y. (1962). "The Central Control Unit of the 'Atlas' Computer". Information Processing 1962. IFIP Congress Proceedings. Vol. Proceedings of IFIP Congress 62. Spartan.
  11. ^ "The Atlas". University of Manchester: Department of Computer Science. Archived from the original on 2025-08-06.
  12. ^ "Atlas Architecture". Atlas Computer. Chilton: Atlas Computer Laboratory. Archived from the original on 2025-08-06.
  13. ^ Kilburn, T.; Payne, R. B.; Howarth, D. J. (December 1961). "The Atlas Supervisor". Computers - Key to Total Systems Control. Conferences Proceedings. Vol. 20, Proceedings of the Eastern Joint Computer Conference Washington, D.C. Macmillan. pp. 279–294. Archived from the original on 2025-08-06.
  14. ^ Kilburn, T.; Edwards, D. B. G.; Lanigan, M. J.; Sumner, F. H. (April 1962). "One-Level Storage System". IRE Transactions on Electronic Computers (2). Institute of Radio Engineers: 223–235. doi:10.1109/TEC.1962.5219356.
  15. ^ Tsigkogiannis, Ilias (2025-08-06). "Crash Dump Analysis". driver writing != bus driving. Microsoft. Archived from the original on 2025-08-06. Retrieved 2025-08-06.
  16. ^ "Windows Sysinternals PageDefrag". Sysinternals. Microsoft. 2025-08-06. Archived from the original on 2025-08-06. Retrieved 2025-08-06.
  17. ^ "Page File Information". Oingo KPT. Retrieved 2025-08-06.
  18. ^ "What Does Defragging Do?". HP Tech Takes. Hewlett-Packard. Retrieved 2025-08-06.
  19. ^ Both, David (2025-08-06). "An introduction to swap space on Linux systems". Opensource.com. Retrieved 2025-08-06.
  20. ^ "swapon(2) – Linux man page". Linux.Die.net. Archived from the original on 2025-08-06. Retrieved 2025-08-06.
  21. ^ ""Jesper Juhl": Re: How to send a break? - dump from frozen 64bit linux". LKML. 2025-08-06. Archived from the original on 2025-08-06. Retrieved 2025-08-06.
  22. ^ "Andrew Morton: Re: Swap partition vs swap file". LKML. Archived from the original on 2025-08-06. Retrieved 2025-08-06.
  23. ^ "The Linux Kernel Documentation for /proc/sys/vm/".
  24. ^ Andrews, Jeremy (2025-08-06). "Linux: Tuning Swappiness". kerneltrap.org. Archived from the original on 2025-08-06. Retrieved 2025-08-06.
  25. ^ Rik van Riel (2025-08-06). "swap death (as in 2.1.91) and page tables". Archived from the original on 2025-08-06.
  26. ^ Kyle Rankin (2012). DevOps Troubleshooting: Linux Server Best Practices. Addison-Wesley. p. 159. ISBN 978-0-13-303550-6. Archived from the original on 2025-08-06.
  27. ^ Andries Brouwer. "The Linux kernel: Memory". Archived from the original on 2025-08-06.
  28. ^ Red Hat. "Capacity Tuning". Archived from the original on 2025-08-06.
  29. ^ "Memory overcommit settings". 2025-08-06. Archived from the original on 2025-08-06.
  30. ^ Peter MacDonald (2025-08-06). "swapping to death". Archived from the original on 2025-08-06.
  31. ^ John Siracusa (2025-08-06). "Mac OS X 10.1". Ars Technica. Archived from the original on 2025-08-06. Retrieved 2025-08-06.
  32. ^ AmigaOS Core Developer (2025-08-06). "Re: Swap issue also on Update 4 ?". Hyperion Entertainment. Archived from the original on 2025-08-06. Retrieved 2025-08-06.
  33. ^ E.g., Rotational Position Sensing on a Block Multiplexor channel
  34. ^ "Aligning filesystems to an SSD's erase block size | Thoughts by Ted". Thunk.org. 2025-08-06. Archived from the original on 2025-08-06. Retrieved 2025-08-06.
  35. ^ a b Bill Buzbee. "Magic-1 Minix Demand Paging Design". Archived from the original on 2025-08-06. Retrieved 2025-08-06.
[edit]
十羊九不全是什么意思 百雀羚适合什么年龄段 腺样体肥大吃什么药 怎么看微信好友什么时候加的 白血球低吃什么补得快
非萎缩性胃炎伴糜烂吃什么药 口干舌燥是什么病的前兆 红痣用什么药膏去除 prn是什么医嘱 www指什么
糖尿病都有什么症状 办理身份证需要带什么 糖类抗原ca125偏高是什么原因 眼球出血是什么原因引起的 孤臣是什么意思
女性更年期挂什么科 为什么当兵 三年级用什么笔 不以规矩下一句是什么 女生为什么会肾虚
梦见好多衣服是什么意思hcv9jop8ns1r.cn 肾积水是什么原因造成的1949doufunao.com vivo是什么品牌手机hcv7jop9ns9r.cn 单三是什么hcv9jop3ns3r.cn 一月二十五号是什么星座bfb118.com
白色车里放什么摆件好hcv9jop2ns1r.cn 黑色皮肤适合什么颜色的衣服hcv7jop9ns4r.cn lemaire是什么品牌hcv7jop4ns5r.cn 为什么会卵巢早衰hcv8jop8ns8r.cn 女性白带发黄是什么原因clwhiglsz.com
空调抽真空是什么意思hcv8jop6ns4r.cn 2月份是什么星座hcv9jop0ns2r.cn 壬字五行属什么hcv8jop7ns2r.cn 外阴瘙痒是什么病hcv7jop9ns8r.cn 脑梗能吃什么水果hcv9jop7ns3r.cn
什么的舞台hcv8jop5ns7r.cn 送男教师什么礼物合适dajiketang.com 抽血后头晕是什么原因hcv9jop6ns3r.cn nc是什么hcv8jop7ns1r.cn 白化病有什么危害吗hcv8jop4ns0r.cn
百度 技术支持:蜘蛛池 www.kelongchi.com