Trình quản lý tác vụ (Task Manager) đầu tiên của Windows chỉ có dung lượng 80KB.

VNZ-TECHS
Dave Plummer là người đứng sau nhiều tính năng mang tính biểu tượng của Windows (như hỗ trợ nén file ZIP). Ông đã chia sẻ cách mình xây dựng Task Manager với hiệu suất tối ưu. Theo lời ông trong một video trên YouTube, phiên bản Task Manager hiện nay của Windows có dung lượng khoảng 4MB, trong khi phiên bản đầu tiên do ông viết chỉ vỏn vẹn 80KB.


Khi phát triển công cụ này, Plummer đặt trọng tâm vào thực tế là phần cứng thời đó cực kỳ hạn chế. Ngay cả khi các phần khác của hệ thống bị treo hoàn toàn, công cụ dùng để cứu máy sau khi hệ thống sụp đổ vẫn phải hoạt động mượt mà và phản hồi nhanh.

Ông cho biết: “Mỗi dòng code đều có cái giá của nó, mỗi lần cấp phát bộ nhớ đều để lại dấu vết. Mỗi dependency giống như một người bạn cùng phòng ăn ở miễn phí mà chẳng bao giờ trả tiền thuê. Vì vậy khi viết Task Manager, tôi không làm theo kiểu phát triển hiện đại — dựng framework trước, rồi chồng thêm hàng loạt lớp tiện dụng, lớp tương thích tương lai, để rồi cuối cùng công cụ ngốn tới hàng trăm MB RAM mà vẫn phải tối ưu thêm chỉ để hiển thị vài con số.”

Một trong những thiết kế khiến ông hài lòng nhất là cơ chế khởi động. Các ứng dụng thông thường chỉ kiểm tra xem đã có instance chạy hay chưa, nếu có thì kích hoạt lại. Nhưng Task Manager còn làm nhiều hơn: nó gửi một thông điệp nội bộ tới instance đang chạy (nếu có) và chờ phản hồi để kiểm tra xem instance đó có bị treo hay không. Nếu nhận được phản hồi bình thường thì giữ nguyên; nếu không có phản hồi, hệ thống sẽ coi instance cũ đã “chết” và khởi chạy một Task Manager mới để giúp người dùng xử lý sự cố.

Ngoài ra, ông còn thực hiện nhiều tối ưu khác: các chuỗi ký tự dùng thường xuyên được nạp một lần thành biến toàn cục thay vì gọi lại nhiều lần; các tính năng ít dùng (như thao tác với thiết bị gắn ngoài) chỉ được tải khi cần. Module cây tiến trình cũng được tối ưu — thay vì truy vấn từng tiến trình riêng lẻ, nó yêu cầu trực tiếp bảng tiến trình hoàn chỉnh từ nhân hệ điều hành, giúp giảm đáng kể số lần gọi API. Nếu bộ đệm không đủ, chương trình sẽ tự động mở rộng và thử lại.

Plummer còn chia sẻ nhiều kỹ thuật thiết kế nhằm đảm bảo Task Manager không tiêu tốn quá nhiều tài nguyên, ngay cả trên những hệ thống yếu hoặc đang gặp sự cố.

Những hạn chế về phần cứng và tài nguyên trong thập niên 90 buộc ông phải làm Task Manager càng gọn nhẹ càng tốt. Ông nói: “Triết lý thiết kế của Task Manager hoàn toàn khác. Thời đó, chỉ một lần lỗi trang bộ nhớ cũng có thể cảm nhận rõ ràng; thiếu RAM sẽ gây ra những hiện tượng giật lag kỳ lạ. Nếu bạn để giao diện liên tục vẽ lại khi không cần thiết, bạn gần như có thể nghe thấy đồng nghiệp trong văn phòng than phiền. Tôi không muốn quay lại dùng phần cứng cũ, nhưng thật sự mong chúng ta vẫn giữ được tinh thần thiết kế ngày xưa — không phải sự khó khăn, mà là bản năng: xử lý theo lô, cache hợp lý, bỏ qua thao tác vô nghĩa, chỉ vẽ lại khi có thay đổi, gọi kernel một lần thay vì hàng trăm lần, chỉ tải dữ liệu ít dùng khi cần, và luôn cảnh giác với những tính năng tiện lợi nhưng tiêu tốn tài nguyên của người dùng.”

 
Phan7426 Reactions: Phan7426