Tải bản đầy đủ (.docx) (40 trang)

Đồ án cơ sở mạng đề tài TÌM HIỂU VÀ MÔ PHỎNG CƠ CHẾ GIAO TIẾP GIỮA CÁC TIẾN TRÌNH BẰNG MESSAGE QUEUE TRONG WINDOWS CHƯƠNG TRÌNH GAME UNOCHO PHÉP NHIỀU NGƯỜI CHƠI BÀI QUA MẠNG

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.06 MB, 40 trang )

ĐẠI HỌC ĐÀ NẴNG

TRƯỜNG ĐẠI HỌC BÁCH KHOA

KHOA CÔNG NGHỆ THƠNG TIN
Bộ mơn Mạng & Truyền Thơng

ĐỒ ÁN CƠ SỞ MẠNG
ĐỀ TÀI :
HỆ ĐIỀU HÀNH: TÌM HIỂU VÀ MƠ PHỎNG CƠ CHẾ GIAO TIẾP
GIỮA CÁC TIẾN TRÌNH BẰNG MESSAGE QUEUE TRONG WINDOWS

LẬP TRÌNH MẠNG: CHƯƠNG TRÌNH GAME UNO
CHO PHÉP NHIỀU NGƯỜI CHƠI BÀI QUA MẠNG


MỤC LỤC

DANH SÁCH HÌNH ẢNH

3

DANH SÁCH TỪ VIẾT TẮT

4

MỞ ĐẦU

5

PHẦN 1: HỆ ĐIỀU HÀNH



6

CHƯƠNG 1: CƠ SỞ LÝ THUYẾT

6

1.TỔNG QUAN VỀ GIAO TIẾP GIỮA CÁC TIẾN TRÌNH

6

2.CÁC CƠ CHẾ GIAO TIẾP TIẾN TRÌNH TRONG WINDOWS

6

3.GIAO TIẾP GIỮA CÁC TIẾN TRÌNH BẰNG MESSAGE QUEUE

6

CHƯƠNG 2: PHÂN TÍCH THIẾT KẾ HỆ THỐNG

8

1.PHÂN TÍCH BÀI TỐN

8

2.CÁCH ÁP DỤNG MESSAGE QUEUE VÀO CHƯƠNG TRÌNH

8


CHƯƠNG 3: KẾT QUẢ TRIỂN KHAI CHƯƠNG TRÌNH

9

1. MƠI TRƯỜNG LÀM VIỆC

9

2.ĐÁNH GIÁ

9

3.KẾT QUẢ CHẠY DƯỢC CỦA CHƯƠNG TRÌNH

9

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN

11

PHẦN 2: LẬP TRÌNH MẠNG

12

CHƯƠNG 1: CƠ SỞ LÝ THUYẾT

12

1. GIỚI THIỆU VỀ GAME UNO


12

2. CÁCH CHƠI GAME

12

CHƯƠNG 2: PHÂN TÍCH THIẾT KẾ HỆ THỐNG

13

1.CÁC CHỨC NĂNG GAME

13


2.CÁC LUỒNG DỮ LIỆU

13

3.SƠ ĐỒ QUAN HỆ

14

4.THIẾT KẾ CƠ SỞ DỮ LIỆU

14

5.SƠ ĐỒ THUẬT TOÁN (BỔ SUNG SAU)


14

CHƯƠNG 3: KẾT QUẢ TRIỂN KHAI CHƯƠNG TRÌNH

15

1. MƠI TRƯỜNG LÀM VIỆC

15

2. ĐÁNH GIÁ

15

3. KẾT QUẢ CHẠY DƯỢC CỦA CHƯƠNG TRÌNH

15

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN

23

TÀI LIỆU THAM KHẢO

24


DANH SÁCH HÌNH ẢNH
Hình 1: Mơ hình hoạt động của Message Queue..............................................................10
Hình 2: Xử lý nhập dữ liệu ở tiến trình 1.........................................................................13

