Tìm hiểu về khái niệm Inter Process Communication

Chúng tôi rất vui mừng được chia sẻ kiến thức sâu sắc về từ khóa Ipc la gi và hy vọng rằng nó sẽ hữu ích cho bạn đọc. Bài viết tập trung trình bày ý nghĩa, vai trò và ứng dụng của từ khóa này trong việc tối ưu hóa nội dung trang web và chiến dịch tiếp thị trực tuyến. Chúng tôi cung cấp các phương pháp tìm kiếm, phân tích và lựa chọn từ khóa phù hợp, cùng với các chiến lược và công cụ hữu ích. Hy vọng rằng thông tin mà chúng tôi chia sẻ sẽ giúp bạn xây dựng chiến lược thành công và thu hút lưu lượng người dùng. Xin chân thành cảm ơn sự quan tâm và hãy tiếp tục theo dõi blog của chúng tôi để cập nhật những kiến thức mới nhất.

Một process (tiến trình) trong hệ điều hành có thể được tiến hành độc lập hoặc giao tiếp với nhau. Process độc lập là lúc process không ảnh hưởng tác động hoặc bị ảnh hưởng tác động bởi các process khác trong mạng lưới hệ thống, và không san sớt data với bất kì process nào. Process giao tiếp khi process đó có thể ảnh hưởng tác động hoặc bị ảnh hưởng tác động bởi các process khác trong mạng lưới hệ thống, và sự san sớt data có diễn ra.

Bạn Đang Xem: Tìm hiểu về khái niệm Inter Process Communication

Thông thường, Inter Process Communication sẽ tiến hành hiện thực hóa, code trên những mạng lưới hệ thống máy tính song song (parallel computer), với những máy ảo nhỏ (Virtual Private Server – VPS), việc lập trình IPC là không cấp thiết. Stream Hub sẽ không còn nói về kiểu cách hiện thực IPC trong code mà nêu ra một số vấn đề liên quan đến IPC.

Vì sao các process phải giao tiếp với nhau?

Việc được cho phép truyền data giữa các process (bạn cũng có thể tìm hiểu process là gì) là vì những lý do sau:

  • Giúp san sớt thông tin giữa các users.
  • Giúp speech up các tác vụ trong máy tính.
  • Giúp xây dựng modun.
  • Giúp thuận tiện trong chạy nhiều tác vụ cùng một lúc.

IPC là viết tắt của từ gì?

Inter Process communication (hay còn gọi là IPC) – giao tiếp giữa các process – là một phương thức không thể thiếu trong việc giúp các process trao đổi thông tin với nhau.

Hai models chính của IPC là shared memory (san sớt bộ nhớ) – với nhiệm vụ hình thành khu vực lưu trữ bộ nhớ chung – và message passing (truyền tin) – với nhiệm vụ truyền tải tin nhắn liên tục giữa các process.

There are two primary models of interprocess communication: shared memory and. message passing.

W3School

Cả hai model trên đều phổ thông trong các hệ điều hành. Model message passing hữu ích cho việc trao đổi số lượng nhỏ các data và dễ thực hiện hơn trong hệ cơ sở tài liệu phân tán – mạng lưới hệ thống phân tán (distributed system). Trái lại, shared memory có thể nhanh hơn message passing vì các mạng lưới hệ thống truyền thông điệp thường thực hiện thông qua system call (mà chúng tốn nhiều thời kì hơn và phải có sự can thiệp của kernel – nhân hệ điều hành).

Trong mạng lưới hệ thống shared memory, các system call chỉ thực hiện khi cấp thiết lập các vùng bộ nhớ chung. Tức thị các processor CPU có thể tự do đọc ghi trong phần bộ nhớ này.

Các nghiên cứu gần đây đã chỉ ra rằng message passing tốt hơn shared memory khi sử dụng trong các mạng lưới hệ thống core processing vì các sự cố đồng bộ cache mà shared memory dễ gặp phải lúc các data chạy qua caches.

Shared-Memory Systems

