Thảo luận Bài 5

Trang 6 trong tổng số 8 trang Previous  1, 2, 3, 4, 5, 6, 7, 8  Next

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down

Luồng và so sánh với tiến trình truyền thông

Bài gửi  DuongTrungQuan on 28/3/2013, 10:02

Một tiến trình truyền thống (hay tiến trình nặng) có một luồng điều khiển đơn. Nếu tiến trình có nhiều luồng điều khiển, nó có thể thực hiện nhiều hơn một tác vụ tại một thời điểm.
Sự giống nhau:
- Đều có thông tin trạng thái
- Luồng cũng là tiến trình nhưng là tiến trình nhẹ (Light Weigh Process)
- Đa luồng hay đa tiến trình có thể liên quan đến một chương trình.
- Chia sẻ tài nguyên cho nhau, tăng tốc tính toán, đảm bảo tính đơn thể
- 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
Ví dụ: Mình cần mượn xe đi đâu đó thì mượn xe trong gia đình để đi thì dễ hơn mượn của người ngoài
- Do luồng chung tài nguyên với luồng cha nên việc tạo lập và chuyển đổi ngữ cảnh cũng nhanh hơn tiến trình
Ví dụ: Việc ngăn phòng riêng ra trong nhà thì dễ hơn việc xây thêm hay mua thêm một nhà khác.
- Cấp phát tài nguyên bộ nhớ cho tiến trình khá tốn kém.
- Lập trình đa luồng thì dễ hơn lập trình đa tiến trình.
Sự khác nhau:
- Lập trình đa luồng dễ hơn lập trình đa tiến trình.
- Tạo mới một tiến trình khó hơn tạo mới một luồng.
- Luồng không cần gởi, nhận thông điệp.
- Luồng chuyển đổi ngữ cảnh nhanh và ít chiếm tài nguyên hơn tiến trình.
- Luồng chia sẻ tài nguyên dùng chung dể hơn tiến trình.

DuongTrungQuan

Tổng số bài gửi : 57
Join date : 16/02/2012

Xem lý lịch thành viên

Về Đầu Trang Go down

Trình bày nguyên lí tập luồng

Bài gửi  NguyenKhanhDuy18 (I22B) on 28/3/2013, 11:00

Tập luồng (Thread Pools):
- Tiến trình cha tạo lập sẵn 1 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 1 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.
VD:
Trong 1 doanh trại quân đội có 1 tướng lĩnh (tiến trình cha) và một đội binh (tập luồng).
Đội binh sẽ sẵn sàng chiến đấu khi có mệnh lệnh (sẵn sàng chờ công việc).
Khi có 1 tên địch đột nhập, tướng lĩnh sẽ điều binh sĩ 1 (1 luồng) đi bắt tên địch (1 luồng được đánh thức và đưa vào vận hành).
Trong lúc đó, có thêm 1 tên địch khác đột nhập (nhận thêm 1 yêu cầu), tướng lĩnh sẽ điều binh sĩ 2 (1 luồng) đi bắt địch (1 luồng khác được đánh thức và đưa vào vận hành).
Sau khi bắt địch xong, binh sĩ sẽ trở về doanh trại (luồng được trả về tập luồng).

NguyenKhanhDuy18 (I22B)

Tổng số bài gửi : 13
Join date : 10/03/2013

Xem lý lịch thành viên

Về Đầu Trang Go down

ví dụ về luồng.

Bài gửi  phanthanhcan(I22A) on 28/3/2013, 23:14


Tại phà Cát Lái . Trạm điều khiển là CPU, còn các tàu là các Luồn, khác hàng là tiến trình.

Khi có ít khách thì chỉ có 1 tàu được sữ dụng.(1 luồn được sử dụng).

Khi có đông khách thì Trạm điều khiển, huy động 2 tàu (hai luồn được sử dụng) chở khách qua bờ bên kia.
vì có hai tàu nên lượng khách (tiến trình) luôn được bảo đảm được lịch trình và không bị ứ đọng.

phanthanhcan(I22A)

Tổng số bài gửi : 3
Join date : 11/03/2013

Xem lý lịch thành viên

Về Đầu Trang Go down

Những lợi ích của công nghệ đa luồng

Bài gửi  NguyenCaoDuong(I22B) on 29/3/2013, 00:37

VanNhatDongGiang(I22A) đã viết:LỢI ÍCH 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.

