페이지(컴퓨터 메모리)

Page (computer memory)

페이지, 메모리 페이지 또는 가상 페이지는 페이지 테이블의 단일 엔트리로 설명되는 고정 길이의 연속된 가상 메모리 블록입니다.가상 메모리 운영 체제에서 메모리 관리를 위한 최소 데이터 단위입니다.마찬가지로 페이지 프레임은 메모리 페이지가 운영체제에 [1][2][3]의해 매핑되는 물리 메모리의 최소 고정 길이 연속 블록입니다.

메인 메모리와 하드 디스크 드라이브와 같은 보조 저장소 간의 페이지 전송을 페이징 또는 [4]스왑이라고 합니다.

페이지 크기 트레이드오프

페이지 크기는 보통 프로세서 아키텍처에 따라 결정됩니다.기존에는 시스템의 페이지 크기는 4,096바이트와 같이 균일했습니다.다만, 프로세서 설계에서는, 그 장점 때문에, 복수의 페이지 사이즈를 동시에 사용할 수 있는 경우가 있습니다.최적의 페이지 [5]크기를 선택할 때 고려해야 할 몇 가지 사항이 있습니다.

페이지 테이블 크기

페이지 크기가 작은 시스템에서는 더 많은 페이지를 사용하기 때문에 더 많은 공간을 차지하는 페이지 테이블이 필요합니다.예를 들어 2개의32 가상 주소 공간이 4개의 KiB(2바이트12) 페이지에 매핑되어 있는 경우 가상 페이지 수는20 2 =(2/2)입니다3212.단, 페이지 크기를 32KiB(2바이트)로15 늘리면 2페이지만 필요합니다17.다단계 페이징 알고리즘은 페이지 테이블을 더욱 작은 테이블로 분할하여 효과적으로 페이지 테이블을 페이징함으로써 프로세스별로 큰 페이지 테이블을 할당하는 메모리 비용을 절감할 수 있다.

TLB 사용률

메모리에 대한 모든 액세스는 가상 주소에서 물리 주소로 매핑되어야 하므로 매번 페이지 테이블을 읽는 것은 상당한 비용이 들 수 있습니다.따라서 고속 캐시인 Translation Lookaside Buffer(TLB; 변환 룩사이드버퍼)가 자주 사용됩니다.TLB의 사이즈는 한정되어 있기 때문에, 소정의 요구(TLB 미스)를 만족시킬 수 없는 경우는, 올바른 매핑을 위해서, 페이지 테이블을 수동으로(아키텍처에 따라서 하드웨어 또는 소프트웨어로) 검색할 필요가 있습니다.페이지 사이즈가 클수록, 같은 사이즈의 TLB 캐시가 대량의 메모리를 추적할 수 있기 때문에, 코스트가 드는 TLB 누락이 회피됩니다.

내부 플래그멘테이션

프로세스에서 정확한 페이지 수를 사용해야 하는 경우는 거의 없습니다.그 결과, 마지막 페이지는 부분적으로만 가득 차 메모리 용량이 다소 낭비될 수 있습니다.페이지 사이즈가 클수록 메모리 중 사용되지 않을 가능성이 있는 부분이 메인 메모리에 로드되기 때문에 대량의 메모리가 낭비됩니다.페이지 사이즈가 작을수록 할당에 필요한 실제 메모리 용량과 거의 일치합니다.

예를 들어 페이지 크기가 1024KiB라고 가정합니다.프로세스가 1025KiB를 할당하는 경우 2페이지를 사용해야 합니다.그 결과 사용되지 않는 공간은 1023KiB가 됩니다(한쪽 페이지는 1024KiB, 다른 한쪽 페이지는 1KiB만 소비합니다).

디스크 액세스

회전 디스크에서 전송할 때 지연의 대부분은 디스크 플래터 위에 읽기/쓰기 헤드를 올바르게 배치하는 데 걸리는 시크 시간으로 인해 발생합니다.따라서, 대규모 순차 전송은 여러 소규모 전송보다 효율적입니다.같은 양의 데이터를 디스크에서 메모리로 전송하면 페이지가 클 때보다 페이지가 클 때 시간이 적게 걸리는 경우가 많습니다.

프로그래밍 방식으로 페이지 크기 가져오기

