설명 순서는 다음과 같습니다.
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 |