티스토리 뷰
1. 메모리 관리의 개요
- 폰노이만 구조에서 메모리는 유일한 작업 공간이며 모든 프로그램은 메모리에 올라와야 실행할 수 있다. 따라서 메모리의 효율적인 공간 관리가 필수적이다. 이를 위해 CPU 안에 캐시를 만들어 작업하고, 보조저장장치를 활용하기도 한다.
- 복잡한 메모리 관리는 메모리 관리 시스템이 담당한다. 프로세스와 메모리 관리자는 메모리를 두고 충돌하는데 이를 메모리 관리의 이중성이라고 한다.
- 컴파일러는 소스코드를 기계어로 번역한 후 한꺼번에 실행하고, 인터프리터는 소스코드를 한 행씩 번영하여 실행한다. 컴파일러 방식은 오류 발견과 소스코드 최적화에 이점이 있다. 참고로, 라이브러리는 자주 사용하는 함수를 시스템 내에 미리 만들어둔 것이고, 실행할 때 삽입되는 함수를 가진 동적 라이브러리가 있다.
- 메모리관리 작업은 가져오기(fetch), 배치(placement), 재배치(replacement)로 구분된다. 실행할 프로세스와 데이터를 메모리로 가져오고, 메모리를 어떤 크기로 자를지 정하며(페이징, 세그먼테이션), 가져온 프로세스와 데이터를 메모리의 어떤 부분에 올려놓을지 결정한다. 그리고 꼭 찬 메모리에 새로운 프로세스를 가져오기 위해 오래된 프로세스를 내보내는 작업도 한다.
2. 메모리 주소
- 메모리 주소는 물리 주소와 논리 주소로 나뉜다. 물리 주소 공간은 하드웨어 입장에서 바라본 공간으로 컴퓨터마다 크기가 다르고, 사용자 입장에서 본 공간을 논리 주소 공간이라고 한다.
- 경계 레지스터는 사용자 영역이 운영체제 영역으로 침법 하는 것을 만든 하드웨어이다. 두 영역의 경계 지점의 주소를 가지며, 경계 레지스터를 벗어나는 작업을 요청하는 프로세스가 있으면 그 프로세스를 종료한다.
- 물리 주소는 메모리의 입장에서, 논리 주소는 사용자 프로세스 입장에서 바라본 주소다. 예를 들어, 실행 파일 40번지에 A를 넣는 기계어 코드가 있을 때, 400번지는 물리 주소이고, 시작점이 0일 때 40번지는 논리 주소이다. 논리 주소 공간은 항상 0부터 시작하지만, 물리 주소는 매번 바뀐다.
3. 단일 프로그래밍 환경의 메모리 할당
- 메모리 오버레이란 프로그램의 크기가 실제 메모리(물리 메모리)보다 클 때 전체 프로그램을 적당한 크기로 잘라 가져오는 기법을 의미한다. 어떤 모듈을 가져오거나 내보낼지는 프로그램 카운터가 결정한다. 이는 앞으로 실행할 명령어의 위치를 가리키는 레지스터로, 해당 모듈이 메모리에 없으면 메모리 관리자에게 요청해 불러온다.
- 스왑 영역은 메모리가 모자라서 쫓겨난 프로세스를 저장장치의 특별한 공간에 모아두는 것을 의미한다. 스왑 영역은 메모리 관리자가 관리한다. 사용자는 스왑 영역의 크기 + 실제 메모리 = 전체 메모리로 인식한다.
4. 다중 프로그래밍 환경의 메모리 할당
- 메모리에 여러 개의 프로세스를 배치하는 방법은 크게 가변, 고정 분할 방식으로 나뉜다. 각각 프로세스의 크기에 따라, 크기에 상관없이 같은 크기로 나누는 방식을 의미한다. 가변 분할 방식은 한 프로세스가 메모리의 연속된 공간에 배치되기 때문에 연속 메모리 할당이라고 하고, 공정 분할 방식은 하나의 프로세스가 여러 개로 나뉘어 배치되기 때문에 비연속 메모리 할당이라고 한다.
- 가변 분할 방식은 메모리 통합 등의 부가적인 작업이 필요해 메모리 관리가 어렵지만 하나의 프로세스를 연속된 공간에 배치할 수 있다는 장점이 있다. 반면 고정 분할 방식은 메모리가 일정한 크기로 나뉘기 때문에 메모리 관리가 편하지만 프로세스가 여러 곳으로 나뉠 수 있다는 단점이 있다. 현대 운영체제는 메모리 관리가 유리한 고정 분할 방식을 사용한다.
- 가변 분할 방식에서 발생한 작은 빈 공간을 단편화라고 하고, 프로세스의 바깥쪽에 위치하기 때문에 외부 단편화라고 한다. 해결 방법으로 선처리인 메모리 배치 방식, 후처리인 조각 모음이 있다. 메모리 배치 방식은 최초, 최적, 최악 배치로 나뉜다. 조각 모음은 프로세스를 멈추고, 이동하고, 주소를 바꾸고, 다시 시작하는 작업을 해야 하므로 시간이 많이 걸린다.
- 고정 분할 방식을 사용해 물리 메모리를 나누는 방식을 페이징 메모리 관리 기법이라고 한다. 일정하게 나뉜 메모리의 크기보다 작은 프로세스가 배치될 경우 낭비되는 공간이 생긴다. 이처럼 공간이 남은 것을 내부 단편화라고 한다.
- 외부 단편화를 완화하는 방법으로 버디 시스템이 있다. 가변, 고정분할 방식의 특징을 모두 가지고 있는데 프로세스의 크기에 맞게 메모리를 1/2로 자르고 프로세스를 메모리에 배치한 후 프로세스가 종료되면 주변의 빈 조각과 합쳐 하나의 큰 덩어리를 만드는 방식이다.
구분 | 가변 분할 방식 | 고정 분할 방식 |
메모리 관리 기법 | 세그먼테이션 | 페이징 |
특징 | 연속 메모리 할당 | 비연속 메모리 할당 |
장점 | 프로세스를 한 덩어리로 관리 가능 | 메모리 관리가 편리함 |
단점 | 빈 공간의 관리가 어려움 | 프로세스가 분할되어 처리됨 |
단편화 | 외부 단편화 | 내부 단편화 |
'Study > OS' 카테고리의 다른 글
기말고사 정리2 (1) | 2023.06.09 |
---|---|
Chapter 04 CPU 스케줄링 (0) | 2023.04.16 |
Chapter 03 프로세스와 스레드 (0) | 2023.04.13 |
Chapter 02 컴퓨터의 구조와 성능 향상 (0) | 2023.04.10 |
Chapter 01 운영체제의 개요 (0) | 2023.04.08 |