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 |
댓글