Chapter05 1 process synchronization

22 485 0
Chapter05 1 process synchronization

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Chương V-I: Liên lạc Tiến Trình Các v ấn đề n ảy sinh vi ệc liên l ạc gi ữa ti ến trình     Do tiến trình sỡ hữu không gian địa riêng biệt, nên ti ến trình không th ể liên l ạc tr ực tiếp dễ dàng mà phải nhờ vào chế hệ điều hành cung cấp Khi cung c ấp c ch ế liên l ạc cho tiến trình, hệ điều hành thường phải tìm giải pháp cho vấn đề y ếu sau : Liên kết tường minh hay tiềm ẩn (explicit naming/implicit naming) : tiến trình có cần phải biết tiến trình trao đổi hay chia sẻ thông tin với nó ? Mối liên kết g ọi t ường minh thi ết l ập rõ ràng , trực tiếp tiến trình, tiềm ẩn tiến trình liên l ạc v ới thông qua m ột qui ước ngầm Liên lạc theo chế độ đồng hay không đồng (blocking / non-blocking) : tiến trình trao đổi thông tin với tiến trình khác, tiến trình có cần phải đợi cho thao tác liên l ạc hoàn t ất r ồi m ới ti ếp tục xử lý khác ? Các tiến trình liên lạc theo chế đồng chờ hoàn t ất vi ệc liên l ạc, tiến trình liên lạc theo chế nonblocking không Liên lạc tiến trình hệ thống tập trung hệ thống phân tán : chế liên lạc tiến trình máy tính có khác biệt với việc liên lạc ti ến trình gi ữa máy tính khác nhau?     Hầu hết hệ điều hành đưa nhiều chế liên lạc khác nhau, m ỗi c chế có nh ững đặc tính riêng, thích hợp hoàn cảnh chuyên biệt   Khoa KTMT Nhu Cầu Liên Lạc Trong môi trường đa chương, tiến trình không đơn độc hệ thống , mà ảnh hưởng đến tiến trình khác , bị tiến trình khác tác động Nói cách khác, tiến trình thực thể độc lập , chúng v ẫn có nhu c ầu liên lạc với để : Chia s ẻ thông tin : nhiều tiến trình quan tâm đến liệu đó, hệ điều hành cần cung cấp môi trường cho phép truy c ập đồng thời đến liệu chung H ợp tác hoàn thành tác v ụ: để đạt xử lý nhanh chóng, người ta phân chia tác vụ thành công việc nhỏ tiến hành song song Thường công việc nhỏ cần hợp tác với để hoàn thành tác v ụ ban đầu, ví dụ liệu kết xuất tiến trình lại liệu nhập cho tiến trình khác …Trong trường hợp đó, hệ điều hành cần cung cấp ch ế để tiến trình trao đổi thông tin với Khoa KTMT Các Cơ Chế Liên Lạc Signal : Không truyền liệu Các tín hiệu gửi bởi?khi nhận xử lý sao? Khoa KTMT Các Cơ Chế Liên Lạc Các tín hiệu sử dụng – bảng miêu tả lập trình hệ điều hành Linux Giới thiệu: Tín hiệu chế phần mềm tương tự ngắt cứng tác động đến tiến trình Một tín hiệu sử dụng để thông báo cho tiến trình kiện xảy Có nhiều tín hiệu định nghĩa, tín hiệu có ý nghĩa tương ứng với kiện đặc trưng Ví dụ : Một số tín hiệu UNIX  Sigquit  yêu cầu process kết thúc, không xóa file tạm, số tài nguyên giữ lại  Sigkill  yêu cầu process kết thúc chương trình, thu hồi tài nguyên Mỗi tiến trình sỡ hữu bảng biễu diễn tín hiệu khác Với tín hiệu có tương ứng trình xử lý tín hiệu (signal handler) qui định xử lý tiến trình nhận tín hiệu tương ứng Các tín hiệu gởi :  Phần cứng (ví dụ lỗi phép tính số học)  Hạt nhân hệ điều hành gởi đến tiến trình ( ví dụ lưu ý tiến trình có thiết bị nhập/xuất tự do)  Một tiến trình gởi đến tiến trình khác ( ví dụ tiến trình cha yêu cầu tiến trình kết thúc)  Người dùng ( ví dụ nhấn phím Ctrl-C để ngắt xử lý tiến trình) Khi tiến trình nhận tín hiệu, xử theo cách sau :  Bỏ qua tín hiệu  Xử lý tín hiệu theo kiểu mặc định  Tiếp nhận tín hiệu xử lý theo cách đặc biệt tiến trình  Khoa KTMT Các Cơ Chế Liên Lạc  Pipe Truyền liệu không cấu trúc Khoa KTMT Các Cơ Chế Liên Lạc        Một pipe kênh liên lạc trực tiếp hai tiến trình : liệu xuất tiến trình chuyển đến làm liệu nhập cho tiến trình dạng dòng byte Khi pipe thiết lập hai tiến trình, chúng ghi liệu vào pipe tiến trình đọc liệu từ pipe Thứ tự liệu truyền qua pipe bảo toàn theo nguyên tắc FIFO Một pipe có kích thước giới hạn (thường 4096 ký tự) Một tiến trình sử dụng pipe tạo hay kế thừa từ tiến trình cha Hệ điều hành cung cấp lời gọi hệ thống read/write cho tiến trình thực thao tác đọc/ghi liệu pipe Hệ điều hành chịu trách nhiệm đồng hóa việc truy xuất pipe tình huống: Tiến trình đọc pipe bị khóa pipe trống, phải đợi đến pipe có liệu để truy xuất Tiến trình ghi pipe bị khóa pipe đầy, phải đợi đến pipe có chỗ trống để chứa liệu Liên lạc pipe chế liên lạc chiều (unidirectional), nghĩa tiến trình kết nối với pipe thực hai thao tác đọc ghi, thực hai Một số hệ điều hành cho phép thiết lập hai pipe cặp tiến trình để tạo liên lạc hai chiều Trong hệ thống đó, có nguy xảy tình trạng tắc nghẽn (deadlock) : pipe bị giới hạn kích thước, hai pipe nối kết hai tiến trình đầy(hoặc trống) hai tiến trình muốn ghi (hay đọc) liệu vào pipe(mỗi tiến trình ghi liệu vào pipe), chúng bị khóa chờ lẫn mãi Ngoài ra, giới hạn hình thức liên lạc cho phép kết nối hai tiến trình có quan hệ cha-con, máy tính Khoa KTMT Các Cơ Chế Liên Lạc  Shared Memory Mâu thuẫn truy xuất => nhu cầu đồng hoá Khoa KTMT Các Cơ Chế Liên Lạc      Shared Memory Giới thiệu: Cách tiếp cận chế cho nhiều tiến trình truy xuất đến vùng nhớ chung gọi vùng nhớ chia sẻ (shared memory).Không có hành vi truyền liệu cần phải thực đây, liệu đơn giản đặt vào vùng nhớ mà nhiều tiến trình truy cập Với phương thức này, tiến trình chia sẻ vùng nhớ vật lý thông qua trung gian không gian địa chúng Một vùng nhớ chia sẻ tồn độc lập với tiến trình, tiến trình muốn truy xuất đến vùng nhớ này, tiến trình phải kết gắn vùng nhớ chung vào không gian địa riêng tiến trình, thao tác vùng nhớ riêng Đây phương pháp nhanh để trao đổi liệu tiến trình Nhưng phương thức làm phát sinh khó khăn việc bảo đảm toàn vẹn liệu (coherence) , ví dụ : biết liệu mà tiến trình truy xuất liệu mà tiến trình khác ghi ? Làm ngăn cản hai tiến trình đồng thờighi liệu vào vùng nhớ chung ?…Rõ ràng vùng nhớ chia sẻ cần bảo vệ chế đồng hóa thích hợp Một khuyết điểm phương pháp liên lạc áp dụng hiệu hệ phân Khoa KTMT tán , để trao đổi thông tin máy tính khác Các Cơ Chế Liên Lạc  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   Khoa KTMT Send(destination, message) : gởi thông điệp đến destination Receive(source,message) : nhận thông điệp từ source Các Cơ Chế Liên Lạc          Liên kết tiềm ẩn – process thiết lập kết nối trước Liên kết tường minh – process không thiết lập kết nối, lần muốn truyền liệu phải kèm theo địa nơi nhận Hệ điều hành cung cấp chế liên lạc tiến trình không thông qua việc chia sẻ tài nguyên chung , mà thông qua việc gởi thông điệp Để hỗ trợ chế liên lạc thông điệp, hệ điều hành cung cấp hàm IPC chuẩn (Interprocess communication), hai hàm: Send(message) : gởi thông điệp Receive(message) : nhận thông điệp Nếu hai tiến trình P Q muốn liên lạc với nhau, cần phải thiết lập mối liên kết hai tiến trình, sau P, Q sử dụng hàm IPC thích hợp để trao đổi thông điệp, cuối liên lạc chấm dứt mối liên kết hai tiến trình bị hủy Có nhiều cách thức để thực liên kết hai tiến trình cài đặt theo tác send /receive tương ứng : liên lạc trực tiếp hay gián tiếp, liên lạc đồng không đồng , kích thước thông điệp cố định hay không … Nếu tiến trình liên lạc theo kiểu liên kết tường minh, hàm Send Receive cài đặt với tham số : Send(destination, message) : gởi thông điệp đến destination Receive(source,message) : nhận thông điệp từ source Đơn vị truyền thông tin chế trao đổi thông điệp thông điệp, tiến trình trao đổi liệu dạng có cấu trúc Khoa KTMT 10 Các Cơ Chế Liên Lạc  Socket: thiết bị truyền thông hai chiều tập tin  Mỗi Socket thành phần mối nối máy mạng  Các thuộc tính socket:   Khoa KTMT 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 11 Các Cơ Chế Liên Lạc         Các thao tác đọc/ghi trao đổi liệu ứng dụng nhiều máy khác Vẽ hình minh họa: Độ tin cậy Bào toàn thứ tự - ACK Lặp lại – time out Chế độ kết nối – TCP hay UDP Bảo toàn giới hạn – kích thước giói hạn gói tin thời gian Khả gửi thông điệp – độ ưu tiên thông điệp Khoa KTMT 12 Các Cơ Chế Liên Lạc  Để thực liên lạc socket, cần tiến hành thao tác :     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 - UDP  Liên lạc chế độ nối kết - TCP Hủy socket VD: Giao tiếp TCP Liên kết tiềm ẩn Khoa KTMT 13 Các Cơ Chế Liên Lạc            a) Liên lạc chế độ không liên kết : liên lạc theo hình thức hộp thư: hai tiến trình liên lạc với không kết nối trực tiếp thông điệp phải kèm theo địa người nhận Hình thức liên lạc có đặc điểm : người gởi không chắn thông điệp học gởi đến người nhận, thông điệp gởi nhiều lần, hai thông điệp gởi theo thứ tự đến tay người nhận theo thứ tự khác Một tiến trình sau mở socket sử dụng để liên lạc với nhiều tiến trình khác nhờ sử hai primitive send receive b) Liên lạc chế độ nối kết: Một liên kết thành lập hai tiến trình Trước mối liên kết thiết lập, hai tiến trình phải đợi có tiến trình khác yêu cầu kết nối.Có thể sử dụng socket để liên lạc theo mô hình client-server Trong mô hình này, server sử dụng lời gọi hệ thống listen accept để nối kết với client, sau , client server trao đổi thông tin cách sử dụng primitive send receive Hình: minh họa cách giao tiếp hai máy tính nghi thức truyền thông TCP Máy A tạo socket kết buộc (bind) socket nầy với port X (tức số nguyên dương có ý nghĩa cục máy A), máy B tạo socket khác móc vào (connect) port X máy A Khoa KTMT 14 Race condition  P1 P2 chia sẻ biến chung hits hits = time P1 read hits hits =hits + hits = 1, ? P2 read hits hits = hits + Kết cuối không dự đoán ! Khoa KTMT 15 Vùng tranh chấp (Miền găng - critical section) P1 CS read hits hits = hits + P2 read hits hits = hits + CS CS đoạn chương trình có khả gây tượng race condition Khoa KTMT 16 Vùng tranh chấp (Miền găng - critical section) Để ngăn chặn tình lỗi nảy sinh tiến trình truy xuất đồng thời tài nguyên chia sẻ, cần phải áp đặt truy xuất độc quyền tài nguyên đó : tiến trình sử dụng tài nguyên, tiến trình khác không truy xuất đến tài nguyên Đoạn chương trình có khả xảy mâu thuẫn truy xuất tài nguyên chung gọi miền găng (critical section) Trong ví dụ trên, đoạn mã : if (taikhoan - tienrut >=0) taikhoan = taikhoan - tienrut; tiến trình tạo thành miền găng Có thể giải vấn đề mâu thuẫn truy xuất bảo đảm thời điểm có tiến trình xử lý lệnh miền găng M ột ph ương pháp gi ải quy ết t ốt toán mi ền g ăng c ần thõa mãn ều ki ện sau : Không có hai tiến trình miền găng lúc 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 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 Không có tiến trình phải chờ vô hạn để vào miền găng Khoa KTMT 17 Giải pháp tổng quát hits = time P1 P2 hits = hits + hits = hits + hits = Bảo đảm tính “độc quyền truy xuất” miền găng thời điểm Khoa KTMT 18 Mô hình đảm bảo độc quyền truy xuất Kiểm tra dành quyền vào CS CS; Từ bỏ quyền sử dụng CS Khoa KTMT 19 Hẹn hò P1 Job1; P2 Job2; Làm bảo đảm trình tự thực Job1 Job2 ? Job phải chờ thông báo từ Job  thực thi tiếp Job chờ tín hiệu từ job báo job hoàn tất công việc Job thực  Process cha thực hẹn hò: trước – cha sau Wait – cha đứng đợi hoàn tất công việc  Khoa KTMT 20 Giải pháp P1 Job1; P2 Job2; Hai tiến trình cần trao đổi thông tin diễn tiến xử lý Khoa KTMT 21 Mô hình tổ chức phối hợp hoạt động hai tiến trình P2 P1 Job1; Báo hiệu ; Khoa KTMT Chờ ; Job2; 22

Ngày đăng: 10/07/2016, 09:52

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan