BÁO CÁO ĐỒ ÁN CƠ SỞ NGÀNH MẠNG ĐỀ TÀI Phần lập trình mạng Xây dựng game đánh bài cho phép nhiều người chơi qua mạng

25 2 0
BÁO CÁO ĐỒ ÁN CƠ SỞ NGÀNH MẠNG ĐỀ TÀI Phần lập trình mạng Xây dựng game đánh bài cho phép nhiều người chơi qua mạng

Đ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ÁO CÁO ĐỒ ÁN CƠ SỞ NGÀNH MẠNG ĐỀ TÀI Phần lập trình mạng Xây dựng game đánh bài cho phép nhiều người chơi qua mạng. Phần nguyên lý hệ điều hành Ứng dụng cơ chế multithread để giải hệ phương trình.

ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO ĐỒ ÁN CƠ SỞ NGÀNH MẠNG ĐỀ TÀI Phần lập trình mạng Xây dựng game đánh cho phép nhiều người chơi qua mạng Phần nguyên lý hệ điều hành Ứng dụng chế multithread để giải hệ phương trình LỜI MỞ ĐẦU PHẦN I LẬP TRÌNH MẠNG Đề tài: Xây dựng game đánh sử dụng socket.io Nodejs CHƯƠNG CƠ SỞ LÝ THUYẾT VÀ TỔNG QUAN VỀ ĐỀ TÀI Cơ sở lý thuyết Tổng quan đề tài .9 CHƯƠNG 2: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG .12 Phân tích chức 12 Triển khai 12 Đánh giá kết 14 CHƯƠNG 3: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 15 Kết luận 15 Hướng phát triển .15 PHẦN II NGUYÊN LÝ HỆ ĐIỀU HÀNH 16 Đề tài: Ứng dụng chế multithread để giải tốn hệ phương trình 16 CHƯƠNG CƠ SỞ LÝ THUYẾT VÀ TỔNG QUAN VỀ ĐỀ TÀI 16 Cơ sở lý thuyết 16 Tổng quan đề tài 20 CHƯƠNG 2: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG .21 Phân tích tốn xây dựng thuật toán .21 Triển khai 23 Đánh giá kết 23 CHƯƠNG 3: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 24 Kết luận 24 Hướng phát triển .24 LỜI MỞ ĐẦU Nguyên lý hệ điều hành Lập trình mạng kiến thức tảng mà lập trình viên phải hiểu rõ để phục vụ cho kiến thức cao Về phần lập trình mạng, ngày nói đến phát triển ứng dụng phần mềm, đa số người ta muốn nói đến chương trình có khả làm việc mơi trường mạng tích hợp nói chung mạng máy tính nói riêng Từ chương trình kế tốn doanh nghiệp, quản lý, trị chơi, điều khiển chương trình ứng dụng mạng Vì vậy, khơng thể phủ nhận mạng có vai trị quan trọng người quan trọng thời đại công nghệ ngày phát triển Hệ điều hành quan trọng không kém, mạng dùng để phát triển ứng dụng phần mềm kết nối tới máy tính hệ điều hành xem thành phần trung gian cầu nối cho giao tiếp người sử dụng máy tính Thơng qua hệ điều hành, người sử dụng dễ dàng làm việc khai thác hiệu thiết bị phần cứng máy tính, quản lý phần mềm ứng dụng Người sử dụng cần thao tác lệnh, kiện chờ tiến trình hệ điều hành thực Dựa hiểu biết tìm hiểu tài liệu, em nghiên cứu thực hai đề tài: xây dựng game đánh cho phép nhiều người chơi qua mạng (phần lập trình mạng) ứng dụng chế MultiThread để giải toán hệ phương trình Em xin chân thành cảm ơn thầy khoa Công Nghệ Thông Tin tạo điều kiện để em nghiên cứu kiến thức này, đặc biệt thầy Nguyễn Tấn Khơi nhiệt tình theo dõi, hướng dẫn em trình thực đề tài Vì kiến thức khả tìm hiểu cịn hạn chế nên khơng thể tránh khỏi sai sót q trình thực đề tài, em mong nhận góp ý thầy để có kết hồn thiện PHẦN I LẬP TRÌNH MẠNG Đề tài: Xây dựng game đánh sử dụng socket.io Nodejs CHƯƠNG CƠ SỞ LÝ THUYẾT VÀ TỔNG QUAN VỀ ĐỀ TÀI Cơ sở lý thuyết 1.1: Khái niệm lập trình mạng Ngày nói đến phát triển ứng dụng phần mềm, đa số người ta muốn nói đến chương trình có khả làm việc mơi trường mạng tích hợp nói chung mạng máy tính nói riêng Từ chương trình kế tốn doanh nghiệp, quản lý, trị chơi, điều khiển chương trình ứng dụng mạng Vấn đề lập trình mạng liên quan đến nhiều lĩnh vực kiến thức khác Từ kiến thức sử dụng ngơn ngữ lập trình, phân tích thiết kế hệ thống, kiến thức hệ thống mạng, mơ hình xây dựng chương trình ứng dụng mạng, kiến thức sở liệu kiến thức truyền thông, kiến thức lĩnh vực liên quan khác mạng điện thoại di động, PSTN, hệ thống GPS, mạng BlueTooth, WUSB, mạng sensor Nhưng nói vấn đề lập trình mạng có vấn đề cốt lõi tích hợp lập trình ứng dụng mạng thể hình Hay nói cách khác, vấn đề lập trình mạng định nghĩa với công thức sau: LTM = KTM + MH + NN ● ● ● ● LTM: Lập trình mạng KTM: Kiến thức mạng truyền thơng (mạng máy tính, PSTN, ) MH: Mơ hình lập trình mạng NN: Ngơn ngữ lập trình mạng 1.2: Mạng máy tính Mạng máy tính hệ thống gồm nhiều máy tính thiết bị kết nối với đường truyền vật lý theo kiến trúc (Network Architecture) nhằm thu thập, trao đổi liệu chia sẻ tài ngun cho nhiều người sử dụng Mơ hình ứng dụng mạng: ● Mơ hình mạng ngang hàng (Peer to Peer): cho phép nút mạng vừa đóng vai trò thực thể yêu cầu dịch vụ mạng (Client), vừa thực thể cung cấp dịch vụ mạng (Server) Trong môi trường này, người dùng máy tính chịu trách nhiệm điều hành chia sẻ tài ngun máy tính Mơ hình phù hợp với tổ chức nhỏ không quan tâm đến vấn đề bảo mật Phần mềm mạng peer–to–peer thiết kế cho thực thể ngang hàng thực chức tương tự ● Mơ hình mạng khách chủ (Client-Server): mơ hình mạng máy chủ có hệ thống máy tính cung cấp tài nguyên dịch vụ cho hệ thống mạng gọi máy chủ (Server) Một hệ thống máy tính sử dụng tài nguyên dịch vụ gọi máy khác (Client) 1.3: Mơ hình lập trình mạng Client-Server Mơ hình Client-Server gì? ● Mơ hình Client-Server mơ mà số máy đóng vai trị cung ứng dịch vụ theo yêu cầu máy trạm ● Hiểu đơn giản, mơ hình Client-Server mơ hình mạng máy tính gồm hai thành phần máy chủ (Server) máy khách (Client) Ngun lý hoạt động mơ hình Client-Server ● Việc giao tiếp Client Server phải dựa giao thức chuẩn Một số giao thức sử dụng phổ biến như: TCP/IP, UDP, OSI… ● Mơ hình gồm hai thành phần chính: Client Server  Client: nơi gửi yêu cầu xử lý máy chủ tổ chức giao tiếp với người dùng, với mơi trường bên ngồi với Server Sau tiếp nhận yêu cầu người dùng, phần phía Client gửi phía Server  Server:máy chủ xử lý gửi kết cho Client Phần phía Server quản lý giao tiếp với mơi trường bên Server với Client Sau phân tích yêu cầu Client gửi đến, phía Server xử lý gửi trả kết phía Client Ưu điểm mơ hình Client-Server: ● Với mơ hình Client-Server, bạn điều khiển tập trung lẫn không tập trung tài nguyên bảo mật liệu điều khiển qua số máy chuyên dụng Phân quyền truy cập tài nguyên, directory server, domain controller ● Client-Server chống tải mạng ● Bạn đảm bảo tồn vẹn liệu trường hợp có cố xảy tập trung quản lý Server ● Tiết kiệm chi phí phát triển hệ thống ứng dụng phần mềm triển khai mạng ● Có thể mở rộng (thay đổi) phạm vi mạng dễ dàng ● Cung cấp tảng lý tưởng cho phép tích hợp kỹ thuật đại mơ hình thiết kế hướng đối tượng, hệ chuyên gia, hệ thông tin địa lý (GIS) ● Người dùng truy cập liệu từ xa để thao tác gửi nhận file, tìm kiếm thơng tin Hạn chế mơ hình Client-Server: ● Địi hỏi q trình bảo trì, bảo dưỡng Server ● Do nguyên lý làm việc phải trao đổi liệu hai máy hai khu vực địa lý khác nhau, mơ hình Client-Server dễ dàng xảy tượng thơng tin truyền mạng bị lộ Tính an tồn bảo mật thông tin mạng hạn chế mà mơ hình Client-Server cần khắc phục 1.4: Ngơn ngữ lập trình mạng Nói chung tất ngơn ngữ lập trình sử dụng để lập trình mạng Nhưng ngơn ngữ có ưu, nhược điểm khác hỗ trợ thư viện API mức độ khác Tuỳ ứng dụng mạng cụ thể, hệ điều hành mạng cụ thể thói quen lập trình mà người lập trình chọn ngôn ngữ phù hợp để phát triển ứng dụng mạng Các ngơn ngữ lập trình phổ biến gồm ngôn ngữ sau: ● ● ● ● ● Hợp ngữ (Assembly Language) C/C++ ASP, NET Java Javascript Đối với phát triển ứng dụng mạng có ngơn ngữ lập trình sử dụng phổ biến nhất, NET Java Người lập trình sử dụng thành thạo dịng ngơn ngữ để phát triển ứng dụng mạng Tuy nhiên ngày với xuất Javascript tạo xu hướng lập trình Full-Stack thay cho cơng nghệ lập trình front-end hay back-end truyền thống 1.5: Giao thức TCP/IP Giao thức TCP (Transmission Control Protocol - Giao thức điều khiển truyền nhận) giao thức hướng kết nối (connection-oriented), địi hỏi thiết lập kết nối trước bắt đầu gửi liệu kết thúc kết nối việc gửi liệu hoàn tất theo thứ tự: thiết lập kết nối, truyền liệu kết thúc kết nối IP (Internet Protocol - Giao thức liên mạng) địa máy tính mạng, dựa vào địa IP giao thức TCP truyền liệu xác từ máy qua máy thông qua hệ thống mạng Ở mạng, máy tính có địa IP khác nhau, từ địa IP biết máy mạng ngược lại TCP/ IP giao thức trao đổi thông tin sử dụng để truyền tải kết nối thiết bị mạng Internet TCP/IP phát triển để mạng tin cậy với khả phục hồi tự động Cách thức hoạt động mơ hình TCP/IP: Phân tích từ tên gọi, TCP/IP kết hợp giao thức Trong IP (Giao thức liên mạng) cho phép gói tin gửi đến đích định sẵn, cách thêm thơng tin dẫn đường vào gói tin để gói tin đến đích định sẵn ban đầu Và giao thức TCP (Giao thức truyền vận) đóng vai trị kiểm tra đảm bảo an toàn cho gói tin qua trạm Trong q trình này, giao thức TCP nhận thấy gói tin bị lỗi, tín hiệu truyền yêu cầu hệ thống gửi lại gói tin khác 1.6: Socket, giao thức Websocket 1.6.1: Tổng quan socket Socket điểm cuối (endpoint) liên kết truyền thông hai chiều (two-way communication) hai chương trình chạy mạng Các lớp Socket sử dụng để biểu diễn kết nối client server, ràng buộc với cổng port (thể số cụ thể) để tầng TCP (TCP Layer) định danh ứng dụng mà liệu gửi tới Lập trình socket lập trình cho phép người dùng kết nối máy tính truyền tải nhận liệu từ máy tính thơng qua mạng Hiểu đơn giản, socket thiết bị truyền thông hai chiều gửi nhận liệu từ máy khác Socket hoạt động ? ● Là giao diện lập trình ứng dụng mạng, socket giúp bạn lập trình kết nối ứng dụng để truyền nhận giữ liệu mơi trường có kết nối Internet cách sử dụng phương thức TCP/IP UDP ● Khi cần trao đổi liệu cho ứng dụng cần phải biết thông tin tối thiểu IP số hiệu cổng ứng dụng  ứng dụng nằm máy  ứng dụng nằm máy không số hiệu cổng 1.6.2: Giao thức Websocket Websocket giao thức giúp truyền liệu hai chiều client-server thông qua kết nối TCP socket để tạo kết nối hiệu tốn kém.Hơn nữa, webSocket giao thức thiết kế để truyền liệu cách sử dụng cổng 80 cổng 443 phần HTML5 Vì vậy, webSockets hoạt động cổng web tiêu chuẩn, nên khơng có rắc rối việc mở cổng cho ứng dụng, lo lắng việc bị chặn tường lửa hay proxy server Không giống với giao thức HTTP cần client chủ động gửi yêu cầu cho server, client chờ đợi để nhận liệu từ máy chủ Hay nói cách khác với giao thức Websocket server chủ động gửi thơng tin đến client mà khơng cần phải có yêu cầu từ client Tất liệu giao tiếp client-server gửi trực tiếp qua kết nối cố định làm cho thông tin gửi nhanh chóng liên tục cần thiết WebSocket làm giảm độ trễ kết nối WebSocket thành lập, server không cần phải chờ đợi cho yêu cầu từ client Tương tự vậy, client gửi tin nhắn đến server lúc Yêu cầu giúp làm giảm đáng kể độ trễ, mà gửi yêu cầu khoảng thời gian, cho dù thơng điệp có sẵn Để sử dụng Websocket khơng phải cần trình duyệt hỗ trợ mà cịn phải có server Websocket, server Websocket tạo ngôn ngữ server-side nào, Node.js sử dụng rộng rãi viết Javascript nên mang nhiều ưu điểm so với ngôn ngữ server-side truyền thống khác Hoạt động giao thức Websocket: Giao thức có hai phần: Bắt tay truyền liệu Ban đầu client gửi yêu cầu khởi tạo kết nối Websocket đến server, server kiểm tra gửi trả kết chấp nhận kết nối, sau kết nối tạo q trình gửi liệu thực hiện, liệu Ws frame Ưu điểm Websocket: ● WebSockets cung cấp khả giao tiếp hai chiều mạnh mẽ, có độ trễ thấp dễ xử lý lỗi ● API dễ sử dụng trực tiếp mà không cần tầng bổ sung nào, so với Comet, thường đòi hỏi thư viện tốt để xử lý kết nối lại, thời gian chờ timeout, Ajax request (yêu cầu Ajax), tin báo nhận dạng truyền tải tùy chọn khác (Ajax long-polling jsonp polling) ● Khơng cần phải có nhiều kết nối phương pháp Comet long-polling Nhược điểm Websocket: ● Là đặc tả HTML5, WebSocket chưa tất trình duyệt hỗ trợ ● Do WebSocket TCP socket HTTP request, nên không dễ sử dụng dịch vụ có phạm vi yêu cầu, Session In View Filter Hibernate Tổng quan đề tài 2.1: Tìm hiểu game đánh Đề tài em nghiên cứu game đánh tiến lên phổ biến nay, có q nhiều ứng dụng thực tế Cịn ứng dụng em đơn giản hơn, "bản nâng cấp" trò chơi "kéo-búa-bao" mà chơi lần Tuy nhiên, game đánh có khác biệt, "kéo-búa-bao" thay lượng "lửa-nước-băng", tức lửa khắc chế băng tan, nước khắc chế lửa băng khắc chế nước Và quân có lượng (hoặc lửa, nước, băng) với số ngẫu nhiên từ đến Ngồi có màu màu vàng, cam, xanh cây, xanh dương, đỏ, tím Hai người đánh ra, có lượng khắc chế lượng người thắng Nếu đưa lượng so sánh số bài, có số lớn người thắng Nếu có lượng số người coi hịa Người thắng nhờ giữ để góp phần tiến tới chiến thắng chung cuộc, người thua bỏ thua Để có chiến thắng chung cuộc, người cần phải có chiến thắng từ ván đơn trước đó, phải thỏa mãn tiêu chí: có số đủ lượng, có đủ số chứa đủ màu lượng (lửa, băng nước) 2.2: Xây dựng ứng dụng Node.js socket.io 2.2.1: Tổng quan Node.js Node.js mã nguồn xây dựng dựa tảng Javascript V8 Engine, sử dụng để xây dựng ứng dụng web trang video clip, forum đặc biệt trang mạng xã hội phạm vi hẹp Node.js mã nguồn mở sử dụng rộng hàng ngàn lập trình viên tồn giới Node.js chạy nhiều tảng hệ điều hành khác từ WIndow Linux, OS X nên lợi Node.js cung cấp thư viện phong phú dạng Javascript Module khác giúp đơn giản hóa việc lập trình giảm thời gian mức thấp Những đặc điểm bật Node.js: ● Không đồng bộ: Tất API Nodejs không đồng (noneblocking), chủ yếu dựa Nodejs Server chờ đợi Server trả liệu Việc di chuyển máy chủ đến API sau gọi chế thông báo kiện Node.js giúp máy chủ để có phản ứng từ gọi API trước (real-time) ● Chạy nhanh: Nodejs xây dựng dựa vào tảng V8 Javascript Engine nên việc thực thi chương trình nhanh ● Đơn luồng: Nodejs sử dụng mơ hình luồng (SingleThread) Điều giúp hệ thống tốn RAM chạy nhanh tạo thread cho truy vấn Java hay PHP Ngoài ra, tận dụng ưu điểm non-blocking I/O Javascript mà Node.js tận dụng tối đa tài nguyên server mà không tạo độ trễ PHP ● Đặc biệt Node.js hiệu xây dựng ứng dụng thời gian thực (real-time applications) ứng dụng chat, dịch vụ mạng xã hội Facebook, Twitter,… game có tính tương tác người với người cao caro, đánh bài, 2.2.2: Thư viện Socket.io Node.js Nodejs xây dựng túy javascript Đây điểm lợi Nodejs để lập trình web-socket: ● Thứ nhất: javascript ngơn ngữ lập trình hướng kiện, mà lập trình thời gian thực, cách tiếp cận lập trình kiện cách tiếp cận khôn ngoan 10 ● Thứ hai: Nodejs chạy non-blocking nên việc hệ thống tạm ngừng để xử lý xong request giúp cho server trả lời client gần tức ● Thứ ba: Lập trình socket yêu cầu bạn phải xây dựng mơ hình lắng nghe - trả lời từ bên Nói cách khác đi, vai trị client server phải tương đương nhau, mà client chạy javascript, nên server chạy javascript việc lập trình dễ dàng thân thiện Chính đặc điểm này, socket.io đời Socket.io thư viện dành cho ứng dụng web, mobile để phát triển ứng dụng realtime Với đặc trưng mạnh mẽ dễ sử dụng, socket.io ngày sử dụng rộng rãi từ trang mạng xã hội cần tương tác cao, đến blog hay trang web thương mại điện tử Với thư viện này, làm việc với Websocket trở nên đơn giản nhiều Thư viện gồm phần ● Phía Client: gồm thư viện viết cho web (javascript), ios, android ● Phía Server: viết javascript dùng cho máy chủ node.js Socket.io hỗ trợ sử dụng nhiều công nghệ realtime: ● ● ● ● ● ● Websocket Flash Socket AJAX long-polling AJAX multipart streaming IFrame JSONP polling Nó tự động chuyển sang Websocket có thể, hầu hết trình duyệt hỗ trợ Websocket nên việc sử dụng Socket.io trình duyệt sử dụng Websocket Việc sử dụng Socket.io đơn giản giống client lẫn server, bao gồm phần ● Khởi tạo kết nối ● Lắng nghe event ● Gửi event Riêng server khơng có phần khởi tạo kết nối có client cần khởi tạo kết nối đến server Chính ưu điểm phổ biến socket.io lập trình mạng, em sử dụng thư viện để lập trình cho đề tài em, kết hợp với 11 tảng nodejs framework express.js (là framework javascript), công cụ làm việc sublime text CHƯƠNG 2: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG Phân tích triển khai chức Phân tích chức hệ thống:  Cho phép client kết nối với server để tham gia vào game  Cho phép nhiều máy chơi game với chia thành cặp chơi, cặp gồm máy  Vì cặp chơi cho phép máy chơi, nên số lượng truy cập lẻ người cuối phải đợi người chơi khác truy cập chơi (waiting)  Tổng hợp người thắng theo tiêu chí: có số đủ lượng, có đủ số chứa đủ màu lượng (lửa, băng nước)  Khi game đấu kết thúc, client đấu lại với client (rematch) sẽ trở main menu để chơi game khác  Vì cặp chơi chơi ngẫu nhiên theo lượt truy cập nên khơng có sở liệu em cảm thấy khơng cần thiết Triển khai chức năng: - Về phần client: + File canvas.js: quản lý thao tác tên canvas (là xây dựng chế xử lý kiện, vẽ tạo khung) Các hàm file là:  drawCard(): vẽ random từ server để người chơi chọn đánh  drawUnknowCard(): vẽ ẩn để đối phương khơng thể thấy đánh  handleMouseUp(), handleMouseDown(): xử lý kiện click đánh lên sau so sánh với + File game_client,js: quản lý tác vụ logic client, xử lý kết nối với socket.io server Các hàm file này:  enterQueue(): Hàm gọi lên server để xử lý kiện tìm kiếm người chơi  enterMatch(): Hàm lắng nghe kiện sau server gọi để thực chức năng: tiếp tục đánh bài, hay trở menu  handleMouseUp(), handleMouseDown(): xử lý kiện click đánh lên sau so sánh với  displayResult(): hiển thị kết sau lượt chơi - Về phần server: + File game_manager.js: xử lý tất kết nối socket.io từ game_client quản lý logic trò chơi bên máy chủ Các hàm file này:  enterQueue(): kết nối client với (2 client vào lượt chơi) 12  enterQueue (): rời trận đấu  playCard(): đánh  updateCardsRequested: Update lại sau đánh lượt trước  handleMouseUp(), handleMouseDown(): xử lý kiện click đánh lên sau so sánh với  shuffleDeck(): xáo + File server.js: Xử lý socket.io giao diện bên client, chứa tác vụ file game_manager.js Giao diện Giao diện Trang chủ: Giao diện tìm người chơi: 13 Giao diện chơi: Giao diện kết quả: 14 Đánh giá kết Chương trình hồn thành chức năng: ● Server nhận kết nối từ nhiều client ● Các client đánh với ● Chức chờ người chơi khác ● Tổng hợp chọn người chiến thắng 15 CHƯƠNG 3: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN Kết luận Đã xây dựng chương trình với chức đề Thông qua đề tài, ta hiểu cách hoạt động giao thức websocket nodejs Ta biết thêm số framework nodejs để xử lý kiện (express.js) tạo giao diện (pug html) ưng ý, cách deploy project lên heroku để sử dụng ứng dụng Mã nguồn: https://github.com/locdangxuan/card-game/tree/card-game Hướng phát triển ● Tạo nhiều phòng để nhiều người chơi ● Xây dựng giao diện đẹp ● Bảng xếp hạng người chơi có số chiến thắng cao đến thấp 16 PHẦN II NGUYÊN LÝ HỆ ĐIỀU HÀNH Đề tài: Ứng dụng chế multithread để giải toán hệ phương trình CHƯƠNG CƠ SỞ LÝ THUYẾT VÀ TỔNG QUAN VỀ ĐỀ TÀI Cơ sở lý thuyết 1.1: Thread ? Multithread ? Thread (luồng) tiến trình (sub-process) Một đơn vị xử lý nhỏ máy tính thực công việc riêng biệt Trong java, luồng quản lý máy ảo java (JVM) Multithread (đa luồng) tiến trình thực nhiều luồng đồng thời Một ứng dụng java ngồi luồng có luồng khác thực thi đồng thời làm ứng dụng chạy nhanh hiệu Vd: Trình duyệt web hay chương trình chơi nhạc ví dụ điển hình đa luồng ● Khi duyệt trang web, có nhiều hình ảnh, css, javascript tải đồng thời luồng khác ● Khi play nhạc, tương tác với nút điều khiển như: Play, pause, next, back luồng phát nhạc luồng riêng biệt với luồng tiếp nhận tương tác người dùng 1.2: Đa nhiệm (multitasking) Multitalking khả chạy đồng thời nhiều chương trình lúc hệ điều hành Hệ điều hành quản lý việc xếp lịch phù hợp cho chương trình Ví dụ hệ điều hành windows làm việc đồng thời với chương trình khác như: Microsoft word, excel, media player… Đa nhiệm đạt hai cách: ● Đa nhiệm dựa tiến trình (Process) – Đa tiến trình (Multiprocessing) ○ Mỗi tiến trình có địa riêng nhớ, tức tiến trình phân bổ vùng nhớ riêng biệt ○ Tiến trình nặng ○ Sự giao tiếp tiến trình có chi phí cao ○ Chuyển đổi từ tiến trình sang tiến trình khác đòi hỏi thời gian để đăng ký việc lưu tải đồ nhớ, danh sách cập nhật, … ● Đa nhiệm dựa luồng (Thread) – Đa luồng (MultiThreading) ○ Các luồng chia sẻ không gian địa ô nhớ giống ○ Luồng nhẹ 17 ○ Sự giao tiếp luồng có chi phí thấp Đa tiến trình (multiprocessing) đa luồng (multithreading) hai sử dụng để tạo hệ thống đa nhiệm (multitasking) Nhưng sử dụng đa luồng nhiều đa tiến trình luồng chia sẻ vùng nhớ chung Chúng không phân bổ vùng nhớ riêng biệt để tiết kiệm nhớ, chuyển đổi ngữ cảnh luồng thời gian tiến trình 1.2: Ưu điểm đa luồng Nó khơng chặn người sử dụng luồng độc lập bạn thực nhiều cơng việc lúc Mỗi luồng dùng chung chia sẻ nguồn tài nguyên trình chạy, thực cách độc lập Luồng độc lập khơng ảnh hưởng đến luồng khác ngoại lệ xảy luồng Có thể thực nhiều hoạt động với để tiết kiệm thời gian Ví dụ ứng dụng tách thành : luồng chạy giao diện người dùng luồng phụ nhiệm gửi kết xử lý đến luồng 1.3: Nhược điểm đa luồng Càng nhiều luồng xử lý phức tạp Xử lý vấn đề tranh chấp nhớ, đồng liệu phức tạp Cần phát tránh luồng chết (dead lock), luồng chạy mà khơng làm ứng dụng 1.4: Vịng đời thread java NEW : Đây trạng thái luồng vừa khởi tạo phương thức khởi tạo lớp Thread chưa start() Ở trạng thái này, luồng tạo 18 chưa cấp phát tài nguyên chưa chạy Nếu luồng trạng thái mà ta gọi phương thức ép buộc stop,resume,suspend … nguyên nhân sảy Xử lý vấn đề tranh chấp nhớ, đồng liệu phức tạp Cần phát tránh luồng chết (dead lock), luồng chạy mà khơng làm ứng dụng RUNNABLE : Sau gọi phương thức start() luồng test cấp phát tài nguyên lịch điều phối CPU cho luồng test bắt đầu có hiệu lực Ở đây, dùng trạng thái Runnable Running, luồng khơng thực ln chạy mà tùy vào hệ thống mà có điều phối CPU khác WAITING : Thread chờ không giới hạn luồng khác đánh thức TIMED_WAITING : Thread chờ thời gian định, có luồng khác đánh thức BLOCKED: Đây dạng trạng thái “Not Runnable”, trạng thái Thread cịn sống, khơng chọn để chạy Thread chờ monitor để unlock đối tượng mà cần TERMINATED : Một thread trạng thái terminated dead phương thức run() bị 1.5: Cách tạo Thread java Có hai cách tạo thread java: ● Tạo luồng cách extend từ lớp Thread ● Tạo luồng cách implement từ interface Runnable Cách hay sử dụng yêu thích dùng Interface Runnable, khơng u cầu phải tạo lớp kế thừa từ lớp Thread Trong trường hợp ứng dụng thiết kế yêu cầu sử dụng đa kế thừa, có interface giúp giải vấn đề Ngồi ra, Thread Pool hiệu cài đặt, sử dụng đơn giản Trong trường hợp cịn lại ta kế thừa từ lớp Thread 1.6: Các phương thức lớp Thread thường hay sử dụng suspend() : Đây phương thức làm tạm dừng hoạt động luồng ngưng cung cấp CPU cho luồng Để cung cấp lại CPU cho luồng ta sử dụng phương thức resume() Cần lưu ý điều ta dừng hoạt động luồng phương thức Phương thức suspend() khơng dừng tức hoạt động luồng mà sau luồng trả CPU cho hệ điều hành khơng cấp CPU cho luồng 19

Ngày đăng: 12/06/2023, 04:58

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

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

Tài liệu liên quan