BÀI TOÁN READER/WRITER - GAME CỜ VUA MẠNG LAN -BÁO CÁO ĐỒ ÁN CƠ SỞ MẠNG

22 10 0
  • Loading ...
1/22 trang

Thông tin tài liệu

Ngày đăng: 15/03/2019, 17:24

Báo cáo đồ án cơ sở ngành mạng: - Đề tài mạng: Xây dựng game cờ vua qua mạng LAN - Đề tài Hệ điều hành: Giải quyết bài toán Readers/writers Đồ án sở ngành mạng SVTH: Lê Thịnh GVHD: Nguyễn Thị Lệ Quyên Đồ án sở ngành mạng Table of Contents SVTH: Lê Thịnh GVHD: Nguyễn Thị Lệ Quyên Đồ án sở ngành mạng GVHD: Nguyễn Thị Lệ Quyên PHẦN I: NGUYÊN LÝ HỆ ĐIỀU HÀNH TIÊU ĐỀ: TÌM HIỂU ĐỒNG BỘ HỐ XỬ LÝ ĐỒNG THỜI (CONCURRENT) VÀ GIẢI QUYẾT BÀI TOÁN READERS/WRITERS CHƯƠNG SỞ LÝ THUYẾT Thread đồng hoá xử lý đồng thời - - - Process (tiến trình): Tiến trình chương trình xử lý, sỡ hữu trỏ lệnh, tập ghi biến Để hồn thành tác vụ mình, tiến trình cần đến số tài ngun – CPU, nhớ chính, tập tin thiết bị nhập/xuất Thread (luồng) đơn vị xử lý độc lập máy tính thực cơng việc riêng biệt xem tiến trình Một process chứa nhiều thread khác (multithreading) Các thread process chia sẻ chung tài nguyên vùng nhớ Vòng đời thread: Hình 1: Vòng đời thread - - Xử lý đồng thời (concurrent): Là trình thread chạy độc lập với khoản thời gian chồng chéo để xử lý yêu cầu riêng biệt Các u cầu dùng để hồn thành yêu lớn Đồng hoá xử lý đồng thời: Khi chạy đồng thời, thread sử dụng chung tài nguyên Để tránh tình trạng xung đột luồng xử lý ta phải SVTH: Lê Thịnh Đồ án sở ngành mạng - GVHD: Nguyễn Thị Lệ Quyên đồng hoá thread, tức cho phép thread truy cập sử dụng tài nguyên thời điểm định Semaphore: Là kernel resource cung cấp sychronization service Là cấu trúc điều khiển đa luồng dựa việc block luồng theo điều kiện định, xem chìa khố để yêu cầu quyền sử dụng tài nguyên Một semaphore hai trạng thái bận rảnh Khi thread u cầu lấy chìa khố để sử dụng tài ngun, chìa khố trạng thái rảnh thread cấp quyền sử dụng tài nguyên Ngược lại, trạng thái bận, tức chìa khố sử dụng thread khác thread vừa yêu cầu bị block chìa khố trở trạng thái rảnh Bài toán Readers/Writers 2.1 Giới thiệu toán: - Bài toán readers-writers: toán yêu cầu xử lý vấn đề nhiều thread sử dụng chung tài nguyên (có thể đọc ghi) với ràng buộc: Khi tiến trình thực việc ghi tài ngun khơng tiến trình khác sử dụng tài nguyên Nói cách khác, tài nguyên sử dụng hai hay nhiều reader khác sử dụng writer - Bài tốn readers-writers biến thể:  Thứ nhất: Khi hai nhiều reader yêu cầu quyền sử dụng tài nguyên, reader quyền sử dụng Tuy nhiên, reader không sửa đổi liệu nên cần giải vấn đề không để reader phải chờ để sử dụng tài nguyên tài nguyên sử dụng reader  Thứ hai: Khi reader R1 quyền truy cập, writer W chờ R1 thực xong để nhận quyền truy cập Nếu reader R2 sau yêu cầu quyền truy cập áp dụng biến thể thứ nhất, W phải tiếp tục đợi R1 R2 Vì phải giải vấn đề khơng writer phải đợi quyền access tài nguyên thêm vào hàng đợi  Thứ ba: Hai biến thể trước gây tình trạng reader phải đợi writer phải đợi thời gian dài Vì biến thể thứ ba yêu cầu phải giải vấn đề Các reader, writer không đợi lâu lượng thời gian xác định Các readers/writers đến trước sử dụng tài nguyên trước 2.2 Giải toán: - Bài toán giải theo nguyên tắc đến trước quyền sử dụng tài nguyên trước Đối với Reader, reader sử dụng tài nguyên mà sau Reader khác chờ cho phép Reader SVTH: Lê Thịnh Đồ án sở ngành mạng GVHD: Nguyễn Thị Lệ Quyên truy cập tài nguyên (Do Reader không làm thay đổi tài nguyên trình sử dụng) Như giải vấn đề reader đến sau sử dụng tài nguyên trước writer đến trước vấn đề Reader chờ đợi Reader khác khơng cần thiết CHƯƠNG PHÂN TÍCH THIẾT KẾ HỆ THỐNG Yêu cầu toán - Yêu cầu đặt toán cấp phát quyền truy cập sử dụng tài nguyên cho thread cách hợp lý, cho khơng xảy tình trạng sau: • • • • Chỉ writer sử dụng tài nguyên thời điểm định Các reader sử dụng chung tài nguyên thời điểm định Writer/Reader yêu cầu sử dụng tài nguyên trước sử dụng trước Các Reader không đợi lẫn yêu cầu sử dụng tài nguyên Xây dựng chương trình - Các lớp sử dụng chương trình: • Lớp Operator: Là lớp cha lớp Reader/Writer Thừa kế từ lớp JPanel, thể Writer/Reader hình • Lớp Writer: Là lớp lớp Operator, implements Runnable interface Lớp chứa biến reference đến tài nguyên sử dụng chung, hai biến semaphore để điều khiển việc truy cập tài nguyên Mỗi object lớp writer remove add thêm item stack (Là tài nguyên sử dụng chung, chứa item) Mỗi writer thể phần • Lớp Reader: Là lớp lớp Operator, implements Runnable interface Lớp chứa biến reference đến tài nguyên sử dụng chung, ba biến semaphore để điều khiển việc truy cập liệu Mỗi object lớp reader đọc số lượng item stack (Là tài nguyên sử dụng chung, chứa item) in hình Mỗi reader thể phần tử màu xanh hình • Lớp Item: Thừa kế từ lớp JPanel, thể phần tử tài nguyên sử dụng chung Thể phần tử màu vàng hình • Lớp ProcessUI: Lớp xử lý phần UI cho tồn chương trình • Lớp Main: Tạo instance lớp ProcessUI để bắt đầu chương trình - Mơ tả chương trình: Chương trình hiển thị hai button để người dùng tạo reader, writer tương ứng Với reader/writer tạo ra, reader/writer thể phần tử xanh lá/đỏ tương ứng thêm vào vùng chờ trước cấp phát quyền truy cập liệu Khi reader/writer cấp phát quyền truy cập, chúng chuyển sang vùng service (thể SVTH: Lê Thịnh Đồ án sở ngành mạng GVHD: Nguyễn Thị Lệ Quyên reader/writer sử dụng tài nguyên) Sau sử dụng xong reader/writer bị remove khỏi vùng service quyền truy cập cấp phát cho reader/writer chờ khu vực chờ đồ hoạt động Hình 2: đồ hoạt động reader/writer Môi trường phát triển - Ngôn ngữ lập trình Java IDE Netbeans Hệ điều hành Mac os SVTH: Lê Thịnh Đồ án sở ngành mạng GVHD: Nguyễn Thị Lệ Quyên CHƯƠNG TRIỂN KHAI VÀ ĐÁNH GIÁ CHƯƠNG TRÌNH 3.1 Kết demo chương trình Hình 3: Chương trình chưa thêm reader/writer Hình 4: Chương trình làm việc với reader/writer SVTH: Lê Thịnh Đồ án sở ngành mạng GVHD: Nguyễn Thị Lệ Quyên 3.2 Đánh giá kết chương trình - Chương trình thực yêu cầu toán đặt Các thread cấp phát quyền sử dụng tài nguyên cách hợp lý, không gây tượng deadlock KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN Kết luận - Ưu điểm: chương trình thực yêu cầu tốn đặt ra, qua giao diện trực quan Hạn chế: Giao diện người dùng chưa đẹp Hướng phát triển - Cần phải cho người dùng tương tác với liệu vào chương trình Đồng thời phát triển giao diện giúp chương trình trực quan thân thiện SVTH: Lê Thịnh Đồ án sở ngành mạng GVHD: Nguyễn Thị Lệ Quyên PHẦN II: LẬP TRÌNH MẠNG TIÊU ĐỀ: XÂY DỰNG TRỊ CHƠI CỜ VUA QUA MẠNG LAN CHƯƠNG I SỞ LÝ THUYẾT Tổng quan TCP/IP 1.1 Bộ giao thức liên mạng (IP Protocol) - Giao thức liên mạng, thường gọi giao thức IP (Internet Protocol) giao thức mạng hoạt động tầng mơ hình OSI, qui định cách thức định địa máy tính cách thức chuyển tải gói tin qua liên mạng IP đặc tả bảng báo cáo kỹ thuật tên RFC (Request For Comments) mã số 791 giao thức chủ yếu Bộ giao thức liên mạng Cùng với giao thức TCP, IP trở thành trái tim giao thức Internet - IP hai chức : • cung cấp dịch vụ truyền tải dạng không nối kết để chuyển tải gói tin qua liên mạng • phân mãnh tập hợp lại gói tin để hỗ trợ cho tầng liên kết liệu với kích thước đơn vị truyền liệu khác - Cấu trúc gói tin IP: Hình 5: Cấu trúc gói tin IP • Version (Phiên bản): Xác định phiên giao thức sử dụng • IP Header Length (Chiều dài phần tiêu đề : Xác định chiều dài phần tiêu đề gói tin, tính đơn vị từ - 32 bits (32-bit word) • Type-of-Service (Kiểu dịch vụ : Đặc tả mức độ quan trọng mà giao thức phía muốn xử lý gói tin • Total Length (Tổng chiều dài gói tin): Đặc tả chiều dài, tính byte, gói tin IP, bao gồm phần liệu tiêu đề SVTH: Lê Thịnh Đồ án sở ngành mạng GVHD: Nguyễn Thị Lệ Quyên • Identification ( Số nhận dạng ): Số nguyên nhận dạng gói tin liệu hành Trường sử dụng để ráp lại phân đoạn gói tin • Flags (Cờ hiệu): Gồm bít, bit trọng số nhỏ để xác định gói tin bị phân đọan hay khơng Bit thứ xác định phải phân đoạn cuối gói tin hay khơng Bit trọng số lớn chưa sử dụng • Fragment Offset (Vị trí phân đọan): Biểu thị vị trí phân đoạn liệu so với vị trí bắt đầu gói liệu gốc, cho phép máy nhận xây dựng lại gói tin ban đầu • Time-to-Live (Thời gian sống gói tin): Lưu giữ đếm thời gian, giá trị giảm dần đến giá trị gói tin bị xóa Điều giúp ngăn ngừa tình trạng gói tin truyền lòng vòng khơng đến đích • Protocol(Giao thức): Biểu giao thức tầng nhận gói tin giao thức IP xử lý • Header Checksum (Tổng kiểm tra lỗi tiêu đề): kiểm tra tính tồn vẹn phần tiêu đề • Source Addres : Địa máy gởi gói tin • Destination Address: Địa máy nhận gói tin • Options: Tùy chọn cho phép để hỗ trợ số vấn đề, chẳng hạn vấn đề bảo mật • Data: Chứa liệu tầng gởi xuống cần truyền 1.2 Bộ giao thức điều khiển giao vận (TCP Protocol) - Giao thức TCP (Transmission Control Protocol - "Giao thức điều khiển truyền vận") giao thức cốt lõi giao thức TCP/IP Sử dụng TCP, ứng dụng máy chủ nối mạng tạo "kết nối" với nhau, mà qua chúng trao đổi liệu gói tin Giao thức đảm bảo chuyển giao liệu tới nơi nhận cách đáng tin cậy thứ tự TCP phân biệt liệu nhiều ứng dụng (chẳng hạn, dịch vụ Web dịch vụ thư điện tử) đồng thời chạy máy chủ SVTH: Lê Thịnh Đồ án sở ngành mạng GVHD: Nguyễn Thị Lệ Quyên - TCP hỗ trợ nhiều giao thức ứng dụng phổ biến Internet ứng dụng kết quả, WWW, thư điện tử Secure Shell - Trong giao thức TCP/IP, TCP tầng trung gian giao thức IP bên ứng dụng bên Các ứng dụng thường cần kết nối đáng tin cậy kiểu đường ống để liên lạc với nhau, đó, giao thức IP khơng cung cấp dòng kiểu đó, mà cung cấp dịch vụ chuyển gói tin khơng đáng tin cậy TCP làm nhiệm vụ tầng giao vận mơ hình OSI đơn giản mạng máy tính - Các ứng dụng gửi dòng gồm byte 8-bit tới TCP để chuyển qua mạng TCP phân chia dòng byte thành đoạn (segment) kích thước thích hợp (thường định dựa theo kích thước đơn vị truyền dẫn tối đa (MTU) tầng liên kết liệu mạng mà máy tính nằm đó) Sau đó, TCP chuyển gói tin thu tới giao thức IP để gửi qua liên mạng tới mơ đun TCP máy tính đích TCP kiểm tra để đảm bảo khơng gói tin bị thất lạc cách gán cho gói tin "số thứ tự" (sequence number) Số thứ tự sử dụng để đảm bảo liệu trao cho ứng dụng đích theo thứ tự Mơ đun TCP đầu gửi lại "tin báo nhận" (acknowledgement) cho gói tin nhận thành cơng; "đồng hồ" (timer) nơi gửi báo time-out không nhận tin báo nhận khoảng thời gian round-trip time (RTT), liệu (được coi bị thất lạc) gửi lại TCP sử dụng checksum (giá trị kiểm tra) để xem byte bị hỏng q trình truyền hay khơng; giá trị tính tốn cho khối liệu nơi gửi trước gửi, kiểm tra nơi nhận Lập trình Socket 2.1 Giới thiệu Socket - Socket giao diện lập trình ứng dụng (API-Application Programming Interface) Socket cho phép thiết lập kênh giao tiếp mà hai đầu kênh đánh dấu hai cổng (port) Thông qua cổng q trình nhận gởi liệu với trình khác SVTH: Lê Thịnh Đồ án sở ngành mạng GVHD: Nguyễn Thị Lệ Qun Hình 6: Mơ hình client - server 2.2 Số hiệu cổng socket - Để thực giao tiếp, hai trình phải cơng bố số hiệu cổng socket mà sử dụng Mỗi cổng giao tiếp thể địa xác định hệ thống Khi trình gán số hiệu cổng, nhận liệu gởi đến cổng từ trình khác Q trình lại u cầu tạo socket - Ngoài số hiệu cổng, hai bên giao tiếp phải biết địa IP Địa IP giúp phân biệt máy tính với máy tính mạng TCP/IP Trong số hiệu cổng dùng để phân biệt trình khác máy tính SVTH: Lê Thịnh Đồ án sở ngành mạng GVHD: Nguyễn Thị Lệ Quyên Hình 7: Số hiệu cổng - Trong hình trên, địa q trình B1 xác định thơng tin: (Host B, Port B1): - Địa máy tính địa IP dạng 203.162.36.149 địa theo dạng tên miền www.cit.ctu.edu.vn - Số hiệu cổng gán cho Socket phải phạm vi máy tính đó, giá trị khoảng từ đến 65535 (16 bits) Trong đó, cổng từ đến 1023 gọi cổng hệ thống dành riêng cho trình hệ thống 2.3 Các chế độ giao tiếp - Xét kiến trúc hệ thống mạng TCP/IP SVTH: Lê Thịnh Đồ án sở ngành mạng GVHD: Nguyễn Thị Lệ Quyên Hình 8: Kiến trúc hệ thống TCP/IP - Tầng vận chuyển giúp chuyển tiếp thơng điệp chương trình ứng dụng với Nó hoạt động theo hai chế độ: Giao tiếp nối kết, sử dụng giao thức TCP Hoặc giao tiếp không nối kết, sử dụng giao thức UDP Socket giao diện chương trình ứng dụng với tầng vận chuyển Nó cho phép ta chọn giao thức sử dụng tầng vận chuyển TCP hay UDP cho chương trình ứng dụng CHƯƠNG II PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG Yêu cầu toán - Yêu cầu toán đặt xây dựng mơ hình client – server giao tiếp với thông qua Socket API để xử lý trò chơi cờ vua Server khởi đơng lắng nghe kết nối từ client Khi kết nối từ client, server khởi tạo kênh giao tiếp lưu trữ kênh giao tiếp lại Khi từ client trở lên, server khởi tạo game đấu client Server tiếp tục lắng nghe kết nối từ client game đấu diễn Mỗi game đấu luồng xử lý riêng nhận thông tin hai client lúc game đấu diễn Các client thực nước trò chuyện qua lại thông qua kênh kết nối qua chức chat SVTH: Lê Thịnh Đồ án sở ngành mạng - GVHD: Nguyễn Thị Lệ Quyên Kết thúc game đấu, server trách nhiệm thơng báo kết người chơi Client yêu cầu kết nối để chơi tiếp game khác Xây dựng chương trình - Các class, enum, interface sử dụng chương trình: o MessageType.java [Enum]: Thể kiểu liệu gửi/nhận client server Chương trình dựa vào kiểu liệu để xác định kiểu liệu nhận để xử lý cách phù hợp o Server.java [class]: Lớp kế thừa lớp JFrame, sau nhận thông tin port cần lắng nghe Server tạo luồng để lắng nghe tín hiệu kết nối từ client Khi từ kết nối trở lên, server tạo game đấu tiếp tục lắng nghe kết nối từ client o Player.java [class]: Lớp thể người chơi, lưu trữ kết nối server với client Lớp Player kế thừa từ lớp Thread, lắng nghe xử lý liệu nhận từ client báo server o Match.java [class]: Lớp implement Runnable, PlayerInterface, thể game đấu Lớp Match xử lý kiện mà hai người chơi thực hiện, thông báo kết o Client.java [class]: Lớp kế thừa lớp JFrame implement ChessboardInterface thể hiển client Mỗi client chịu trách nhiệm lấy thông tin người chơi, yêu cầu kết nối tới server xử lý gửi liệu đến server o Chessboard.java [class]: Lớp mô tả bàn cờ, bao gồm chức di chuyển quân cờ thực nước đánh, khởi tạo bàn cờ, hiển thị tin nhắn hai người chơi,… o Piece.java [class]: Lớp lớp asbtract, thể quân cờ, chứa phương thức thuộc tính chung quân cờ o King.java [class]: Lớp thể quân vua bàn cờ, kế thừa từ lớp Piece o Queen.java [class]: Lớp thể quân hậu bàn cờ, kế thừa từ lớp Piece o Rook.java [class]: Lớp thể quân xe bàn cờ, kế thừa từ lớp Piece o Bishop.java [class]: Lớp thể quân pháo bàn cờ, kế thừa từ lớp Piece o Knight.java [class]: Lớp thể quân mã bàn cờ, kế thừa từ lớp Piece SVTH: Lê Thịnh Đồ án sở ngành mạng GVHD: Nguyễn Thị Lệ Quyên o Pawn.java [class]: Lớp thể quân chốt bàn cờ, kế thừa từ lớp Piece o Square.java [class]: Lớp thể ô bàn cờ vua, kế thừa từ lớp Jpanel o Move.java [class]: Lớp thể bước di chuyển quân cờ Bao gồm điểm nguồn điểm đích kiểu o ChessboardInterface.java [Interface]: Interface bao gồm phương thức với mục đích thơng báo cho observer hành động thực chessboard o PlayerInterface.java [Interface]: Interface bao gồm phương thức với mục đích thông báo cho observer hành động thực player đồ hoạt động Hình 9: đồ hoạt động trò chơi cờ vua Mơi trường phát triển - Ngơn ngữ lập trình Java IDE Netbeans SVTH: Lê Thịnh Đồ án sở ngành mạng - GVHD: Nguyễn Thị Lệ Quyên Hệ điều hành Mac CHƯƠNG III TRIỂN KHAI VÀ ĐÁNH GIÁ KẾT QUẢ Kết demo chương trình Hình 10: Server lúc chưa khởi động SVTH: Lê Thịnh Đồ án sở ngành mạng GVHD: Nguyễn Thị Lệ Qun Hình 11: Nhập thơng tin client Hình 12: Bàn cờ bắt đầu trò chơi SVTH: Lê Thịnh Đồ án sở ngành mạng GVHD: Nguyễn Thị Lệ Quyên Hình 13: Người chơi chat lúc chơi SVTH: Lê Thịnh Đồ án sở ngành mạng GVHD: Nguyễn Thị Lệ Quyên Hình 14: Thơng báo kết trò chơi Đánh giá kết chương trình - Chương trình xử lý vấn đề đặt thể tạo game đấu môn cờ vua Xử lý chức chat chơi KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN Kết luận - Ưu điểm: • chương trình thực u cầu tốn đặt • tạo giao diện trò chơi đẹp • người chơi kết nối từ máy tính khác - Hạn chế: • Chưa chức chơi với bạn bè • luồng xử lý phức tạp chồng chéo • Khơng lưu kết người chơi Hướng phát triển - Bổ sung chức yêu cầu chơi với bạn bè SVTH: Lê Thịnh Đồ án sở ngành mạng GVHD: Nguyễn Thị Lệ Quyên - Kết nối sở liệu để lưu kết người chơi - Tối ưu hố chương trình KẾT LUẬN CHUNG - - Quá trình làm đồ án sở ngành mạng giúp em thêm nhiều hiểu biết Hệ Điều Hành Lập Trình Mạng Ngồi đồ án giúp em hoàn thiện kỹ thân như: quản lý thời gian, viết trình bày báo cáo, khả tự học, tìm hiểu kiến thức chun ngành khơng dạy trường… Lời cuối em xin cảm ơn thầy tận tình dạy để em hồn thành tốt đồ án SVTH: Lê Thịnh Đồ án sở ngành mạng GVHD: Nguyễn Thị Lệ Quyên TÀI LIỆU THAM KHẢO [1] Wikipedia: https://en.wikipedia.org/wiki/Readers%E2%80%93writers_problem [2] voer.edu.vn: http://voer.edu.vn/c/bo-giao-thuc-lien-mang-ips-internetprotocols/b14d14a4/266af9cd [3] chess.com: https://www.chess.com/play/computer PHỤ LỤC SVTH: Lê Thịnh ... Quyên - Kết nối sở liệu để lưu kết người chơi - Tối ưu hố chương trình KẾT LUẬN CHUNG - - Q trình làm đồ án Cơ sở ngành mạng giúp em có thêm nhiều hiểu biết Hệ Điều Hành Lập Trình Mạng Ngồi đồ án. .. thread vừa yêu cầu bị block chìa khố trở trạng thái rảnh Bài toán Readers/Writers 2.1 Giới thiệu toán: - Bài toán readers-writers: toán yêu cầu xử lý vấn đề nhiều thread sử dụng chung tài nguyên... TIÊU ĐỀ: TÌM HIỂU ĐỒNG BỘ HOÁ XỬ LÝ ĐỒNG THỜI (CONCURRENT) VÀ GIẢI QUYẾT BÀI TOÁN READERS/WRITERS CHƯƠNG CƠ SỞ LÝ THUYẾT Thread đồng hoá xử lý đồng thời - - - Process (tiến trình): Tiến trình
- Xem thêm -

Xem thêm: BÀI TOÁN READER/WRITER - GAME CỜ VUA MẠNG LAN -BÁO CÁO ĐỒ ÁN CƠ SỞ MẠNG, BÀI TOÁN READER/WRITER - GAME CỜ VUA MẠNG LAN -BÁO CÁO ĐỒ ÁN CƠ SỞ MẠNG, CHƯƠNG I. CƠ SỞ LÝ THUYẾT, 3 Các chế độ giao tiếp., CHƯƠNG II. PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG, CHƯƠNG III. TRIỂN KHAI VÀ ĐÁNH GIÁ KẾT QUẢ, Kết quả demo chương trình

Từ khóa liên quan

Gợi ý tài liệu liên quan cho bạn

Nhận lời giải ngay chưa đến 10 phút Đăng bài tập ngay