공부/CS 스터디

[운영체제] 컴퓨터 시스템 구조 및 프로그램의 실행

규투리 2023. 1. 31. 02:01
반응형

 

 

 

 

 

1. 컴퓨터 시스템 구조

컴퓨터는 프로그램 코드들을 정해진 순서대로 실행한다.

이 과정에서 데이터를 읽고(Read), 처리(Processing)하고, 저장(Store)한다. 

컴퓨터 시스템 구조는 크게 두 가지로 분류된다.

  1. Computer
  2. I/O device (입출력장치)

입출력 장치를 통해서 사용자가 원하는 데이터를 컴퓨터로 전달하면, 컴퓨터는 그 데이터를 가공을 한다. 가공된 데이터는 다시 입출력 장치를 통해 출력된다.

 

컴퓨터의 구성 요소

  1. CPU : 메모리로부터 명령어를 받아와 기계어로 변환하고 연산을 수행한다.
  2. Memory : 명령어 및 데이터가 적재되는 공간이다.
  3. I/O device : 데이터를 입출력하기 위한 컴퓨터의 외부 장치이다.

 

컴퓨터 시스템 흐름

다음은 대략적인 컴퓨터 시스템 흐름이다.

  1. 컴퓨터 전원이 켜진다.
  2. 메인메모리에 커널이 올라간다.
  3. CPU는 운영체제를 실행한다.
  4. 운영체제가 시작되면 다른 프로그램들을 실행시킨다. (메인 메모리에 올라감)
  5. CPU는 명령어 주소를 레지스터에 저장한다.
  6. 프로그램은 운영체제에 I/O device 사용 요청을 보낸다. (시스템콜)
  7. 운영체제는 요청에 따라 I/O device controller에게 데이터 입출력 처리를 요청한다.
  8. I/O device controller는 Interrupt를 발생시켜 CPU에게 작업이 완료되었다고 알린다.
  9. CPU는 I/O device의 Buffer에 접근하여 데이터를 읽어 메인 메모리에 올린다.

 

용어정리

커널 전체 운영 체제 중 메모리에 올라가 있는 부분 (핵심 부분)
레지스터 명령어를 실행하기 위해 필요한 데이터와 상태, 명령어를 저장하는 기억 소자
시스템콜 사용자 프로그램이 운영체제의 서비스를 받기 위해 커널 함수를 호출하는 것
Device Controller 각각의 디바이스들을 I/O연산, 제어관리를 하는 역할 (device의 작은 CPU 역할)
버퍼
각각의 device controller가 명령을 내려서 device의 데이터를 읽어오거나, 데이터를 저장하는 공간
(device의 Ram 역할)

 

2. I/O 연산

입출력(I/O) 수행

  1. 시스템콜로 사용자 프로그램은 운영체제에게 I/O 요청
  2. Trap을 사용하여 Interrupt vector의 특정 위치로 이동
  3. 제어권이 Interrupt vector가 가리키는 Interrupt Service Rotine으로 이동
  4. 올바른 I/O 요청인지 확인 후 I/O를 수행
  5. I/O 완료시 제어권을 시스템콜 다음 명령으로 옮긴다.

 

인터럽트(Interrupt)

CPU는 I/O device가 데이터를 입력할 때까지 기다리는 것이 아니라 자신의 일을 계속 처리하고 있는다. 이때, I/O device에서 입력이 이루어지면 각각의 device controller가 interrupt를 발생시켜서 CPU에게 알려준다. 이 신호를 인터럽트라고 한다.

다시 말하자면, I/O device에 입력이 들어오면 CPU에 보내주는 I/O device controller 신호이다. 

 

CPU는 인터럽트가 발생하면 하던 일을 멈추고 인터럽트가 발생했을 때 수행해야할 코드영역으로 가서 정의된 작업을 수행한다. CPU가 먼저 로컬 버퍼에 있는 내용을 프로그램이 사용할 수 있도록 메모리로 전달하고, 프로그램이 CPU를 할당받을 경우 다음 명령어를 수행할 수 있음을 표시한다.

 

인터럽트는 크게 두 가지로 나뉜다.

  1. 하드웨어 인터럽트(Interrupt)
  2. 소프트웨어 인터럽트(Trap)

하드웨어 인터럽트는 하드웨어가 발생시키고, 소프트웨어는 소프트웨어가 인터럽트를 발생시킨다.

 

또한, 운영체제는 인터럽트 루틴을 쉽게 찾아갈 수 있도록 주소를 의미하는 인터럽트 벡터를 가지고 있다. 인터럽트 벡터는인터럽트 종류마다 번호를 정해서, 번호에 따라 처리해야할 코드가 위치한 부분을 포인터로 가리키고 있는 자료구조를 말한다.

 

용어정리

Interrupt = 하드웨어 인터럽트
하드웨어가 발생시킨 인터럽트
Trap = 소프트웨어 인터럽트
Interrupt vector 해당 인터럽트의 처리 루틴 주소를 가지고 있음
Interrupt Handler
인터럽트가 발생한 경우 처리하는 커널 함수
Interrupt Service Routine 다양한 인터럽트에 대해 처리해야할 업무를 정의해놓은 것

 

 

반응형