Ba hệ điều hành phổ biến nhất trên thế giới là Windows, Mac, và Linux. Ba hệ điều hành này nhận tất cả sự chú ý, hai cái trước nhiều hơn cái sau, và có lẽ là những cái duy nhất bạn từng nghe nói.
Điều gì sẽ xảy ra nếu tôi nói rằng hai trên ba hệ điều hành phổ biến nhất thực sự đã tích hợp triết lý cốt lõi của một thứ gọi là UNIX? Những triết lý này là các khái niệm cơ bản của hệ thống chia sẻ thời gian (time-sharing system) cho phép nhiều người dùng truy cập một mainframe máy tính đơn lẻ cùng lúc.
HDG Giải thích: UNIX là gì?
UNIX và hệ điều hành UNIX-like là hệ điều hành multi-user (đa người dùng) và multi-tasking (đa nhiệm) mạnh mẽ và phổ biến nhất trên thị trường. Nhiều thế hệ UNIX đã được phát triển cho nhiều máy khác nhau qua nhiều năm bao gồm hệ thống POSIX hiện đại như Linux, các biến thể của nó, và Mac OS. Khó tin một thứ mạnh mẽ như vậy có khởi đầu khiêm tốn như vậy.
Được phát triển tại Bell Telephone Laboratories (Bell Labs), bởi một nhóm nhỏ lập trình viên, UNIX được viết bằng ngôn ngữ lập trình C. Điều này cho phép nó cài đặt trên thực tế bất kỳ máy tính nào có C compiler. Điều này đơn lẻ mang lại tính di động (portability), linh hoạt tự nhiên, và làm cho nó trở thành lựa chọn khá mạnh mẽ như hệ điều hành.
Ngoài việc rẻ tiền, Bell Labs phân phối hệ điều hành ở dạng ngôn ngữ nguồn (source language), cho phép bất kỳ ai lấy được nó sửa đổi và tùy chỉnh cho mục đích riêng. Điều này sinh ra hàng chục phiên bản UNIX khác nhau trong vòng một thập kỷ, chạy trên nhiều site khác nhau.
Bell Labs cuối cùng tách ra năm 1984. Tuy nhiên, họ bắt đầu marketing UNIX trong cố gắng định nghĩa một phiên bản chuẩn của hệ thống. Họ phát triển thứ mà nhiều người thấy quá hạn chế, một trong số đó là Richard Stallman, chịu trách nhiệm cho dự án GNU. Dự án GNU là cơ sở cho Linux chúng ta biết hôm nay vì nó bao gồm kernel Linux chứ không phải kernel UNIX.
Tuy nhiên, Linux được cảm hứng từ MINIX, một hệ điều hành UNIX-like được tạo cho mục đích giáo dục. Điều này dẫn đến hiệu ứng domino cho hầu hết hệ điều hành có sẵn hôm nay. GNU/Linux xuất phát từ thiết kế UNIX và lần lượt, nhiều hệ điều hành hôm nay, bao gồm Android, Chrome OS, Steam OS, và lượng lớn hệ điều hành nhúng (embedded) cho thiết bị, đều dựa trên Linux.
Chuẩn UNIX (The UNIX standard)
Một chuẩn đã đến, nhưng không dựa trên bất cứ điều gì của AT&T. Hôm nay, nhãn hiệu "UNIX" được sở hữu bởi The Open Group. Cũng thế cho Single UNIX Specification. Bất kỳ hệ điều hành nào dùng UNIX phải được chứng nhận (certified) bởi The Open Group và tuân thủ Single UNIX Specification.
Như được minh họa bởi The Open Group:
POSIX, như đã nhắc trước, là một họ các chuẩn, được chỉ định bởi Institute of Electrical and Electronic Engineers (IEEE - Viện Kỹ sư Điện và Điện tử). Chúng phục vụ mục đích làm rõ và thống nhất các application programming interfaces (API) được cung cấp bởi hệ điều hành UNIX-like.
Điều này làm cho khi bạn viết chương trình dựa trên chuẩn POSIX, tính di động (portability) và chức năng trở nên dễ dàng giữa họ dẫn xuất lớn của UNIX như Linux và Mac OS. Dùng API hoặc code không được chuẩn hóa như một phần của POSIX cho hệ điều hành UNIX-like sẽ làm cho việc port sang các hệ thống UNIX-like khác ngày càng khó khăn.
Chương trình, Hệ thống, và Hệ thống con UNIX là gì?
Lệnh UNIX được thực thi trên giao diện dòng lệnh (command line interface) được cung cấp bởi một shell. Shell này là một chương trình sẽ đọc lệnh nhập vào và hoặc tự thực thi nó, hoặc chuyển nó cho kernel (nhân).
Một "core kernel" (nhân cốt lõi) là những gì hệ thống UNIX được xây dựng xung quanh, quản lý hệ thống và các tiến trình khác. Đây là lõi của hệ điều hành UNIX và trực tiếp tương tác với phần cứng bên dưới để cung cấp một tập hợp dịch vụ tiêu chuẩn. Kernel subsystem (hệ thống con nhân) có thể bao gồm quản lý tiến trình (process management), quản lý file (file management), quản lý bộ nhớ (memory management), quản lý mạng (network management) và những cái khác.
Một vài triết lý cốt lõi, bao gồm yêu cầu như mục đích đơn nhất (single purpose), tương tác lẫn nhau (interoperable), và làm việc với giao diện văn bản chuẩn hóa (standardized text interface), là những gì chương trình UNIX được thiết kế quanh.
Khi nói đến tính năng UNIX, đây là danh sách một vài cái nổi bật:
- Cho phép tài nguyên giống nhau được chia sẻ bởi người dùng khác nhau trên một hệ thống đơn.
- Cung cấp multi-tasking, trong đó mỗi người dùng có thể thực thi nhiều tiến trình cùng lúc.
- Hệ điều hành đầu tiên được viết bằng ngôn ngữ bậc cao (high-level language), làm cho nó dễ port sang máy khác với ít thích nghi.
- Cấu trúc file phân cấp (hierarchical file structure) cho phép truy cập và bảo trì dữ liệu dễ dàng hơn.
- Chức năng mạng built-in (tích hợp sẵn) để dễ dàng trao đổi thông tin giữa người dùng.
Tại sao UNIX quan trọng
Ngoài Windows và hệ thống dựa trên Windows, đại đa số hệ điều hành bạn sẽ thấy có triết lý dựa trên UNIX. Nếu bạn nhìn terminal hoặc hệ thống file của Mac OS X, bạn sẽ nhận thấy sự tương đồng đắt giá với Linux. Cả hai hoàn toàn khác với Windows. Điều này vì Linux và Mac OS là hệ thống UNIX-like.
Hiểu điều này sẽ giúp bạn cũng hiểu UNIX quan trọng như thế nào và đã quan trọng như thế nào. Một trong những triết lý UNIX chính dùng hôm nay là tạo ra các tiện ích mô-đun (modular utilities) nhỏ để làm một việc đơn lẻ ở mức độ hiệu quả'exceptional (ngoài thường). Làm quen với Mac OS Terminal cũng sẽ làm bạn quen với Linux Terminal và ngược lại. Đây là UNIX trong vỏ hạt dẻ.
Hệ thống UNIX-like dựa vào một hệ thống file đơn (single file system) cho chương trình giao tiếp với nhau. Hệ thống kiểu Windows dựa vào DOS. Đây là lý do chỉ hệ thống kiểu Windows mới có drive letter (chữ cái ổ đĩa). Tất cả hệ điều hành khác có nó sao cho mọi file trên hệ thống là một phần của một phân cấp thư mục đơn (single directory hierarchy). Lại một lần nữa, tất cả nhờ triết lý UNIX.
UNIX có thể thấy trong kiến trúc hệ điều hành như BSD, Linux, và Mac OS, hoàn toàn bởi thiết kế. Có thể nói không có UNIX, sẽ không có Mac OS, và rất có thể nói tương tự về đối thủ của nó, Windows kể cả.
Chúng tôi rõ ràng đang nói phóng đại (hyperbolic) ở đây. Tuy nhiên, bạn phải thừa nhận UNIX đã đóng vai trò quan trọng trong phát triển mọi hệ điều hành dùng hôm nay. Nếu điều đó không minh họa tầm quan trọng của UNIX và triết lý của nó, tôi không chắc gì sẽ làm được.