Hạt nhân Linux là gì và nó hoạt động như thế nào?

Mục lục:

Hạt nhân Linux là gì và nó hoạt động như thế nào?
Hạt nhân Linux là gì và nó hoạt động như thế nào?

Video: Hạt nhân Linux là gì và nó hoạt động như thế nào?

Video: Hạt nhân Linux là gì và nó hoạt động như thế nào?
Video: 3 BƯỚC LÀM BÀI NGHIÊN CỨU KHOA HỌC // Writing Research Papers - YouTube 2024, Có thể
Anonim
 Với hơn 13 triệu dòng mã, hạt nhân Linux là một trong những dự án mã nguồn mở lớn nhất trên thế giới, nhưng hạt nhân là gì và nó được sử dụng để làm gì?
Với hơn 13 triệu dòng mã, hạt nhân Linux là một trong những dự án mã nguồn mở lớn nhất trên thế giới, nhưng hạt nhân là gì và nó được sử dụng để làm gì?

Vậy hạt nhân là gì?

Một hạt nhân là mức thấp nhất của phần mềm có thể thay thế dễ dàng giao tiếp với phần cứng trong máy tính của bạn. Nó có trách nhiệm giao tiếp tất cả các ứng dụng của bạn đang chạy trong "chế độ người dùng" xuống phần cứng vật lý và cho phép các quy trình, được gọi là máy chủ, nhận thông tin từ nhau bằng cách sử dụng giao tiếp liên ngành (IPC).

Các loại hạt nhân khác nhau

Tất nhiên, có nhiều cách khác nhau để xây dựng một sự cân nhắc về hạt nhân và kiến trúc khi xây dựng một từ đầu. Nói chung, hầu hết các hạt nhân rơi vào một trong ba loại: nguyên khối, vi hạt và lai. Linux là một hạt nhân nguyên khối trong khi OS X (XNU) và Windows 7 sử dụng hạt nhân lai. Hãy tham quan nhanh ba danh mục để chúng tôi có thể đi vào chi tiết hơn sau.

Image
Image

Hình ảnh của bỏng ngô

Microkernel Một microkernel có cách tiếp cận chỉ quản lý những gì nó có: CPU, bộ nhớ và IPC. Khá nhiều thứ khác trong máy tính có thể được xem như một phụ kiện và có thể được xử lý trong chế độ người dùng. Microkernels có lợi thế về tính di động vì chúng không phải lo lắng nếu bạn thay đổi thẻ video hoặc thậm chí hệ điều hành của bạn miễn là hệ điều hành vẫn cố truy cập phần cứng theo cách tương tự. Microkernels cũng có một dấu chân rất nhỏ, cho cả bộ nhớ và không gian cài đặt và chúng có xu hướng an toàn hơn vì chỉ các quy trình cụ thể chạy ở chế độ người dùng không có quyền cao như chế độ giám sát.

Ưu điểm

  • Tính di động
  • Dấu chân cài đặt nhỏ
  • Dung lượng bộ nhớ nhỏ
  • Bảo vệ

Nhược điểm

  • Phần cứng được trừu tượng hóa hơn thông qua trình điều khiển
  • Phần cứng có thể phản ứng chậm hơn vì trình điều khiển ở chế độ người dùng
  • Các quá trình phải đợi trong hàng đợi để nhận thông tin
  • Các quy trình không thể truy cập vào các quy trình khác mà không phải đợi

Monolithic Kernel Hạt nhân nguyên khối là đối diện của vi hạt nhân bởi vì chúng không chỉ bao gồm CPU, bộ nhớ và IPC mà còn bao gồm những thứ như trình điều khiển thiết bị, quản lý hệ thống tệp và các cuộc gọi máy chủ hệ thống. Các hạt nhân nguyên khối có xu hướng tốt hơn khi truy cập phần cứng và đa nhiệm vì nếu chương trình cần lấy thông tin từ bộ nhớ hoặc quá trình khác chạy nó có đường trực tiếp hơn để truy cập và không phải đợi trong hàng đợi để hoàn thành công việc. Tuy nhiên, điều này có thể gây ra vấn đề bởi vì càng có nhiều thứ chạy trong chế độ giám sát, càng có nhiều thứ có thể làm giảm hệ thống của bạn nếu hệ thống không hoạt động bình thường.

