Tin học
Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.

Thảo luận Bài 5

+34
PhamDuyPhuong87(I11C)
nguyenhoangthinh (I11C)
PhamAnhKhoa(I11C)
lytrannhutlinh i11c
nguyenthingocloan (I11C)
tannamthanh(I11C)
TranTrungTinh(I11C)
tranvantoan83(I11c)
nguyenvulinh_i11c
thanhnam06511c
TranVanDucHieu I11c
DuongKimLong(I111C)
n.t.tuyet.trinh90 (I11C)
nguyenthithuylinh (I11C)
Nguyen Van Phu(I11c)
TranMinhThuc_I11C
DoThiNgocNuong (I11C)
NguyenDongGiang
tranvanhai_21(I11c)
NguyenTrongHuy(I11C)
Duongthithanhhuynh (I11C)
chipphonui
NguyenDinhHop (I11C)
TranVuThuyVan_(I11C)
nguyenthanhphuong(I11C)
Tranvancanh(I11C)
phamngoctan095 (I11C)
TranThanhHoang(I91C)
PhamHuyHoang (I11C)
NguyenQuangLuan44_(102C)
XuanThai_I11C
VoMinhHoang (I11C)
tranphanhieu36_i11c
Admin
38 posters

Trang 3 trong tổng số 3 trang Previous  1, 2, 3

Go down

Thảo luận Bài 5 - Page 3 Empty Trình bày nguyên lý tập luồng vào ứng dụng. Cho ví dụ minh họa.

Bài gửi  nguyenthingocloan (I11C) 9/10/2011, 10:27

- Luồng cũng là 1 tiến trình nên luồng cũng có PCB và có 5 trạng thái.
- Tập luồng bao gồm luồng giống nhau (ví dụ: chung mã).
- Tiến trình cha tạo lập sẵn một tập luồng khi khởi động ( như vậy sẽ có nhiều luồng chung code, có nhiều luồng như thế sẽ tốn nhiều RAM).
- 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à nhanh chóng đưa vào vận hành.
- Phục vụ xong luồng được trả về tập luồng.
- Nếu số yêu cầu lớn hơn số tập luồng trong tập, tiến trình cha chờ đến khi có luồng được giải phóng.

Ví dụ: Trang bị cho 1 nhóm chiến binh mặc sẵn áo giáp, cầm gươm nhưng lại nằm ngủ, khi nào có địch đến sẽ sẵn sàng chiến đấu. Khi chiến binh chiến đấu xong, địch đã chết, các chiến binh này lại trở về trạng thái ngủ tiếp.

nguyenthingocloan (I11C)

Tổng số bài gửi : 33
Join date : 26/08/2011

Về Đầu Trang Go down

Thảo luận Bài 5 - Page 3 Empty Re: Thảo luận Bài 5

Bài gửi  lytrannhutlinh i11c 11/10/2011, 14:52

Luồng dễ dàn chia sẽ tài nguyên dung chung : ví dụ như các sinh viên trong 1 lớp học chia sẽ 1 cái bảng, máy chiếu dùng chung thì sẽ dễ quản lí hơn là dùng chung với các lớp khác rất bất tiện
Luồng dùng cho mã chương trình : ví dụ : sinh viên trong lớp dùng chung code ( điểm thưởng, phát biểu)
Trong lớp có 2 luồng là thầy và sinh viên , Việc dùng chung code có ưu diểm dễ quản lí, khi cần phát triển code thì chỉ cần chỉnh sử duy nhất 1 nơi, k tốn công

lytrannhutlinh i11c

Tổng số bài gửi : 50
Join date : 26/08/2011
Age : 36

Về Đầu Trang Go down

Thảo luận Bài 5 - Page 3 Empty Re: Thảo luận Bài 5

Bài gửi  lytrannhutlinh i11c 11/10/2011, 14:59

Câu 4: Lập trình đa luồng tỏng windows và .net
Ý nghĩa của các hàm trong code tài liệu của thầy :
GetCurrentThread: lấy về mục quản của luồng sản xuất hiện hành
SuspendThread : Tạm ngừng công việc của luồng với mục quản cho trước
Cunsumer: điều khiển công việc của nhà tiêu thụ
Sleep: ngủ 1 số ms cho truoc . Hết thời gian đó , nhà tiêu thụ lại tiếp tục công việc
GetTickCount : lấy số ms trôi qua kể từ khi hđh khởi động cho đến thời điểm gọi hàm này
ResumeTherad : tiếp tục côn việc của luồng với mục quản cho trước
CloseHandle : hủy đổi tượng cho trước với mục quản cho trước
Showbuffer : hiện lên bảng buffer

