본문 바로가기

study

Operating System | 운영체제, 인터럽트 (9월 첫째 주)

드디어 2019년 2학기 개강...!

벌써 운영체제를 들을 학기가 되었다.

지난 학기에 들었던 SP보다 악명이 높다는데... 벌벌 떨면서 듣는 중이다.

그런데 강의실이 워낙 대형 강의실이라... 교수님 필기가 잘 안 보이고 교수님 영어 발음도 제대로 잘 못 듣겠다... (영재킴....)

어쨌든! 무시무시한 과목이니 필기를 좀 정리해 보려고 한다.

개강 첫주에는 운영체제에 대한 기본적인 개념과 인터럽트에 관해서 배웠다.

 


 

운영체제(Operating System)란?

  • A program that acts as an intermediary between a user of a computer and the computer hardware
  • 컴퓨터 시스템을 편하고 효율적이게 쓰는 것을 목적

 

운영체제는 사용자 관점과 시스템 관점으로 나누어 정의내릴 수 있다.

  • 사용자 관점 : 사용자가 컴퓨터를 쉽게 이용할 수 있도록 만든다. (OS is a program for ease of use and performance.)
  • 시스템 관점 : 자원할당자와 컴퓨터 자원들을 관리하는 제어 프로그램이다. (Os is a program for resource allocation and control.)

 

컴퓨터 시스템의 요소는 CPU, 메모리, 입출력 장치로 구성된다.

  • 장치 컨트롤러(Device controllers)공통 버스(common bus)로 이어져 메모리를 공유한다. (providing access to shared memory.)

Concurrent execution of CPUs and devices competing for memory cycles

 

Computer System Operation

  • 각 장치 컨트롤러는 각 하드웨어 장치마다 존재하며 로컬 버퍼(Local buffer)를 갖고 있다. 로컬 버퍼는 장치로부터 들오오고 나가는 데이터를 임시로 저장하기 위한 작은 메모리이다.
  • CPU moves data from/to main memory to/from local buffers.
  • I/O is from the device to local buffer of controller.
  • 장치 컨트롤러는 CPU에게 신호를 보내 이벤트 발생을 알리는 '인터럽트(interrupt)'를 일으킨다.

 

Interrupt

  • Interrupt transfers control to the interrupt service routine (or interrupt handler) generally, through the interrupt vector, which contains the addresses of all the service routines.
  • 파일 읽기/쓰기와 같은 중요한 동작들이 하드코딩 되어 있는 service routines의 주소를 갖고 있는 인터럽트 벡터는 메모리의 어떤 고정된 위치를 저장하고 있다.

 

하드웨어 인터럽트 (Hardware Interrupt)

  • 하드웨어 인터럽트는 CPU 외부의 디스크 컨트롤러나 주변 장치로부터 요구되는 것으로, 운영체제의 처리를 요하는 상황을 알리기 위해 전기적인 신호를 사용해 구현된다.

 

소프트웨어 인터럽트 (Software Interrupt)

  • 소프트웨어 인터럽트는 외부가 아닌 CPU 내부에서 자신이 실행한 명령이나 CPU의 명령 실행에 관련된 모듈이 변화하는 경우 발생한다.
  • 프로그램 실행 중 프로그램 상의 처리 불가능한 오류나 이벤트를 알리기 위한 경우 발생하는데, 이를 트랩(trap) 또는 예외(exception)라 부른다.
  • 또한 프로그램 내에서 특별한 서비스를 요하거나 감시(supervisor)를 목적으로 의도적으로 프로그램이 발생시킨 특별한 명령어에 의해 발생되기도 한다.
  • Arithmetic overflow, Division by zero, Execute illegal instruction, Reference outside user's memory space, by user's request (e.g. system call or monitor call)