Multiprocessing là gì?

Đa luồng là gì

Đa Luồng ( Multiprocessing ) là việc sử dụng hai hoặc nhiều đơn vị xử lý trung tâm (CPU) trong một hệ thống máy tính duy nhất. Định nghĩa này có thể thay đổi tùy thuộc vào ngữ cảnh, nhưng nó thường đề cập đến khả năng hỗ trợ nhiều CPU của hệ thống và khả năng phân phối công việc giữa chúng.

Hiện nay, các vi xử lý đa nhân có thể có 12, 24 hoặc thậm chí nhiều hơn các nhân vi xử lý trên cùng một bo mạch chủ, cho phép xử lý hiệu quả và đồng thời nhiều tác vụ.

đa luồng

Processes ( quy trình ) là gì?

Một tập hợp các chỉ thị được thực hiện bởi bộ xử lý máy tính được gọi là một quy trình hoặc một quy trình đang chạy.

Việc thực hiện của một quy trình phải tiến hành theo cách tuần tự. Ví dụ, một chương trình máy tính được viết trong một tệp văn bản, nhưng sau khi được thực thi, nó trở thành một quy trình và thực hiện tất cả các tác vụ được đề cập trong chương trình theo tuần tự.

Ví dụ về processes

Một máy tính bình thường chạy đồng thời một số quy trình liên tục để giúp quản lý hệ điều hành (OS), phần cứng và các ứng dụng đã được cài đặt trên máy tính. Điều này có thể bao gồm một tác vụ nền đơn giản như kiểm tra chính tả hoặc xử lý sự kiện hệ thống đến một ứng dụng đầy đủ chức năng như Microsoft Word.

Trong Microsoft Windows, mỗi quy trình đang chạy trên máy tính có thể được quan sát bằng cách mở tab Quy trình trong Trình quản lý tác vụ. Các quy trình thường là các chương trình nền mà người dùng thông thường không nhìn thấy khi sử dụng máy tính.

Dưới đây là một số ví dụ về các quy trình có thể được quan sát thông qua Trình quản lý tác vụ:

  • Winlogon.exe. Quy trình này thuộc về trình quản lý đăng nhập Windows và có trách nhiệm xử lý vấn đề bảo mật, chẳng hạn như tải hồ sơ người dùng và khóa màn hình máy tính trong khi màn hình chờ đang chạy.
  • Wininit.exe. Quy trình quan trọng này chạy liên tục và giúp thiết lập hệ thống khi đăng nhập ban đầu. Vai trò chính của nó là làm nền cho hầu hết các chương trình nền và quy trình bắt đầu cùng với Windows.
  • Csrss.exe. Trước đây, quy trình csrss.exe được sử dụng để quản lý các thành phần đồ họa Windows, nhưng hiện nay, hai chức năng quan trọng nhất của nó là tắt Windows và khởi động quy trình conhost.exe, khởi động Command Prompt.

Các loại hệ thống đa luồng ( multiprocessing systems )

Hệ thống đa luồn hoặc xử lý song song trở nên phổ biến ngày nay. Các hệ thống này sử dụng bộ nhớ chung và phân phối xung điện máy tính, bộ nhớ, bus và các thiết bị ngoại vi giữa nhiều bộ xử lý đồng thời. Multiprocessing được chia thành ba loại sau:

Symmetric multiprocessing (SMP)

Trong multiprocessing đối xứng (hoặc “kết nối chặt”), các bộ xử lý chia sẻ bộ nhớ và bus hoặc đường dẫn dữ liệu. Một bản sao duy nhất của hệ điều hành quản lý tất cả các bộ xử lý. SMP, còn được gọi là hệ thống “chia sẻ mọi thứ”, thường không vượt quá 16 bộ xử lý.

Asymmetric multiprocessing (AMP)

Trước khi phát triển các bộ xử lý đa tương xứng, chỉ có sẵn các bộ xử lý không tương xứng. Mỗi bộ xử lý trong hệ thống không tương xứng được giao một nhiệm vụ xác định trước. Mối quan hệ chính phụ tồn tại trong hệ thống đa xử lý không đối xứng, trong đó tất cả các bộ xử lý nhận chỉ thị từ một bộ xử lý chính. AMP là một lựa chọn giá rẻ hơn so với SMP.

Massively parallel processing (MPP)

Trong xử lý MPP (hoặc “kết nối lỏng”), lên đến 200 hoặc nhiều bộ xử lý khác nhau có thể làm việc trên cùng một ứng dụng. Mỗi bộ xử lý có hệ điều hành và bộ nhớ riêng, nhưng sắp xếp “kết nối” của đường dẫn dữ liệu cho phép gửi tin nhắn giữa các bộ xử lý. Thông thường, thiết lập cho MPP phức tạp hơn, đòi hỏi suy nghĩ về cách phân vùng cơ sở dữ liệu chung giữa các bộ xử lý và cách phân công công việc giữa các bộ xử lý. Một hệ thống MPP còn được gọi là hệ thống “không chia sẻ gì”.

đa luồng

Quy trình so với luồng thực thi ( process vs thread )

