Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 정처기
- 코틀린
- 스터디
- 혼공챌린지
- 안드로이드
- 티스토리챌린지
- select
- 혼공단
- 혼공파
- 프로그래머스
- 인프런
- 안드로이드스튜디오
- groupby
- CS
- SQL
- 알고리즘
- Android
- 자바
- join
- 오블완
- 자료구조
- doitandroid
- 기술면접
- java
- MySQL
- Kotlin
- 카카오코테
- 정보처리기사
- 코테
- Til
Archives
- Today
- Total
Welcome! Everything is fine.
[CS 발표_02] OS의 메모리 관리 전략(페이징 & 세그멘테이션) 본문
728x90
OS가 메모리 관리를 해야하는 이유에 대해 설명하고, 메모리 관리 전략에 대해 설명해주세요.
OS가 메모리 관리를 해야하는 이유
각각의 프로세스는 독립된 메모리 공간을 갖는다. 따라서 각 프로세스는 다른 프로세스의 메모리 공간에 접근할 수 없다. 오로지 '운영체제'만이 운영체제 메모리 영역과 사용자 메모리 영역의 접근에 영향을 받지 않는다. 따라서 OS 만이 메모리를 관리할 수 있기 때문에 적절한 관리가 필요하다.
- 가상메모리를 이용한 Swapping
- 메모리 압축
- 페이징 & 세그멘테이션
- 고정 길이 할당 / 가변 길이 할당등의 방식으로 OS가 메모리 관리를 수행할 수 있다.
논리 메모리와 물리 메모리
다수의 프로세스를 실행하려면 한정된 메모리 공간에 많은 프로세스를 로드할 수 있어야 한다. 그래서 메모리 공간을 더 효율적으로 활용하기 위한 여러 방안이 고안되었다.
- 메모리 관리 장치(MMU, Memory Management Unit) : 논리 주소 → 물리 주소로 변환해주는 동작을 하는 하드웨어. CPU에 위치하며, CPU에서 메모리에 접근하기 전에 MMU를 거쳐 논리 주소에 해당하는 물리 주소를 얻는다. 메모리를 보호하는 역할을 한다.
외부 단편화와 내부 단편화
외부 단편화
- 프로그램의 크기보다 분할의 크기가 작은 경우, 해당 분할이 비어있어도 프로그램을 적재하지 못해 발생
내부 단편화
- 분할된 크기보다 작은 프로세스가 할당되어 메모리 공간이 남는 경우
- 하나의 분할 내부에서 사용되지 않는 메모리 조각
메모리 압축
- 외부 단편화 문제를 해결하는 방법 중 하나. 프로세스가 사용 중인 메모리 공간을 재배치해서 흩어져있는 가용 메모리 공간을 하나로 합치는 것.
- 작업 효율이 좋지 않음
스와핑
- 메모리에 올라온 프로세스의 주소 공간 전체를 디스크의 스왑 영역으로 일시적으로 내려놓는 것.
- 스왑 인 : 디스크 → 메모리
- 스왑 아웃 : 메모리 → 디스크
메모리 관리 전략
연속 메모리 할당
: 멀티 프로세스 환경에서 여러 프로세스를 메모리에 연속적으로 로드하는 방법
- 고정 분할 방식 : 메모리 영역을 분할 → 각 영역에 프로세스를 할당
- 단점 : 메모리에 올릴 수 있는 프로세스 수와 각 프로세스 크기가 제한됨, 단편화 문제 발생할 수 있음.
- 가변 분할 방식 : 할당할 프로세스의 크기에 따라 메모리 공간을 분할
- 최초 적합 : 가용 메모리 공간에서 프로세스 크기만큼 비어 있는 메모리 공간을 찾아 차례대로 프로세스를 로드하는 방식
- 최적 적합 : 할당하려는 프로세스 크기 이상인 가용 메모리 공간 중에서 가장 작은 공간에 프로세스를 할당하는 방식
- 최악 적합 : 할당하려는 프로세스 크기 이상인 가용 메모리 공간 중에서 가장 큰 공간에 프로세스를 할당하는 방식
비연속 메모리 할당
: 프로세스의 메모리 영역을 나눠서 메모리 공간에 저장하는 방법
- 페이징 : 프로세스의 논리 메모리 영역과 물리 메모리 영역을 각각 일정한 크기의 페이지와 프레임으로 나누는 기법.
- 페이지의 크기 == 프레임의 크기
- 페이지와 프레임에 각각 번호를 할당 → 페이지 테이블을 사용해 mapping
- 페이지 테이블 : 프로세스의 페이지 정보 & 페이지에 매핑하는 프레임 정보 저장, 페이지 테이블은 각 프로세스의 PCB에 저장됨.
- 장점 : 페이지를 물리 메모리에 연속으로 할당할 필요X → 외부 단편화 문제 해결
- 단점 : 프로세스 크기가 페이지 수로 나누어 떨어지지 않을 경우, 마지막 페이지가 페이지 크기 보다 작을 수 있으므로 내부 단편화 문제 발생 가능성O, 페이지 테이블을 저장하기 위한 메모리 공간이 추가로 필요함
- 페이징 기법
- 계층적 페이징(=멀티 레벨 페이징) : 페이지 테이블을 다시 페이지로 나눠 페이지 테이블 자체를 페이징하는 방식.
- 해시 페이지 테이블 : 해시 테이블의 각 항목에 저장된 연결 리스트에 페이지 번호를 해싱한 뒤에 첫 번째 요소와 가상 페이지 번호를 비교하는 방식.
- 역 페이지 테이블 : 프레임을 이용해 페이지를 찾는 방식.
- 세그먼테이션 : 프로세스의 메모리 영역을 논리적 단위인 세그먼트로 분할해 메모리를 할당하는 기법.
- 세그먼테이션 테이블을 사용해 세그먼트의 논리 주소를 물리 주소로 mapping
- 장점 : 프로세스의 메모리 영역을 논리적 단위로 나눠 저장하므로 단위별로 데이터를 보호하기 쉬움.
- 단점 : 세그먼트 크기가 균등하지 않아서 프로세스의 할당/해제를 반복하는 과정에서 외부 단편화 문제 발생 가능성O, 메모리에 로드된 스택 세그먼트 영역에서 오버플로 발생 시 다른 프로세스와 메모리 영역이 겹칠 수 있음 → 해당 세그먼트 중 하나를 디스크로 스왑 아웃 해야 함.
'CS 스터디 > 발표' 카테고리의 다른 글
[CS 발표_06] 인덱스란? (0) | 2024.05.31 |
---|---|
[CS 발표_05] 데이터베이스에서 락이란? (0) | 2024.05.31 |
[CS 발표_04] UDP의 특징과 UDP에서의 오류 검출 방법 (0) | 2024.05.27 |
[CS 발표_03] HTTP Keep Alive vs TCP Keep Alive (0) | 2024.05.27 |
[CS 발표_01] 메모리의 힙 영역과 스택 영역 (0) | 2024.05.06 |