Sự khác biệt giữa đa chương trình và đa nhiệm là gì


10

Tôi thấy khó phân biệt rõ ràng giữa Đa chương trình và Đa nhiệm.

Nguồn chính của tôi là Wikipedia , nhưng bài báo WP có vẻ hơi mâu thuẫn với một số nguồn ít uy tín hơn (như giáo sư đại học của tôi).

Khi tôi đọc WP, đa chương trình là một cách thô sơ để tăng thông lượng CPU, bằng cách chuyển ngữ cảnh khi một quá trình chờ I / O.

Đa chương trình không đưa ra bất kỳ đảm bảo nào rằng chương trình sẽ chạy kịp thời. Thật vậy, chương trình đầu tiên rất có thể chạy hàng giờ mà không cần truy cập vào thiết bị ngoại vi.

Chia sẻ thời gian hợp tác , đồng nghĩa với đa nhiệm hợp tác , là một cải tiến về đa chương trình (với nó không đồng nghĩa). Các bối cảnh CPU chuyển đổi thường xuyên để tạo ấn tượng về việc thực thi đồng thời, nhưng các quy trình vẫn được yêu cầu để mang lại - và các chương trình được thiết kế kém có thể bỏ đói phần còn lại của hệ thống.

Đa nhiệm ưu tiên kiểm soát lập kế hoạch mạnh mẽ hơn, ưu tiên cho một số quy trình hơn các quy trình khác, v.v.

  1. Tổng quan này có đúng không? Nếu không phải là vì WP không đúng hay vì tôi đọc WP sai?
  2. Tại sao một số nguồn dường như kết hợp đa chương trình và đa nhiệm?

1
"với một số nguồn ít uy tín hơn (như giáo sư đại học của tôi)" - trời ơi. Tôi hy vọng anh ấy có uy tín hơn Wikipedia, nơi có rất nhiều nội dung nửa vời về CS.
Raphael

"Đa chương trình" dường như là một cách tiếp cận lịch sử. đa nhiệm hiện đại thực sự có liên quan đến chặn IO nhưng nó chỉ là một trong những yếu tố được sử dụng để xử lý các quá trình. hơn nữa, hầu hết tất cả các đa nhiệm hiện đại đều được ưu tiên với sự hỗ trợ từ CPU (vốn không phải lúc nào cũng có sự hỗ trợ đó từ nhiều năm trước và các quy trình xử lý tốt được cho là gọi các phương thức chờ dựa trên hệ điều hành hỗ trợ cho sự hợp tác).
vzn

2
@Raphael, bạn có thể làm cho cả thế giới ủng hộ bằng cách nướng chúng đến mức hoàn hảo.
vonbrand

1
@vonbrand Tôi đã thử, nhưng thật không may, có đủ các chuyên gia nửa nướng để hợp tác những nỗ lực đó.
Raphael

@Raphael, và đám đông đó cũng không xuất hiện ở đây à?
vonbrand

Câu trả lời:


9

Chúng ít nhiều đồng nghĩa. Đa chương trình được sử dụng nhiều hơn khi có một CPU tham gia, đang được chuyển từ quy trình này sang quy trình khác, các quy trình được định tuyến lại trong bộ nhớ. Cùng với các chủ đề, và nó không chuyển đổi giữa các chương trình nữa ...

Bộ xử lý, đặc biệt là dòng intel, có các cơ chế cho đa nhiệm thực sự (ngắt hẹn giờ, hướng dẫn đặc quyền) kể từ ít nhất là 80286. M68000 được sử dụng trong Mac đầu tiên là bộ xử lý có khả năng đa nhiệm đầy đủ. Đây không phải là một sự phát triển gần đây trong kiến ​​trúc. Lưu ý rằng lần đầu tiên các hệ thống được chia sẻ đã hoán đổi các chương trình của người dùng và do đó không thực sự đa chương trình theo nghĩa là có nhiều chương trình trong bộ nhớ cùng một lúc.

Ý tưởng là có một số chương trình nằm trong bộ nhớ đồng thời, để khi một CPU mang lại CPU (bằng cách hoàn thiện hoặc chờ), có những chương trình khác sẵn sàng sử dụng CPU, do đó tăng mức sử dụng CPU (và như bạn có thể xem xét từng vụ nổ CPU chuẩn bị cho việc sử dụng I / O, tăng mức sử dụng tổng thể). Điều này mang lại thông số tốt hơn (quan trọng trong các hệ thống hàng loạt).

Cùng với thời gian chia sẻ, một số người dùng tương tác kết nối với máy. Cùng một ý tưởng, giữ các chương trình của họ xung quanh nhưng chuyển đổi giữa chúng đủ nhanh để chúng có ý định "có một máy tính cho riêng mình". Yêu cầu bộ hẹn giờ làm gián đoạn CPU để tránh độc quyền.