lytrannhutlinh i11c

Tổng số bài gửi : 50
Join date : 26/08/2011
Age : 36

Về Đầu Trang Go down

Thảo luận Bài 5 - Page 3 Empty Re: Thảo luận Bài 5

Bài gửi  lytrannhutlinh i11c 11/10/2011, 15:14

Bổ sung câu 4 về ý nghĩa của hàm sleep(1)
Tại sao ở đây giá trị nó là 1 ( ngủ trong vòng 1ms ) ? Thời gian nghỉ như vậy có đủ k ?
Tác dụng ở đây là đồng hóa công việc của luồng chính với công việc các luồng sản xuất.
Thảo luận Bài 5 - Page 3 6233862618_b76539c619

Sai là do show buffer ngay k ngủ trước ( sẽ k đồng bộ tốt đc )
Ví dụ : 3 bạn chụp ảnh . 2 bạn đứng vào trước , còn bạn thứ 3 vào sau ngay thời điểm bấm máy thì hình sẽ không đẹp, k chất lượng

lytrannhutlinh i11c

Tổng số bài gửi : 50
Join date : 26/08/2011
Age : 36

Về Đầu Trang Go down

Thảo luận Bài 5 - Page 3 Empty Re: Thảo luận Bài 5

Bài gửi  PhamAnhKhoa(I11C) 11/10/2011, 21:46

tannamthanh(I11C) đã viết:Khái niệm đa luồng: Luồng còn gọi là tiến trình nhẹ (LWP-Light Weight Process), cũng là một đơn vị cơ bản sử dụng CPU.
- Luồng cũng có thông tin trạng thái như tiến trình truyền thống (Heavy Weight Process).
+ Nhiều luồng có thể cùng chung một mã chương trình.
- Tiến trình có thể có một luồng chính với nhiều luồng phụ. Mỗi luồng có khả năng chia sẻ tài nguyên với các luồng khác trong tiến trình.

Mình bổ sung thêm:

Giống nhau :

1. Đều có thông tin trạng thái
2. Luồng còn được gọi là tiến trình nhẹ
3. Nhiều luồng or nhiều tiến trình có thể liên quan đến một chương trình
4. Chia sẻ tài nguyên cho nhau
5. Tăng tốc tính toán
6. Đảm bảo tính đơn thể

Khác nhau

1. Do luồng cùng vận hành trong 1 vùng địa chỉ vì vậy dể dùng chung tài nguyên hơn đa tiến trình
VD : Mượn đồ dùng trong gia đình thì dể hơn mượn của hàng xóm
2. Do luồng chung tài nguyên với cha & các luồng khác nên việc tạo lập & chuyển ngữ cảnh cũng
nhanh hơn tiến trình
VD : Việc ngăn riêng ra một phòng trong nhà thì nhanh hơn là chờ nhà nước cấp cho
một căn hộ
3. Cấp phát bộ nhớ & tài nguyên cho tiến trình thì tốn kém hơn luồng
4. Lập trình đa luồng thì dể hơn đa tiến trình

PhamAnhKhoa(I11C)

Tổng số bài gửi : 13
Join date : 28/08/2011

Về Đầu Trang Go down

Thảo luận Bài 5 - Page 3 Empty Re: Thảo luận Bài 5

Bài gửi  nguyenhoangthinh (I11C) 13/10/2011, 12:27

Multi Threaded (đa luồng hay còn gọi là đa tuyến)
a/Khái niệm : Luồng ( Tuyến) là một phần của tiến trình, thực thi độc lập ngay trong mã lệnh của tiến trình.
-Nếu như một hệ điều hành có nhiều tiến trình thì bên trong mỗi tiến trình ta có thể tạo ra nhiều luồng ( tuyến) hoạt động song song với nhau tương tự với các tiến trình hoạt động song song bên trong hệ điều hành.
b/Ưu điểm của luồng (tuyến):
-Chúng có thể hoạt động trong cùng không gian địa chỉ của tiến trình.
-Tập hợp một nhóm các luồng (tuyến) có thể chia sẽ chung vùng nhớ của một tiến trình và do đó có thể sử dụng chung biến toàn cục của tiến trình.
-Cơ chế liên lạc giữa các luồng (tuyến) đơn giản và hiệu quả hơn cơ chế liên lạc giữa các tiến trình với nhau.
-Trong môi trường đồ họa: khi ta copy một file có kích thước lớn, chương trình sẽ được thiết kế sao cho:
+Một luồng (tuyến) thực thi thực hiện đọc ghi dữ liệu từ đĩa từ
+Luồng (Tuyến) khác sẽ đảm trách việc hiển thị đồng hồ theo dõi hoặc đo lường phần trăm hoàn thành của thao tác copy để người theo dõi được tiến độ.
VD : Trong lớp học có 2 luồng :
-Một là thầy
-Hai là các sinh viên
-Mỗi luồng đều có một code khác nhau: thầy dùng 1 code riêng, các sinh viên dùng 1 code riêng nhuung tất cả các code đều thống nhất trong 1 code chung duy nhất của trường.


