CS/Operating System

컴퓨터 시스템의 구조와 저장 장치

olsohee 2023. 12. 23. 18:47

컴퓨터 시스템의 구조

  • 디바이스 컨트롤러와 로컬버퍼
    • 디바이스 컨트롤러: 각각의 입출력 장치에는 컨트롤러가 있는데, 이는 해당 입출력 장치를 관리하는 일종의 작은 CPU이다(하드웨어).
    • 로컬버퍼: 디바이스 컨트롤러는 들어오고 나가는 데이터를 임시로 저장하기 위한 작은 메모리 공간인 로컬 버퍼를 내장하고 있다. 로컬 버퍼는 주로 큐 형태로 구성되며, 선입선출 방식이다. 즉, 디바이스로부터 전송된 순서대로 데이터가 처리된다.
  • DMA(Direct Memory Access)
    • 원칙적으로 메모리는 CPU에 의해서만 접근할 수 있다. 따라서 CPU 외의 장치가 메모리의 데이터에 접근하기 위해서는 CPU에게 인터럽트를 발생시켜서 CPU가 컨트롤러의 로컬버퍼와 메모리 사이에서 데이터를 옮기는 일을 대신한다.
    • 그러나 이 경우 입출력 작업이 일어날 때마다 입출력 장치의 컨트롤러가 인터럽트를 발생시켜 인터럽트에 의해 CPU의 업무가 방해 받게 된다. 따라서 CPU 사용의 효율성이 떨어지는 문제점이 발생한다.
    • 이러한 비효율을 극복하기 위해 CPU 외에 메모리 접근이 가능한 장치를 하나 더 두는데, 이것이 DMA이다.
    • DMA는 바이트 단위가 아니라 블록이라는 큰 단위로 정보를 메모리로 읽어온다. 따라서 작은 양의 바이트 단위가 아니라 블록 단위만큼 데이터가 로컬 버퍼에 찼을 때, DMA는 로컬버퍼의 데이터를 메모리로 읽어오고 인터럽트를 발생시켜 CPU에게 데이터를 옮겨왔음을 알린다
    • 따라서 (1) CPU 대신 DMA가 로컬 버퍼에서 데이터를 읽어오기 때문에 그 사이에 CPU는 계속 프로세스를 실행할 수 있으며, (2) DMA는 블록 단위로 데이터를 읽어와 인터럽트를 발생시키기 때문에 인터럽트의 빈도를 줄인다. 따라서 CPU를 좀 더 효율적으로 관리할 수 있다.
  • 모드 비트(mode bit)
    • CPU가 운영체제의 코드를 실행하는지, 사용자 프로그램의 코드를 실행하는지 구분하기 위한 비트이다. (0: 운영체제, 1: 사용자 프로그램)
    • 특권 명령은 중요한 명령으로서, 사용자 프로그램이 실행할 수 없다. 따라서 모드비트가 1일 때, 즉 사용자 프로그램의 코드가 실행 중일 때 특권 명령을 실행해야 되면, 인터럽트를 발생시켜 CPU 제어권을 운영체제에게 넘긴다.
  • 인터럽트 라인
    • CPU에게 인터럽트가 발생했음을 알리기 위한 공간이다.
  • 프로세스 제어블록(PCB, Process Control Block)
    • 프로세스 제어블록은 운영체제가 실행되는 프로그램을 관리하기 위해 두는 자료구조로, 각 프로그램마다 하나씩 존재한다.
    • 인터럽트 처리 후에 다시 기존에 수행하던 프로그램을 수행하기 위해 인터럽트 발생시 CPU 제어권이 운영체제로 넘어가기 전에 프로세스 제어블록에 실행 중이던 코드의 메모리 주소, 레지스터 값, 하드웨어 상태 등이 저장된다.
  • 레지스터
    • 레지스터는 CPU 내부에 있는 임시 기억장치로, CPU가 연산을 할 때 레지스터에 데이터를 읽거나 쓰며 연산을 한다.
    •  인터럽트가 발생해서 새로운 명령을 수행하게 되면 기존에 수행 중이던 연산의 기록인 레지스터 값이 지워지게 된다. 따라서 프로세스 제어블록에 레지스터 값을 저장해둔다.
  • 프로그램 카운터(PC, Program Counter) 
    • CPU 내에 존재하는 레지스터 중 하나로, CPU가 수행해야 할 메모리 주소를 담고 있는 레지스터이다.
    • CPU는 매번 프로그램 카운터가 가리키는 메모리 위치의 명령을 처리한다.
    • 일반적으로 조건문이나 반복문, 함수 호출 등에 의해 주소 이동이 없는 이상 프로그램 카운터는 항상 바로 다음 명령을 가리키게 되어 코드의 순차적인 수행이 이뤄진다. 만약 인터럽트가 발생하면 프로그램 카운터는 운영체제를 가리키고 운영체제의 코드가 실행된다. 
    • 프로그램 카운터는 프로그램 실행 중에만 유효하며, 프로그램이 종료되면 초기화된다.

