정보처리기사_운영체제_04_기억장치 계층 (주기억장치 사용방식)

ppm_Vely·2022년 6월 21일
0
									< 기억장치 계층 >

1. 사용방식

■ 가상기억장치 (Virtual Memory)

: 보조기억장치인 하드디스크 일부를 주기억장치처럼 사용하는 기술

■ 가상 디스크 (Virtual Disk) -- 지금말고 과거에 사용!

: 주기억장치 일부를 보조기억장치인 하드디스크처럼 사용하는 기술

■ 인터리빙 (Interleaving)

: 효율적인 주기억장치 접근을 위하여 주기억장치를 독립된 기억장치 모듈로 나누어 동시에 주기억장치 모듈에 접근할 수 있도록 하는 방법

: 메모리 이너리빙은 단위시간에 여러 메모리에 동시 접근이 가능하도록 하여 메모리의 대역폭(속도)를 높이기 위한 구조이다.

즉, 주기억장치의 엑세스 속도를 빠르게 한다.

■ 사이클 스틸링(Cycle Stealing)

: CPU가 입출력 전용 프로세서인 채널에게 주기억장치의 접근을 양보하여 입출력의 효율을 높이기 위한 방법

2. 주기억장치

CPU는 보조기억장치에 직접 접근할 수 없기 때문에 운영체제는 보조기억장치에 저장된 프로그램을 주기억장치에 적재하여 CPU가 실행할 수 있도록 한다.

고민 POINT!!

☞ 주기억장치의 크기는 제한되어 있으므로 운영체제는 하나 or 여러 개의 프로그램을 어떻게 주기억장치에 적재할 것인가?

☞ 단일 프로그래밍 시절, 하나의 프로그램만 적재하기 때문에 특별한 기술 필요하지 않았음

☞ 프로그램이 주기억장치보다 큰 경우 주기억장치 크기만큼 프로그램 파일을 분할하여 순차적으로 적재해 실행하는 방법 = "오버레이"

☞ 운영체제 입장에서 CPU가 하나의 프로그램을 실행하는 것은 CPU 이용률이 너무 낮아 동시에 여러 개의 프로그램을 적재하여 CPU 이용률을 극대화하기 원함

∴ 운영체제는 주기억장치를 분할하여 여러 개의 프로그램을 적재하였고, 주기억장치보다 큰 프로그램을 실행하기 위해 보조기억장치를 주기억장치처럼 사용하는 가상기억장치 기술을 개발하여 현재까지 사용 중

  • 크기 제한이 없어짐. 단, 속도는 느려지고 기술이 더 필요해짐

2-1. 주기억장치 할당 기법

▶고정분할 (정적분할) 할당 기법

  • 주기억장치의 크기를 다르게 분할하되 항상 고정된 크기를 갖는 형태로 분할하는 방식
    ※ 같은 크기로 분할하는 것 아님!!

  • 분할된 영역이 고정되어 있어 프로그램이 적재되고 남는 공간 발생 => 내부 단편화 (Internal Fragmentation)

  • 프로그램이 주어진 분할 안에 다 들어갈 수 없는 경우 발생 => 외부 단편화 (External Fragmentation)

  • 내부, 외부 단편화 모두 존재

  • 단편화가 많아 효율적이지 못함

  • 분할된 최대 영역보다 더 큰 프로그램은 적재 불가능

▶가변분할 (동적분할) 할당 기법

  • 프로그램의 크기에 따라 주기억장치 분할 크기를 동적으로 분할하는 방식

  • 미리 크기를 결정하지 않고 실행할 프로세스의 크기에 맞게 기억 장소 분할

  • 외부 단편화만 존재

  • 기억장소 활용율이 높아짐

  • 고정 분할 방식에 비해 실행될 프로세스 크기에 대한 제약 완화

  • 주기억장치의 크기를 넘지 않는 범위에서 큰 프로그램 적재 가능

2-2. 주기억장치 관리 레지스터

: 주기억장치는 물리적으로 연속적인 공간

: 주기억장치의 분할 영역, 프로그램 적재 위치, 프로그램 시작 위치 등을 CPU 내 레지스터가 기억하고 있다!

■ 경계 레지스터 (Boundary Register)

사용자 영역에 존재하는 프로그램이 운영체제 영역을 침범하지 못하도로 한다

■ 차폐 레지스터 (Fence Register)

분할된 영역을 다른 프로그램이 사용하지 못하도록 분할 영역의 위치(주소)를 기억한다

■ 베이스 레지스터 = 기준 레지스터 (Base Register)

주기억장치에 적재된 프로그램의 시작 위치를 기억한다

■ 재배치 레지스터 (Relocation Register)

프로그램이 한 영역에서 다른 영역으로 옮겨지더라도 명령의 주소 부분을 바꾸지 않고 정상적으로 실행될 수 있도록 한다

profile
오늘도 개발중인 ppm's Programming Log

0개의 댓글