OS

Kernel

Raccoon2125 2022. 5. 25. 19:57

OS Service 도식화

 - 커널

 : OS의 핵심 프로그램으로 각종 프로그램 실행 및 서비스 제공을 위한 중추. OS 가장 밑단에서 작동되며, 프로세스 제어 및 자원 할당, 메모리 제어, 시스템 콜 등을 수행하는 영역.

 

1. Monolithic Kernel

 - 단일형 커널

 - I/O, Network, Device Drive 등 OS 관련 기능을 커널 모드에서 동작하도록 메모리에 적재, 실행하는 기법

 - 적재된 메모리주소 간의 오버헤드가 적어 커뮤니케이션/통신에서 유리

 

2. Micro Kernel

 - OS 관련 기능 중 일부를 커널 공간에서 독립적으로 수행하도록 분리시키는 기법

 - 분리된 기능은 해당 역할 수행이 가능하도록 서버를 구축하여 동작하고 있음.

 - 서버를 추가하면 다른 기능도 추가가 가능하므로 시스템을 더욱 견고하게 만들 수 있음.

3. Dual Mode

 - 목적 : 사용자 OS 및 타 프로세스 보호

 - 사용자와 OS는 시스템 자원을 공유하기 때문에 이에 대한 규제가 필요함.

 - 2가지 모드(User, Kernel)를 번갈아가며 실행

   * 프로그램 실행 시 메모리영역은 User Address Space 및 Kernel Address Space로 분리됨.

   1) Kernel mode (Supervisor / Protected Mode)

     : 시스템 전체 접근 권한 보유, 모든 CPU 명령 실행

   2) User mode

     : 할당된 메모리 영역 외의 타 프로세스 혹은 kernel 메모리 영역에 침입 불가. → raise Exception

   (단적인 예시로, exe 파일의 어셈블리어를 직접 수정하여 프로그램 내부를 침투하거나 치명상을 입힐 수 있음. 이를 대비하여 User mode를 설정함으로써 범위를 초과하여 접근을 시도할 경우 Exception을 호출함.)

 - User mode → Kernel mode

   1) 시스템콜 함수 호출(ex. open, close, read, write)

     ※ 표준 라이브러리 함수 / 시스템콜 함수 차이점 : 커널 영역 진입 여부

   2) Interrupt Handler 실행

     (ex) 오류 발생 시 Exception 호출 → Interrupt Handler 실행 → Kernel mode로 진입하여 프로세스 kill