IPC sử dụng model shared memory sẽ có nhu cầu các process tham gia mở một vùng nhớ chung. Vùng nhớ chung này được tạo thành từ nhiều vùng nhớ riêng của mỗi process.

Các process khác muốn tiếp cận vùng nhớ này sẽ phải lưu địa chỉ của vùng nhớ chung ấy vào vùng nhớ riêng của mình . Mà thông thường, các hệ điều hành sẽ chặn không cho những process xâm nhập bộ nhớ của nhau.

Để sử dụng model shared memory, các process cần được cho phép việc truy cập bộ nhớ của nhau để sở hữu thể sử dụng và viết data trên vùng san sớt chung. Các tiến trình sẽ quyết định kiểu data nào được san sớt và vùng san sớt chung ở đâu. Tất nhiên chúng phải đảm bảo các vùng san sớt chung không bị ghi đè lên nhau.

Một ví dụ đơn giản về việc ăn ở quán ăn cho model này. Giả sử, bạn gọi 10 phần ăn, các món ăn được đem lên từ từ. Cho thức ăn là data cần truyền, người ăn là process cần data và đầu bếp là process cung cấp data. Việc đầu bếp và người ăn cùng thực hiện nhiệm vụ của mình trong cùng thời khắc để đảm bảo thời kì ăn không bị ngắt quãng và lâu. đây là cơ chế IPC. Và cụ thể hơn, họ cùng share một lượng data/ thức ăn. Với tham dự, người ăn không được ăn (write data) lên phần mà đầu bếp chưa chế biến.

Vấn đề IPC trong mạng lưới hệ thống Shared Memory

Trong ví dụ về quán ăn ở trên, bạn có nhận ra sự không tốt? Giả sử nếu nhiều thực khách cùng lúc order một món ăn, món ăn này sẽ ra sao? Quay trở lại vấn đề trong mạng lưới hệ thống shared memory, nếu nhiều processor cùng truy cập một vùng nhớ (memory) sẽ gây nên ra sơ sót tính toán.

Xem Thêm : Tư vấn giám sát tiếng Anh là gì? Mô tả công việc tư vấn giám sát

Nói một cách “toán” hơn, nếu ta khai báo x với giá trị lúc đầu là 0. Cùng lúc processor 1 tăng biến x lên 1 và processor 2 tăng biến x lên 2, x sẽ sở hữu được kết quả là? Câu vấn đáp nếu processor nào chạy xong sau, x sẽ có mức giá trị đó; và đương nhiên tất cả chúng ta không thể biết được processor nào kết thúc sau.

Hướng giải quyết và xử lý của vấn đề này là đồng bộ hóa (synchronising) shared data. Tức thị nếu processor đầu, sau, cùng lúc tăng giá trị tuần tự lên 1 và 2; thì giá trị cuối cùng xoành xoạch là 3 (kệ thằng nào thay đổi giá trị sau hết kết quả vẫn là 3 sau thời điểm đồng bộ hóa).

Message-Passing Systems

Bên cạnh việc dùng shared memory, một cách khác để liên kết các process lại với nhau là sử dụng message passing.

Message passing cung cấp một cơ chế được cho phép các tiến trình liên lạc và đồng bộ mà không cần san sớt vùng nhớ (address space) của nhau. Điều này đặc biệt quan trọng hữu ích trong những hệ cơ sở tài liệu phân tán (distributed database), nơi mà các process nằm trên các máy tính khác nhau kết nối qua mạng lưới hệ thống mạng. Cụ thể là Khóa học chat qua Internet như messenger được thiết kế để người dùng kết nối với nhau thông qua việc trao đổi các tin nhắn.

Cơ sở truyền in cung cấp ít nhất hai nguồn:

Gửi (tin) <=> nhận (tin)

Process gửi tin nhắn có thể nhất quyết hoặc chuyển đổi về kích thước. Ví dụ, nếu process P. và quận muốn trao đổi, các tin cần phải được gửi và nhận giữa hai đầu: một liên kết truyền tin phải tồn tại giữa hai process.

