브래의 슬기로운 코딩 생활
운영체제 10주차 정리 - 1 본문
메모리 관리
주소 바인딩 및 할당
메모리 주소 관리
메모리 공간
- 운영체제내 각 프로세스는 분리된 메모리 공간을 가짐
- PCB(Process Control Block)는 base 주소와 limit값을 포함
- 다른 프로세스 공간의 접근(침입)을 차단 = 보안성 제공
논리적 주소와 물리적 주소
논리적 주소(또는 가상 주소)
• 다중 프로세스들의 공간을 쉽게 사용하기 위해 논리적 주소를 사용
• 프로세스들은 논리적 주소를 사용(접근)
• CPU가 취급하는 주소
• 운영체제는 물리적 또는 논리적 주소를 접근하기 위해서 MMU(Memory Management Unit)를 제어
- 논리적 주소에 대한 물리적 주소의 변환은 MMU에 의해 처리
물리적 주소
• 프로그램이 메모리에 저장되어있는 실제적인 공간
• 메모리가 취급하는 주소
• MMU의 MAR(Memory Address Register)에 의해 접근
MMU
- Memory Management Unit
- 논리적 주소와 물리적 주소간 변환기능을 수행
- 캐시 제어, 권한 제어, 메모리 접근 보호 등 수행
- 포함된 레지스터 종류
• MDR : Memory Data Register
• MAR : Memory Address Register
주소 바인딩
주소 바인딩(Address Binding)
- 메모리의 물리적 주소(Physical Address)를 논리적(Logical) 주소와 연결(또는 매핑)하는 작업
- 시점에 따른 분류:
• Compile Time Binding
• Load Time Binding
• Run Time Binding
Compile Time Binding
• 프로그램내 변수 등의 기록될 영역에 대하여 재할당(relocatable) 형태의 주소로 설정
– 예: 일반 변수 등
• 성공적인 구동을 위해서는 프로그램 전체가 메모리에 적재 되어야 함
• 심볼릭(symbolic) 주소 형태로 바인딩 처리
Load Time Binding
• 메모리의 적재될 위치는 알지 못하지만, 라이브러리들에 대한 위치를 상대 주소로 할당
• 라이브러리들이 적재될 때 시스템에 의해 위치가 재설정
• 성공적인 구동을 위해서는 프로그램 전체가 메모리에 적재 되어야 함
Run Time Binding
• 프로세스가 running 상태일 때, 위치가 새로 할당되는 구조
• 스케줄러에 의해 프로세스들의 메모리내 위치가 변경
• 대부분의 운영체제가 그러함
• CPU는 지정된 주소로 접근을 시도하지만, MMU에 의해 새로 변경된 곳으로 접근
스와핑
스와핑(Swapping)
- 보류(suspend) 상태의 프로세스에 대하여 임시로 보조 기억장치에 백업
- 메모리 절약을 위한 방법 중 하나
- 기능에 따른 분류:
• 스왑 아웃(Swap Out)
• 스왑 인(Swap In)
- 프로세스의 상태에 따라 일부 프로세스는 보조 기억장치에 백업 및 복구
- 스와핑 작업이 너무 자주 발생하면 I/O접근에 따른 지연으로 인해 전반적인 성능 저하 발생
- 해결안:
• 충분한 공간의 메모리를 탑재
• 프로세스의 수를 감소
고려사항
Swap-In 방법
• 동일한 주소로 복귀(Binding 문제가 간단해 짐)
• Execution Time Binding의 경우 메모리 어느 곳이든 가져올 수 있음
Context-switch time
• 주로 transfer time에 많은 시간이 소요 - 시간은 swap되는 양에 비례
• 프로세스에 할당되는 타임 슬롯은 Swapping 시간보다 충분히 길어야 함
로딩 및 할당
동적 로딩(Dynamic Loading)
- 모든 루틴(routine)을 교체 가능한 형태로 저장
- 해당 루틴이 호출되기 전까지는 메모리에 적재하지 않음
• Main() 루틴과 기본 정적 함수 부분만 처음에 적재
• 동적 함수 호출 시 그 때 Address Binding하는 구조
- 메모리의 공간을 효율적(절약)으로 사용할 수 있음
- 동적 라이브러리 개념
할당(Allocation)
- 연속 메모리 할당 방법(Contiguous Allocation)
- 비연속(분산) 메모리 할당 방법(Partition Allocation)
단편화(Fragmentation) *
내부단편화(Internal Fragmentation) *
• 자원을 고정된 블록으로 나누어 사용하게 될 경우
• 블록보다 작은 크기의 내용물이 기록될 때, 잉여 공간(free space)생기게 됨
외부단편화(External Fragmentation) *
• 가변 크기를 갖는 블록들을 동적으로 할당하여 운영
• 블록 간의 공간(hole)이 생기게 됨
연속 메모리 할당(Contiguous Allocation)
- 주 기억장치는 OS와 사용자 프로세스들에게 공간을 제공해야함
- 주 기억장치는 한정적이기 때문에 효율적으로 프로세스들에게 할당되어야 함
- 연속 메모리 할당 기법은 초창기 기법 중 하나임
- 주 기억장치는 일반적으로 두 영역(partition)으로 구분
• OS : 일반적으로 낮은 주소 영역에 할당
• 사용자 프로세스 : 운영체제가 사용하지 않는 높은 주소 영역에 할당
고정 분할(Fixed Partitions)
• 프로세스를 위한 고정된 크기의 파티션으로 메모리 공간을 할당
• 장점: 메모리 관리 단순
• 단점
– 메모리 낭비 발생
– Internal Fragmentation 발생
– 파티션보다 큰 프로세스에 대해서는 할당 불가
가변 분할
• 프로세스의 생성과 소멸의 잦은 발생 시 빈 공간이 발생 - HOLE
• External Fragmentation 발생
• 분산 holes에 대하여 새로운 프로세스가 생성될 때 점유하는 방식
• Holes에 대하여 배열(Array) 또는 연결리스트(Linked List)로 관리
선택 기법: *
• First-Fit: 프로세스가 들어갈 수 있는 첫번째 hole를 선택
• Best-Fit: 점유할 때 가장 작은 hole이 발생될 수 있는공간을 선택
• Worst-Fit: 가장 큰 hole을 선택
메모리 통합
• 프로세스의 종료로 인해 반환된 hole들에 대한 통합이 필요
• Hole들이 인접해 있을 때, 하나의 홀로 통합
• 충분한 크기의 hole를 확보하여 다른 프로세스의 생성이 가능하도록 자원을 관리하는 목적
메모리 압축
• 분산된 프로세스 영역을 이동
• 충분한 크기의 hole를 확보하여 다른 프로세스의 생성이 가능하도록 자원을 관리하는 목적
• 단점:
– 운영체제의 잦은 메모리 최적화작업에 따른 성능 저하 발생
– 실시간 시스템의 경우 대기시간이 길어짐
'2-1 > 운영체제' 카테고리의 다른 글
운영체제 11주차 정리 - 1 (0) | 2023.05.12 |
---|---|
운영체제 10주차 정리 - 2 (0) | 2023.05.05 |
운영체제 9주차 정리 - 3 (0) | 2023.04.27 |
운영체제 9주차 정리 - 2 (0) | 2023.04.27 |
운영체제 9주차 정리 - 1 (0) | 2023.04.27 |