주기억장치의 다중프로그래밍

2020. 6. 24. 19:12컴퓨터언어/운영체제

728x90
반응형

 

👍 Why do we need?

주기억장치의 단일프로그래밍(하나의 프로그램만을 적재)에는 오버레이가 있었다.

하지만 하나의 프로그램만을 적재하는 것은 CPU 이용률이 낮기 때문에, 한번에 여러 프로그램들을 분할하여 적재하는 다중프로그래밍 방식이 개발되었다.

 

용어정리

CPU 안에 있는 가장 비싸다는 기억장치인 레지스터는 다음과 같은 주소를 기억하고 있다.

  • 경계레지스터 : 메모리는 컴퓨터가 부팅되면서 운영체제를 적재한다. 운영체제는 무슨 일이 있어도 보호되어야 하기에, 이후 다른 프로그램이 운영체제에 접근하지 못하도록 하기 위해서, 사용자가 실제 사용할 수 있는 메모리 영역의 시작위치를 알려주는 주소.
  • 차폐레지스터 : 경계레지스터로 인해 사용자가 실제 사용할 수 있는 메모리 영역이 정해지고 나면, 다시 그 영역이 여러 부분으로 나누어져 여러 프로그램들을 적재할 수 있게 된다. 이때 서로 다른 영역들 간 경계를 알려주는 주소.

 

다중프로그래밍에는 고정분할과 가변분할이 있다.

  • 고정분할 : 차폐레지스터가 고정되어 있어, 분할된 최대 영역보다 큰 프로그램은 적재할 수 없고 유동적이지 못함. 내/외부단편화 모두 존재
  • 가변분할 : 차폐레지스터를 프로그램별 적재하면서 동적으로 설정하므로 기억장소 활용율이 높고 유동적임. 주기억장치의 크기를 넘지 않는 선에서 큰 프로그램을 적재할 수 있다(초과되면 가상기억장치 필요). 외부단편화만 존재.

*단편화 : 주기억장치 상에서 빈번하게 기억장소가 할당되고 반납됨에 따라 기억장소들이 조각들로 나누어져서 쓰지 못하는 공간

  • 외부단편화 : 프로그램이 분할된 영역보다 커서 들어가지 못하고 사용되지 않은 주기억장치 영역
  • 내부단편화 : 한 영역에서 프로그램이 주어진 분할 안에 들어가고 남은 영역의 부분
728x90
반응형