New Immissions/Updates:
boundless - educate - edutalab - empatico - es-ebooks - es16 - fr16 - fsfiles - hesperian - solidaria - wikipediaforschools
- wikipediaforschoolses - wikipediaforschoolsfr - wikipediaforschoolspt - worldmap -

See also: Liber Liber - Libro Parlato - Liber Musica  - Manuzio -  Liber Liber ISO Files - Alphabetical Order - Multivolume ZIP Complete Archive - PDF Files - OGG Music Files -

PROJECT GUTENBERG HTML: Volume I - Volume II - Volume III - Volume IV - Volume V - Volume VI - Volume VII - Volume VIII - Volume IX

Ascolta ""Volevo solo fare un audiolibro"" su Spreaker.
CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
커널 (컴퓨터) - 위키백과

커널 (컴퓨터)

위키백과 ― 우리 모두의 백과사전.

컴퓨터커널(kernel)은 운영 체제의 핵심이다. 운영 체제의 다른 모든 부분에 여러 가지 기본적인 서비스를 제공한다. 커널은 운영 체제의 일부분으로서 컴퓨터의 하드웨어와 다양한 프로세스(프로세스는 하나의 실행 단위가 되는 컴퓨터 프로그램이다.)의 보안 접근을 책임지는 소프트웨어이다. 시스템의 자원은 제한되어 있지만 프로그램은 많기 때문에 커널은 한 프로그램이 언제 얼마큼 자원을 사용해야 할지 결정해야 하고 이것을 스케줄링이라 부른다. 같은 종류의 컴포넌트에 대해 다양한 하드웨어 디자인이 가능하기 때문에 하드웨어에 직접 접근하는 것은 문제를 매우 복잡하게 만들 수 있다. 일반적으로 커널은 운영 체제의 복잡한 내부를 감추고 깔끔하고 일관성있는 인터페이스를 하드웨어에 제공하기 위해 몇 개의 하드웨어 추상화(같은 종류의 장비에 대한 공통적인 명령어의 집합)들로 구현된다. 이 하드웨어 추상화는 프로그래머가 여러 장비에서 작동하는 프로그램을 개발하는 것을 돕는다. 하드웨어 추상화 계층(HAL)은 제조사의 장비 명세에 대한 특정한 명령어를 제공하는 소프트웨어 드라이버에 의지한다.

목차

[편집] 개관

운영 체제 커널은 컴퓨터 수행에 필수적인 것은 아니다. 프로그램은 어떤 하드웨어 추상화나 운영 체제의 지원을 받지 않고 컴퓨터만으로 읽어 들어져서 실행될 수 있다. 이것은 초기 컴퓨터들의 일반적인 운영 방법이었고 다른 프로그램을 실행할 때는 컴퓨터를 다시 켜고 다시 읽어들였다. 그 결과 로더와 디버거 같은 작은 프로그램들이 으로부터 읽어들일 때나 실행 중에 프로그램의 중심에 남게 되었고 그들이 초기 운영 체제 커널의 기초가 되었다.

커널은 크게 네 분류로 나눌수 있다.

  • 모노리딕커널(monolithic kernel) - 하드웨어에 대해 풍부하고 강력한 추상화를 제공한다.
  • 마이크로커널(microkernel) - 하드웨어 추상에 대한 간결한 작은 집합을 제공하고 더 많은 기능은 서버라고 불리는 응용 소프트웨어를 통해 제공한다.
  • 하이브리드커널(hybrid kernel) - 성능 향상을 위해 추가적인 코드를 커널 공간에 넣은 점을 제외하면 많은 부분은 순수 마이크로커널과 흡사하다. 수정 마이크로커널이라고도 한다.
  • 나노커널(nanokernel) - ....
  • 엑소커널(exokernel) - 저 수준의 하드웨어 접근을 위한 최소한의 추상을 제공한다. 전형적으로 엑소커널 시스템에서는 커널이 아닌 라이브러리가 모노리딕 커널 수준의 추상을 제공한다.

[편집] 모노리딕커널

모노리딕커널의 구조
모노리딕커널의 구조

