기술(IT)

커널 (Kernel)

2019. 10. 10.
728x90

커널은 컴퓨터의 운영체제의 핵심인 프로그램으로, 시스템의 모든 것을 제어한다. 소프트웨어의 입력/출력 요청뿐만 아니라 나머지 스타트업도 처리하여 중앙처리장치에 대한 데이터 처리지침으로 변환한다. 대부분 시스템에서 이 프로그램은 시동 시 로드되는 첫 번째 프로그램 중 하나이다. 키보드, 모니터, 프린터와 같은 메모리와 주변기기를 다룬다. 커널은 응용 프로그램 소프트웨어를 컴퓨터의 하드웨어에 연결한다. 커널의 중요 코드는 대개 별도의 메모리 영역에 로딩되는데, 이는 운영 체제의 덜 중요한 다른 부분이나 응용 프로그램 때문에 접근으로부터 보호된다. 커널은 이 보호된 커널 공간에서 프로세스 실행, 하드 디스크와 같은 하드웨어 장치 관리, 인터럽트 처리 등의 작업을 수행한다. 이와는 대조적으로, 브라우저, 워드프로세서, 오디오 또는 비디오 플레이어와 같은 애플리케이션 프로그램은 메모리, 사용자 공간의 별도 영역을 사용한다. 이러한 분리는 사용자 데이터와 커널 데이터가 서로 간섭하여 불안정성과 느림을 초래하는 것을 방지하고, 오작동하는 애플리케이션 프로그램이 전체 운영 체제를 파괴하는 것을 방지한다. 커널의 인터페이스는 낮은 수준의 추상화 계층이다. 프로세스가 커널의 요청을 할 때 이를 시스템 호출이라고 한다. 커널 설계는 이러한 시스템 호출과 자원을 관리하는 방법에 따라 다르다. 단일 커널은 속도를 위해 모든 운영 체제 명령을 동일한 주소 공간에서 실행한다. 마이크로커널은 모듈화를 위해 사용자 공간에서 대부분의 프로세스를 실행한다.

 

시스템 호출 (System calls) 
시스템 호출은 프로세스와 운영 체제 사이의 인터페이스를 제공한다. 컴퓨팅에서 시스템 호출은 프로세스가 정상적으로 실행할 수 있는 권한이 없는 운영 체제의 커널에서 서비스를 요청하는 방법이다. 시스템과 상호작용하는 대부분의 작업에는 사용자 수준 프로세스에서 사용할 수 없는 사용 권한이 필요하며, 예를 들어 시스템에 존재하는 기기로 수행되는 I/O 또는 다른 프로세스와의 통신 형태는 시스템 호출을 사용해야 한다. 시스템 호출이란 애플리케이션 프로그램이 운영체제로부터 서비스를 요청하기 위해 사용하는 메커니즘이다. 그들은 프로세서가 모드를 변경하도록 하는 기계 코드 명령을 사용한다. 예를 들어 감독자 모드에서 보호 모드로 전환하는 경우가 있다. 운영체제가 하드웨어 장치나 메모리 관리 장치에 액세스하는 등의 작업을 수행하는 곳이다. 일반적으로 운영 체제는 운영 체제와 일반 프로그램 사이에 있는 라이브러리를 제공한다. 라이브러리은 정보를 커널에 전달하고 감독자 모드로 전환하는 낮은 수준의 세부사항을 처리한다. 시스템 호출에는 근접, 열기, 읽기, 대기 및 쓰기가 포함된다. 


