Bài giảng Lập trình đồng thời và phân tán: Bài 1 - Lê Nguyễn Tuấn Thành
Số trang: 28
Loại file: pdf
Dung lượng: 3.91 MB
Lượt xem: 12
Lượt tải: 0
Xem trước 3 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Bài giảng "Lập trình đồng thời và phân tán - Bài 1: Những kiên thức cơ sở" do Lê Nguyễn Tuấn Thành biên soạn có cấu trúc gồm 2 phần cung cấp cho người học các kiến thức: Thuật ngữ, luồng trong java. Mời các bạn cùng tham khảo nội dung chi tiết.
Nội dung trích xuất từ tài liệu:
Bài giảng Lập trình đồng thời và phân tán: Bài 1 - Lê Nguyễn Tuấn Thành LẬPTRÌNH BÀI 1:ĐỒNG NHỮNG KIẾN THỜI THỨC CƠ SỞ & 1PHÂN TÁN Giảng viên: Lê Nguyễn Tuấn Thành Email: thanhlnt@tlu.edu.vn NỘI DUNG1. Thuật ngữ2. Luồng trong JavaBài giảng có sử dụng hình vẽ trong cuốn sách “Concurrent and Distributed Computing in Java, Vijay K.Garg, University of Texas, John Wiley & Sons, 2005” 23 Phần 1. Thuật ngữThuật ngữ (1)▪ Tính toán tuần tự (sequential computing) ▪ Tại một thời điểm chỉ thực hiện được một tính toán ▪ Chỉ có một luồng điều khiển chính▪ Hệ thống đơn nhiệm (single-tasking systems)▪ Hệ thống đa nhiệm (multitasking systems) ▪ Time-slicingTại sao phải tính toán đồng thời / songsong? 4Thuật ngữ (2)▪ Tính toán đồng thời / song song (concurrent/ parallel computing): Mô hình chia sẻ bộ nhớ ▪ Tại một thời điểm có thể thực hiện nhiều tính toán ▪ Bao gồm nhiều “chương trình” chạy trên một hoặc nhiều bộ vi xử lý ▪ Giao tiếp với nhau bằng cách sử dụng bộ nhớ chia sẻ ▪ Một “chương trình” bất kỳ luôn biết được trạng thái toàn cục của toàn bộ hệ thống 5Minh họa:Hệ thống song song 6Giả sử: 1 người ≈ 1 Processor▪ Multitasking: ▪ 1 bạn: vừa làm bài tập (LT+TH) môn CSE423, vừa nghe nhạc▪ Concurrency: ▪ 1 bạn: vừa đọc phần lý thuyết, vừa code phần thực hành▪ Parallelism: ▪ 2 bạn: 1 bạn đọc phần lý thuyết, 1 bạn code phần thực hành 7Thuật ngữ (3)▪ Tính toán phân tán (distributed computing) ▪ Hệ thống phân tán chứa nhiều bộ xử lý được kết nối với nhau bởi một mạng truyền thông ▪ Các bộ vi xử lý giao tiếp với nhau bằng cách gửi và nhận các thông điệp, thông qua các kênh truyền thông (pipe, socket) ▪ Không có bộ xử lý nào biết được trạng thái toàn cục của toàn bộ hệ thống phân tán 8Minh họa:Hệ thống phân tán 910 Thuật ngữ (4)Chương trình (program): một Tiến trình (process): một instancetập các chỉ lệnh bằng ngôn ngữ của một chương trình đang chạy, cólập trình không gian bộ nhớ riêng, gồm: ▪ Chương trình tuần tự: thực ▪ Mã chương trình: những chỉ lệnh máy hiện trong một “tiến trình” trong bộ nhớ mà tiến trình thực thi duy nhất ▪ Dữ liệu gồm bộ nhớ được sử dụng ▪ Chương trình đồng thời: bởi các biến toàn cục tĩnh và bộ nhớ được cấp phát trong thời gian chạy nhiều “tiến trình” ▪ Ngăn xếp gồm các biến địa phương và các bản ghi kích hoạt lời gọi hàm Luồng (threads): một tiến trình gồm một hay nhiều luồng. Các luồng trong cùng một tiến trình chia sẻ tài nguyên (bộ nhớ, files,…) Luồng “gọn nhẹ hơn so với tiến trình và tốn ít phụ phí hơn để tạo và 11 huỷ luồng so với khởi động một tiến trình mới.12Minh hoạt luồng 13Thách thức của cácchương trình đồng thờiLàm sao để đồng bộ việc thực thi của cáctiến trình/luồng khác nhau và cho phépchúng giao tiếp với nhau ? 14 ▪ Giả sử chương trình có 2 luồng: 1. Luồng P bao gồm 2 câu lệnh p1, được theo sau bởi p2 2. Luồng Q bao gồm 2 câu lệnh q1, được theo sau bởi q2 ▪ Hai luồng bắt đầu thực thi tại vị trí của con trỏ điềuInterleaving kiển (control pointer), lúc đầu trỏ tới p1 và q1 ▪ Giả sử các câu lệnh không thực hiện việc chuyển điều khiển khi đang thực thi ▪ Các kịch bản có thể xảy ra ??? 1. p1 → q1 → p2 → q2 Interleaving 2. p1 → q1 → q2 → p2 3. p1 → p2 → q1 → q2 4. q1 → p1 → q2 → p2 5. q1 → p1 → p2 → q2 6. q1 → q2 → p1 → p2 ▪ p2 → p1 → q1 → q2 có phải là một kịch bản không? ▪ KHÔNG ! ▪ Tôn trọng sự thực thi tuần tự của mỗi tiến trình 15 ▪ Do đó p2 không thể thực thi trước p1 !Race conditionGiá trị của n là bao nhiêu khi p, q thực thi xong ? 1617Có hai cơ chế để bảo vệ một khối mã lệnh khỏi việc truy cập đồng thời• Từ khoá synchronized 18• Lớp ReentrantLock (từ Java SE 5.0)Concurrency is Hard toTest and Debug (1)▪ It’s very hard ...
Nội dung trích xuất từ tài liệu:
Bài giảng Lập trình đồng thời và phân tán: Bài 1 - Lê Nguyễn Tuấn Thành LẬPTRÌNH BÀI 1:ĐỒNG NHỮNG KIẾN THỜI THỨC CƠ SỞ & 1PHÂN TÁN Giảng viên: Lê Nguyễn Tuấn Thành Email: thanhlnt@tlu.edu.vn NỘI DUNG1. Thuật ngữ2. Luồng trong JavaBài giảng có sử dụng hình vẽ trong cuốn sách “Concurrent and Distributed Computing in Java, Vijay K.Garg, University of Texas, John Wiley & Sons, 2005” 23 Phần 1. Thuật ngữThuật ngữ (1)▪ Tính toán tuần tự (sequential computing) ▪ Tại một thời điểm chỉ thực hiện được một tính toán ▪ Chỉ có một luồng điều khiển chính▪ Hệ thống đơn nhiệm (single-tasking systems)▪ Hệ thống đa nhiệm (multitasking systems) ▪ Time-slicingTại sao phải tính toán đồng thời / songsong? 4Thuật ngữ (2)▪ Tính toán đồng thời / song song (concurrent/ parallel computing): Mô hình chia sẻ bộ nhớ ▪ Tại một thời điểm có thể thực hiện nhiều tính toán ▪ Bao gồm nhiều “chương trình” chạy trên một hoặc nhiều bộ vi xử lý ▪ Giao tiếp với nhau bằng cách sử dụng bộ nhớ chia sẻ ▪ Một “chương trình” bất kỳ luôn biết được trạng thái toàn cục của toàn bộ hệ thống 5Minh họa:Hệ thống song song 6Giả sử: 1 người ≈ 1 Processor▪ Multitasking: ▪ 1 bạn: vừa làm bài tập (LT+TH) môn CSE423, vừa nghe nhạc▪ Concurrency: ▪ 1 bạn: vừa đọc phần lý thuyết, vừa code phần thực hành▪ Parallelism: ▪ 2 bạn: 1 bạn đọc phần lý thuyết, 1 bạn code phần thực hành 7Thuật ngữ (3)▪ Tính toán phân tán (distributed computing) ▪ Hệ thống phân tán chứa nhiều bộ xử lý được kết nối với nhau bởi một mạng truyền thông ▪ Các bộ vi xử lý giao tiếp với nhau bằng cách gửi và nhận các thông điệp, thông qua các kênh truyền thông (pipe, socket) ▪ Không có bộ xử lý nào biết được trạng thái toàn cục của toàn bộ hệ thống phân tán 8Minh họa:Hệ thống phân tán 910 Thuật ngữ (4)Chương trình (program): một Tiến trình (process): một instancetập các chỉ lệnh bằng ngôn ngữ của một chương trình đang chạy, cólập trình không gian bộ nhớ riêng, gồm: ▪ Chương trình tuần tự: thực ▪ Mã chương trình: những chỉ lệnh máy hiện trong một “tiến trình” trong bộ nhớ mà tiến trình thực thi duy nhất ▪ Dữ liệu gồm bộ nhớ được sử dụng ▪ Chương trình đồng thời: bởi các biến toàn cục tĩnh và bộ nhớ được cấp phát trong thời gian chạy nhiều “tiến trình” ▪ Ngăn xếp gồm các biến địa phương và các bản ghi kích hoạt lời gọi hàm Luồng (threads): một tiến trình gồm một hay nhiều luồng. Các luồng trong cùng một tiến trình chia sẻ tài nguyên (bộ nhớ, files,…) Luồng “gọn nhẹ hơn so với tiến trình và tốn ít phụ phí hơn để tạo và 11 huỷ luồng so với khởi động một tiến trình mới.12Minh hoạt luồng 13Thách thức của cácchương trình đồng thờiLàm sao để đồng bộ việc thực thi của cáctiến trình/luồng khác nhau và cho phépchúng giao tiếp với nhau ? 14 ▪ Giả sử chương trình có 2 luồng: 1. Luồng P bao gồm 2 câu lệnh p1, được theo sau bởi p2 2. Luồng Q bao gồm 2 câu lệnh q1, được theo sau bởi q2 ▪ Hai luồng bắt đầu thực thi tại vị trí của con trỏ điềuInterleaving kiển (control pointer), lúc đầu trỏ tới p1 và q1 ▪ Giả sử các câu lệnh không thực hiện việc chuyển điều khiển khi đang thực thi ▪ Các kịch bản có thể xảy ra ??? 1. p1 → q1 → p2 → q2 Interleaving 2. p1 → q1 → q2 → p2 3. p1 → p2 → q1 → q2 4. q1 → p1 → q2 → p2 5. q1 → p1 → p2 → q2 6. q1 → q2 → p1 → p2 ▪ p2 → p1 → q1 → q2 có phải là một kịch bản không? ▪ KHÔNG ! ▪ Tôn trọng sự thực thi tuần tự của mỗi tiến trình 15 ▪ Do đó p2 không thể thực thi trước p1 !Race conditionGiá trị của n là bao nhiêu khi p, q thực thi xong ? 1617Có hai cơ chế để bảo vệ một khối mã lệnh khỏi việc truy cập đồng thời• Từ khoá synchronized 18• Lớp ReentrantLock (từ Java SE 5.0)Concurrency is Hard toTest and Debug (1)▪ It’s very hard ...
Tìm kiếm theo từ khóa liên quan:
Lập trình đồng thời Lập trình phân tán Kỹ thuật lập trình Distributed programming Luồng trong java Hệ thống phân tánGợi ý tài liệu liên quan:
-
Kỹ thuật lập trình trên Visual Basic 2005
148 trang 263 0 0 -
NGÂN HÀNG CÂU HỎI TRẮC NGHIỆM THIẾT KẾ WEB
8 trang 204 0 0 -
Giới thiệu môn học Ngôn ngữ lập trình C++
5 trang 193 0 0 -
Bài giảng Nhập môn về lập trình - Chương 1: Giới thiệu về máy tính và lập trình
30 trang 163 0 0 -
Luận văn: Nghiên cứu kỹ thuật giấu tin trong ảnh Gif
33 trang 153 0 0 -
Báo cáo thực tập Công nghệ thông tin: Lập trình game trên Unity
27 trang 118 0 0 -
Giáo trình về phân tích thiết kế hệ thống thông tin
113 trang 114 0 0 -
LUẬN VĂN: Tìm hiểu kỹ thuật tạo bóng cứng trong đồ họa 3D
41 trang 108 0 0 -
Bài giảng Kỹ thuật lập trình - Chương 10: Tổng kết môn học (Trường Đại học Bách khoa Hà Nội)
67 trang 105 0 0 -
Giáo trình Nhập môn lập trình VB6: Phần 2
184 trang 89 0 0