ĐẠ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