본문 바로가기
Computer Science/OS

[OS] 컴퓨터 시스템의 동작 원리(컴퓨터 시스템 구조 & 입출력 수행)

by soobaaaam 2021. 11. 5.
728x90

<컴퓨터 시스템 구조>

 

 흔히 컴퓨터 시스템의 구성을 이야기할 때, 컴퓨터 시스템은 컴퓨터와 입출력 장치로 이루어져 있다고 말한다.

 여기서 컴퓨터는 CPU와 Memory로 이루어져 있다.

 또한, 입출력 장치에서의 입력은 입출력 장치의 데이터가 컴퓨터 안으로 들어가는 것을, 출력은 그 데이터를 받아서 컴퓨터에서 처리 후 결과를 다시 입출력 장치로 내보내는 것을 말한다. 

 

출처 : 이화여자대학교 반효경 교수님 '운영체제' 강의

 

 컴퓨터 시스템은 위 그림처럼 매우 복잡하게 이루어져 있다. 좌측의 CPU와 Memory로 구성된 것이 컴퓨터이고 우측의 디스크, 키보드, 마우스 등으로 구성된 것이 입출력 장치이다. 

 위 그림의 다양한 용어들을 하나하나씩 살펴보겠다.

 

1. CPU

CPU에서는 매 순간마다 메모리에서 instruction(기계어)을 하나씩 읽어서 실행한다. 이 하나의 instruction이 끝나면 interrupt line을 매번 체크한다.

 

1-1. Interrupt line

 CPU는 항상 메모리하고만 일하는데, 중간중간 키보드에서 입력이 들어오거나 디스크에서 무언가 읽어와야 하는 등의 작업이 생기면 interrupt line은 이를 CPU가 알도록 해준다. 

 

1-2. mod bit

 mod bit은 CPU에서 실행되는 것이 운영체제인지 사용자 프로그램인지를 구분해준다. 

 mod bit이 0일 때, 즉 커널 모드(= 모니터 모드) 일 때는 운영체제가 CPU에서 실행 중인 것이다. 이 때는 메모리 접근이나 입출력 장치 접근 등 무슨 일이든 다 할 수 있게 정의되어 있다.

 반면 mod bit이 1일 때, 즉 사용자 모드일 때는 제한된 instruction만 CPU에서 실행할 수 있게 되어 있다.

 

1-3. registers

 Memory보다 더 빠르면서, 정보를 저장할 수 있는 작은 공간이다.

 

1-4. CPU에 디스크에서 무언가를 읽어오라는 요청을 보내는 방법

 CPU가 Memory에서 instruction을 실행하다 프로그램A가 디스크에서 무언가를 읽어와야 한다면, CPU가 직접 디스크를 접근하는 것이 아니라 디스크 컨트롤러에게 특정 데이터를 어딘가에서 읽어오라고 일을 시킨다. 그러면 디스크에서는 디스크 컨트롤러의 지시를 받아서 데이터를 읽어온 후 자신의 local buffer에 집어넣는다. 

 

2. Memory

 CPU의 작업 공간이다.

 

3. DMA controller (Direct Memory Access controller)

 말 그대로 메모리에 직접 접근하는 컨트롤러이다.

 CPU에 많은 interrupt가 걸리게 되면 CPU는 비효율적으로 동작하게 된다. DMA 컨트롤러는 이를 보완하기 위한 컨트롤러이다. 메모리에 접근할 수 있는 장치는 CPU 뿐이지만 DMA 컨트롤러를 통해 DMA도 메모리에 접근할 수 있게 된다.

 DMA 컨트롤러가 존재함으로써 CPU는 계속 자기 일을 하게 하고, 중간중간 들어오는 입출력 장치의 local buffer의 내용을 메모리에 복사하는 일을 DMA 컨트롤러가 직접 해준다. 이후 이 작업이 끝나면 CPU에게 interrupt를 한 번만 걸어서 작업이 끝났음을 알려준다.

 