Cho mình chia sẻ them Vd về Chia sẻ tài nguyên (Resource Sharing)
Trong 1 xã hội có nhiều gia đình (Tiến trình) . Mỗi gia đình có nhiều thành viên (Luồng). Việc mượn đồ (tài nguyên dùng chung) của các thành viên trong cùng 1 gia đình (cùng 1 tiến trình) dễ dàng hơn việc mượn đồ của các gia đình khác.

NguyenCaoDuong(I22B)

Tổng số bài gửi : 27
Join date : 10/03/2013

Xem lý lịch thành viên

Về Đầu Trang Go down

Lợi ích của đa luồng

Bài gửi  TrỉnhToQuyen(I12A) on 29/3/2013, 07:31

1. Kha nang dap ung(Responsiveness) tot hon: trong khi mot luong bi ach hoac qua ban, luong khac van van hanh binh thuong(luong chinh cua trinh duyet van tuong tac voi nguoi dung trong khi du lieu duoc lay ve).
2.Chia se tai nguyen(Resource Sharing): theo mac dinh,cac luong co the dung chung bo nho va tai nguyen cua luong cha. Vai luong cung van hanh trong 1 vung dia chi,do do de dung chung tai nguyen hon so voi truong hop da tien trinh.
3.Tiet kiem(Economy): cap phat bo nho va tai nguyen cho tien trinh la cong viec ton kem. Do luong chung tai nguyen voi cha va cac luong khac, viec tao lap va chuyen ngu canh cung nhanh hon(Solaris 2: tao tien trinh cham hon 30 lan,chuyen ngu canh cham hon 5 lan).
4. Tan dung duoc the manh cua kien truc da xu ly: da luong lam tanh tinh song song tren he may nhieu CPU. Moi luong co the chay boi CPU rieng.
5. Lap trinh da luong de hon lap trinh da tien trinh.

TrỉnhToQuyen(I12A)

Tổng số bài gửi : 23
Join date : 10/03/2013

Xem lý lịch thành viên

Về Đầu Trang Go down

vd nguyên lý tập luồng

Bài gửi  tranngochuy(I22B) on 29/3/2013, 15:53

NguyenNhatHuy64(I22B) đã viết:Tập luồng(Thread Pools): được có khi có một tiến trình cha tạo ra tập luồng khi khởi động.Các luồng trong tập luồng sẵn sàng cho công việc.Khi tiến trình cha nhận thêm yêu cầu,một luồng sẽ được đánh thức và đưa vào vận hành.Sau khi phục vụ xong,luồng sẽ được trả về tập luồng và nếu số yêu cầu sử dụng luồng nhiều thì tiến trình cha chờ đến khi tập luồng được giải phóng

Trong bài tòan nhà sản xuất nhà tiêu thụ,thì một tiến trình gồm nhà sản xuất sẽ có nhiều luồng giống nhau,và tiến trình nhà tiêu thụ cũng tạo nhiều tập luồng giống nhau(không phải 2 tập luồng này giống nhau,vì 2 tập luồng này giống ở trong bản chất của từng tiến trình)

Ví dụ khác có 1 web server tạo ra 100 luồng mỗi luồng phục vụ 1 HTML đáp ứng yêu cầu cho người sử dụng, khi người sử dụng khác yêu cầu sẽ tạo thêm luồng khác.và khi tất cả các luồng bị bận,chỉ còn cách đợi luồng khác được giải phóng.Ví dụ thêm bạn vào một trang web nào đó trang web không hiện lên và có ghi dòng Server Busy tức là yêu cầu của bạn chưa được đáp ứng

Ví dụ khác,bạn gọi đến tổng đài 116 để hỏi thông tin về chủ đề nào đó,bạn sẽ được kết nối,nói chuyện với tổng đài viên,nếu khõang 2 3 phút sau,bạn gọi lại,bạn sẽ được kết nối với tổng đài viên khác vì tổng người khia sử dụng cho người yêu khác rồi.

