패스트캠퍼스 컴퓨터 공학자 따라잡기 온라인 완주반
운영체제(이준희 님) 파트를 수강하며 공부한 내용을 정리한 자료입니다.
CPU도 권한 모드라는 것을 가지고 있다.
- 사용자 모드 (user mode by applications)
- 커널 모드 (kernel mode by OS): 특권 명령어 실행과 원하는 작업 수행을 위한 자원 접근을 가능하게 하는 모드
kernel:
1. (견과류 및 씨앗의) 알맹이
2. (사상 및 주제의) 핵심
shell:
1. (달걀, 견과류 등의 딱딱한) 껍데기
2. 고둥 껍데기 모양의 것
그림 출처: 위키피디아
위 그림과 같이 kernel은 알맹이라는 사전적 정의처럼 가장 안쪽에 있어 시스템에 대한 가장 많은 권한을 가지고 있고, shell은 껍데기라는 의미처럼 가장 바깥에 있어 운영체제가 가지고 있는 기능을 활용하기 위해서는 요청을 보내야 한다.
사용자 모드는 응용 프로그램이 사용하며, 커널 모드는 OS가 사용하는 것이다.
응용 프로그램은 CPU Ring에서 가장 바깥에 있다. 커널 모드에서만 실행 가능한 운영 체제의 기능들이 있는데, 커널 모드로 실행하려면 반드시 시스템 콜을 거쳐야 한다. 이러한 시스템 콜은 운영체제가 제공한다.
이렇듯 사용자 모드와 커널 모드로 나누어져 있기 때문에 함부로 응용 프로그램이 전체 컴퓨터 시스템을 헤치지 못하는 것이다.
cf) 우리가 익히 알고 있는 응용 프로그래머들은 사용자 프로그램을 만드는 사람들이며, 시스템 프로그래머들은 운영 체제 및 시스템 프로그램을 만드는 사람들이다.
- 운영체제는 시스템 콜을 제공
- 프로그래밍 언어별로 운영체제의 기능을 활용하기 위해 시스템 콜을 기반으로 API 제공
- 응용 프로그램은 운영체제 기능 필요 시, 해당 API를 사용해서 프로그램을 작성
- 응용 프로그램이 실행되서 운영체제 기능이 필요한 API를 호출하면, 시스템 콜이 호출되고 커널 모드로 변경되어 OS 내부에서 해당 명령이 실행되고 다시 응용 프로그램으로 돌아간다.