Tổng quan + Khi có nhiều giao tác đang được thực thi đồng thời trên những tiến trình khác nhau trong những bộ xử lý khác nhau, một số cơ chế là cần thiết để giữ chúng không cho xâm nhập
Trang 1Phần I:
Điều khiển đồng thời bằng cơ chế then cài
Phần II:
Bài toán sử dụng bộ quản lý khóa cơ bản
Giáo viên hướng dẫn: PGS.TS Lê Văn Sơn
Sinh viên thực hiện: Võ Minh Trang
TIỂU LUẬN
HỆ TIN HỌC PHÂN TÁN
ĐẠI HỌC ĐÀ NẴNG KHOA CÔNG NGHỆ THÔNG TIN
Đà Nẵng, tháng 4/2012
Trang 2NỘI DUNG TRÌNH BÀY
PHẦN I: Điều khiển đồng thời bằng cơ chế then cài
1 Tổng quan
2 Cơ chế then cài
2.1 Loại trừ tương hổ 2.2 Then cài chọn lựa các đối tượng 2.3 Giao dịch 2 Pha
PHẦN II: Sử dụng bộ quản lý khóa cơ bản
1 Tổng quan
2 Bộ quản lý Khóa cơ bản
3 Những điểm cần cải tiến
KẾT LUẬN
Trang 3PHẦN I
Điều khiển đồng thời bằng cơ chế then cài
1 Tổng quan
+ Khi có nhiều giao tác đang được thực thi đồng thời trên những tiến trình khác nhau (trong những bộ xử lý khác nhau), một
số cơ chế là cần thiết để giữ chúng không cho xâm nhập vào các tiến trình khác Thuật toán điều khiển đồng thời được sử dụng rộng rãi nhất là then cài
+ Then cài là bộ làm chậm với nguyên lý là làm chậm một tác động nào đó cho đến thời điểm mà sự thực hiện của nó không còn nguy cơ phá huỷ sự gắn bó của trật tự hoá (bằng cách chặn tiến trình hiện hành)
Trang 4PHẦN I
PHẦN I (tt) Điều khiển đồng thời bằng cơ chế then cài
+ Là phép toán được thực hiện bởi một tiến trình nhằm cho phép đăng ký truy cập vào tài nguyên Nó gán hay không gán quyền truy cập căn cứ vào các quy tắc tiền định như luật loại trừ tương hỗ, luật đọc-hiệu chỉnh thông tin
+ Một cơ chế CÀI THEN tốt đòi hỏi có nhiều khoá, là nhiều tốn kém và có nhiều khả năng dẫn đến sự bế tắc
Trang 5PHẦN I
PHẦN I (tt) Điều khiển đồng thời bằng cơ chế then cài
Một trong những giải pháp đơn giản để đạt được trật tự hoá gắn
bó thể hiện ở chổ bắt buộc phải sử dụng trật tự hoá tuần tự Để làm việc đó, toàn bộ giao dịch được đặt trong cặp hàm nguyên thuỷ
mo_giaodich và dong_giaodich Đây là sự đảm bảo cho việc loại trừ
tương hỗ giữa các giao dịch.
Nếu ta biết trước các đối tượng được xử lý bởi một giao dịch nào đó, thì ta có thể cài then công việc truy cập đến các đối tượng Điều
đó chỉ cho phép thực hiện song song đối với các giao dịch truy cập vào các đối tượng rời rạc.
Nếu ta muốn nâng cao hơn nữa khả năng sử dụng song song, thì cần phải thực hiện cài then ở mức độ thấp hơn mức giao dịch.
2 Cơ chế then cài
2.1 Loại trừ tương hỗ
Trang 6Theo quy tắc : Một giao dịch thay đổi giá trị của đối tượng phải
loại trừ tất cả các đối tượng khác muốn truy cập, ngược lại thì việc truy cập được tiến hành theo kiểu tương tranh.
Để đảm bảo điều đó luôn luôn được thực hiện, người ta cho
phép tiến hành cài then một đối tượng trước khi việc sử dụng nó có
hiệu lực.
Một giao dịch có thể thực hiện ba hàm nguyên thủy trên đối tượng e:
2.2 Then cài chọn lựa các đối tượng
1 v_doc(e) Sử dụng khi muốn có được quyền đọc e
theo kiểu chia sẻ
2 v_viet(e) Sử dụng khi muốn có quyền đọc và viết vào
e theo kiểu loại trừ
3 giai_phong(e) Giải phóng đối tượng e Giả sử trước đó đã
được cài then bởi cùng giao dịch này.
Trang 7Một giao dịch gọi là phát triển nếu:
+ Một phép toán chỉ được thực hiện trên một đối tượng sau khi đối tượng đó đã được cài then bởi giao dịch theo kiểu tương thích với phép toán
+ Không có giao dịch nào cài then được trên đối tượng mà trước đó đã bị cài then cũng bởi chính giao dịch đó, ngoại trừ theo kiểu loại trừ trong trường hợp trước đó đã sử dụng kiểu chia sẽ
+ Sau khi chấm dứt một giao dịch, không có đối tượng nào
bị cài then
Trang 8Một trật tự hoá được gọi là hợp thức nếu:
+ Đối tượng được một giao dịch cài then theo kiểu chia sẽ không bị bất cứ then cài nào theo kiểu loại trừ của các giao dịch khác
+ Một đối tượng bị cài then theo kiểu loại trừ thì không bị bất kỳ then cài mới nào nữa
Do vậy, mọi cố gắng cài then không phù hợp với các điều kiện tương hỗ nêu trên đều phải chờ (bị làm chậm lại) cho đến khi
mở then
Chú ý: Một giao dịch được gọi là tốt, nếu nó sử dụng các then cài phù hợp với đặc điểm của chúng Một trật tự hoá được gọi là hợp thức, nếu các then cài hoạt động phù hợp với các đặc điểm này
Trang 9Xem xét một giao dịch hình thành hợp thức bằng cách
kiểm tra hai điều kiện:
+ Toàn bộ đối tượng bị cài then vẫn ở trong tình trạng cài then cho đến cuối giao dịch
+ Không có then cài nào có thể diễn ra tiếp theo một then cài khác trong cùng một giao dịch
Điều kiện này thể hiện ở chổ là dãy các phép toán trên các then cài được phân tích thành hai pha nối tiếp nhau Một pha mà trong đó các đối tượng bị cài then, còn pha kia chúng được mở then
2.3 Giao dịch 2 Pha – 2PL
Trang 10PHẦN II
PHẦN II
SỬ DỤNG BỘ QUẢN LÝ KHÓA CƠ BẢN
VÀ NHỮNG ĐIỂM CẦN CẢI TIẾN
I Sử dụng bộ quản lý khóa cơ bản
+ Việc điều khiển đồng thời bằng khoá chốt là một cơ chế thường dùng để giải quyết những vấn đề liên quan đến việc đồng
bộ hoá dữ liệu truy cập dùng chung, đảm bảo dữ liệu dùng chung cho các thao tác tương tranh chỉ được truy xuất một lần một giao dịch, mỗi phần tử dữ liệu đều có một khoá chốt kết hợp với chúng
Trang 11+ Điều này được thực hiện bằng cách liên kết một khoá
chốt với mỗi đơn vị khoá Khoá này được giao dịch đặt ra trước
khi nó truy xuất và được điều chỉnh lại vào lúc nó hết sử dụng Hiển nhiên là một đơn vị khoá không thể truy xuất được nếu đã bị khoá bởi một giao dịch khác Vì vậy, yêu cầu khoá của một giao dịch chỉ được trao nếu khoá đi kèm hiện không bị một giao dịch khác giữ
+ Bộ xếp lịch đảm bảo rằng chỉ duy nhất giao tác có thể giữ khoá chốt trong một thời điểm, và chỉ có một giao tác có thể truy xuất dữ liệu đó tại cùng một thời điểm
Trang 12+ Khoá chốt được bộ xếp lịch (Schedule manager) dùng để đảm bảo tính khả tuần tự
+ Trước khi một giao tác có thể truy cập dữ liệu dùng chung, bộ xếp lịch sẽ khảo sát trạng thái khoá chốt của những dữ liệu này
+ Nếu không có giao tác nào khác đang giữ chúng thì bộ xếp lịch sẽ phát lệnh thông báo khoá dữ liệu này lại và sau đó các giao tác thực hiện các lệnh của mình trên dữ liệu đó
+ Nếu dữ liệu đang bị khoá bởi giao tác T2, thì giao tác này phải chờ cho đến khi nào T2 giải phóng khoá đó
Trang 13Những quy tắc quản lý và sử dụng khoá
Qui tắc 1: Khi nhận được một thao tác pi[x] từ bộ quản lý giao tác (Transaction Manager, TM), bộ xếp lịch kiểm tra xem pli[x] có đụng độ với một vài qlj[x] được đặt trước đó
+ Nếu có, nó sẽ trì hoãn pi[x] và buộc Ti chờ cho đến khi nó
có thể đặt được khoá cần thiết
+ Nếu không đụng độ, bộ xếp lịch (scheduler) sẽ đặt pli[x] và gởi pi[x] đến bộ quản lý dữ liệu (Data Manager, DM)
Quy tắc này nhằm hạn chế hai giao tác truy xuất đồng thời một phần tử dữ liệu trong tình trạng đụng độ
Qui tắc 2: Mỗi khi bộ xếp lịch đặt khoá cho Ti, pli[x], nó không thể giải phóng khoá đó cho đến khi Bộ quản lý dữ liệu trả lời đã
xử lý thao tác tương ứng của khoá pi[x]
Qui tắc 3: Mỗi khi bộ xếp lịch đã giải phóng một khoá cho một giao tác, nó không thể lấy tiếp bất kỳ khoá nào cho giao tác
đó
Thuật toán khóa chốt cơ bản
Trang 14II Những điểm cần cải tiến của bộ quản lý Khóa cơ bản
Thuật toán khóa được cho trong Thuật toán 1 được trình bày ở trên không đồng bộ hoá chính xác các thực thi giao dịch Điều này là do khi tạo ra các lịch biểu khả tuần tự, các thao tác khóa
và giải phóng khóa cũng cần phải được điều phối
Ví dụ: Xét hai giao dịch sau đây:
T 1 : Read(x)
x ← x + 1 Write(x) Read(y)
y ← y – 1 Write(y) Commit
T 2 : Read(x)
x ← x * 2 Write(x) Read(y)
y ← y * 2 Write(y) Commit
Dưới đây là một lịch biểu hợp lệ được bộ quản lý khóa tạo ra khi
sử dụng Thuật toán 1:
Trang 15Khóa chốt hai pha
+ Khóa chốt hai pha là một trong những kỹ thuật hiệu quả trong việc khắc phục một số đụng độ cũng như thời gian chết trong quá trình thực hiện các lệnh của các giao tác
+ Nhiệm vụ của bộ xếp lịch 2 giai đoạn (Two phase locking, 2PL) là quản lý khoá chốt và điều khiển giao tác khi nào lấy và khi nào giải phóng khoá
+ 2PL nhằm đồng bộ hoá việc đọc và ghi Trước khi đọc mục dữ liệu x, phải khóa x (khóa do đọc) Trước khi ghi lên x, giao tác phải khóa mục x ( khóa do ghi)
Trang 16Quá trình cấp phát và thu hồi khóa được thể hiện ở biểu đồ sau:
Hình trên cho thấy bộ quản lý khóa giải phóng khóa ngay sau khi hoàn tất việc truy xuất Điều này cho phép các giao dịch đang đợi khoá tiếp
tục tiến hành và nhận khoá, do vậy, làm tăng hoạt động đồng thời.
Trang 17Khoá chốt hai pha nghiêm ngặt (strict two-phase locking)
Kỹ thuật này cũng gồm 2 giai đoạn:
+ Giai đoạn tăng trưởng: giống với giai đoạn đầu của kỹ thuật khóa 2 pha
+ Giai đoạn thu hồi khóa:
- Tất cả các khóa được giải phóng cùng một lúc sau khi giao tác T kết thúc hoặc bị hủy bỏ
- Không có thao tác đọc/ghi nào được thực hiện một khi khóa được giải phóng bởi giao tác
Nếu giao tác bị hủy bỏ thì việc phục hồi lại những thay đổi
dữ liệu được thực hiện trước khi khóa được giải phóng
Khoá chốt hai pha nghiêm ngặt
Trang 18Khoá chốt hai pha nghiêm ngặt (strict two-phase locking)
Nhận khoá
Giải phóng khoá
Thời gian sử dụng mục dữ liệu
Trang 19Vấn đề bế tắc luôn xảy ra trong các kỹ thuật dùng cơ chế khóa chốt
Giả sử có 2 giao tác T1 và T2 thực hiện các lệnh đọc ghi
trên mục dữ liệu x và y như sau:
T1: lock (x); lock(y); read (x); write (y);
T2: lock (y); lock(x); read (y); write (x);
T1 chiếm giữ khóa x và cố gắng khóa y, T2 chiếm giữ khóa
y và cố gắng khóa x Hiện tượng bế tắc sẽ xảy ra
Để khắc phục tình trạng này:
+ Thiết lập thời gian Timeout, nếu thời gian thực hiện giao tác vượt quá thời gian Timeout thì hủy bỏ giao tác hoặc thực hiện thuật toán kiểm tra bế tắc
+ Sắp xếp các mục dữ liệu và truy xuất chúng theo một thứ
tự nhất định
+ Giảm bớt việc đồng hành các giao tác
Trang 20Tất cả các thông tin được trình bày ở trên với mục tiêu tìm hiểu vấn đề điều khiển đồng bộ bằng cơ chế then cài và bài toán
sử dụng bộ quản lý khoá cơ bản chỉ dừng lại ở phương diện nghiên cứu nguyên lý, phương pháp kỹ thuật giải quyết các vấn
đề đó Qua đó đã giúp cho tôi nắm bắt cơ bản được một phần nào đó bài toán trên
Tuy nhiên, do mới bước đầu tiếp cận nên có rất nhiều kiến thức liên quan mà tôi chưa kịp tìm hiểu một cách cặn kẽ Vì vậy rất mong nhận được nhiều ý kiến đóng góp và hướng dẫn của PGS.TS Lê Văn Sơn và các bạn
Xin chân thành cám ơn !
KẾT LUẬN