대부분의 운영 체제에서는 프로그램이 실행 시 페이지 크기를 검색할 수 있습니다.이것에 의해, 할당량을 이 사이즈에 맞추고, 페이지의 전체적인 내부 단편화를 삭감하는 것으로, 프로그램은 메모리를 보다 효율적으로 사용할 수 있습니다.

Unix 및 POSIX 기반 운영 체제

Unix 및 POSIX 기반 시스템은 시스템 기능을 사용할 수 있습니다.sysconf()다음 예시와 같이 C 프로그래밍 언어로 기술되어 있습니다.[6][7][8][9][10]

#실패하다 <stdio.h> #실패하다 <리스트 없음.h>/* sysconf(3) */  인트 주된(무효) {  인쇄물("이 시스템의 페이지 크기는 %ld바이트입니다.\n",   시스템 컨피규레이션(_SC_PAGESIZE)); /* _SC_PAGE_SIZE도 괜찮습니다.*/   돌아가다 0; } 

많은 Unix 시스템에서 명령줄 유틸리티는getconf사용할 [11][12][13]수 있습니다.예를들면,getconf PAGESIZE는 페이지 크기를 바이트 단위로 반환합니다.

Windows 기반 운영 체제

Windows 9xWindows NT 패밀리와 같은 Win32 기반 운영체제는 시스템 기능을 사용할 수 있습니다.GetSystemInfo()[14][15] 에서kernel32.dll.

#실패하다 <stdio.h> #실패하다 <윈도우>h>  인트 주된(무효) {  SYSYSTEM_INFO ;  Get System Info(시스템 정보)(&);   인쇄물("이 시스템의 페이지 크기는 %u바이트입니다.\n", .dw Page Size(페이지 크기));   돌아가다 0; } 

여러 페이지 크기

일부 명령 집합 아키텍처는 표준 페이지 크기보다 훨씬 큰 페이지를 포함하여 여러 페이지 크기를 지원할 수 있습니다.사용 가능한 페이지 크기는 명령 집합 아키텍처, 프로세서 유형 및 작동(주소 지정) 모드에 따라 달라집니다.운영체제는 아키텍처에서 지원되는 크기에서 하나 이상의 크기를 선택합니다.모든 프로세서가 정의된 큰 페이지 크기를 모두 구현하는 것은 아닙니다.대용량 페이지(Linux에서는 "대용량 페이지", FreeBSD에서는 "슈퍼 페이지", Microsoft WindowsIBM AIX 용어에서는 "대용량 페이지"라고 함)를 지원하므로 TLB 캐시에 대한 부담을 줄이고 메모리 사용량을 합리적으로 유지하면서 최대 15%까지 증가시킵니다.작은 할당에는 벨을 사용합니다.

아키텍처별[16] 페이지 크기
아키텍처 최소 페이지 크기 더 큰 페이지 크기
32비트 x86[17] 4 KiB PSE 모드에서는 4 MiB, PAE 모드에서는[18] 2 MiB
x86-64[17] 4 KiB 2 MiB, 1 GiB (CPU에 탑재되어 있는 경우에만)PDPE1GB플래그)
IA-64(아이테니엄)[19] 4 KiB 8 KiB, 64 KiB, 256 KiB, 1 MiB, 4 MiB, 16 MiB, 256 MiB[18]
전원 ISA[20] 4 KiB 64 KiB, 16 MiB, 16 GiB
SPARC v8과 SPARC 레퍼런스[21] MMU 4 KiB 256 KiB, 16 MiB
UltraSPARC 아키텍처[22] 2007 8KiB 64 KiB, 512 KiB(옵션), 4 MiB, 32 MiB(옵션), 256 MiB(옵션), 2 GiB(옵션), 16 GiB(옵션)
ARMv7[23] 4 KiB 64 KiB, 1 MiB("섹션") 및 16 MiB("슈퍼섹션") (특정 구현에 의해 정의됨)
ARMv8 4 KiB 16 KiB, 64 KiB
RISCV32[24] 4 KiB 4 MiB ('메가페이지')
RISCV64[24] 4 KiB 2 MiB(메가파지), 1 GiB(기가파지), 512 GiB(테라파지), 256 TiB(테라파지, 주소공간이 57비트 이상인 CPU만)