4. Memory controller

 DMA와 CPU가 동시에 특정 메모리에 접근하면 문제가 생길 수 있기 때문에 이를 중재하기 위한 컨트롤러이다.

 

5. timer

 특정 프로그램이 CPU를 독점하는 것을 막는다.

 맨 처음 운영체제가 컴퓨터를 켰을 때 운영체제가 CPU를 가지고 있다가 여러 프로그램이 실행되면 그 프로그램에게 CPU를 넘겨주는데, 이때 그냥 넘겨주는 것이 아니라 timer에 어떤 값을 세팅 후 프로그램에게 CPU를 넘겨준다. 

 이후 timer에 할당된 시간이 되면 timer가 CPU에게 interrupt를 걸어서 시간이 끝났다고 알려준다. 그러면 CPU는 하던 일을 잠시 멈추고 CPU의 제어권이 프로그램에서 운영체제로 자동으로 넘어가고 그다음 프로그램에게 CPU가 넘어간다. 

 

6. Disk

 디스크는 보조기억장치이자, 입출력 장치로도 볼 수 있다.

  • 입력 : 디스크의 데이터를 읽어서 메모리로 읽어들인다.
  • 출력 : 처리 결과를 디스크의 파일 시스템에 저장한다.

 

7.  device controller

 입출력 장치 각각을 전담하는 작은 CPU이다. 예를 들어, 디스크에서 헤드가 어떻게 움직이고 어떤 데이터를 읽을지 디스크의 내부를 통제하는 것은 CPU의 역할이 아닌, device controller의 역할이다. 

 

7-1. 구별해야 하는 용어

  • device controller(장치 제어기) : 각 장치를 통제하는 일종의 작은 CPU이므로 하드웨어이다.
  • device driver(장치 구동기) : OS 코드 중 각 장치별 처리 루틴을 담당하는 소프트웨어이다.

 

8. local buffer

 device controller 각각의 작업공간이다.

 

 

<입출력 수행>

 모든 입출력 명령은 특권 명령이다. 따라서, 프로그램이 직접 입출력을 하지 못하고 운영체제를 통해서만 접근할 수 있다.

 

1. 프로그램은 어떻게 입출력을 하는가?

  1.  프로그램은 입출력을 하기 위해 우선 운영체제에게 부탁한다.
  2. 이후 시스템 콜(system call)이라는 소프트웨어 인터럽트를 걸어서 CPU가 OS에게 넘어가게 한다(= trap을 걸어서 인터럽트를 건다).
  3. OS는 항상 올바른 요청인지 확인 후 입출력을 수행한다.
  4. 입출력이 완료되면 하드웨어 인터럽트가 걸리게 된다.

 이 과정을 그림으로 다시 보면,

 

 

출처 : 이화여자대학교 반효경 교수님 '운영체제' 강의

 

  1. 사용자 프로그램이 입출력을 요청하기 위해서 OS에게 시스템 콜을 해준다(소프트웨어 인터럽트).
  2. OS가 입출력 장치에게 일을 시킨다.
  3. CPU는 다른 프로그램에게 넘어가게 된다.
  4. 시킨 일이 끝나면 하드웨어 인터럽트가 걸린다(일을 끝냈다고 입출력 장치가 CPU에게 알린다).

* 본 글은 이화여자대학교 반효경 교수님 강의 '운영체제와 정보기술의 원리(반효경 지음)' 서적에 기반하여 작성하였습니다.

'Computer Science > OS' 카테고리의 다른 글

[OS] 프로세스 관리 (1)  (0) 2021.12.02
[OS] 프로세스 (2)  (0) 2021.12.01
[OS] 프로세스 (1)  (0) 2021.11.30
[OS] 프로그램의 구조와 실행  (0) 2021.11.18
[OS] 운영체제 개요  (0) 2021.11.04