설명 순서는 다음과 같습니다.

1. 유저모드와 커널모드란
2. 시스템콜
3. 인터럽트

1. 유저모드와 커널모드란

   - 유저 모드 : 우리가 개발하는 프로그램이 실행되는 모드. 함부로 시스템의 자원에 침범하지 못하는 모드

   - 커널 모드 : 운영 체제 코드를 실행할 수 있는 모드. 시스템의 전반을 관리하는 연산을 실행할 수 있는 모드. 하드웨어와 관련된 작업을 여기서 직접 수행함 

   - 실행 모드를 두 가지로 나눈 이유 : 시스템을 보호하기 위해. 시스템의 자원에 사용자가 함부로 침범할 경우, 시스템에 심가한 문제가 생길 수 있음. 따라서, 시스템에 관련된 부분이나 하드웨어와 관련된 부분은 커널이 담당하고, 개발자는 커널을 통해서 시스템의 기능이나 하드웨어를 사용할 수 있도록 하는 것임

   - 유저모드 -> 커널모드로 전환되는 때

      ① 프로그램이 시스템에 관련된 기능을 사용하고 싶을 때 -> 시스템 콜을 호출해서 커널모드로 전환

      ② 프로그램 실행 도중, 시스템에서 이벤트가 발생했을 때 -> 하드웨어나 소프트웨어에서 이벤트가 발생했을 때, 인터럽트가 발생하고 커널모드로 전환

   - 유저모드에서 커널모드로 전환되는 과정

      ① 유저모드에서 프로그램 실행

      ② 시스템콜 또는 인터럽트가 발생하면, 커널모드로 전환

      ③ 커널모드에서 먼저 프로세스의 상태를 PCB에 저장

      ④ 커널이 시스템콜 또는 인터럽트를 처리

      ⑤ 처리가 완료되면 다음 실행될 프로세스의 PCB를 통해 CPU상태 복원


2. 시스템콜

   - 프로세스가 시스템의 자원이나 서비스를 사용하고 싶을 때, 운영체제에 요청하는 것을 '시스템콜'이라고 함

   - 운영체제 서비스를 사용하기 위한 인터페이스라고 생각하면 됨

   - ex) 프로세스 제어, 파일 조작, 장치 연결 및 관리 등등


3. 인터럽트

   - 시스템에서 이벤트(일 또는 문제)가 발생해서 처리가 필요할 때 '인터럽트'가 발생하고, 커널 모드에서 이를 처리함

   - 인터럽트는 하드웨어나 소프트웨어 모두 발생하게 됨

   - ex) 프로세스에게 할당된 시간을 다 사용했을 경우 Timer Interrupt가 발생하고, 커널 모드로 전환돼서 context-switching이됨


시스템콜과 인터럽트에 대해 알아볼 수 있었습니다.  

 

'운영체제' 카테고리의 다른 글

동기, 비동기  (0) 2023.08.31
Java에서 동기화 문제 해결  (0) 2023.08.12
동기화  (0) 2023.08.11
페이지 교체 알고리즘  (0) 2023.08.10
Deadlock  (0) 2023.08.08

+ Recent posts