운영체제 & 컴퓨터구조

[OS] #1. 하드웨어 / 소프트웨어 통신

코딩하는상후니 2022. 8. 29. 17:25

 


 

 
 

* 하드웨어 ( H / W )

 
Physical ( 물리적 )
=> 보통 실제 장치들을 말한다.
ex) CPU, RAM, SDD, HDD, Sound, Video, NIC....
 
 
 
 
 
 

* 소프트 웨어 ( S / W )

 

 
Logical ( 논리적  = 'Vritual' )
=> 물리적 장치들로 이루어진 컴퓨터가 작동되게 하는 프로그램.
 
 
 
 
 
 

 

* I/O 입출력 통신

 

 
 
 
 
 

 

* API ( Application Programming Interface )

 
 
 
=> 개발자가 원하는 행동으로 시스템을 제어하기 위해 커널 ( 운영체제 ) 한테 요청하는 인터페이스.
 
=> 결국, 함수란 소리다. ( C++ 순수 가상 함수 )
ex) C 언어의 "printf 함수"
 
 
 
즉,
개발자가 Usermode 아래의 작업의 자세한 부분을 모르더라도
원하는 작업이 정의된 'API' 만 Call ( 호출 ) 한다면  API 에 정의된 작업이 실행된다.
 
 
 
=> 이 때, 개발자가 API 함수를 호출하면,
API 함수 내부에 운영체제의 기능을 사용할 수 있는 함수가 실행된다.
이것이 'System Call ( 시스템 콜 )' 이다.
 
 
 
 
 
 
 

* System Call

 
 
=> 응용 프로그램에서 커널 ( 운영체제 ) 서비스를 사용하는 방법.
 
 
=> API 함수를 통해 System Call 되어지면
커널 ( 운영체제 ) 는 하드웨어 Dirver 를 제어하며 원하는 요청 수행.
 
 
=> 이 때, 하드웨어 Driver 에 요청하는 것을 'Interrupt Request' 라고 한다.
 
 
 
 
 
 
 

* Interrupt

 
 
=> 커널 ( 운영체제 ) 과 하드웨어의 통신에서 일종의 신호.
 
 
=> 인터럽트에도 여러 가지 종류가 존재한다. ( 다음 장에서 다룬다. )
 
 
=> 운영체제 ( CPU 를 관리하는 곳 ) 는 인터럽트를 감지하면 실행 중인 기계어 코드를 중단하고
해당 인터럽트를 위한 처리 프로그램으로 점프한다.
 
 
=> 운영체제가 하드웨어에게 신호를 보낼 수 있다. ( 'IRQ' )
작업이 완료되면 해당 하드웨어는 완료되었다는 신호를 보냄.
두 가지 상황 모두 인터럽트이다.
 
 
 
 
 
 
 
 
 
 
 

* IRQ ( Interrupt Request )

 
 
=> 윈도우 + R -> msinfo32
 
=> 장치마다 인터럽트의 고유 번호는 다르다.

 

 

 

 

 

 
 
 
 

* Blocking I/O    /   Non-Blocking I/O

 

 
 
Blocking I/O   :  운영체제가 위 입출력 과정들이 끝날 때까지 기다리는 것.
Non-Blocking I/O  :  운영체제가 위 입출력 과정들을 요청하고 다른 일을 수행하는 것.
 
=> Blocking / Non-Blocking 은 API 가 호출한 이후, 프로세스가 어떻게 행동할 것인가에 달렸다.
 
 

 

 
* Synchronous ( 동기 ) 방식
 
=> 실행하는 주체에서 실행 순서를 맞추기 위해서 제어하는 방식.
=> 작업이 완료되었는지 반복적으로 확인함.
 
 
 
 
* Asynchronous ( 비동기 ) 방식
 
=> 요청한 작업들이 완료되기 전까지 다른 작업들을 처리하는 방식
=> 요청한 작업이 완료되면 피호출자에서 Callback 함수로 알려줌.

 

 

 

 


 

 

 

 

참고 자료