Hình 3: Xử lý xuất kết quả ở tiến trình 1..........................................................................14
Hình 4: Lấy xử lí và trả kết quả ở tiến trình 2..................................................................15
Hình 5: Giao diện khởi tạo của 2 tiến trình......................................................................16
Hình 6: Thực hiện tiến trình 1 bằng cách nạp dữ liệu từ file txt.......................................17
Hình 7: Thực hiện nạp dữ liệu ở tiến trình một bằng tay..................................................17
Hình 8: File excel input 2 ma trận 1000x1000.................................................................18
Hình 9: File excel output ma trận 1000x1000..................................................................18
Hình 10: Sơ đồ quan hệ game UNO.................................................................................26
Hình 11: Cơ sở dữ liệu game UNO..................................................................................26
Hình 12: Xử lý login........................................................................................................27
Hình 13: Xử lý chơi game................................................................................................28
Hình 14: Giao diện khời động server...............................................................................29
Hình 15: Giao diện khởi động client................................................................................30
Hình 16: Server nhận và xử lý tin nhắn của client............................................................30
Hình 17: Các client chat với nhau ở khung Chat room.....................................................31
Hình 18: Đủ 3 người join game, server xử lí và chia bài (7 lá)........................................32
Hình 19: Đến lượt chơi của mình, lá bài ở cao hơn là la bài được phép đánh..................33
Hình 20: Khi khơng có lá bài nào hợp lệ, người chơi bốc bài..........................................34
Hình 21: Khi có người hết bài, game kết thúc..................................................................35
Hình 22: Xem lại lịch sử kết quả các game trước đó........................................................35


DANH SÁCH TỪ VIẾT TẮT

Từ viết tắt

Diễn giải

TCP/IP


Transmission Control Protocol/Internet Protocol

IP

Internet Protocol

FIFO

First In First Out

CSDL

Cơ sở dữ liệu

MSMQ

Microsoft Message Queue


MỞ ĐẦU
1. Tổng quan về đề tài
Đề tài Hệ điều hành: Tìm hiểu và mơ phỏng cơ chế giao tiếp giữa các tiến trình
bằng Message Queue trong hệ điều hành Windows
Đề tài Lập trình mạng: Chương trình game UNO cho phép nhiều người cùng chơi
bài qua mạng. (Lập trình socket sử dụng giao thức TCP/IP)
2. Mục đích và ý nghĩa của đề tài
Tìm hiều về cơ chế giao tiếp của Message Queue giữa các tiến trình trong
Windows, lập trình socket và giao thức TCP/IP. Áp dụng các kiến thức trên để thực
hiện chương trình xử lí tính tốn và chương trình game UNO.
3. Bố cục của đồ án

Đồ án bao gồm các nội dung sau:
Mở đầu
Phần 1: Đề tài nguyên lý hệ điều hành
Phần 2: Đề tài lập trình mạng


PHẦN 1: NGUYÊN LÝ HỆ ĐIỀU HÀNH

ĐỀ TÀI:
Tìm hiểu và mơ phỏng cơ chế giao tiếp giữa các tiến trình
bằng Message Queue trong hệ điều hành Windows

7


CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
1. Tiến trình
a. Tiến trình là gì?
Một tiến trình là một chương trình đang được thực thi. Một tiến trình phải sử
dụng tài nguyên như thời gian sử dụng CPU, bộ nhớ, tập tin, các thiết bị nhập xuất
để hồn tất cơng việc của nó. Các tài nguyên này được cung cấp khi tiến trình được
tạo hay trong quá trình thi hành.
Một tiến trình được coi là một đơn vị làm việc của hệ thống. Một hệ thống có thể có
nhiều tiến trình cùng lúc, trong đó một số tiến trình là của hệ điều hành, một số tiến
trình là của người sử dụng. các tiến trình này có thể diễn ra đồng thời.
Chương trình và tiến trình là hai khái niệm khác nhau mà ta cần phân biệt.
Chương trình là một thực thể thụ động chưa các chỉ thị điều khiển máy tính thi hành
một tác vụ cụ thể nào đó. Khi thực hiện các chỉ thị này, chương trình được chuyển
thành các tiến trình là một thực thể chủ động, với con trỏ lệnh xác định kèm thêm
tài nguyên phục vụ cho hoạt động.

b. Các loại tiến trình
Tiến trình có thể chia thành hai loại: tiến trình tuần tự (MS_DOS) và tiến trình
song song (uniprocesser và multiprocesser).


Tiến trình tuần tự: là các tiến trình mà điểm khởi tạo của nó là điểm kết thúc

của tiến trình trước đó.


Tiến trình song song: là các tiến trình mà điểm khởi tạo của tiến trình này

