Q. Điều gì ngăn một chương trình lắp ráp làm hỏng hệ điều hành?
A. Không có gì.
Tuy nhiên, rất nhiều lập trình viên rất thông minh đã cố gắng rất nhiều trong những năm qua để làm cho nó ngày càng khó khăn hơn. Thật không may, đối với mỗi lập trình viên thông minh, có rất nhiều, rất nhiều người khác giữa họ sáng tạo hơn, tham vọng hơn, và đôi khi chỉ là may mắn hơn những người thông minh. Mỗi khi một lập trình viên thông minh nói rằng không ai nên, sẽ hoặc có thể làm điều gì đó, một ai đó ngoài kia sẽ tìm ra cách để làm điều đó. Microsoft Windows (là một ví dụ) đã tồn tại gần 35 năm và chúng tôi vẫn có BSoD (Màn hình xanh chết chóc), đây chỉ là những hướng dẫn làm sập hệ điều hành.
Hãy bắt đầu với một thuật ngữ nhỏ. Tất cả mọi thứ chạy trên máy tính đều làm như vậy trong mã máy. Bit đọc tổ hợp phím hoặc chuyển động của con trỏ chuột, bit thay đổi màu của pixel trên màn hình hoặc đọc một byte từ tệp và bit tính toán xem viên đạn của bạn đánh kẻ xấu hay bit quyết định nếu ứng dụng thẻ tín dụng của bạn sẽ được chấp nhận, tất cả sẽ được thực hiện dưới dạng một chuỗi các hướng dẫn mã máy. Một số công việc rất phổ biến và được thực hiện thường xuyên đến mức có ý nghĩa để lắp ráp các hướng dẫn cần thiết để thực hiện chúng và để mọi người sử dụng lắp ráp đó. Một loạt các công việc cho phép hoặc giúp người khác sử dụng máy tính có xu hướng được gọi là hệ điều hành nhưng không có gì khác biệt giữa chúng và bất kỳ chương trình nào khác. Tất cả chúng chỉ là chuỗi các hướng dẫn mã máy.
Điều khiến các hệ điều hành trở nên phức tạp hơn (và do đó dễ bị sập) là chúng phải tính đến những thứ mà bạn thường không phải suy nghĩ. Lấy đơn giản nhất của công việc làm ví dụ. Tôi muốn viết một tin nhắn đến cuối tập tin. Trong một ngôn ngữ cấp cao, bạn sẽ viết một cái gì đó như:
with open("myFile.txt", "w+") as f:
# do some really clever things
f.write("Goodbye cruel world!")
Hãy bỏ qua tất cả các chi tiết về cách các trạng thái vật lý được truy cập và thay đổi hoặc cách chúng được hiểu là bit và byte hoặc cách các byte đó được chuyển đến và từ bộ nhớ và CPU, và tin tưởng rằng tất cả những gì được xử lý bởi các chương trình mà HĐH cung cấp đằng sau hậu trường. Hãy chỉ nghĩ về cách bạn nối vào cuối tập tin. 1) Tìm ra nơi kết thúc của tập tin, 2) viết một cái gì đó ở vị trí đó. Cái gì có thể đi sai? Thật ra, khá nhiều. Hãy suy nghĩ về những gì khác đang xảy ra trên máy tính trong khi bạn đang làm những thứ thông minh. Nếu bất cứ điều gì khác được thực hiện bởi bất kỳ ai khác (bao gồm cả chính hệ điều hành) thay đổi tệp bạn đang làm theo bất kỳ cách nào, thì công việc thực sự đơn giản này đột nhiên trở nên phức tạp hơn rất nhiều. Tập tin dài hơn, tập tin ngắn hơn. Các tập tin không còn ở đó nữa. Đĩa đầy,