Tôi hoàn toàn không biết gì về hoạt động bên trong của một hệ điều hành, nhưng tôi ít nhiều có thể đoán được hành vi gần đúng của nhiều chức năng. Tuy nhiên, một điều mà tôi không thể tìm ra là đa nhiệm.
Về lý thuyết, hệ điều hành quản lý thời gian, theo CPU trong các khoảng thời gian nhỏ cho các chương trình khác nhau đang chạy. Nhưng không rõ làm thế nào điều này thực sự hoạt động.
Nói rằng hệ điều hành muốn bắt đầu chương trình của tôi. Mã máy được tải ở đâu đó trong RAM, bắt đầu từ một địa chỉ nhất định. Tôi đoán sau đó một bước nhảy nên được thực hiện đến địa chỉ đó, cho phép mã của tôi thực thi. Nhưng theo cách này, HĐH không thể lấy lại quyền kiểm soát cho đến khi tôi nhảy trở lại.
Về cơ bản, tôi có thể tưởng tượng chỉ hai cách để thực hiện công việc này, nhưng dường như không thực sự phù hợp:
Hệ điều hành có thể đọc các hướng dẫn máy tôi muốn thực hiện và mô phỏng chúng thay vì thực hiện chúng trực tiếp. Tôi cố tình mơ hồ, vì tôi không biết nó sẽ hoạt động như thế nào, nhưng có vẻ như nó sẽ làm chậm chương trình một cách đáng kể.
Ngoài ra, hệ điều hành có thể đợi cho đến khi tôi thực hiện cuộc gọi hệ thống. Trong khoảnh khắc đó, nó lấy lại quyền kiểm soát và có thể kiểm tra xem tôi đã chạy được bao lâu và thực hiện công việc vượt thời gian của nó. Điều này có thể hoạt động, nhưng có vẻ không đáng tin cậy, vì tôi có thể thực hiện một phép tính dài không liên quan đến các cuộc gọi hệ thống và treo mọi thứ trong một thời gian.
Vì vậy, có vẻ như cả cơ chế sẽ không hoạt động tốt. Đa nhiệm thực sự được thực hiện như thế nào?
interrupt
INT
lệnh. Một cái gì đó vẫn còn bí ẩn đối với tôi