3장-컴퓨터 시스템의 동작 원리(1~5)

Jimin·2022년 9월 25일
0

운영체제

목록 보기
4/9
post-thumbnail

1. 컴퓨터 시스템의 구조

컴퓨터 시스템의 구조

  • 컴퓨터 내부 장치
    CPU, 메모리
  • 컴퓨터 외부 장치
    디스크, 키보드, 마우스, 모니터, 네트워크 장치 ...

컴퓨터는 외부장치에서 내부장치로 데이터를 읽어와 각종 연산을 수행한 후, 그 결과를 외부장치로 다시 내보내는 방식으로 업무를 처리한다.

입력(input)

컴퓨터 내부로 데이터가 들어오는 것

출력(output)

외부 장치로 데이터가 나가는 것

운영체제는 여러 프로그램이 동시에 수행되는 시스템을 위한 운영체제이다.


2. CPU 연산과 I/O 연산

컴퓨터에서 연산을 한다는 것은, CPU가 무언가 일을 한다는 뜻이다.
입출력 장치들의 I/O 연산은 입출력 컨트롤러가 담당하고,
컴퓨터 내에서 수행되는 연산은 메인 CPU가 담당한다.

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

로컬버퍼(local buffer)

각 장치마다 다른 곳에서 발생하는 일을 동시 수행 제어하기 위해 설치된 컨트롤러는 장치로부터 들어오고 나가는 데이터를 임시로 저장하기 위한 작은 메모리를 가지고 있는데, 이 메모리를 로컬 버퍼라고 한다.

CPU는 명령 하나를 수행할 때마다 인터럽트가 발생했는지 확인한다.
인터럽트가 발생했으면 다음 명령을 수행하기 전에 인터럽트 처리를 하게 되고, 그렇지 않으면 다음 명령을 계속 수행하게 된다.

인터럽트는 키보드 입력 혹은 요청된 디스크 입출력 작업의 완료 등 CPU에 알려줄 필요가 있는 이벤트가 일어난 경우 컨트롤러가 발생시키는 것이다.


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

  • 하드웨어 인터럽트
  • 소프트웨어 인터럽트

하드웨어 인터럽트

컨트롤러 등 하드웨어 장치가 CPU의 인터럽트 라인을 세팅한다.

인터럽트 벡터(interrupt vector)

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

인터럽트 처리루틴(interrupt service routine) 또는
인터럽트핸들러(interrupt handler)

실제 처리해야 할 코드

소프트웨어 인터럽트

소프트웨어가 CPU의 인터럽트 라인을 세팅한다.

트랩(trap)이라는 용어로 주로 불린다.

예외상황(exception)

사용자 프로그램이 0으로 나누는 연산 등 비정상적인 작업을 시도하거나, 자신의 메모리 영역 바깥에 접근하려는 시도 등 권한이 없는 작업을 시도할 때 이에 대한 처리를 위해 발생시키는 인터럽트를 말한다.

시스템 콜(system call)

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

시스템 콜이나 예외상황은 모두 사용자 프로세스로부터 CPU의 제어권이 운영체제에 이양되어 처리되는데, 이 과정에서 프로그램 코드가 직접 인터럽트 라인을 세팅하는 명령을 실행하여 인터럽트를 발생시킨 후 제어권이 넘어가게 되므로 이들도 넓은 의미에서는 인터럽트의 범주에 포함시키는 것이다.


4. 인터럽트 핸들링(interrupt handling)

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

CPU에서 명령이 실행될 때에는 CPU 내부에 있는 임시 기억장치인 레지스터(register)에 데이터를 읽거나 쓰면서 작업을 한다.

프로세스 제어블록(Process Control Block: PCB)

현재 시스템 내에서 실행되는 프로그램들을 관리하기 위해 프로세스 제어블록이라는 자료구조를 둔다.
PCB는 각각의 프로그램마다 하나씩 존재하며 해당 프로그램의 어느 부분이 실행 중이었는지를 저장한다.
구체적으로는 프로그램이 실행 중이던 코드의 메모리 주소와 레지스터값, 하드웨어 상태 등이 저장된다.


5. 입출력 구조

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

동기식 입출력(synchronous I/O)

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

봉쇄 상태(blocked state)

봉쇄 상태의 프로그램에게는 CPU를 할당하지 않고, CPU 할당 시 곧바로 명령을 수행할 수 있는 프로그램에만 CPU를 할당한다.

비동기식 입출력

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

profile
https://github.com/Dingadung

0개의 댓글