2022. 7. 11. 16:25ㆍLinux Kernel
운영 체제
모든 컴퓨터 시스템에는 운영체제(OS, Operating System)라는 기본적인 프로그램 집합이 들어있고, 이 중에서 가장 중요한 프로그램을 커널(kernel)이라고 함. 커널은 시스템을 부팅할 때 램(RAM)으로 로드되며, 시스템이 동작하는 데 필요한 여러 가지 중요한 절차를 포함함. 커널은 시스템에 있는 모든 것에 핵심적인 능력을 부여하고, 고급 소프트웨어의 여러가지 특징을 결정함.
프로세스
모든 운영체제는 기본적인 추상 개념 중 하나인 프로세스를 활용함. 프로세스는 실행 상태에 있는 프로그램의 인스턴스(instance) 또는 실행 중인 프로그램의 실행 컨텍스트(execution context)라는 말로 정의할 수 있음. 유닉스 계열 운영체제는 프로세스/커널 모델을 채택함. 각 프로세스는 자신이 기계에서 동작하고 있는 유일한 프로세스며, 운영체제 서비스에 독점적으로 접근할 수 있다는 환상을 가짐. 프로세스가 시스템 콜(system call)을 호출할 때 마다(커널에 어떤 요청을 할 때마다) 하드웨어는 특권 모드를 사용자 모드에서 커널 모드로 전환하고, 프로세스는 엄격하게 제한된 목적으로만 커널 코드를 실행하기 시작함. 이런 식으로 운영체제는 프로세스의 실행 컨텍스트 안에서 프로세스의 요청을 처리함. 요청을 완전히 처리하면, 커널 코드는 하드웨어 상태를 사용자 모드로 되돌리고, 프로세스는 시스템 콜 이후에 있는 명령부터 실행을 재개함.
커널구조
대부분의 유닉스 커널은 monolithic이다. 즉 각 커널 계층은 커널 프로그램 하나로 통합되고, 현재 프로세스를 대신하여 커널 모드에서 동작함. 마이크로커널 운영체제는 일반적으로 몇 가지 동기화 원시 함수와 간단한 스케줄러, 프로세스 간 통신 메커니즘을 포함하여 매우 적은 기능만을 커널에 요구. 마이크로커널에서는 몇 가지 시스템 프로세스를 실행하여 메모리 할당이나 장치 드라이버, 시스템 콜 핸들러 등 다른 운영체제 계층에 들어 있는 기능을 구현.
성능을 떨어뜨리지 않고 마이크로커널의 여러 가지 이론적인 장점을 효율적으로 달성하기 위해 리눅스 커널은 모듈(module)을 제공. 모듈은 실행 중 커널에 링크할 수 있는 오브젝트 파일을 말함. 이 오브젝트 코드는 대개 파일시스템, 장치 드라이버, 커널의 상위 계층에 있는 다른 기능을 구현하는 함수의 집합으로 이뤄짐. 모듈은 마이크로커널 운영체제의 외부 계층과 달리 별개의 프로세스로 동작하지 않음. 대신 모듈은 정적으로 링크된 다른 커널 함수와 마찬가지로 현재 프로세스를 대신하여 커널 모드에서 동작.
'Linux Kernel' 카테고리의 다른 글
유닉스 커널 (UNIX Kernel) (0) | 2022.07.11 |
---|---|
유닉스 파일 시스템 UNIX File System (0) | 2022.07.11 |