Khám phá hệ điều hành Unix: Từ PDP-7 đến cuộc cách mạng tệp tin và di sản vượt thời gian
Bài viết phân tích sâu bài báo kinh điển 'The Unix Time-Sharing System' của Dennis Ritchie và Ken Thompson, khám phá lịch sử ra đời Unix từ những ngày đầu trên máy PDP-7. Qua đó, chúng ta hiểu được quyết định táo bạo tách biệt dữ liệu và chương trình của Ken Thompson đã thay đổi nền tảng công nghệ thế giới, cũng như nguồn gốc các khái niệm quen thuộc như file descriptor và shell script.
Hành trình vĩ đại: Bài báo kinh điển về Unix và những bài học vẫn còn nguyên giá trị
Bài báo "The Unix Time-Sharing System" không chỉ là một tài liệu lịch sử khô khan, mà là một bức thư tình từ quá khứ của cộng đồng công nghệ gửi đến chúng ta ngày nay. Qua những dòng hồi ức của Ken Thompson và Dennis Ritchie, ta thấy được sự ra đời của Unix không phải là một kế hoạch vĩ đại được vạch sẵn, mà là kết quả của sự tò mò, kỷ luật và những quyết định táo bạo đầy tính tiên phong.
Bối cảnh: Từ Multics thất bại đến tầm nhìn cá nhân
Lịch sử Unix bắt đầu từ một sự thất vọng. Khi AT&T rút khỏi dự án hệ điều hành Multics, Ken Thompson không nhận nhiệm vụ mới như nhiều người khác. Bell Labs, với văn hóa think tank độc đáo, cho phép các nhà nghiên cứu tự do theo đuổi đam mê. Thompson khao khát tối ưu hóa throughput của ổ đĩa trống (drum disk) trên chiếc GE-645 đang bỏ không — một bài toán chưa ai giải được.
"Các thiết bị ngoại vi thật tuyệt vời... nó có một bộ đĩa nhanh hơn bất cứ thứ gì tôi có thể tưởng tượng, và tôi muốn viết thuật toán tìm kiếm drum, tôi muốn đạt được throughput trên drum vì mọi thứ tôi biết trong trung tâm máy tính hay trong Multics đều không xử lý tốt drum..."
Khi mất quyền truy cập máy lớn, Thompson tìm đến chiếc PDP-7 ít được sử dụng. Trong lúc vợ con đi vắng ba tuần, ông đã hoàn thiện những gì còn thiếu để biến dự án nghiên cứu ổ đĩa thành một hệ điều hành hoàn chỉnh: trình biên dịch, trình soạn thảo, trình hợp ngữ, bộ nạp, và hệ thống bảo vệ người dùng — tất cả viết bằng assembly trong ba tuần.
Cuộc cách mạng về mở tệp tin (File Opening Revolution)
Điểm kỹ thuật đáng chú ý nhất trong bài báo, theo tác giả bài viết gốc, là quyết định tách biệt dữ liệu và chương trình của Ken Thompson. Trong khi Multics dùng single-level store — một không gian bộ nhớ ảo thống nhất cho cả dữ liệu và mã — Thompson lại cho rằng đây là sai lầm lớn:
"Tôi muốn tách dữ liệu khỏi chương trình, vì dữ liệu và chỉ thị rất khác nhau. Khi đọc tệp, gần như chắc chắn bạn sẽ đọc tuần tự... và việc loại bỏ chỉ thị khỏi cache khó hơn nhiều so với dữ liệu. Vì vậy tôi đã thêm lời gọi hệ thống
execđể 'gọi thứ này như một chương trình'."
Chính từ đây, khái niệm file descriptor, lời gọi open, read, write — những thứ tưởng chừng hiển nhiên — đã ra đời. Đây là một sự khác biệt mang tính triết lý: hãy đối xử với những thứ khác nhau theo những cách khác nhau, một nguyên tắc vẫn ám ảnh thiết kế hệ thống đến ngày nay.
Comfiles: Nguồn gốc của shell script và /etc/rc
Một chi tiết thú vị khác là thuật ngữ comfile — viết tắt của "command files". Đây chính là tiền thân của shell script ngày nay. Nhờ Doug McIlroy, đồng nghiệp và là trưởng nhóm của Ken và Dennis, ta biết được nguồn gốc tên gọi:
"Shell đọc lệnh từ cùng một standard input như các chương trình nó gọi. Vì vậy, lệnh và dữ liệu được xen kẽ trong các command files, hay 'runcoms,' mà ngày nay thường gọi là shell scripts. Dấu vết của tên gọi này vẫn còn lại trong script khởi động
/etc/rc."
Vậy nên, mỗi lần bạn chỉnh sửa tệp /etc/rc hay viết một script bash, bạn đang chạm vào một di sản kéo dài từ thời kỳ sơ khai của hệ điều hành và cả từ MIT CTSS — một minh chứng cho sự kế thừa và tiến hóa không ngừng.
Kết luận: Kỷ luật và tầm nhìn dài hạn
Unix không phải là thành công chỉ sau một đêm. Bài báo công bố năm 1977 cho biết đã có hơn 600 cài đặt chỉ sau 6 năm kể từ khi Unix chạy trên PDP-11 (tháng 2/1971). Sáu năm ấy là sáu năm kỷ luật: duy trì một số lượng nhỏ các lời gọi hệ thống, sáng tạo và liên tục hoàn thiện ngôn ngữ lập trình C, kiên định nhận diện các mô hình thiết kế lành mạnh.
"Đây là loại kỷ luật mà tôi dạy: tôi giúp bạn học cách học những kỹ năng kỹ thuật bạn cần. Bạn mang đến điều bạn đang vướng mắc — một pipeline build không đáng tin hay một ngôn ngữ bạn cứ học rồi bỏ — và chúng ta cùng làm việc cho đến khi bạn hiểu rõ nó."
Đối với độc giả Việt Nam, câu chuyện này đặc biệt có ý nghĩa trong bối cảnh cộng đồng lập trình viên nước nhà ngày càng lớn mạnh. Nó nhắc nhở chúng ta rằng, để xây dựng những hệ thống công nghệ bền vững — từ hạ tầng cloud đến sản phẩm AI — không có đường tắt. Chỉ có sự tò mò, kỷ luật tự giác và một tầm nhìn dài hạn mới tạo ra những "kỳ quan" như Unix. Hãy đọc bài báo gốc, để cảm nhận tình yêu và sự cống hiến của những người đi trước, và để lấy cảm hứng cho chính hành trình "sáu năm" của bạn.