Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 37 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
37
Dung lượng
2,01 MB
Nội dung
Chương V-I: Liên lạc Tiến Trình Nhu Cầu Liên Lạc Q Chia sẻ thông tin p CƠ CHẾ ? TRAO ĐỔI THƠNG GIỮA CÁC TIẾN TRÌNH VẤNTIN ĐỀ GIẢI ? PHÁP ? Phối hợp tăng tốc độ xử lý JOB p Q Vũ Đức Lung Khoa KTMT L Vũ Đức Lung c om Khoa KTMT L R ng Các Cơ Chế Liên Lạc Signal : Không truyền liệu co an th SIGSEGV SIGCLD SIGUSR1 SIGUSR2 Pipe Truyền liệu không cấu trúc g SIGQUIT SIGILL SIGKILL SIGFPT SIGPIPE Mơ tả Người dùng nhấn phím DEL để ngắt xử lý tiến trình u cầu xử lý Tiến trình xử lý thị bất hợp lệ Yêu cầu kết thúc tiến trình Lỗi floating – point xảy ( chia cho 0) Tiến trình ghi liệu vào pipe mà khơng có reader Tiến trình truy xuất đến địa bất hợp lệ Tiến trình kết thúc Tín hiệu người dùng định nghĩa Tín hiệu người dùng định nghĩa du on Tín hiệu SIGINT Các Cơ Chế Liên Lạc Các tín hiệu gửi bởi?khi nhận xử lý sao? Vũ Đức Lung Khoa KTMT Vũ Đức Lung cu u Khoa KTMT Các Cơ Chế Liên Lạc Các Cơ Chế Liên Lạc Shared Memory Mâu thuẫn truy xuất => nhu cầu đồng hố Message Liên lạc mơi trường phân tán Liên kết tiềm ẩn Send(message) : gởi thông điệp Receive(message) : nhận thông điệp Liên kết tường minh Send(destination, message) : gởi thông điệp đến destination Receive(source,message) : nhận thông điệp từ source Khoa KTMT Vũ Đức Lung CuuDuongThanCong.com Khoa KTMT Vũ Đức Lung https://fb.com/tailieudientucntt Các Cơ Chế Liên Lạc Các Cơ Chế Liên Lạc Để thực liên lạc socket, cần tiến hành thao tác :: Socket: thiết bị truyền thông hai chiều tập tin Tạo lập hay mở socket Gắn kết socket với địa Liên lạc : có hai kiểu liên lạc tùy thuộc vào chế độ nối kết: Liên lạc chế độ không liên kết Liên lạc chế độ nối kết Hủy socket Mỗi Socket thành phần mối nối máy mạng Các thuộc tính socket: Domaine: định nghĩa dạng thức địa nghi thức sử dụng Có nhiều domaines, ví dụ UNIX, INTERNET, XEROX_NS, Type: định nghĩa đặc điểm liên lạc a) độ tin cậy b) độ bảo toàn thứ tự liệu c) Lặp lại liệu d) Chế độ nối kết e) Bảo toàn giới hạn thông điệp f) Khả gởi thông điệp khẩn Vũ Đức Lung Khoa KTMT Vũ Đức Lung ng c om Khoa KTMT VD: Giao tiếp TCP Vùng tranh chấp (Miền găng - critical section) co Race condition P11 P22 chia sẻ biến chung hits P2 P1 time read hits P2 P1 read hits read hits CS hits = hits + CS hits = hits + th read hits hits =hits + an hits = hits = hits + CS đoạn chương trình có khả gây tượng race condition du on g hits = 1, ? Kết cuối khơng dự đốn ! Vũ Đức Lung Khoa KTMT Vũ Đức Lung 10 cu u Khoa KTMT Giải pháp tổng qt Mơ hình đảm bảo độc quyền truy xuất hits = P1 time P2 Kiểm tra dành quyền vào CS hits = hits + CS; hits = hits + Từ bỏ quyền sử dụng CS hits = Bảo đảm tính “độc quyền truy xuất” miền găng thời điểm Khoa KTMT Vũ Đức Lung CuuDuongThanCong.com 11 Khoa KTMT Vũ Đức Lung https://fb.com/tailieudientucntt 12 Hẹn hò Giải pháp P2 P1 Job1; P2 P1 Job1; Job2; Job2; Làm bảo đảm trình tự thực Job11 - Job22 ? Hai tiến trình cần trao đổi thơng tin diễn tiến xử lý Vũ Đức Lung Khoa KTMT 13 Vũ Đức Lung 14 c om Khoa KTMT Job2; co th Chờ ; Báo hiệu ; 15 u Vũ Đức Lung cu Khoa KTMT du on g Job1; an P2 P1 ng Mơ hình tổ chức phối hợp hoạt động hai tiến trình CuuDuongThanCong.com https://fb.com/tailieudientucntt Nội dung Đặt vấn đề (tại phải đồng giải tranh chấp ?) Vấn đề Critical section Các giải pháp phần mềm Chương V - Phần II Đồng Bộ Giải Quyết Tranh Chấp (Process Synchronization) – Giải thuật Peterson, giải thuật bakery Đồng hardware Semaphore Các toán đồng Critical region Monitor Khoa KTMT c om Bài toán Producer-Consumer P khơng ghi liệu vào buffer đầy C không đọc liệu từ buffer trống P C không thao tác buffer lúc th P Buffer Buffer (N) (N) C Khoa KTMT cu u Khoa KTMT L du on R Giới hạn, không giới hạn ??? g Q p Producer Consumer co Khảo sát process/thread thực thi đồng thời chia sẻ liệu (qua shared memory, file) Nếu kiểm soát truy cập liệu chia sẻ đưa đến trường hợp không quán liệu (data inconsistency) Để trì quán liệu, hệ thống cần có chế bảo đảm thực thi có trật tự process đồng thời an • ng Đặt vấn đề Đặt vấn đề Bounded buffer (tt) Xét toán Producer-Consumer với bounded buffer Bounded buffer, thêm biến đếm count Quá trình Producer item nextProduced; while(1) { while (count == BUFFER_SIZE); /* nothing */ buffer[in] = nextProduced; count++; biến count chia sẻ in = (in + 1) % BUFFER_SIZE; producer consumer #define BUFFER_SIZE 10 /* 10 buffers */ typedef struct { } item; item buffer[BUFFER_SIZE]; int in = 0, out = 0, count = 0; } Quá trình Consumer item nextConsumed; while(1) { while (count == 0); /* nothing */ nextConsumed = buffer[out] ; count ; out = (out + 1) % BUFFER_SIZE; Khoa KTMT CuuDuongThanCong.com } Khoa KTMT https://fb.com/tailieudientucntt Bounded buffer (tt) Bounded buffer (tt) Các lệnh tăng, giảm biến count tương đương ngôn ngữ máy là: Mã máy lệnh tăng giảm biến count bị thực thi xen kẽ • Giả sử count Chuỗi thực thi sau xảy ra: • (Producer) count++: • • register1 = count • register1 = register1 + • count = register1 • (Consumer) count : • register2 = count • register2 = register2 - • count = register2 0: producer register1 := count 1: producer register1 := register1 + {register1 = 6} 2: consumer register2 := count {register2 = 5} 3: consumer register2 := register2 - 4: producer count := register1 {count = 6} consumer count := register2 {count = 4} 5: {register1 = 5} {register2 = 4} Các lệnh count++, count phải đơn nguyên (atomic), nghóa thực lệnh đơn, không bị ngắt nửa chừng Trong đó, registeri ghi CPU Khoa KTMT c om Khoa KTMT Vấn đề Critical Section ng Bounded buffer (tt) Giả sử có n process truy xuất đồng thời liệu chia sẻ Cấu trúc process Pi- Mỗi process có đoạn code sau : co Race condition: nhiều process truy xuất thao tác đồng thời lên liệu chia sẻ (như biến count) an – Kết cuối việc truy xuất đồng thời phụ thuộc thứ tự thực thi lệnh thao tác liệu Do { entry section /* vaøo critical section */ critical section /* truy xuất liệu chia xẻ */ exit section /* rời critical section */ remainder section /* làm việc khác */ } While (1) th Để liệu chia sẻ quán, cần bảo đảm cho thời điểm có process thao tác lên liệu chia sẻ Do đó, cần có chế đồng hoạt động process 10 Khoa KTMT cu u Khoa KTMT du on g Trong process có đoạn code có chứa thao tác lên liệu chia sẻ Đoạn code gọi vùng tranh chấp (critical section, CS) Vấn đề Critical Section Yêu cầu lời giải cho Critical Section Problem Vấn đề Critical Section: phải bảo đảm loại trừ tương hỗ (MUTual EXclusion, mutex), tức process thực thi vùng tranh chấp, process khác đồng thời thực thi lệnh vùng tranh chấp • Lời giải phải thỏa bốn tính chất: (1) Độc quyền truy xuất (Mutual exclusion): Khi process P thực thi vùng tranh chấp (CS) process Q khác thực thi CS Q (2) Progress: Một tiến trình tạm dừng bên miền găng không ngăn cản tiến trình khác vào miền găng việc lựa chọn P vào CS phải có hạn định • (3) Chờ đợi giới hạn (Bounded waiting): Mỗi process phải chờ để vào vùng tranh chấp khoảng thời gian có hạn định Không xảy tình trạng đói tài nguyên (starvation) (4)Không có giả thiết đặt cho liên hệ tốc độ tiến trình, số lượng xử lý hệ thống 11 Khoa KTMT CuuDuongThanCong.com 12 Khoa KTMT https://fb.com/tailieudientucntt Phân loại giải pháp Các giải pháp “Busy waiting” Nhóm giải pháp Busy Waiting – Sử dụng biến cờ hiệu – Sử dụng việc kiểm tra luân phiên – Giải pháp Peterson – Cấm ngắt – Chỉ thị TSL Nhóm giải pháp Sleep & Wakeup – Semaphore – Monitor – Message While (chưa có quyền)) nothing() () ; CS; Từ bỏ quyền sử dụng CS Tiếp tục tiêu thụ CPU chờ đợi vào miền găng Khơng địi hỏi trợ giúp Hệ điều hành 13 14 Khoa KTMT c om Khoa KTMT Cá Các giả giải phá pháp “Busy waiting” waiting” ng Các giải pháp “Sleep & Wake up” Giả Giải thuậ thuật co if (chưa có quyền)) Sleep()() ; Biến chia sẻ • int turn; /* khởi đầu turn = */ • turn = i Pi phép vào critical section, với i = hay an CS; du on g Từ bỏ CPU chưa vào miền găng Cần Hệ điều hành hỗ trợ th Wakeup(( somebody);); { while (turn != i); critical section turn = j; remainder section } while (1); Thoả mãn mutual exclusion (1) Nhưng không thoả mãn yêu cầu progress (2) bounded waiting (3) tính chất strict alternation giải thuật 15 16 Khoa KTMT cu u Khoa KTMT Process Pi Giải thuật (tt) Process P0: while (turn != 0); critical section turn := 1; remainder section while (1); Giải thuật Process P1: while (turn != 1); critical section turn := 0; remainder section while (1); Ví dụ: P0 có RS (remainder section) lớn P1 có RS nhỏ??? CuuDuongThanCong.com • boolean flag[ ]; /* khởi đầu flag[ ] = flag[ ] = false */ • Nếu flag[ i ] = true Pi “sẵn sàng” vào critical section Process Pi { flag[ i ] = true; /* Pi “sẵn sàng” vào CS */ while ( flag[ j ] ); /* Pi “nhường” Pj */ critical section flag[ i ] = false; remainder section } while (1); Bảo đảm mutual exclusion Chứng minh? Không thỏa mãn progress Vì sao? 17 Khoa KTMT Biến chia sẻ 18 Khoa KTMT https://fb.com/tailieudientucntt Giải thuật (Peterson) Giải thuật Peterson-2 process Biến chia sẻ: kết hợp giải thuật Process Pi , với i = hay { flag[ i ] = true; /* Process i sẵn sàng */ turn = j; /* Nhường process j */ while (flag[ j ] and turn == j); critical section flag[ i ] = false; remainder section } while (1); Process P0 { /* wants in */ flag[0] = true; /* gives a chance to */ turn = 1; while (flag[1] && turn == 1); critical section; /* no longer wants in */ flag[0] = false; remainder section; } while(1); Thoả mãn yêu cầu (chứng minh?) ⇒ giải toán critical section cho process 19 20 Khoa KTMT c om Khoa KTMT Process P1 { /* wants in */ flag[1] = true; /* gives a chance to */ turn = 0; while (flag[0] && turn == 0); critical section; /* no longer wants in */ flag[1] = false; remainder section; } while(1); Giải thuật thỏa mutual exclusion, progress, bounded waiting Mutual exclusion bảo đảm – Nếu Pj bật flag[ j ] = true chờ while() co • Giải thuật 3: Tính đắn (tt) ng Giải thuật 3: Tính đắn có hai trường hợp turn = i turn = j – Nếu turn = i Pi vào CS Nếu turn = j Pj vào CS an bật flag[ j ] = false thoát ⇒ cho phép • P0 P1 CS flag[0] = flag[1] = true turn = i cho Pi (không thể xảy ra) th Chứng minh thỏa yêu cầu progress bounded waiting Pi vào CS – Nhưng Pj có đủ thời gian bật flag[ j ] = true Pj phải gán turn = i – Vì Pi không thay đổi trị biến turn kẹt – Nếu Pj không muốn vào CS flag[ j ] = false Pi vào CS sau lần Pj vào CS (bounded waiting) vòng lặp while(), Pi chờ để vào CS nhiều 21 22 Khoa KTMT cu u Khoa KTMT du on g – Pi vào CS bị kẹt vòng lặp while() với điều kiện flag[ j ] = true turn = j Giải thuật bakery: n process Giải thuật bakery: n process (tt) /* shared variable */ boolean choosing[ n ]; int num[ n ]; Trước vào CS, process Pi nhận số Process giữ số nhỏ vào CS Trường hợp Pi Pj nhận số: { – Nếu i < j Pi vào trước (Đối xứng) choosing[ i ] = true; num[ i ] = max(num[0], num[1],…, num[n − 1]) + 1; choosing[ i ] = false; for (j = 0; j < n; j++) { while (choosing[ j ]); while ((num[ j ] != 0) && (num[ j ], j) < (num[ i ], i)); } critical section num[ i ] = 0; remainder section } while (1); Khi khỏi CS, Pi đặt lại số Cơ chế cấp số cho process thường tạo số theo chế tăng dần, ví dụ 1, 2, 3, 3, 3, 3, 4, 5,… Kí hiệu • (a,b) < (c,d) a < c if a = c b < d • max(a0,…,ak) số b cho b ≥ với i = 0,…, k 23 Khoa KTMT CuuDuongThanCong.com /* initially, choosing[ i ] = false */ /* initially, num[ i ] = */ 24 Khoa KTMT https://fb.com/tailieudientucntt Từ software đến hardware Cấm ngắt Khuyết điểm giải pháp software Trong hệ thống uniprocessor: mutual exclusion bảo đảm – Các process yêu cầu vào vùng tranh chấp phải liên tục kiểm tra điều kiện (busy waiting), tốn nhiều thời gian xử lý CPU – Nếu thời gian xử lý vùng tranh chấp lớn, giải pháp hiệu nên có chế block process cần đợi – Nhưng system clock cập nhật interrupt sao? Trên hệ thống multiprocessor: mutual exclusion không đảm bảo – Chỉ cấm ngắt CPU thực thi lệnh disable_interrupts – Các CPU khác truy cập nhớ chia sẻ Các giải pháp phần cứng (hardware) – Cấm ngắt (disable interrupts) – Dùng lệnh đặc biệt 25 { disable_interrupts(); critical section enable_interrupts(); remainder section } while (1); 26 Khoa KTMT c om Khoa KTMT Process Pi: Leänh TestAndSet (tt) ng Lệnh TestAndSet Mutual exclusion bảo đảm: Pi vào CS, process Pj khác busy waiting co Đọc ghi biến thao tác atomic (không chia cắt được) boolean lock = false; th ■ Process Pi : an ■ Shared data: boolean TestAndSet(boolean &target) { boolean rv = target; target = true; return rv; } du on g { while (TestAndSet(lock)); critical section lock = false; remainder section } while (1); 27 Các processor (ví dụ Pentium) thông thường cung cấp lệnh đơn Swap(a, b) có tác dụng hoán chuyển nội dung a b • Swap(a, b) có ưu nhược điểm TestAndSet 28 Khoa KTMT cu u Khoa KTMT Khi Pi khỏi CS, trình chọn lựa process Pj vào CS tùy ý ⇒ không bảo đảm điều kiện bounded waiting Do xảy starvation (bị bỏ đói) Swap mutual exclusion Biến chia sẻ lock khởi tạo giá trị false Mỗi process Pi có biến cục key Process Pi thấy giá trị lock = false vào CS – Process Pi loại trừ process Pj khác thiết lập lock = true void Swap(boolean &a, boolean &b) { boolean temp = a; a = b; b = temp; } Giải thuật dùng TestAndSet thoả mãn yêu cầu (1) Biến chia sẻ (khởi tạo false) bool lock; bool key; Cấu trúc liệu dùng chung (khởi tạo false) Process Pi Mutual exclusion: Pi vào CS waiting[ i ] = false, key = false { bool waiting[ n ]; bool lock; • key = false TestAndSet (hay Swap) thực thi key = true; while (key == true) Swap(lock, key); critical section lock = false; remainder section } while (1) Process thực thi TestAndSet có key == false; process khác phải đợi • waiting[ i ] = false process khác rời khỏi CS Chỉ có waiting[ i ] có giá trị false Progress: chứng minh tương tự mutual exclusion Bounded waiting: waiting in the cyclic order Không thỏa mãn bounded waiting 29 Khoa KTMT CuuDuongThanCong.com 30 Khoa KTMT https://fb.com/tailieudientucntt Giải thuật dùng TestAndSet thoả mãn yêu cầu (2) Các giải pháp “Sleep & Wake up” int busy; // =1 CS bị chiếm Int blocked; // số P bị khóa { if (busy==1){ blocked = blocked +1; sleep(); Trường hợp: } -A vào CS else busy =1; -B kích hoạt tăng blocked -A kích hoạt lại CS; -B kích hoạt lại busy = 0; -????? if(blocked !=0){ wakeup(process); blocked = blocked -1; } RS; } while(1); { waiting[i i]]==true; true; waiting[ key==true; true; key while(waiting[ (waiting[i i]]&& &&key) key) while key==TestAndSet(lock); TestAndSet(lock); key waiting[i i]]==false; false; waiting[ critical section 1)% %n; n; j j==(i(i++1) while(((j(j!= !=i)i) && && !waiting[ !waiting[j j]])) while 1)% %n; n; j j==(j(j++1) ==i)i) ifif(j(j== lock==false; false; lock else else waiting[j j]]==false; false; waiting[ remainder section } while (1) 31 32 Khoa KTMT c om Khoa KTMT P(S) hay wait(S) sử dụng để giành tài nguyên giảm biến đếm S=S-1 V(S) hay signal(S) giải phóng tài nguyên tăng biến đếm S= S+1 Nếu P thực biến đếm memory size Khi du on g th an Nếu process đủ số frame cần thiết tỉ số page faults/sec cao Thrashing: tượng trang nhớ process bị hoán chuyển vào/ra liên tục ng a)Mô hình cục boä (Locality) Khoa KTMT 21 22 cu u Khoa KTMT b) Giải pháp tập làm việc (working set) • b) Giải pháp tập làm việc (working set) Được thiết kế dựa nguyên lý locality Xác định xem process thực sử dụng frame Định nghóa: Định nghóa: working set process Pi , ký hiệu WSi , tập gồm ∆ trang sử dụng gần Ví dụ: ∆ = 10 chuỗi tham khảo trang – WS(t) - số lượng tham chiếu trang nhớ process gần cần quan sát – - khoảng thời gian tham chiếu • Ví dụ: ∆=4 chuỗi tham khảo trang nhớ Nhận xét: • ∆ nhỏ ⇒ không đủ bao phủ toàn locality • ∆ lớn ⇒ bao phủ nhiều locality khác • ∆=∞ ⇒ bao gồm tất trang sử dụng 24569132639214 thời điểm t1 Khoa KTMT CuuDuongThanCong.com Dùng working set process để xấp xỉ locality 23 Khoa KTMT https://fb.com/tailieudientucntt 24 b) Giải pháp tập làm việc (working set) b) Giải pháp tập làm việc (working set) Định nghóa WSSi kích thước working set Pi : WSSi = số lượng trang WSi • Đặt D = Σ WSSi = tổng working-set size process hệ thống Nhận xét: Nếu D > m (số frame hệ thống) ⇒ xảy thrashing Ví dụ (tiếp): ∆ = 10 Giải pháp working set: chuỗi tham khảo trang – Khi khởi tạo trình: cung cấp cho trình số lượng frame thỏa mản working-set size – Nếu D > m ⇒ tạm dừng process Các trang trình chuyển đóa cứng frame thu hồi WSS(t1) = WSS(t2) = Khoa KTMT Khoa KTMT 26 c om 25 Baø Baøi tậ tập Hệ thống nhập xuất du on Hệ thống phân tán 27 Khoa KTMT 28 cu u Khoa KTMT Bài 02: Xét chuỗi truy xuất nhớ sau: 1, , , , , , , , , , , , , , , , , , , Có lỗi trang xảy sử dụng thuật toán thay sau đây, giả sử có khung trang ban đầu khung trang trống ? a) LRU b) FIFO c) Optimal g Hệ thống tập tin th Đọc thêm: Bài 01: Một máy tính 32-bit địa chỉ, sử dụng bảng trang nhị cấp Địa ảo phân bổ sau : bit dành cho bảng trang cấp 1, 11 bit cho bảng trang cấp 2, cho offset Cho biết kích thước trang hệ thống, địa ảo có trang ? co an WS loại trừ tình trạng trì trệ mà đảm bảo mức độ đa chương Theo vết WS? => WS xấp xỉ (đọc thêm sách) ng b) Giải pháp tập làm việc (working set) CuuDuongThanCong.com https://fb.com/tailieudientucntt ... 1 024 ng Sinh địa tuyệt đối vào thời điểm dịch 1 024 1 424 LOAD j 1 424 LOAD 22 24 LOAD 22 24 Compile DATA j Link/Load g du on Source code Absolute load module LOAD j 1 424 LOAD 120 0 Compile LOAD 22 24... (20 0 + 20 ) × 0. 02 = 1. 02 × 100 + 20 = 122 th an Associative lookup = 20 Memory access = 100 Hit ratio = 0.8 EAT = (100 + 20 ) × 0.8 + (20 0 + 20 ) × 0 .2 = 1 .2 × 100 + 20 = 140 Các hệ thống đại hỗ... DATA 120 0 Source code 22 24 Relative load module Khoa KTMT Process image 10 cu u Khoa KTMT JUMP 1 424 400 j Process image 1 024 JUMP 400 i 22 24 22 24 Physical memory addresses JUMP i th i JUMP 1 424