컴퓨터 공학 스터디 W2.운영체제 🔥
우리는 주기억장치에 여러 프로세스가 적재 되어야하는 다중 프로그래밍 환경에서 컴퓨터를 사용하고 있다. 기억장치의 효율성과 성능향상을 위해 어떤 프로세스를 어디에 적재 할 것인지에 대한 관리가 필요하다. 이렇게 관리를 하는 것이 바로 주기억장치 관리이다.
단일 사용자 할당은 초기에 시스템에서 실행될 프로그램 전체를 연속된 메모리 공간에 미리 적재하는 방법이다. 즉 하나의 작업이 주기억장치를 전용으로 사용하는 것이다. 단일 사용자 할당을 이용하면 사용자 프로그램의 크기가 사용자 영역의 크기로 제한되며 빈공간을 사용하지 못해 기억장치의 낭비가 심하다
이것을 내부단편화 라고 한다.
❓내부단편화
프로세스가 프로세스의 크기보다 더 큰 메모리 공간에 들어갔을 때 사용하고 남은 메모리 공간
❓외부단편화
고정 분할된 크기가 대기 중인 작업들보다 작기 때문에 프로세스를 할당 받을 수 없어 빈 공간으로 있게되는 것
단일 사용자 할당은 주변 장치의 자원 낭비 및 CPU 시간 낭비 등이 크고 주기억장치의 용량보다 큰 프로그램은 적재할 수 없다.
고정 분할 다중 프로그래밍은 메모리를 미리 몇개의 고정된 개수와 크기로 분할하는 방법이다. 개수와 크기는 메모리 용량, 다중 프로그래밍 정도, 프로세스 크기에 따라 적절하게 달라지며 운영체제를 생성할 때 설정되어 그 후에는 변경할 수 없다.
동적 분할 다중 프로그래밍은 고정된 크기와 개수로 메모리를 나누어 적재하다 보면 단편화 현상이 많이 발생하고 크기가 큰 프로그램은 기아상태에 빠질 수 있다.이러한 문제점을 줄이기 위해 가장 합리적인 분할의 크기를 결정해 각 작업에게 주기억장치를 할당하는 기법이 동적 분할 다중 프로그램이다.
분할된 메모리에 프로그램을 적재할 때 어떤 기준으로 프로그램을 적재할까? 프로그램을 적재하는 방법에는 여러가지가 있다. 그 중에서 배치전략부터 살펴보려 한다.
최초 적합은 프로그램이 적재될 수 있는 가용 공간 중 가장 첫번째 분할 공간에 할당하는 방식이다. 최초 전략은 빈 공간을 찾기 위해 기억장치 전체를 조사하지 않아도 된다는 장점이 있지만 사용되지 않는 작은 크기의 가용공간이 누적되는 경우 할당 결정이 늦을 수도 있다는 단점이 있다.
최적 적합은 가용 공간에 프로그램을 적재하였을 때 가장 작은 공백이 남는 분할에 할당하는 방식이다. 가용 공간을 반만 탐색해도 필요한 공간을 찾을 수 있다는 장점이 있으며 가용 공간 리스트가 크기 순으로 되어 있지 않다면 전 리스트를 탐색해야한다는 단점이 있다.
최악 적합은 입력된 작업을 주기억 장치 내에서 가장 잘 맞지 않는 공백, 즉 가장 큰 공백에 배치하는 전략이다. 큰 가용 공간에 프로그램을 할당하기 때문에 남은 공간도 여전히 크므로 다른 프로그램이 실행 가능하다. 하지만 최적 적합과 같이 가용 공간의 리스크가 크기 순으로 되어 있지 않다면 전 리스트를 탐색해야한다는 단점이 있다.
반입전략에는 요구 반입 전략과 예상 반입 전략이 있다. 요구 반입 전략은 사용자가 요구할 때 적재하는 것이고 예상 반입 전략은 참조를 예측하여 적재하는 것이다.
교체전략은 공간이 없어 적재를 못할 때 공간 창출을 위해 어떤 프로그램이나 데이터를 제거할 것인지를 결정하는 전략이다. 총 5가지 교체전략이 있다.
1. FIFO : 가장 오래된 프로세스를 제거
2. LFU : 가장 적은 참조 횟수를 가지는 프로세스 제거
3. LRU : 가장 오래 참조되지 않은 프로세스 제거
4. NUR : 최근에 사용하지 않은 프로세스 제거
5. 2차 기회: FIFO 방식을 이용하되 참조 비트가 있으면 해결
6. 클락 : 오랫동안 사용하지 않은 페이지중 하나를 교체