Pentium Pro 및 AMD Athlon 이후 x86 프로세서는 표준 4KiB 페이지 외에 4MiB 페이지(PAE사용하는 경우 2MiB 페이지)를 지원합니다.AMD의 새로운 AMD64 프로세서 인텔의 Westeon[25] 프로세서 등 최신 x86-64 프로세서 및 Latereon 프로세서도 지원합니다.IA-64는 4KiB에서 256MiB까지 최대 8개의 페이지 크기를 지원하며, 일부 아키텍처는 유사한 [specify]기능을 갖추고 있습니다.

대부분의 현대 PC에서 사용되는 프로세서에서 사용 가능한 큰 페이지는 일반적으로 대규모 애플리케이션, 일반적으로 대규모 서버 및 컴퓨팅 클러스터에서 볼 수 있는 애플리케이션, 운영 체제 자체에서만 사용됩니다.일반적으로 이러한 기능을 사용하려면 높은 권한, 대량 할당을 하는 애플리케이션의 협조(일반적으로 운영체제에 큰 페이지를 요청하도록 플래그를 설정) 또는 수동 관리자 구성이 필요합니다. 운영체제는 일반적으로 설계상 이러한 권한을 디스크로 페이지 아웃할 수 없습니다.

다만, SGI IRIX 는, 복수의 페이지 사이즈를 범용으로 서포트하고 있습니다.각 프로세스는 힌트를 제공할 수 있으며 운영체제는 지정된 주소 공간의 [26]영역에 대해 가능한 최대 페이지 크기를 자동으로 사용합니다.이후 작업에서는 수정되지 않은 애플리케이션에 대해 사전 예약, 기회주의적 프로모션, 투기적 선동 및 단편화 [27]제어를 통해 페이지 크기를 혼합하여 사용할 수 있는 투명한 운영 체제를 제안했습니다.