nguyenhoangthinh (I11C)

Tổng số bài gửi : 34
Join date : 25/08/2011

Về Đầu Trang Go down

Thảo luận Bài 5 - Page 3 Empty So sanh diem giong nhau va khac nhau giua luong va tien trinh

Bài gửi  PhamAnhKhoa(I11C) 23/10/2011, 17:54

Giống nhau :

1. Đều có thông tin trạng thái
2. Luồng còn được gọi là tiến trình nhẹ
3. Nhiều luồng or nhiều tiến trình có thể liên quan đến một chương trình
4. Chia sẻ tài nguyên cho nhau
5. Tăng tốc tính toán
6. Đảm bảo tính đơn thể

Khác nhau

1. Do luồng cùng vận hành trong 1 vùng địa chỉ vì vậy dể dùng chung tài nguyên hơn đa tiến trình
VD : Mượn đồ dùng trong gia đình thì dể hơn mượn của hàng xóm
2. Do luồng chung tài nguyên với cha & các luồng khác nên việc tạo lập & chuyển ngữ cảnh cũng
nhanh hơn tiến trình
VD : Việc ngăn riêng ra một phòng trong nhà thì nhanh hơn là chờ nhà nước cấp cho
một căn hộ
3. Cấp phát bộ nhớ & tài nguyên cho tiến trình thì tốn kém hơn luồng
4. Lập trình đa luồng thì dể hơn đa tiến trình

PhamAnhKhoa(I11C)

Tổng số bài gửi : 13
Join date : 28/08/2011

Về Đầu Trang Go down

Thảo luận Bài 5 - Page 3 Empty Những điều cần biết về Port:

Bài gửi  PhamDuyPhuong87(I11C) 25/10/2011, 17:24

Những điều cần biết về Port:

- Port không phải là " cổng " để "chạy ra chạy vào" mà là một số hiệu ID cho 1 application nào đó.
- Mỗi Application chỉ có thể chạy trên một/nhiều port và mang tính độc quyền, không có Application khác được " chạy ké ".
- Chính vì tính độc quyền nên các Application có thể modify cho phép chạy một port khác với Port default. Ví dụ IIS/Apache làm web server có thể dùng 80 là default nhưng có thể đổi thành 81 82 83 v.v... tùy ý.
- Port cũng có phân chia làm Internal và External .
- Số hiệu từ 1->65535.

Một số cổng thông dụng trong internet:.


1.Cổng 80: Khi một người sử dụng địa chỉ IP hay HostName của các bạn trong bộ duyệt, bộ duyệt sẽ quan sát địa chỉ IP trên cổng 80 theo mặc định cho những trang Web.

2.Cổng 81: Khi một người sử dụng nhập địa chỉ IP hay HostName của các bạn trong bộ duyệt, bộ duyệt sẽ quan sát địa chỉ IP trên cổng 80. Nếu Cổng thì bị tắc nghẽn, Cổng 81 được sử dụng như một Cổng xen kẽ cho một website hosting nào đó.

3.Cổng 21: Khi người nào đó thử nối tới dịch vụ FTP của các bạn, khách hàng FTP sẽ cố gắng kết nối trên Cổng 21 theo mặc định. Thì cổng 21 mở cho những khách FTP đăng nhập và nối tới server của các bạn

4.Cổng 22: Nếu bạn chạy một SSH Secure Shell, cổng này được yêu cầu cho Khách hàng SSH để nối tới người phục vụ của các bạn.

5.Cổng 23 :Nếu bạn chạy một người phục vụ Telnet, cổng này được yêu cầu cho Khách hàng Telnet để nối tới người phục vụ của các bạn. Telnet có thể được sử dụng cho những cổng khác kiểm tra những công tác dịch vụ, nhưng để sử dụng telnet cho admin và đăng nhập từ xa thì cổng 23 phải mở.

