OS - 서론

운영체제

운영체제는 컴퓨터 하드웨어를 관리하는 소프트웨어이다. 컴퓨팅 환경에서 존재하는 여러 컴퓨터 하드웨어의 구조, 구성을 이해하고, 운영체제가 이러한 자원들을 프로그램에 할당하는 일을 하는 것이다.

컴퓨터는 하드웨어, 운영체제, 응용 프로그램, 사용자로 구분할 수 있다.

하드웨어는 CPU, I/O 장치로 구성되어있고, 기본적으로 계산용 자원을 제공한다. 응용 프로그램은 워드 프로세서, 스프레드 시트, 컴파일러, 웹 브라우저 등 사용자의 문제를 해결하기 위한 여러 종류의 사용자가 활용하는 자원을 의미한다. 그리고 운영체제는 하드웨어와 응용 프로그램 사이에서 사용자 목적에 맞게 효율적으로 자원을 조절하고 제어한다.

컴퓨터 시스템의 구성

운영체제에는 장치 드라이버가 존재한다. 장치 드라이버는 해당 장치 컨트롤러의 작동을 잘 알고 있으며, 나머지 운영체제의 장치에 대한 일관적인 인터페이스를 제공해준다. CPU와 장치 컨트롤러는 병렬로 실행되고, 메모리 사이클을 가지고 공유를 질서있게 가져가기 위한 작업을 수행한다.

인터럽트

특정 작업을 수행할 떄, 해당 컨트롤러는 작업이 어떤 일로 인해 완료되었거나 중단 등 여러 일이 일어났을 때의 상태를 장치 드라이버에게 알린다. 이는 인터럽트라는 것을 통해 이루어진다. 인터럽트라는 것은 하드웨어가 어느 때이든 시스템 버스를 활용하여 CPU에게 신호를 보내서 발생시킬 수 있다. 즉, 인터럽트는 운영체제와 하드웨어의 상호 작용 방식의 핵심 부분이라고 할 수 있다.

기본적인 인터럽트 메커니즘은 CPU에서 인터럽트 요청이 들어올 때, 해당 인터럽트 요청 라인이라는 선을 통해서 들어온다. 이 선은 하드웨어에서 하나의 명령을 수행할 때마다 CPU가 이 선을 감지한다. CPU가 인터럽트 신호를 감지하면, 인터럽트 번호를 읽고 이 번호를 Interrupt Vector(인터럽트 서비스 루틴의 주소 배열) 인덱스로 사용하여 interrupt-handler routine으로 점프한다. 그리고 인터럽트가 들어온 원인을 파악하고 필요한 처리를 수행하고 return_from_interrupt 명령어를 통해 CPU를 인터럽트 전 실행 상태로 되돌린다.

CPU가 인터럽트를 다루는 순서
발생 -> 포착 -> 디스패치 -> 삭제

최신 운영체제에서는 CPU 및 인터럽트 컨트롤러 하드웨어에 의해 더욱 정교한 인터럽트 처리 기능이 존재한다.

  1. 중요한 처리 중 인터럽트 연기
  2. 인터럽트 핸들러로 효율적으로 인터럽트 디스패치
  3. 우선순위에 따른 인터럽트를 구분하여 적절히 대응

CPU에는 두 개의 인터럽트 요청 라인이 존재한다.

  • 마스킹 불가능
  • 마스킹 가능

저장장치