[정처기 필기] 「4」 | 응용 SW 기초 기술 활용 - (3.2) 기억장치 관리, 가상기억장치 구현 / 페이지 교체

728x90

[정처기 필기] 4」 | 응용 SW 기초 기술 활용 - (3.2) 기억장치 관리, 가상기억장치 구현 / 페이지 교체

「1」 소프트웨어 설계

「2」 소프트웨어 개발

「3」 데이터베이스 구축

> 「4」  프로그래밍 언어 활용

- 서버 프로그램 구현, 프로그래밍 언어 활용, > 응용 SW 기초 기술 활용

「5」  정보시스템 구축 관리

 

1 운영체제의 개념

2 Windows

3 UNIX / LINUX / MacOS

> 4 기억장치 관리의 개요

> 5 가상기억장치 구현 기법 / 페이지 교체 알고리즘

6 가상기억장치 기타 관리 사항

7 프로세스의 개요

8 스케줄링

9 주요 스케줄링 알고리즘

10 환경 변수

11 운영체제 기본 명령어

12 인터넷

13 OSI 참조 모델

14 네트워크 관련 장비

15 TCP / IP

4. 기억장치 관리의 개요

기억장치 계층 구조의 특징

 

증가     레지스터     감소
 캐시 기억장치 
접근 속도 비트당 가격    ↓   접근 시간 기억 용량
 주기억장치 
감소     보조기억장치     증가

 

- 상위의 기억장치일수록 접근 속도, 접근 시간 빠름, 기억 용량이 적고, 비용 비쌈

- 주기억장치는 자신의 주소를 갖는 워드, 바이트로 구성, 주소를 이용하여 액세스 가능

- 레지스터, 캐시 기억장치, 주기억장치의 프로그램, 데이터는 CPU가 직접 액세스 가능, 보조기억장치에 있는 프로그램, 데이터는 직접 액세스 불가능

- 보조기억장치에 있는 데이터는 주기억장치에 적재된 후 CPU에 의해 액세스 가능

 

기억장치의 관리 전략의 개요

 

보조기억장치의 프로그램, 데이터를 주기억장치에 적재시키는 시기, 적재 위치 등 지정하여 한정된 주기억장치의 공간을 효율적으로 사용, 반입 전략, 배치 전략, 교체 전략

 

반입(Fetch) 전략

 

보조기억장치에 보관 중인 프로그램, 데이터를 주기억장치로 적재시킬 시기를 결정

 

요구 반입(Demand Fetch) : 실행중인 프로그램이 특정 프로그램, 데이터 등의 참조를 요구할 때 적재

예상 반입(Anticipatory Fetch) : 실행중인 프로그램에 의해 참조될 프로그램, 데이터를 미리 예상하여 적재

 

배치(Placement) 전략

 

새로 반입되는 프로그램, 데이터를 주기억장치로 적재할 위치를 결정

 

최초 적합(First Fit) : 프로그램, 데이터가 들어갈 수 있는 크기의 빈 영역 중 첫 번째 분할 영역에 배치

최적 적합(Best Fit) : 프로그램, 데이터가 들어갈 수 있는 크기의 빈 영역 중 단편화를 가장 작게 남기는 분할 영역에 배치

최악 적합(Worst Fit) : 프로그램, 데이터가 들어갈 수 있는 크기의 빈 영역 중 단편화를 가장 많이 남기는 분할 영역에 배치

 

단편화

내부 단편화 : 분할된 영역이 할당될 프로그램의 크기보다 , 프로그램이 할당된 후 사용되지 않고 남아있는 빈 공간

외부 단편화 : 분할된 영역이 할당될 프로그램의 크기보다 작아, 프로그램이 할당될 수 없어 사용되지 않고 남아있는 빈 공간

 

ex)

10K의 프로그램이 할당받게 되는 영역 번호

 

영역 번호 영역 크기 상태
1 5K 공백
2 14K 공백
3 10K 사용 중
4 12K 공백
5 16K 공백

 

// First Fit : 빈 영역 중 10K가 들어갈 수 있는 첫 번째 영역 2

// Best Fit : 빈 영역 중 10K가 들어가고, 단편화를 가장 적게 남기는 영역 4

// Worst Fit : 빈 영역 중 10K가 들어가고, 단편화를 가장 많이 남기는 영역 5

 

교체(Replacement 전략)

 

주기억장치의 모든 영역이 이미 사용 중인 상태에서 새로운 프로그램, 데이터를 주기억장치에 배치하려 할 때, 사용되는 영역 중 어느 영역을 교체할 것인지 결정

5. 가상기억장치 구현 기법 / 페이지 교체 알고리즘

가상기억장치의 개요

 

보조기억장치(하드디스크)의 일부주기억장치처럼 사용, 용량이 적은 주기억장치를 큰 용량인 것처럼 사용

 

- 프로그램을 여러 개의 작은 블록 단위로 나눠 가상기억장치에 보관, 실행 시 요구되는 블록주기억장치에 불연속적으로 할당하여 처리

- 주기억장치보다 용량이 큰 프로그램 실행

- 주기억장치의 이용률, 다중 프로그래밍 효율 높일 수 있음

- 가상기억장치에 저장된 프로그램을 실행하면 가상기억장치의 주소주기억장치의 주소로 바꾸는 주소 변환 작업 필요

- 동적 주소 변환(DAT)은 프로세스가 실행될 때 가상주소를 실주소로 변환, == 주소 사상, 주소 매핑, 이 때 연속적으로 변환되지 않아도 되는 것인위적 연속성(Artifical Contiguity)라고 함

- 블록 단위로 나눠 사용하므로 연속 할당 방식에서의 단편화를 해결

- 블록의 종류에 따라 페이징 기법, 세그먼테이션 기법

 

