[컴퓨터과학개론] 운영체제 -4
기억장치의 구성(2)
가상 기억 장치
-
주기억장치에서 이용 가능한 영역보다 큰 프로그램을 작은 단위로 쪼개어 실행시키기 위해 보조기억장치 주소를 주기억장치의 주소로 변환하여 프로그램에게 제공되는 가상의 기억장치를 말함
-
보조기억장치의 주소를 주기억장치의 주소로 변환하는 기법
-
가상기억장치에서 가장 중요한 부분은 실행 중인 프로그램(프로세스)에 의해 참조되는 주소(가상 주소)를 변환하여 주기억장치에서 사용하는 주소(실 주소, 물리적 주소)로 연결시켜주는 것
-
실행중인 프로그램(프로세스)이 주기억장치에서 데이터를 접근하기 위해서 가상주소만을 참조하지만, 프로세스는 실제로 실 기억 장치에서 실행되어야 하므로 운영체제가 가상 주소를 실 주소로 바꾸는 주소 변환 절차가 필요함
- 가상기억장치 시스템에서는 실행 프로그램이 참조할 주소가 반드시 주기억장치의 주소일 필요는 없음
- 가상 주소의 범위는 주기억장치에서 사용할 수 있는 실주소보다 더 크며 사용자의 논리적으로 통합된 주소 공간과 컴퓨터의 물리적 공간(주기억 장치의 주소와 보조 기억장치의 주소)을 연결시켜주는 개념임
페이징 기법
- 보조기억장치로부터 프로그램 코드나 데이터를 페이지라고 불리는 동일한 크기의 블록으로 쪼개어서 주기억장치에 적재하여 접근하는 기법
-
주기억장치도 페이지 크기와 같은 크기로 분할되며 이를 주기억장치의 페이지 프레임이라고 부름
- CPU에서 프로세스를 실행하기 위해서는 프로세스의 실행될 페이지가 주기억장치에 적재되어 있어야 함
- 페이지는 보조 기억장치로부터 주기억장치로 옮겨져서 페이지 프레임에 적재되며, 이때 페이지는 사용 가능한 페이지 프레임을 할당받아 주기억장치에 적재됨
세그먼테이션 기법
- 프로그램 코드나 데이터를 일정하지 않은 서로 다른 크기로 분할하여 주기억장치에 적재하여 접근함
-
프로그램 코드나 데이터를 서로 다른 크기로 분할한 블록을 세그먼트라고 부름
- 개발자들은 프로그램을 모듈 단위로 작성하는 습관에 기반을 두고 있기 때문에 사용자가 직접 작성한 프로그램 모듈이나 데이터의 모듈은 논리적 개념에 의해서 다른 크기의 블록을 나뉠 수 있으며, 이 블록을 세그먼트라고 함