Đó là cách GNU / Linux và các hệ thống đa nhiệm khác hoạt động, chúng chia sẻ bộ xử lý giữa các tiến trình đang chạy, dot
sẽ không có 99%, nhưng 100% trong suốt 99% thời gian. Mỗi quá trình thống trị bộ xử lý trong một khoảng thời gian nhất định.
Điều này được xử lý bởi các trình lập lịch biểu (linux có một số trình lập lịch biểu, một số chỉ sử dụng chiến lược thông thường, một số cố gắng dành nhiều thời gian hơn cho giao diện người dùng, v.v.).
Bây giờ, trong trường hợp của bạn, vấn đề là - có lẽ - điều đó dot
không tốn nhiều thời gian của bộ xử lý, nhưng rất nhiều bộ nhớ. Và khi một chương trình sử dụng quá nhiều bộ nhớ, có sự cố , đó chính xác là một quá trình làm cho hệ thống đóng băng, không phải vì dot
làm nhiều việc, mà vì kernel phải di chuyển các trang bộ nhớ qua lại giữa đĩa (phân vùng trao đổi) và bộ nhớ hệ thống.
Ngay cả khi dot
chỉ chiếm 99% thời gian của CPU, rất có thể việc thay đổi thành một thiết bị đầu cuối văn bản sẽ gần như ngay lập tức, điều xảy ra là hạt nhân phải di chuyển dot
công cụ ra khỏi bộ nhớ để có thể đặt X
lại vào bộ nhớ để X
có thể nhìn thấy các phím bạn chỉ cần nhấn và di chuyển đến thiết bị đầu cuối văn bản, sau đó kernel phải di chuyển X
ra khỏi bộ nhớ dot
vẫn đang chạy, và sau đó cũng di chuyển dot
ra ngoài để di chuyển các quá trình thiết bị đầu cuối văn bản (có thể chỉ là login
?) trong bộ nhớ. (Nếu điều này có vẻ lộn xộn, thì không chỉ vì ví dụ lộn xộn - thực tế là điều này rất lộn xộn.)
Một ví dụ là nếu bạn đăng nhập vào thiết bị đầu cuối văn bản, bạn có thể chỉ cần nhấn phím, nhấn backspace và nó sẽ vui vẻ xảy ra trong thời gian thực, nhưng nếu bạn làm một việc đơn giản như chạy một công cụ nhỏ như thế ps
, nó sẽ "đóng băng "Trong một thời gian vì nó phải giải phóng bộ nhớ ps
(và nó cũng phải đợi trong hàng đợi I / O của đĩa, được sử dụng nhiều để di chuyển dữ liệu đến và từ bộ nhớ, cho đến khi có thể yêu cầu ps
từ hệ thống tệp) .