모노리딕커널은 하드웨어 위에 고수준 가상 층을 정의한다. 고수준 가상 층은 기본 연산 집합과 관리자 모드에 작동하는 모듈인 프로세스 관리, 동시성, 메모리 관리등의 운영 체제 서비스 구현을 위한 시스템 콜으로 되어 있다.

이 연산들을 제공하는 모든 모듈이 전체로부터 분리되어 있더라도 모든 모듈이 같은 주소 공간에서 실행되기 때문에 코드의 집적도는 매우 조밀하며 수정하기 어렵고 한 모듈의 버그는 전체 시스템을 멈추게 할 수 있다. 그러나 구현이 신뢰할 수 있을 정도로 완성되면 컴포넌트의 내부 집적이 내부의 시스템 이용을 효과적이게 하여 좋은 모노리딕 커널은 높은 효율을 보인다. 모노리딕 커널의 지지자들은 코드가 부정확한지 그런 코드(부정확한 코드)가 커널에 포함되었는지 확인할 수 있고 그것은 마이크로커널에 비해 미세한 우위에 있다고 주장한다.

리눅스, FreeBSD, 솔라리스와 같은 최신의 모노리딕커널은 실행 모듈을 실시간으로 읽어들일 수 있다. 실시간으로 실행 모듈을 읽는 특징은 커널이 허용하는 범위 내에서 손쉽게 확장할 수 있게 커널공간의 코드의 양을 최소한으로 유지시켜준다.

마이크로소프트 윈도우즈 NT 시리즈(NT, 2000, XP, 2003)는 초창기에는 하이브리드커널이었으나 후기 버전은 모노리딕커널로 변경되었다. 윈도우즈 NT 시리즈는 상위의 서비스들을 NT executive이라는 서버로 구현하였다. Win32 특성은 처음에는 사용자 모드의 서버 형태로 구현되었으나, 최근 버전에서는 관리자 주소 영역으로 이동하였다. 다양한 서버들이 로컬 프로시저 콜(LPC: Local Procedure Call)이라 불리는 주소 영역간 매커니즘을 통해 통신하며, 성능을 최적화하기 위해 공유 메모리를 이용한다.

모노리딕 커널을 사용한 운영 체제는 아래과 같다.


[편집] 마이크로커널

마이크로커널의 구조
마이크로커널의 구조

마이크로커널은 하드웨어 위에 매우 간결한 추상화를 정의한다. 기본 연산 집합과 운영 체제 서비스를 구현한 쓰래드 관리, 주소 공간, 프로세스간 통신의 작은 시스템 콜으로 구성되어 있다. 일반적으로 커널이 제공하는 네트워킹과 같은 다른 서비스들은 사용자 공간 프로그램인 서버로 구현한다.

운영 체제는 서버를 다른 일반적인 프로그램처럼 간단히 시작하고 끌 수 있다. 예를 들어 네트워킹 지원이 필요없는 작은 시스템에서는 간단히 안 켜면 된다. 이럴 경우 전통적인 시스템에서는 재컴파일이 필요했고 일반 사용자의 능력 밖의 일이다. 이론적으로 마이크로커널에서 시스템은 더 안정적이다. 서버가 중단될 때 커널의 충돌이 아니기 때문에 단 하나의 프로그램만 내려버리면 된다.

그러나 서버가 실패한 후 시스템 상태도 잃어버릴 경우 응용프로그램이 계속 수행되는 것은 그 응용프로그램이 막 복사된 다른 서버를 이용하게 되더라도 보통은 매우 힘들다. 예를 들어 TCP/IP 연결을 요구하는 (이론적인) 서버가 재시작이 된다면 응용 소프트웨어는 연결이 "끊어졌다."라고 말하고 서버의 새 인스턴스를 찾아서 다시 연결한다. 그러나 파일과 같은 다른 시스템 객체는 이런 편리한 의미론이 없다. 이런 편리를 신뢰할 수 없고 멋대로 이용할 수 없다. 기록할 정보들은 모두 이전에 보관해야 한다. 서버 간의 하나의 서버를 재시작할 때 중요 상태를 보호하기 위해 트랜잭션, 복제, 대조점의 데이터베이스 기술이 요구된다.

