Sự khác biệt giữa Bế tắc và Sự tàn bạo | Deadlock vs Starvation
Chết tà và đói
Sự khác biệt chính giữa bế tắc và đói là mối quan hệ nhân quả giữa họ; đó là bế tắc gây ra đói. Một khác biệt thú vị giữa bế tắc và đói là bế tắc là một vấn đề trong khi đói có thể, đôi khi, giúp thoát khỏi bế tắc. Trong thế giới máy tính, khi viết một chương trình máy tính, sẽ có nhiều tiến trình / luồng đồng thời chạy một chương trình khác để hoàn thành yêu cầu dịch vụ cho chương trình. Do đó, để có một hệ thống công bằng, người lập trình phải đảm bảo rằng tất cả các quy trình / chủ đề sẽ nhận được hoặc có đủ quyền truy cập vào các tài nguyên mà họ cần. Nếu không, sẽ có một bế tắc, và nó sẽ dẫn đến một sự đói kém sau đó. Nói chung, một hệ thống công bằng không chứa bất kỳ deadlocks hoặc đói. Deadlocks và đói sẽ xảy ra chủ yếu là khi nhiều chủ đề đang cạnh tranh với nguồn lực hạn chế.
Bế tắc là gì?
Một bế tắc là một điều kiện xảy ra khi hai luồng hoặc quá trình đợi nhau để hoàn thành nhiệm vụ . Họ sẽ chỉ treo máy nhưng không bao giờ ngừng hoặc hoàn thành nhiệm vụ của họ. Trong khoa học máy tính, các deadlocks có thể được nhìn thấy ở khắp mọi nơi. Trong một cơ sở dữ liệu giao dịch, khi hai quá trình trong mỗi giao dịch của riêng nó cập nhật cùng một hai dòng thông tin nhưng theo thứ tự ngược lại sẽ gây ra một bế tắc. Trong chương trình đồng thời, một bế tắc có thể xảy ra khi hai hành động cạnh tranh sẽ chờ đợi cho nhau tiến lên phía trước. Trong các hệ thống viễn thông, một bế tắc có thể xảy ra do mất mát hoặc tham nhũng của tín hiệu.
Hiện tại, bế tắc là một trong những vấn đề chính trong các hệ thống đa xử lý và tính toán song song. Là một giải pháp, một hệ thống khóa được gọi là quá trình đồng bộ hóa được thực hiện cho phần mềm cũng như phần cứng.
Bạo lực là gì?
Từ điển của khoa học y tế, đói là kết quả của sự thiếu hụt nghiêm trọng hoặc tổng số chất dinh dưỡng cần thiết cho việc duy trì cuộc sống. Tương tự, trong khoa học máy tính, đói làmột vấn đề gặp phải khi khi nhiều luồng hoặc quá trình chờ đợi cho cùng một tài nguyên, được gọi là sự bế tắc. Để thoát khỏi bế tắc, một trong các quy trình hoặc luồng cần phải từ bỏ hoặc quay trở lại để thread hoặc quá trình khác có thể sử dụng tài nguyên. Nếu điều này xảy ra liên tục và cùng một quy trình hoặc chủ đề phải từ bỏ hoặc quay trở lại mỗi lần trong khi vẫn cho phép các quy trình hoặc luồng khác sử dụng tài nguyên thì quá trình hoặc luồng được chọn sẽ quay trở lại tình huống đói khát.Vì vậy, để thoát khỏi bế tắc, đói là một trong những giải pháp . Do đó, đôi khi sự đói kém được gọi là một loại vóc dáng . Khi có nhiều tiến trình ưu tiên hoặc luồng ưu tiên cao, quá trình hoặc luồng ưu tiên thấp hơn sẽ luôn luôn chết đói. Có thể có nhiều sự đói khát như
đói với tài nguyên và đói trên CPU . Có rất nhiều ví dụ phổ biến về nạn đói. Họ là vấn đề của người viết-người viết và vấn đề triết học của nhà ăn, điều này nổi tiếng hơn. Có năm nhà triết học im lặng ngồi ở một bàn tròn với bát spaghetti. Rộng được đặt giữa mỗi cặp triết gia lân cận. Mỗi nhà triết học phải nghĩ và ăn luân phiên. Tuy nhiên, một triết gia chỉ có thể ăn spaghetti khi ông có cả hai phía bên trái và phải rèn. Các "Nhà triết học ăn uống"
Sự khác nhau giữa Deadlock và Starvation là gì?
Quá trình:
Trong bế tắc, hai luồng hoặc quá trình sẽ chờ đợi cho nhau và cả hai không tiến về phía trước.
• Trong đói, khi hai hoặc nhiều tiến trình chờ đợi cho cùng một tài nguyên, một người sẽ quay trở lại và để cho những người khác sử dụng tài nguyên đầu tiên và tiếp theo là chủ đề hoặc quá trình chết đói sẽ thử lại. Vì vậy, tất cả các chủ đề hoặc quy trình sẽ tiến hành chuyển tiếp.
• Rolling Back:
• Trong một bế tắc, cả hai chủ đề ưu tiên cao / quá trình, cũng như chủ đề ưu tiên thấp / quá trình, sẽ chờ đợi cho nhau vô hạn. No không bao giơ kêt thuc.
• Tuy nhiên, trong tình trạng đói kém, những người ưu tiên thấp sẽ đợi hoặc quay trở lại nhưng những ưu tiên cao sẽ tiếp tục.
• Đang chờ hoặc khóa:
• Một bế tắc là một vòng tròn chờ đợi.
• Một sự đói khát là một loại của một con linh dương và đôi khi giúp thoát ra khỏi bế tắc.
• Bế tắc và sự đói khát:
• Bế tắc gây ra nạn đói, nhưng đói không gây ra bế tắc.
Nguyên nhân:
Một bế tắc sẽ xảy ra do sự loại trừ lẫn nhau, giữ và chờ đợi, không có sự trừng phạt hoặc chờ đợi chu kỳ.
Sự đói nghèo xảy ra do sự khan hiếm nguồn lực, quản lý tài nguyên không kiểm soát và ưu tiên quá trình.
Tóm tắt:
Deadlock vs. Starvation
Ngưng và đói là một số vấn đề xảy ra do các cuộc đua dữ liệu và điều kiện chủng tộc xảy ra trong quá trình lập trình cũng như triển khai phần cứng. Trong một bế tắc, hai chủ đề sẽ vô hạn chờ đợi cho nhau mà không thực hiện trong khi, trong đói, một sợi sẽ lăn lại và để cho các sợi khác để sử dụng các nguồn lực. Một bế tắc sẽ gây ra đói, trong khi đói sẽ giúp một sợi để thoát khỏi bế tắc.
Hình ảnh Courtesy:
Máy tính của Steve Jurvetson từ Menlo Park, Hoa Kỳ (CC BY 2. 0)
- Các nhà triết học ăn uống "của Bdesham (CC BY-SA 3. 0)