Một số lí thuyết và bài tập hdh tham khảo post cả nhà xem !!!
5 posters
Trang 1 trong tổng số 1 trang
Một số lí thuyết và bài tập hdh tham khảo post cả nhà xem !!!
Câu 1.
* Phân tích nguyên lý tập luồng:
- 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.
for (i=0; i<100; i++)
ProducerHandle[i]=CreateThread(0,0, (LPTHREAD_START_ROUTINE)Producer, (void *) i, 0,
&roducerHandleID);
Câu 2.
* 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(semFull, INFINITE);
-> Chờ cho đến khi có vùng trống
printf("SemFull Handle = %d",semfull);
WaitForSingleObject(semFull, INFINITE);
printf("Semempty Handle = %d",semempty);
* Phân tích nguyên lý tập luồng:
- 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.
for (i=0; i<100; i++)
ProducerHandle[i]=CreateThread(0,0, (LPTHREAD_START_ROUTINE)Producer, (void *) i, 0,
&roducerHandleID);
Câu 2.
* 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(semFull, INFINITE);
-> Chờ cho đến khi có vùng trống
printf("SemFull Handle = %d",semfull);
WaitForSingleObject(semFull, INFINITE);
printf("Semempty Handle = %d",semempty);
tranlebaolong- Tổng số bài gửi : 43
Join date : 14/04/2009
Re: Một số lí thuyết và bài tập hdh tham khảo post cả nhà xem !!!
tranlebaolong đã viết:Câu 1.
* Phân tích nguyên lý tập luồng:
- 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.
for (i=0; i<100; i++)
ProducerHandle[i]=CreateThread(0,0, (LPTHREAD_START_ROUTINE)Producer, (void *) i, 0,
&roducerHandleID);
Câu 2.
* 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(semFull, INFINITE);
-> Chờ cho đến khi có vùng trống
printf("SemFull Handle = %d",semfull);
WaitForSingleObject(semFull, INFINITE);
printf("Semempty Handle = %d",semempty);
thanks ban da post bai len!nhug moi nguoi post bai fai dam bao chinh xac de moi nguoi con tham khao!
tamcoi- Tổng số bài gửi : 59
Join date : 04/10/2009
Age : 40
Đến từ : Tây Ninh
Re: Một số lí thuyết và bài tập hdh tham khảo post cả nhà xem !!!
Hinh nhu sai 1 ti:
1- BUFFERSIZE 10, ma noi la so phan tu la 30 --> Sai thu nhat.
2-Khi Tao den hieu co 4 phan tu: 0,Buffer_size, buffer_size,0: Sao ban chua giai thich 2 phan tu 0 la j?
So 0 dau la j?
So 0 sau la ten den hieu- neu = 0 la den hieu ko ten, neu co thi se la "SYNCH" hay ten khac tuy ban.
1- BUFFERSIZE 10, ma noi la so phan tu la 30 --> Sai thu nhat.
2-Khi Tao den hieu co 4 phan tu: 0,Buffer_size, buffer_size,0: Sao ban chua giai thich 2 phan tu 0 la j?
So 0 dau la j?
So 0 sau la ten den hieu- neu = 0 la den hieu ko ten, neu co thi se la "SYNCH" hay ten khac tuy ban.
Re: Một số lí thuyết và bài tập hdh tham khảo post cả nhà xem !!!
Theo mình thì mấy câu code này nên nói rõ hơn một chút:
1. semEmpty=CreateSemaphore(0, BUFFER_SIZE, BUFFER_SIZE, 0);
--> Yêu cầu hdh tạo lập đèn hiệu với giá trị ban đầu và giá trị tối đa bằng 10 ( BUFFER_SIZE). Muc quản của đèn hiệu gửi vào biến semEmpty.
2. semFull=CreateSemaphore(0, 0, BUFFER_SIZE, 0);
--> tạo lập đèn hiệu với giá trị ban đầu =0 và giá trị tối đa bằng 10 ( BUFFER_SIZE). Mục quản của đèn hiệu gửi vào biến semFull.
3. WaitForSingleObject(semFull, INFINITE);
--> Chờ vô hạn (INFINITE) đến khi giá trị của đèn semFull lớn hơn 0.
4.printf("SemFull Handle = %d",semfull);
--> Lênh printf() đưa ra mục quản của đèn hiệu semFull.
Các bạn đọc cho ý kiến nha, để mình hiểu rõ hơn mấy câu code này
1. semEmpty=CreateSemaphore(0, BUFFER_SIZE, BUFFER_SIZE, 0);
--> Yêu cầu hdh tạo lập đèn hiệu với giá trị ban đầu và giá trị tối đa bằng 10 ( BUFFER_SIZE). Muc quản của đèn hiệu gửi vào biến semEmpty.
2. semFull=CreateSemaphore(0, 0, BUFFER_SIZE, 0);
--> tạo lập đèn hiệu với giá trị ban đầu =0 và giá trị tối đa bằng 10 ( BUFFER_SIZE). Mục quản của đèn hiệu gửi vào biến semFull.
3. WaitForSingleObject(semFull, INFINITE);
--> Chờ vô hạn (INFINITE) đến khi giá trị của đèn semFull lớn hơn 0.
4.printf("SemFull Handle = %d",semfull);
--> Lênh printf() đưa ra mục quản của đèn hiệu semFull.
Các bạn đọc cho ý kiến nha, để mình hiểu rõ hơn mấy câu code này
BTMLinh-I83C- Tổng số bài gửi : 3
Join date : 12/10/2009
Age : 38
Re: Một số lí thuyết và bài tập hdh tham khảo post cả nhà xem !!!
Bài tập tương tự:
Giải thích đoạn mã sau:
Code:
#define BUFFER_SIZE 50
HANDLE semEmpty, semFull;
semEmpty=CreateSemaphore(0, BUFFER_SIZE, BUFFER_SIZE, "SemEmpty");
semFull=CreateSemaphore(0, 0, BUFFER_SIZE, "SemFull");
WaitForSingleObject(semEmpty, INFINITE);
printf(“semEmpty Handle=%d”, semEmpty);
WaitForSingleObject(semFull, INFINITE);
printf(“semFull Handle=%d”, semFull);
Trả lời:
1. Khai báo kích thước bộ nhớ đệm bằng 50 (cho bài toán Sản xuất-Tiêu thụ).
2. Khai báo 2 biến semEmpty và semFull dùng chứa mục quản (Handle) của 2 đèn hiệu (Semaphore).
3. Yêu cầu hệ điều hành tạo lập đèn hiệu liên tiến trình tên là SemEmpty với giá trị ban đầu và tối đa bằng 50 (BUFFER_SIZE). Mục quản của đèn hiệu gửi vào biến semEmpty.
4. Yêu cầu hệ điều hành tạo lập đèn hiệu liên tiến trình tên là SemFull với giá trị ban đầu bằng 0 và giá trị tối đa bằng 50 (BUFFER_SIZE). Mục quản của đèn hiệu gửi vào biến semFull.
5. Chờ vô hạn (INFINITE) đến khi giá trị của đèn SemEmpty lớn hơn 0 (hiện bằng 50 nên qua được, sau đó giá trị của SemEmpty còn 49).
6. Lệnh printf() đưa ra Mục quản của đèn hiệu SemEmpty.
7. Lời gọi chờ tại SemFull sẽ chuyển luồng hiện hành sang trạng thái chờ đến khi giá trị của đèn này lớn hơn 0 (hiện bằng 0).
8. Lệnh printf() đưa ra Mục quản của đèn hiệu SemFull, nhưng hiện tại không thực hiện, do luồng hiện hành phải chờ đến khi giá trị của SemFull lớn hơn 0.
Giải thích đoạn mã sau:
Code:
#define BUFFER_SIZE 50
HANDLE semEmpty, semFull;
semEmpty=CreateSemaphore(0, BUFFER_SIZE, BUFFER_SIZE, "SemEmpty");
semFull=CreateSemaphore(0, 0, BUFFER_SIZE, "SemFull");
WaitForSingleObject(semEmpty, INFINITE);
printf(“semEmpty Handle=%d”, semEmpty);
WaitForSingleObject(semFull, INFINITE);
printf(“semFull Handle=%d”, semFull);
Trả lời:
1. Khai báo kích thước bộ nhớ đệm bằng 50 (cho bài toán Sản xuất-Tiêu thụ).
2. Khai báo 2 biến semEmpty và semFull dùng chứa mục quản (Handle) của 2 đèn hiệu (Semaphore).
3. Yêu cầu hệ điều hành tạo lập đèn hiệu liên tiến trình tên là SemEmpty với giá trị ban đầu và tối đa bằng 50 (BUFFER_SIZE). Mục quản của đèn hiệu gửi vào biến semEmpty.
4. Yêu cầu hệ điều hành tạo lập đèn hiệu liên tiến trình tên là SemFull với giá trị ban đầu bằng 0 và giá trị tối đa bằng 50 (BUFFER_SIZE). Mục quản của đèn hiệu gửi vào biến semFull.
5. Chờ vô hạn (INFINITE) đến khi giá trị của đèn SemEmpty lớn hơn 0 (hiện bằng 50 nên qua được, sau đó giá trị của SemEmpty còn 49).
6. Lệnh printf() đưa ra Mục quản của đèn hiệu SemEmpty.
7. Lời gọi chờ tại SemFull sẽ chuyển luồng hiện hành sang trạng thái chờ đến khi giá trị của đèn này lớn hơn 0 (hiện bằng 0).
8. Lệnh printf() đưa ra Mục quản của đèn hiệu SemFull, nhưng hiện tại không thực hiện, do luồng hiện hành phải chờ đến khi giá trị của SemFull lớn hơn 0.
thanchon- Tổng số bài gửi : 15
Join date : 17/05/2009
Similar topics
» Phát biểu bài toán Sản xuất-Tiêu thụ với thuật giải dùng kỹ thuật Busy-Waiting.
» Thảo luận Bài 4
» Ví Dụ về Đa Luồng và Đa Tiến Trình!! Vừa mới nghĩ ra post lên cho mọi người tham khảo! Nhớ Cho Ý Kiến.!thanks
» Thảo luận Bài 7
» Thảo luận Bài 5
» Thảo luận Bài 4
» Ví Dụ về Đa Luồng và Đa Tiến Trình!! Vừa mới nghĩ ra post lên cho mọi người tham khảo! Nhớ Cho Ý Kiến.!thanks
» Thảo luận Bài 7
» Thảo luận Bài 5
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