일반적으로 마이크로커널은 전통적인 디자인의 수행을 잘못하고 때로는 극적이다. 이유는 응용과 서버 간의 자료 교환을 위해 커널을 출입하는 문맥 전환 때문이다. 주의 깊은 조율이 오버헤드를 극적으로 줄여줄 것으로 믿어져 왔으나 90년대 중반부터 대부분의 연구원들은 시도를 포기했다. 최근에 새 마이크로커널은 성능을 최우선으로 설계하며 이 문제를 넓은 부분에서 다루었다. 그러나 현재 운영 체제 시장은 자기 몸 사리며 마이크로커널 설계에 소극적이다.

마이크로커널과 마이크로커널에 기반한 운영 체제의 예

  • AmigaOS
  • Amoeba
  • ChorusOS
  • EROS
  • Haiku
  • K42
  • LSE/OS (a nanokernel)
  • KeyKOS (a nanokernel)
  • L4 마이크로커널
  • Mach - GNU 허드, 넥스트스텝, 오픈스텝,맥 오에스 텐에 사용 됨.
  • MERT
  • 미닉스
  • MorphOS
  • NewOS
  • QNX
  • Phoenix-RTOS
  • RadiOS
  • Spring operating system
  • VSTa
  • Symbian OS

[편집] 모노리딕커널 대 마이크로커널

1990년대 초기 모노리딕커널은 진부한 것으로 여겨졌다. 리누스 토르발스와 앤드류 타넨바움간에 일어난 리눅스의 설계인 모노리딕커널과 마이크로커널에 대한 프레임 워는 유명했다. [1] [2]

타넨바움과 토르발스의 토론에 제시된 두 진영의 의견은 일장일단이 있다.

두 진영의 성공 사례가 있다. 모노리딕커널은 정확한 설계가 쉽고 마이크로커널 기반 시스템보다 빨리 성장할 수 있다. 마이크로커널은 종종 임베디드 로봇 산업이나 의료 컴퓨터 등에 이용될 수 있다. 운영 체제의 컴포넌트를 개인적으로 가지고 있고 메모리 공간을 보호하기 때문이다. 근대의 모듈을 읽어오는 모노리딕 커널에서도 이런 것은 불가능하다.

Mach는 일반적인 용도의 마이크로커널로 알려졌지만 특별한 용도로 설계된 마이크로커널도 있다. L3는 마이크로커널이 느리지 않다는 것을 보여주기 위해 만들어졌다. L4는 L3의 후예로 Fiasco 구현으로 대중적인데 L4 프로세스들과 별도의 공간에서 리눅스 구동이 가능하다. 이런 특성의 스크린 샷은 freshmeat.net에서 구할 수 있다. Pistachio라 불리는 새 버전도 역시 가능하다.

QNX는 1980년 초에 나타난 운영 체제로 극 최소주의 마이크로커널 설계로 이루어졌다. 이 시스템은 Mach가 목표로 했던 마이크로커널 이념을 더 성공적으로 이루었다. QNX는 우주 왕복선의 로봇 팔과 (작은 실수가 수십억의 손실을 입히는 허블 우주망원경의 거울 등의) 오차에 민감한 유리를 닦는 기계에도 적용되었다.

[편집] 하이브리드커널 (수정 마이크로커널)

하이브리드 커널의 구조
하이브리드 커널의 구조

하이브리드 커널은 본질적으로 마이크로커널을 따르나, 일부 커널의 "비본질적인" 기능이더라도 사용자 레벨에서 수행될 때 성능상 느린 코드들을 커널 레벨에서 수행하도록 수정한 것을 말한다. 이는 다양한 운영 체제 개발자들이 마이크로커널 기반의 설계를 받아들이던 시점에 순수한 마이크로커널의 성능상의 한계를 인식하고 타협한 결과이다.

예를 들어, 맥 오에스 텐의 커널인 XNU는 Mach 커널 3.0 마이크로커널에 기반을 두고 있지만, 전통적인 마이크로커널 설계의 지연 현상을 줄이기 위해 BSD 커널의 일부 코드들을 들여와 동일한 주소 영역에서 실행하고 있다.

DragonFly BSD는 첫번째 비 Mach 기반의 BSD OS로 하이브리드커널 구성을 적용한 예이다.

하이브리드 커널로는 다음과 같은 것들도 포함된다.

  • ReactOS
  • BeOS 커널
  • Netware 커널

"하이브리드커널" 용어를 부팅 후에 모듈을 읽어들일 수 있는 모노리딕 커널과 혼용하는 사람들이 있다. 이것은 사실이 아니다. "하이브리드커널"은 모노리딕커널과 마이크로커널 설계 양쪽의 구조적 개념과 작동방법에 대한 특히 메시지 전달과 어떤 "중요하지 않은 코드"는 사용자 공간에 들어가는 반면 어떤 코드는 성능의 이유로 커널 공간에 포함해야 하는지에 대한 문제의식을 가진다.

[편집] 엑소커널

엑소커널의 구조
엑소커널의 구조

엑소커널은 운영 체제 설계에 대한 급진적인 신개념으로 말단 이론을 따르는 수직 구조의 운영 체제이다.

엑소커널의 구상은 개발자에게 강제적인 추상화를 줄여 하드웨어 추상화에 대해 선택지를 다양하게 하는 것이다. 엑소커널은 기능이 보호를 보장하는 것과 자원을 분배하는 것만 하기에 매우 작아 편익보다 단순함을 제공한다. 이런 특성은 오히려 모든 사용자가 각기 실제 호스트 컴퓨터의 자원을 모방한 컴퓨터를 받는VM/370 운영 체제와 비슷하다. 반면에 모노리딕커널이든 마이크로커널이든 전통적인 커널 설계는 하드웨어 추상화 계층(HAL)이나 장치 드라이버 아래 자원을 숨김으로써 하드웨어를 추상화한다. 한 예로 전통적인 시스템에서 물리 메모리가 할당할 때 실제 위치를 알려주지 않기 때문에 오프셋과 기억 관리 장치를 통해서만 문제를 해결 할 수 있다.

엑소커널은 대신에 여러 개의 가상 기계를 실행하는데 각 가상 기계는 하드웨어 추상화 계층을 통하지 않고 하드웨어 구역에 직접 접근한다. 응용 소프트웨어와 추상화는 특정 메모리 주소와 디스크 블록 등을 요구하는데 커널은 단지 자원이 비어 있는지만 확인하고 응용 소프트웨어에게 접근을 허용한다. 이 저수준 하드웨어 접근은 프로그래머가 개별적인 추상화를 만드는 것을 허용하여 불필요한 부분을 제거할 수 있게 하고 일반적으로 프로그램의 성능은 향상된다. 또한, 프로그래머는 고수준이든 저수준이든 원하는 만큼 추상화 수준을 선택할 수 있다. 예를 들어 ExOS 운영 체제에서 치타 웹 서버는 운영 체제가 제공하는 파일 추상화에 의존하지 않고 디스크에 미리 형태가 준비된 인터넷 프로토콜 패킷을 저장한다.

엑소커널은 추상화를 제공하는 라이브러리 운영 체제(libOSes)를 이용한다. 라이브러리 운영 체제는 응용 소프트웨어 프로그래머에게 고수준, 전통적인 운영 체제 추상화, 맞춤 추상화 구현의 의한 더 유동적인 방법을 제공한다. 이론적으로 엑소커널 체제는 하나의 엑소커널 아래에 윈도우즈나 유닉스와 같은 다양한 운영 체제를 구동할 수 있다.

엑소커널의 개념은 1994년[3]에 나왔으나 2005년에도 여전히 학계에서 연구 중이며 대규모의 상용 운영 체제는 없다. 개념적으로 돌아가는 엑소커널 체제는 케임브리지 대학교, 글라스고 대학교, Citrix Systems, Swedish Institute of Computer Science가 만든 네미시스와 MIT가 엑소커널 기반의 체제로 구성한 ExOS가 있다.

[편집] 노커널

TUNES Project [4]와 UnununiumOS [5]는 노커널[6] 실험이다. 노커널 소프트웨어는 단일 중앙 입구의 제약이 없다.

[편집] 같이 읽기

[편집] 바깥 고리

Static Wikipedia (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2006 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia February 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu