Trang chủ » làm thế nào để » Hạt nhân Linux là gì và nó làm gì?

    Hạt nhân Linux là gì và nó 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 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ì?

    Nhân là mức thấp nhất của phần mềm có thể thay thế dễ dàng có giao diện với phần cứng trong máy tính của bạn. Nó chịu trách nhiệm can thiệp tất cả các ứng dụng của bạn đang chạy trong chế độ người dùng của Cameron 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 giữa các quá trình (IPC).

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

    Tất nhiên, có nhiều cách khác nhau để xây dựng hạt nhân và các cân nhắc về kiến ​​trúc khi xây dựng từ đầu. Nói chung, hầu hết các hạt nhân thuộc một trong ba loại: nguyên khối, hạt nhân 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 các hạt nhân lai. Chúng ta hãy tham quan nhanh ba loại để chúng ta có thể đi vào chi tiết hơn sau.


    Hình ảnh bởi bỏng ngô

    Hạt nhân
    Một hạt nhân 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ì họ 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 mình miễn là hệ điều hành vẫn cố gắng truy cập phần cứng theo cách tương tự. Microkernels cũng có dung lượng 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 trong chế độ người dùng không có quyền cao như chế độ giám sát.

    Ưu

    • Tính di động
    • Dấu chân cài đặt nhỏ
    • Dấu chân 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 quy trình phải chờ trong hàng đợi để lấy 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 chờ đợi

    Hạt nhân nguyên khối
    Hạt nhân nguyên khối trái ngược với microkernels vì chúng không chỉ bao gồm CPU, bộ nhớ và IPC, mà chúng 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 trong việc truy cập phần cứng và đa nhiệm bởi vì nếu một chương trình cần lấy thông tin từ bộ nhớ hoặc một quá trình khác đang chạy, nó có một đường truyền trực tiếp hơn để truy cập nó 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 sự cố vì càng nhiều thứ chạy trong chế độ giám sát, càng có nhiều thứ có thể làm sập hệ thống của bạn nếu một thiết bị không hoạt động đúng.

    Ưu

    • 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 nhau
    • Nếu thiết bị của bạn được hỗ trợ, thiết bị sẽ hoạt động mà không cần cài đặt thêm
    • Các quy 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
    • Dấu chân bộ nhớ lớn
    • Ít an toàn hơn vì mọi thứ chạy trong chế độ giám sát


    Hình ảnh thông qua schoschie trên Flickr

    Hạt nhân lai
    Hạt nhân lai có khả năng chọn và chọn những gì họ muốn chạy trong chế độ người dùng và những gì họ 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à I / O của hệ thống tập tin sẽ được chạy ở chế độ người dùng trong khi các cuộc gọi IPC và máy chủ sẽ được giữ ở chế độ giám sát. Điều này mang lại điều tốt nhất cho cả hai thế giới nhưng thường sẽ đòi hỏi nhiều công việc hơn của nhà sản xuất phần cứng vì tất cả trách nhiệm của tài xế là tùy thuộc vào họ. Nó cũng có thể có một số vấn đề về độ trễ vốn có với microkernels.

    Ưu

    • 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 trong 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ị lag quá trình tương tự như vi hạt nhân
    • Trình điều khiển thiết bị cần được quản lý bởi người dùng (thông thường)

    Các tập tin hạt nhân Linux ở đâu?

    Tệp kernel, 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. Cái tên vmlinuz xuất phát từ thế giới unix nơi họ thường gọi hạt nhân của họ chỉ đơn giản là một cách đơn giản trở lại vào thập niên 60 nên Linux bắt đầu gọi kernel của họ linux linux khi nó được phát triển lần đầu tiên vào những năm 90.

    Khi bộ nhớ ảo được phát triển để có khả năng đa nhiệm dễ dàng hơn, thì vmv đã được đặt ở phía trước của tập tin để cho thấy rằng kernel hỗ trợ bộ nhớ ảo. Trong một thời gian, nhân Linux được gọi là vmlinux, nhưng hạt nhân phát triển quá lớn để phù hợp với bộ nhớ khởi động có sẵn nên hình ảnh hạt nhân đã được nén và kết thúc x được thay đổi thành z để hiển thị nó được nén bằng nén zlib. Việc nén tương tự 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ể sẽ 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 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 kernel thực sự. Tệp system.map được sử dụng để quản lý bộ nhớ trước khi kernel tải đầy đủ và tệp cấu hình cho kernel biết các tùy chọn và mô-đun nào sẽ tải vào hình ảnh kernel khi nó được biên dịch.

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

    Bởi vì 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ế đã bị tranh cãi khá nhiều trong những ngày đầu của Linux và vẫn mang một số lỗi thiết kế tương tự mà các hạt nhân nguyên khối vốn có.

    Một điều mà các nhà phát triển nhân Linux đã làm để khắc phục những lỗi này là tạo ra các mô-đun hạt nhân có thể được tải và tải trong thời gian chạy, nghĩa là bạn có thể thêm hoặc xóa các tính năng của hạt nhân một cách nhanh chóng. Điều này có thể vượt ra ngoài việc chỉ thêm chức năng phần cứng vào kernel, bằng cách bao gồm các mô đun chạy các quy trình máy chủ, như ảo hóa mức độ thấp, nhưng nó cũng có thể cho phép thay thế toàn bộ kernel mà không cần phải 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 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ó tất cả các trình điều khiển đã được cài đặt và bạn chỉ cần bật trình điều khiển bạn cần? Đó thực chất là 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ể tải (LKM), rất 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 làm mất tất cả bộ nhớ khả dụng của bạn.

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

    Các mô-đun nguồn đóng và bên thứ ba 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 có sẵn. 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à họ xây dựng các mô-đun của riêng họ và biên dịch các tệp .ko cần thiết để phân phối. Mặc dù các mô-đun này là miễn phí như trong bia, nhưng 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 vì các nhà bảo trì cảm thấy nó làm mờ 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à phép 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. 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 kernel và làm cho nhiều thứ được hỗ trợ ra khỏi hộp. Hy vọng rằng bạn sẽ biết thêm 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 và những tệp bạn cần để khởi động máy tính của bạn.

    Kernel.org
    Hình ảnh bởi ingridtaylar