mằn ở thân của các tiến trình khác, tức là có thể khởi tạo một tiến trình mới khi các
tiến trình trước đó chưa kết thúc. Trong này tiến trình song song được chia thành
nhiều loại:
-

Tiến trình song song độc lập

-

Tiến trình song song có quan hệ thơng tin

-

Tiến trình song song phân cấp

-

Tiến trình song song đồng mức

8


9


c. Các trạng thái của tiến trình
Trạng thái của tiến trình tại một thời điểm được xác định bởi hoạt động hiện thời
của tiến trình tại thời điếm đó.
Trong q trình sống một tiến trình thay đởi trạng thái do nhiều nguyên nhân
như: phải chờ một sự kiện nào đó xảy ra ,hay đợi một thao tác nhập xuất hoàn tất,
buộc phải dừng hoạt động do hết thời gian xử lý...
Tại một thời điểm một tiến trình có thể nhận một trong các trạng thái sau đây
-

New: tiến trình đang được tạo lập

-

Running: các chỉ thị của tiến trình đang được xử lý.

-

Blocked: tiến trình chờ được cấp phát tài nguyên,hay chờ một sự kiện xảy ra.

-

Ready: tiến trình chờ được cấp phát CPU để xử lý.

-


Waiting: tiến trình phải dừng vì thiếu tài nguyên hay chờ một sự kiện nào đó.

-

Halt: tiến trình hồn tất xử lý

Các trạng thái của tiến trình được biểu diễn qua sơ đồ sau:

Hình 1. Sơ đồ các trạng thái của tiến trình

2. Tổng quan về giao tiếp giữa các tiến trình
Trong hệ thống các tiến trình khơng phải chạy hồn tồn độc lập với nhau,
nhưng nó có thể giao tiếp với nhau, liên lạc với nhau. Chia sẻ thơng tin: Nhiều tiến
trình có thể cùng quan tâm đến những dữ liệu nào đó, do vậy hệ điều hành cần cung
cấp một môi trường cho phép sự truy cập đồng thời đến các dữ liệu chung. Hợp tác
hồn thành tác vụ: Nhiều tiến trình cùng tham gia thực hiện một cơng việc. Hình
thức này sẽ đẩy nhanh khả năng xử lý công việc trong hệ thống.
10


 Các cơ chế giao tiếp tiến trình trong Windows: Hệ điều hành Windows cung
cấp cho người dùng một số cơ chế giao tiếp giữa các tiến trình như là:
-

Giao tiếp bằng tín hiệu (signals handing).

-

Giao tiếp bằng đường ống (pipe).


-

Giao tiếp bằng hàng đợi thông điệp (message queue).

-

Giao tiếp bằng sử dụng vùng nhớ chia sẻ (share memory).

-

Giao tiếp bằng đồng bộ tín hiệu semephore.

-

Giao tiếp trao đởi thơng qua socket.

3. Giao tiếp giữa các tiến trình bằng Message Queue
Message Queue là một mơ hình giao tiếp truyền tin bất động bộ. Có nghĩa trao đởi
giữa người gửi và người nhận không cần xảy ra đồng thời, tại cùng 1 thời điểm.
Người gửi có thể đẩy tin cần gửi vào hàng đợi (queue), và sau đó một số tiến trình
độc lập sẽ đẩy tin từ hàng đợi đến người nhận

Hình 1: Mơ hình hoạt động của Message Queue
.
Vì queue hoạt động theo cơ chế FIFO nên thứ tự vào - ra sẽ được đảm bảo. Cái gì
vào trước thì ra trước. Tất cả các message queue đều đảm bảo điều đó.
Hệ điều hành Windows sử dụng Microsoft Message Queue hoặc MSMQ - là một
triển khai hàng đợi tin nhắn do Microsoft phát triển và triển khai trong các hệ điều
11



