Hạt nhân (khoa học máy tính)

Bách khoa toàn thư mở Wikipedia
Hạt nhân kết nối ứng dụng với phần cứng.

Trong điện toán, hạt nhân là thành phần trung tâm của phần lớn hệ điều hành máy tính. Nó là cầu nối giữa ứng dụng và thực sự dữ liệu được xử lý bởi phần cứng. Nhiệm vụ chính của hạt nhân là quản lý tài nguyên của hệ thống. Thường thì thành phần cơ bản của hệ điều hành, một hạt nhân sẽ đưa ra một lớp trừu tượng cho tài nguyên mà ứng dụng sẽ sử dụng để thực hiện chức năng. Nó thường tạo dựng những cơ sở này cung ứng cho tiến trình ứng dụng thông qua thông tin giữa các tiến trình và hàm hệ thống.

Cho tới nay điện toán không có hạt nhân thì rất ít. Chỉ có một số hệ thống tính toán rất nhỏ như vi xử lý thì ít cần hạt nhân, hoặc hệ thống tính toán quá đơn giản để hình thành một hạt nhân phân biệt với ứng dụng rõ ràng.

Cơ sở cơ bản của hạt nhân[sửa | sửa mã nguồn]

Mục đích chính của hạt nhân là quản lý tài nguyên máy tính và cho phép những chương trình khác chạy và sử dụng những tài nguyên này. Bình thường, tài nguyên này bao gồm:

  • Bộ vi xử lý, đây là thành phần trung tâm của hệ thống máy tính, có trách nhiệm thực thi chương trình. Hạt nhân có trách nhiệm quyết định tại thời điểm nào, chương trình đang chạy nào được thực thi.
  • Bộ nhớ máy tính. Bộ nhớ được sử dụng để lưu chương trình và dữ liệu. Hạt nhân sẽ quyết định vùng nhớ nào mà một tiến trình được phép sử dụng, và xác định điều gì phải làm khi không đủ bộ nhớ.
  • Bất cứ thiết bị xuất/nhập có trong máy tính, như bàn phím, chuột, đĩa, máy in, màn hình v.v.... Hạt nhân sẽ phân bổ yêu cầu từ phần mềm đến để thực hiện xuất/nhập đến thiết bị phù hợp và cung cấp phương pháp thuận tiện sử dụng thiết bị.

Quản lý tiến trình[sửa | sửa mã nguồn]

Tác vụ chính của hạt nhân là cho phép kích hoạt ứng dụng và hỗ trợ nó với tính năng như trừu tượng phần cứng. Để chạy một ứng dụng, hạt nhân sẽ thiết lập một không gian địa chỉ cho ứng dụng, tải tệp chứa mã ứng dụng vào bộ nhớ, thiết lập ngăn xếp cho chương trình và nhảy đến vị trí chương trình trong bộ nhớ, do đó chương trình chạy.
Hạt nhân đa nhiệm cho người dùng thấy ảo giác một số tiến trình có thể chạy song song trên máy tính là cao hơn số tiến trình mà máy tính vật lý có thể thực hiện được. Thông thường, số lượng tiến trình của một hệ thống có thể chạy song song là số bộ vi xử lý được cài đặt.
Trong hệ thống đa nhiệm ưu tiên, hạt nhân sẽ đưa cho chương trình một khoảng thời gian và chuyển từ tiến trình sang tiến trình nhanh mà người dùng xem như song song. Hạt nhân sẽ sử dụng thuật toán lập lịch để xác định tiến trình nào sẽ chạy tiếp và bao nhiêu thời gian. Thuật toán này cho phép một số tiến trình có mức độ ưu tiên cao hơn những tiến trình khác. Hạt nhân cũng cung cấp cho tiến trình một cách để liên lạc với nhau; đó là thông tin liên tiến trình và cái chính là chia sẻ bộ nhớ, gửi thông điệp...
Hạt nhân cũng có thể hỗ trợ đa xử lý (đa xử lý đối xứng SMP hoặc Non-Uniform Memory Access) trong trường hợp này, những chương trình khác nhau và luồng sẽ chạy trên bộ vi xử lý khác nhau.

Quản lý bộ nhớ[sửa | sửa mã nguồn]

Hạt nhân có toàn quyền truy xuất bộ nhớ và phải cho phép tiến trình truy xuất an toàn bộ nhớ nếu chúng cần. Thường thì đầu tiên thực hiện điều này là địa chỉ ảo, thường đạt được bằng phân trangphân đoạn. Địa chỉ ảo cho phép hạt nhân đưa ra địa chỉ vật lý khác với địa chỉ thực. Không gian địa chỉ ảo có thể khác với tiến trình; địa chỉ mà một tiến trình truy xuất tại một thời điểm cụ thể có thể khác với tiến trình khác từ tiến trình khác tại cùng địa chỉ. Điều này cho phép chương trình nghĩ rằng chỉ có nó là duy nhất chạy và vì thế ngăn chặn được ứng dụng va vào nhau.

Quản lý thiết bị[sửa | sửa mã nguồn]

Hạt nhân cung cấp khả năng truy suất đến các thiết bị thông qua lớp trừu tượng, tuy nhiên bên trong hạt nhân có một lớp đó là quản lý thiết bị.

Hàm hệ thống[sửa | sửa mã nguồn]

Xem thêm hàm hệ thống

Một tiến trình đang chạy không thể nhảy trực tiếp vào không gian mã của hạt nhân trong bộ nhớ vì cơ chế bảo vệ từ bộ vi xử lý, tuy nhiên cũng có một vài cơ chế:

  • Sử dụng ngắt mềm, cách này có hầu như tất cả các phần cứng, và rất phổ biến.
  • Sử dụng một vi lệnh hàm hệ thống. Kĩ thuật này có thực hiện ở x86.
  • Sử dụng cổng gọi. Một cổng gọi là địa chỉ đặc biệt lưu bởi hạt nhân trong danh sách trong bộ nhớ hạt nhân. Khi bộ vi xử lý phát hiện nhảy đến địa chỉ đó, nó sẽ điều hướng đến mục tiêu mà không sinh ra truy suất bất hợp pháp.

Phân loại thiết kế hạt nhân[sửa | sửa mã nguồn]

Tự nhiên, một loạt các chức năng có thể cung cấp bằng nhiều cách mà khác nhau trong thiết kế và thực hiện.
Hiện tại có hai kiểu thiết kế là vi và khối hạt nhân.
Trong vi hạt nhân chỉ có một vài cơ bản luật được thực hiện bên trong và cơ chế của nó cho phép cái gì được ưu tiên hơn hạt nhân để quyết định luật nào được thông qua (như quản lý bộ nhớ, quản lý hệ tệp, lập lịch tiến trình). Một hạt nhân nguyên khối thay vào đó nó hướng nhiều luật trong, vì thế hạn chế toàn hệ thống phụ thuộc nó.

Tham khảo[sửa | sửa mã nguồn]