VietTechiesHIỂU CÔNG NGHỆ. MỞ GÓC NHÌN.
☰ Chuyên mục

Những dòng mã từ PDP-7: Hành trình nửa thế kỷ của công cụ Unix cat

06/10/2026 · VietTechies · Biên tập

Một kim tự tháp bằng thủy tinh phát sáng ở trung tâm được dựng từ các khối hình học màu xanh lam saphir và hổ phách, cùng các viên bi kim loại mượt mà nằm trên các bậc thang trên nền màu xanh hải quân đậm.
Ảnh minh họa do AI tạo.

Vào năm 1969, Ken Thompson bắt đầu ngồi trước máy tính PDP-7 của hãng Digital Equipment Corporation để viết phiên bản đầu tiên cho công cụ cat trên hệ điều hành Unix. Do ngôn ngữ lập trình C lúc đó chưa ra đời, Thompson đã tự tay xây dựng một bộ biên dịch hợp ngữ riêng để viết công cụ này bằng hợp ngữ dành cho PDP-7. Bộ biên dịch hợp ngữ của ông mở rộng các lệnh chuẩn bằng cách cho phép dùng dấu chấm phẩy để ngăn cách nhiều câu lệnh trên cùng một dòng, đồng thời giới thiệu các nhãn số tạm thời từ 0 đến 9 nhằm đơn giản hóa những lệnh nhảy nội bộ. Theo tài liệu mã nguồn lịch sử, bản cài đặt bằng hợp ngữ năm 1969 này đã tích hợp các phiên bản bộ đệm sơ khai của hai hàm getc và putc dùng để xử lý các thao tác nhập xuất dữ liệu.

Nền tảng hợp ngữ trên máy PDP-7

Các phần mở rộng bộ biên dịch hợp ngữ tùy chỉnh do Thompson thiết kế cho dòng máy PDP-7 giúp các chương trình Unix thời kỳ đầu duy trì tính gọn nhẹ trong khi vẫn quản lý được những quy trình phần cứng cấp thấp. Việc ứng dụng các nhãn tạm thời từ 0 đến 9 đã cắt giảm chi phí duy trì bảng ký hiệu trong trình biên dịch hợp ngữ, giúp Thompson tái sử dụng những điểm nhảy dạng số trong suốt tệp tin mà không cần phải đặt tên riêng biệt cho từng nhánh mã nhỏ.

Cải tiến trên PDP-11 và bước chuyển sang ngôn ngữ C

Khi Unix được chuyển sang máy PDP-11 của Digital Equipment Corporation, tiện ích cat đã được viết lại cho phù hợp với tập lệnh của hệ thống mới. Phiên bản trên PDP-11 tinh chỉnh hành vi của công cụ: nếu được gọi mà không có tham số tệp hoặc chỉ đi kèm một dấu gạch ngang, nó sẽ đọc dữ liệu trực tiếp từ đầu vào chuẩn. Một bước ngoặt cấu trúc quan trọng diễn ra ở phiên bản Unix Seventh Edition với việc giới thiệu bản cài đặt cat đầu tiên viết bằng ngôn ngữ lập trình C. Tối ưu quanh một vòng lặp đọc hai dòng kinh điển xử lý từng ký tự cho đến khi gặp tín hiệu kết thúc tệp, bản phát hành Seventh Edition này chỉ nhận duy nhất một tùy chọn dòng lệnh: cờ -u dùng để tắt chế độ đệm khối 512 byte mặc định.

Các tùy chọn 4BSD và bản viết lại Net/2 của Kevin Fall

Sự phát triển của phần mềm Unix trong môi trường học thuật đã dẫn đến việc bản phát hành Berkeley Software Distribution thứ tư (gọi tắt là 4BSD) mở rộng giao diện dòng lệnh cho tiện ích này vào năm 1980. Phiên bản này giới thiệu các cờ bao gồm -n, -b, -v, -s, -e và -t nhằm điều khiển việc đánh số dòng và hiển thị ký tự. Đến năm 1989, nhà khoa học máy tính Kevin Fall thực hiện một bản viết lại hoàn chỉnh cho cat trên BSD Net/2, một dự án hướng tới mục tiêu loại bỏ hoàn toàn mã nguồn Unix thương mại thuộc sở hữu của AT&T khỏi bản phân phối. Fall đã tái cấu trúc công cụ bằng cách chia quy trình thực thi thành chế độ raw cho việc chép ký tự chuẩn và chế độ cooked để xử lý các tùy chọn định dạng dòng lệnh.

Hệ điều hành hiện đại và độ bền vững của mã nguồn

Kiến trúc mới của Fall đã chứng minh độ bền vững đáng kinh ngạc qua nhiều thập kỷ phát triển của các hệ điều hành. Năm 2007, Apple đã đưa bản cài đặt cat từ FreeBSD năm 2005—vốn vẫn giữ nguyên cấu trúc cốt lõi của Fall—vào hệ điều hành Mac OS X 10.5 Leopard. Dù các thư viện phần mềm xung quanh không ngừng tiến hóa, cấu trúc nền tảng của bộ mã nguồn do Fall viết năm 1989 vẫn nguyên vẹn bên trong các công cụ dòng lệnh của hệ thống. Ngày nay, việc kiểm tra mã nguồn của cat trên một hệ điều hành macOS hiện đại vẫn cho thấy tên của Kevin Fall nằm ngay ở phần đầu của tệp thông tin.

Sự vận hành liên tục của cấu trúc mã nguồn từ năm 1989 trên hàng triệu máy tính xách tay hiện đại là minh chứng cho thấy các thành tựu phần mềm nền tảng có thể tồn tại bền vững qua hàng thập kỷ thay đổi công nghệ. Trong khi giao diện người dùng và các nền tảng ứng dụng cấp cao liên tục được thiết kế lại, những công cụ cốt lõi như cat vẫn tồn tại nhờ cơ chế hoạt động vững chắc giải quyết hiệu quả các nhiệm vụ xử lý dữ liệu căn bản. Mã nguồn được viết từ ba mươi hay năm mươi năm trước vẫn đang tiếp tục hoạt động âm thầm dưới bề mặt của các hệ điều hành hiện đại ngày nay.

Ảnh minh họa do AI tạo, không phải ảnh tư liệu.

Nguồn: 0b10

0b10

The Source History of Cat