본문 바로가기
야미스터디/OS

[OS] 인터럽트와 시스템 콜

by 의정부핵꿀밤 2022. 8. 24.
728x90

https://www.youtube.com/watch?v=v30ilCpITnY 

위 영상을 보며 공부한 내용을 정리한 글입니다!


🎭 User mode & Kernel mode

1) User mode

  • 우리가 개발하는 프로그램은 일반적으로 User mode에서 실행된다

 

2) User mode -> Kernel mode

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

 

3) Kernel mode

  • 방금 전까지 User mode에서 실행되고 있던 프로그램의 현재 CPU 상태를 저장한다
  • 커널이 인터럽트나 시스템 콜을 직접 처리한다 
  • 즉, CPU에서 커널 코드가 실행된다
  • 처리가 완료되면 중단됐던 프로그램의 CPU 상태를 복원한다

 

4) Kernel mode -> User mode

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

 

5) User mode

  • 중단되었던 프로그램을 이어서 실행한다

 

 

 

 

Kernel (커널)

  • 운영체제의 핵심이라고 할 수 있다
  • 시스템의 전반을 관리 및 감독하는 역할을 한다
  • 하드웨어와 관련된 작업을 직접 수행한다

 

 

Kernel mode를 만든 이유

  • 시스템을 보호하기 위해서!
  • 만약 커널 모드가 없는 경우, 우리가 개발한 프로그램이 함부로 하드웨어를 점유하거나 접근해서 다른 프로세스에게까지 영향을 끼칠 수 있다
  • 따라서 이를 방지하고 시스템을 보호하기 위해 커널 모드가 만들어졌다!

 

 

 

 

 

Interrupt (인터럽트)

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

 

 

인터럽트의 종류

  • 전원(power)에 문제가 생겼을 때
  • I/O 작업이 완료됐을 때
  • 시간이 다 됐을 때 (timer 관련)
  • 0으로 나눴을 때
  • 잘못된 메모리 공간에 접근을 시도할 때
🎇 아래의 2가지는 프로그램 레벨에서 발생하는 인터럽트로, trap이라고 불리기도 한다

 

 


System call (시스템 콜)

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

 

 

시스템 콜의 종류

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

 

 

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

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

'야미스터디 > OS' 카테고리의 다른 글

[OS] 커널 (Kernel) 📌  (0) 2022.08.26
[OS] 시스템 콜 (System Call) 📌  (0) 2022.08.24
[OS] Critical Section 📌  (0) 2022.08.05
[OS] 세마포어와 뮤텍스 📌  (0) 2022.07.24
[OS] 교착 상태 (Dead Lock) 📌  (0) 2022.07.21

댓글