kernel_task는 정확히 무엇을합니까?


30

kernel_task가 무엇을 담당하는지 알고 싶습니다. 또한 허용되는 최대 RAM 및 CPU 사용량은 얼마입니까?


안전 부팅 후 RAM 및 CPU 사용을 측정하여 유휴 상태 일 때 시스템이 실행되는 것을 측정하는 것이 가장 좋습니다.
bmike

1
타일러에 따르면 "마이크로 커널 자체의 표현"이라고합니다. 좀 더 구체적인 답변을 원한다면, 그는 계속해서 "마하 위에 Mac OS X의 기본 (가상 /) 메모리 관리자 인 것 같습니다"라고 말합니다. 고급 Apple 엔지니어와 이야기하지 않으면 확실한 답을 찾기가 어려울 것입니다. 대중은이 과정을한데 모았습니다. 출처 : bleepsoft.com/tyler/index.php?itemid=43

답변:


28

커널 작업은 Mach 3.0 기반전체 운영 체제 / 마이크로 커널 이기 때문에 특별합니다 . 대부분의 핵심 하드웨어, 타이밍, 메시지 전달 및 메모리 처리를 추상화합니다.

Activity Monitor에서 대부분의 사람들이 주목하는 것은 kernel_task입출력 처리 지연 및 계산에 대한 모든 CPU 시간을 누적하고 프로세스 및 스레드의 오버 헤드를 예약 한다는 것 입니다. 마찬가지로 사용자 공간에없는 모든 메모리 할당을 누적합니다. 2014 년 및 최신 Mac에서는이 작업이 CPU를 조절하기 위해 존재합니다. 프로세서의 온도가 너무 높으면 커널 작업에 "작동하지 않음"이 할당되고 프로세서가 유휴 상태가되고 컴퓨터가 과열되지 않도록 CPU 사용률이 높습니다. 이것은 휴대용 회선에서 가장 두드러집니다. 특히 프로세서를 식힐 수있는 팬이나 블로어가없는 MacBook입니다. 애플은 " 커널 에서 프로그래밍을 멀리해야하는 이유" 에서 잠재적 커널 프로그래머에게이를 경고 한다. 냉각을 비활성화하면 복구 할 수없는 영구적 인 하드웨어 손상이 발생합니다.

요약하자면, 커널 프로그래밍은 엄청난 책임입니다. 코드로 인해 시스템이 중단되지 않고 다른 사람의 파일이나 메모리에 대한 무단 사용자 액세스를 제공하지 않으며 원격 또는 로컬 루트 익스플로잇이 발생하지 않으며 의도하지 않은 데이터 손실 또는 손상이 발생하지 않도록 특히주의해야합니다. .

재부팅 후보고 있으면 최소한의 RAM 및 CPU 요구로 시작하고 다른 프로그램이 실행되고 시스템 서비스가 필요한 경우에만 증가합니다.

이를 줄이려면 필요없는 포트 (WiFi, 블루투스 등)와 유휴 / 사용하지 않는 프로그램을 끄십시오. 문제가 해결되지 않으면 작업이 멈추거나 메모리 누수가 없도록 재부팅을 고려하십시오. 실제 작업을 수행하는 프로그램이있는 경우 커널에서 메모리와 프로세서 시간을 모두 사용하게됩니다. 다른 프로그램이이 동작을 일으키는 지 확인하기 시작하면됩니다. 커널의 문제는 거의 없습니다. 심지어 성능이 좋지 않은 프로그램에서도 로그 아웃했다가 다시 로그인해도 해결할 수 없습니다. kernel_task는 잘 정리되며 일반적으로 워크로드에 필요한 리소스 만 사용하도록주의를 기울입니다.


감사! 700-750MB의 RAM이 허용됩니까? 나는 많은 자유를 가지고 있지만 어쨌든해야 할 일이 있는지 알고 싶습니다.
Timothy Mueller-Harder 2012 년

반드시 그런 것은 아닙니다. 필자의 주요 MacBook Pro에서는 실제로 많은 관련 프로그램을 실행하고있을 때 2GB로 팽창 할 수 있습니다. 그럼에도 불구하고, 나는 종종 한 달에 한 번 재부팅 할 필요가 없습니다. (2.66 Core 2 Duo / 8GB RAM)
bmike

14

Mac OS X 내부 : 시스템 접근-Amit Singh-Google 도서 :

커널은 작업과 스레드 추상화를 사용하여 기능을 다양한 실행 흐름으로 나눕니다. 커널은 예약, 스레드 수확, 콜 아웃 관리, 페이징 및 Unix 예외 처리와 같은 커널 작업을 수행하는 여러 스레드와 함께 단일 작업 ( 커널 작업) 을 사용합니다. 따라서 xnu는 Mach, BSD 및 I / O Kit와 같이 현저하게 다른 구성 요소를 포함하는 단일 커널로, 모두 동일한 주소 공간에서 단일 작업으로 스레드 그룹으로 실행됩니다.

http://lists.apple.com/archives/darwin-kernel/2010/Sep/msg00014.html :

커널 작업은 실제 작업이 아닙니다. 운영 체제의 핵심 인 커널을 나타냅니다. 응용 프로그램의 직접 요청에서 발생하는 대부분의 작업. 큰 메모리 블록을 할당하거나, 파일을 열거 나 닫거나, 파일을 읽거나 쓰거나, 네트워크를 통해 데이터를 가져오고, 새로운 프로세스 나 스레드를 만드는 등의 경우 응용 프로그램에서 시스템 호출을 수행합니다. 이러한 호출로 인해 커널이 응용 프로그램에서 작동합니다. 이 작업의 대부분은 커널 작업에 청구되지만 실제로는 간접적으로 수행되지만 응용 프로그램에서 수행됩니다.


1

커널이 과도하게 작동하는 실질적인 이유는 시스템의 메모리가 부족하고 스 래싱하기 때문입니다. 활동 모니터메모리 탭 에서 메모리 압력 그래프를 점검하여 노란색 또는 빨간색인지 확인하십시오.

이 경우 프로세스를 메모리별로 정렬하고 메모리를 많이 소비하는 프로세스를 종료하여 압력을 줄일 수 있습니다. (예 : 일부 Chrome 도우미 프로세스 종료)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.