(91) 350-9520 support@omarine.org M-F: 7 AM - 7 PM; Weekends: 9 AM - 5 PM

Hệ điều hành: 5 yếu tố liên quan Kernel

Bài trước giới thiệu một chương trình kịch bản điển hình. Nó được trình bày trước tiên vì các kịch bản shell có nhiệm vụ điều hướng, mặt khác là chất keo gắn kết các thành phần của Hệ điều hành (HĐH) kiểu Unix. Đến đây chúng ta dừng lại một chút ở một số khái niệm. Trước đây chúng ta thường nói đến các HĐH Linux hay nguồn mở, nay thì các hệ thống có khuynh hướng phát triển đa dạng hơn và không còn bám sát nguyên lý Linux, hoặc mở một phần hay thương mại hóa, hoặc miễn phí hoàn toàn nhưng không mở (hoàn toàn), nhưng tất cả đều dựa trên Unix. Cho nên gọi HĐH kiểu Unix là mang tính khái quát chung. Sự thay đổi này gắn liền với tình hình xã hội và lịch sử. Vì vậy xem xét HĐH không chỉ là vấn đề kĩ thuật, mà còn mang ý nghĩa triết học. Nếu bạn thích thú khám phá HĐH mà chỉ quan tâm đến khía cạnh kĩ thuật, bạn sẽ vấp phải những khó khăn khó vượt qua và nhanh chóng bỏ cuộc. Tất cả các hệ thống hiện nay đều có xu hướng thương mại hóa dưới nhiều hình thức khác nhau. Cho dù như vậy, luôn tồn tại thuộc tính mở.

Kịch bản shell có mặt khắp nơi trong HĐH, từ khởi tạo hệ thống, nạp các module, cấu hình, cài đặt, lịch trình đến tối ưu. Ngôn ngữ shell đang phát triển tiến tới sự mềm dẻo như C, chẳng hạn ở phiên bản mới bash shell 4.2.45 đã cho phép khai báo các kiểu mảng, nhưng vì để tương thích các phiên bản cũ nên ở kịch bản trước tôi đã phải bỏ đi tính năng này. Công hiệu mạnh nhất của kịch bản shell là sử dụng các hàm xử lý biểu thức chính qui như các hàm sed, grep, expr. Một lệnh của các hàm này có thể thay thế cho một khối lượng lớn các quá trình suy diễn tự động khi xử lý xâu kí tự- phần tử của một ngôn ngữ. Hàm sed với lựa chọn –i ở trong một vòng lặp có thể làm thay đổi nội dung hàng triệu file trong thời gian tính bằng giây đồng hồ, nó là thần tiên trong việc xây dựng, nhưng cũng là vũ khí khủng trong việc phá hủy. Chính vì vậy, tôi giới thiệu một kịch bản shell điển hình trước tiên, bởi theo kinh nghiệm của tôi, muốn khai thác hay xây dựng HĐH, cần vượt qua cửa ải này trước đã.

Chúng ta sẽ đi qua một loạt bài về xây dựng HĐH, sau đó sẽ phân tích các ý nghĩa triết học

Bài 1- Hệ điều hành: 5 yếu tố liên quan Kernel

1) Kernel là khái niệm quen thuộc, là hạt nhân của HĐH, bao gồm các mã điều phối các tiến trình, lịch trình, ngắt phần cứng, và bao gồm các drivers cơ bản, nhưng ngoài bản thân kernel còn có 4 yếu tố khác liên quan tới nó:

2) initrd.img: ramdisk hay ramfs, là một phần của kernel được tách ra, được tải cùng và sau kernel từ boot loader. Tên của nó không quan trọng về kĩ thuật vì bạn có thể đặt một symlink tới nó. Initrd.img bao gồm các module bổ sung là mã điều khiển và drivers do bạn lựa chọn khi tạo ra. Initrd.img là lựa chọn, sự có mặt của nó hay không là tùy thuộc cung cách thiết kế HĐH của bạn. Initrd.img được sử dụng để thiết lập không gian sớm người sử dụng, là một hệ thống chạy trong Ram với một vài lệnh xây dựng bên trong có thể thực hiện như thể nó đã được gắn vào hệ thống thật sự trên đĩa cứng. Initrd.img cũng dùng để nạp các drivers đặc biệt, chẳng hạn nếu đĩa cứng của bạn là ổ cứng đặc thì khi tạo Initrd.img bạn phải thêm module hay lựa chọn sd-mod. Tuy nhiên nếu driver này đã bao hàm trong kernel chính thì không cần đến Initrd.img.

3) Kernel-modules: đây là các module khả nạp mà bạn đã lựa chọn không gộp vào kernel khi cấu hình biên dịch kernel. Kernel-modules được tải bộ phận lúc khởi động hệ thống hoặc bất cứ khi nào cần đến tùy theo các kịch bản thiết kế.

4) Kernel-firmware: gồm các phần mềm cơ sở cho các driver phần cứng của bên thứ ba, chẳng hạn đối với thiết bị wifi. Kernel-firmware không đi theo phiên bản của Kernel.

5) Kernel-headers: các tệp tiêu đề kernel để biên dịch. Khi build (xây dựng) glibc bạn phải chỉ ra vị trí của các file này, mặc định nằm trong /usr/include. Trình biên dịch gcc sẽ không thực hiện được nếu không có các file header này. Nếu bạn xây dựng hệ thống từ đầu, có thể hệ thống của bạn chưa có Kernel-headers. Đến thư mục nguồn của kernel và tạo Kernel-headers bằng lệnh sau: make headers_install INSTALL_HDR_PATH=<your-directory>

Advertisements

1 thought on “Hệ điều hành: 5 yếu tố liên quan Kernel

Gửi phản hồi

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: