System Structure & Program Execution 1

이화여대 ‘반효경’교수님의 Operating Systems강의 중, ‘System Structure & Program Execution 1’강의를 수강하고 학습합니다.

컴퓨터 시스템 구조

컴퓨터 시스템은 크게 CPU(중앙처리장치), 메모리, 그리고 I/O 디바이스(입출력 장치)로 구성됩니다. 각 구성 요소는 다음과 같은 역할을 합니다.

  • CPU (Central Processing Unit): 프로그램 명령어를 처리하는 주체입니다. 메모리에서 명령어를 읽어들이고, 해당 명령어를 실행합니다.
  • 메모리: CPU가 작업을 수행하는 동안 필요한 데이터를 저장하고, CPU가 데이터를 빠르게 읽고 쓸 수 있도록 지원합니다.
  • I/O 디바이스: 데이터를 컴퓨터 내부와 외부로 주고받는 역할을 합니다. 대표적인 입력 장치로는 마우스, 키보드가 있으며, 출력 장치로는 모니터, 프린터가 있습니다.

각 I/O 디바이스는 디바이스 컨트롤러라는 작은 CPU를 통해 제어됩니다. 이 컨트롤러는 디바이스의 동작을 관리하고, 로컬 버퍼를 통해 데이터를 임시로 저장합니다.

🤔 로컬 버퍼란?


CPU

CPU는 컴퓨터 시스템의 핵심입니다. CPU는 매 클럭 주기마다 메모리에서 명령어를 읽고 이를 실행하는 작업을 반복합니다.

CPU 내부 구성 요소

  • 레지스터(Register): 메모리보다 더 빠른 속도를 가진 작은 저장 공간입니다. CPU는 자주 사용하는 데이터를 레지스터에 저장해 빠르게 접근할 수 있습니다.
  • 모드 비트(Mode Bit): CPU가 현재 운영체제 모드인지 사용자 모드인지 구분해주는 비트입니다.
  • 인터럽트 라인(Interrupt Line): 각 I/O 디바이스나 시스템에서 요청이 발생하면 인터럽트 라인에 신호가 쌓여 순차적으로 처리됩니다.

CPU와 I/O 디바이스 간의 작업 흐름

  1. CPU는 작업을 메모리에서 읽고 실행합니다.
  2. 디스크 작업과 같은 시간이 오래 걸리는 작업이 요청되면, CPU는 해당 작업을 디스크 컨트롤러에 요청하고, 다른 작업을 계속 진행합니다.
  3. 디스크 작업이 완료되면, 디바이스 컨트롤러는 결과를 로컬 버퍼에 저장합니다.
  4. 디바이스 컨트롤러는 CPU에 인터럽트를 걸어 작업이 완료되었음을 알립니다.

‼️ 무한 루프 프로그램 문제

만약 CPU가 무한 루프를 도는 프로그램을 만난다면, 해당 프로그램이 CPU를 독점하게 되어 다른 작업이 진행되지 않을 수 있습니다. 이를 방지하기 위해 타이머(Timer) 라는 하드웨어가 사용됩니다. 타이머는 특정 프로그램이 CPU를 독점하지 않도록 설정된 시간 내에 인터럽트를 발생시켜, CPU 제어를 운영체제에게 다시 넘깁니다.

타이머의 역할

  1. 운영체제가 시작되면 CPU를 제어합니다.
  2. 사용자 프로그램이 실행될 때, 운영체제는 타이머를 설정하고 CPU를 사용자 프로그램에 넘깁니다.
  3. 타이머가 설정된 시간이 다 되면, CPU는 운영체제로 제어권을 다시 돌려줍니다.
  4. 운영체제는 다른 프로그램에게 CPU를 할당합니다.

※ 타이머는 time-sharing을 구현하는 데 널리 사용되며, 현재 시간을 계산하는 데도 이용됩니다.


모드 비트 (Mode Bit)

컴퓨터 시스템에서는 사용자 프로그램의 잘못된 동작으로 인해 다른 프로그램이나 운영체제에 피해가 가지 않도록 보호 장치가 필요합니다. 이를 위해 CPU는 모드 비트를 통해 두 가지 모드를 지원합니다.

  • 사용자 모드(User Mode): 사용자 프로그램이 실행될 때 설정됩니다. 이 모드에서는 제한된 명령어만 실행할 수 있으며, I/O 장치에 직접 접근할 수 없습니다.
    • 1 : 사용자/일반 모드 - 사용자 프로그램 수행, 제한적 명령 수행
  • 모니터 모드(Monitor Mode): 운영체제가 실행될 때 설정됩니다. 이 모드에서는 모든 명령어를 실행할 수 있으며, I/O 장치에 접근할 수 있습니다.
    • 0 : 모니터/커널/시스템 모드 - OS 코드 수행, 보안이 필요한 중요한 명령 수행