Message-Passing Systems có 2 phương pháp: kết nối trức tiếp vào kết nối gián tiếp.

Kết nối trực tiếp

o So với kết nối trực tiếp: mỗi process muốn truyền tin cần phải kê tên cho tin nhắn hoặc tên người gửi

  • Symmetry: cần cả tên người gửi và tên tin nhắn để process đó thực hiện thao tác gửi
  • Asymmertry: chỉ có tên tin nhắn là process đó có thể gửi cho bất kì process nào khác

Kết nối gián tiếp

o So với kết nối gián tiếp: các tin được trao thông qua các hộp thư hoặc các cổng.

  • Hộp thư: Nơi tin nhắn được gửi vào hoặc được lấy ra. Mỗi một hộp thư sẽ tiến hành xác định bởi 1 ID duy nhất. Các process có thể liên lạc với nhau thông qua nhiều hộp thư, nhưng chỉ lúc các hộp thư này được thiết lập như hộp thư chung giữa hai process.
  • Kết nối được đồng bộ hoặc không được đồng bộ – blocking và nonblocking

o Chặn gửi: process gửi tin nhắn bị chặn cho tới khi tin nhắn đã được trao bởi process còn sót lại hoặc tới khi tin vào hộp thư.

o Không chặn gửi: process gửi tin nhắn xong thì tiếp tục hoạt động.

o Chặn nhận: Process nhận tin chặn cho tới khi một tin nhắn có sẵn.

o Không chặn nhận: process nhận tin sẽ nhận một tin hoàn chỉnh hoặc một giá trị null.

Dù là dùng Message Passing hay Shared-memory system, vẫn sẽ sở hữu được trường hợp process A “đợi” process B có thông tin rồi mới thực hiện. Nếu nhiều process cùng “đợi”, sẽ dẫn đến timeout rất mất thời gian, các bạn sẽ không muốn khi gửi gói tin/ gửi request và phải đợi rất mất thời gian để sở hữu thể nhận data trả về, vậy có cách nào khắc phục tình trạng này? Đó không phải là công việc mà bạn phải lo lắng, bởi hệ điều hành đã thực hiện việc này cho tất cả chúng ta, câu vấn đáp là bộ định thời.

Định thời CPU (Process Scheduling)

Mục tiêu của IPC nói trên là để các process khác nhau có thể nhận thông tin của nhau, và nếu như bạn muốn quá trình gửi – nhập được diễn ra đúng và chuẩn xác, đó là việc của cục định thời.

Xem Thêm : Blog

Mục tiêu của việc đa chương trình là lúc nào cũng có những chương trình (process khác nhau) chạy xuyên suốt để tối đa hóa sử dụng CPU. Mục tiêu của việc chia sẻ thời gian là chuyển đổi CPU giữa những quá trình đó một cách thường xuyên để người dùng có thể tương tác với mỗi chương trình trong lúc nó hoạt động.

Một chương trình di chuyển giữa các hàng đợi khác nhau trong suốt thời gian của nó. Hệ điều hành sẽ phải chọn ra những chương trình từ những hàng chờ vào một lúc nào đó. Việc chọn lựa chương trình được tiến hành bởi một scheduler thích hợp.

Thông thường, trong một hệ thống, nhiều chương trình được chọn để xem xét hơn là hoạt động ngay lập tức. Những chương trình được lưu trữ trong bộ nhớ của thiết bị (thông thường là ổ đĩa), đó là nơi lưu trữ để hoạt động sau này. long-term scheduler hoặc job scheduler sẽ chọn những chương trình từ chỗ này và tải chúng vào bộ nhớ để hoạt động. Short-term scheduler hoặc CPU scheduler sẽ chọn từ những chương trình đã sẵn dàng để hoạt động và phân bổ CPU cho một trong số chúng