메모리 관리 (Memory management)
흔히 이 작업의 첫 번째 단계는 가상 주소 지정이며, 대개 호출 및/또는 분할을 통해 이루어진다. 가상 주소 지정을 통해 커널은 주어진 물리적 주소를 다른 주소인 가상 주소로 보이게 할 수 있다. 가상 주소 공간은 프로세스마다 다를 수 있다. 한 프로세스가 특정(가상) 주소에서 액세스하는 메모리는 다른 프로세스가 동일한 주소에서 액세스하는 메모리와 다를 수 있다. 이는 모든 프로그램이 실행 중인 유일한 프로그램인 것처럼 행동할 수 있게 해주며, 따라서 응용프로그램이 서로 충돌하는 것을 방지한다. 커널은 시스템의 메모리에 대한 완전한 접근을 가지고 있으며, 그들이 필요로 하는 대로 이 메모리에 안전하게 접근할 수 있는 프로세스를 허용해야 한다. 많은 시스템에서 프로그램의 가상 주소는 현재 메모리에 없는 데이터를 나타낼 수 있다. 가상 어드레싱으로 제공되는 리디렉션 레이어는 운영체제가 하드 드라이브와 같은 다른 데이터 저장소를 사용하여 메인 메모리(RAM)에 남아야 하는 것을 저장할 수 있게 한다. 그 결과, 운영체제는 프로그램이 물리적으로 사용할 수 있는 메모리보다 더 많은 메모리를 사용할 수 있게 해준다. 현재 RAM에 없는 데이터가 필요할 경우 CPU가 커널로 신호를 보내게 되고, 커널은 비활성 메모리 블록의 내용을 디스크에 쓰고(필요하다면) 프로그램에서 요청한 데이터로 대체함으로써 응답한다. 그런 다음 프로그램이 중지된 시점부터 프로그램을 재개할 수 있다. 이 계획은 일반적으로 수요 호출로 알려져 있다.

 

리소스 관리 (Resource Management) 
자원 관리에 필요한 주요 측면은 실행 도메인의 정의(주소 공간)와 도메인 내의 자원에 대한 접근을 중재하는 데 사용되는 보호 메커니즘이다. Kernels는 동기화 및 프로세스 간 통신(IPC)을 위한 방법도 제공한다. 이러한 구현은 커널 자체 내에 있거나 커널이 실행 중인 다른 프로세스에 의존할 수 있다. 커널은 서로 제공하는 설비에 대한 접근을 제공하기 위해 프로세스 간 통신을 제공해야 하지만 커널은 또한 실행 중인 프로그램에 이러한 설비에 대한 접근을 요청할 수 있는 방법을 제공해야 한다. 커널은 또한 프로세스 또는 스레드 간의 컨텍스트 전환을 담당한다. 


장치 관리 (Device management)
유용한 기능을 수행하려면, 프로세스는 컴퓨터에 연결된 주변 장치에 접근할 필요가 있는데, 이 주변 장치는 장치 드라이버를 통해 커널에 의해 제어된다. 장치 드라이버는 운영 체제가 하드웨어 장치와 상호 작용할 수 있도록 해주는 컴퓨터 프로그램이다. 운영체제에 특정 하드웨어의 제어 및 통신 방법에 대한 정보를 제공한다. 드라이버는 프로그램 어플리케이션에서 중요하고 중요한 부분이다. 드라이버의 설계 목표는 추상화다. 드라이버의 기능은 OS에서 위임한 추상 기능 호출(프로그래밍 호출)을 기기별 통화로 변환하는 것이다. 이론적으로, 장치를 정확하게 적합한 운전과 협력해야 한다. 장치 드라이버는 비디오 카드, 사운드 카드, 프린터, 스캐너, 모뎀 및 LAN 카드와 같은 용도로 사용된다. 기기 드라이버의 일반적인 추상화 수준은 다음과 같다.


LIST

'기술(IT)' 카테고리의 다른 글

컨텍스트 스위치 (Context switch)와 인터럽트(Interrupt)  (0) 2019.10.12
교착상태 (Deadlock)  (0) 2019.10.11
DMA (Direct Memory Access)  (0) 2019.10.09
세마포어(Semaphores)  (0) 2019.10.08
CPU 캐시(CPU Cache) 캐시 계층  (0) 2019.10.07

댓글

추천 글