페이징(Paging) 기법

 

가상기억장치에 보관되어 있는 프로그램주기억장치의 영역동일한 크기로 나눈 후, 나눠진 프로그램(페이지)을 나눠진 주기억장치의 영역(페이지 프레임)에 적재시켜 실행

 

- 프로그램을 일정한 크기로 나눈 단위를 페이지, 페이지 크기로 일정하게 나눠진 주기억장치의 단위페이지 프레임

- 외부 단편화는 발생하지 않고, 내부 단편화 발생 가능 (페이지 크기 4KB, 프로그램 17KB, 4KB씩 나눠지면, 1KB가 남는데 이를 주기억장치에 적재하면 3KB의 내부 단편화 발생)

- 주소 변환을 위해 페이지의 위치 정보를 가지는 페이지 맵 테이블이 필요

- 페이지 맵 테이블 사용으로 비용 증가, 처리 속도 감소

- 동적 주소 변환 기법(DAT)을 사용하여 다중 프로그래밍의 효과를 증진

 

세그먼테이션(Segmentation) 기법

 

세그먼테이션의 개요

 

가상기억장치에 보관되어 있는 프로그램다양한 크기의 논리적 단위로 나눈 후 주기억장치에 적재시켜 실행

 

- 프로그램을 배열, 함수같은 논리적인 크기로 나눈 단위를 세그먼트, 각 세그먼트는 고유한 이름, 크기 가짐

- 기억장치의 사용자 관점을 보존하는 기억장치 관리 기법

- 기억공간을 절약

- 주소 변환을 위해 세그먼트의 위치 정보를 가지는 세그먼트 맵 테이블이 필요

- 주기억장치에 적재될 때, 다른 세그먼트에게 할당된 영역을 침범할 수 없고, 이를 위해 기억장치 보호키 필요

- 내부 단편화 발생하지 않고, 외부 단편화 발생

 

세그먼테이션 기법의 일반적인 주소 변환

 

- 가상주소세그먼트 번호를 나타내는 s, 실제 내용이 위치하는 곳까지 거리를 나타내는 d로 구성

- 실기억주소는 세그먼트 기준번지변위값더한 완전주소 형태

 

가상주소 형식  세그먼트 번호(s)    변위값(d) 
실기억주소 형식 실기억주소( 세그먼트 기준번지  변위값 )
세그먼트 맵 테이블  세그먼트 번호(s)    세그먼트 크기(L)    기준번지(d) 

 

 가상주소의 세그먼트 번호로 세그먼트 맵 테이블에서 해당 세그먼트의 기준번지, 크기 구함

 가상주소의 변위값, 세그먼트 크기 비교

 변위값이 작거나 같으면, 기준번지와 변위값 더하여 실기억주소를 만들어 주기억장치를 액세스

 변위값이 크면, 다른 영역 침범하므로 실행 권한을 운영체제에게 넘기고 트랩 발생(변위값이 크다는 것은 현재 찾는 세그먼트 위치가 해당 세그먼트의 한계번지를 초과했다는 의미)

 

ex)

 

  가상주소                  
CPU  2    500               ↘            →       
  세그먼트 맵 테이블    ②            ↓   주기억장치
   ↓      번호 크기 기준번지         ↓                 ↓  
1000  500 
 
1000
   1   400   2000 
            Yes
 500 
≤  600
No       
1500     
   2       600    1000   →             2000
     3   600      3200                  3000
        ↓  트랩        

 

페이지 교체 알고리즘

 

페이지 부재(Page Fault)가 발생했을 때, 주기억장치의 모든 페이지 프레임이 사용 중이라면 어떤 페이지 프레임을 선택하여 교체할 것인지 결정, OPT, FIFO, LRU, NUR, SCR

 

OPT(OPTimal replacement, 최적 교체)

: 가장 오랫동안 사용하지 않을 페이지 교체

: 벨레이디(Belady)가 제안, 페이지 부재 횟수가 가장 적게 발생하는 가장 효율적인 알고리즘

 

FIFO(First In First Out)

: 각 페이지가 적재될 때마다 그때 시간을 기억시켜 가장 먼저 들어와 오래 있었던 페이지를 교체

: 이해 쉽고, 프로그래밍 / 설계가 간단

 

참조 페이지 2 3 2 1 5 2 3 5
페이지
프레임
 2  2 2 2  5  5 5 5
   3  3 3 3  2  2 2
       1  1 1  3  3
부재 발생    

 

LRU(Least Recently Used)

: 각 페이지마다 계수기(Counter), 스택(Stack)을 두어 현시점 가장 오래 전에 사용한 페이지 교체

 

참조 페이지 2 3 2 1 5 2 3 5
페이지
프레임
 2  2 2 2 2 2 2 2
   3  3 3  5  5 5 5
       1  1 1  3  3
부재 발생      

 

LFU(Least Frequently Used)

: 사용 빈도가 가장 적은 페이지 교체

: 활발하게 사용되는 페이지는 교체되지 않고 사용

 

NUR(Not Used Recently)

: 최근에 사용하지 않은 페이지 교체

: 최근에 사용되지 않은 페이지는 향후에도 사용되지 않을 가능성이 높음, LRU에서의 시간적인 오버헤드 줄임

: 최근 사용 여부를 확인하기 위해 각 페이지마다 참조 비트, 변형 비트 사용

 

참조 비트 0 0 1 1
변형 비트 0 1 0 1
교체 순서 1 2 3 4

 

SCR(Second Chance Replacement, 2차 기회 교체)

: 가장 오랫동안 있던 페이지자주 사용되는 페이지의 교체방지, FIFO 단점 보완

 

 

 

 

 

 

 

출처 | <시나공> 정보처리기사 필기 2024 기본서 (길벗알앤디)

728x90