* 하드웨어 ( 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 함수로 알려줌.
참고 자료
'운영체제 & 컴퓨터구조' 카테고리의 다른 글
[OS] #5. 프로세스 ( Process ) 와 쓰레드 ( Thread ) (0) | 2022.09.04 |
---|---|
[OS] #4. CPU ( 중앙 처리 장치 ) (0) | 2022.09.02 |
[OS] #3. DMA ( Direct Memory Access ) (0) | 2022.09.02 |
[OS] #2. Interrupt ( 인터럽트 ) (0) | 2022.08.31 |
[OS] #0. 백그라운드 프로세스 ( Background Process ) (0) | 2022.08.30 |