저장장치(주기억장치, 보조기억장치)

저장장치는 주기억장치와 보조기억장치로 나뉜다.

  • 주기억장치: 메모리라고 불리며, 전원이 나가면 저장되었던 내용이 모두 사라져버리는 휘발성의 RAM을 매체로 사용하는 경우가 대부분이다.
  • 보조기억장치: 전원이 나가도 저장된 내용을 기억할 수 있는 비휘발성의 마그네틱 디스크를 주로 사용한다.

그리고 위 사진과 같이 빠른 저장장치부터 느린 저장장치까지 단계적인 계층 구조로 이뤄진다.

  • 빠른 저장장치는 빠른 만큼 가격이 비싸기 때문에 적은 용량을 사용하며, 느린 저장장치는 가격이 저렴해 용량이 크다.
  • 레지스터, 캐시 메모리, 메인 메모리의 내부 기억장치는 휘발성 저장장치이고, 마그네틱 디스크, 광디스크, 마그네틱 테이프의 외부 기억장치는 비휘발성 저장장치이다.
  • 내부 기억장치는 CPU가 직접 접근이 가능하고, 외부 기억장치는 CPU가 직접 접근할 수 없으며 입출력 장치 컨트롤러에게 요청을 해야 한다.
  • 상위 저장장치일수록 접근 속도가 빠르지만 용량이 적다. 따라서 당장 필요한 정보는 빠른 저장장치에 넣어두어 수행 속도를 높이고, 그렇지 않은 정보는 느린 저장장치에 보관한다.
    • 캐싱이 그 예이다. 캐싱은 상대적으로 느린 저장장치에 있는 내용 중 당장 사용되거나 빈번하게 사용되는 정보를 빠른 저장장치에 저장함으로써 두 저장장치 사이의 속도를 완충시키는 기법이다. 
    • 빠른 저장장치에 빈번히 사용되는 정보만 선별적으로 저장하기 때문에, 빠른 저장장치에서 곧바로 정보를 찾을 수 있어서 전체적인 성능이 향상된다. 
    • 이를 통해 적은 용량의 상위 저장장치만으로도 빠른 수행 속도의 성능을 얻을 수 있는 것이다.

보조기억장치의 용도

보조기억장치는 다음 두 가지 용도로 구분된다.

  • 파일 시스템용
    • 전원이 나가도 유지해야 할 정보가 있으면 그것을 파일 형태로 보조기억장치에 저장한다.
  • 스왑 영역용(swap area) 
    • 메모리는 크기가 한정되기 때문에 메모리 공간을 효율적으로 사용해야 한다. 따라서 실행 파일이 메모리에 적재될 때 실행파일 전체를 메모리에 한꺼번에 올리지 않고, 프로그램 수행에 당장 필요한 부분만 메모리에 올려놓고 나머지는 디스크의 스왑 영역에 내려놓는다. 이처럼 디스크에 내려놓는 일을 스왑 아웃시킨다고 말한다. 그리고 스왑 아웃된 부분이 필요할 때는 다시 메모리 영역으로 올린다.
    • 스왑 영역용으로 하드디스크가 가장 널리 사용되는데, 이는 프로그램 실행 중에 내용을 잠시 저장해뒀다가 프로그램이 종료될 때 삭제되는 메모리의 연장 공간으로서, 파일 시스템처럼 비휘발성 용도로 사용되는 것과는 다르다.

Reference

  • 이화여자대학교출판문화원, 운영체제와 정보기술의 원리, 반효경

'CS > Operating System' 카테고리의 다른 글

CPU 스케줄링  (1) 2024.02.28
프로세스와 스레드  (0) 2023.12.27
프로세스의 주소 공간, 프로세스 상태, 프로세스 스케줄링 큐  (1) 2023.12.23
보안 방법  (1) 2023.12.23
운영체제란?  (1) 2023.12.20