이 글은 "쉽게 배우는 운영체제 (조성호 지음)"을 읽고 주관적으로 작성된 글입니다.
※ 요약
- 메모리 관리의 복잡성
- 운영체제를 포함한 모든 응용 프로그램이 메모리에 올라와 실행되어 메모리 관리가 복잡
- 컴파일러
- 소스코드를 기계어로 번역하여 한꺼번에 실행할 수 있도록 프로그램
- 인터프리터는 한 행씩 번역하여 실행
- 오류 검출과 코드 최적화도 담당
- 컴파일 -> 목적 코드(object code) / 라이브러리 연결 -> 동적 라이브러리 포함
* 동적 라이브러리 : 실행할 때 삽입되는 라이브러리, 함수가 변경되어도 새로 컴파일할 필요가 없음
- 메모리 관리자의 정책
- 가져오기 정책
- 프로세스가 필요로 하는 데이터를 메모리로 언제 가져올지 결정하는 정책 - 배치 정책
- 가져온 프로세스 메모리를 어디에 load할지 결정하는 정첵 - 재배치 정책
- 메모리가 꽉찼을 때, 메모리 내의 어떤 프로세스를 내보낼지 결정하는 정책
- 가져오기 정책
- 절대 주소와 상대 주소
- 절대 주소
- 실제 물리 주소, 메모리 관리자 입장의 주소 - 상대 주소
- 사용자 영역이 시작되는 주소를 0으로 변경하여 사용하는 주소
- 절대 주소
- 메모리 오버레이
- 프로세스의 크기가 실제 메모리(물리 메모리)보다 클 때, 전체 프로세스를 적당한 크기로 잘라서 가져오는 기법
- 스왑
- 스왑 영역
- 메모리가 모자라 쫓겨난 프로세스 / 프로세스의 일부가 저장되는 저장장치의 영역 - 스왑 인
- 스왑 영역에서 데이터를 가져오는 작업 - 스왑 아웃
- 스왑 영역으로 데이터를 내보내는 작업
- 스왑 영역
- 메모리 분할 방식
- 가변 분할 방식
- 프로세스의 크기에 따라 메모리를 나누는 것
- 메모리 영역마다 크기가 다름
- Continuous memory : 한 프로세스가 연속된 공간에 배치 - 고정 분할 방식
- 프로세스 크기에 상관없이 메모리를 같은 크기로 나누는 것
- Non-continuous memory : 한 프로세스가 분산되어 배치
- 가변 분할 방식
- 단편화
- 외부 단편화(External Fragmentation)
- 프로세스의 크기보다 남은 메모리 조각이 작아 할당이 불가능한 현상 - 내부 단편화(Internal Fragmentation)
- 각 메모리 조각에 프로세스를 배치하고 공간이 남는 현상
구분 가변 분할 방식 고정 분할 방식 메모리 단위 세그먼테이션(Segmentation) 페이징(Paging) 특징 연속 메모리 할당 (Continuous memory) 비연속 메모리 할당 (Non-countinuous memory) 장점 프로세스를 한 덩어리로 관리 가능 메모리 관리가 편리 단점 빈 공간의 관리가 어려움 프로세스가 분할되어 처리됨 단편화 외부 단편화 (External Fragmentation) 내부 단편화 (Internal Fragmentation)
- 외부 단편화(External Fragmentation)
- 가변 분할 방식의 메모리 배치 방식
- 최초 배치
- 메모리에서 적재 가능한 공간을 순서대로 찾아 배치
- 장점 : 남은 공간을 모두 확인할 필요가 없음 - 최적 배치
- 메모리의 빈 공간에서 적당한 크기에 배치
- 장점 : 크기가 딱 맞으면 단편화가 없음 - 최악 배치
- 최적 배치와 반대, 빈 공간이 가장 큰 공간에 배치
- 장점 : 배치 후 남은 공간이 쓸모있음 (외부 단편화가 일어날 확률이 적음)
- 최초 배치
- 조각 모음
- 프로세스의 메모리 위치를 옮겨 단편화가 발생한 메모리 영역을 합치는 작업
1. 메모리 관리의 개요
1) 메모리 관리의 복잡성
- 쩜
- 쩜
2) 메모리 관리의 이중성
- 쩜
- 쩜
3) 소스코드의 번역과 실행
- 쩜
- 쩜
4) 메모리 관리자의 역할
- 쩜
- 쩜
2. 메모리 주소
1) 32bit CPU와 64bit CPU의 차이
- 쩜
- 쩜
2) 절대 주소와 상대 주소
- 쩜
- 쩜
3. 단일 프로그래밍 환경에서의 메모리 할당
1) 메모리 오버레이
- 쩜
- 쩜
2) 스왑
- 쩜
- 쩜
4. 다중 프로그래밍 환경에서의 메모리 할당
1) 메모리 분할 방식
- 쩜
- 쩜
2) 가변 불할 방식의 메모리 관리
- 쩜
- 쩜
3) 고정 불할 방식의 메모리 관리
- 쩜
- 쩜
4) 버디 시스템
- 쩜
- 쩜
5. [심화학습] 컴파일과 메모리 관리
1) 컴파일 과정
- 쩜
- 쩜
2) 변수와 메모리 할당
- 쩜
- 쩜
'책읽기' 카테고리의 다른 글
[쉽게 배우는 운영체제](요약)[Part-3][Ch-9] 가상 메모리 관리 (0) | 2021.07.29 |
---|---|
[쉽게 배우는 운영체제](요약)[Part-3][Ch-8] 가상 메모리의 기초 (0) | 2021.07.29 |
[쉽게 배우는 운영체제](요약)[Part-2][Ch-6] 교착 상태 (0) | 2021.07.28 |
[파이썬 알고리즘 인터뷰][그래프] 순열 (0) | 2021.07.28 |
[파이썬 알고리즘 인터뷰][그래프] 전화 번호 문자 조합 (0) | 2021.07.28 |