Tập luồng có ưu điểm nhanh và giúp được tiến trình bớt vất vả hơn nhưng nó luôn sẵn sàng trong trạng thái đã có,luôn sẵn sàng nên nó rất là tốn RAM.
//vd này xem sao:
trong 1 doanh trai quân đội sẽ có 1 tướng lĩnh( tiến trình cha) và sẽ có 1 đội binh ( tập luồng )
đội binh này sẽ sẵn sàng chiến đấu khi có mệnh lệnh.
khi có 1 ten địch đột nhập thì tướng lĩnh sẽ điều binh sĩ 1 ( một luồng ) đi bắt tên địch ( một luồng được đánh thức và đưa vào vận hành)
trong khi đó lại có thêm 1 tên địch khác đột nhập( nhập thêm 1 yêu cầu) tướng lĩnh sẽ điều binh sĩ 2 đi bắt địch ( một luồng khác được đánh thức và đưa vào vận hành).sau khi bắt địch xong binh sẽ trở về doanh trai( luồng được trả về tập luồng).

tranngochuy(I22B)

Tổng số bài gửi : 15
Join date : 25/03/2013
Age : 27
Đến từ : 12H1010050

Xem lý lịch thành viên

Về Đầu Trang Go down

Câu 1: Trình bày 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  phungvanduong24(I12A) on 31/3/2013, 00:20

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

phungvanduong24(I12A)

Tổng số bài gửi : 61
Join date : 20/02/2012

Xem lý lịch thành viên

Về Đầu Trang Go down

Câu 2 : Trình bày nguyên lý tập luồng và ứng dụng.cho ví dụ minh họa

Bài gửi  phungvanduong24(I12A) on 31/3/2013, 00:22

Tập luồng (Thread Pools):
• 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ụ:
Trong một doanh trai quân đội sẽ có một tướng lĩnh (tiến trình cha) và sẽ có một đội binh (tập luồng).
Đội binh này sẽ sẳn sàng chiến đầu khi có mệnh lệnh (sẵn sàng chờ công việc).
Khi có một tên địch đột nhập, Tướng lĩnh sẽ điều binh sĩ 1 (một luồng) đi bắt tên địch (một luồng được đánh thức và đưa vào vận hành).
Trong khi đó, lại có thêm một tên địch khác đột nhập (nhận thêm một yêu cầu), Tướng lĩnh sẽ điều binh sĩ 2 (một luồng) đi bắt địch (một luồng khác được đánh thức và đưa vào vận hành).
Sau khi bắt địch xong, binh sĩ sẽ trở về doanh trại (luồng được trả về tập luồng)

phungvanduong24(I12A)

Tổng số bài gửi : 61
Join date : 20/02/2012

Xem lý lịch thành viên

Về Đầu Trang Go down

Các hàm quan trọng trong bài toán sản xuất tiêu thụ

Bài gửi  nguyenhoanglam_I22B on 1/4/2013, 13:32

- SuspendThread(): Tạm ngừng luồng với mục quản cho trước (đưa về trạng thái ngủ).
- GetCurrentThread(): Trả về mục quản của luồng sản xuất hiện hành.
- Sleep(): Dùng để ngủ một khoảng thời gian cho trước.
- GetTickCount(): Nhận số ms trôi qua kể từ khi Hệ Điều Hành khởi động cho tới thời điểm gọi hàm này.

nguyenhoanglam_I22B

Tổng số bài gửi : 16
Join date : 12/03/2013

Xem lý lịch thành viên

Về Đầu Trang Go down

cho mình nêu thêm một số ví dụ

Bài gửi  DuongKhanhThanh(I22B) on 1/4/2013, 14:03

1.Khả năng đáp ứng(Responsiveness)
Ví dụ: Các nhân viên tổng đài 108 là đa luồng.Khi khách hang điện thoại hỏi 108, thì 1 trong số nhân viên đó(nhân viên 1)sẽ trả lời. Nếu trong thời diểm đó khách hang thứ 2 gọi 108, thì 1 trong các nhân viên(nhân viên 2) còn lại sẽ trả lời khách hang.
2.Chi sẽ tài nguyên(Resource Sharing)
Ví dụ: Trong nhà ta có kệ sách,tivi,xe gắn máy,…mọi người trong nhà có thể dung chung sách,tivi,xe gắn máy.
3.Tiết kiệm(Economy)
Ví dụ: Các bạn trong lớp là các luồng đang dung chung 1 cái bảng, ai cần ghi thì ghi, ai cần thì chụp hình về xem…

DuongKhanhThanh(I22B)

Tổng số bài gửi : 24
Join date : 13/03/2013

Xem lý lịch thành viên

Về Đầu Trang Go down

cho mình nêu thêm một số ví dụ về đa luồng

Bài gửi  DuongKhanhThanh(I22B) on 1/4/2013, 14:05

