Multiprocessing là gì?
Một hệ thống đa xử lý có nhiều hơn hai bộ xử lý. Các CPU được thêm vào hệ thống giúp tăng tốc độ tính toán của hệ thống. Mỗi CPU đều có bộ thanh ghi và bộ nhớ chính riêng.
Tuy nhiên, vì mỗi CPU là riêng biệt, có thể xảy ra trường hợp một CPU không có gì để xử lý. Một bộ xử lý có thể không hoạt động và bộ xử lý kia có thể bị quá tải với các quy trình cụ thể. Trong trường hợp này, quá trình và tài nguyên được chia sẻ động giữa các bộ xử lý.
Trong hướng dẫn này, bạn sẽ học:
- Multiprocessing là gì?
- Đa luồng là gì?
- Đặc điểm của Đa xử lý:
- Đặc điểm của Đa luồng
- Sự khác biệt giữa Đa xử lý và Đa luồng
- Lợi thế của Đa xử lý
- Lợi thế của đa luồng
- Nhược điểm của Đa xử lý
- Nhược điểm của đa luồng
Đa luồng là gì?
Đa luồng là một kỹ thuật thực thi chương trình cho phép một quá trình duy nhất có nhiều đoạn mã (như luồng). Nó cũng chạy đồng thời trong "ngữ cảnh" của quá trình đó. Ứng dụng đa luồng là ứng dụng có hai hoặc nhiều luồng chạy đồng thời. Do đó, nó còn được gọi là đồng thời.
NHỮNG KHÁC BIỆT chính:
- Một hệ thống đa xử lý có nhiều hơn hai bộ xử lý trong khi Đa luồng là một kỹ thuật thực thi chương trình cho phép một quá trình duy nhất có nhiều đoạn mã
- Đa xử lý cải thiện độ tin cậy của hệ thống trong khi trong quá trình đa luồng, mỗi luồng chạy song song với nhau.
- Đa xử lý giúp bạn tăng sức mạnh tính toán trong khi đa luồng giúp bạn tạo các luồng tính toán của một quy trình duy nhất
- Trong Đa xử lý, việc tạo ra một quy trình diễn ra chậm và cụ thể về tài nguyên, trong khi đó, trong Đa chương trình, việc tạo luồng tiết kiệm về thời gian và tài nguyên.
- Đa luồng tránh bị kén, trong khi Đa xử lý dựa vào các đối tượng ngâm trong bộ nhớ để gửi đến các quá trình khác.
- Hệ thống đa xử lý mất ít thời gian hơn trong khi để xử lý công việc thì cần một lượng thời gian vừa phải.
Đặc điểm của Đa xử lý
Dưới đây là các tính năng thiết yếu của Đa xử lý:
- Đa xử lý được phân loại theo cách tổ chức bộ nhớ của chúng.
- Đa xử lý cải thiện độ tin cậy của hệ thống
- Đa xử lý có thể cải thiện hiệu suất bằng cách phân tách một chương trình thành các tác vụ thực thi song song.
Đặc điểm của Đa luồng
Dưới đây là các khía cạnh quan trọng của đa luồng:
- Trong quá trình đa luồng, mỗi luồng chạy song song với nhau.
- Chủ đề không cho phép bạn tách vùng bộ nhớ. Do đó, nó tiết kiệm bộ nhớ và mang lại hiệu suất ứng dụng tốt hơn
Sự khác biệt giữa Đa xử lý và Đa luồng
Dưới đây là những khác biệt quan trọng giữa Đa xử lý và đa luồng.
Tham số | Đa xử lý | Đa luồng |
---|---|---|
Căn bản | Đa xử lý giúp bạn tăng sức mạnh tính toán. | Đa luồng giúp bạn tạo các luồng tính toán của một quy trình duy nhất để tăng sức mạnh tính toán. |
Chấp hành | Nó cho phép bạn thực hiện nhiều quy trình đồng thời. | Nhiều luồng của một quy trình được thực hiện đồng thời. |
Chuyển đổi CPU | Trong Đa xử lý, CPU phải chuyển đổi giữa nhiều chương trình để có vẻ như nhiều chương trình đang chạy đồng thời. | Trong đa luồng, CPU phải chuyển đổi giữa nhiều luồng để có vẻ như tất cả các luồng đang chạy đồng thời. |
Sự sáng tạo | Việc tạo ra một quy trình diễn ra chậm và cụ thể về tài nguyên. | Việc tạo ra một luồng tiết kiệm thời gian và tài nguyên. |
Phân loại | Quá trình đa xử lý có thể là đối xứng hoặc không đối xứng. | Đa luồng không được phân loại. |
Ký ức | Đa xử lý phân bổ bộ nhớ và tài nguyên riêng biệt cho từng quá trình hoặc chương trình. | Các luồng đa luồng thuộc cùng một tiến trình chia sẻ cùng một bộ nhớ và tài nguyên như của tiến trình. |
Đồ vật tẩy rửa | Đa luồng tránh kén chọn. | Quá trình đa xử lý dựa vào việc lấy các đối tượng trong bộ nhớ để gửi đến các quá trình khác. |
Chương trình | Hệ thống đa xử lý cho phép thực thi nhiều chương trình và tác vụ. | Hệ thống đa luồng thực thi nhiều luồng của các quy trình giống nhau hoặc khác nhau. |
Mất thời gian | Mất ít thời gian hơn để xử lý công việc. | Dành một khoảng thời gian vừa phải để xử lý công việc. |
Lợi thế của Đa xử lý
Dưới đây là nhược điểm / ưu điểm của Đa xử lý:
- Ưu điểm lớn nhất của hệ thống đa xử lý là nó giúp bạn hoàn thành nhiều công việc hơn trong thời gian ngắn hơn.
- Mã thường đơn giản.
- Tận dụng nhiều CPU và lõi
- Giúp bạn tránh các giới hạn GIL cho CPython
- Loại bỏ nguyên thủy đồng bộ hóa trừ khi bạn sử dụng bộ nhớ dùng chung.
- Các tiến trình con hầu hết có thể bị gián đoạn / có thể giết được
- Nó giúp bạn hoàn thành công việc trong thời gian ngắn hơn.
- Những loại hệ thống này nên được sử dụng khi cần tốc độ rất cao để xử lý một khối lượng lớn dữ liệu.
- Hệ thống đa xử lý tiết kiệm tiền so với hệ thống xử lý đơn vì các bộ xử lý có thể dùng chung thiết bị ngoại vi và nguồn cung cấp năng lượng.
Lợi thế của đa luồng
Dưới đây là ưu / lợi ích của đa luồng:
- Các chủ đề chia sẻ cùng một không gian địa chỉ
- Các chủ đề có trọng lượng nhẹ có dung lượng bộ nhớ thấp
- Chi phí giao tiếp giữa các luồng thấp.
- Truy cập vào trạng thái bộ nhớ từ ngữ cảnh khác dễ dàng hơn
- Nó cho phép bạn tạo giao diện người dùng đáp ứng một cách dễ dàng
- Một lựa chọn lý tưởng cho các ứng dụng liên kết I / O
- Mất ít thời gian hơn để chuyển đổi giữa hai luồng trong bộ nhớ dùng chung và thời gian để kết thúc
- Các luồng bắt đầu nhanh hơn các quy trình và cũng nhanh hơn khi chuyển đổi tác vụ.
- Tất cả các Thread đều chia sẻ một vùng bộ nhớ tiến trình rất có lợi.
- Mất ít thời gian hơn để tạo một chuỗi mới trong quy trình hiện tại so với quy trình mới
Nhược điểm của Đa xử lý
Đây là nhược điểm / nhược điểm của việc sử dụng hệ điều hành Đa xử lý
- IPC (Giao tiếp giữa các quá trình) khá phức tạp với nhiều chi phí
- Có dung lượng bộ nhớ lớn hơn
Nhược điểm của đa luồng
Dưới đây là nhược điểm / hạn chế của việc sử dụng hệ thống đa luồng:
- Hệ thống đa luồng không thể bị gián đoạn / có thể giết được
- Nếu không tuân theo hàng đợi lệnh và mô hình máy bơm thông báo thì việc sử dụng thủ công đồng bộ hóa cần thiết trở thành điều cần thiết
- Mã thường khó hiểu hơn và tăng khả năng xảy ra các điều kiện chủng tộc tăng đáng kể