[운영체제] 저장장치 구조(주기억장치, 가상기억장치, 보조기억장치)

[운영체제] 저장장치 구조(주기억장치, 가상기억장치, 보조기억장치)

프로세스

  • 실행 중인 프로그램을 의미합니다.
  • ex) 한글 프로그램을 실행



주기억장치(RAM)

RAM 사진

  • 프로세스가 올라가는 공간
  • 프로세서(CPU)가 직접 접근할 수 있는 대량 저장 장치로서 워드의 배열로 구성되어 있습니다.
    • 워드 : CPU가 한번에 처리할 수 있는 단위로서 운영체제가 32bit 시스템이라면 워드는 32bit가 됩니다.
  • 흔히 주기억장치와 RAM은 같은 의미로 사용됩니다.
    • 하지만 주기어장치에 ROM도 있다.
  • 주기억장치는 워드 단위로 CPU와 상호 작용을 할 수 있으며 상호작용을 할 때는 특정 기억장치 주소에 일련의 Load 혹은 Store 명령 등을 통하여 수행이 이루어집니다.
    • Load : 주기억장치 -> CPU 내부의 레지스터로 한 워드만큼의 데이터를 이동
    • Store : CPU 내부의 레지스터의 내용 -> 주기억장치로 이동

하나의 명령이 실행되는 사이클은 다음과 같습니다.
(명령 : CPU가 처리할 수 있는 하나의 단위)
  1. 기억장치(RAM)로부터 명령을 인출해서 CPU 내부의 명령 레지스터에 저장합니다.
  2. CPU가 명령을 해독합니다. 
  3. 피연산자를 CPU 내부의 레지스터에 저장합니다.
  4. 명령을 실행합니다.
  5. 결과를 기억장치에 저장합니다.


  • 주기억장치는 모든 프로그램과 자료를 영구히 저장하기에는 용량이 적으며 그 대신 보조기억장치보다 접근 속도가 훨씬 빠릅니다.
  • 결과적으로 전원이 공급되지 않으면 그 내용을 읽어버리는 휘발성 저장장치라고 할 수 있습니다.

  • 주기억장치 CPU 자체에 내장되어 있는 레지스터는 CPU가 직접 접근할 수 있는 유일한 저장장치입니다.
  • 또한 당연한 소리이지만 실행 중인 모든 명령과, 명령에 의해서 사용이 되는 데이터는 항상 CPU가 직접 접근이 가능한 이러한 저장 장치 중 하나에 있어야만 합니다.

주기억장치 관리 전략

  • 반입(Fetch)전략
    • 주기억장치의 관리를 위해 운영체제는 보조기억장치에 보관 중인 프로그램이나 데이터를 언제 주기억장치로 적재할 것인지를 결정
  • 배치(Placement) 전략 
    • 새로 반입되는 프로그램이나 데이터를 주기억장치의 어디에 위치시킬 것인지를 결정
  • 교체(Placement)전략
    • 주기억장치의 모든 영역이 이미 사용중인 상태에서 새로운 프로그램이나 데이터를 주기억장치에 배치하려고 할 때 사용되고 있는 영역 중에서 어느 영역을 교체하여 사용할 것인지를 결정

배치 전략



  • 최초 적합(First Fit)
    • 적재 가능한 공간 중에서 첫번째 공간에 배치
  • 최적 적합(Best Fit)
    • 적재 가능한 공간 중 단편화가 가장 적은 공간에 배치
  • 최악 적합(Worst Fit)
    • 적재 가능한 공간 중 가장 큰 공간에 배치


단편화

분할된 주기억 장치에 프로그램을 할당하고 반납하는 과정을 반복하면서 사용되지 않고 남는 기억장치의 빈 공간을 조작


  • 내부 단편화
    • 분할된 영역이 할당된 프로그램의 크기보다 크기 때문에 프로그램이 할당된 후 사용되지 않게 남게되는 빈 공간
  • 외부 단편화
    • 분할된 영역이 할당될 프로그램의 크기보다 작기 때문에 프로그램이 할당 될 수 없어 사용되지 않고 빈 공간으로 남게 되는 영역

단편화를 해결하기 위한 방법
  • 통합
    • 주기억 장치 내의 인접해 있는 단편화된 공간을 하나의 공간으로 통합
  • 압축
    • 주기억장치내 서로 떨어져 있는 여러개의 낭비 공간을 모아서 하나의 큰 기억 고간을 만드는 작업

가상기억장치

주기억장치 안의 프로그램 양이 많아질 때, 사용하지 않는 프로그램을 보조기억장치 안의 특별한 영역으로 옮겨서, 그 보조기억장치 부분을 주기억장치처럼 사용할 수 있는데, 이때 사용되는 보조기억장치의 일부분을 가상기억장치라고 합니다.

프로그램을 여러 개의 작은 블록 단위로 나누어서 보관해 놓고, 프로그램 실행 시 요구되는 블록만 주기억장치에 불연속적으로 할당
-> 주기억장치의 크기보다 큰 프로그램을 실행할 수 있 고, 다중 프로그램의 효율을 높일 수 있다.

블록 분할 방법

페이징(Paging)기법
메인메모리의 용량이 45K일때 동일한 크기(7K)로 분할된 페이지를 주기억장치에 적재 시키면 마지막에 내부 단편화가 발생
  • 가상기억장치에 보관되어 있는 프로그램과 주기억장치의 영역을 동일한 크기로 나눈 후 나눠진 프로그램을 동일하게 누눠진 주기억장치의 영역에 적재시켜서 실행
  • 외부 단편화는 발생하지 않지만 내부 단편화는 발생 할 수 있다
  • 페이지(Page)
    • 프로그램을 일정한 크기로 나눈 단위
  • 페이지 프레임(Page Frame)
    • 페이지 크기로 일정하게 나누어진 주기억장치의 단위

페이지 크기가 작아질수록(커질수록) 발생하는 현상
  1. 페이지 단편화 감소(증가)
  2. 한 개의 페이지를 주기억장치로 이동하는 시간이 줄어듬(늘어남)
  3. 프로세스 수행에 필요한 내용만 주 기억장치에 적재 가능(불 가능)
  4. 기억장치 효율성이 높아짐(낮아짐)
  5. 페이지 맵 테이블의 크기가 커짐(작아짐)
  6. 매핑 속도가 늦어짐(빨라짐)
  7. 입 출력 시간의 증가(감소)


세그멘테이션(Segmentation)기법
  • 가상기억장치에 보관되어 있는 프로그램을 다양한 크기의 논리적인 단위로 나눈 후 주기억장치에 적재시켜서 실행
  • 배열이나 함수 등과 같은 논리적인 방법으로 분할한 방법
  • 기억공간을 최대한 낭비없이 효율적으로 사용하기 위해서 사용
  • 페이징 기법과 반대로 내부 단편화는 발생하지 않지만 마지막에 외부 단편화가 1번 발생 할 수도 있다.



보조기억장치

  • 프로그램을 영구히 저장할 수 있는 저장 장치로서 하드 디스크나 SSD 등이 있습니다.
  • 아직도 가장 많이 사용되고 있는 보조기억장치는 하드 디스크로서 자기 디스크의 일종입니다.
  • 일반적으로 프로그램들은 보조기억장치에 저장되며 그 중에서 실행을 한 프로그램이 프로세스가 되어 주기억장치에 적재되어 CPU가 처리해 프로그램이 작동하게 되는 것입니다.

또한 이외에도 캐시 메모리, CD-ROM, 자기 테이프 등 다양한 기타 저장 장치가 존재합니다. 물론 몇몇은 최근에 들어 거의 사용이 되고 있지 않지만 각각의 장치들은 속도, 가격, 크기, 휘발성 등의 특성에서 장단점이 존재하므로 이를 정확히 파악하는것이 중요합니다.




기억장치 사상 입출력(Memory Mapped I/O)

이전에는 입출력 명령이 각각의 입출력 장치를 ID값으로 구분하여 적절한 명령을 삽입하는 방식을 이용했는데 이는 명령의 구조가 상이하여 파악하기 어렵다는 단점이 있습니다.
그래서 단일 주소체계를 도입해서 명령의 구조를 통일하였는데 이를 기억장치 사상 입출력 방식이라고 합니다.
보다 편리한 입출력 장치에 대한 접근을 제공하고 메모리 주소의 일정 범위를 지정해서 장치 레지스터에 사상시킵니다.
쉽게 말하면, 중구난방이였단 장치들의 주소를 하나의 체계로 묶은 것
보통 이러한 시스템은 모니터 화면 출력과 같은 고속의 응답 시간을 갖는 장치에 적합합니다.
나중에는 이러한 시스템이 더 발전하여 그래픽 카드처럼 고속의 화면 출력을 이용하는 경우에도 이용합니다.
그래픽 카드는 마치 별도의 CPU처럼 작동하여 게임 등을 할 때는 굉장히 중요한 요소로 사용이 됩니다.




자기 디스크(Magnetic Disks) 

현재에도 가장 많이 보조기억장치로 사용이 되고 있는 매체로써 여러 개의 디스크 판이 함께 사용이 되는 경우가 많으며 각 디스크는 플래터(Platter)라는 CD처럼 생긴 원형 평판으로 되어 있습니다.
플래터의 양쪽 표면은 자기적인 물질로 덮여 있으며 정보는 플래터 상에 자기적으로 기록되어 저장됩니다.
자기 디스크

읽기-쓰기 헤드는 모든 플래터의 각 표면 바로 위에서 움직이며, 헤드는 모든 헤드를 한꺼번에 이동시키는 디스크 암에 부착되어 사용됩니다.
플래터의 표면은 원형인 트랙으로 논리적으로 구분이 되고 이 또한 섹터로 나뉘어져있습니다.
실린더는 하나의 암 위치에 있는 트랙의 집합을 의미하며 모두 합쳐 수천 개의 동심원 실린더가 존재할 수 있습니다.


디스크의 속도 측면에서 중요한 특성은 바로 전송률입니다.
전송률이란 드라이브와 컴퓨터 간의 데이터의 전송 비율을 의미합니다.

  • 임의 접근 시간(Random Access Time) = 탐색 시간(Seek Time) + 회전 지연(Rotational Time)
    • 임의 접근 시간 : 하드디스크가 원하는 정보를 얻기 위해 걸리는 시간
    • 탐색 시간 : 원하는 실린더로 디스크 암이 움직이는 시간
    • 회전 지연 : 원하는 섹터로 디스크 헤더가 회전하는 시간

즉, 하드 디스크에 있는 원하는 데이터를 찾으려면 암을 움직여서 특정한 동심원 실린더로 접근하고 디스크를 돌려서 특정 섹터에 접근할 수 있도록 해야 하는 것입니다.




자기 테이프

초기의 보조기억장치로 사용된 매체로서 영구적이고 굉장히 많은 양의 데이터를 보관할 수 있습니다. 폭에 따라서 0.5인치 등으로 이름이 붙여지며 폭이 클수록 많은 양의 데이터를 저장할 수 있습니다. 자기 테이프는 주기억장치와 비교했을 때 접근 시간 차이가 굉장히 느린데 이는 자기 테이프는 순차적인 접근만 가능해서 자기 디스크가 제공하는 임의 접근 시간에 비해서 접근 속도가 굉장히 느리기 때문입니다.




출처


댓글

이 블로그의 인기 게시물

[Python] # -*- coding: utf-8 -*-를 쓰는 이유

[소프트웨어공학] NS(Nassi-Schneiderman) 차트

[컴퓨터네트워크] Telnet이란?