Thứ Năm, 31 tháng 5, 2012

Phân biệt giữa UNIX và Linux

Giới thiệu sơ lược

UNIX là một HĐH đa nhiệm, đa người dùng được phát triển vào năm 1969 bởi một nhóm nhân viên của công ty AT&T tại phòng thí nghiệm Bell Labs. Qua nhiều năm, nó đã được phát triển thành nhiều phiên bản sử dụng trên nhiều môi trường phần cứng khác nhau. Hầu hết các phiên bản UNIX hiện nay đều là những biến thể của UNIX gốc và được các nhà phát triển sửa đổi, viết lại hoặc thêm các tính năng, công nghệ riêng biệt. Các phiên bản UNIX hiện nay có thể kể đến:

- HP-UX (HP)
- AIX (IBM)
- Solaris (Sun/Oracle)
- Mac OS X (Apple)

Linux là HĐH được phát triển bởi Linus Torvarlds tại trường đại học Helsinki (Phần Lan) vào năm 1991. Linux được tạo ra với mục đích cung cấp cho người dùng 1 giải pháp phần mềm miễn phí thay thế cho UNIX. Linux có thể chạy trên rất nhiều nền tảng khác nhau như x86 và x64 từ Intel/AMD trong khi UNIX chỉ chạy trên 1 hoặc 2 kiến trúc nhất định.


Khác biệt về kỹ thuật

Các hãng phát triển UNIX thường thường có những đối tượng khách hàng và nền tảng nhất định, và các phiên bản UNIX đều là HĐH thương mại và đươc bán với giá ko hề rẻ chút nào. Những HĐH này thường được phát triển có mục đích, có các tiêu chuẩn cho khách hàng và thống nhất giữa các phiên bản. Khi một phiên bản UNIX mới được nâng cấp, khách hàng sẽ nhận được những thông tin chi tiết từ nhà phát triển về các tính năng, công nghệ mới được áp dụng, tính tương thích đối với các bản cũ hơn, v.v... 

Trong khi đó, Linux được phát triển bởi nhiều lập trình viên với nhiều bối cảnh khác nhau, và vì thế họ có những ý kiến, quan điểm và mục tiêu khác nhau. Trong cộng đồng Linux ko hề có một tiêu chuẩn chính xác nào về môi trường, công cụ lập trình cũng như khả năng đáp ứng của HĐH.


Kiến trúc phần cứng

Hầu hết các HĐH UNIX đều được lập trình để chạy trên một hoặc một nhóm kiến trúc phần cứng nhất định ví dụ HP-UX chạy trên hệ thống PA-RISC và Itanium, Solaris chạy trên SPARC và x86,... Việc giới hạn phần cứng giúp những công ty bán UNIX có thể tối ưu HĐH của mình để chạy thật tốt trên một hệ thống phần cứng nào đó.

Trái lại, vốn được thiết kế với mục đích cạnh tranh và thay thế UNIX nên Linux có thể chạy trên rất nhiều cấu trúc phần cứng, và số lượng các thiết bị gắn ngoài, thiết bị I/O được sử dụng hầu như ko giới hạn. Chính vì thế mà nhà phát triển Linux ko thể xác định người dùng sử dụng loại phần cứng nào nên không thể tối ưu HĐH cho phần cứng đó.


Nhân HĐH (kernel)

Kernel là cốt lõi của mọi HĐH. Đối với các bản thương mại của UNIX, mã nguồn đều ko được phân phối tự do, và các hãng sản xuất UNIX thường cung cấp kernel dưới dạng nhị phân hay các gói “nguyên khối” (monolithic package), và những người khác chỉ có thể nâng cấp, chỉnh sửa một phần nhỏ.

Đối với Linux, việc biên tập, vá lỗi kernel và driver dễ dàng hơn. Các bản vá lỗi được cung cấp dưới dạng mã nguồn và người dùng có thể tự do cài đặt, thậm chí chỉnh sửa nếu muốn. Các bản vá này thường ko được kiểm tra kỹ bằng UNIX. Và với các lập trình viên Linux, họ ko có thông tin đầy đủ về các môi trường và ứng dụng cần được kiểm tra, thử nghiệm, họ chỉ có thể dựa vào đánh giá của người dùng và các nhà phát triển khác để tìm lỗi.

Đa số các hãng phát triển UNIX thường viết lại nhân HĐH để phục vụ cho mục đích của mình. Ví dụ HĐH Mac OS X của hãng Apple có nhân là Darwin, được viết lại từ nền tảng BSD. Vì thế, các HĐH này được gọi là các phiên bản hay biến thể của UNIX.

Trong khi đó, các nhà phát triển Linux thường sử dụng chính nhân Linux trên HĐH của mình. Kernel của các HĐH như Fedora, Ubuntu, OpenSUSE,... đều gọi là Linux mặc dù chúng ko phải do Linus Torvalds phát triển. Do đó chúng ko được xem là các phiên bản khác nhau của Linux mà chỉ là các bản phân phối.


