kernel_task到底是做什么的?


30

我只想知道kernel_task负责什么。另外,可接受的最大RAM和CPU使用量是多少?


最好在安全启动后衡量您的RAM和CPU使用情况,以衡量空闲时系统的运行状况。
bmike

1
根据泰勒的说法,它是“微内核本身的表示”。如果您想要一个更具体的答案,他接着说:“它似乎是Mac OS X在Mach之上的基本(虚拟/)内存管理器。” 除非您与Apple的高级工程师交谈,否则您将很难找到明确的答案。公众只是拼凑了这个过程。来源:bleepsoft.com/tyler/index.php?itemid = 43

Answers:


28

内核任务是特殊的,因为它是一个基于Mach 3.0整个操作系统/微内核。它抽象了大多数核心硬件,时序,消息传递和内存处理。

大多数人在活动监视器中注意到的是,kernel_task累积所有CPU时间用于输入/输出(i / o)处理延迟和计算,以及调度进程和线程的开销。同样,它会累积所有不在用户空间中的内存分配。在2014年及以后的Mac电脑上,存在执行此任务以限制CPU的速度-当处理器中的温度太高时,内核任务被分配为“无工作”,并且表明CPU繁忙,以使处理器空闲而不会使计算机过热。这在便携式产品线中最为明显-特别是没有任何风扇或鼓风机来冷却处理器的MacBook。苹果在“为什么要远离内核编程”中警告潜在的内核程序员。 禁用冷却会导致永久性的不可修复的硬件损坏。

总而言之,内核编程是一项巨大的责任。您必须格外小心,以确保您的代码不会导致系统崩溃,不提供任何未经授权的用户访问他人的文件或内存,不引入远程或本地root漏洞以及不会造成无意的数据丢失或损坏的信息。 。

如果您在重新启动后观看它,将会看到它以最低的RAM和CPU需求开始,并且仅在其他程序运行并且需要系统服务时才增长。

要减小它的体积,请关闭不需要的端口(WiFi,蓝牙等)以及空闲/未使用的程序。如果事情没有解决,请考虑重新启动以确保没有卡死任务或内存泄漏。如果您的程序在做真实的工作,它们将导致内核同时使用内存和处理器时间-刚开始时请观察一下其他哪些程序正在导致此行为。内核很少出现问题-即使程序执行不佳-退出并重新登录也无法解决。kernel_task清理得很好,并且通常只使用工作负载所需的资源。


谢谢!您是否可以接受700-750 MB的RAM?我有很多空闲时间,但是我想知道我是否应该做任何事情。
Timothy Mueller-Harder'1

不必要。在我的主要MacBook Pro上,当我真正运行许多相关程序时,有时可以膨胀到2 GB。即使那样,我也不必经常重新启动,而是每个月一次。(2.66 Core 2 Duo / 8 GB 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

内核可能过度工作的一个实际原因是系统内存不足,并且运行异常。检查“ 活动监视器”的“ 内存”选项卡下的内存压力图,看它是黄色还是红色。

在这种情况下,您可以按内存对进程进行排序,并终止消耗大量进程的进程,以减轻压力。(例如,杀死一些Google Chrome Helper进程)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.