[1] 기억 장치 관리 전략
(1) 운영체제의 기억 장치의 관리 전략
- 보조 기억 장치 프로그램 또는 데이터를 주기억 장치에 적재하는 시기 , 적재 위치 등을 지정하여 한정된 주기억 장치의 공간을 효율적으로 사용하기 위한 것으로 반입(언제) , 배치(어디서) ,교체(누구를) 하는 전략이 있다
(2) 반입 전략 Fetch
보조기억 장치 프로그램 또는 데이터를 언제 주기억 장치로 적재할 것인지를 결정하는 전략
1. 요구 반입 Demand Fetch
- 실행중인 프로그램이 특정 프로그램이나 데이터 등의 참조를 요구할때마다 적재하는 방법
- 요구할때마다 적재해야하므로 대기시간이 발생한다
2. 예상 반입 Anticipatory Fetch
- 실행중인 프로그램에 의해 참조될 프로그램이나 데이터를 미리 예상하여 적재하는 방법
- 주기억 장치에서 앞으로 사용 할 가능성이 큰 프로그램이나 데이터를 예상하여 주기억 장치로 반입한다 (적재한다)
- 앞으로 사용할 가능성이 높다는 예측이 어렵고 , 예측해서 가져는 왔지만 사용되지 않을 가능성이 있는 문제가 있다
(3) 배치 전략 Placement
새로 반입되는 프로그램이나 데이터를 주기억 장치의 어디에 위치시킬것인지 결정하는 전략
1. 최초적합 First Fit
-프로그램이나 데이터가 들어갈수 있는 주기억 장치의 빈 공간 중 첫번째 영역에 배치한다
- 배치 결정이 빠르다
- 단편화 발생 가능성이 높다
2.최적적합 Best Fit
-프로그램이나 데이터가 들어갈수 있는 주기억 장치의 빈 공간을 모두 찾아서 단편화가 발생하지 않을 가장 적합한 영역에 배치한다
- 단편화 발생 가능성이 작다
- 주기억 장치 공간을 전체를 스캔해야해서 성능이 느리고 떨어짐
3.최악적합 Worst Fit
-프로그램이나 데이터가 들어갈수 있는 주기억 장치의 빈 공간이 제일 큰 공간을 찾아 그 영역에 배치한다
- 단편화 현상이 생긴다
- 주기억 장치 공간을 전체를 스캔해야한다
(4) 교체 전략 Replacement
-주기억 장치의 모든 공간을 사용중일때 , 새로운 프로그램이나 데이터를 배치하려고 한다면 이미 사용중인 영역의 어떤 부분을 교체하여 할당 할것인지 결정하는 전략
- 페이지 교체 알고리즘
- 교체 전략 종류 : FIFO , OPT , LRU , LFU , NUR , SCR
[2] 주기억 장치 할당
(1) 주기억 장치 할당 기법의 개요
정의 : 프로그램이나 데이터를 수행하기 위해 사용자 프로세스 영역에 어떻게 할당할 것인지 주기억 장치에 할당하기 위한 기법
분류 : 연속할당 , 비연속 할당
(2) 연속 할당 기법
정의 : 각각의 프로세스가 메모리의 연속적인 공간에 적재(할당) 하는 기법
단점 : 할당할 프로그램이나 데이터의 크기가 주기억 장치 가용 공간보다 크면 프로그램을 할당할수 없으므로 실행할수 없음
1. 단일 분할 할당 기법
- 주기억 장치에 하나의 프로그램만 실행한다
- 프로그램 크기의 제한이 있다
- 메모리 공간의 낭비가 심함
-경계 레지스터 Boundary register 구분이 있다
- 단일 분할 할당기법의 종류
- 오버레이 기법 : 주기억 장치보다 큰 프로그램을 실행하기 위한 기법 ; 여러개의 페이지 조각으로 분할하여 차례대로 주기억 장치에 적재하여 실행한다 . 주기억 장치 공간이 없다면 필요없는 조각위에 중첩하여 적재(할당)한다
- 스와핑 기법 : 주기억 장치에 하나의 프로그램이나 데이터 전체를 할당하여 필요에 따라 다른 프로그램과 교체하는 기법 .
2. 다중 분할 할당 기법
- 주기억장치의 사용자 프로세스 영역을 여러개의 고정된 크기로 분할하고 , 준비상태 큐에서 준비중인 프로그램을 각 영역에 할당하여 수행하는 기법이다
- 하나의 프로그램을 처리하기 위해 큐 준비시간과 실행된 프로그램을 종료하기 위한 제거 시간이 필요하다
- CPU의 유휴 시간이 발생하여 이 기법이 등장하였다
- 다중 분할 할당 기법의 종류
- 고정 분할 할당 = 정적 할당 기법
- 고정된 크기(예_6K)로 분할하여 A, B, C 프로그램 동시 실행 가능한 구조 하지만 단편화 문제가 생긴다
- 내부단편화 : 용량이 남음
- 외부단편화 : 용량이 작아서 프로그램 실행을 하지 못한다
- 가변 분할 할당 =동적 할당 기법
- 각 작업이 필요한 만큼 주기억장치 공간을 할당받는 방법
- 처음에는 프로그램 크기에 맞게 공간이 할당되어 낭비되는것이 없어보였으나 프로그램 종료 후 메모리의 통합 및 압축 작업을 통해 다른 프로그램의 크기에 할당 및 재배치가 진행이 되어 빈번한 시작과 종료에 의한 메모리 낭비가 발생할수 있다
- 프로그램 종료 후 준비상태에 있는 프로그램을 배치시키기 위해 배치전략인 최초적합, 최적적합, 최악접합 배치를 선택하게됨
(3) 비연속 할당 기법 = 분산 할당
-하나의 프로그램이나 데이터를 페이지, 세그먼트 같은 블록으로 나누어 분산 할당 하는 기법
- 주기억 장치 내에 어느 공간에도 적재(할당)할수 있고 , 각 공간은 연속되어 인접하지 않아도된다
(4) 단편화
1. 단편화의 문제
- 정의 : 분할된 주기억장치에 프로그램이 할당하고 반납하는 과정을 반복하면서 사용되지 않고 남는 기억 장치의 빈공간 , 조각이 발생하는 현상
- 내부 단편화 : 분할된 영역이 프로그램 공간보다 크기 때문에 남는 빈공간
- 외부 단편화 : 분할된 영역이 프로그램 공간보다 작기 때문에 사용되지 못하고 남는 빈공간
2. 압축 기법 Compaction
- 여러 위치에 분산된 단편화된 빈공간을 주기억 장치의 한쪽 끝으로 옮겨서 큰 기억 공간을 만듬
3. 통합 기법 Coalescing
-단편화된 공간을 하나의 공간으로 통합하는 기법
[3] 가상메모리
(1) 가상 메모리 이해 Virtual memory
-여러 프로세스를 동시에 실행하여 용량 부족문제가 생기다보니 주기억장치와 보조기억장치 사이에서 용량 차이 극복을 위해 사용되는 소프트웨어적 방법이다
-메모리가 물리 메모리보다 많아 보이게 하는 기술
- 마치 주기억장치인것처럼 사용하는 기법
-가상주소(프로세스가 참조하는 주소) 와 물리주소(실제 메모리 주소)가 매핑한다
-프로세스는 가상 주소를 사용하고 실제 해당 주소에서 데이터를 읽고 쓸때만 물리주소로 바꿔준다
(2) 가상 메모리의 배경 이론
1. 페이지 폴트 Page Fault
-프로그램 실행시 주기억 장치에 참조할 페이지가 없을때 발생하는 인터럽트
-운영체제가 페이지 폴트가 일어나면 물리메모리에 그 페이지가 없구나 하고 깨닫고 해당 페이지를 물리 메모리에 올림
- 페이지 프레임이 많으면 주기억장치에 참조할 페이지가 많기때문에 페이지 부재가 적고 , 반대이면 페이지 부재가 많다
-향후에 프로세스가 접근할 페이지들은 미리 물리 메모리에 넣어놓는다면 페이지 폴트를 줄일수 있다
2. 스레싱 Thrashing
- 반복적으로 페이지 폴트가 발생해서 과도하게 페이지 교체 작업이 일어나 실제로는 아무일도 하지 못하는 상황
- 성능 저하의 원인
- 메모리를 증가해야한다
3. 워킹 셋 Working Set
- 자주 사용하는 페이지의 집합
- 스레싱 현상 감소 방법으로 사용
- 페이지 크기가 작을수록 효과적으로 구성 가능
4. 요구페이징 Demand Paging = Demanded Paging
-프로세스는 모든 데이터를 메모리를 적재하지 않고 실행 중 필요한 시점에서만 메모리로 적재한다
- 더이상 필요지 않은 페이지 프레임은 다시 저장매체에 저장( 페이지 교체 알고리즘이 필요하다)
- 선행 페이징 (anticipatory Paging) 의 반대개념 : 미리 프로세스 관련된 모든 데이터를 메모리에 올려놓고 실행하는 개념
(3) MMU 와 TLB
1. MMU
-CPU에서 코드 생성시 가상주소 메모리 접근이 필요할때 물리주소로 변환해주는 하드웨어 장치이다
-CPU 코드 실행 중 메모리 접근 시 가상주소와 물리주소를 변환해주는 하드웨어이다
-메인메모리는 실제 각 프로세스 데이터가 조각으로 이루어져있다
2. TLB
-한번 변환된 가상주소에 대한 물리주소값을 저장한 캐쉬 메모리
-IPC 페이징 시스템과 공유 메모리 , 프로세스 간 동일한 물리주소를 가리킬수 있음
-공간 절약, 메모리 할당 시간 절약
-운영체제 UNIT 만들고 프로세스를 만든다
-fork 함수를 통해 비슷한 구조의 프로세스를 복제한다
-부모 프로세스와 자식 프로세스 구조를 만든다
(4 )가상메모리의 관리 전략
- 페이징 기법 : 가상 메모리에 보관된 프로그램과 주기억 장치의 영역을 동일한 크기로 분할하여 분할된 페이지를 페이지 프레임에 적재시켜 실행하는 기법
- 세그먼테이션 기법 : 크기가 다른 블록 단위의 세그먼트(배열,함수같은 논리적인크기)로 나누어 관리하는 기법
- 페이징-세그먼테이션 기법 : 세그먼트 단위로 분할하여 다시 동일한 페이지 단위로 나누어 관리하는 기법
(5)다중 단계 페이징 시스템
페이지 번호를 나타내는 bit를 구분해서 단계를 나누고 필요없는 페이지를 생성하지 않도록 하여 공간절약과 성능에도 도움이 되도록 하는 시스템
MMU가 물리주소를 확인하기 위해 메모리를 갔다와야함
[4 ]페이징 시스템
(1) 페이징 시스템 정의
-동일한 크기의 페이지로 가상주소 공간과 이에 매칭되는 물리주소 공간을 매핑하는 방식으로 관리한다
- 페이지 번호를 기반으로 가상주소 & 물리주소를 매핑 정보로 기록하거나 사용한다
- 페이징 시스템은 구현을 위해 하드웨어 지원이 필요하다
(2) 페이징 시스템의 구성
1. 페이지 : 프로그램을 동일한 크기로 분할한 조각
2. 페이지 프레임 : 페이지를 저장할수 있는 메모리 영역
3. 페이지 테이블 :물리 주소에 있는 페이지 번호와 해당 페이지의 첫 물리주소 정보를 매핑한 표이다
4. CR3 레지스터 : 프로세스 구동시 가상주소와 물리주소 매핑 정보를 다루기 위해 페이지 테이블의 base 주소값을 넣는다
5. 가상주소는 v = (p,d) 구조로 , 가상메모리 페이지번호 p 와 p안에서 참조하는 위치, 페이지 처음위치에서 얼마큼 떨어져있는지를 알수 있는 변위가 d 로 계산하여 특정 주소를 가리킨다
(2) 페이징 시스템 동작 단계
프로세스 생성 | 페이지 테이블 정보를 생성하고 PCB는 프로세스의 페이지 테이블 접근이 가능해진다 |
프로세스 구동 | 페이지 테이블의 base 주소가 CR3 레지스터에 저장된다 |
1단계 | CPU가 프로세스에서 특정 가상 주소 접근을 시도한다 |
2단계 | MMU가 프로세스의 페이지 테이블 베이스 주소에 접근해서 가상주소가 포함된 페이지 번호가 있는지 확인한다 |
3단계 | 해당 페이지가 물리 메모리에 있으면 해당 페이지의 첫부분을 가리키는 물리주소를 페이지 테이블에서 알아낸다 페이지 번호가 있으면 이 페이지가 매핑된 첫 물리주소를 알아내고 실제 물리주소를 찾는다 |
4단계 | 해당 페이지의 첫부분을 가리키는 물리 주소에 변위값을 더해서 , 가상 주소에 해당하는 물리 주소를 접근한다 CPU가 가상주소를 찾고 MMU를 통해 물리주소를 찾아 메모리를 탐색한다 |
(3) 페이지 크기에 따른 차이
- 페이지 크기는 다양하고 그 크기에 따른 차이가 발생한다
페이지 크기 작음 | 페이지 크기 큼 | |
단편화 | 감소 | 증가 |
이동시간 | 감소 | 증가 |
디스크 접근횟수 | 많음 | 적음 |
맵핑속도 | 느림 | 빠름 |
(4) 페이지 교체 알고리즘
기존 페이지 중 하나를 물리메모리에서 저장매체로 올리고 새로운 페이지를 물리메모리 공간에 올리는데 대체 어떤 선별기준을 가질것인가
1. OPT 최적화 교체
- 앞으로 가장 오랫동안 사용하지 않을 것같은 페이지를 교체한다
2. FIFO
- 가장 오래 있었던 페이지= 제일 먼저 넣은 페이지를 교체한다
-발레이디의 모순 현상이 발생한다
- 페이지 교체가 가장 많음
3. LRU
-사용시간 기준으로 최근에 가장 오래전에 사용된 페이지를 교체한다
- 별도의 하드웨어로 페이지마다 계수기나 스택을 두어 가장 오랫동안 사용하지 않은 페이지를 검토함
-시간적 오버페드가 발생함
4. LFU
- 사용빈도 기준으로 가장 사용빈도가 적은 페이지를 교체하는 기법
-사용빈도가 높은 페이지는 교체하지 않는다
- 프로그램 초기에 많이 사용된 페이지가 지금은 사용빈도가 적더라도 교체되지 않는 단점이 있다
5. NUR 페이지 스왑
-최근에 사용되지 않은 페이지를 교체한다
-최근사용 여부를 판단하기 위해 각 페이지에 참조비트와 변형 비트가 있음
-각페이지마다 창조비트(R), 수정비트(M)으로 (0,0) (0,1)(1,0)(1,1) 순으로 페이지를 교체한다
6. SCR
- 가장 오래 있었던 페이지 중 자주 참조된 페이지를 교체한다
-2차 기회 알고리즘
7. 무작위 페이지 교체
-임의의 페이지를 선택하여 페이지 교체한다
8. MFU
- 참조횟수가 가장 많은 페이지를 교체한다
'🌈 CS 컴퓨터공학 > 운영체제' 카테고리의 다른 글
CS_운영체제_리눅스와 파일 시스템 (0) | 2023.04.19 |
---|---|
CS_운영체제_가상머신 (0) | 2023.04.19 |
CS_운영체제_파일 시스템 (2) | 2023.03.19 |
OS_운영체제_프로세스 관리 (0) | 2023.03.19 |
OS_운영체제_운영체제의 개요 (0) | 2023.03.19 |