[운영체제] 8.주기억장치

이번에는 정보처리기사 필기 과목인 운영체제의 주기억장치를 살펴보아요.

주기억장치 (RAM과 ROM)
주기억장치 (RAM과 ROM)

주기억장치 할당 기법
프로그램이나 데이터를 주기억장치에 할당하는 기법을 말합니다.
연속 로딩 기법(단일 분할 할당, 다중 분할 할당)과 분산 로딩 기법(페이징, 세그먼테이션)으로 나눌 수 있습니다.

단일 분할 할당
한 순간에 하나만 주기억장치의 USER 영역을 사용하는 기법
초기 운영체제에서 사용하던 기법으로 가장 단순한 방법입니다.
운영체제가 사용하는 KERNEL 영역과 해당 프로세스의 USER영역을 구분하는 경계(Boundary) 레지스터를 사용합니다.
오베레이 기법과 스와핑 기법을 사용합니다.

오버레이(Overlay)
프로그램의 메모리가 주기억장치보다 클 때의 문제를 해결하기 위한 기법
하나의 프로그램을 여러 개의 조각으로 분할한 후 필요한 조각을 순서대로 주기억장치에 적재하여 프로그램을 실행합니다.
실행 중에 주기억장치의 메모리가 부족하면 불필요한 조각이 있는 곳에 새로운 조각을 중첩하여 적재합니다.

스와핑(Swapping)
주기억장치에 적재한 하나의 프로그램과 보조기억장치에 적재한 다른 프로그램의 메모리를 교체하는 기법
Swap Out: 주기억장치에 있는 프로그램이 보조기억장치로 이동
Swap In: 보조기억장치에 있는 프로그램이 주기억장치로 이동
가상기억장치의 페이징 기법으로 발전하였습니다.

다중 분할 할당
고정 분할 할당과 동적 분할 할당이 있습니다.

고정 분할 할당
주기억장치의 USER 영역을 여러 개의 고정 크기로 분할하여 사용하는 기법입니다.
프로그램 전체가 주기억장치에 적재합니다.
프로그램이 분할 영역보다 크면 분할 영역을 사용할 수 없어서 빈 공간으로 남은 전체 영역을 사용하는 외부 단편화가 발생
분할 영역보다 크기가 작은 프로그램을 적재하였을 때 내부 단편화가 발생합니다.
초기 다중 프로그래밍을 위해 사용했던 방법입니다.
정적 할당 기법으로도 불립니다.

가변 분할 할당
프로그램을 주기억장치에 적재할 때 필요한 크기로 영역을 분할하는 기법입니다.
고정 분할 기법의 단편화를 줄이기 위한 방법입니다.
영역 사이에 단편화는 발생할 수 있습니다.

페이징
메모리를 동일한 크기의 페이지로 나누어 적재하는 기법입니다.
주기억장치에 페이지 크기로 나누어진 영역을 페이지 프레임이라고 부릅니다.
주소 변환을 위해 페이지 맵 테이블을 요구합니다.
외부 단편화는 발생하지 않지만 내부 단편화는 발생합니다.
가상메모리를 물리주소로 변환하는 오버헤드가 발생합니다.
논리주소를 물리주소로 변환하는 것을 매핑이라고 부릅니다.
논리주소: 페이지번호(p) 와 변위(d)로 구성
물리주소: 페이지 프레임(p’)과 변위(d)로 구성
페이지 맵 테이블: 디스크 페이지 번호와 페이지 프레임 번호, 상태 비트(주기억 장치에 존재 여부)로 구성
프로그램이 참조한 메모리가 주기억장치에 없는 페이지 부재 발생할 수 있습니다.

세그먼테이션
다양한 크기의 논리적 단위로 나누어 적재하는 기법입니다.
세그먼트 맵 테이블을 요구합니다.
다른 세그먼트에 할당할 영역을 침범하지 않게 장치 보호기(Storage Protection Key)를 요구합니다.
내부 단편화는 발생하지 않지만 외부 단편화가 발생할 수 있습니다.
논리주소: 세그먼트번호(s)와 변위(d)로 구성
물리주소: 세그먼트 기준 번지 + 변위

단편화(Fragmentation)
할당하고 반납하는 과정에서 발생하는 사용하지 않는 작은 조각
내부 단편화: 분할 영역보다 적재한 크기가 작을 때 사용하지 않는 작은 조각
외부 단편화: 프로그램 크기가 분할 영역보다 커서 사용하지 않는 분할 영역

단편화 통합(Coalescing)
인접한 단편화 영역을 하나의 영역으로 통합하는 작업

단편화 압축(Compaction)
단편화 영역을 한 쪽으로 옮겨 커다란 가용 공간을 만드는 작업
쓰레기 수집(Gabage Collection)이라고 부릅니다.
쓰레기 수집하는 시간에는 시스템은 다른 작업을 할 수 없습니다.