1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Hệ điều hành: Chương 5 - Phan Xuân Huy

235 9 0

Đ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

Bài giảng Hệ điều hành - Chương 5: Đồng bộ hóa tiến trình trình bày các nội dung: Xử lý đồng hành các vấn đề, bài toán đồng bộ hóa, các giải pháp đồng bộ hóa, các bài toán đồng bộ hóa kinh điển. Hi vọng đây sẽ là một tài liệu hữu ích dành cho các bạn sinh viên ngành Công nghệ thông tin dùng làm tài liệu học tập và nghiên cứu.

Chương Đồng hoá tiến trình 11/10/2007 Trần Hạnh Nhi Nội dung giảng Xử lý đồng hành vấn đề: Vấn đề tranh đoạt điều khiển (Race Condition) Vấn đề phối hợp xử lý Bài toán đồng hóa Yêu cầu độc quyền truy xuất (Mutual Exclusion) Yêu cầu phối hợp xử lý (Synchronization) Các giải pháp đồng hoá Busy waiting Sleep & Wakeup Các toán đồng hoá kinh điển Producer – Consumer Readers – Writers Dinning Philosophers 11/10/2007 Trần Hạnh Nhi Nhiều tiến trình “chung sống hoà bình” hệ thống ? ĐỪNG HY VỌNG An toàn tiến trình hoàn toàn độc lập Làm có ?? Thực tế Các tiến trình chia sẻ tài nguyên chung ( file system, CPU ) Concurrent access => bugs Ví dụ : Dê qua cầu Xử lý đồng hành = nhức đầu 11/10/2007 Trần Hạnh Nhi Các vấn đề Tranh chấp Nhiều tiến trình truy xuất đồng thời tài nguyên mang chất không chia sẻ Xảy vấn đề tranh đoạt điều khiển (Race Condition) Kết ? Khó biết , thường sai Luôn nguy hiểm ? Không, đủ để cân nhắc kỹ Phối hợp Các tiến trình tương quan xử lý để điều chỉnh hoạt động nhịp nhàng Cần phối hợp xử lý (Rendez-vous) Kết : khó biết, không bảo đảm ăn khớp 11/10/2007 Trần Hạnh Nhi Nội dung giảng Xử lý đồng hành vấn đề: Vấn đề tranh đoạt điều khiển (Race Condition) Vấn đề phối hợp xử lý Bài toán đồng hóa Yêu cầu độc quyền truy xuất (Mutual Exclusion) Yêu cầu phối hợp xử lý (Synchronization) Các giải pháp đồng hoá Busy waiting Sleep & Wakeup Các toán đồng hoá kinh điển Producer – Consumer Readers – Writers Dinning Philosophers 11/10/2007 Trần Hạnh Nhi Tranh đoạt điều khiển (Race condition) - Ví dụ Đếm số người vào Altavista : dùng threads cập nhật biến đếm hits=> P1 P2 chia sẻ biến hits hits = P2 P1 hits = hits + 1; hits = hits +1; Kết cuối ? 11/10/2007 Trần Hạnh Nhi Tranh đoạt điều khiển (Race condition) - Ví dụ hits = time P2 P1 (1) read hits (0) (3) hits = + (2)read hits (0) (4)hits = + hits = 11/10/2007 Trần Hạnh Nhi Tranh đoạt điều khiển (Race condition) - Ví dụ hits = time P2 P1 (1) read hits (0) (2) hits = + (4) hits = + hits = 11/10/2007 (3) read hits (1) Trần Hạnh Nhi Tranh đoạt điều khiển (Race condition) - Ví dụ (tt) i=0; Thread a: while(i < 10) i = i +1; print “A won!”; Thread b: while(i > -10) i = i - 1; print “B won!”; Ai thaéng ? Có bảo đảm có người thắng ? Nếu tiến trình xử lý CPU ? 11/10/2007 Trần Hạnh Nhi Tranh đoạt điều khiển (Race condition)-Nhận xét Kết thực tiến trình phụ thuộc vào kết điều phối Cùng input, không output Khó debug lỗi sai xử lý đồng hành Xử lý Làm lơ Dễ , có phải giải pháp Không chia sẻ tài nguyên chung : dùng biến hits1,hits2; xây cầu lane Nên dùng có thể, không đảm bảo đủ tài nguyên, không giải pháp cho trường hợp Giải pháp tổng quát : có hay không ? 11/10/2007 Lý xảy Race condition ? Bad interleavings : tiến trình “xen vào” trình truy xuất tài nguyên tiến trình khác Giải pháp : bảo đảm tính atomicity cho phép tiến trình hoàn tất trọn vẹn trình truy xuất tài nguyên chung trước có tiến trình khác can thiệp Trần Hạnh Nhi 10 Liên lạc hệ thống không đồng Máy A P1 Send( ) //UNIX Receive( ) //WIN (UNIX) Máy B P2 (Windows) 12/16/2007 Trần Hạnh Nhi 15 Socket „ „ Endpoint kết nối chiều Tương đương với network interface (hardware) „ „ Cho phép ứng dụng “plug in” vào mạng cách ẩn dụ Là giao diện lập trình mạng „ Cho phép tiến trình liên lạc chiều với „ „ Socket description „ „ „ Thiết lập liên lạc : tạo socket, kết nối chúng với Sử dụng transport protocol Cần đặc tả IPaddress port kết nối Được hỗ trợ Berkeley socket „ „ Là mở rộng nhập xuất file trừu tượng Hiện hỗ trợ hầu hết HĐH đại 12/16/2007 Trần Hạnh Nhi 16 12/16/2007 Trần Hạnh Nhi 17 Socket Communication 12/16/2007 Trần Hạnh Nhi 18 Liên lạc hệ thống không đồng Máy A P1 (UNIX) Receive( ) 12/16/2007 Socket Socket Trần Hạnh Nhi Send( ) P2 Máy B (Windows) 19 Liên lạc thông qua Socket „ Hỗ trợ phương thức liên lạc „ Connection-oriented (TCP/IP) „ „ „ „ Connectionless (UDP/IP) „ „ „ „ Stream Reliable Bi-directional communication Datagram Unreliable Bi-directional communication Cho pheùp liên lạc tiến trình mạng không đồng 12/16/2007 Trần Hạnh Nhi 20 Phương thức Connection-Oriented „ Thực TCP (Transmission Control Protocol.) „ Phải thực kết nối tiến trình trước trao đổi liệu „ „ Dữ liệu phân phối „ „ „ „ Tương tự hệ thống điện thoại in sequence guaranteed Kết nối kết thúc liên lạc chấm dứt modes: „ „ Iterative (synchronous) Concurrent (asynchronous) 12/16/2007 Trần Hạnh Nhi 21 Phương thức Connectionless „ Thực UDP (User Datagram Protocol) „ Không yêu cầu kết nối tồn trước truyền liệu „ „ „ Tương tự hệ thống thư tín Dữ liệu truyền bị mát hay không trật tự modes: „ „ Iterative (synchronous) Concurrent (asynchronous) 12/16/2007 Trần Hạnh Nhi 22 Cấu trúc địa Socket „ Generic socket address structure: „ „ struct sockaddr { sa_family_t sa_family; char sa_data[14]; }; /* address family */ /* socket address */ A popular BSD-derived implementation: „ struct sockaddr_in { sa_family_t sin_family; /* address family */ in_port_t sin_port; /* protocol port number */ struct in_addr sin_addr; /* IP addr in NW byte order */ char sin_zero[8]; /* unused, set to zero */ }; 12/16/2007 Trần Hạnh Nhi 23 Port Numbers „ „ Port khái niệm trừu tượng TCP/UDP sử dụng để phân biệt ứng dụng máy chủ Một port xác định số nguyên 16 bit port number „ miền giá trị đươc dành cho „ Well-known ports (0-1023) „ Registered ports (1024-49151) „ Dynamic ports (49512 – 65535) 12/16/2007 Trần Hạnh Nhi 24 Some Well-Known Ports 12/16/2007 Trần Hạnh Nhi 25 Socket Types „ Socket types: „ SOCK_STREAM „ „ SOCK_DGRAM „ „ Stream socket (TCP) Datagram socket (UDP) SOCK_RAW „ Raw socket (talk to IP directly) 12/16/2007 Trần Hạnh Nhi 26 Socket Primitives Primitive Socket Bind Listen Accept Connect Send Receive Close 12/16/2007 Ý nghóa Tạo communication endpoint Kết buộc local address với socket Thông báo sẵn sàng “lắng nghe” (tiếp nhận kết nối) Khoá caller đến có yêu cầu kết nối Chủ động thực kết nối Gởi liệu qua kết nối thiết lập Nhận liệu qua kết nối thiết lập Kết thúc kết nối Trần Hạnh Nhi 27 TCP System Calls Server socket() bind() Client listen() socket() accept() blocks until connection from client connect() write() read() process request 12/16/2007 write() read() close() close() Trần Hạnh Nhi 28 UDP System Calls Server socket() bind() Client recvfrom() socket() blocks until data received from a client sendto() data(request) process request sendto() data(reply) recvfrom() close() 12/16/2007 Trần Hạnh Nhi 29 ... pháp phần mềm nhóm Busy-Waiting Không cần hỗ trợ hệ thống Dễ sai, Khó mở rộng Giải pháp hỗ trợ atomicity tốt Nhờ đến phần cứng ? 11/10/2007 Trần Hạnh Nhi 35 Nhóm Busy-Waiting - Các giải pháp phần... đoạt điều khiển (Race condition) - Ví dụ hits = time P2 P1 (1) read hits (0) (3) hits = + (2)read hits (0) (4)hits = + hits = 11/10/2007 Trần Hạnh Nhi Tranh đoạt điều khiển (Race condition) - Ví... hits (1) Trần Hạnh Nhi Tranh đoạt điều khiển (Race condition) - Ví dụ (tt) i=0; Thread a: while(i < 10) i = i +1; print “A won!”; Thread b: while(i > -1 0) i = i - 1; print “B won!”; Ai thắng ?

Ngày đăng: 11/05/2021, 04:31

Xem thêm: