Що саме робить kernel_task?


30

Я просто хотів би знати, за що відповідає kernel_task. Крім того, що для неї прийнятне максимальне значення оперативної пам’яті та процесора?


Найкраще виміряти використання оперативної пам’яті та процесора після безпечного завантаження, щоб отримати міру того, на що працює ваша система у режимі очікування.
bmike

1
За словами Тайлера, це "представлення самого мікроядра". Якщо ви хочете більш конкретної відповіді, він продовжує говорити, що "це, здається, є основним (віртуальним /) менеджером пам'яті для Mac OS X поверх Маха". Вам буде важко знайти остаточну відповідь, якщо ви не поговорите з високотехнологічним інженером Apple. Громадськість лише поєднала цей процес. Джерело: bleepsoft.com/tyler/index.php?itemid=43

Відповіді:


28

Завдання ядра є особливим, оскільки це вся операційна система / мікроядро на базі Mach 3.0 . Він резюмує більшість основних апаратних засобів, часу, передачі повідомлень та обробки пам'яті.

Більшість людей помічають у «Моніторі діяльності» - це kernel_taskнакопичення всього часу процесора на затримку та обчислення вводу / виводу (вводу / виводу), а також на планування накладних витрат процесів і потоків. Аналогічно - він акумулює всі виділення пам'яті, які не знаходяться в просторі користувача. Для Macs 2014 року та новіших версій це завдання існує для придушення процесора - коли температури в процесорі занадто теплі, завдання ядра призначається "не працює" і показує, що процесор зайнятий, щоб процесор не працював і не перегрівав комп'ютер. Це найбільш помітно на портативній лінії - особливо MacBook без вентилятора чи вентилятора для охолодження процесора. Apple попереджає про це потенційним програмістам ядра в "Чому слід уникати програмування в ядрі" що відключення охолодження призведе до постійних непоправних пошкоджень обладнання.

Підсумовуючи, програмування ядра - це величезна відповідальність. Ви повинні бути винятково обережними, щоб ваш код не спричинив збій системи, не надав несанкціонованому користувачеві доступ до чужих файлів чи пам'яті, не вводив віддалені або локальні кореневі подвиги і не спричиняв ненавмисну ​​втрату даних або пошкодження. .

Якщо ви переглядаєте його після перезавантаження, ви побачите, що він починається з мінімальних потреб в оперативній пам'яті та процесорі, а замість цього зростає лише тоді, коли інші програми працюють і потребують системних служб.

Щоб зменшити його, вимкніть непотрібні порти (WiFi, bluetooth тощо), а також непрацюючі / невикористані програми. Якщо все не впорядковується, спробуйте перезавантажити, щоб переконатися, що жодна задача не застрягла або не протікала пам'ять. Якщо у вас є програми, які виконують реальну роботу, вони змусять ядро ​​використовувати і пам'ять, і час процесора - просто дивіться, як ви починаєте, щоб побачити, які інші програми викликають таку поведінку. Рідко виникає проблема з ядром - навіть із погано працюючими програмами - які не вдається вирішити шляхом виходу з системи та повторного входу. Kernel_task добре очищає і загалом дбає про використання лише ресурсів, необхідних для навантаження.


Спасибі! Ви б сказали, що 700-750 МБ оперативної пам’яті прийнятні для цього? У мене є багато вільного, але я хотів би знати, чи все-таки я щось повинен зробити.
Тімоті Мюллер-Хардер

Не обов'язково. У моєму основному MacBook Pro він може набухати до 2 ГБ, коли я справді запускаю багато програм, що займаються. Навіть тоді мені часто не доводиться перезавантажувати, але раз на місяць або близько того. (2,66 Core 2 Duo / 8 ГБ оперативної пам’яті)
bmike

14

Mac OS X Internals: системний підхід - Amit Singh - Книги Google :

ядро використовує завдання та потоки абстракцій, щоб розділити свою функціональність на різні потоки виконання. Ядро використовує одну задачу - завдання ядра - з декількома потоками, які виконують операції з ядром, такі як планування, збирання потоків, управління описом, підказка та обробка виключень Unix. Таким чином, xnu - це монолітне ядро, що містить помітно різні компоненти, такі як Mach, BSD та Kit I / O Kit, всі вони виконуються як групи потоків в одному завданні в одному адресному просторі.

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

Завдання ядра не є справжнім завданням. Він представляє ядро, яке є ядром операційної системи. Основна частина того, що він робить, відбувається за прямим запитом заявки. Кожного разу, коли ви виділяєте великий блок пам'яті, відкриваєте або закриваєте файл, читаєте чи записуєте файл, перетягуєте дані по мережі, створюєте новий процес або потік тощо, ваша програма виконує системний дзвінок. Ці дзвінки змушують ядро ​​працювати для вашої програми. Значна частина цієї роботи зараховується до завдання ядра, але це дійсно виконується вашою програмою, хоча і опосередковано.


1

Практична причина, чому ядро ​​може перевантажуватись, - це те, що у вашої системи немає пам’яті і вона забивається. Перевірте графік тиску в пам'яті на вкладці " Пам'ять" у " Моніторі активності", щоб побачити, чи він жовтий чи червоний.

У цьому випадку ви можете сортувати процеси за пам'яттю та припиняти деякі, які споживають багато, щоб зменшити тиск. (наприклад, знищити деякі процеси помічників Google Chrome)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.