로그인하고 있지 않습니다. 편집하면 당신의 IP 주소가 공개적으로 기록됩니다. 계정을 만들고 로그인하면 편집 시 사용자 이름만 보이며, 위키 이용에 여러 가지 편의가 주어집니다.스팸 방지 검사입니다. 이것을 입력하지 마세요![[파일:Kernel Layout.svg|thumb|200px|커널이 응용 소프트웨어를 컴퓨터 하드웨어에 연결하고 있다.]] *kernel [[커널]]이란 [[하드웨어]]와 [[소프트웨어]] 간을 이어주는 역할을 하는, 대다수의 운영 체제의 중핵을 이루는 부분이다.<ref>다만 단순한 [[임베디드 시스템]]의 경우 커널이 필요 없기에 커널 없는 운영 체제를 탑재하고 있는 경우도 있다. 물론 [[Windows CE]]나 [[리눅스 커널]]을 탑재한 임베디드 시스템의 경우는 [[그런 거 없다]]</ref> 커널의 주된 임무는 위에서 언급한 대로 [[CPU]], [[RAM]], [[입출력]] (Input /Output, I/O) 등의 하드웨어 추상화로, 커널을 통함으로서 [[애플리케이션]]은 하드웨어의 종류나 구성에 구속되지 않고 다양한 시스템 상에서 가동할 수 있다. 또 다른 커널의 주된 임무로는 애플리케이션의 편의를 위해 [[프로세스]]의 추상화 및 프로세스 간의 통신, [[시스템 콜]] 등의 기능을 제공하는 것을 들 수 있다.<del>[[구글]]이나 [[네이버]]가 있기에 인터넷 상의 여기저기에 흩어진 정보를 손쉽게 찾아 사용할 수 있는 거랑 비슷하다고 생각하면 편하다.</del> 커널의 주된 기능으로는 다음을 들 수 있다. * 프로세스 관리 *: 프로세스는 응용 프로그램이 액세스 할 메모리 영역을 정의한다. 커널에 있어서 프로세스 관리란, 응용 프로그램이 사용할 [[어드레스 공간]]을 할당하고, 해당 응용 프로그램의 코드를 지정된 어드레스 공간에 로드하며, 로드된 코드에 대한 콜 스택을 설정한 다음 해당 프로그램의 적절한 위치에 제어를 넘겨주기까지의 처리 과정을 뜻한다. *: [[멀티 태스킹]]이 가능한 커널의 경우, 위의 관리에 더해 각 프로세스가 처리될 순서를 결정하고 처리의 타이밍을 지정해, 마치 복수의 프로세스가 동시에 작동하는 것처럼 보이도록 관리한다. 이러한 관리를 [[스케줄링]]이라고 부른다. *: 또한 복수의 프로세스가 서로간에 [[데이터]]를 주고받을 수 있도록 [[프로세스 통신]]을 제어하는 것 역시 프로세스 관리의 영역에 속한다. * 메모리 관리 *: 커널은 시스템의 모든 메모리<ref>[[RAM]]은 물론, L1, L2, L3 [[캐쉬 메모리]] 및 [[가상 메모리]]를 모두 포함한다.</ref>를 사용하는 것이 가능한 반면, 유저 프로그램은 보안상의 이유 등으로 인해 메모리 사용이 제한된다. 그런 탓에 커널은 한정된 메모리를 각 프로그램에 할당, 시스템의 안정성을 확보하는 동시에 응용 프로그램이 원활하게 작동하도록 한다. *: [[CPU]]에 가까운 메모리 일수록<ref>일반적으로는 L1 캐쉬 → L2 캐쉬 → L3 캐쉬 → RAM → 디스크 (가상 메모리)의 순이다. [[CPU]]의 구조를 이해는 [[위키러]]라면 굳이 설명할 필요도 없겠지만, 물리적으로 [[CPU]]에 가까운 순으로 처리 속도가 빨라진다.</ref> 연산 속도가 빨라지는 반면, 반대급부로 메모리 자체의 용량은 작아지게 된다. 그렇기에 어느 응용 프로그램의 어떤 처리에 어떤 메모리를 할당하느냐에 따라 응용 프로그램 및 시스템 전체의 성능이 좌우되게 되는데, 이러한 중요한 요소의 제어 역시 커널의 주된 임무 중 하나다. * 장치 관리 *: 하드웨어 추상화의 일환으로, 커널은 [[장치 드라이버]]와 연동해 [[컴퓨터]]에 연결된 장치를 인식하고, 그 장치가 가진 리소스를 하위 소프트웨어에 할당하는 역할을 담당한다. 커널이 표준화된 입출력 포트나 메모리 공간을 확보하고 드라이버가 그 포트와 공간을 사용해 커널에 장치의 정보를 넘겨줌으로서 개개의 응용 프로그램은 하드웨어의 종류에 구애받지 않고 커널에 요구하는 것만으로도 필요한 자원을 사용할 수 있다. * 시스템 콜 *: 위의 설명을 보<del>고 어렴풋하게나마 이해했다</del>면 알 수 있듯, 커널은 시스템 전체에서 중요한 역할을 담당하고 있다. 그렇기에 [[CPU]]의 설계에 좌우되는 부분은 있으나, 대부분의 경우 보안상의 이유로 커널 공간과 유저 공간이 분리되어 있어, 유저 프로세스는 함부로 커널에 액세스 할 수 없도록 되어 있다.<ref>굳이 언급할 필요도 없겠지만 반대로 커널은 모든 유저 프로세스에 액세스 할 수 있다.</ref> 그렇기에 커널은 유저 프로세스가 간접적으로 커널의 기능을 사용할 수 있도록 커널을 호출할 수 있는 기능을 내재하고 있다. 이것이 시스템 콜로, 각 커널의 설계에 따라 다양한 방식이 존재하나, 어느 방식이든 유저 프로세스가 미리 지정된 행동을 하는 것으로 커널을 호출할 수 있게 도와준다. 커널의 종류로는 모놀리식 커널, 마이크로 커널, 그리고 이 둘을 적절히 혼합한 하이브리드 커널이 있다. 리눅스는 모놀로식 커널이며, 리눅스의 모체가 된 미닉스는 마이크로 커널이었다. 윈도우는 과거 마이크로 커널이었지만 현재는 하이브리드 커널로 분류되고 있다. <del>참고로 그 [[티멕스 윈도우]]는 마이크로 커널이었다.</del> [[분류:컴퓨터 과학]] {{각주}} {{문서 가져옴|운영 체제}} 요약: 리브레 위키에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-동일조건변경허락 3.0 라이선스로 배포됩니다(자세한 내용에 대해서는 리브레 위키:저작권 문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요. 글이 직접 작성되었거나 호환되는 라이선스인지 확인해주세요. 리그베다 위키, 나무위키, 오리위키, 구스위키, 디시위키 및 CCL 미적용 사이트 등에서 글을 가져오실 때는 본인이 문서의 유일한 기여자여야 하고, 만약 본인이 문서의 유일한 기여자라는 증거가 없다면 그 문서는 불시에 삭제될 수 있습니다. 취소 편집 도움말 (새 창에서 열림) | () [] [[]] {{}} {{{}}} · <!-- --> · [[분류:]] · [[파일:]] · [[미디어:]] · #넘겨주기 [[]] · {{ㅊ|}} · <onlyinclude></onlyinclude> · <includeonly></includeonly> · <noinclude></noinclude> · <br /> · <ref></ref> · {{각주}} · {|class="wikitable" · |- · rowspan=""| · colspan=""| · |} {{lang|}} · {{llang||}} · {{인용문|}} · {{인용문2|}} · {{유튜브|}} · {{다음팟|}} · {{니코|}} · {{토막글}} {{삭제|}} · {{특정판삭제|}}(이유를 적지 않을 경우 기각될 가능성이 높습니다. 반드시 이유를 적어주세요.) {{#expr:}} · {{#if:}} · {{#ifeq:}} · {{#iferror:}} · {{#ifexist:}} · {{#switch:}} · {{#time:}} · {{#timel:}} · {{#titleparts:}} __NOTOC__ · __FORCETOC__ · __TOC__ · {{PAGENAME}} · {{SITENAME}} · {{localurl:}} · {{fullurl:}} · {{ns:}} –(대시) ‘’(작은따옴표) “”(큰따옴표) ·(가운뎃점) …(말줄임표) ‽(물음느낌표) 〈〉(홑화살괄호) 《》(겹화살괄호) ± − × ÷ ≈ ≠ ∓ ≤ ≥ ∞ ¬ ¹ ² ³ ⁿ ¼ ½ ¾ § € £ ₩ ¥ ¢ † ‡ • ← → ↔ ‰ °C µ(마이크로) Å °(도) ′(분) ″(초) Α α Β β Γ γ Δ δ Ε ε Ζ ζ Η η Θ θ Ι ι Κ κ Λ λ Μ μ(뮤) Ν ν Ξ ξ Ο ο Π π Ρ ρ Σ σ ς Τ τ Υ υ Φ φ Χ χ Ψ ψ Ω ω · Ά ά Έ έ Ή ή Ί ί Ό ό Ύ ύ Ώ ώ · Ϊ ϊ Ϋ ϋ · ΐ ΰ Æ æ Đ(D with stroke) đ Ð(eth) ð ı Ł ł Ø ø Œ œ ß Þ þ · Á á Ć ć É é Í í Ĺ ĺ Ḿ ḿ Ń ń Ó ó Ŕ ŕ Ś ś Ú ú Ý ý Ź ź · À à È è Ì ì Ǹ ǹ Ò ò Ù ù · İ Ż ż ·  â Ĉ ĉ Ê ê Ĝ ĝ Ĥ ĥ Î î Ĵ ĵ Ô ô Ŝ ŝ Û û · Ä ä Ë ë Ï ï Ö ö Ü ü Ÿ ÿ · ǘ ǜ ǚ ǖ · caron/háček: Ǎ ǎ Č č Ď ď Ě ě Ǐ ǐ Ľ ľ Ň ň Ǒ ǒ Ř ř Š š Ť ť Ǔ ǔ Ž ž · breve: Ă ă Ğ ğ Ŏ ŏ Ŭ ŭ · Ā ā Ē ē Ī ī Ō ō Ū ū · à ã Ñ ñ Õ õ · Å å Ů ů · Ą ą Ę ę · Ç ç Ş ş Ţ ţ · Ő ő Ű ű · Ș ș Ț ț 이 문서에서 사용한 틀: 틀:가져옴 (원본 보기) (준보호됨)틀:각주 (원본 보기) (준보호됨)틀:문서 가져옴 (원본 보기) (준보호됨)틀:알림바 (원본 보기) (보호됨)