Thứ Tư, 12 tháng 3, 2014

Cùng tìm hiểu kiến trúc của *nix

Khi bạn cài đặt Ubuntu (hay 1 bản phân phối khác của Linux) vào máy tính: Bạn đã tự sở hữu cho mình 1 hệ điều hành miễn phí, bảo mật và tuyệt đẹp lung linh.

Nhưng..
..nhưng có khi nào bạn chợt tự hỏi: Cái quái gì đây nhỉ? Sao một thứ tốt thế này người ta lại 'miễn phí', cho không biếu không mình như thế này [1]? Mình đang làm việc với cái quái gì đây nhỉ [2]???

Không nằm ngoài mục đích giúp đỡ cho bạn hiểu ra rằng bạn đang 'làm việc với cái quái gì' (trả lời thắc mắc [2]), hôm nay, HTTL xin giới thiệu đến quý bạn đọc kiến trúc của Linux.

Bạn muốn tìm hiểu qua 1 chút về cái mà bạn đang dùng, để làm chủ nó dễ dàng hơn chứ? Nào, chúng ta cùng bắt đầu!



1. Những ngạc nhiên, thắc mắc buổi ban sơ:


Ở bài *nix step7: Các bạn đã được làm quen, và có thể đã thử cài đặt một số môi trường làm việc khác nhau cho Linux của bạn.

Mỗi môi trường làm việc, ngoài giao diện khác nhau, còn có những ứng dụng khác nhau kèm theo, giúp bạn có thể lựa chọn lấy 1 môi trường phù hợp nhất cho bạn: Là Unity, hay Gnome, hay KDE, LXCE, XFCE...

Đó, hiểu theo nghĩa đơn giản, chính là các lớp vỏ khác nhau (shell) cho hệ điều hành (OS) của bạn.
Theo nghĩa đơn giản: OS = kernel + shell.

Trên shell, ngoài các ứng dụng (applications) đi kèm shell, ta còn có thể cài thêm các ứng dụng khác lên đó để làm việc (ví dụ: Google Chrome).

Wow! Thật ngạc nhiên! Bạn có thể tự thay shell cho OS của mình như chuyên gia, chỉ với vài câu lệnh đơn giản trong *nix step7, mà bạn không biết, hay không để ý!

Vậy là, với Linux: Ta có thể tùy nghi thay vỏ (shell) cho nó, sao cho nó phục vụ mình được tốt nhất.


Vỏ thay được, vậy còn 'cái hạt' bên trong vỏ (kernel), ta có thể ..rút ra thay được không?
Nếu bạn thường xuyên cập nhật cho Linux, hẳn nhiều khi bạn để ý rằng: Ngoài việc cập nhật các ứng dụng mới, các bản vá lỗi... thì thỉnh thoảng, bạn thấy Linux còn cập nhật một dòng khá là lạ mắt:
linux-image-XXXXXX
Hình minh họa cho việc cập nhật lõi mới: linux-image-3.11.0-18-generic

Đó chính là lõi (kernel) của Linux!

Vậy là, ngạc nhiên thay: Với Linux OS: Bạn muốn thay lõi thì thay, mà bạn muốn ..thay vỏ cũng thay được tuốt.
Đó chính là sự tuyệt vời của Linux, mà một hệ điều hành đóng (Windows, Mac OS) không thể làm được.

2. Kiến trúc của Linux:

Như hình minh họa mà HTTL vẽ ở đầu bài, các bạn có thể thấy chúng ta (usr) giao tiếp với lớp shell (bao gồm applications), lớp shell tác động vào kernel, và kernel buộc phần cứng làm việc theo sự điều khiển của bạn.
Đó chính là kiến trúc cơ bản của Linux.

Hiểu đơn giản:
Hardware (phần cứng, bao gồm các thiết bị ngoại vi như chuột, bàn phím..): Bạn có thể thay đổi được hardware mà, đúng không?
Ví dụ: Bạn thay thế ổ cứng, bạn nâng cấp CPU, bạn nâng cấp RAM, hay thậm chí bạn ..cắm chuột, cắm USB vào máy tính: Bạn đang thay đổi phần cứng của máy tính.

Phần cứng bạn còn thay được dễ dàng như vậy, thì việc ..rút lõi này thay lõi khác tốt hơn, hay việc bỏ lớp vỏ này thay lớp vỏ khác, là điều hoàn toàn xảy ra trong thế giới tuyệt vời của Linux!

Đây chính là cơ sở để sau này, nếu muốn, chúng ta có thể tự xây dựng riêng 1 linux kernel cho chúng ta.
Hay thậm chí cả việc xây dựng cả 1 bộ Shell cho chúng ta, tùy theo sở thích của bạn.
Bạn đã xuất hiện ý nghĩ mà các team vẫn thường làm: Tự mình xây dựng cho mình 1 bản phân phối riêng cho mình, mang dấu ấn của mình.
..biết đâu, bản phân phối của bạn lại trở nên lớn mạnh như Ubuntu thì sao? Không có gì là không thể :)

HTTL rất mong gặp lại các bạn ở bài viết sau, để giải đáp cho thắc mắc ở [1]: Tại sao Linux lại luôn miễn phí? Cùng tìm hiểu thế giới *nix qua 2 giấy phép 'điên rồ': GPL và LGPL.
Chúc các bạn có những giây phút vui vẻ ^_^
./.
______________
...
.
.
.
???
?: Sao HTTL lại viết về kiến trúc của *nix ít vậy? Mình muốn tìm hiểu nhiều hơn, HTTL có thể viết thêm được không?
!: Wow <3, rất hoan nghênh tinh thần học hỏi của bạn, HTTL rất sẵn lòng để làm việc đó.
Tuy nhiên, Linux là một thế giới rất bao la rộng lớn, và để tạo thành 1 thế giới rộng lớn như hiện nay: Hàng triệu lập trình viên trên thế giới đã bỏ không ít công sức ra, để ngày hôm nay và cả những thế hệ sau, được 'ngồi im' mà hưởng thành quả.
Và, để tìm hiểu thực sự kiến trúc của lõi (riêng lõi thôi nha) Linux, chúng ta cần đọc 1 cuốn sách 'mỏng' như thế này:

Bạn có thể download về đọc tại đây: Professional Linux Kernel Architecture
Chúc bạn ..vẫn vui vẻ ^_^

Không có nhận xét nào:

Đăng nhận xét