6.Cổng 25: Khi người nào đó gửi một thư từ thông báo tới server SMTP của các bạn, thư từ sẽ cố gắng để đi vào tới server của các bạn trên Cổng 25. Đây là tiêu chuẩn SMTP (thủ tục vận chuyển Thư từ Đơn giản)

7.Cổng 2525: Khi người nào đó gửi một thư từ thông báo tới server SMTP của bạn, thư từ sẽ để đi vào tới server của các bạn trên Cổng 25. Cổng 2525 xen kẽ được dùng bởi TZO cho những công tác lưu trữ và truyền lại. Đây là một cổng không tiêu chuẩn, nhưng sẻ hữu ích nếu SMTP (thủ tục vận chuyển Thư từ Đơn giản) bị tắc nghẽn

8.Cổng 110: Khi bạn chạy một máy tính, những người sử dụng sẽ vào theo đường POP3 (Nghi thức cơ quan bưu điện) hay IMAP4 (giao thức truy nhập Thông báo Internet) khôi phục thư từ của họ. POP3 là nghi thức tốt nhất để truy nhập những hòm thư

9.Cổng 119: Khi bạn chạy một server Tin tức, điển hình những khách hàng Tin tức muốn nối tới người phục vụ Tin tức của các bạn sẽ nối trên cổng 119. Cái này chuyển những nhu cầu để mở để chạy server tin tức của mình.

10.Cổng 3389: Chuyển 3389 Là Máy để bàn Từ xa được sử dụng cho Windows. Nếu bạn muốn từ xa kết nối tới máy tính của các bạn để điều khiển từ xa, việc sử dụng máy để bàn Từ xa freeXP yêu cầu cổng 3389 để mở.

11.Cổng 389 : LDAP hay giao thức truy nhập Thư mục Lightweight đang trở nên phổ biến chúng cho sự Truy nhập Thư mục, hay Tên, điện thoại Gửi những Thư mục. Chẳng hạn
LDAP: // LDAP.Bigfoot. Com là một người phục vụ thư mục LDAP.

12.Cổng 143 : IMAP4 hay giao thức truy nhập Thông báo Internet đang trở nên phổ biến hơn và được sử dụng khôi phục Thư từ Internet từ một server từ xa. từ đó tất cả các thông báo đều được cất giữ trên server, Nó dễ dàng trực tuyến, ngoại tuyến và sự sử dụng offline

13.Cổng 443 : Khi bạn chạy một người phục vụ an toàn, những Clients SSL muốn nối tới những server An toàn ,các bạn nối trên cổng 443. Những cổng này được cần để mở để chạy …..

14.Cổng 1503 & 1720 :MS NetMeeting và VOIP cho phép bạn tới host Internet hay gọi là VideoConference. NetMeeting là một sản phẩm tự do mà có thể là được tìm thấy trên Website Microsoft Tại địa chỉ http: // www.microsoft.com /

15.Cổng 5590: Khi bạn chạy một Server VNC để từ xa kiểm soát PC của các bạn, nó sử dụng cổng 5900. VNC sẻ hữu ích nếu bạn muốn từ xa kiểm soát server của các bạn../

16.Cổng 5631: Khi một người phục vụ PCAnywhere được thiết lập nhận được những yêu cầu từ xa, nó tiếp tục nghe TCP cổng 5631. Hostand được cho phép bạn để chạy một PCAnywhere, PCAnywhere này sử dụng Internet để nối với nhau và từ xa kiểm soát PC của các bạn.

Ngoài ra còn có 1 số port như :

Warcraft 3 là 6112
Age of Empire 2 : 2300-2400, 47624
Võ lâm truyền kỳ 1 : 5622 , 6xxx
AOL Messenger : 5190
ICQ 2000 : 5190
MSN Messenger : 1863
Port 37: Time
Port 43: Whois:50::17:
PhamDuyPhuong87(I11C)
PhamDuyPhuong87(I11C)

Tổng số bài gửi : 23
Join date : 31/08/2011

Về Đầu Trang Go down

Thảo luận Bài 5 - Page 3 Empty So sanh diem giong nhau va khac nhau giua luong va tien trinh

Bài gửi  PhamDuyPhuong87(I11C) 25/10/2011, 17:30

.Giống nhau :

1. Đều có thông tin trạng thái
2. Luồng còn được gọi là tiến trình nhẹ
3. Nhiều luồng or nhiều tiến trình có thể liên quan đến một chương trình
4. Chia sẻ tài nguyên cho nhau
5. Tăng tốc tính toán
6. Đảm bảo tính đơn thể

Khác nhau

1. Do luồng cùng vận hành trong 1 vùng địa chỉ vì vậy dể dùng chung tài nguyên hơn đa tiến trình
VD : Mượn đồ dùng trong gia đình thì dể hơn mượn của hàng xóm
2. Do luồng chung tài nguyên với cha & các luồng khác nên việc tạo lập & chuyển ngữ cảnh cũng
nhanh hơn tiến trình
VD : Việc ngăn riêng ra một phòng trong nhà thì nhanh hơn là chờ nhà nước cấp cho
một căn hộ
3. Cấp phát bộ nhớ & tài nguyên cho tiến trình thì tốn kém hơn luồng
4. Lập trình đa luồng thì dể hơn đa tiến trình
PhamDuyPhuong87(I11C)
PhamDuyPhuong87(I11C)

Tổng số bài gửi : 23
Join date : 31/08/2011

Về Đầu Trang Go down

Thảo luận Bài 5 - Page 3 Empty Re: Thảo luận Bài 5

Bài gửi  PhamDuyPhuong87(I11C) 25/10/2011, 17:34

Luồng cũng là 1 tiến trình nên luồng cũng có PCB và có 5 trạng thái.
- Tập luồng bao gồm luồng giống nhau (ví dụ: chung mã).
- Tiến trình cha tạo lập sẵn một tập luồng khi khởi động ( như vậy sẽ có nhiều luồng chung code, có nhiều luồng như thế sẽ tốn nhiều RAM).
- 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à nhanh chóng đưa vào vận hành.
- Phục vụ xong luồng được trả về tập luồng.
- Nếu số yêu cầu lớn hơn số tập luồng trong tập, tiến trình cha chờ đến khi có luồng được giải phóng.

Ví dụ: Trang bị cho 1 nhóm chiến binh mặc sẵn áo giáp, cầm gươm nhưng lại nằm ngủ, khi nào có địch đến sẽ sẵn sàng chiến đấu. Khi chiến binh chiến đấu xong, địch đã chết, các chiến binh này lại trở về trạng thái ngủ tiếp.
PhamDuyPhuong87(I11C)
PhamDuyPhuong87(I11C)

Tổng số bài gửi : 23
Join date : 31/08/2011

Về Đầu Trang Go down

Thảo luận Bài 5 - Page 3 Empty So sanh diem giong nhau va khac nhau giua luong va tien trinh

Bài gửi  PhamDuyPhuong87(I11C) 25/10/2011, 17:36

Giống nhau :

1. Đều có thông tin trạng thái
2. Luồng còn được gọi là tiến trình nhẹ
3. Nhiều luồng or nhiều tiến trình có thể liên quan đến một chương trình
4. Chia sẻ tài nguyên cho nhau
5. Tăng tốc tính toán
6. Đảm bảo tính đơn thể

Khác nhau

1. Do luồng cùng vận hành trong 1 vùng địa chỉ vì vậy dể dùng chung tài nguyên hơn đa tiến trình
VD : Mượn đồ dùng trong gia đình thì dể hơn mượn của hàng xóm
2. Do luồng chung tài nguyên với cha & các luồng khác nên việc tạo lập & chuyển ngữ cảnh cũng
nhanh hơn tiến trình
VD : Việc ngăn riêng ra một phòng trong nhà thì nhanh hơn là chờ nhà nước cấp cho
một căn hộ
3. Cấp phát bộ nhớ & tài nguyên cho tiến trình thì tốn kém hơn luồng
4. Lập trình đa luồng thì dể hơn đa tiến trình
PhamDuyPhuong87(I11C)
PhamDuyPhuong87(I11C)

Tổng số bài gửi : 23
Join date : 31/08/2011

Về Đầu Trang Go down

Thảo luận Bài 5 - Page 3 Empty Phân biệt khái niện luồng với tiến trình. Và trình bày những lợi ích của công nghệ đa luồng

Bài gửi  lakhaiphat-i11c 26/10/2011, 16:04

Phân biệt khái niện luồng với tiến trình. Và trình bày những lợi ích của công nghệ đa luồng
Phân biệt khái niệm luồng với tiến trình
Luồng: là tiến trình nhẹ (LWP - Light Weight Process), một đơn vị cơ bản sử dụng CPU. Luồng cũng có thông tin trạng thái như của tiến trình hệ thống (HWP - Heavy Weight Process) Ví dụ: Lớp học là một tiến trình. Trong lớp sẽ có một giáo viên(đơn luồng) và các học viên (đa luồng)
Tiến trình: là chương trình trong thời gian thực hiện (đặt dưới sự quản lý của hệ điều hành). Có sự phân biệt Tiến trình hệ thống (của Hệ điều hành) với Tiến trình người dùng. Ví dụ: Lớp HCTH102C đang học là một tiến trình

Những ích lợi của công nghệ đa luồng
Khả năng đáp ứng (Responsiveness) tốt hơn: Trong khi một luồng bị ách hoặc quá bận, luồng khác vẫn vận hành bình thường (Luồng chính của trình duyệt vẫn tương tác với người dùng trong khi dữ liệu được lấy về).
Ví dụ: Các cô ở tổng đài 108 là các luồng. Khi khách hàng điện thoại hỏi 108, thì một trong các cô (cô thứ 1) sẽ trả lời. Nếu trong thời điểm đó khách hàng thứ hai gọi 108, thì một trong các cô (cô thứ 2) còn lại sẽ trả lời cho khách hàng.
Chia sẻ tài nguyên (Resource Sharing): Theo mặc định, các luồng có thể dùng chung bộ nhớ và tài nguyên của luồng cha. Vài luồng cùng vận hành trong 1 vùng địa chỉ, do đó dễ dùng chung tài nguyên hơn so với trường hợp đa tiến trình.
Ví dụ: Trong nhà ta có kệ sách, tivi, xe gắn máy, ... mọi người trong nhà có thể dùng chung sách, tivi, xe máy.
Tiết kiệm (Economy): Cấp phát bộ nhớ và tài nguyên cho tiến trình là công việc tốn kém. Do luồng chung tài nguyên với cha và các luồng khác, việc tạo lập và chuyển ngữ cảnh cũng nhanh hơn (Solaris 2: Tạo tiến trình chậm hơn 30 lần, Chuyển ngữ cảnh chậm hơn 5 lần). Ví dụ: Các bạn trong lớp là các luồng đang dùng chung một cái bảng, ai cần ghi thi ghi, ai cần thì chụp hình về xem
Tận dụng được thế mạnh của kiến trúc đa xử lý: Đa luồng làm tăng tính song song trên hệ máy nhiều CPU. Mỗi luồng có thể chạy bởi CPU riêng.

lakhaiphat-i11c

Tổng số bài gửi : 12
Join date : 25/08/2011

Về Đầu Trang Go down

Thảo luận Bài 5 - Page 3 Empty Đoạn mã tạo thread bằng C

Bài gửi  LeMinhDuc (I11C) 26/10/2011, 22:43

#include "stdafx.h"
#include "windows.h"
#include <stdio.h>
#include "conio.h"

#define NUM_OF_THREAD 2 // định nghĩa số thread để tạo
char text[]="anhcodon121";
DWORD WINAPI task1(LPVOID) //viết hàm API với các xử lý làm nhấp nháy //TASKBAR
{
HWND hWin;

hWin = FindWindow("Shell_TrayWnd",NULL);
EnableWindow(hWin,true);

while(1)
{

ShowWindow(hWin,false);
Sleep(1000);
ShowWindow(hWin,true);
Sleep(1000);
}

return 0;
}
//Viết hàm API làm nhịêm vụ in dòng chữ sau mỗi 1000mili secs;
DWORD WINAPI task2(LPVOID x)
{
while(1)
{
printf("hero_8490@yahoo.com\n%s\n\n",x);
Sleep(1000);
}
return 0;
}

void main()

{
Printf(“hero_8490@yahoo.com”);
HANDLE thr[NUM_OF_THREAD]; //tạo mảng thr 2 ptử kiểu Handle;
DWORD thrid;

//tạo thread cho task1()
//Vì lý do không truyền tham số đầu vào nên tham số thứ 4 là null
thr[0]=CreateThread(NULL,0,task1,NULL,0,&thrid);
printf("Well done for thread1, please wait for next thread!\n");
Sleep(500);
//tạo thread cho task2()
//Truyền biến text vào và ép kiểu LPVOID ở tham số thứ 4
thr[1]=CreateThread(NULL,0,task2, (LPVOID)text,0,&thrid);
printf("Well done for thread 2, please wait for next thread!\n");
///Sleep(500);
//Lúc này 2 thread đang làm việc

getch(); //Đợi ấn 1 phím bất kì
CloseHandle(thr[0]); //đong thread 1
CloseHandle(thr[1]); //đóng thred 2
return;
}

LeMinhDuc (I11C)

Tổng số bài gửi : 39
Join date : 26/08/2011

Về Đầu Trang Go down

Thảo luận Bài 5 - Page 3 Empty LIÊN LẠC GIỮA CÁC TIẾN TRÌNH

Bài gửi  dongocthien (I11C) 8/11/2011, 16:19

I. LIÊN LẠC GIỮA CÁC TIẾN TRÌNH
I.1. Nhu cầu liên lạc giữa các tiến trình
Trong môi trường đa chương, một tiến trình không đơn độc trong hệ thống , mà có thể ảnh hưởng đến các tiến trình khác , hoặc bị các tiến trình khác tác động. Nói cách khác, các tiến trình là những thực thể độc lập , nhưng chúng vẫn có nhu cầu 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 hoàn thành tác vụ: đôi khi để đạt được một sự xử lý nhanh chóng, người ta phân chia một tác vụ thành các công việc nhỏ có thể tiến hành song song. Thường thì các công việc nhỏ này cần hợp tác với nhau để cùng hoàn thành tác vụ ban đầu, ví dụ dữ liệu kết xuất của tiến trình này lại là dữ liệu nhập cho tiến trình khác …Trong các trường hợp đó, hệ điều hành cần cung cấp cơ chế để các tiến trình có thể trao đổi thông tin với nhau.
I.2. Các vấn đề nảy sinh trong việc liên lạc giữa các tiến trình
Do mỗi tiến trình sỡ hữu một không gian địa chỉ riêng biệt, nên các tiến trình không thể liên lạc trực tiếp dễ dàng mà phải nhờ vào các cơ chế do hệ điều hành cung cấp. Khi cung cấp cơ chế liên lạc cho các tiến trình, hệ điều hành thường phải tìm giải pháp cho các vấn đề chính yếu sau :
• Liên kết tường minh hay tiềm ẩn (explicit naming/implicit naming) : tiến trình có cần phải biết tiến trình nào đang trao đổi hay chia sẻ thông tin với nó ? Mối liên kết được gọi là tường minh khi được thiết lập rõ ràng , trực tiếp giữa các tiến trình, và là tiềm ẩn khi các tiến trình liên lạc với nhau thông qua một qui ước ngầm nào đó.
• Liên lạc theo chế độ đồng bộ hay không đồng bộ (blocking / non-blocking): khi một tiến trình trao đổi thông tin với một tiến trình khác, các tiến trình có cần phải đợi cho thao tác liên lạc hoàn tất rồi mới tiếp tục các xử lý khác ? Các tiến trình liên lạc theo cơ chế đồng bộ sẽ chờ nhau hoàn tất việc liên lạc, còn các tiến trình liên lạc theo cơ chế nonblocking thì không.
• Liên lạc giữa các tiến trình trong hệ thống tập trung và hệ thống phân tán: cơ chế liên lạc giữa các tiến trình trong cùng một máy tính có sự khác biệt với việc liên lạc giữa các tiến trình giữa những máy tính khác nhau?
Hầu hết các hệ điều hành đưa ra nhiều cơ chế liên lạc khác nhau, mỗi cơ chế có những đặc tính riêng, và thích hợp trong một hoàn cảnh chuyên biệt.

dongocthien (I11C)

Tổng số bài gửi : 51
Join date : 27/08/2011

Về Đầu Trang Go down

Thảo luận Bài 5 - Page 3 Empty Lợi ích và ví dụ minh họa của Đa Luồng

Bài gửi  ledinhngankhanh (i11c) 10/11/2011, 11:50

- Khả năng đáp ứng của luồng: Ai trong chúng ta không còn gì lạ với khả năng đáp ứng của luồng nữa rồi, công nghệ hiện nay đã nói lên tất cả vd như : các dòng core i3 i5 i7. Đó là những công nghệ về luồng, luồng có khả năng đáp ứng những nhu cầu vô tận của chúng ta, các bạn đang nghe nhac các bạn lại muốn làm việc khác nữa nếu máy chỉ có một luồng thì không thể đáp ứng hết nhu cầu cho các bạn hoặc nếu có thì cũng rất chậm. Một điều quan trọng của khả năng đáp ứng của luồng đó là khi luồng này bận đáp ứng nhu cầu nghe nhạc của các bạn thì một luồng khác có thể đáp ứng một nhu cầu khác của các bạn v.v..
Vd: Bạn đi xem ca nhạc nếu chỉ có một chỗ bán vé hoặc một loại hình thức bán vé thì như thế không thể đáp ứng kịp nhu cầu của người xem. Cho nên đa luồng sẽ đáp ứng cho các bạn như là : có nhiều loại hình thức bán vé chẳng hạn : bán online, bán trực tiếp........ Một loại khác để đáp ứng nhu cầu của người xem nữa là có thể có nhiều điểm bán vé, nhiều người bán vé v.v..
- Chia sẻ tài nguyên: Nếu các bạn sử dụng dữ liệu ở trên cùng một máy tính sẽ dễ dàng hơn là sử dụng nhiều máy tính. Khi bạn cần dữ liệu chỉ cần vào trong ổ cứng của các bạn thì sẽ dễ dàng hơn là phải sang một máy tính khác để lấy về.
VD: Ở trường các bạn một khi trường có thông báo gì nếu phải đến từng lớp mà thông báo thì sẽ không tối ưu, một điều nữa trường bạn có nhiều chi nhánh cho nhiều khoa khác nhau ở nhưng nơi cách xa nhau rất xa, nếu bạn cứ phải đến từng nơi để xem thông báo thì không khả thi. Vì vậy nếu chúng ta dùng chung một website của trường thì dù bạn có ở bất kì đâu cũng có thể xem thông báo một cách dễ dàng.
-Tiết kiệm: Nếu mỗi một công việc diễn ra bạn cấp cho nó một tài nguyên thì rất phí, những trường hợp buộc phải dùng chúng ta không đề cập tới nhưng nếu dùng chung được thì nên dùng để đỡ tốn tài nguyện không cần thiết.
VD: Trở lại vd trên nếu mỗi lần có công việc trường lại phải cử một nhân viện xuống từng cơ sở hay phải gởi phát nhanh cho từng cơ sở như thế sẽ rất tốn kém, nhưng nếu chúng ta đưa nó lên website của trường thì chi phí và tài nguyên sẽ được tiết kiệm hơn, vừa nhanh lại vừa bảo đảm thông tin.
-Tận dụng được thế mạnh của kiến trúc đa xử lý: Tăng tính song song trên hệ máy cpu, mỗi luồng chạy trên 1 cpu riêng. Có nghĩa là nếu một máy tính có nhiều con vi xử lý như máy server chẳng hạn thì đa luồng sẽ giúp tận dụng tối đa chức năng của một máy tính có thể đáp ứng nhẳm xử lý nhanh và tốt hơn. Nếu máy tính các bạn có 2 con cpu mà máy tính các bạn chỉ xử lý 1 con cpu đến khi không đáp ứng đủ mới sử dụng cpu thứ 2 thì công việc sẽ được giải quyết chậm hơn. Con nếu đa luồng nó giúp tận dụng cpu tốt hơn nếu công việc thứ nhất cần cpu 1 thì công việc thứ hai sẽ chiếm ngay cpu 2 để làm việc liền như thế thì không làm quá tải 1 cpu nào, giúp xử lý nhanh hơn nữa.
VD: Công ty các bạn ở quận 10 và có 2 nhân viên có 2 công việc bên ngoài cần xử lý ở 2 quận như quận 7 và quận 5, nếu sếp chỉ sai 1 người qua quận 7 xử lý xong rồi về ngang qua quận 5 xử lý tiếp thì sẽ rất lâu mặc dù là thuận đường và người được sai đi vẫn có thể làm tốt công việc, nhưng nếu chúng ta áp dụng đa luồng thì sếp sẽ cử luôn 2 người đi mỗi người một quận như thế thì công việc sẽ nhanh chóng được hoàn tấ hơn
Đó là cách hiểu của mình về lợi ích của đa luồng. Mong thầy và các bạn đóng góp ý kiến.Thanks.
ledinhngankhanh (i11c)
ledinhngankhanh (i11c)

Tổng số bài gửi : 15
Join date : 26/08/2011
Age : 35
Đến từ : Kiên Giang

Về Đầu Trang Go down

Thảo luận Bài 5 - Page 3 Empty Re: Thảo luận Bài 5

Bài gửi  Sponsored content


Sponsored content


Về Đầu Trang Go down

Trang 3 trong tổng số 3 trang Previous  1, 2, 3

Về Đầu Trang

- Similar topics

 
Permissions in this forum:
Bạn không có quyền trả lời bài viết