1.Khả năng đáp ứng(Responsiveness)
Ví dụ: Các nhân viên tổng đài 108 là đa luồng.Khi khách hang điện thoại hỏi 108, thì 1 trong số nhân viên đó(nhân viên 1)sẽ trả lời. Nếu trong thời diểm đó khách hang thứ 2 gọi 108, thì 1 trong các nhân viên(nhân viên 2) còn lại sẽ trả lời khách hang.
2.Chi sẽ tài nguyên(Resource Sharing)
Ví dụ: Trong nhà ta có kệ sách,tivi,xe gắn máy,…mọi người trong nhà có thể dung chung sách,tivi,xe gắn máy.
3.Tiết kiệm(Economy)
Ví dụ: Các bạn trong lớp là các luồng đang dung chung 1 cái bảng, ai cần ghi thì ghi, ai cần thì chụp hình về xem…

DuongKhanhThanh(I22B)

Tổng số bài gửi : 24
Join date : 13/03/2013

Xem lý lịch thành viên

Về Đầu Trang Go down

nguyên lý tập luồng

Bài gửi  PhamThiThao (I22B) on 1/4/2013, 21:50

- Tiến trình cha tạo lập sẵn 1 tập luồng khi khởi động.
- 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ờ cho đến khi luồng được giải phó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 nhận thêm 1 yêu cầu, một luồng được đánh thức và đưa vào vận hành.

PhamThiThao (I22B)

Tổng số bài gửi : 54
Join date : 19/03/2013

Xem lý lịch thành viên

Về Đầu Trang Go down

Giới thiệu một số loại luồng

Bài gửi  PhamThiThao (I22B) on 1/4/2013, 21:52

Luồng Windows 2000

Windows 2000 cài đặt Win32 API. Win32 API là một API chủ yếu cho họ hệ điều hành Windows (Windows 95/98/NT và Windows 2000). Thực vậy, những gì được đề cập trong phần phần này áp dụng tới họ hệ điều hành nàyỨng dụng Windows chạy như một tiến trình riêng rẻ nơi mỗi tiến trình có thể chứa một hay nhiều luồng. Windows 2000 dùng ánh xạ một-một nơi mà mỗi luồng cấp người dùng ánh xạ tới luồng nhân được liên kết tới.Tuy nhiên, Windows cũng cung cấp sự hỗ trợ cho một thư viện có cấu trúc (fiber library) cung cấp chức năng của mô hình nhiều-nhiều. Mỗi luồng thuộc về một tiến trình có thể truy xuất một không gian địa chỉ ảo của tiến trình.Những thành phần thông thường của một luồng gồm:ID của luồng định danh duy nhất luồng Tập thanh ghi biểu diễn trạng thái của bộ xử lý Ngăn xếp người dùng khi luồng đang chạy ở chế độ người dùng.


Luồng Linux

Nhân Linux được giới thiệu trong ấn bản 2.2. Linux cung cấp một lời gọi hệ thống fork với chức năng truyền thống là tạo bản sao một tiến trình . Linux cũng cung cấp lời gọi hệ thống clone mà nó tương tự như tạo một luồng. clone có hành vi rất giống như fork, ngoại trừ thay vì tạo một bản sao của tiến trình gọi, nó tạo một tiến trình riêng chia sẻ không gian địa chỉ của tiến trình gọi. Nó chấm dứt việc chia sẻ không gian địa chỉ của tiến trình cha mà một tác vụ được nhân bản đối xử giống rất nhiều một luồng riêng rẻ.Chia sẻ không gian địa chỉ được cho phép vì việc biểu diễn của một tiến trình trong nhân Linux. Một cấu trúc dữ liệu nhân duy nhất tồn tại cho mỗi tiến trình trong hệ thống.


Luồng Java

Java là một trong số nhỏ ngôn ngữ cung cấp sự hỗ trợ tại cấp ngôn ngữ cho việc tạo và quản lý luồng. Tuy nhiên, vì các luồng được quản lý bởi máy ảo Java, không bởi một thư viện cấp người dùng hay nhân, rất khó để phân cấp luồng Java như cấp độ người dùng hay cấp độ nhân. Trong phần này chúng ta trình bày các luồng Java như một thay đổi đối với mô hình người dùng nghiêm ngặt hay mô hình cấp nhân.Tất cả chương trình tạo ít nhất một luồng điều khiển đơn. Thậm chí một chương trình Java chứa chỉ một phương thức main chạy như một luồng đơn trong máy ảo Java. Ngoài ra, Java cung cấp các lệnh cho phép người phát triển tạo và thao tác các luồng điều khiển bổ sung trong chương trình.

