Chủ Nhật, 19 tháng 4, 2015

Đồng Bộ Hóa Tiến Trình (Phần 1) - Vùng Tranh Chấp


Một tiến trình thao tác đồng thời có thể ảnh hưởng hay bị ảnh hưởng bởi tiến trình khác đang được sử dụng trong hệ thống. Các tiến trình đồng thao tác có thể trực tiếp chia sẻ không gian địa chỉ vật lý (code hay data) hay nó được phép chia sẻ dữ liệu qua các file. Trường hợp của vấn đề trước có thể đạt được thông qua việc sử dụng những tiến trình nhỏ hay là những tiểu trình. Việc truy cập đến vùng dữ liệu chia sẻ một cách đồng thời có thể dẫn đến mâu thuẫn trong dữ liệu . Ở đây chúng ta sẽ thảo luận những cơ chế khác nhau để đảm bảo thứ tự thực thi của những tiến trình thao tác đồng thời mà chia sẻ không gian địa chỉ luận lý để đảm bảo tính bền vững của dữ liệu, một giải pháp cụ thể được phân tích ở đây là giải pháp cho nhiều tiến trình( giải pháp bakery).

1. Khái Niệm

Giả sử rằng hệ thống có n tiến trình P(0), P(1), … ,P(n-1) cùng truy xuất đồng thời một vùng dữ liệu chia sẻ chẳng hạn như một đoạn code nào đó. Đoạn code được chia sẻ đó được gọi là vùng tranh chấp, trong vùng tranh chấp này các tiến trình có thể thay đổi biến dùng chung, cập nhật giá trị cho các dữ liệu,…
Hình ảnh sau minh họa cho vùng tranh chấp:

Đối với vùng tranh chấp vấn đề quan trọng là hệ thống phải đảm bảo sao cho khi một tiến trình đang thực thi trên vùng tranh chấp thì không có tiến trình nào khác được thực hiện tại vùng này. Sự thực thi của các tiến trình trên vùng tranh chấp được gọi là sự loại trừ tương hỗ( mutual exclusion)

2. Cấu Trúc Tổng Quát Của Tiến Trình Khi Vào Vùng Tranh Chấp


Để được vào vùng tranh chấp, mỗi tiến trình phải gửi yêu cầu cho hệ điều hành và phải được chấp thuận khi đó tiến trình mới được vào vùng tranh chấp. Phần đoạn code thực thi yêu cầu này được gọi là Entry_section(). Sau khi vào được vùng tranh chấp tiến trình thực thi trên vùng tranh chấp được gọi là  Critial_section(). Sau khi thực hiện xong trên vùng tranh chấp, tiến trình thoát ra khỏi  vùng tranh chấp bằng đoạn code được gọi là Exit_section().

   Cấu trúc tổng quát sau được mô tả đầy đủ:


do{
    entry section;
    critial section;
    exit section;
    remainder section;
}

while(1);



3. Nguyên Tắc Giải Quyết Tranh Chấp
  • Chia nhỏ các lệnh thì chia nhỏ cho đến khi không thể chia nhỏ được nữa.
  • Có thể chuyển các tiến trình động thời đồng bộ về tiến trình đồng thời bất đồng bộ.
  • Tiến trình ngoài vùng tranh chấp không có quyền cấm các tiến trình khác vào vùng tranh chấp.
  • Tiến trình không được trì hoãn vô hạn định khi vào vùng tranh chấp.

4. Phương Pháp Giải Quyết Tranh Chấp

Có 2 phương pháp cơ bản:
Phương pháp phần mềm (software solution):
Người sử dụng tự thực hiện thông thường có sự hỗ trợ của lập trình viên
Hệ điều hành cung cấp công cụ hỗ trợ lập trình viên qua lời gọi hệ thống
Giải pháp phần cứng:Dựa trên một số lệnh đặc biệt interrupt disable, test and set.

Phần sau: Giải thuật Bakery và chứng minh giải thuật


Nguồn: Ngọc Tiển I3
Unknown Software Developer

Là sinh viên, dành khá nhiều thời gian cho việc học tập và nghiên cứu. Đam mê An Toàn Thông Tin, Lập trình hệ thống, Quản Trị Mạng. Có kiến thức về CCNA, CCNP

Không có nhận xét nào:

Đăng nhận xét