콘텐츠로 건너뛰기
Home » Blog » 운영체제와 CPU, 인터럽트와 시스템콜

운영체제와 CPU, 인터럽트와 시스템콜

  • os

운영체제 종류, 역할, 구조와 CPU

운영체제의 종류

  • 운영체제는 앞단의 어떤 인터페이스를 두느냐에 따라 GUI와 CUI로 나눌 수 있다.
  • GUI
    • Graphical User Interface
    • 그래픽을 사용하여 컴퓨터와 상호작용하는 인터페이스
  • CUI
    • Character User Interface
    • 사용자가 키보드만을 사용하여 문자를 기반으로 컴퓨터와 상호작용하는 인터페이스
    • 예전 OS인 MS-DOS가 대표적이다. (1994 단종)

운영체제의 역할

  • 운영체제의 커널이 담당한다.
    • 커널(kernel) : 컴퓨터 운영 체제의 핵심이 되는 컴퓨터 프로그램 (핵심)
    • 시스템의 모든 것을 완전히 제어하며 운영 체제의 다른 부분 및 응용 프로그램 수행에 필요한 여러 서비스를 제공한다.
    • 역할 : 보안, 자원관리, 추상화
  • CPU 스케줄링, 프로세스 상태관리
    • 어떠한 프로세스를 먼저 실행할지
  • 메모리 관리
    • 작은 메모리를 기반으로 어떤 프로세스를 실행시킬지 (스와핑)
  • 디스크 파일 관리
    • 어떻게 저장할지
  • I/O 디바이스 관리
    • 어떠한 기기들을 컨트롤할지

운영체제의 구조

  • 유저프로그램
  • OS
    • 인터페이스(GUI 또는 CUI)
    • 시스템콜
    • 커널(I/O 드라이버, 파일시스템 등)
  • 하드웨어

컴퓨터 시스템의 구조

  • CPU : 인터럽트에 의해 메모리에 존재하는 명령어를 해석해서 실행
  • DMA 컨트롤러 : CPU의 일을 보조
  • 메모리 : 전자회로에서 데이터, 상태 등을 기록(작업장)
  • 타이머 : 특정프로그램에 시간을 다는 역할
  • 디바이스 컨트롤러 : IO디바이스들의 작은 CPU
  • 로컬버퍼 : 디바이스에 달려 있는 작은 메모리

CPU

  • 산술논리연산장치, 제어장치, 레지스터로 구성되어있는 장치
  • 인터럽트에 의해 메모리에 존재하는 명령어를 해석해서 실행하는 일꾼
  • 메모리에 있는 일을 해석해서 실행하는 일꾼

산술논리연산장치

  • ALU(arithmetic and logical unit)
  • 사칙연산과 같은 산술연산과 논리연산을 하는 회로장치

제어장치

  • CU(control unit)
  • 프로세스의 조작을 지시
  • 명령어들을 읽고 해석하며 데이터 처리를 위한 순서를 결정

레지스터

  • CPU 안에 있는 매우 빠른 임시기억장치(메모리)

정리

  • CPU의 정확한 표현 : CPU는 메모리에서 레지스터로 올라간 값을 읽는 일꾼이다.
  • 플로우
    1. 제어장치가 메모리에 있는 일을 레지스터에 로드한다.
    2. 제어장치가 레지스터에 있는 값을 읽으라고 ALU에게 전달한다.
    3. ALU가 레지스터에 있는 값을 읽어서 계산 한 뒤 레지스터에 전달한다.
    4. 레지스터에서 메모리로 다시 올린다.

인터럽트

  • 어떤 신호가 들어왔을 때 CPU를 잠깐 정지시키는 것
  • 0으로 숫자를 나누는 산술 연산오류, 프로세스 오류 등으로 발생한다.
  • 오류뿐만 아니라 I/O 디바이스를 사용할 때의 인터럽트, 우선순위가 높은 프로세스의 발생 등으로도 발생한다.

과정

  • CPU는 메모리에 있는 명령어(instruction)을 순차적으로 실행한다.
  • 인터럽트가 발생하면 점프해서 인터럽트 핸들러 함수가 모여있는 인터럽트 벡터로 간다.
  • 인터럽트 핸들러 함수(인터럽트 서비스 루틴 = ISR)가 실행되며 특정 명령어를 실행한다.
  • 인터럽트가 종료되면 다시 순차적으로 실행되게 된다.

종류

  • 하드웨어 인터럽트
    • I/O 디바이스 등 하드웨어에서 발생하는 인터럽트
    • 마우스를 기반으로 버튼을 클릭하거나, 디스크에서 파일을 읽거나, 쓰기 작업이 완료되었을 때 등
  • 소프트웨어 인터럽트
    • 트랩(trap)이라고도 한다.
    • 프로세스 오류, 프로세스 종료, 시작 등을 기반으로 프로세스에서 발생하는 인터럽트
    • 하드웨어 인터럽트보다 우선순위가 높은 인터럽트

시스템콜

  • 운영체제가 커널에 접근하기 위한 인터페이스
  • 유저프로그램이 운영체제의 서비스를 받기 위해 커널 함수를 호출할 때 이를 거쳐서 호출하도록 설계되어 있다.
  • 프로세스 관리(생성, 삭제 등), 파일 관리, 디바이스 관리, 시간 및 날짜 관련 시스템, 프로세스 간 통신 때 이를 통해 커널함수를 호출한다.
  • ex) 프로세스를 종료하는 kill() 함수 → 시스템콜을 거쳐서 커널함수가 호출되게 된다.

과정

  • 만약 유저 프로그램이 I/O 요청을 위한 트랩을 발동했다고 하면 다음과 같은 과정이 발생한다.
  1. 유저 프로그램이 I/O 요청 트랩발동을 한다.
  2. 올바른 I/O 요청인지 확인한다.
  3. 유저 모드가 시스템콜을 통해 커널모드로 변환한다.
  4. 이후 커널함수를 실행한다.

커널함수

  • 커널 안에 있는 여러 개의 함수를 뜻한다. (= native function)

커널

  • 운영체제의 핵심 부분이자 시스템콜을 제공하며 보안, 메모리, 프로세스, 파일 시스템, I/O 디바이스, I/O 요청 관리 등 운영체제의 중추적인 역할을 한다.

유저 모드

  • 유저가 접근할 수 있는 영역을 제한적으로 두며 컴퓨터 자원에 함부로 침범하지 못하는 모드

커널 모드

  • 모든 컴퓨터 자원에 접근할 수 있는 모드

modebit

  • 시스템콜이 작동될 때 modebit을 기반으로 유저 모드와 커널 모드를 구분한다.
  • modebit은 1 또는 0의 값을 가지는 플래그 변수이며 1은 유저모드, 0은 커널모드를 가리킨다.

시스템콜의 장점

  • 유저 프로그램은 시스템콜을 기반으로 커널과 분리가 되게 된다.
  • 즉, 유저프로그램은 복잡한 파일 시스템과 프로세스 생성 등에 대한 내부동작을 신경 쓸 필요가 없다.
  • 운영체제의 관리하에 프로그램이 운영되므로 시스템의 안정성과 보안이 강화된다.