PhamThiThao (I22B)

Tổng số bài gửi : 54
Join date : 19/03/2013

Xem lý lịch thành viên

Về Đầu Trang Go down

Những ích lợi của công nghệ đa luồng?

Bài gửi  PhamThiThao (I22B) on 1/4/2013, 21:53

1. Khả năng đáp ứng tốt hơn, khi 1 luồng bị treo hoặc quá bận thì luồng khác vẫn làm việc 1 cách bình thường (Luồng chính của người dùng vẫn tương tác tốt với người dùng trong khi vẫn lấy được dữ liệu về.

2. Đa luồng chia sẽ tài nguyên dể dàng, 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 vận hành cùng 1 địa chỉ do đó dể dùng chung tài nguyên hơn so với trường hợp đa tiến tình.

3. Đa luồng tiết kiệm hơn: 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. Việc tạo mới 1 luồng sẽ dể hơn rất nhiều so với việc tạo mới 1 tiến tình mới.

4. 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. Việc chuyển từ luồng này sang luồng kia là rất nhanh.

5. Lập trình đa luồng dể hơn là lập trình đa tiến trình

PhamThiThao (I22B)

Tổng số bài gửi : 54
Join date : 19/03/2013

Xem lý lịch thành viên

Về Đầu Trang Go down

Lập trình đa luồng đồng hành trong windows

Bài gửi  NguyenBaoLoc70(I22A) on 3/4/2013, 21:26

- Windows là hệ điều hành đồ họa trực quan, do dó các tài nguyên của hệ thống cung cấp rất đa dạng và phong phú. Lập trình trên Windows phải hết sức thân thiện với người dùng thông qua giao diện đồ họa sẵn có của Windows.
- Windows sử dụng các hàm trong thư viện Win32 API: Hệ điều hành Windows cung cấp hàng trăm hàm để cho những ứng dụng có thể sử dụng truy cập các tài nguyên trong hệ thống. Những hàm đó được gọi là giao diện lập trình ứng dụng API(Application Programming Interface).
- Ứng dụng Windows vận hành như một tiến trình với 1 hoặc nhiều luồng: Ứng dụng Win32 xử lý theo các sự kiện(event - driven), các ứng dụng khi được viết sẽ liên tục chờ cho hệ điều hành truyền các dữ liệu nhập vào. Hệ thống sẽ đảm nhiệm truyền tất cả các dữ liệu nhập của ứng dụng vào các cửa sổ khác nhau.Mỗi cửa sổ sẽ có riêng một hàm gọi là hàm xử lý. Hệ thống sẽ gọi khi có bất cứ dữ liệu nhập vào được truyền đến cửa sổ, hàm này xử lý các dữ liệu nhập đó và trả quyền điều khiển về cho hệ thống.Hệ thống truyền các dữ liệu nhập vào thủ tục xử lý của cửa sổ thông qua một hình thức, gọi là thông điệp(message).Hệ thống sẽ phát sinh một thông điệp khi có một sự kiện nhập vào, Ví dụ như Khi người dùng nhấn một phím, di chuyển thiết bị chuột, hay kích vào các điều khiển (control) như thanh cuộn,...
- Ví dụ: Tổng đài 108 -> Đa luồng
- Ví dụ: Bài toán sản xuất - Tiêu thụ có thể được thực thi bằng ứng dụng đa luồng -> Đa luồng trong windows

NguyenBaoLoc70(I22A)

Tổng số bài gửi : 12
Join date : 20/03/2013

Xem lý lịch thành viên

Về Đầu Trang Go down

Lập Trình Đa Luồng Trong Window

Bài gửi  HaTrungMinhPhuc(I22B) on 4/4/2013, 22:23

- Windows là hệ điều hành đồ họa trực quan, do đó các tài nguyên của hệ thống cung cấp rất đa dạng và phong phú. Lập trình trên windows phải hết sức thân thiện với người dùng thông qua giao diện đồ họa sẵn có của Windows.
- Windows sử dụng các hàm trong thư viện Win32 API: hệ điều hành Windows cung cấp hàng trăm hàm để cho những ứng dụng có thể truy cập các tài nguyên trong hệ thống. Những hàm đó được gọi là giao diện lập trình ứng dụng API( Application Programming Interface).
- ứng dụng windows vận hành như một tiến trình với 1 hoặc nhiều luồng : ứng dụng Win32 xử lý theo các sự kiện ( event – driven), các ứng dụng khi được viết sẽ liên tục chờ cho hệ điều hành truyền các dữ liệu nhập vào. Hệ thống sẽ đảm nhiệm truyền tất cả các dữ liệu nhập của ứng dụng vào các cửa sổ khác nhau. Mỗi cửa sổ sẽ có riêng một hàm gọi là hàm xử lý. Hệ thống sẽ gọi khi có bất cứ dữ liệu nhập vào được truyền đến cửa sổ, hàm này xử lý các dữ liệu nhập đó và trả quyền điều khiển về cho hệ thống. Hệ thống truyền các dữ liệu nhập vào thủ tục xử lý của cửa sổ thông qua một hình thức, gọi là thông điệp( message). Hệ thống sẽ phát sinh một thông điệp khi có một sự kiện nhập vào. Ví dụ khi người dùng nhấn một phím, di chuyển thiết bị chuột hay kích vào các điều khiển( control ) như thanh cuộn…
- ví dụ: tổng đài 1080
- ví dụ: Bài toán sản xuất – Tiêu thụ có thể được thực thi bằng ứng dụng đa luồng.

HaTrungMinhPhuc(I22B)

Tổng số bài gửi : 16
Join date : 08/03/2013

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Thảo luận Bài 5

Bài gửi  HaTrungMinhPhuc(I22B) on 4/4/2013, 22:28

- Luồng(Thread): còn gọi 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 truyền thống(HWP- Heavy Weight Process)
- 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 dung.
- 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.
- Nhiều luồng có thể cùng chung một mã chương trình
Ví dụ: Lớp học là một tiến trình. Trong lớp sẽ có một giáo viên(luồng chính) và các học viên (luồng phụ)

HaTrungMinhPhuc(I22B)

Tổng số bài gửi : 16
Join date : 08/03/2013

Xem lý lịch thành viên

Về Đầu Trang Go down

nguyên lý tập luồng và ưng dụng

Bài gửi  HaTrungMinhPhuc(I22B) on 4/4/2013, 22:30

- 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 sang 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.
Ứng dụng: Tronfg 1 doanh trại quân đội sẽ có 1 tướng lĩnh ( tiến trình cha) và sẽ có 1 đội binh ( tập luồng). Đội binh này sẽ sẵn sàng chiến đấu khi có mẹnh lệnh (sẵn sàng chờ công việc). Khi có 1 tên địch đôp nhập thì tướng lĩnh sẽ điều binh sỉ (1 luồng) đi bất địch( một luồng được đánh thức và đưa vào vận hành). Trong khi đó them 1 tên địch khác đột nhập (nhận thêm 1 yêu cầu) tướng sĩ sẽ điều binh sĩ 2(1 luồng) đi bắt địch (một luồng khác được đánh thức và đưa vào vân hành). Sau khi bắt địch xong binh sĩ sẽ trở về doanh trại( luồng được trả về tập luồng).

HaTrungMinhPhuc(I22B)

Tổng số bài gửi : 16
Join date : 08/03/2013

Xem lý lịch thành viên

Về Đầu Trang Go down

Câu 1: Phân tích những đặc điểm của luồng? So sánh với khái niệm đa tiến trình? Trình bày những ưu việt của công nghệ đa luồng được các HĐH hỗ trợ?

Bài gửi  NguyenVanQuoc (I22B) on 6/4/2013, 01:09

- Luồng còn gọi là tiến trình nhẹ. Một luồng là một dòng xử lý cơ bản trong hệ thống. Mỗi luồng xử lý tuần tự đoạn code của nó, sở hữu một con trỏ lệnh, tập các thanh ghi và một vùng nhớ stack riêng.
- So sánh:
+ Giống: Điều có thông tin trạng thái. Luồng còn được gọi là tiến trình nhẹ. Nhiều luồng hoặc nhiều tiến trình có thể liên quan đến 1 chương trình. Dùng chung tài nguyên từ tiến trinh( hoặc luồng ) cha. Cùng có chức năng xử lý song song. Tăng tốc tính toán. Đảm bảo tính đơn thể.
+ Khác: Do các luồng cùng vận hành cũng 1 địa chỉ vì vậy dể dùng chung tài nguyên hơn đa tiến trình( VD: mượn đồ trong nhà thì dể hơn mượn đồ của hàng xóm láng giềng ). Do các luồng chung tài nguyên với cha và các luồng khác nên việc tạo lập và chuyển ngữ cảnh cũng nhanh hơn và ít chiếm tài nguyên hơn tiến trình( VD: việc ngăn ra riêng ra 1 phòng thì nhanh hơn là chờ nhà nước cấp cho 1 căn hộ ). Cấp phát bộ nhớ và tài nguyên cho tiến trình thì tốn kém hơn luồng. Lập trình đa luồng thì dể hơn lập trình đa tiến trình.
- Những ích lợi của công nghệ đa luồng.
+ Đáp ứng nhanh ( responsiveness ): cho phép luồng chính tiếp tục được thực hiện thậm chí khi một luồng bị ách hoặc quá bận.
+ Chia sẻ tài nguyên ( resource sharing ): các luồng có thể dùng chung bộ nhớ và tài nguyên của luồng cha, cho phép 1 ứng dụng có 1 số luồng khác nhau hoạt động trong cùng 1 không gian địa chỉ.
+ 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 nên việc tạo lập và chuyển ngữ cảnh cũng nhanh hơn.
+ Tận dụng được thế mạnh của kiến trúc đa xử lý ( multiprocessor ): làm tăng tính song song trên hệ máy nhiều CPU ( processor ).
+ Lập trình đa luồng dễ hơn lập trình đa tiến trình, tạo mới 1 tiến trình vừa lâu vừa khó, tạo mới 1 luồng thì nhanh và dễ hơn.

NguyenVanQuoc (I22B)

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

Xem lý lịch thành viên

Về Đầu Trang Go down

Câu 2: Trình bày nguyên lý tâp luồng? cho ví dụ minh họa

Bài gửi  NguyenVanQuoc (I22B) on 6/4/2013, 01:11

- 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ụ: Trong một doanh trai quân đội sẽ có một tướng lĩnh (tiến trình cha) và sẽ có một đội binh (tập luồng). Đội binh này sẽ sẳn sàng chiến đầu khi có mệnh lệnh (sẵn sàng chờ công việc). Khi có một tên địch đột nhập, Tướng lĩnh sẽ điều binh sĩ 1 (một luồng) đi bắt tên địch (một luồng được đánh thức và đưa vào vận hành). Trong khi đó, lại có thêm một tên địch khác đột nhập (nhận thêm một yêu cầu), Tướng lĩnh sẽ điều binh sĩ 2 (một luồng) đi bắt địch (một luồng khác được đánh thức và đưa vào vận hành). Sau khi bắt địch xong, binh sĩ sẽ trở về doanh trại (luồng được trả về tập luồng).
* Bài tập về tạo, đánh thức và tạm ngừng luồng

HANDLE ProducerHandle[30 ] ;
HANDLE ConsumerHandle[30 ] ;
DWORD ProducerID[ 30]; // cấp ID cho sản phẩm được tạo mới
DWORD ConsumerID[30 ];
for ( int i = 0 ; i < 30 ; i ++)
{
//các tập luồng này sau khi khởi tạo sẽ ngủ và chờ được đánh thức
ProducerHandle[ i ]=CreateThread(Producer, 4, &ProducerID[i]);
ConsumerHandle[ i ]=CreateThread(Consumer, 0, &ConsumerID[i]));
}
// 2. Đánh thức các luồng
for ( int i = 0 ; i < 30 ; i ++)
{
//các tập luồng này sau khi khởi tạo sẽ chạy ngay
ResumeThread ( ProducerHandle[ i ] );
ResumeThread ( ConsumerHandle[ i ]
}
// 3. Tạm ngừng
for ( int i = 0 ; i < 30 ; i ++)
{
SuspendThread(ProducerHandle[ i ]);
SuspendThread(ConsumerHandle[ i ]);
}

NguyenVanQuoc (I22B)

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

Xem lý lịch thành viên

Về Đầu Trang Go down

So sánh luồng và tiến trình và ví dụ minh họa.

Bài gửi  lekhanhhoa(I22B) on 6/4/2013, 09:27

- 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ĐH .
vd:lớp học là 1 tiến trình và đặt dưới sự quản lý của thầy.
- Luồng: là một tiến trình, nhưng đặc biệt ở chỗ là nhẹ hơn tiến trình truyền thống nên còn được gọi là tiểu tiến trình. Luồng nhẹ hơn tiến trình vì nó nằm trong lòng của một tiến trình.
- Một tiến trình có ít nhất một luồng (luồng chính) hoặc có thể có nhiều luồng (một luồng chính và nhiều luồng phụ)
- Luồng chính quản lý, điều phối các luồng phụ.
- Các luồng có thể chạy chung một mã code để đảm bảo tính nhất quán trong công việc.
vd: Thầy giáo là lớp học là luồng chính(đơn luồng), học sinh là luồng phụ (đa luồng.

giống nhau:
- Bản chất đều là tiến trình, nên đều có thông tin trạng thái.
- Đều được hệ điều hành quản lý và cấp phát CPU.
- Chia sẻ tài nguyên cho nhau.

khác nhau:
- Lập trình đa luồng dễ hơn lập trình đa tiến trình.
- Tạo mới một tiến trình khó hơn tạo mới một luồng.
- Luồng chuyển đổi ngữ cảnh nhanh và ít chiếm tài nguyên hơn tiến trình.
- Luồng chia sẻ tài nguyên dùng chung dể hơn tiến trình.

lekhanhhoa(I22B)

Tổng số bài gửi : 31
Join date : 24/03/2013

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Thảo luận Bài 5

Bài gửi  LETHIANHDAO48(I22B) on 6/4/2013, 11:43

Tập luồng (Thread Pools):
+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.
+Tập luồng giống nhau cùng chung chức năng.
Ví dụ:
Tập luồng bao gồm các nhà sản xuất.Khi tạo lập xong chưa có việc thì sẽ nghỉ.

LETHIANHDAO48(I22B)

Tổng số bài gửi : 21
Join date : 26/03/2013

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Thảo luận Bài 5

Bài gửi  LETHIANHDAO48(I22B) on 6/4/2013, 11:44

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.
SO SANH:
- Tiến trình (Process) là chuơng trình trong thời gian thực hiện (đặt dưới sự quản lý của HĐH).
- Luồng (Thread) còn gọi 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 truyền thống (HWP- Heavy Weight Process).
- 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.
- Nhiều luồng có thể cùng chung một mã chương trình

LETHIANHDAO48(I22B)

Tổng số bài gửi : 21
Join date : 26/03/2013

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Thảo luận Bài 5

Bài gửi  LETHIANHDAO48(I22B) on 6/4/2013, 11:45

Giống nhau:
+ Đều có thông tin trạng thái. Thông tin này được lưu trữ trong PCB
+ Luồng còn được gọi là tiến trình nhẹ (Light Weight Process)
+ Nhiều luồng hoặc nhiều tiến trình có thể liên quan đến một chương trình
+ Chia sẻ tài nguyên cho nhau
+ Tăng tốc tính toán
+ Đảm bảo tính đơn thể

Khác nhau:
+ Do luồng cùng vận hành trong một vùng địa chỉ, do đó dễ dùng chung tài nguyên hơn đa tiến trình
Ví dụ: Trong lớp học, các bạn (luồng) trong cùng một lớp dễ mượn tập hơn các bạn học khác lớp.
+ Do luồng dùng chung tài nguyên nên việc tạo lập và chuyển ngữ cảnh cũng nhanh hơn tiến trình.
Ví dụ: Trong nhà, ngăn riêng một phòng để ở sẽ nhanh hơn việc chờ nhà nước cấp cho một căn hộ.
+ Cấp phát bộ nhớ và tài nguyên cho tiến trình thì tốn kém hơn luồng.
+ Lập trình đa luồng dễ hơn đa tiến trình.

LETHIANHDAO48(I22B)

Tổng số bài gửi : 21
Join date : 26/03/2013

Xem lý lịch thành viên

Về Đầu Trang Go down

Các vấn đề nảy sinh trong việc liên lạc giữa các tiến trình

Bài gửi  LeNgocTung (I22A) on 6/4/2013, 14:51

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?
avatar
LeNgocTung (I22A)

Tổng số bài gửi : 35
Join date : 17/03/2013
Age : 27

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Thảo luận Bài 5

Bài gửi  Sponsored content


Sponsored content


Về Đầu Trang Go down

Trang 6 trong tổng số 8 trang Previous  1, 2, 3, 4, 5, 6, 7, 8  Next

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang


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