[컴퓨터과학개론] 운영체제 -3
기억장치의 구성
- 컴퓨터 시스템에서 사용되는 기억장치는 접근속도, 비용 및 장치의 용량에 따라 계층적으로 구성 됨
기억장치의 계층 구조
- CPU의 처리속도는 저장 장치에 비해서 엄청나게 빠르므로 CPU가 사용하려는 프로그램 코드와 데이터는 CPU 레지스터나 캐시 기억장치에 있어야 함
-
레지스터나 캐시 기억장치 용량의 한계로 인해 주기억 장치에도 저장된 프로그램 코드나 데이터에 접근할 수밖에 없음
-
프로그램이나 데이터의 크기는 일반적으로 주기억장치보다 크기 때문에 당장 필요하지 않은 프로그램 코드나 데이터는 사용될 때까지 보조기억장치에 저장해 놓고, 이에 대한 실행이나 참조가 발생하는 시점에 주기억장치로 이동됨
- CPU와 주기억장치 사이의 속도 차이로 인한 지연 문제를 방지하기 위해서 CPU와 주기억장치 사이에 주기억장치보다 빠른 속도의 기억장치인 캐시를 이용함
- CPU가 어떤 프로그램 코드나 데이터에 필요한 경우 느린 속도의 주기억장치에 접근해서 필요한 것만 검색하는 것이 아니라 우선적으로 바른 속도의 캐시를 검색함
-
만일 캐시 기억장치에 원하는 프로그램 코드나 데이터가 있다면 즉시 사용할 수 있음
-
캐시 기억장치에 원하는 내용이 존재하지 않는 경우에는 주기억장치를 검색해서 CPU로 가져가서 처리하고, 그 프로그램 코드나 데이터를 차후의 사용을 위해 캐시 기억장치에도 복사함
- CPU 내에는 여러 레지스터가 존재하며, CPU에 직접 내장되어 있기 때문에 기억장치 중에서 가장 빠른 처리 속도를 제공함
- CPU에서 데이터나 프로그램 코드를 사용할 때는 레지스터에 프로그램 코드나 데이터를 저장하고, CPU는 연산을 처리함
주기억장치의 할당
단일 사용자 연속 기억장치 할당
- 하나의 사용자 프로그램만이 전체 주기억장치에 할당되는 방식
- 실행될 프로그램이 주기억장치의 용량을 초과하면 실행할 수 없음
-
단순하여 구현하기가 쉽지만 큰 프로그램을 수행할 수 없음
- 단점
- 하나의 프로그램이 모든 기억장치, 주변장치 및 CPU 등을 할당받아 사용하기 때문에 유휴 자원에 대한 낭비가 심하고, 하나의 프로그램을 실행시키는 동안 다른 프로그램들은 기다려야 하므로 대기 시간이 길어짐
- 주기억장치의 크기보다 큰 프로그램을 실행할 수 없음
- 하나의 프로그램이 모든 기억장치, 주변장치 및 CPU 등을 할당받아 사용하기 때문에 유휴 자원에 대한 낭비가 심하고, 하나의 프로그램을 실행시키는 동안 다른 프로그램들은 기다려야 하므로 대기 시간이 길어짐
-
큰 프로그램을 수행하기 위해서 오버레이 기법이 제시 됨
- 오버레이 기법
- 주기억장치의 이용 가능 영역보다 큰 프로그램을 네개의 작은 프로그램으로 쪼갬
- 실행 기간 동안 주기억장치 내에 있어야하는 프로그램 코드와 데이터, 초기화 단계를 수행하는 프로그램 코드, 처리 단계를 수행하는 프로그램 코드, 출력 단계를 수행하는 프로그램 코드 등의 네 부분으로 이루어짐
- 네 부분의 프로그램은 필요한 시기에 주기억장치에 번갈아 적재해 실행되며, 주기억장치의 이용가능 영역보다 큰 프로그램도 실행할 수 있게 됨
- 주기억장치의 이용 가능 영역보다 큰 프로그램을 네개의 작은 프로그램으로 쪼갬
고정 분할 다중 프로그래밍 기법
- 단일 사용자 연속 기억장치 할당 기법이 한 번에 하나의 프로그램만 실행시킬 수 있는 문제점을 보완하기 위해 개발
-
주기억장치를 여러 개의 고정된 크기의 영역으로 분할하고, 실행 중인 여러 개의 프로세스에게 각각 할당하는 기법
-
주기억장치 내부에는 여러 개의 프로그램(프로세스)들이 공존하기 때문에 한 작업이 입출력을 요구할 때, CPU는 다른 프로그램에게 할당되어 연산을 처리할 수 있음
-
메모리에 여러 프로그램들이 상주해야하므로 분할 영역들 간에 잘못된 참조를 방지하기 위한 메모리 보호가 필요하고 사용자 프로그램이 분할 영역에 정확히 맞지 않아서 단편화가 발생할 수 있음
- 단점
- 고정된 크기의 공간이다 보니 그보다 작은 크기의 작업을 실행한다면 나머지 공간은 낭비가 발생 됨
- 분할된 영역들마다 낭비공간이 발생할 수 있기 떄문에 많은 공간이 낭비 될 수 있음
- 고정된 크기의 공간이다 보니 그보다 작은 크기의 작업을 실행한다면 나머지 공간은 낭비가 발생 됨
동적 분할 프로그래밍 기법
- 고정 분할 다중 프로그래밍 기법의 단편화 문제를 해결하기 위해 개발됨
-
프로그램이 주기억장치에 적재될 때마다 모든 작업이 필요로 하는 크기(고정된 크기가 아니라 다양한 크기)만큼 연속된 공간을 할당해주는 기법
-
처음에는 필요한 크기의 주기억장치 분할에 의한 할당이 가능하기 때문에 단편화가 발생하지 않음
- 통합
- 사용되지 않고 있는 연속된 공간을 모아서 재할당 할수 있는 영역으로 합침
- 데이터의 이동이 없음
- 사용되지 않고 있는 연속된 공간을 모아서 재할당 할수 있는 영역으로 합침
- 집약
- 사용되지 않고 있는 비연속적인 각각의 공간을 한군데로 모아서 새로운 재할당 영역으로 만듬
- 데이터의 이동이 있기에 오버헤드가 통합에 비해 큼
- 사용되지 않고 있는 비연속적인 각각의 공간을 한군데로 모아서 새로운 재할당 영역으로 만듬