bachkhois said: 
1. Bản chất Linux ko phải là Unix. Linux chỉ cố gắng tương thích về "interface" với Unix, cụ thể là chuẩn POSIX ("Portable Operating System Interface for Unix"), tức là Linux sẽ "khớp" với Unix về "bề mặt" tương tự như 2 bánh răng khác nhau về đường kính mà vẫn ăn khớp được với nhau vậy. Chú ý là mã nguồn Linux hoàn toàn độc lập với Unix (như là cái bánh răng bằng thép và cái bánh răng bằng đá vậy).
2. Ko thể nói "Unix là nhân, Linux là HĐH thực sự" được, vì thực tế lại ngược lại. Nếu đọc nhiều bạn sẽ thấy người ta hay nói đến "Linux kernel" chứ hiếm khi nói "Unix kernel". Thậm chí trang web chứa mã nguồn Linux còn có tên là www.kernel.org mà.
Trong khi Unix được cung cấp cho doanh nghiệp với đầy đủ mọi thứ để đc triển khai & sửa đổi trong nội bộ doanh nghiệp thì Linux đc phát hành chỉ dưới dạng kernel, ko có trình biên dịch (biên dich bằng gcc của GNU project), không có hệ vỏ (shell) - bởi vậy nên mới tồn tại nhiều shell khác nhau: sh, bash, csh, ksh, không có bootloader (nên phải xài bootloader riêng ở ngoài nhu GRUB, LILO, syslinux), không có môi trường desktop (nên phải xài đồ ngoài như GNOME, KDE...), không có hệ thống khởi dậy tiến trình ban đầu (mà phải dùng init, upstart, systemd là những cái ngoài)...

Khi lấy cái Linux kernel, gộp chung với mấy thứ "dùng ngoài" kia nữa thì ta có các bản phân phối Linux như Ubuntu, Fedora, ArchLinux v.v...

Tính mở

UNIX là 1 HĐH đóng. Có lẽ trái với quan điểm của 1 số người, cho rằng Linux mở thì UNIX cũng là mở, nhưng thực ra nó là nguồn đóng. Và câu hỏi đặt ra là: Nếu UNIX là nguồn đóng thì tại sao nhiều hãng lại có mã nguồn để phát triển riêng? Câu trả lời có lẽ khiến bạn càng bất ngờ. Ban đầu, UNIX được phân phối cho các trường đại học và những doanh nghiệp có nhu cầu, với đầy đủ mọi thứ từ mã nguồn đến các công cụ lập trình. Nói cách khác, nếu UNIX là 1 chiếc xe thì khách hàng được cung cấp mọi thứ từ bản vẽ đến từng cái tua vít. Cũng chính vì thế mà các trường học và công ty có thể chỉnh sửa, thậm chí viết lại cả HĐH.

Linux mặt khác là 1 HĐH mã nguồn mở, người ta có thể tải, sử dụng, chỉnh sửa miển phí mà ko gặp trở ngại về luật bản quyền.

The Open Group và Single UNIX Specification

Có lẽ bạn cảm thấy khó hiểu khi các phiên bản của UNIX hầu hết là nguồn đóng nhưng chúng lại được gọi chung là UNIX. Vậy cái tên UNIX là mở hay sao? Nếu nghĩ vậy thì bạn đã lầm. UNIX là một cái tên được đăng ký thương hiệu và được sở hữu bởi một tổ chức tài chính Mỹ gọi là Open Group.

Open Group đưa ra 1 tiêu chuẩn cho các HĐH máy tính gọi là Single UNIX Specification (SUS), và những HĐH nào đạt được các yêu cầu của SUS thì mới được gọi là UNIX, ko cần biết nó được xây dựng dựa trên cái gì (HĐH Mac OS X được phát triển dựa trên nền tảng BSD, vốn ko thoả mãn SUS, nhưng nó được viết lại và đạt yêu cầu nên được phép mang thương hiệu UNIX). Ngoài ra, những HĐH khác ko thoả mãn SUS sẽ ko được mang thương hiệu UNIX và ko được gọi là UNIX-based mà được gọi là UNIX-like (giống UNIX), điển hình là BSD, FreeBSD.

Linux được Linus Torvalds viết trên 1 chiếc máy chạy HĐH MINIX, sau đó, nó được phát triển ngày càng hoàn thiện và có thể chạy độc lập với MINIX. Mà MINIX vốn chỉ là HĐH UNIX-like, nên có thể thấy quan hệ bà con giữa UNIX và Linux hơi bị xa chứ ko gần như chúng ta tưởng.

Dự án GNU và giấy phép GPL

GNU là chữ viết tắt của GNU’s not UNIX (bên trong lại có GNU, bó tay, chả biết GNU kia là gì). Đây là một dự án do Richard Stallman khởi xướng vào năm 1983 với mục đích tạo ra 1 hệ thống phần mềm có thể cạnh tranh và thay thế phần mềm UNIX. Stallman cũng cho ban hành giấy phép GNU General Public License (GNU GPL). Giấy phép này yêu cầu nhà phân phối phần mềm phải kèm theo mã nguồn của phần mềm đó (mã nguồn mở), và mã nguồn Linux được phân phối tự do cũng là vì lý do này.


Tổng kết

UNIX và Linux về cơ bản cũng ko khác nhau nhiều lắm, việc một nhà phát triển hay một doanh nghiệp muốn chuyển hệ thống máy tính của họ từ UNIX sang Linux cũng không quá khó khăn. Nhưng dù sao 2 người trông giống nhau ko có nghĩa họ là bà con với nhau. Linux và UNIX ko phải anh em mà còn là kẻ thù, ít nhất là về quan điểm của Linus Torvalds và dự án GNU.

0 nhận xét:

Đăng nhận xét