Trên các máy cá nhân, không có nhiều động lực để chạy nhiều chương trình cùng một lúc, ít nhất là ban đầu (một người dùng trước một máy móc bị giới hạn nghiêm trọng không mong đợi nhiều). Khi máy móc phát triển, một cách làm việc xung quanh điều này và cho phép một số chương trình cùng một lúc mà không thay đổi hệ điều hành nhiềulà "đa nhiệm hợp tác", trong đó mọi chương trình được cung cấp để mang lại định kỳ cho hệ điều hành để chọn một chương trình khác để chạy. Vì chương trình thực hiện việc này hoàn toàn kiểm soát, nó có thể chọn thực hiện việc này khi không có gì có thể gây rối cho người khác. Không cần phải nói, một chương trình "quên" hoàn thành nghĩa vụ của mình để mang lại hiệu suất tăng thú vị ... các hệ thống Mac đời đầu hoạt động theo cách này và vì những lý do trên, điều này không kéo dài quá lâu. Trên các hệ thống nhúng không có hoặc chỉ có hệ điều hành thô sơ và một bộ chương trình được kiểm soát chặt chẽ đang chạy, đây chắc chắn là một tùy chọn tích cực.


bài báo WP dường như ngụ ý rằng đa chương trình thiếu bộ nhớ ảo, trái ngược với đa nhiệm (hệ thống). Trong lịch sử nó có thể đúng, nhưng định nghĩa là trực giao?
didierc

1
Chúng tôi đã có một IBM S / 370 được lập trình nhiều lần ở đây vào những năm 70 và nó chắc chắn không có bộ nhớ ảo (tôi dường như nhớ rằng nó có một đĩa chỉ được sử dụng để lưu trữ). Bộ nhớ ảo cho phép bạn có nhiều chương trình hơn trong RAM giới hạn (vì bạn chỉ giữ các bộ phận "được sử dụng nhiều nhất"), thậm chí sử dụng tốt hơn theo cách đó. Vì vậy, có, tôi sẽ xem xét những người hoàn toàn độc lập; nhưng trong thực tế ngày nay bạn sẽ không tìm thấy cái này mà không có cái kia. Ngoại trừ có lẽ trong bộ định tuyến WiFi hoặc điện thoại di động của bạn ...
vonbrand

Đồng ý. Tôi cũng nghĩ vậy Các hệ thống nhúng thực sự thường thiếu bảo vệ bộ nhớ thích hợp, tôi đã nhận thức được điều đó. Tuy nhiên, với các chương trình ứng xử tốt, nó không phải là một vấn đề. Điều đó tất nhiên, phụ thuộc vào các nhà cung cấp chương trình.
didierc

@didierc trực giao? bạn có nghĩa là loại trừ lẫn nhau phải không?
jsj

2

Sự khác biệt giữa đa nhiệm và đa chương trình? Đa tác vụ là một phần mở rộng hợp lý của lập trình đa. Cổ điển trong một môi trường lập trình đa, nhiều người dùng chia sẻ cpu và cpu nhanh chóng chuyển từ người dùng này sang người dùng khác, cung cấp sự minh bạch hoàn toàn cho nhau. Trong đa nhiệm, người dùng được thay thế bởi các chương trình, tức là nhiều chương trình chia sẻ cpu và cpu nhanh chóng chuyển từ chương trình này sang chương trình khác. Trên thực tế một phần mềm nằm trên đĩa là một chương trình. Khi nó được đưa vào RAM để thực thi được gọi là tiến trình hoặc tác vụ và khi nó nằm trong cpu và thực thi, được gọi là luồng. Vì vậy, đa chế độ về cơ bản là dành cho nhiều người dùng và đa nhiệm dành cho một người dùng có nhiều chương trình. Vì hầu hết các hệ điều hành hiện đại đều hỗ trợ cả hai, vì vậy chúng thường được đánh vần lẫn nhau.


0

Có rất nhiều sự khác biệt giữa đa nhiệm và đa chương trình.

Đa nhiệm đang thực thi nhiều hơn một nhiệm vụ tại một thời điểm. Ví dụ: bạn đang nghe một bài hát, in một tờ giấy và gõ MS-Word cùng một lúc.

Trong khi đa chương trình, trong loại HĐH này, chúng tôi cải thiện việc sử dụng CPU bằng cách sử dụng bộ đệm và lưu đệm. Khi thực hiện tuần tự, CPU sẽ không hoạt động sau khi thực hiện chương trình và tải chương trình tiếp theo từ bộ nhớ chính. Trong quá trình hoạt động, cpu cũng không hoạt động, CPU cũng không hoạt động, nhưng sử dụng môi trường đa chương trình, CPU sẽ chuyển sang chương trình tiếp theo và xử lý nó. Đây là một kỹ thuật được sử dụng với sự trợ giúp của bộ đệm và spooling.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.