Sự khác nhau cơ bản giữa hai bộ lập trình này nằm ở tần suất hoạt động. Short-term scheduler phải chọn một chương trình mới cho CPU thường xuyên. Mỗi chương trình có thể hoạt động chỉ trong vòng một vài phần nghìn giây trước khi chờ một yêu cầu I/O.

Thông thường, Short-term scheduler hoạt động tối thiểu mỗi 100 phần nghìn giây. Bởi vì những hoạt động như vậy, Short-term scheduler phải nhanh. Nếu tốn 10 phần nghìn giây để quyết định hoạt động một chương trình 100 phần nghìn giây thì 10/(100+10)=9 phần trăm CPU đang được dùng chỉ để lên kế hoạch (phần trăm lãng phí).

Một số thuật ngữ khác trong quá trình liên lạc giữa các process

o Zero capacity: bộ đệm không được cho phép bất kỳ tin nhắn chờ nào, cũng đều có tức thị process gửi tin nhắn sẽ bị chặn đến khi bên kia nhận tin.

o Bounded capacity: sẽ sở hữu được một giới hạn n các tin nhắn được chờ trong buffer. Có tức thị nếu vẫn chưa tới giới hạn, các tin có thể tiếp tục được tạo ra bởi process gửi tin nhắn. Nếu đã có n tin nhắn đang chờ được trao, process này sẽ bị chặn đến khi hàng tin nhắn được trống (bên kia nhận tin)

o Unbounded capacity: lượng tin nhắn chờ là vô tận, tức thị process gửi không bao giờ bị chặn.

Trường hợp zero capacity thường được xem là trường hợp giữa hai process không có bộ nhớ đệm, còn hai trường hợp bounded và unbound thì có bộ đệm giữa hai process.

Ví dụ thực tế của IPC – trình duyệt Chrome

Như bạn đã biết, không như những trình duyệt khác (ví dụ Firefox phiên bản cũ, phiên bản mới thì mình không biết), thường có tình trạng đứng 1 tab là đứng hết cả trình duyệt. Nhưng trình duyệt Chrome thì không như vậy.

Đó là nhờ cơ chế multiprocess, mỗi tab của Chrome là một process độc lập với nhau, và chúng luôn chạy song song với nhau.

Kiến trúc multiprocess của Chrome hoạt động trên cơ chế nhận mặt 3 kiểu của process:

Brownser process: kiểm soát user interface, disk và network. Chỉ có duy nhất 1 process loại này.

Renderer process: gồm có phương pháp render/ hiển thị một website. Mỗi lần bạn bật 1 tab mới, Chrome sẽ tự động hóa tạo 1 process loại này cho bạn. Renderer process chạy trên các sandbox, tức thị chúng không cho những process trên trình duyệt có khả năng tiếp cận ổ cứng, mạng lưới hệ thống mạng của người dùng, nhằm tăng độ bảo mật thông tin.

Plug-in process: hay còn gọi là extension trên trình duyệt, đây là loại process cần được giao tiếp với hai loại process còn sót lại. (Ví dụ: Flash)

Một process (tiến trình) trong hệ điều hành có thể được tiến hành độc lập hoặc giao tiếp với nhau. Process độc lập là lúc process không ảnh hưởng tác động hoặc bị ảnh hưởng tác động bởi các process khác trong mạng lưới hệ thống, và không san sớt data với bất kì process nào. Process giao tiếp khi process đó có thể ảnh hưởng tác động hoặc bị ảnh hưởng tác động bởi các process khác trong mạng lưới hệ thống, và sự san sớt data có diễn ra.

Bạn Đang Xem: Tìm hiểu về khái niệm Inter Process Communication

Thông thường, Inter Process Communication sẽ tiến hành hiện thực hóa, code trên những mạng lưới hệ thống máy tính song song (parallel computer), với những máy ảo nhỏ (Virtual Private Server – VPS), việc lập trình IPC là không cấp thiết. Stream Hub sẽ không còn nói về kiểu cách hiện thực IPC trong code mà nêu ra một số vấn đề liên quan đến IPC.

You May Also Like

About the Author: v1000