IT 지식/운영체제

컴퓨터의 구조 (H/W, Kernel mode, User mode)

Security Engineer 2024. 8. 18. 00:12

컴퓨터는 3층집으로 되어 있다.

그림1- 컴퓨터의 구조

  • 컴퓨터는 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 제어의 순서)

  1. printf 함수를 이용해서 API를 Call 한다.
  2. API 내부에서 장치를 추상화한 파일(인터페이스)을 통해서 정보가 밑으로 내려간다.
  3. User mode에서 Kernel mode로 진입할 때 새로운 코드가 실행된다. → System Call (진입점에 있는 코드)
  4. 구성요소가 작동하고 System Call이 이루어지면서 Device Driver를 제어하기 시작
  5. Device Driver에서 Interrupt를 요청 → Interrupt Request(IRQ), 고유 번호가 있다.
  6. Interrupt가 발생하면서 CPU와 Device가 통신을 하게 된다. → Hello World 전달
  7. Device(Video card)에 변화가 생기면서 Device에 연결된 모니터에 Hello World가 렌더링된다. (출력 끝)
  8. Hello World 전달된 후, Device에서 Interrupt가 발생하면서 Driver로 신호가 간다. (종료 신호)
  9. Device Driver가 구성요소에 System Call 한 내용이 종료되었다는 것을 전달한다.
  10. 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

 

 

 

 

 

 

 

 

 

 

참고

https://www.inflearn.com/course/%EA%B3%B0%EC%B1%85-%EC%89%BD%EA%B2%8C-%EB%B0%B0%EC%9A%B0%EB%8A%94-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C