Có một sự nhầm lẫn thông thường rằng quy trình và luồng là giống nhau, trong khi thực tế chúng là các chuỗi thực thi riêng biệt.

Dưới đây là những khác biệt chung giữa một quy trình và một luồng:

  • Một quy trình là một phần của một chương trình đang chạy, trong khi một luồng là một phần của một quy trình.
  • Luồng nhẹ hơn so với quy trình.
  • Khi một quy trình kết thúc, quá trình đó diễn ra chậm hơn so với khi một luồng kết thúc.
  • Việc tạo ra một quy trình mất nhiều thời gian hơn so với việc tạo ra một luồng.
  • Các quy trình yêu cầu nhiều thời gian để chuyển đổi ngữ cảnh, trong khi luồng cần ít thời gian hơn.
  • Không giống như luồng, chia sẻ bộ nhớ giữa các quy trình được tách biệt lớn.
  • Dữ liệu không được chia sẻ giữa các quy trình, nhưng nó được chia sẻ giữa các luồng.

Ngoài hiểu lầm về quá trình so với luồng (process vs thread), đôi khi người ta cũng nhầm lẫn giữa Đa Luồng ( Multiprocessing ) và đa chương trình ( multiprogramming ), hay sự thực thi xen kẽ của hai hoặc nhiều chương trình trên một bộ xử lý. Ngày nay, thuật ngữ này ít được sử dụng vì hầu hết các hệ điều hành máy tính đều hỗ trợ multiprogramming.

đa luồng

Thách thức của multiprocessing

Mặc Multiprocessing cải thiện hiệu suất và độ tin cậy của hệ thống, nhưng nó cũng đặt ra một số thách thức:

Đắt đỏ

Hệ thống có nhiều bộ xử lý có thể tốn kém. Chỉ có một bộ xử lý thì ít tốn kém hơn so với có hai hoặc nhiều hơn. Việc đầu tư vào nhiều bộ xử lý chỉ nên được thực hiện nếu nó có lợi trong dài hạn, vì ngoài chi phí ban đầu, việc duy trì chúng cũng tốn kém.

Tắc nghẽn

Trong các hệ thống có nhiều bộ xử lý, tắc nghẽn có thể xảy ra nếu một bộ xử lý cố gắng truy cập vào một thiết bị vào/ra (I/O) trong khi bộ xử lý khác đang cố gắng sử dụng nó.

Yêu cầu bộ nhớ bổ sung

Do khả năng tính toán cải thiện, máy tính multiprocessor được sử dụng rộng rãi. Tuy nhiên, chúng yêu cầu nhiều bộ nhớ hơn. Trong kiến trúc multiprocessing, bộ nhớ được chia sẻ trên tất cả các quy trình và mỗi bộ xử lý đều cần không gian bộ nhớ riêng. Tất cả các bộ xử lý hoạt động cùng nhau và truy cập trực tiếp vào bộ nhớ chính, dẫn đến tăng sự tiêu thụ bộ nhớ.

Hệ điều hành phức tạp

Trong các hệ điều hành multiprocessing, mỗi CPU có hệ điều hành riêng, nhiệm vụ nhỏ được phân công cho từng bộ xử lý và công việc được phân phối trên các bộ xử lý. Tuy nhiên, việc sử dụng nhiều bộ xử lý làm cho việc hoạt động của hệ điều hành trở nên phức tạp hơn.

Lợi ích của đa luồng ( multiprocessing )

Môi trường multiprocessing được áp dụng rộng rãi và mang lại nhiều lợi ích như tăng tốc độ, thông lượng và độ tin cậy. Một số lợi ích chung của multiprocessing bao gồm:

Độ tin cậy

Nếu một bộ xử lý trong hệ thống multiprocessor gặp sự cố, các bộ xử lý khác có thể tiếp tục hoạt động. Mặc dù việc tắt một bộ xử lý có thể gây chậm dần dần, hệ thống vẫn có thể hoạt động mượt mà. Điều này làm cho hệ thống multiprocessing rất đáng tin cậy.

Tăng thông lượng

Thông lượng là số quy trình được thực thi trong một thời điểm nhất định. Với việc sử dụng nhiều CPU để xử lý dữ liệu, hiệu suất tăng lên khi hệ thống sử dụng xử lý song song. Điều này có nghĩa là có thể hoàn thành nhiều nhiệm vụ trong thời gian ngắn hơn khi chia chúng giữa các bộ xử lý khác nhau.

Tiết kiệm chi phí

Hệ thống đa luồng ( multiprocessing ) kinh tế hơn so với việc sử dụng nhiều hệ thống đơn bộ xử lý. Điều này đến từ việc nhiều bộ xử lý trong một hệ thống duy nhất chia sẻ cùng một bộ nhớ, không gian đĩa, bus và các thiết bị ngoại vi.

Symmetric multiprocessing, asymmetric multiprocessing và massively parallel processing là một số dạng multiprocessing. Hãy tìm hiểu cách các chế độ này khác nhau và làm quen với các trường hợp sử dụng đặc biệt của mỗi chế độ.

Hiện nay Máy Chủ VINA đang cung cấp các dòng CPU đa luồng chính hãng với giá cạnh tranh.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Con gì có mấy chân?