Ưu điểm

  • Truy cập trực tiếp hơn vào phần cứng cho các chương trình
  • Dễ dàng hơn cho các quá trình giao tiếp giữa eachother
  • Nếu thiết bị của bạn được hỗ trợ, nó sẽ hoạt động mà không cần cài đặt bổ sung
  • Các quá trình phản ứng nhanh hơn vì không có hàng đợi cho thời gian xử lý

Nhược điểm

  • Dấu chân cài đặt lớn
  • Dung lượng bộ nhớ lớn
  • Ít an toàn hơn vì mọi thứ đều chạy ở chế độ giám sát
 Hình ảnh qua schoschie trên Flickr
Hình ảnh qua schoschie trên Flickr

Hybrid Kernel Các hạt nhân lai có khả năng chọn và chọn những gì chúng muốn chạy trong chế độ người dùng và những gì chúng muốn chạy trong chế độ giám sát. Thông thường những thứ như trình điều khiển thiết bị và hệ thống tập tin I / O sẽ được chạy trong chế độ người dùng trong khi IPC và các cuộc gọi máy chủ sẽ được giữ trong chế độ giám sát. Điều này cung cấp cho tốt nhất của cả hai thế giới nhưng thường sẽ đòi hỏi nhiều công việc của nhà sản xuất phần cứng bởi vì tất cả các trách nhiệm lái xe là tùy thuộc vào họ. Nó cũng có thể có một số vấn đề độ trễ vốn có với các vi nhân.

Ưu điểm

  • Nhà phát triển có thể chọn và chọn những gì chạy trong chế độ người dùng và những gì chạy ở chế độ giám sát
  • Dấu chân cài đặt nhỏ hơn hạt nhân nguyên khối
  • Linh hoạt hơn các mô hình khác

Nhược điểm

  • Có thể bị tụt hậu quá trình giống như microkernel
  • Trình điều khiển thiết bị cần được quản lý bởi người dùng (thường)

Tệp hạt nhân Linux ở đâu?

Image
Image

Tệp hạt nhân, trong Ubuntu, được lưu trữ trong thư mục / boot của bạn và được gọi là vmlinuz-phiên bản. Tên vmlinuz xuất phát từ thế giới unix, nơi họ thường gọi các hạt nhân của họ chỉ đơn giản là "unix" vào thập niên 60 vì vậy Linux bắt đầu gọi hạt nhân của họ là "linux" khi nó được phát triển lần đầu vào thập niên 90.

Khi bộ nhớ ảo được phát triển cho các khả năng đa nhiệm dễ dàng hơn, “vm” được đặt ở phía trước của tập tin để cho thấy hạt nhân hỗ trợ bộ nhớ ảo. Trong một thời gian hạt nhân Linux được gọi là vmlinux, nhưng hạt nhân đã tăng quá lớn để vừa với bộ nhớ khởi động sẵn có để hình ảnh hạt nhân bị nén và kết thúc x được thay đổi thành z để hiển thị nó được nén với nén zlib. Nén này không phải lúc nào cũng được sử dụng, thường được thay thế bằng LZMA hoặc BZIP2 và một số hạt nhân được gọi đơn giản là zImage.

Việc đánh số phiên bản sẽ ở định dạng A.B.C.D trong đó A.B có thể là 2.6, C sẽ là phiên bản của bạn và D cho biết các bản vá hoặc bản sửa lỗi của bạn.

Trong thư mục / boot cũng sẽ có các tệp rất quan trọng khác được gọi là initrd.img-version, system.map-version và config-version. Tệp initrd được sử dụng như một đĩa RAM nhỏ để trích xuất và thực thi tệp hạt nhân thực.Tệp system.map được sử dụng để quản lý bộ nhớ trước khi hạt nhân tải đầy đủ và tệp cấu hình cho biết hạt nhân các tùy chọn và mô-đun nào sẽ tải vào hình ảnh hạt nhân khi nó đang được biên dịch.
Trong thư mục / boot cũng sẽ có các tệp rất quan trọng khác được gọi là initrd.img-version, system.map-version và config-version. Tệp initrd được sử dụng như một đĩa RAM nhỏ để trích xuất và thực thi tệp hạt nhân thực.Tệp system.map được sử dụng để quản lý bộ nhớ trước khi hạt nhân tải đầy đủ và tệp cấu hình cho biết hạt nhân các tùy chọn và mô-đun nào sẽ tải vào hình ảnh hạt nhân khi nó đang được biên dịch.

