유저 모드, 커널 모드, 인터럽트 , 시스템 콜의 의미, 프로그래밍 언어와의 관계

강민승·2023년 4월 13일
0

User mode & Kernel mode

User mode

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

Kernel mode

프로그램의 현재 cpu 상탱를 저장함

커널이 인터럽트나 시스템 콜을 직접 처리, 즉 cpu에서 커널 모드가 실행됨.

처리가 완료되면 중단됐던 프로그램의 cpu 상태를 복원

커널 ( kernel)

운영체제의 핵심

시스템의 전반을 관리/감독하는 역할

하드웨어와 관련된 작업을 직접 수행

커널 모드를 만든 이유 - 시스템이 안정적으로 실행하기 위해, 즉, 시스템을 보호하기 위해

만약 커널 모드가 없으면 우리가 개발한 프로그램이 함부로 하드웨어를 점유하고 다른 프로세스가 영향을 받게 되고 그러다가 전체 시스템이 붕괴될 수 있기 때문..

Interrupt

시스템에서 발생한 다양한 종류의 이벤트 혹은 그런 이벤트를 알리는 메커니즘

인터럽트 종류

  • 전원(power) 에 문제가 생겼을 때
  • I/O 작업이 완료됐을 때
  • 시간이 다 됐을 때 (timer 관련)
  • 0 으로 나눴을 때
  • 잘못된 메모리 공간에 접근을 시도할 때
  • .
  • .
  • 적은 것 중 밑에서 두가지는 프로그램에서 발생해서 trap 이라고 불리기도 함

더 많음!

인터럽트가 발생하면 cpu에서는 즉각적으로 인터럽트 처리를 위해 커널 코드를 커널 모드에서 실행

System call

프로그램이 os 커널이 제공하는 서비스를 이용하고 싶을 때 시스템 콜을 통해 실행

시스템 콜의 종류

  • 프로세스/스레드 관련
  • 파일 I/O 관련
  • 소켓 관련
  • 장치 관련
  • 프로세스 통신 관련

시스템 콜이 발생하면 해당 커널 코드가 커널 코드 모드에서 실행

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

하드웨어 혹은 시스템 관련 기능은 어떤 프로그램이라도 반드시 시스템 콜을 통해서만 사용 가능

→ 하지만 보통 개발할 때 직접 OS 시스템 콜을 사용한 적이 없지만 파일 I/O, 네트워크 I/O, 프로세스/스레드 관련 할 수 있음.

—> 우리가 사용하는 프로그래밍 언어들이 시스템 콜을 포장하여 간접적으로 사용할 수 있도록 제공했기 때문

native 가 붙으면 운영체제를 뜻하는게 대부분임.

java native interface 의 os를 통해 system call을 하게 되는 것이다.

출처 | 쉬운코드 유튜브

profile
Step by Step goes a long way. 꾸준하게 성장하는 개발자 강민승입니다.

0개의 댓글