Linux는 2.6 시리즈 이후 를 통해 여러 아키텍처에서 방대한 페이지를 지원했습니다.hugetlbfs파일[28] 시스템 및 미포함hugetlbfs 2.6.[29]38 이후.Windows Server 2003(SP1 이후), Windows Vista 및 Windows Server 2008은 큰 [30]페이지라는 이름으로 큰 페이지를 지원합니다.Windows 2000 및 Windows XP는 내부적으로 큰 페이지를 지원하지만 응용 프로그램에 노출되지는 [31]않습니다.버전 9 이후 Solaris는 SPARC 및 x86에서 [32][33]큰 페이지를 지원합니다.FreeBSD 7.2-RELEASE는 슈퍼 페이지를 [34]갖추고 있습니다.Linux 에서는 최근까지 방대한 페이지를 사용하기 위해 응용 프로그램을 수정해야 했습니다.2.6.38 커널은 거대한 [29]페이지를 투명하게 사용할 수 있도록 지원했습니다.투명한 대용량 페이지를 지원하는 Linux 커널 및 FreeBSD 및 Solaris에서는 응용 프로그램이 수정할 [34]필요 없이 대용량 페이지를 자동으로 활용합니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ Christopher Kruegel (2012-12-03). "Operating Systems (CS170-08 course)" (PDF). cs.ucsb.edu. Archived from the original (PDF) on 2016-08-10. Retrieved 2016-06-13.
  2. ^ Martin C. Rinard (1998-08-22). "Operating Systems Lecture Notes, Lecture 9. Introduction to Paging". people.csail.mit.edu. Archived from the original on 2016-06-01. Retrieved 2016-06-13.
  3. ^ "Virtual Memory: pages and page frames". cs.miami.edu. 2012-10-31. Archived from the original on 2016-06-11. Retrieved 2016-06-13.
  4. ^ 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
  5. ^ "Using 4KB Page Size for Virtual Memory is Obsolete". IEEE. 2009-08-10. CiteSeerX 10.1.1.154.2023. {{cite journal}}:Cite 저널 요구 사항 journal=(도움말)
  6. ^ limits.h기본 정의 레퍼런스, 오픈 그룹의 단일 UNIX 사양, 버전 4
  7. ^ sysconf – System Interfaces Reference, 단일 UNIX 사양, The Open Group 버전 4
  8. ^ sysconf(3)Linux 라이브러리 함수 매뉴얼
  9. ^ sysconf(3)DarwinmacOS 라이브러리 기능 매뉴얼
  10. ^ sysconf(3C)Solaris 10 기본 라이브러리 기능 레퍼런스 매뉴얼
  11. ^ getconf – 셸 및 유틸리티 레퍼런스, 단일 UNIX 사양, The Open Group 버전 4
  12. ^ getconf(1)Linux 사용자 명령어 매뉴얼
  13. ^ getconf(1)DarwinmacOS 일반 명령어 매뉴얼
  14. ^ "GetSystemInfo function". Microsoft.
  15. ^ "SYSTEM_INFO structure". Microsoft.
  16. ^ "Hugepages - Debian Wiki". Wiki.debian.org. 2011-06-21. Retrieved 2014-02-06.
  17. ^ a b "Intel® 64 and IA-32 Architectures Software Developer's Manual Volume 3 (3A, 3B, 3C & 3D): System Programming Guide" (PDF). December 2016. p. 4-2.
  18. ^ a b "Documentation/vm/hugetlbpage.txt". Linux kernel documentation. kernel.org. Retrieved 2014-02-06.
  19. ^ "Intel Itanium Architecture Software Developer's Manual Volume 2: System Architecture" (PDF). May 2010. p. 2:58.
  20. ^ IBM Power Systems Performance Guide: Implementing and Optimizing. IBM Redbooks. February 2013. ISBN 9780738437668. Retrieved 2014-03-17.
  21. ^ "The SPARC Architecture Manual, Version 8". 1992. p. 249.
  22. ^ "UltraSPARC Architecture 2007" (PDF). 2010-09-27. p. 427.
  23. ^ "ARM Architecture Reference Manual ARMv7-A and ARMv7-R edition". 2014-05-20. p. B3-1324.
  24. ^ a b Waterman, Andrew; Asanović, Krste; Hauser, John (2021). The RISC-V Instruction Set Manual Volume II: Privileged Architecture (PDF). pp. 79–87.
  25. ^ "The Intel Xeon 5670: Six Improved Cores". AnandTech. Retrieved 2012-11-03.
  26. ^ "General Purpose Operating System Support for Multiple Page Sizes" (PDF). static.usenix.org. Retrieved 2012-11-02.
  27. ^ Navarro, Juan; Iyer, Sitararn; Druschel, Peter; Cox, Alan (December 2002). Practical, Transparent Operating System Support for Superpages (PDF). 5th Usenix Symposium on Operating Systems Design and Implementation.
  28. ^ "Pages - dankwiki, the wiki of nick black". Dank.qemfd.net. Retrieved 2012-11-03.
  29. ^ a b Corbet, Jonathan. "Transparent huge pages in 2.6.38". LWN. Retrieved 2011-03-02.
  30. ^ "Large-Page Support". Microsoft Docs. 2018-05-08.
  31. ^ "AGP program may hang when using page size extension on Athlon processor". Support.microsoft.com. 2007-01-27. Retrieved 2012-11-03.
  32. ^ "Supporting Multiple Page Sizes in the Solaris Operating System" (PDF). Sun BluePrints Online. Sun Microsystems. Retrieved 2008-01-19.
  33. ^ "Supporting Multiple Page Sizes in the Solaris Operating System Appendix" (PDF). Sun BluePrints Online. Sun Microsystems. Retrieved 2008-01-19.
  34. ^ a b "FreeBSD 7.2-RELEASE Release Notes". FreeBSD Foundation. Retrieved 2009-05-03.
  35. ^ "2.3.1 Read-Only Memory / 2.3.2 Program Random Access Memory". MCS-4 Assembly Language Programming Manual - The INTELLEC 4 Microcomputer System Programming Manual (PDF) (Preliminary ed.). Santa Clara, California, USA: Intel Corporation. December 1973. pp. 2-3–2-4. MCS-030-1273-1. Archived (PDF) from the original on 2020-03-01. Retrieved 2020-03-02. […] ROM is further divided into pages, each of which contains 256 bytes. Thus locations 0 through 255 comprise page 0 of ROM, location 256 through 511 comprise page 1 and so on. […] Program random access memory (RAM) is organized exactly like ROM. […]
  36. ^ a b "1. Introduction: Segment Alignment". 8086 Family Utilities - User's Guide for 8080/8085-Based Development Systems (PDF). Revision E (A620/5821 6K DD ed.). Santa Clara, California, USA: Intel Corporation. May 1982 [1980, 1978]. p. 1-6. Order Number: 9800639-04. Archived (PDF) from the original on 2020-02-29. Retrieved 2020-02-29.

추가 정보

  • Dandamudi, Sivarama P. (2003). Fundamentals of Computer Organization and Design (1st ed.). Springer. pp. 740–741. ISBN 0-387-95211-X.