운영체제는 왜 모드를 두 개로 분리하는지?
시스템 보안 강화
- 응용 프로그램이 운영체제의 중요한 부분을 수정하거나 접근 할 수 없도록 보호한다.
- 악의적인 프로그램이 시스템 자원을 남용하는 것을 방지한다.
시스템 안정성 확보
- 사용자 프로그램의 오류가 전체 시스템에 영향을 주지 않도록 한다.
- 각 프로그램은 독립적인 공간에서 실행되어 다른 프로그램에 영향을 주지 않는다.
자원 관리 효율성
- 운영체제가 모든 하드웨어 자원을 중앙에서 관리하고 조정 할 수 있게 한다.
- 여러 프로그램이 제한된 자원을 효율적으로 공유 할 수 있게 한다.
- 비록 자원이 무한하다고 할지언정 효율적 공유는 의미가 있다.
추상화 제공
- 사용자는 복잡한 하드웨어 구조를 이해하지 않고도 시스템 자원을 이용 할 수 있다.
- 프로그래머는 운영체제가 제공하는 시스템 콜과 같은 인터페이스를 통해 하드웨어에 접근 할 수 있다.
유저 모드
- 일반 응용 프로그램이 실행되는 모드이다. 하드웨어와 시스템 자원에 직접 접근 불가하다.
- 시스템 자원이 필요할경우 반드시 시스템 콜을 통해 커널 모드로 전환해야한다.
- 각 응용 프로그램은 독립적인 가상 주소 공간을 갖는다.
- 하나의 프로그램이 충돌해도 다른 프로그램이나 운영체제는 영향을 받지 않는다.
커널 모드
- 운영체제의 핵심 부분이 실행되는 모드이다.
- 모든 시스템 메모리와 하드웨어 자원에 직접 접근 할 수 있다.
- 모든 CPU 명령어를 사용 할 수 있다.
- 커널 모드에서 실행되는 모든 코드는 단일 가상 주소 공간을 공유한다.
- 커널 모드에서 오류가 발생하면 운영체제 전체가 충돌 할 수 있다.
모드 전환 과정
유저 모드와 커널 모드 간의 전환은 다음과 같이 이루어 질 수 있다.
- 프로그램이 유저 모드에서 실행 중에 시스템 콜, 인터럽트, 라이브러리 함수 등의 호출로 인해 커널 모드로 전환된다.
- 커널 모드로 전환되면, 운영체제는 프로그램의 현재 CPU 상태를 저장한다.
- 커널 모드에서 필요한 작업을 수행한 후, 저장해둔 CPU 상태를 복원한다.
- 처리가 완료되면, 다시 유저 모드로 돌아가 프로그램 실행을 계속 진행한다.
'컴퓨터 이론' 카테고리의 다른 글
운영체제 : 레지스터와 메모리의 차이 (0) | 2025.05.20 |
---|---|
[CS:APP] 6 : 메모리 계층 구조 (1) | 2025.04.29 |
가상 메모리 : 파편화와 Fit 전략 (0) | 2025.04.28 |
demand-zero memory (0) | 2025.04.28 |
동적 메모리 할당 (heap, sbrk, malloc, free) (0) | 2025.04.28 |