초안 : 2023.04.15
각각의 프로그램에 필요한 자원을 할당하고, 다른 프로그램들이 올바르게 실행되도록 돕는 프로그램이 바로 운영체제이다. 즉 운영체제도 다른 프로그램과 마찬가지로 메모리에 적재되어 실행된다.
다만 운영체제는 컴퓨터가 부팅될 때 메모리 내의 '커널 영역'에 따로 적재되어 실행된다.
커널 영역을 제외한 나머지 영역, 사용자가 이용하는 응용 프로그램이 적재되는 영역을 사용자 영역이라고 한다.
즉, 운영체제는 커널영역에 적재되어 사용자 영역에 적재된 다른 프로그램들에게 자원을 할당하고 이들이 올바르게 실행되도록 돕는다.
예를들어 각 프로그램들이 실행되면 메모리에 명령어들이 올라가게 되는데, 이들이 겹치지 않도록 적당한 공간에 적재해주는 주체가 운영체제이다. 운영체는 실행된 프로그램은 메모리에 올리고, 실행되지 않는 프로그램들은 메모리에서 삭제하며 지속적으로 메모리 자원을 관리한다.
커널
운영체제(OS)는 응용 프로그램들에게 다양한 기능을 제공한다. 즉 서비스가 매우 다양하다.
이러한 서비스 중 특히 중요한 서비스들이 있는데, 이들을 담당하는 부분을 '커널(Kernel)'이라고 한다.
예를들어 하드웨어 자원에 접근하고 조작하는 기능, 프로그램이 올바르고 안전하게 실행되도록 하는 기능(메모리 관리) 등이 있다.
운영체제는 사용자가 실행하는 프로그램이 하드웨어 자원에 직접 접근하는 것을 방지하여 자원을 보호한다.
따라서 응용 프로그램은 자원에 접근하기 위해서 운영체제 도움을 요청한다. 요청을 받은 운영체제는 응용프로그램 대신 자원에 접근하여 요청한 작업을 수행한다.
즉, 응용프로그램이 운영체제의 코드를 실행한다는 뜻이다.
Dual mode (이중 모드)
이러한 과정은 CPU 의 dual mode 로 구현된다. dual mode 란 CPU 가 명령어를 실행하는 모드를 사용자 모드와 커널 모드로 구분하는 방식이다.
1. 사용자 모드는 운영체제 서비스를 제공받을 수 없는 실행 모드이다.
일반적인 응용프로그램들은 사용자모드로 실행되고, 하드웨어 자원에 접근하는 등과 같은 커널 영역의 코드를 실행할 수 없다.
2. 커널 모드는 운영체제 서비스를 제공받을 수 있는 실행 모드이다.
CPU 가 커널 영역의 코드를 실행할 수 있으므로, 자원에 접근하는 등과 같은 모든 명령어를 실행할 수 있다.
CPU의 플래그 레지스터 속 supervisor flag를 통해 어떤 모드로 실행 중인지 알 수 있다.
가령 사용자 모드로 실행되는 프로그램이 하드 디스크에 데이터를 저장하기 위해 운영체제 서비스를 제공받으려면 운영체제에 요청을 보내 커널 모드로 전환되어야 한다. 이때 이 요청을 'System Call (시스템 호출)' 이라고 한다. system call 은 일종의 소프트웨어 인터럽트라고 볼 수 있다.
Reference
- 혼자 공부하는 컴퓨터 구조 + 운영체제, 한빛미디어, 강민철
'SW > Linux (Kernel)' 카테고리의 다른 글
Linux From Scratch 개발 노트 3 - 계정 생성 (0) | 2024.08.28 |
---|---|
Linux From Scratch 개발 노트 2 - Host System (0) | 2024.08.27 |
Linux From Scratch 개발 노트 1 - Introduction (0) | 2024.08.26 |
메모리구조 (0) | 2023.05.19 |
PCB & Context Switching (0) | 2023.05.10 |
댓글