GIẢI BÀI KIỂM TRA GIỮA KỲ !!!!!!!!!!!!!!!!!!!!!!!!!!!!
+11
hitmanmx
buptrexanh85
philip.tran
kt_yomost
nguyenthiphuongchi
PhamThiKhanhHa
maianhkiet
phuongdtk
mylinh
ngocnam
hongchien
15 posters
Trang 1 trong tổng số 1 trang
GIẢI BÀI KIỂM TRA GIỮA KỲ !!!!!!!!!!!!!!!!!!!!!!!!!!!!
Câu 1.
* Phân tích nguyên lý tập luồng:(giống trong tài liệu của thầy)
- Tiến trình cha tạo lập sẵn một tập luồng khi khởi động.
- Các luồng trong tập luồng luôn sẵn sàng chờ công việc.
- Khi tiến trình cha (ví dụ Web Server) nhận thêm một yêu cầu, một luồng được đánh thức
và đưa vào vận hành.
- Phục vụ xong, luồng được đưa trả về tập luồng.
- Nếu số yêu cầu lớn hơn số luồng trong tập, tiến trình cha chờ đến khi có luồng được giải phóng.
* Ví dụ ứng dụng sử dụng tập luồng như: bài tóan sản xuất và tiêu thụ, bài tóan nhà hiền triết cùng ăn,...
* Tạo tập luồng gồm 100 luồng nhà sản xuất.
HANDLE ProducerHandle[100];
DWORD ProducerID[100];
for (int i=0; i<100; i++)
ProducerHandle[i]=CreateThread(0,0, (LPTHREAD_START_ROUTINE)Producer, (void *) i, 0,
&roducerID[i]);
* Tạo ra 100 luồng sản xuất ở trạng thái thi hành ngay.
Câu 2.
* So sánh giữa Chat Unicode và Chat SingleWinsockTCP Unicode.
giống nhau: đều sử dụng Winsock
khác nhau: Chat Unicode dùng phương thức truyền UDP, cần phải thiết lãp phương thức giao tiếp.
Chat SingleWinsockTCP Unicode: dùng phương thức truyền TCP, không cần phải thiết lãp phương thức truyền.
* Cách tạo winsork
Vào Toolbox -> Right click -> chọn Componens -> chọn Microsoft Winsok Control 6.0 -> khi đó tạo xong xuất hiện biểu tượng Winsork, ta chọn và kéo vào form để khởi tạo.
* Các câu lệnh dùng trong ứng dụng chat
RemoteHost = "LocalHost" ‘ Tên Máy hay IP
RemotePort = 1001 ‘ Số hiệu port kết nối
Bind 1002 ' Số hiệu port của máy cục bộ
SendData ' phương thức dùng để gửi dữ liệu
GetData ' Phương thức dùng để lấy dữ liệu về.
Câu 3. ý nghĩa câu lệnh code
#define BUFFER_SIZE 10
-> định nghĩa kích thước bộ đểm gồm 30 phần tử.
HANDLE semEmpty, semFull;
-> Tao Hai đèn hiệu trong đó, sememty cho biết số vùng trống của bộ đểm,
giá trị của nó chính là số vùng trống của bộ đệm.
Còn semfull cho biết số sản phẩm có trong bộ đệm. Giá trí của semfull chính là
số sản phẩm trong bộ đệm.
semEmpty=CreateSemaphore(0, BUFFER_SIZE, BUFFER_SIZE, 0);
-> Tạo đèn hiệu semEmty, trong đó Buffer_Size đầu là Buffer ban đầu,
còn Buffer_Size thứ hai là số Buffer tối đa.
semFull=CreateSemaphore(0, 0, BUFFER_SIZE, 0);
-> Tạo đèn hiệu semFull.
WaitForSingleObject(semEmpty, INFINITE);
-> Chờ cho đến khi có vùng trống
printf("semEmpty Handle = %d",semEmpty);//in ra màn hình số vùng trống
WaitForSingleObject(semFull, INFINITE);//chờ đèn hiệu semFull báo, nếu đèn hiệu báo thì thực thi lập tức
printf("semFull Handle = %d",semFull);//in ra màn hình giá trị vùng có sản phẩm.
* Đọan code trên là tạo ra 2 đèn hiệu:semEmpty và semFull. Nếu có vùng trống trong bộ đệm(semEmpty) thì xuất ra màng hình giá trị của semEmpty, khi đó sản phẩm được tạo ra có nơi cất giữ(semFull).xuất ra màn hình số sản phẩm.
Admin
- Hoan nghênh bạn HongChien đã nhanh chóng đưa lên lời giải Đề thi giữa kỳ.
- Bài giải như trên được 6 điểm (tối đa) tuy có một số chỗ sai sau:
+ Câu 1: Ví dụ minh hoạ: Web Server, Database Server. Đặc biệt nên "nêu": Thày đến mạng Phương Nam....
+ Câu 2 (phần 1): Với WinSockTCPSinglePortUnicode (không phải là Chat SingleWinsockTCP Unicode) cần phải đăng ký giao thức TCP cho điều khiển Winsock (thực ra là một mảng điều khiển), tuy ngầm định là TCP. Ứng dụng này có khả năng phục vụ đồng thời nhiều kết nối từ các Client khác nhau theo mô hình Client/Server tập trung (một Server-nhiều Client). Ứng dụng Chat Unicode dùng UDP nên theo mô hình Client/Server ngang hàng (Peer-to-Peer), nên nhiều khi còn được đặt tên là UdpPeerClient.
+ Câu 2 (phần 2): Nên đặt tên điều khiển Winsock trước các phương thức và thuộc tính, ví dụ: udpPeerA.RemoteHost="C28", udpPeerA.RemotePort=2000, udpPeerA.SendData strMessage,...
+ Câu 3:
# Sai: printf("semEmpty Handle = %d", semEmpty); // in ra màn hình số vùng trống
Đúng ra: printf("semEmpty Handle = %d", semEmpty); // đưa ra màn hình Mục quản (số hiệu) của đèn hiệu semEmpty (Mục quản khác Giá trị của đèn hiệu!). Tương tự với semFull.
# Kết quả làm việc của đoạn code trên là: semEmpty Handle = 2005 (ví dụ HĐH cấp cho semEmpty mục quản là 2005). Qua được lệnh WaitForSingleObject(semEmpty, INFINITE) là do Giá trị của semEmpty=10 (>=1).
Lệnh printf("semFull Handle = %d", semFull) không được thực hiện do luồng chứa code trên "ngủ bất tận" trước đèn hiệu semFull tại lệnh WaitForSingleObject(semFull, INFINITE) vì giá trị của semFull bằng 0.
# Dẫn sai (đọc sai Đề): semEmpty=CreateSemaphore(0, BUFFER_SIZE, BUFFER_SIZE, 0)
Đúng ra: semEmpty=CreateSemaphore(0, BUFFER_SIZE, BUFFER_SIZE, "semEmpty") với tham số thứ 4 là Tên đèn hiệu, do đó semEmpty là đèn hiệu Liên tiến trình (nếu dùng 0 thì được đèn hiệu Nội tiến trình). Tương tự với semFull bên dưới.
* Phân tích nguyên lý tập luồng:(giống trong tài liệu của thầy)
- Tiến trình cha tạo lập sẵn một tập luồng khi khởi động.
- Các luồng trong tập luồng luôn sẵn sàng chờ công việc.
- Khi tiến trình cha (ví dụ Web Server) nhận thêm một yêu cầu, một luồng được đánh thức
và đưa vào vận hành.
- Phục vụ xong, luồng được đưa trả về tập luồng.
- Nếu số yêu cầu lớn hơn số luồng trong tập, tiến trình cha chờ đến khi có luồng được giải phóng.
* Ví dụ ứng dụng sử dụng tập luồng như: bài tóan sản xuất và tiêu thụ, bài tóan nhà hiền triết cùng ăn,...
* Tạo tập luồng gồm 100 luồng nhà sản xuất.
HANDLE ProducerHandle[100];
DWORD ProducerID[100];
for (int i=0; i<100; i++)
ProducerHandle[i]=CreateThread(0,0, (LPTHREAD_START_ROUTINE)Producer, (void *) i, 0,
&roducerID[i]);
* Tạo ra 100 luồng sản xuất ở trạng thái thi hành ngay.
Câu 2.
* So sánh giữa Chat Unicode và Chat SingleWinsockTCP Unicode.
giống nhau: đều sử dụng Winsock
khác nhau: Chat Unicode dùng phương thức truyền UDP, cần phải thiết lãp phương thức giao tiếp.
Chat SingleWinsockTCP Unicode: dùng phương thức truyền TCP, không cần phải thiết lãp phương thức truyền.
* Cách tạo winsork
Vào Toolbox -> Right click -> chọn Componens -> chọn Microsoft Winsok Control 6.0 -> khi đó tạo xong xuất hiện biểu tượng Winsork, ta chọn và kéo vào form để khởi tạo.
* Các câu lệnh dùng trong ứng dụng chat
RemoteHost = "LocalHost" ‘ Tên Máy hay IP
RemotePort = 1001 ‘ Số hiệu port kết nối
Bind 1002 ' Số hiệu port của máy cục bộ
SendData ' phương thức dùng để gửi dữ liệu
GetData ' Phương thức dùng để lấy dữ liệu về.
Câu 3. ý nghĩa câu lệnh code
#define BUFFER_SIZE 10
-> định nghĩa kích thước bộ đểm gồm 30 phần tử.
HANDLE semEmpty, semFull;
-> Tao Hai đèn hiệu trong đó, sememty cho biết số vùng trống của bộ đểm,
giá trị của nó chính là số vùng trống của bộ đệm.
Còn semfull cho biết số sản phẩm có trong bộ đệm. Giá trí của semfull chính là
số sản phẩm trong bộ đệm.
semEmpty=CreateSemaphore(0, BUFFER_SIZE, BUFFER_SIZE, 0);
-> Tạo đèn hiệu semEmty, trong đó Buffer_Size đầu là Buffer ban đầu,
còn Buffer_Size thứ hai là số Buffer tối đa.
semFull=CreateSemaphore(0, 0, BUFFER_SIZE, 0);
-> Tạo đèn hiệu semFull.
WaitForSingleObject(semEmpty, INFINITE);
-> Chờ cho đến khi có vùng trống
printf("semEmpty Handle = %d",semEmpty);//in ra màn hình số vùng trống
WaitForSingleObject(semFull, INFINITE);//chờ đèn hiệu semFull báo, nếu đèn hiệu báo thì thực thi lập tức
printf("semFull Handle = %d",semFull);//in ra màn hình giá trị vùng có sản phẩm.
* Đọan code trên là tạo ra 2 đèn hiệu:semEmpty và semFull. Nếu có vùng trống trong bộ đệm(semEmpty) thì xuất ra màng hình giá trị của semEmpty, khi đó sản phẩm được tạo ra có nơi cất giữ(semFull).xuất ra màn hình số sản phẩm.
Admin
- Hoan nghênh bạn HongChien đã nhanh chóng đưa lên lời giải Đề thi giữa kỳ.
- Bài giải như trên được 6 điểm (tối đa) tuy có một số chỗ sai sau:
+ Câu 1: Ví dụ minh hoạ: Web Server, Database Server. Đặc biệt nên "nêu": Thày đến mạng Phương Nam....
+ Câu 2 (phần 1): Với WinSockTCPSinglePortUnicode (không phải là Chat SingleWinsockTCP Unicode) cần phải đăng ký giao thức TCP cho điều khiển Winsock (thực ra là một mảng điều khiển), tuy ngầm định là TCP. Ứng dụng này có khả năng phục vụ đồng thời nhiều kết nối từ các Client khác nhau theo mô hình Client/Server tập trung (một Server-nhiều Client). Ứng dụng Chat Unicode dùng UDP nên theo mô hình Client/Server ngang hàng (Peer-to-Peer), nên nhiều khi còn được đặt tên là UdpPeerClient.
+ Câu 2 (phần 2): Nên đặt tên điều khiển Winsock trước các phương thức và thuộc tính, ví dụ: udpPeerA.RemoteHost="C28", udpPeerA.RemotePort=2000, udpPeerA.SendData strMessage,...
+ Câu 3:
# Sai: printf("semEmpty Handle = %d", semEmpty); // in ra màn hình số vùng trống
Đúng ra: printf("semEmpty Handle = %d", semEmpty); // đưa ra màn hình Mục quản (số hiệu) của đèn hiệu semEmpty (Mục quản khác Giá trị của đèn hiệu!). Tương tự với semFull.
# Kết quả làm việc của đoạn code trên là: semEmpty Handle = 2005 (ví dụ HĐH cấp cho semEmpty mục quản là 2005). Qua được lệnh WaitForSingleObject(semEmpty, INFINITE) là do Giá trị của semEmpty=10 (>=1).
Lệnh printf("semFull Handle = %d", semFull) không được thực hiện do luồng chứa code trên "ngủ bất tận" trước đèn hiệu semFull tại lệnh WaitForSingleObject(semFull, INFINITE) vì giá trị của semFull bằng 0.
# Dẫn sai (đọc sai Đề): semEmpty=CreateSemaphore(0, BUFFER_SIZE, BUFFER_SIZE, 0)
Đúng ra: semEmpty=CreateSemaphore(0, BUFFER_SIZE, BUFFER_SIZE, "semEmpty") với tham số thứ 4 là Tên đèn hiệu, do đó semEmpty là đèn hiệu Liên tiến trình (nếu dùng 0 thì được đèn hiệu Nội tiến trình). Tương tự với semFull bên dưới.
hongchien- Tổng số bài gửi : 19
Join date : 02/04/2009
Age : 42
Đến từ : Long An
GỈAI BÀI KIỂM TRA GIỮA KỲ.
Bạn xem lại doạn này.
"khác nhau: Chat Unicode dùng phương thức truyền UDP, cần phải thiết lãp phương thức giao tiếp.
Chat SingleWinsockTCP Unicode: dùng phương thức truyền TCP, không cần phải thiết lãp phương thức truyền."
khác nhau: Chat Unicode dùng phương thức truyền UDP,không cần phải thiết lãp phương thức truyền.
Chat SingleWinsockTCP Unicode: dùng phương thức truyền TCP, cần phải thiết lãp phương thức giao tiếp
"khác nhau: Chat Unicode dùng phương thức truyền UDP, cần phải thiết lãp phương thức giao tiếp.
Chat SingleWinsockTCP Unicode: dùng phương thức truyền TCP, không cần phải thiết lãp phương thức truyền."
khác nhau: Chat Unicode dùng phương thức truyền UDP,không cần phải thiết lãp phương thức truyền.
Chat SingleWinsockTCP Unicode: dùng phương thức truyền TCP, cần phải thiết lãp phương thức giao tiếp
Re: GIẢI BÀI KIỂM TRA GIỮA KỲ !!!!!!!!!!!!!!!!!!!!!!!!!!!!
thay da nhan xet bai giai roi, vay la ban hong chien chac se dat tu 9-10 diem, chuc mung nhe
mylinh- Tổng số bài gửi : 40
Join date : 10/03/2009
Re: GIẢI BÀI KIỂM TRA GIỮA KỲ !!!!!!!!!!!!!!!!!!!!!!!!!!!!
thầy ơi thế là tiêu e rồi, e ko ghi là in ra mục quản hix
Được sửa bởi phuongdtk ngày 14/5/2009, 20:05; sửa lần 1.
phuongdtk- Tổng số bài gửi : 56
Join date : 19/02/2009
Re: GIẢI BÀI KIỂM TRA GIỮA KỲ !!!!!!!!!!!!!!!!!!!!!!!!!!!!
mình cũng thế, buồn ghê
maianhkiet- Tổng số bài gửi : 9
Join date : 13/05/2009
Re: GIẢI BÀI KIỂM TRA GIỮA KỲ !!!!!!!!!!!!!!!!!!!!!!!!!!!!
Đọc bài giải, thấy ở mỗi câu có chỗ đúng, có chỗ sai, hy vọng Thầy vu vi mà cho mình điểm những chỗ đúng hic...
PhamThiKhanhHa- Tổng số bài gửi : 25
Join date : 04/03/2009
GIẢI BÀI KIỂM TRA GIỮA KỲ !!!!!!!!!!!!!!!!!!!!!!!!!!!!
Buồn quá!Mình cũng có nhiều chỗ sai quá. Mong Thầy châm chước.
nguyenthiphuongchi- Tổng số bài gửi : 57
Join date : 24/02/2009
Re: GIẢI BÀI KIỂM TRA GIỮA KỲ !!!!!!!!!!!!!!!!!!!!!!!!!!!!
Chuc mung ban hongchien nhe! xem lai bai giai cua ban va cua Thay minh thay bai lam cua minh co nhieu cho sai va nham lan wa ah. Minh bi sai cau 2 roi. huhu...hy vong Thay se cham chuoc bo wa nhi
kt_yomost- Tổng số bài gửi : 24
Join date : 09/04/2009
Re: GIẢI BÀI KIỂM TRA GIỮA KỲ !!!!!!!!!!!!!!!!!!!!!!!!!!!!
Chúc mừng bạn hồng chiến nhé!!!! Mình cũng có nhiều chỗ sai.
philip.tran- Tổng số bài gửi : 91
Join date : 19/02/2009
Re: GIẢI BÀI KIỂM TRA GIỮA KỲ !!!!!!!!!!!!!!!!!!!!!!!!!!!!
nhin bai giai thi thay cung ko kho lam, nhung ko hieu sao minh lam sai nhiu hon dung vay ne , cau 2 do doc ko ky de bai, nhin thay cai gi winsock... va visual basic 6.0 tu nhien minh chep code vao, ko dung noi dung thay yeu cau roi, hi vong thay se cho diem vi cung co cong suc hoc code
mylinh- Tổng số bài gửi : 40
Join date : 10/03/2009
hello
chu`i ui , mi`nh cung co' nhie`u cho~ sai wa' , ca'm o*n ban hongchien da dua ra bai giai kha' chi tie't de cho cac' ban cu`ng tham khao va` ru't ra nhi`u kinh nghiem
buptrexanh85- Tổng số bài gửi : 26
Join date : 15/05/2009
Re: GIẢI BÀI KIỂM TRA GIỮA KỲ !!!!!!!!!!!!!!!!!!!!!!!!!!!!
Bài giải na ná bài mình nhỉ.
Nhưng câu 2 mình wang vài quả lựu đạn nữa vào UDP,TCP :
- Chat Unicode không yêu cầu người chat kết nối và Chat SingleWinsockTCP yêu cầu 2 người chat phải kết nối
Giống nhau bạn thiếu roài kìa :
- Cùng hỗ trợ unicode ^_^.
- Người chat phải biết địa chỉ và port người kia ^_^.
Các hàm căn bản của winsock nêu ra không giải thích có bị - điểm không ta ? hic viết đúng 1 tờ giấy
RemoteHost,
RemotePort,
Bind,
SendData,
GetData, Éc nhớ nhầm cái event receivedata roài
WaitForSingleObject(semFull, INFINITE) //Chờ đèn hiệu semFull thay đổi trang thái
printf(...semEmpty...); // in ra màn hình trang thái đèn hiệu semEmpty
printf(...semFull...); // in ra màn hình trang thái đèn hiệu semFull
Thầy ơi ghi ... vậy có bị trừ điểm không ?
Nhưng câu 2 mình wang vài quả lựu đạn nữa vào UDP,TCP :
- Chat Unicode không yêu cầu người chat kết nối và Chat SingleWinsockTCP yêu cầu 2 người chat phải kết nối
Giống nhau bạn thiếu roài kìa :
- Cùng hỗ trợ unicode ^_^.
- Người chat phải biết địa chỉ và port người kia ^_^.
Các hàm căn bản của winsock nêu ra không giải thích có bị - điểm không ta ? hic viết đúng 1 tờ giấy
RemoteHost,
RemotePort,
Bind,
SendData,
GetData, Éc nhớ nhầm cái event receivedata roài
WaitForSingleObject(semFull, INFINITE) //Chờ đèn hiệu semFull thay đổi trang thái
printf(...semEmpty...); // in ra màn hình trang thái đèn hiệu semEmpty
printf(...semFull...); // in ra màn hình trang thái đèn hiệu semFull
Thầy ơi ghi ... vậy có bị trừ điểm không ?
hitmanmx- Tổng số bài gửi : 35
Join date : 07/05/2009
Re: GIẢI BÀI KIỂM TRA GIỮA KỲ !!!!!!!!!!!!!!!!!!!!!!!!!!!!
Chúc mừng bạn đã đạt điểm tối đa trong bài kiểm tra giữa kỳ.
Mình làm có chỗ đúng chỗ sai, hi vọng lần này thầy chấm nương tay.
Mình làm có chỗ đúng chỗ sai, hi vọng lần này thầy chấm nương tay.
thiensuhoabinh- Tổng số bài gửi : 51
Join date : 06/03/2009
Re: GIẢI BÀI KIỂM TRA GIỮA KỲ !!!!!!!!!!!!!!!!!!!!!!!!!!!!
Hix...hix, buồn quá, khi đọc xong câu hỏi 1 là mình nghĩ ngay tới ví dụ "Thầy tới mạng Phương Nam để khắc phục lỗi của trang web khi quá nhiều người truy cập, làm hệ thống mạng bị treo..." vậy mà sau khi làm xong ví dụ rồi lại nhìn thấy dòng " Ví dụ minh họa tạo tập luồng gồm 100 luồng nhà sẳn xuất (dùng Visual C++). Vậy là phải bỏ và làm lại từ đầu nữa chứ. Giờ thì tiếc quá nhưng muộn rồi.
mymy- Tổng số bài gửi : 49
Join date : 11/03/2009
Re: GIẢI BÀI KIỂM TRA GIỮA KỲ !!!!!!!!!!!!!!!!!!!!!!!!!!!!
hic hic, minh` tieu rui`, thieu' va` sai nhieu cho, hichic
tranlamxuanhang_107H1029- Tổng số bài gửi : 25
Join date : 23/03/2009
Re: GIẢI BÀI KIỂM TRA GIỮA KỲ !!!!!!!!!!!!!!!!!!!!!!!!!!!!
Vay thi phai co gang cho lan thi cuoi ky di ban
hitmanmx- Tổng số bài gửi : 35
Join date : 07/05/2009
Similar topics
» Giải bài kiểm tra giữa kỳ
» Giải Đề thi Kiểm tra giữa kỳ (10-11-2011)
» Thi Kiểm tra Giữa kỳ Lần 3
» Kiểm tra giữa kỳ
» Câu hỏi kiểm tra giữa kỳ
» Giải Đề thi Kiểm tra giữa kỳ (10-11-2011)
» Thi Kiểm tra Giữa kỳ Lần 3
» Kiểm tra giữa kỳ
» Câu hỏi kiểm tra giữa kỳ
Trang 1 trong tổng số 1 trang
Permissions in this forum:
Bạn không có quyền trả lời bài viết