Kiến trúc hạt nhân Linux

Bởi vì hạt nhân Linux là nguyên khối, nó có dấu chân lớn nhất và phức tạp nhất so với các loại hạt nhân khác. Đây là một tính năng thiết kế mà đã được khá nhiều tranh luận trong những ngày đầu của Linux và vẫn mang một số lỗi thiết kế giống nhau mà hạt nhân nguyên khối có vốn có.

Một điều mà các nhà phát triển hạt nhân Linux đã làm để giải quyết những sai sót này là tạo các mô-đun hạt nhân có thể được nạp và nạp vào thời gian chạy, nghĩa là bạn có thể thêm hoặc loại bỏ các tính năng của hạt nhân của bạn. Điều này có thể vượt ra ngoài việc thêm chức năng phần cứng vào nhân, bằng cách bao gồm các mô-đun chạy các tiến trình máy chủ, như ảo hóa mức thấp, nhưng nó cũng có thể cho phép toàn bộ hạt nhân được thay thế mà không cần khởi động lại máy tính của bạn trong một số trường hợp.

Hãy tưởng tượng nếu bạn có thể nâng cấp lên một gói dịch vụ Windows mà không cần phải khởi động lại…

Mô-đun hạt nhân

Điều gì sẽ xảy ra nếu Windows có mọi trình điều khiển đã sẵn sàng và bạn chỉ cần bật các trình điều khiển cần thiết? Đó là cơ bản những gì các mô-đun hạt nhân làm cho Linux. Các mô-đun hạt nhân, còn được gọi là mô-đun hạt nhân có thể nạp được (LKM), là điều cần thiết để giữ cho hạt nhân hoạt động với tất cả phần cứng của bạn mà không tốn tất cả bộ nhớ có sẵn của bạn.
Điều gì sẽ xảy ra nếu Windows có mọi trình điều khiển đã sẵn sàng và bạn chỉ cần bật các trình điều khiển cần thiết? Đó là cơ bản những gì các mô-đun hạt nhân làm cho Linux. Các mô-đun hạt nhân, còn được gọi là mô-đun hạt nhân có thể nạp được (LKM), là điều cần thiết để giữ cho hạt nhân hoạt động với tất cả phần cứng của bạn mà không tốn tất cả bộ nhớ có sẵn của bạn.

Một mô-đun thường thêm chức năng cho hạt nhân cơ sở cho những thứ như thiết bị, hệ thống tệp và cuộc gọi hệ thống. LKM có phần mở rộng tệp.ko và thường được lưu trữ trong thư mục / lib / modules. Do tính chất mô-đun của họ, bạn có thể dễ dàng tùy chỉnh hạt nhân của mình bằng cách đặt mô-đun để tải, hoặc không tải, trong khi khởi động với lệnh menuconfig hoặc bằng cách chỉnh sửa tệp / boot / config hoặc bạn có thể tải và dỡ mô-đun khi đang chạy với modprobe chỉ huy.

Mô-đun nguồn của bên thứ ba và nguồn đóng có sẵn trong một số bản phân phối, như Ubuntu và có thể không được cài đặt theo mặc định vì mã nguồn cho các mô-đun không khả dụng. Nhà phát triển phần mềm (tức là nVidia, ATI, trong số những người khác) không cung cấp mã nguồn mà là họ xây dựng các mô-đun riêng của họ và biên dịch các tệp.ko cần thiết để phân phối. Trong khi các mô-đun này tự do như trong bia, chúng không miễn phí như trong lời nói và do đó không được bao gồm bởi một số bản phân phối bởi vì các nhà bảo trì cảm thấy nó "taints" hạt nhân bằng cách cung cấp phần mềm không miễn phí.

Một hạt nhân không phải là ma thuật, nhưng nó hoàn toàn cần thiết cho bất kỳ máy tính nào chạy đúng cách. Hạt nhân Linux khác với OS X và Windows vì nó bao gồm các trình điều khiển ở cấp hạt nhân và làm cho nhiều thứ được hỗ trợ "ngoài hộp". Hy vọng rằng bạn sẽ biết nhiều hơn một chút về cách phần mềm và phần cứng của bạn hoạt động cùng nhau như thế nào và những tệp nào bạn cần để khởi động máy tính của mình.

Kernel.org Hình ảnh của ingridtaylar

Đề xuất: