본 벨로그의 내용 및 이미지는 다음의 강의를 참고해서 작성이 되었으며, 틀린 내용이 있을 수도 있으니 너그럽게 봐주시면 감사하겠습니다:)
운영체제란 사용자에게는 편리한 인터페이스 환경을 제공하고 컴퓨터 시스템의 자원을 효율적으로 관리하는 소프트웨어이다. 다시 말하면 OS가 사용자 측에게는 process 관리를 제공하고 하드웨어 측에게는 자원 관리를 제공한다고 보면 된다.
위의 그림처럼 컴퓨터는 크게 user mode, kernel mode, hardware mode로 나누어 진다. 사용자가 어떤 프로그램을 만들어서 process를 실행하면 해당 process가 실행되기 위해서는 cpu와 같은 하드웨어에 직접 접근하지 않는다. 'System call' 이라는 인터페이스를 통해 user mode에서 kernel 모드로 넘어가면서 device driver를 제어하기 시작한다. 즉 응용 프로그램이 하드웨어 자원에 접근하거나 OS가 제공하는 서비스를 이용하려할 때는 system call을 이용해야 하며, 이렇게 함으로써 컴퓨터 자원을 보호할 수 있게 된다. kernel mode와 hardware mode 사이의 인터페이스는 driver가 담당한다. 이때 device driver가 IRQ를 통해 인터럽트를 요청하면서 원하는 장치를 사용하면서 연산을 시작하고 본인의 작업(위의 프로세스)이 끝나면 return하게 된다.
인터페이스(interface) 는 서로 다른 두 개의 시스템, 장치 사이에서 정보나 신호를 주고받는 경우의 접점이나 경계면이다.
드라이버 는 운영 체제와 디바이스가 서로 통신할 수 있는 소프트웨어 구성 요소
Application Programming Interface란 응용 프로그램이 자신과 연관된 프로그램을 만들 수 있도록 제고하는 인터페이스이다. API는 시스템 호출보다 광범위한 개념이며, 운영체제의 API를 시스템 호출이라고 정의할 수 있다.
인터럽트란 CPU가 특정 기능을 수행하는 도중에 급하게 다른 일을 처리하고자 할 때 사용할 수 있는 기능이다. (출처: 나무위키) CPU는 입출력 관리자 라는 장치를 통해 메모리와 통신하는데, 인터럽트가 발생하는 과정은 다음과 같다.
I/O가 필요할 때 CPU로부터 입출력 요청을 받은 입출력 관리자가 데이터를 메모리가 가져다 놓기 위해서는 메모리에 대한 접근 권한이 필요해 또 다시 CPU와 통신을 해야 한다. 하지만 DMA를 지원할 경우, 특정 하드웨어 하위 시스템이 CPU와 독립적으로 메인 시스템 메모리에 접근할 수 있게 도와준다. 주변장치의 데이터는 장치 컨트롤러에 의해 로컬 버퍼로 이동한다. 그러나 전송할 데이터가 많은 경우, 많은 양의 데이터의 이동으로 인한 부담이 커지는데 이러한 문제를 해결하기 위해 DMA를 이용한다. 장치 컨트롤러가 데이터의 한 블록을 이동시키는데 이 과정에서 DMA로 인해 CPU의 개입이 필요없게 된다. CPU에서는 데이터 이동이 완료되었다는 단 한 번의 인터럽트만 발생한다. 데이터가 전송되는 동안 CPU는 다른 작업을 수행할 수 있게 되어 효율성이 높아진다. (위키피디아 참조)