Nội dung của bài này là những khái niệm, những tiếp cận ban đầu người đọc nên biết về hệ điều hành Linux. Bài học cũng sẽ giải thích những đặc điểm khiến Linux khác biệt và nổi trội hơn những hệ điều hành Unix nổi tiếng khác.
UNIX là gì? Linux là gì?
Rất nhiều người bắt đầu tiếp cận với Linux không phân biệt được thế nào là Unix, thế nào là Linux, mặc dù hai khái niệm này luôn luôn đi đôi với nhau.
Unix là một trong những hệ điều hành đầu tiên được viết bằng ngôn ngữ bậc cao (C) trên thế giới. Unix được phát triển bởi phòng nghiên cứu Bell từ những năm đầu những năm 1969-1970, và rất nhanh trở nên phổ biến đặc biệt là đối với các máy tính chuyên dụng (workstations).
Có rất nhiều phiên bản hệ điều hành thương mại khác nhau, của các hãng khác nhau, ví dụ như: Solaris của Sun, HP-UX của Hewlett-Packard, AIX của IBM hay Mac OS X nổi tiếng của APPLE. Tất cả những hệ điều hành này đều có nền tảng là Unix, và thêm vào những tính năng, những thành phần được phát triển của riêng các hãng.
Linux cũng là một thành viên trong đại gia đình các hệ điều hành phát triển dựa trên nền tảng Unix. Linux được phát triển bởi Linus Torvalds vào năm 1991, và hướng tới dòng máy tính cá nhân (personal computer) thay vì dòng máy tính chuyên dụng (workstations). Và điểm nổi bật của Linux, nó không phải là một phiên bản hệ điều hành thương mại – có nghĩa, Linux là hoàn toàn miễn phí.
Bởi vì tính lịch sử cũng như kế thừa như vậy, Linux và Unix thực chất là có chung một nền tảng phát triển (có thể coi Linux là “con” của Unix).
Kernel trong một hệ điều hành
Kernel là thành phần cốt lõi của một hệ điều hành. Kernel bản chất là một chương trình máy tính, được khởi chạy trong quá trình khởi động của hệ thống (sau bootloader). Nó quản lý bộ nhớ, các thiết bị ngoại vi như bàn phím, chuột … và có quyền kiểm soát mọi thứ trong hệ thống.
Chính vì là thành phần vô cùng quan trọng của một hệ điều hành, kernel thường được nạp vào một vùng nhớ riêng và được bảo vệ khỏi sự can thiệp từ các chương trình ứng dụng và từ các phần khác của hệ điều hành.
Sự tách biệt giữa kernel và phần còn lại của hệ điều hành, dẫn tới việc chúng ta có 2 khái niệm quen thuộc khác khi học về Linux: kernel space và user space. Tất cả mọi hoạt động của kernel, ví dụ như khởi tạo các tiến trình, xử lý các ngắt (interupts), quản lý phần cứng … đều được hoạt động ở kernel space. Ngược lại, các thao tác của người dùng như chạy một chương trình, viết một đoạn văn trên trình soạn thảo văn bản được thực hiện ở user space. Việc tách biệt không gian hoạt động này tránh xung đột dữ liệu của kernel và dữ liệu của user, bảo vệ kernel khỏi sự tác động từ phía user space.
Linux kernel và các kernel nền tảng Unix khác
Như đã đề cập ở phần đầu, Linux bản thân cũng là một hệ điều hành dựa trên nên tảng Unix, và nó ra đời cũng khá muộn (1991). Vậy Linux có gì để cạnh tranh với những hệ điều hành Unix nổi tiếng và có lịch sử lâu đời khác? Đó là Linux ra đời sau nhưng vẫn kế thừa những tính năng, những thiết kế nổi bật của một hệ điều hành Unix:
- Monolithic Kernel – Kernel nguyên khối: Cũng giống như nhiều kernel Unix khác, Linux Kernel có kiến trúc nguyên khối, bao gồm tất cả các chức năng cốt lõi của hệ điều hành và các drivers của thiết bị.
- Nạp hoặc dỡ bỏ các kernel modules một cách linh hoạt: Linux kernel cho phép nạp hoặc dỡ bỏ các kernel modules (tiêu biểu là các device drivers) một cách tự động và linh hoạt, tùy theo nhu cầu. Trong các hệ điều hành Unix thương mại khác, chỉ có SVR4.2 và Solaris có tính năng này.
- Đa luồng (Multi-thread) trong kernel và trong các ứng dụng.
- Preemptive Kernel– Kernel định thời: Linux hỗ trợ bật hoặc tắt chức năng định thời trong kernel. Cụ thể về tính năng này sẽ được giải thích ở phần sau của khóa học.
- Linux Kernel hỗ trợ hệ thống đa xử lý nhiều CPU – multiprocessors.
- Linux Kernel hỗ trợ nhiều loại filesystems: Ext2, Ext3, ReiserFS …
Bên cạnh những tính năng cơ bản, tính năng nền tảng, Linux còn có những đặc điểm tuyệt vời khi đem so sánh với các hệ điều hành thương mại khác.
- Linux là hoàn toàn miễn phí khi sử dụng: Bạn sẽ không mất một chi phí nào khác (ngoài phần cứng) khi sử dụng một thiết bị chạy Linux.
- Linux cho phép bạn toàn quyền xem, sửa đổi mã nguồn tất cả thành phần của kernel.
- Linux có thể chạy trên cả những phần cứng chậm và rẻ tiền: Bạn có thể xây dựng một network server với CPU Intel 80386 và 4MB RAM.
- Linux là một hệ điều hành rất mạnh mẽ: Hệ thống Linux rất nhanh vì nó khai thác được toàn bộ các thành phần phần cứng. Hầu hết các thiết bị mạng, các server hiện nay chạy Linux.
- Linux tương thích với rất nhiều hệ điều hành phổ biến khác: Một ví dụ khi cài song song 2 hệ điều hành Linux và Window, bạn vẫn có thể sử dụng các phân vùng của Window trên Linux nhưng không thể làm được điều ngược lại.
- Linux được hỗ trợ rất tốt: Rất dễ dàng để có các bản cập nhật, các bản vá lỗi của Linux hơn các hệ điều hành khác.
Kết luận
Kết thúc bài học, các bạn đã có một cái nhìn chung về Linux – Linux Kernel cũng như những đặc điểm nổi bật của Linux, điều khiến Linux phát triển vô cùng nhanh chóng và rộng rãi.
Bài học tiếp theo sẽ nói tới kiến trúc của Linux Kernel, mô tả các thành phần, chức năng của các thành phần trong Linux Kernel.