컴퓨터 시스템의 동작 원리 [운영체제 정보 기술의 원리 3-1장]

Sanghoon Han·2022년 1월 5일
0
post-thumbnail

1. 컴퓨터 시스템의 구조

  • 내부장치: CPU, 메모리
  • 외부장치: 디스크, 보드, 네트워크 장치

컨트롤러

  • 각 하드웨어 장치에 붙어 있음
  • 각 하드웨어 장치를 제어하는 작은 cpu라고 할 수 있음
  • 메모리 ~ 메모리 컨트롤러, 디스크 ~ 디스크 컨트롤러

2.CPU 연산과 I/O 연산

  • 입출력 장치와 메인 CPU는 동시 수행이 가능하다

B라는 프로그램이 현재 CPU를 할당받아 프로그램 코드를 수행
동시에 A라는 프로그램은 하드디스크에서 어떠한 정보를 읽어오는 작업을 수행

  • 디스크나 키보드 등에서 데이터를 읽어오는 경우 우선 로컬버퍼에 데이터가 임시로 저장된 후 메모리에 전달

인터럽트

  • 컨트롤러들이 CPU의 서비스가 필요할 때 이를 통보하는 방법
  • cpu에서는 메모리에서 명령(instruction)을 하나씩 읽어와서 수행함
  • cpu옆 인터럽트 라인(interrupt line)이 있음
  • 인터럽트 라인에 신호 들어옴 -> 하던 일 멈추고 인터럽트와 관련된 일을 먼저 처리
  • cpu는 명령 하나를 수행할 때 마다 인터럽트가 발생했는지 확인함

3. 인터럽트의 일반적 기능

🔥 운영체제 커널에는 인터럽트가 들어왔을 때 해야 할 일이 미리 다 프로그래밍 되어 코드가 보관되어 있음!

인터럽트 처리루틴

  • 다양한 인터럽트에 대해 각각 처리해야 할 업무들을 정의하고 있음

과정

  1. 인터럽트 발생
  2. cpu일 잠시 멈춤
  3. 그때의 인터럽트 처리 루틴을 수행

인터럽트 분류

  • 하드웨어 인터럽트: 하드웨어 장치가 cpu의 인터럽트 라인을 세팅함
  • 소프트웨어 인터럽트: 소프트웨어가 그 일을 수행함

인터럽트 벡터

  • 인터럽트 종류마다 번호를 정해서 번호에 따라 처리해야 할 코드가 위치한 부분을 가리키고 있는 자료 구조

소프트웨어 인터럽트

트랩(trap)이라는 용어로 주로 불림

예외상황(Exception)

  • 비정상 적인 작업을 시도하거나, 자신의 메모리 영역 바깥에 접근하려는 시도 등 권한이 없는 작업을 시도할 때,

시스템 콜(System Call)

  • 프로그램이 운영체제 내부에 정의된 코드를 실행하고 싶을때 운영체제에 서비스를 요청하는 방법임

4. 인터럽트 핸들링

인터럽트가 발생한 경우 처리해야 할 일의 절차를 의미한다.

운영체제는 현재 시스템 내에서 실해왿는 프로그램들을 관리하기 위해 프로세스 제어블록(Process Control Block: PCB)이라는 자료구조를 둔다.

PCB

  • 각각의 프로그램마다 하나씩 존재함
  • 프로그램의 어느 부분이 실행 중이었는지를 저장하고 있음
  • 프로그램의 메모리 주소, 레지스터 값, 하드웨어 상태 등이 저장됨

정리

  1. 인터럽트 발생
  2. 프로그램의 실행 상태를 PCB에 저장
  3. CPU 제어권 인터럽트 처리루틴으로 전달
  4. 인터럽트 끝
  5. PCB로부터 CPU상에 복원

5. 입출력 구조

입출력이란 컴퓨터 시스템이 컴퓨터 외부의 입출력 장치들과 데이터를 주고받는 것을 말한다.

동기식 입출력

어떤 프로그램이 입출력 요청을 했을 때 입출력 작업이 완료된 후에야 그 프로그램이 후속 작업을 수행할 수 있는 방식을 말함

동기식 입출력에서 CPU는 입출력 연산이 끝날 때 까지 인터럽트를 기다리며 자원을
낭비 함

⭐️ cpu 명령 수행 속도 > 입출력 장치에서 데이터를 읽어오는 속도

  • 이로 인해 자원의 낭비를 초래함

입출력 중인 프로그램의 경우 봉쇄 상태(blocked state)로 전환시킴

동기식 입출력을 수행 중인 cpu를 다른 프로그램에게 할당하지 않는다면 매 시점 시스템 내에서는 하나의 입출력 연산만이 수행될 수 있다.

cpu의 효율적인 사용을 위해 입출력이 수행되는 동안 다른 프로그램에게 cpu를 양도하면 동시에 다수의 입출력 연산이 일어날 수 있다.

동기식 입출력에서는 입출력 요청의 동기화를 위해 장치별로 큐(queue)를 두어 요청한 대로 처리할 수 있도록 함

입출력부분의 연산 완료의 통보는 인터럽트를 통해서 수행하며, 이 경우 인터럽트 핸들링을 하게된다.

비 동기식 입출력:

비 동기식 입출력은 입출력 연산을 요청한 후에 연산이 끝나기를 기다리는 것이 아니라 cpu의 제어권을 입출력 연상르 호출한 그 프로그램에게 곧바로 다시 부여하는 방식을 말함

  • 비동기식 입출력에서는 데이터와 관련 없이 수행할 수있는 작업을 먼저 수행하고, 읽어오는 데이터가 반드시 있어야 수행할 수 있는 일들은 입출력이 완료된 후에 수행하게 된다.
  • 입출력 요청이 디스크에서 읽어노는 요청이 아니라 디스크에 쓰는 요청이어도 쓰기 작업이 완료되기 전에도 다음 명령을 수행할 수 있기에 비동기식 입출력이 사용될 수 있다.

6.DMA

문제의 원인:

원칙적으로 메모리는 CPU에 의해서만 접근할 수 있다.

문제의 결과:

만약 모든 메모리 접근 연산이 CPU에 의해서만 이루어질 경우 입출력 장치가 메모리 접근을 원할 때 마다 인터럽트에 의해 cpu의 업무가 방해를 받게된다.

CPU사용의 효율성이 떨어지는 문제가 발생한다

비효율성을 해결하기 위해 DMA(Direct Memory Access)를 통해 CPU이외의 메모리 접근이 가능한 장치를 두었다.

  • DMA는 일종의 컨트롤러로서, CPU가 입출력 장치들의 메모리 접근 요청에 의해 자주 인터럽트 당하는 것을 막아주는 역할을 함
  • 로컬버퍼에서 메모리로 읽어오는 작업을 cpu대신 DMA가 대행
  • DMA는 Byte단위가 아니라 블록(block)이라는 큰 단위의 정보를 메모리로 읽어온 후 CPU에게 인터럽트를 발생시켜서 해당 작업의 완료를 알려준다.

DMA를 통한 효과

  1. CPU는 원래 하던 작업을 멈추고 인터럽트를 처리할 필요가 없다.
  2. CPU에 발생하는 인터럽트의 빈도를 줄여 CPU를 좀 더 효율적으로 관리하고 입출력 연산을 빠르게 수행할 수 있다.

Reference

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

profile
Fail Fast learn Faster

0개의 댓글