hành Windows Server của họ kể từ Windows 95 . Windows Server 2016 và
Windows 10 cũng bao gồm thành phần này. Ngồi hỗ trợ nền tảng máy chủ chính,
MSMQ đã được tích hợp vào các nền tảng nhúng của Microsoft từ năm 1999.
MSMQ chịu trách nhiệm phân phối tin nhắn đáng tin cậy giữa các ứng dụng trong
hệ thống. MSMQ đảm bảo phân phối đáng tin cậy. Nó cũng hỗ trợ bảo mật và nhắn
tin dựa trên ưu tiên.
MSMQ hỗ trợ cả nhắn tin bền và không bền để đánh đởi giữa hiệu suất hoặc tính
nhất qn bằng cách ghi tin nhắn vào đĩa hoặc chỉ trong RAM. Tin nhắn khơng bền
chỉ có thể đạt được bằng cách gửi tin nhắn nhanh qua hàng đợi khơng giao dịch.Tìm
hiểu và mơ phỏng cơ chế giao tiếp giữa các tiến trình bằng Message Queue trong hệ
điều hành Windows

12


CHƯƠNG 2: PHÂN TÍCH THIẾT KẾ HỆ THỐNG
1.

Phân tích bài tốn



Bài tốn 1: Xử lí các phép tính tốn cơ bản

-

Tiến trình 1 thực hiện đọc dữ liệu vào MessageQueue Input từ file txt hoặc


do người dùng nhập. Sau đó in ra kết quả từ MessageQueue Output do tiến trình 2
trả lại. Người dùng nhập vào file txt các chuối biểu thức mỗi chuỗi gồm các kí tự số
và các kí tự +, -, *, /, (, ). Ví dụ : (1+2)*0+35+4/2
-

Tiến trình 2 thực hiện đọc dữ liệu từ MessageQueue Input và xử lí biểu thức

sau đó trả kết quả về MessageQueue Output


Bài tốn 2: Xử lí nhân ma trận lớn 1000x1000

-

Tiến trình 1 thực hiện đọc dữ liệu vào MessageQueue Input từ file excel với

dữ liệu là hai ma trận. Sau đó in ra kết quả từ MessageQueue Output do tiến trình 2
trả lại.
-

Tiến trình 2 thực hiện đọc dữ liệu từ MessageQueue Input và xử lí biểu thức

sau đó trả kết quả về MessageQueue Output
2.

Cách áp dụng Message Queue vào chương trình



Khởi tạo Message Queue:


-

Vào phần Computer Management -> Services and Applications

-

Chọn Message Queuing, tại đây ta sẽ thấy có 3 loại Message Queue của hệ

thống bao gồm Outgoing Queues, Private Queues và System Queues, ta có thể tạo
các Message Queue ở đây để sử dụng trong chương trình (khuyến cáo khơng nên
tạo Message Queue trong System Queues vì đây là các Queues dành cho hệ thống)


Sử dụng Message Queue vừa tạo để thực hiện chương trình:

Sau khi khởi tạo 2 Message Queue Input và Output để truyền dữ liệu qua lại giữa 2
tiến trình, ta cần phải khai báo chúng trong chương trình để có thể sử dụng bằng
cách:
13


Kích chuột phải vào Message Queue, chọn Properties
Trong tag General ta copy nội dung của ơ Label
Vào chương trình, ta khai báo 2 MessageQueue tương ứng với 2 label vừa lấy được
ở trên

14



3.

Sơ đồ thuật tốn

Hình 2:
Hình
Xử lí
2:nhập
Xử lýdữ
nhập
liệudữ
ở tiến
liệutrình
ở tiến1trình 1

15


Hình 3: Xử lý xuất kết quả ở tiến trình 1
16


Hình 4: Lấy xử lí và trả kết quả ở tiến trình 2
17


CHƯƠNG 3: KẾT QUẢ TRIỂN KHAI CHƯƠNG TRÌNH
1.

Mơi trường làm việc

-

Hệ điều hành Windows

-

Công cụ Visual Studio

-

Ngôn ngữ C#

2.

Đánh giá



Ưu điểm
-

Demo được một cách rõ ràng sự giao tiếp của các tiến trình bằng Message
Queue



3.

Nhược điểm
-


Chỉ dừng lại ở mức độ xử lý tính tốn đơn giản

-

Giao diện chưa được đầu tư
Kết quả chạy dược của chương trình

Hình 5: Giao diện khởi tạo của 2 tiến trình

18


Hình 6: Thực hiện tiến trình 1 bằng cách nạp dữ liệu từ file txt

Hình 7: Thực hiện nạp dữ liệu ở tiến trình một bằng tay

19


Hình 8: File excel input 2 ma trận 1000x1000

Hình 9: File excel output ma trận 1000x1000

20



×