macOS có phải UNIX hay không?

macOS có phải UNIX hay không?
Photo by Sameer from Unsplash

Hệ điều hành macOS có phải UNIX hay không? Hay chỉ là Unix-like. Đây (có lẽ) là một câu hỏi tương đối phức tạp và có nhiều quan điểm trái ngược nhau. Trong bài viết này, tôi sẽ trình bày những hiểu biết cũng như quan điểm của mình về chuyện này.

UNIX

UNIX là hệ điều hành ra đời cách đây hơn 50 năm tại Bell Labs – một đơn vị nghiên cứu và phát triển của AT&T. Năm 1973, UNIX version 4 được viết lại hoàn toàn bằng ngôn ngữ C (trước đó viết bằng hợp ngữ). Nhờ đó, hệ điều hành này có thể được biên dịch và chạy trên nhiều máy tính khác nhau.

Cùng năm, hai tác giả chính của UNIX là Ken Thompson và Dennis Ritchie đã trình bày về UNIX (với tiêu đề “The UNIX Time-Sharing System”) tại hội thảo khoa học Symposium on Operating Systems Principles. Ngay sau đó, nhiều người mong muốn nhận được một bản sao hệ điều hành này.

Tuy nhiên, AT&T bị ràng buộc bởi một thỏa thuận pháp lý từ năm 1956 (nhằm tránh bị kiện độc quyền) rằng họ không thể kinh doanh bất cứ dịch vụ nào ngoài dịch vụ viễn thông. Do đó, hệ điều hành không phải là thứ mà AT&T có thể kinh doanh. Công ty đã đưa ra một quyết định mang tính lịch sử: phân phối UNIX bằng mã nguồn, chỉ thu phí vận chuyển và một khoản phụ phí “nhỏ”.

BSD

Bởi vì không phải một sản phẩm kinh doanh, UNIX được phân phối dưới dạng “as is”, nghĩa là sẽ không có hỗ trợ hay sửa lỗi. Dần dần, những người sử dụng UNIX lập nên một cộng đồng để giúp đỡ lẫn nhau. Người ta có thể nhận được mã nguồn của UNIX, thay đổi nó và nhận sự giúp đỡ từ người khác. Theo thời gian, nhiều thay đổi đã được thêm vào hệ điều hành UNIX gốc của AT&T.

Giáo sư khoa học máy tính ở đại học UC Berkeley, Bob Fabry, là một thành viên của ủy ban hội thảo năm 1973. Ông đã nghe bài thuyết trình về UNIX và cũng yêu cầu một bản sao của nó.

Năm 1974, UNIX được cài đặt lên máy tính PDP-11 tại Computer Sciences Research Group (CSRG) của đại học UC Berkeley. Sau đó, Kem Thompson đã làm việc ở đây với tư cách giáo sư thỉnh giảng khoảng 1 năm.

Họ đã bổ sung nhiều tính năng cũng như phần mềm ứng dụng vào UNIX. Những gì họ đã phát triển được chia sẻ dưới dạng mã nguồn mở trong cộng đồng người dùng UNIX. Dần dần, những thứ đó trở thành một phiên bản hệ điều hành hoàn chỉnh. Hệ điều hành này lúc đầu được gọi là Berkeley Unix và sau đó được gọi là Berkeley Software Distribution (BSD) và được đánh số phiên bản, ví dụ 4.2BSD.

Năm 1984, AT&T được giải phóng khỏi ràng buộc pháp lý của năm 1956 và họ đã có thể kinh doanh hệ điều hành UNIX. Tuy nhiên, lúc này việc cấp phép sử dụng UNIX rất phức tạp vì phiên bản UNIX của AT&T đã được bổ sung nhiều code từ BSD như TCP/IP, vi, csh. Ngược lại, BSD cũng chứa nhiều code từ AT&T nên không thể tiếp tục phân phối một cách tự do.

Để giải quyết vấn đề này, AT&T đã phát triển System V. Một phiên bản BSD không chứa code của AT&T cũng được phát triển. Sau khi loại bỏ hoàn toàn code của AT&T, BSD thiếu khoảng 20% tính năng so với phiên bản gốc. Một kỹ sư phần mềm là William Jolitz đã bổ sung phần còn thiếu và phiên bản BSD đầy đủ được công bố với tên là 386BSD.

Dự án 386BSD đã ngừng từ lâu, nhưng dựa trên code của dự án này, các hệ điều hành NetBSD và FreeBSD đã ra đời. FreeBSD có ảnh hưởng rất lớn đến macOS sau này.

NeXTSTEP

Năm 1985, Steve Jobs bị buộc phải rời khỏi Apple. Ngay sau đó, ông đã thành lập một công ty tên là NeXT, Inc. chuyên kinh doanh workstation. Công ty này đã phát triển một hệ điều hành riêng cho các dòng máy tính của mình và đặt tên là NeXTSTEP. Đây là một phiên bản hệ điều hành dựa trên BSD nhưng sử dụng hạt nhân riêng tự phát triển.

Hạt nhân của NeXTSTEP là sự kết hợp giữa Mach microkernel và hạt nhân của 4.3BSD. Mach là một microkernel được phát triển tại đại học Carnegie Mellon để nghiên cứu về hệ thống phân tán và tính toán song song. Các nhà khoa học đã sử dụng hệ điều hành BSD và phát triển hạt nhân riêng phục vụ nghiên cứu.

XNU

