컴퓨터는 3층집으로 되어 있다.
- 컴퓨터는 3개 계층으로 구성되어 있다. → H/W, S/W(Kernel, User)
- H/W = Physical
- S/W = Logical ≒ Virtual
- CPU 64bit, OS 64bit = 64bit Platform
- 운영체제(OS)는 소프트웨어다. → MS Word와 같다.
- OS는 위로는 Application을 서포트한다. (잘 작동하도록 도와줌)
- OS는 밑으로는 하드웨어를 제어/관리 한다.
- Interrupt = 방해(알람), 컴퓨터와 주변기기가 통신(I/O)을 할 때 마다 Interrupt가 발생한다.
- I/O(입출력) = Read(읽기), Write(쓰기)
C언어 printf 함수 사용하여 Hello World 출력 시 순서 (OS 제어의 순서)
- printf 함수를 이용해서 API를 Call 한다.
- API 내부에서 장치를 추상화한 파일(인터페이스)을 통해서 정보가 밑으로 내려간다.
- User mode에서 Kernel mode로 진입할 때 새로운 코드가 실행된다. → System Call (진입점에 있는 코드)
- 구성요소가 작동하고 System Call이 이루어지면서 Device Driver를 제어하기 시작
- Device Driver에서 Interrupt를 요청 → Interrupt Request(IRQ), 고유 번호가 있다.
- Interrupt가 발생하면서 CPU와 Device가 통신을 하게 된다. → Hello World 전달
- Device(Video card)에 변화가 생기면서 Device에 연결된 모니터에 Hello World가 렌더링된다. (출력 끝)
- Hello World 전달된 후, Device에서 Interrupt가 발생하면서 Driver로 신호가 간다. (종료 신호)
- Device Driver가 구성요소에 System Call 한 내용이 종료되었다는 것을 전달한다.
- Read할 것이 있으면 추가로 Read 진행, 없으면 종료. (함수 리턴)
위 통신 과정에서 프로세스의 상태에 따라서 I/O 방식의 차이가 있다.
Blocking I/O → API를 호출한 프로세스의 상태가 Wait 인 경우
Non-Blocking I/O → API를 호출한 프로세스의 상태가 Wait가 아닌 경우 (다른 일을 하고 있음)
결론
- 컴퓨터는 3층집이다. → H/W, S/W(Kernel, User)
- Interrupt는 컴퓨터와 주변기기가 통신할 때 발생한다.
- Interrupt를 요청 = IRQ(Interrupt Request)는 고유번호가 있다. → Device 마다 다르다.
- printf = API, API는 Kernel에서 실질적인 동작이 수행되도록(입출력이 발생하도록) 역할을 한다. → 이때 수행되는 함수를 System Call 이라 한다.
※ IRQ 확인 방법: Window + R → msinfo32 검색 → 하드웨어 리소스 → IRQ
참고
'IT 지식 > 운영체제' 카테고리의 다른 글
프로세스와 스레드 (0) | 2024.08.23 |
---|---|
CPU 예측이 가져오는 문제점(멜트다운, 스펙터) (0) | 2024.08.22 |
CPU와 캐시 메모리 (1) | 2024.08.21 |
DMA와 고성능 소켓 (0) | 2024.08.20 |
인터럽트와 DirectX (0) | 2024.08.19 |