티스토리 뷰

운영체제

메모리 관리 개요

뭉크테크 2025. 1. 24. 23:51

개요

 

옛날에는 512KB 메모리 양을 가진 8088XT라는 PC가 있었는데 이 PC CPU 쿨럭 성능이 10MHz정도 된다.( 5MHz ~ 16MHz)

여기서 상식적으로 알아야 할 내용이 뭐냐면 메모리는 총 2분류로 나눠지는데 RAM이라는 1차메모리가 있고 SSD 혹은 HDD라는 2차메모리가 있다.

 

 

여기서 메모리 주소 애기가 나오는데 메모리라고 하는 것에 대해서 어느 공간을 일부 잘라서 그 공간에 일련번호를 붙이는데 그 일련번호를 메모리 주소라고 한다. 또한 이 메모리 주소가 붙은 메모리의 일정한 단위 크기는 1byte이다. 즉, 1byte마다 메모리 주소가 붙는다. 그리고 영문자 한 글자를 저장할 수 있는 기억 공간의 최소단위이며, 컴퓨터는 기억 공간을 관리할 때 1Byte 단위로 관리한다. 위 그림을 보면, 이해할 수 있다. a 라는 문자 배열 변수에다 Hello World 라는 문자배열을 대입하였고, 해당 문자배열의 문자 상수 값들이 메모리 한 칸 즉, 1byte 씩 자리를 차지하고 있음을 위 그림의 빨간 박스친 부분을 보면 알 수 있다.

 

근데 이 주소 체계가 32bit 체계이면 메모리 관리 최대크기가 2^32 = 4GB정도가 나온다. 만약 64bit라고 하면 2^64 = 16EB정도 나온다. 그래서 웃긴게 옛날에 32bit OS를 설치하고 RAM을 8GB를 장착하면 4GB밖에 인식을 못했는데 그 이유가 위에 설명한 이유에서 비롯된것이다. 그리고 만약 본인이 64bit 체계 CPU와 64bit 체계 OS를 쓴다고 할시, 64 bit platform 이라 한다. 

그러면 64bit platform에선 16EB RAM을 꽂으면 다 인식이 가능할까?  불가능하다. 위 사진을 보면, 윈도우 홈버전 기준으로 128GB까지 인식이 되고 pro버전 이상은 2TB까지 인식이 가능하다.

 

컴파일러, 인터프리터

컴퓨터에서 연산을 하는 주체는 CPU이다. CPU가 연산을 하는 주체이긴 하지만 속도도 굉장히 빠르다. CPU에 연산할 거리들이 쭉 나열되어 있는데 CPU는 이 연산할 거리들을 끄집어내서 실행을 하려 한다. 근데 문제는 CPU는 실행하려 하는데 연산거리는 누군가 추가를 해줄 것이다. 즉, 해야할 일이 쌓여있다는 것은 CPU 연산속도가 작업거리가 추가되는 속도보다 더디다는 것이고 반대로 할거리들이 비어있다는 것은 CPU 자원의 낭비가 발생한다. 이런것들 때문에 등장하는 것이 캐시이다.

연산이 실행될때는 CPU가 인식 가능한 코드(기계어)로 바꿔야하고 프로그램들은 일반적으로 C나 Python등 프로그래밍 언어로 작성하는데 이 코드들을 기계어로 번역해주는 과정이 컴파일 혹은 인터프리터라고 한다.

빠른 실행을 위해 이런 일거리들을 보통 RAM에 올려놓고 사용한다.

 

메모리 매니저

HDD의 정보를 RAM에 복사하고 그 RAM이 CPU에 정보를 복사하는 일련의 과정에서 개입하는 요소가 있는데 그게 메모리 매니저이다. 메모리 매니저가 하는 역할은 가져오기, 배치, 재배치이다. 이중에 가장 중요한 역할이 배치정책이다.

배치정책을 왜 애기하냐면 예를 들어 RAM이라는 공간은 한정되어 있는데 그런데 그 위에 작동하는 프로세스가 여러개 있을 때 이 프로세스들 전부 빠른 연산을 위해 RAM을 쓰고 싶어한다. 하지만 RAM의 기억공간은 한정적이기 때문에 이 프로세스들이 동시에 작동하기 위해서는 재배치 작업이 필요하다. 즉, RAM이 가득 찼을 때 연산을 별로 안하는 프로세스를 HDD로 옮기고 그 자리에 다른 프로세스를 배치한다. 이때 배치를 할때 사용하는 단위가 page이다.

 

  • 배치정책: 가져온 프로세스를 어떤 위치에 올려놓을지 결정하는 정책
  • 페이징: 메모리를 같은 크기로 자르는 것을 말한다.
  • 세그먼테이션: 프로세스의 크기에 맞게 자르는 것을 말한다.
  • 세그먼트: 메모리를 Stack, Heap, Text, Data영역등으로 나누는데 그때 나누는 것을 말한다.
  • 기본적으로 OS는 page단위로 메모리를 통제하고 윈도우 기준 page크기는 4KB이다.

 

 

출처

https://en.wikipedia.org/wiki/Intel_8088

 

Intel 8088 - Wikipedia

From Wikipedia, the free encyclopedia Intel microprocessor model The Intel 8088 ("eighty-eighty-eight", also called iAPX 88)[2][3][4] microprocessor is a variant of the Intel 8086. Introduced on June 1, 1979,[5][6][7][8] the 8088 has an eight-bit external

en.wikipedia.org

https://en.wikipedia.org/wiki/IBM_Personal_Computer_XT

 

IBM Personal Computer XT - Wikipedia

From Wikipedia, the free encyclopedia Personal computer model released in 1983 The IBM Personal Computer XT (model 5160, often shortened to PC/XT) is the second computer in the IBM Personal Computer line, released on March 8, 1983.[1] Except for the additi

en.wikipedia.org

https://learn.microsoft.com/en-us/windows/win32/memory/memory-limits-for-windows-releases

 

Memory Limits for Windows and Windows Server Releases - Win32 apps

Describes the memory limits for supported Windows and Windows Server releases and provides lists of memory limits.

learn.microsoft.com

https://www.inflearn.com/course/%EA%B3%B0%EC%B1%85-%EC%89%BD%EA%B2%8C-%EB%B0%B0%EC%9A%B0%EB%8A%94-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C/dashboard

 

곰책으로 쉽게 배우는 최소한의 운영체제론 강의 | 널널한 개발자 - 인프런

널널한 개발자 | '넓고 얕게 외워서 컴공 전공자 되기' 강의를 끝낸 분들이 운영체제에 대해 좀 더 깊이 있는 공부를 할 수 있도록 제공되는 강의입니다., 운영체제도 널널한 개발자와 함께! 👨

www.inflearn.com

 

'운영체제' 카테고리의 다른 글

메모리 오버레이와 스왑  (2) 2025.02.03
절대주소와 상대주소  (1) 2025.01.26
프로세스간 통신  (1) 2025.01.13
CPU 스케줄링  (2) 2025.01.13
프로세스와 쓰레드  (7) 2025.01.12
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2026/08   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
글 보관함