Tôi đã đọc một cuốn sách nói rằng một bộ xử lý có lõi đơn và không siêu phân luồng có thể xử lý chỉ một quy trình tại một thời điểm, do đó nghi ngờ sẽ xảy ra khi chúng tôi thực hiện nhiều thao tác trên PC và một số các quá trình nền luôn ở đó thì tại sao trình phát nhạc không dừng ở giữa trong một thời gian ngắn. Tôi biết CPU là khá nhanh nhưng máy nghe nhạc vẫn thường chơi nhạc trong liên tục mà không có bất kỳ nghỉ nhỏ (đó là quan sát). Bất cứ ai có thể làm rõ hành vi này?Trình nghe nhạc
Trả lời
1) Một CPU đơn lõi không có siêu phân luồng, như bạn nói, chỉ chạy một quy trình tại một thời điểm. Nhiều tiến trình được xử lý bằng cách chuyển đổi ngữ cảnh, đó là CPU sẽ chạy một tiến trình và sau đó chuyển sang tiến trình tiếp theo và tiến trình tiếp theo và sau đó quay trở lại quy trình đầu tiên và tiếp tục. Tần suất tần suất một quy trình nhất định được lên lịch phụ thuộc vào nhiều yếu tố khác nhau, nơi ưu tiên quy trình là một. (Trở lại trong những ngày nó thường là cần thiết để chạy WinAmp với ưu tiên cao để tránh ổn định vv Ngày nay điều này là không cần thiết như CPU là nhanh hơn rất nhiều).
2) Vì vậy, với điều này trong tâm trí, làm thế nào đến nó vẫn còn âm thanh tuyệt vời và không có trục trặc?
Khi xử lý âm thanh, CPU sẽ cấp nguồn thiết bị âm thanh với các mẫu bằng cách đặt chúng vào bộ đệm phần cứng trên card âm thanh hoặc trong RAM. Bộ xử lý âm thanh không nhận dữ liệu trực tiếp từ CPU, thay vào đó nó đọc các mẫu từ một trong hai bộ đệm này. Miễn là chúng tôi có các mẫu trong bộ đệm, chúng tôi rất tốt, ngay cả khi CPU không hoạt động.
Chi tiết về kích thước bộ đệm phần cứng khác nhau trên các thẻ âm thanh khác nhau. Một số card âm thanh (cũ hơn) không có bộ đệm âm thanh nào cả, và ở đây RAM đi vào chơi thay thế.
Chạy ra khỏi các mẫu được gọi là bộ đệm bị hỏng. Ngay cả trên các máy tính hiện đại, điều này có thể xảy ra, ví dụ nếu bạn bắt đầu một quá trình nặng trong khi chạy trình phát âm thanh của bạn, CPU có thể không thể chuyển ngược thời gian và chúng tôi có thể nghe thấy rõ ràng các trục trặc và khoảng trống trong nguồn cấp dữ liệu âm thanh.
Điều này là do hệ điều hành có preemptive multi-tasking. Quá trình này trong thực tế bị gián đoạn trong một khoảng thời gian rất ngắn, không đủ dài để chú ý đến một con người. Một lý do khác cũng là card âm thanh có bộ đệm phát lại cho phép phát lại liên tục, trong khi dữ liệu đang được cấp cho nó theo khối. Vì vậy, trong khi quá trình nạp thẻ với dữ liệu bị gián đoạn trong một thời gian rất ngắn, phát lại vẫn có thể xảy ra.
Điều này được xử lý bởi Bộ lập lịch hệ điều hành.
Trình lên lịch sẽ phân bổ một lát thời gian cho mỗi quá trình (điều này có thể là một vài phần nghìn giây) và sẽ cho phép một quá trình thực thi những gì cần trong khoảng thời gian đó. Độ dài được phân bổ được xác định bởi thuật toán được sử dụng bởi hệ điều hành (I.e. Lập kế hoạch ngắn hạn, dài hạn, vv). Lý do tại sao bạn không nhận thấy điều này là bởi vì CPU có thể hoạt động ở mức cao như vậy, tức là 1GHz mà làm cho đa tác vụ trên một lõi/thread trong suốt cho người dùng.
http://en.wikipedia.org/wiki/Scheduling_(computing) http://web.cs.wpi.edu/~cs3013/c07/lectures/Section05-Scheduling.pdf
nhưng thường chúng ta không nghe thấy bất cứ nghỉ ngơi. Nó nhanh đến mức chúng ta không thể quan sát được bất kì nghỉ nào? –