Akashic Records

kernel 본문

Infrastructure

kernel

Andrew's Akashic Records 2018. 4. 18. 14:46
728x90

커널은 컴퓨터 운영체계의 가장 중요한 핵심으로서, 운영체계의 다른 모든 부분에 여러 가지 기본적인 서비스를 제공한다. 비슷한말로는 '뉴클리어스'라는 용어가 있다. 커널은 쉘과 대비될 수 있는데, 쉘은 운영체계의 가장 바깥부분에 위치하고 있으면서, 사용자 명령에 대한 처리를 담당한다. 커널과 쉘이라는 용어는 IBM 메인프레임을 제외하고, 유닉스와 기타 몇몇 운영체계에서 자주 사용된다.

일반적으로, 커널에는 종료된 입출력 연산 등, 커널의 서비스를 경쟁적으로 요구하는 모든 요청들을 처리하는 인터럽트 처리기와, 어떤 프로그램들이 어떤 순서로 커널의 처리시간을 공유할 것인지를 결정하는 스케줄러, 그리고 스케줄이 끝나면 실제로 각 프로세스들에게 컴퓨터의 사용권을 부여하는 수퍼바이저 등이 포함되어 있다. 커널은 또한, 메모리나 저장장치 내에서 운영체계의 주소공간을 관리하고, 이들을 모든 주변장치들과 커널의 서비스들을 사용하는 다른 사용자들에게 고루 나누어주는 메모리 관리자를 가지고 있다. 커널의 서비스는 운영체계의 다른 부분이나, 흔히 시스템 호출이라고 알려진 일련의 프로그램 인터페이스들을 통해 요청된다.

커널을 유지하기 위한 코드는 지속적으로 사용되기 때문에, 보통 커널은 자주 사용되지 않는 운영체계의 나머지 부분에 의해 덮어씌워져 훼손되지 않도록, 보호된 메모리 영역에 적재된다.

커널을 바이오스와 혼동하면 안된다.


BIOS (basic input/output system) - 기본 입출력 시스템

바이오스는 사용자가 PC를 켜면 곧바로 시작되는 프로그램이며, 또한 하드디스크, 비디오 어댑터, 키보드, 마우스 및 프린터 등과 같은 주변장치와 컴퓨터 운영체계 간의 데이터 흐름을 관리하기도 한다.

바이오스는 컴퓨터의 없어서는 안될 핵심부분으로서 컴퓨터와 함께 딸려온다 (운영체계가 제작자나 공급자에 의해 미리 설치되거나, 사용자에 의해 설치될 수 있는 것과는 대비된다). 바이오스는 EPROM 칩에 들어있으며, 마이크로프로세서에 의해 사용될 수 있도록 만들어져 있다.

사용자가 컴퓨터를 켜면, 마이크로프로세서는 EPROM의 항상 같은 장소에 위치하고 있는 바이오스 프로그램에게 통제권을 넘긴다. 바이오스가 컴퓨터를 부팅시킬 때, 제일 먼저 모든 부착물이 제위치에 있으며 또한 작동 가능한 상태인지를 확인한 뒤, 운영체계를 하드디스크나 디스켓으로부터 읽어 램에 적재시킨다.

바이오스가 있는 덕분에, 운영체계와 응용프로그램의 입장에서는 컴퓨터에 부착되어 있는 각종 입출력장치들에 대해 정확하고 자세한 내용을 이해해야 하는 부담으로부터 해방될 수 있다. 주변장치가 바뀌면 바이오스 프로그램만 변경하면 된다. 때로 이러한 변경은 시스템 셋업에서 할 수 있으며, 이 경우 사용자가 쓰고 있는 운영체계나 응용프로그램은 변경할 필요가 없다.

바이오스는 이론적으로 항상 마이크로프로세서와 입출력 장치간의 중간 매개체 입장에 있지만, 비디오카드와 같이 좀더 빠른 데이터 흐름이 요구되는 주변장치의 경우에는 바이오스가 데이터를 메모리로 직접 보냄으로써 효과적으로 조정할 수도 있다.


Kerner의 특징

  • 메모리, 디스크, 네트워크 카드 등과 같은 하드웨어 관리

  • 시스템 가동 시 Boot program에 의해 구동

  • 디스크에 파일시스템 형식으로 존재하고 필요시 시스템 콜 되어 처리됨


Kernel의 종류

  • 모노리딕 커널(monolithic kernel) - 하드웨어에 대해 풍부하고 강력한 추상화를 제공한다. 전통적 운영체제 설계 방법으로 프로세스 관리, 메모리 관리, 파일시스템 같은 커널의 모든 기능들이 하나의 커널에 들어가 있고 모두 커널 모드에서 실행되는 커널

  • 마이크로커널(microkernel) - 하드웨어 추상에 대한 간결한 작은 집합을 제공하고 더 많은 기능은 서버라고 불리는 응용 소프트웨어를 통해 제공한다. 커널이 가져야 하는 핵심적인 기능만을 구현한 최소커널로써 나머지는 서비스 프로세스로 이루어지는 커널

  • 하이브리드 커널(hybrid kernel) - 성능 향상을 위해 추가적인 코드를 커널 공간에 넣은 점을 제외하면 많은 부분은 순수 마이크로커널과 비슷하다. 수정 마이크로커널이라고도 한다.

  • 나노커널(nanokernel) - 실질적으로 모든 서비스를 책임진다.

  • 엑소커널(exokernel) - 낮은 수준의 하드웨어 접근을 위한 최소한의 추상을 제공한다. 전형적으로 엑소커널 시스템에서는 커널이 아닌 라이브러리가 모노리딕 커널 수준의 추상을 제공한다.


모노리딕 커널과 마이크로 커널 비교

구분

모노리딕

마이크로

장점

- 구현이 간단함

- 시스템 자원을 보다 효율적으로 관리

- 효율성이 높음

- 핵심 기능과 작은 서버모듈로 나누어 설계됨

- 기능 확장 및 타 시스템 재사용이 용이함

- 커널 문제시 문제 모듈만 교체 가능

단점

- 다양한 환경의 시스템에 포팅이 어려움

- 커널의 크기가 상대적으로 커짐

- 서버에 메시지 전달 방식의 접근이 태스킹에 많은 오버헤드 초래

- 자원의 효율적 이용도가 낮아짐

- 성능 저하 문제 대두

사용 OS

- Unix System V

- Solaris, AIX, Linux 등

- Mash OS, Windows NT


Kernel의 향후 전망

  • 마이크로 커널의 단점인 IPC의 성능 저하문제 해결이 급 선무

  • 마이크로 커널의 문제점을 보완하기 위해 컴포넌트 프레임 워크를 마이크로 커널에 응요하는 연구가 활발함.

  • Embedded OS에 맞는 커널 연구가 활발히 진행될 것임


728x90

'Infrastructure' 카테고리의 다른 글

Lx 스위치(EtherNet Switch)  (0) 2018.04.18
LBS(Location Based Service)  (0) 2018.04.18
IPv6(internet protocol version 6)  (0) 2018.04.18
Internetworking  (0) 2018.04.18
Infiniband  (0) 2018.04.18
Comments