Chương trình được biên dịch thường chứa tiêu đề, theo sau là hướng dẫn CPU thực tế (những gì bạn có thể gọi là "nhị phân") + các dữ liệu khác.
Khi bạn cố gắng yêu cầu hệ điều hành tải chương trình của bạn, tiêu đề sẽ được hệ điều hành đọc và được sử dụng để kiểm tra xem tệp thực thi có thực sự là tệp thực thi dành cho hệ điều hành này và kiến trúc này hay không. I E. để bạn không vô tình chạy một chương trình Linux trên Windows hoặc tương tự.
Tiêu đề cũng chứa nhiều bit thông tin khác về nơi các chỉ lệnh CPU thực tế được đặt trong tệp exeutable, nơi các phân đoạn dữ liệu (văn bản, chuỗi, đồ họa) được đặt và vv.
Khi hệ điều hành hài lòng với tệp thực thi, thì hệ điều hành sẽ tải các phân đoạn khác nhau từ tệp thi hành vào bộ nhớ và hướng dẫn CPU bắt đầu chạy phân đoạn mã "nhị phân". Mã này là "thuần túy" theo nghĩa là nó là mã lắp ráp CPU thẳng.
Tuy nhiên, hệ điều hành có thể làm gián đoạn CPU (ví dụ để chuyển sang chương trình khác hoặc chỉ xóa chương trình khỏi bộ nhớ và vv). Vì vậy, có rất nhiều thứ xảy ra xung quanh chương trình đang chạy này và kiểu hệ điều hành "quản lý" nó và đảm bảo nó hoạt động giống như một cậu bé tốt, nhưng chính mã khi nó đang chạy đang thực hiện các lệnh CPU thuần túy càng nhanh càng tốt ..không có hệ điều hành phải giải thích mã ở giữa.
Cũng lưu ý rằng chương trình đang chạy có thể gọi hệ điều hành theo nhiều cách khác nhau khi đang chạy. Ví dụ để yêu cầu hệ điều hành mở một cửa sổ trên màn hình, mở một kết nối mạng, cấp phát bộ nhớ, v.v. Tất cả những gì thực sự đang xảy ra là CPU chỉ nhảy để thực thi mã tại một vị trí khác (tức là nó nhảy từ chạy mã trong tệp thực thi, để chạy một đoạn mã nào đó trong hệ điều hành và sau đó nhảy lại).
Đó là tóm lại. Có nhiều cách khác để chạy chương trình. Có các máy ảo, các ngôn ngữ thông dịch (như Java hoặc Ruby chẳng hạn), v.v. Và tất cả đều chạy các chương trình theo những cách khác nhau từ các ngôn ngữ "thuần nhị phân" truyền thống như C/C++, nhưng hy vọng điều này giúp bạn hiểu cách hoạt động tốt hơn một chút.
Điều gì làm cho nhị phân "true" hoặc "tinh khiết"? –