운영체제가 사용자 프로그램에게 CPU를 넘길 때는 모드 비트를 사용자 모드로 설정합니다. 이렇게 함으로써 보안상의 이유로 사용자 프로그램이 시스템에 직접 접근하지 못하게 제한합니다.


인터럽트 (Interrupt)

  • *인터럽트(Interrupt)**는 하드웨어나 소프트웨어에서 발생하는 이벤트로, CPU의 제어를 잠시 중단하고 인터럽트 처리 루틴을 실행하게 합니다.

인터럽트의 종류

  • 하드웨어 인터럽트: I/O 디바이스나 다른 하드웨어에서 발생합니다.
  • 트랩(Trap) 또는 소프트웨어 인터럽트: 소프트웨어에서 발생하며, 두 가지 주요 유형이 있습니다.
    • 예외(Exception): 프로그램이 오류를 범했을 때 발생합니다.
    • 시스템 콜(System Call): 프로그램이 운영체제의 기능을 요청할 때 발생합니다.

시스템 콜

시스템 콜은 사용자 프로그램이 운영체제에게 특정 작업(예: 파일 읽기/쓰기, 네트워크 통신 등)을 수행해달라고 요청하는 방법입니다. CPU는 이 요청을 트랩(Trap)으로 처리하며, 운영체제는 올바른 요청인지 확인한 후, 작업을 수행하고 결과를 반환합니다.


I/O 작업의 수행

I/O(Input/Output) 입출력의 실행은 컴퓨터 시스템에서 데이터가 입력 장치(예: 키보드, 마우스)를 통해 들어오고, 출력 장치(예: 모니터, 프린터)를 통해 나가는 과정을 의미합니다. 이 과정은 시스템의 성능과 효율성에 중요한 영향을 미칩니다. 운영체제는 이러한 I/O 작업을 관리하며, 하드웨어와 소프트웨어 간의 원활한 상호작용을 보장합니다.

개념과 동작방식

  1. 운영체제의 역할
    • 운영체제는 I/O 장치와의 상호작용을 관리하며, 사용자 프로그램이 I/O 장치에 직접 접근하는 것을 제어합니다. 이러한 접근 제어는 시스템의 안정성과 보안을 유지하는 데 필수적입니다.
    • 사용자 프로그램이 I/O 작업을 요청하면, 운영체제는 이 요청이 적합한지 확인한 후 I/O 작업을 수행합니다.
  2. 시스템 콜(System Call)
    • 시스템 콜은 사용자 프로그램이 운영체제에게 특정 작업(예: 파일 읽기/쓰기, 네트워크 통신 등)을 수행해달라고 요청하는 방법입니다. I/O 작업도 시스템 콜을 통해 요청됩니다.
    • 예를 들어, 프로그램이 파일을 읽으려면 시스템 콜을 통해 운영체제에게 이 작업을 요청합니다. 운영체제는 요청을 받아들여 파일을 읽고, 데이터를 프로그램에 전달합니다.
  3. 트랩(Trap)
    • 트랩은 소프트웨어 인터럽트로, 사용자 프로그램이 시스템 콜을 호출하면 발생합니다. 트랩이 발생하면 제어권이 운영체제로 넘어가고, 운영체제가 요청된 작업을 처리합니다.
  4. I/O 요청의 처리
    • 운영체제는 사용자 프로그램이 요청한 I/O 작업이 올바른지 확인한 후, 실제 I/O 작업을 수행합니다. 이 작업은 I/O 디바이스 컨트롤러를 통해 이루어지며, 데이터를 로컬 버퍼로 전송합니다.
    • 작업이 완료되면, 디바이스 컨트롤러가 CPU에 인터럽트를 걸어 I/O 작업이 완료되었음을 알립니다.
  5. 인터럽트와 제어권 반환
    • I/O 작업이 완료되면, 디바이스 컨트롤러는 인터럽트를 통해 CPU에게 작업 완료를 알립니다. CPU는 이 인터럽트를 처리한 후, 제어권을 시스템 콜 다음 명령어로 옮겨 사용자 프로그램의 실행을 계속합니다.

🤔 I/O 작업의 수행 과정 예시

DMA 컨트롤러

DMA(Direct Memory Access) 컨트롤러는 CPU의 부하를 줄이기 위해 I/O 장치가 메모리에 직접 접근할 수 있도록 도와주는 장치입니다. DMA 컨트롤러는 CPU의 개입 없이 데이터를 전송하고, 작업이 완료되면 CPU에 인터럽트를 걸어 알립니다. 이 방식은 특히 대량의 데이터 전송 시 CPU의 부담을 크게 줄일 수 있습니다.