Chính xác thì kernel_task làm gì?


30

Tôi chỉ muốn biết kernel_task chịu trách nhiệm về cái gì. Ngoài ra, những gì một RAM và CPU tối đa chấp nhận được sử dụng cho nó?


Tốt nhất để đo RAM và CPU của bạn sử dụng sau khi khởi động an toàn để có được số đo hệ thống của bạn chạy khi không hoạt động.
bmike

1
Theo Tyler, đó là một "đại diện của chính hạt nhân". Nếu bạn muốn có một câu trả lời cụ thể hơn, anh ta tiếp tục nói rằng "có vẻ như đó là trình quản lý bộ nhớ (ảo /) cơ bản cho Mac OS X trên Mach." Bạn sẽ khó có thể tìm được câu trả lời dứt khoát trừ khi bạn nói chuyện với một kỹ sư cấp cao của Apple. Công chúng chỉ chắp nối quá trình này. Nguồn: bleepsoft.com/tyler/index.php?itemid=43

Câu trả lời:


28

Nhiệm vụ kernel là đặc biệt vì nó là toàn bộ hệ điều hành / micro kernel dựa trên Mach 3.0 . Nó trừu tượng hóa hầu hết các phần cứng cốt lõi, thời gian, chuyển tin nhắn và xử lý bộ nhớ.

Điều mà hầu hết mọi người nhận thấy trong Activity Monitor là kernel_tasktích lũy tất cả thời gian CPU để xử lý sự chậm trễ và tính toán xử lý đầu vào / đầu ra (i / o) cũng như lập lịch trình cho các tiến trình và luồng. Tương tự - nó tích lũy tất cả các cấp phát bộ nhớ không có trong không gian người dùng. Trên máy Mac 2014 và mới hơn, tác vụ này tồn tại để điều tiết CPU - khi nhiệt độ trong bộ xử lý quá nóng, tác vụ kernel được gán "không hoạt động" và hiển thị CPU cao bận để bộ xử lý không hoạt động và không làm quá nóng máy tính. Điều này là đáng chú ý nhất trên dòng di động - đặc biệt là MacBook mà không có bất kỳ loại quạt hoặc quạt để làm mát bộ xử lý. Apple cảnh báo điều này với các lập trình viên hạt nhân tiềm năng trong "Tại sao bạn nên tránh xa lập trình trong Kernel" việc vô hiệu hóa làm mát sẽ gây ra thiệt hại phần cứng vĩnh viễn không thể khắc phục.

Tóm lại, lập trình kernel là một trách nhiệm to lớn. Bạn phải đặc biệt cẩn thận để đảm bảo rằng mã của bạn không khiến hệ thống gặp sự cố, không cung cấp bất kỳ quyền truy cập trái phép nào của người dùng vào tệp hoặc bộ nhớ của người khác, không giới thiệu khai thác gốc từ xa hoặc cục bộ và không gây ra mất dữ liệu hoặc vô ý .

Nếu bạn xem nó sau khi khởi động lại, bạn sẽ thấy nó bắt đầu với nhu cầu RAM và CPU tối thiểu và thay vào đó chỉ phát triển khi các chương trình khác chạy và cần các dịch vụ hệ thống.

Để làm mỏng nó, hãy tắt các cổng không cần thiết (WiFi, bluetooth, v.v.) cũng như các chương trình nhàn rỗi / không sử dụng. Nếu mọi thứ không ổn định, hãy xem xét khởi động lại để đảm bảo không có tác vụ nào bị kẹt hoặc rò rỉ bộ nhớ. Nếu bạn có các chương trình làm việc thực sự, chúng sẽ khiến kernel sử dụng cả bộ nhớ và thời gian xử lý - chỉ cần xem khi bạn bắt đầu mọi thứ để xem các chương trình khác đang gây ra hành vi này. Rất hiếm khi xảy ra sự cố với kernel - ngay cả với các chương trình hoạt động kém - không thể giải quyết bằng cách đăng xuất và đăng nhập lại. Kernel_task dọn dẹp tốt và thường chú ý chỉ sử dụng các tài nguyên cần thiết cho khối lượng công việc.


Cảm ơn! Bạn có thể nói 700-750 MB RAM là chấp nhận được không? Tôi có rất nhiều miễn phí, nhưng tôi muốn biết liệu tôi có nên làm gì không.
Timothy Mueller-Harder

Không cần thiết. Trên MacBook Pro chính của tôi, nó có thể tăng lên 2 GB khi tôi thực sự chạy rất nhiều chương trình liên quan. Thậm chí sau đó, tôi thường không phải khởi động lại nhưng mỗi tháng một lần hoặc lâu hơn. (2,66 Core 2 Duo / RAM 8 GB)
bmike

14

Mac OS X Internals: Phương pháp tiếp cận hệ thống - Amit Singh - Google Sách :

kernel sử dụng trừu tượng hóa tác vụ và luồng để phân chia chức năng của nó thành các luồng thực thi khác nhau. Hạt nhân sử dụng một tác vụ duy nhất, trong đó, nhiệm vụ kernel, với nhiều luồng thực hiện các hoạt động của nhân như lên lịch, gặt lại luồng, quản lý chú thích, phân trang và xử lý ngoại lệ Unix. Do đó, xnu là một hạt nhân nguyên khối chứa các thành phần khác nhau rõ rệt như Mach, BSD và I / O Kit, tất cả đều chạy như một nhóm các luồng trong một tác vụ trong cùng một không gian địa chỉ.

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

Nhiệm vụ kernel không phải là một nhiệm vụ thực sự. Nó đại diện cho kernel, là lõi của hệ điều hành. Phần lớn những gì nó xảy ra theo yêu cầu trực tiếp của một ứng dụng. Mỗi khi bạn phân bổ một khối lớn bộ nhớ, mở hoặc đóng tệp, đọc hoặc ghi tệp, kéo dữ liệu qua mạng, tạo quy trình hoặc luồng mới, v.v., ứng dụng của bạn sẽ thực hiện cuộc gọi hệ thống. Các cuộc gọi này khiến kernel thực hiện công việc cho ứng dụng của bạn. Phần lớn công việc đó được lập hóa đơn cho tác vụ kernel, nhưng nó thực sự đang được ứng dụng của bạn thực hiện, mặc dù gián tiếp.


1

Một lý do thực tế tại sao hạt nhân có thể làm việc quá mức là hệ thống của bạn hết bộ nhớ và nó bị đập. Kiểm tra biểu đồ áp suất bộ nhớ trong tab Bộ nhớ của Trình giám sát hoạt động để xem nó có màu vàng hay đỏ.

Trong trường hợp này, bạn có thể sắp xếp các quy trình theo Bộ nhớ và chấm dứt một số tiêu thụ rất nhiều, để giảm áp lực. (ví dụ: giết một số quy trình Trình trợ giúp của Google Chrome)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.