인터럽트와 시스템 콜 & 유저 모드와 커널 모드

KIM YONG GU·2023년 10월 15일
0

쉬운코드

목록 보기
17/18

유저모드(User mode)와 커널모드(Kernel mode) 설명

(1) 유저 모드

  • 우리가 개발하는 프로그램은 일반적으로 유저 모드에서 실행

(2) 유저모드 -> 커널 모드

  • 프로그램 실행 중에 인터럽트(interrupt)가 발생하거나 시스템 콜(system call)을 호출하게 되면 커널 모드로 전환

(3) 커널 모드

  • 프로그램의 현재 CPU 상태를 저장
  • 커널이 인터럽트나 시스템 콜을 직접 처리 즉, CPU에서 커널 코드가 실행됨
  • 처리가 완료되면 중단됐던 프로그램의 CPU 상태를 복원

(4) 커널 모드 -> 유저 모드

다시 통제권을 프로그램에게 반환

(5) 유저 모드

프로그램이 이어서 실행됨

커널모드 존재이유

  • 운영체제의 핵심
  • 시스템 전반을 관리/감독하는 역할
  • 하드웨어와 관련된 작업을 직접 수행
  • 시스템을 보호하기 위해 필요함

인터럽트(Interrupt)

  • 시스템에서 발생한 다양한 종류의 이벤트 혹은 그런 이벤트를 알리는 메커니즘
  • 인터럽트가 발생하면 CPU에서는 즉각적으로 인터럽트 처리를 위해 커널 코드를 커널 모드에서 실행

시스템콜(System Call)

  • 프로그램이 OS 커널이 제공하는 서비스를 이용하고 싶을 때 시스템 콜을 통해 실행
  • 시스템 콜이 발생하면 해당 커널 코드가 커널 모드에서 실행

시스템 콜 & 인터럽트 예제 : 파일 read

프로그래밍 언어와 시스템 콜

  • 하드웨어 혹은 시스템 관련 기능은 어떤 프로그램이라도 반드시 시스템 콜을 통해서만 사용 가능.
  • 하지만 보통 우리는 개발할 때 직접 OS 시스템 콜을 사용한 적이 없음.
  • 그럼에도 우리는 지금까지 파일 I/O, 네트워크 I/O, 프로세스/스레드 관련 작업을 해왔다.
  • 어떻게 이게 가능했던 것일까?
  • 이것은 우리가 사용하는 프로그래밍 언어들이 시스템 콜을 포장(Wrapping)하여 간접적으로 사용할 수 있도록 제공했기 때문임

profile
Engineer, Look Beyond the Code.

0개의 댓글

관련 채용 정보