Năm 1996, Apple đã mua lại công ty NeXT, Inc. và sở hữu luôn hệ điều hành NeXTSTEP. Dựa trên NeXTSTEP, Apple bắt đầu xây dựng một hệ điều hành mới cho máy tính cá nhân. Hệ điều hành đó sau này chính là MAC OS X (bây giờ đổi tên thành macOS).

Hạt nhân Mach gốc từ đại học Carnegie Mellon được thay thế bởi hạt nhân Mach hiện đại hơn, phát triển bởi the Open Software Foundation và sử dụng trong hệ điều hành OSF/1. Hạt nhân BSD cũng được cập nhật lên phiên bản mới hơn lấy từ FreeBSD. Hạt nhân của Apple phát triển là kiến trúc lai giữa monolithic và microkernel.

Apple cũng phát triển I/O Kit dựa trên DriverKit của NeXTSTEP và đưa vào hạt nhân của hệ điều hành. Nhờ đó, việc thêm driver cho các thiết bị đơn giản hơn rất nhiều, không cần phải cập nhật hạt nhân mỗi khi cần thêm thiết bị mới. Hạt nhân do Apple phát triển được đặt tên là XNU (viết tắt của “X is Not Unix”).

Tiêu chuẩn SUS

Năm 1996, hai tổ chức X/Open và Open Software Foundation hợp nhất trở thành The Open Group. Sau nhiều vụ mua bán, hiện nay, The Open Group là đơn vị sở hữu thương hiệu UNIX. Tổ chức này cấp chứng nhận cho những hệ điều hành đạt chuẩn, và những hệ điều này có thể sử dụng thương hiệu UNIX (viết hoa toàn bộ).

Do đó, các hệ điều hành liên quan đến UNIX hiện nay có thể phân loại như sau:

  • UNIX: các hệ điều hành đạt chuẩn, được chứng nhận bởi The Open Group và được phép sử dụng thương hiệu UNIX ®.
  • Unix: các hệ điều hành bao gồm UNIX và Unix-like.
  • Unix-like: các hệ điều hành hoạt động giống UNIX nhưng không được chứng nhận.

Tất nhiên, có thể có những hệ điều hành đạt chuẩn UNIX nhưng chưa nhận được chứng nhận từ The Open Group. Xin chứng nhận là một quá trình tốn thời gian và tiền bạc, hơn nữa chứng nhận cũng không mang lại quá nhiều giá trị. Do đó, nhiều hệ điều hành (nhất là các hệ điều hành mã nguồn mở) không mặn mà gì với chứng nhận này.

Có nhiều quan điểm khác nhau về cách phân loại. Có ý kiến cho rằng một hệ điều hành UNIX phải quan hệ họ hàng với hệ điều hành gốc của AT&T. Cá nhân tôi không đồng tình với quan điểm này. Với tư cách là chủ sở hữu thương hiệu, The Open Group xác nhận hệ điều hành nào là UNIX thì nó chính là UNIX, cho dù đó có là một hệ điều hành được viết mới hoàn toàn vào thời điểm bây giờ.

Có hai bộ tiêu chuẩn liên quan đến UNIX: POSIX (Portable Operating System Interface) và SUS (Single UNIX Specification) được phát triển bởi The Austin Common Standards Revision Group. SUS là bộ tiêu chuẩn rộng hơn, bao gồm luôn cả POSIX (phần còn lại là X/Open Curses). Nếu một hệ điều hành tuân thủ SUS (do The Open Group xác định), nó sẽ là UNIX và được chứng nhận.

Bộ tiêu chuẩn SUS là một tập hợp các tiêu chuẩn rất dài (gần 4000 trang tài liệu), trong đó mô tả sự hoạt động chi tiết của hệ điều hành. Mọi xử lý đồng bộ, bất đồng bộ, I/O, giao diện người dùng, v.v… đều đã được tiêu chuẩn hóa. Điểm quan trọng là bộ tiêu chuẩn này chỉ quy định giao thức và tương tác chứ không quy định cách triển khai và cài đặt cụ thể.

macOS có phải UNIX hay không?

Câu trả lời ngắn gọn là: .

macOS đạt tiêu chuẩn UNIX 03, đã được The Open Group chứng nhận. Kể từ phiên bản MAC OS X 10.5 (Leopard) ra mắt năm 2007 đến nay, ngoại trừ MAC OS X 10.7 Lion, tất cả các hệ điều hành macOS đều đạt được chứng nhận này.

Thời điểm bài viết này, phiên bản mới nhất là macOS 14 Sonoma.

Như ở trên, tôi đã trình bày, macOS bắt nguồn từ BSD và có vẻ có chút liên quan đến UNIX gốc của AT&T mặc dù không có phần code nào của nó có nguồn gốc từ AT&T. Nhưng điều đó cũng không quan trọng. Ngay cả một hệ điều hành được phát triển mới hoàn toàn cũng có thể trở thành UNIX, miễn là nó đáp ứng được tiêu chuẩn SUS.

Một điểm thú vị là hệ điều hành Darwin, hệ điều hành mã nguồn mở của Apple chứa các thành phần cốt lõi của macOS lại không được chứng nhận tuân thủ POSIX.

Tôi xin lỗi nếu bài viết có bất kỳ typo nào. Nếu bạn nhận thấy điều gì bất thường, xin hãy cho tôi biết.

Nếu có bất điều gì muốn nói, bạn có thể liên hệ với tôi qua các mạng xã hội, tạo discussion hoặc report issue trên Github.