Thảo luận Bài 5 (Đa luồng)

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

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

Thảo luận Bài 5 (Đa luồng)

Bài gửi  Admin on 4/10/2011, 08:41

Thảo luận những vấn đề liên quan đến Bài 5 (Đa luồng).

Admin
Admin

Tổng số bài gửi : 291
Join date : 18/02/2009

Xem lý lịch thành viên http://hedieuhanh.forumvi.net

Về Đầu Trang Go down

Mô hình đa luồng

Bài gửi  tranvantoan83(I11c) on 4/10/2011, 22:02

Mô hình đa luồng
Nhiều hệ thống cung cấp sự hỗ trợ cả hai luồng nhân và luồng người dùng nên
tạo ra nhiều mô hình đa luồng khác nhau. Chúng ta sẽ xem xét ba loại cài đặt luồng
thông thường
Mô hình nhiều-một
Mô hình nhiều-một (như hình IV.2) ánh xạ nhiều luồng cấp người dùng tới
một luồng cấp nhân. Quản lý luồng được thực hiện trong không gian người dùng vì
thế nó hiệu quả nhưng toàn bộ quá trình sẽ bị khóa nếu một luồng thực hiện lời gọi hệ
thống khóa. Vì chỉ một luồng có thể truy xuất nhân tại một thời điểm nên nhiều luồng
không thể chạy song song trên nhiều bộ xử lý. Green threads-một thư viện luồng được
cài đặt trên các hệ điều hành không hỗ trợ luồng nhân dùng mô hình nhiều-một.
Mô hình một-một
Mô hình một-một (hình IV.3) ánh xạ mỗi luồng người dùng tới một luồng
nhân. Nó cung cấp khả năng đồng hành tốt hơn mô hình nhiều-một bằng cách cho một
luồng khác chạy khi một luồng thực hiện lời gọi hệ thống nghẽn; nó cũng cho phép
nhiều luồng chạy song song trên các bộ xử lý khác nhau. Chỉ có một trở ngại trong
mô hình này là tạo luồng người dùng yêu cầu tạo một luồng nhân tương ứng. Vì chi
phí cho việc tạo luồng nhân có thể đè nặng lên năng lực thực hiện của ứng dụng, các
cài đặt cho mô hình này giới hạn số luồng được hỗ trợ bởi hệ thống. Windows NT,
Windows 2000 và OS/2 cài đặt mô hình một-một này.
Mô hình nhiều-nhiều
Mô hình nhiều-nhiều (như hình VI.4) đa hợp nhiều luồng cấp người dùng tới
số lượng nhỏ hơn hay bằng các luồng nhân. Số lượng các luồng nhân có thể được xác
định hoặc một ứng dụng cụ thể hay một máy cụ thể (một ứng dụng có thể được cấp
nhiều luồng nhân trên một bộ đa xử lý hơn trên một bộ đơn xử lý). Trong khi mô hình
nhiều-một cho phép người phát triển tạo nhiều luồng người dùng như họ muốn, thì
đồng hành thật sự là không đạt được vì nhân có thể lập thời biểu chỉ một luồng tại mộ
thời điểm. Mô hình một-một cho phép đồng hành tốt hơn nhưng người phát triển phải
cẩn thận không tạo ra quá nhiều luồng trong một ứng dụng. Mô hình nhiều-nhiều gặp
phải một trong hai vấn đề khiếm khuyết: người phát triển có thể tạo nhiều luồng
người dùng khi cần thiết và các luồng nhân tương ứng có thể chạy song song trên một
bộ đa xử lý. Khi một luồng thực hiện một lời gọi hệ thống khóa, nhân có thể lập thời
biểu một luồng khác thực thi. Solaris 2, IRIX, HP-UX, và Tru64 UNIX hỗ trợ mô
hình này.


avatar
tranvantoan83(I11c)

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

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

Về Đầu Trang Go down

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

Bài gửi  NguyenXuanTri28 on 6/10/2011, 18:59

Những 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. Nếu chỉ có 1 cô phải trực 10 máy điện thoại thì khi chỉ có 1 cuộc điện thoại gọi đến thì cô sẽ trả lời tốt nhưng khi có khoảng 3 cuộc điện thoại trở lên thì cô không thể trả lời được kịp hết.
Nếu có nhiều cô cùng trực điện thoại thì lúc đó sẽ tốt hơn, đáp ứng được nhu cầu của khách hàng khi họ gọi đến .
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.

NguyenXuanTri28

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

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

Về Đầu Trang Go down

Re: Thảo luận Bài 5 (Đa luồng)

Bài gửi  Tranvancanh(I11C) on 6/10/2011, 21:28

NguyenXuanTri28 đã viết:Những 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. Nếu chỉ có 1 cô phải trực 10 máy điện thoại thì khi chỉ có 1 cuộc điện thoại gọi đến thì cô sẽ trả lời tốt nhưng khi có khoảng 3 cuộc điện thoại trở lên thì cô không thể trả lời được kịp hết.
Nếu có nhiều cô cùng trực điện thoại thì lúc đó sẽ tốt hơn, đáp ứng được nhu cầu của khách hàng khi họ gọi đến .
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.
Mình xin bổ sung thêm cho đầy đủ nhé
Những lợi ích của công nghệ đa luồng?
- 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ề.
VD: Tổng đài 188 là 1 vd minh họa của đa luồng (1 cô nhân viên trực trả lời tổng đài khi 1 khách hàng gọi hỏi (7 kì quan trên thế giới là những kì quan nào…) Trong khi đó nhân viên đó đang bận nhưng tổng đài có rất nhiều cô nhân viên khác phục vụ (gọi là đa luồng), 1 cô phục vụ (gọi là đơn luồng), cô nhân viên đó đang bận vẫn có sự trả lời của cô khác cứ như thế làm việc gọi là đa luồng.
- Đ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ồn 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.
VD: Trong lớp học việc dùng chung 1 cái bảng dể sửa dể thay đổi, nếu thay đổi sẽ thay đổi tất cả.
- Đ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ồn 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.
VD: Trong 1 gia đình có anh chị sắp xây dựng 1 gia đình mới nếu như xây thêm 1 căn nhà (hoặc căn phòng) sẽ tốn kém và khó hơn rất nhiều so với việc ngăn 1 căn phòng trong 1 gia đình lớn thành nhiều ngăn (chia ra nhiều phòng sẽ nhanh hơn và tiết kiệm hơn rất nhiều so với tạo dựng mới, tiết kiệm hơn rất nhiều.
- 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.
- Lập trình đa luồng dể hơn là lập trình đa tiến trình.
Các bạn vào góp ý nhé.

Tranvancanh(I11C)

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

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

Về Đầu Trang Go down

Khái niệm đa luồng. So sánh luồng với tiến trình (giống và khác nhau ở chỗ nào?)

Bài gửi  NguyenThanhTam (I11C) on 6/10/2011, 21: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 sánh:
- 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
avatar
NguyenThanhTam (I11C)

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

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  NguyenThanhTam (I11C) on 6/10/2011, 21:48

- 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 (ví dụ, 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ề).
- 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 một vùng địa chỉ, do đó dễ chia sẻ tài nguyên hơn so với trường hợp đa tiến trình.
- Tiết kiệm (Economy): Cấp phát bộ nhớ và tài nguyên cho tiến trình là một 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).
- 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ể được chạy bởi CPU riêng.
- Lập trình đa luồng dễ hơn (chia sẻ tài nguyên và tạo mới luồng dễ hơn).
avatar
NguyenThanhTam (I11C)

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

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

Về Đầu Trang Go down

Cho ví dụ minh họa về luồng và tiến trình

Bài gửi  nguyenthithuylinh (I11C) on 6/10/2011, 22:01

NguyenThanhTam (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.
* So sánh:
- 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

Mình đóng góp một ví dụ về luồng và tiến trình
* Luồng:
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:
Ví dụ: Lớp I111C đang học là một tiến trình.

nguyenthithuylinh (I11C)

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

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

Về Đầu Trang Go down

Trình bày nguyên lý tập luồng và Ví dụ minh họa

Bài gửi  nguyenthithuylinh (I11C) on 6/10/2011, 22:06

*** 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)

nguyenthithuylinh (I11C)

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

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

Về Đầu Trang Go down

Hãy phân tích nguyên lý tập luồng.Cho ví dụ

Bài gửi  buithithudung24 (i11c) on 6/10/2011, 22:13

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ụ:
Trang bị cho 1 nhóm các chiến sĩ mặc áo giáp cầm vũ khí trong người nằm ngủ, khi có giặc tới ta cử 1 chiến sĩ ra chiến đấu, khi chiến sĩ đó hoàn thành nhiệm vụ trở về trạng thái ngủ, cứ tiếp tục như thế khi giặc đến thì 1 chiến sĩ lại ra chiến đấu...

buithithudung24 (i11c)

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

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

Về Đầu Trang Go down

Giải thích 1 số hàm trong bài toán sản xuất tiêu thụ

Bài gửi  buithithudung24 (i11c) on 6/10/2011, 22:23

Hàm GetCurrentThread: dùng để lấy về mục quản của luồng sản xuất hiện hành(mục quản: là con số do hệ điều hành cấp ho luồng hiện hành)
Hàm SuspendThread: dùng để tạm ngưng công việc của hàm với mục quản cho trước
Hàm Sleep: dùng để ngủ 1 số miligiay cho trước,hết khoảng thời gian đó nhà tiêu thụ lại làm việc tiếp
Hàm GetTickCount(): dùng để lấy số miligiay trôi qua kể từ khi hệ điều hành khởi động cho đến thời điểm gọi hàm này
HÀm ResumeThread: dùng để tiếp tục công việc của luồng với mục quản cho trước
Hàm CloseHandle: dùng để hủy đối tượng cho trước với mục quản cho trước. vd: CLoseHandle (45) :luồng 45 không làm việc nữa,bị đóng lại

buithithudung24 (i11c)

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

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

Về Đầu Trang Go down

help help

Bài gửi  PhamHuyHoang (I11C) on 6/10/2011, 22:24

Mình chưa biết nhiều ứng dụng của bài "Nhà sản xuất - tiêu thụ" trong thực tế. Xin các bạn giúp đỡ, thanks!

PhamHuyHoang (I11C)

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

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  TruongThiThuyPhi(I11C) on 6/10/2011, 22:24

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. Tương tự, mỗi luồng cũng có một ngăn xếp nhân được dùng khi luồng đang chạy trong chế độ nhân Một vùng lưu trữ riêng được dùng bởi nhiều thư viện thời gian thực và thự viện liên kết động (DLLs).Tập thanh ghi, ngăn xếp và vùng lưu trữ riêng được xem như ngữ cảnh của luồng và được đặc tả kiến trúc tới phần cứng mà hệ điều hành chạy trên đó. Cấu trúc dữ liệu chủ yếu của luồng gồm:RTHREAD (executive thread block-khối luồng thực thi). KTHREAD (kernel thread-khối luồng nhân) TEB (thread environment block-khối môi trường luồng)Các thành phần chủ yếu của RTHREAD gồm một con trỏ chỉ tới tiến trình nào luồng thuộc về và địa chỉ của thủ tục mà luồng bắt đầu điều khiển trong đó. ETHREAD cũng chứa một con trỏ chỉ tới KTHREAD tương ứng.KTHREAD gồm thông tin định thời và đồng bộ hóa cho luồng. Ngoài ra, KTHREAD chứa ngăn xếp nhân (được dùng khi luồng đang chạy trong chế độ nhân) và con trỏ chỉ tới TEB.ETHREAD và KTHREAD tồn tại hoàn toàn ở không gian nhân; điều này có nghĩa chỉ nhân có thể truy xuất chúng. TEB là cấu trúc dữ liệu trong không gian người dùng được truy xuất khi luồng đang chạy ở chế độ người dùng. Giữa những trường khác nhau, TEB chứa ngăn xếp người dùng và một mảng cho dữ liệu đặc tả luồng (mà Windows gọi là lưu trữ cục bộ luồ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. 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. Tuy nhiên, tốt hơn lưu trữ dữ liệu cho mỗi tiến trình trong cấu trúc dữ liệu là nó chứa các con trỏ chỉ tới các cấu trúc dữ liệu khác nơi dữ liệu này được được lưu. Ví dụ, cấu trúc dữ liệu trên tiến trình chứa các con trỏ chỉ tới các cấu trúc dữ liệu khác hiện diện danh sách tập tin đang mở, thông tin quản lý tín hiệu, và bộ nhớ ảo. Khi fork được gọi, một tiến trình mới được tạo cùng với một bản sao của tất cả cấu trúc dữ liệu của tiến trình cha được liên kết tới. Khi lời gọi hệ thống clone được thực hiện, một tiến trình mới chỉ tới cấu trúc dữ liệu của tiến trình cha, do đó cho phép tiến trình con chia sẻ bộ nhớ và tài nguyên của tiến trình cha. Một tập hợp cờ được truyền như một tham số tới lời gọi hệ thống clone. Tập hợp cờ này được dùng để hiển thị bao nhiêu tiến trình cha được chia sẻ với tiến trình con. Nếu không có cờ nào được đặt, không có chia sẻ xảy ra và clone hoạt động giống như fork. Nếu tất cả năm cờ được đặt, tiến trình con chia sẻ mọi thứ với tiến trình cha. Sự kết hợp khác của cờ cho phép các cấp độ chia sẻ khác nhau giữa hai mức độ cao nhất này. Điều thú vị là Linux không phân biệt giữa tiến trình và luồng. Thật vậy, Linux thường sử dụng thuật ngữ tác vụ-hơn là tiến trình hay luồng-khi tham chiếu tới dòng điều khiển trong chương trình. Ngoài tiến trình được nhân bản, Linux không hỗ trợ đa luồng, cấu trúc dữ liệu riêng hay thủ tục nhân. Tuy nhiên, những cài đặt Pthreads là sẳn dùng cho đa luồng cấp người dù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.

TruongThiThuyPhi(I11C)

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

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

Về Đầu Trang Go down

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

Bài gửi  TruongThiThuyPhi(I11C) on 6/10/2011, 22:31

Một luồng thường được gọi là tiến trình nhẹ (lightweight proces-LWP), là một đơn vị cơ bản của việc sử dụng CPU; nó hình thành gồm: một định danh luồng (thread ID), một bộ đếm chương trình, tập thanh ghi và ngăn xếp. Nó chia sẻ với các luồng khác thuộc cùng một tiến trình phần mã, phần dữ liệu, và tài nguyên hệ điều hành như các tập tin đang mở và các tín hiệu.
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.

TruongThiThuyPhi(I11C)

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

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

Về Đầu Trang Go down

Nguyên lý tập luồng và các ứng dụng. Cho ví dụ?

Bài gửi  TruongThiThuyPhi(I11C) on 6/10/2011, 22:45

Tiến trình cha yêu cầu hệ điều hành tạo lập sẵn một tập luồng gồm các luồng giống nhau nhưng khi chưa có việc làm thì ở trạng thái sleeping chờ công việc.Khi có yêu cầu công việc, một luồng được đánh thức và đưa nhanh vào vận hành, xong việc lại trở về tập luồng.Nếu số yêu cầu vượt quá số luồng trong tập luồng, tiến trình cha chờ đến khi có luồng được giải phóng.

Ví dụ: Trang bị sẵn sàng cho cả nhóm lính mặc áo giáp cầm súng nằm ngủ, nhưng nếu 1 tên địch tiến đến thì người lính bắt đầu dậy tiến hành công việc một cách nhanh chóng. Và khi đã chiến đấu xong thì lính lại trở về trạng thái nằm ngủ để đợi công việc tiếp theo.

TruongThiThuyPhi(I11C)

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

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

Về Đầu Trang Go down

Mô hình đa luồng

Bài gửi  NguyenHoangKimVu (I11C) on 6/10/2011, 23:00

Ví dụ : Thực hành 1 môn học
* Mỗi nhóm 2 sinh viên là 1 tiến trình:
* Mỗi sinh viên là 1 luồng:
------> Cùng làm bài => Hoạt động đồng hành
------> Có bài thực hành chung => Tài nguyên chung
------> Trao đổi với nhau

Phân biệt giữa luồng và tiến trình
Luồng : 1 dòng xử lý
Tiến trình : 1 không gian địa chỉ hoặc nhiều luồng.
=> Các tiến trình là độc lập, trong mỗi tiến trình có thể có nhiều luồng

NguyenHoangKimVu (I11C)

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

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

Về Đầu Trang Go down

Câu 1:Trình bày khái niệm Luồng, cho vd minh họa. So sánh luồng với tiến trình.

Bài gửi  thanhnam06511c on 6/10/2011, 23:07

- 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ó thong 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
Ví dụ :Lớp học là một tiến trình . Trong lớp sẽ có 1 giáo viên (đơn luồng) và các học viên (đa luồng)

thanhnam06511c

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

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

Về Đầu Trang Go down

Đa luồng và Đa tiến trinh

Bài gửi  VoMinhHoang (I11C) on 6/10/2011, 23:07

Đa luồng dùng chung các tiến trình trong hệ thống, quản trị công việc bên trong cấp phát giữa các tiến trình. (vd: tài nguyên dùng chung là bảng lớp học)
Tiến trình truyền thống dùng chung các tiến trình bên ngoài. Lập trình đa luồng dễ hơn lập trình đa tiến trình (như tạo mới luồng, chia sẻ, điều khiển dễ hơn..)

Giống nhau:
Đề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 một chu 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 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ượn đồ trong gia đình dễ mượn đồ hơn của hàng xóm
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 riêng ra một phòng trong nhà thì dễ hơn được nhà nước cấp cho một căn hộ
Cấp phát tài nguyên cho bộ nhớ thì tốn kém
avatar
VoMinhHoang (I11C)

Tổng số bài gửi : 26
Join date : 08/09/2011
Age : 32
Đến từ : Tp Tan An - Long An

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

Về Đầu Trang Go down

Câu 2: Những ích lợi của công nghệ đa luồng. vi dụ minh họa

Bài gửi  thanhnam06511c on 6/10/2011, 23:08

1. 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 duyw6t5 vẫn tương tác với người dùng trong khi dữ liệu được lấy về.
VD: Tổng đài VIETTEL có những người trực tổng đài khi khách hang thứ nhất gọi tới thì có 1 tổng đài viên sẽ trả lời. Nếu trong thời diểm đó khách hàng thứ 2 gọi VIETTEL thì có một trong các cô còn lại sẽ trả lời cho khách hang
2. Chia sẽ tài nguyên (Resoruce Sharing): Theo mặc định, các luồng có thể dung 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ễ dung chung tài nguyên hơn so với trường hợp đa tiến trình.
VD:Trong nhà ta có kệ sách, tivi, xe máy người trong nhà có thể dung chung
3. Tiế 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 ).

VD: Các bạn trong lớp là các luồng đang dung 1 cái bảng, ai cần ghi thì ghi, càn chụp hình về xem thì chụp
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 CPU. Mỗi luồng có thể chạy bởi 1 CPU riêng.
5. 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 lâu hơn tạo 1 luồng lien lạc giữa các luồng dễ hơn tiến trình.

thanhnam06511c

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

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

Về Đầu Trang Go down

VD nguyên lý tập nguồn

Bài gửi  NgoDucTuan (I11C) on 6/10/2011, 23:16

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)
avatar
NgoDucTuan (I11C)

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

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

Về Đầu Trang Go down

Câu 3 Trình bày nguyên lý tập luồng và ưng dụng

Bài gửi  thanhnam06511c on 6/10/2011, 23:25

- 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(1luo6ng2) đ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)

thanhnam06511c

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

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

Về Đầu Trang Go down

[b]NGUYÊN LÝ TẬP LUỒNG, VÍ DỤ MINH HỌA[/b]

Bài gửi  DoThuyTien16 (I11C) on 6/10/2011, 23:34

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 ch chờ cho đến khi có luồng được giải phóng.
Ví dụ:Trong mộ doanh trại 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 lính 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 được đánh thức và đưa vào vận hành).
Su khi bắt địch xong ,binh sĩ sẽ trở về doanh trại ( luồng được trả về tập luồng).

DoThuyTien16 (I11C)

Tổng số bài gửi : 15
Join date : 26/08/2011
Age : 29
Đến từ : Lâm Đồng

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

Về Đầu Trang Go down

Trình bày khái niệm luồng.So sánh với khái niệm tiến trình truyền thống

Bài gửi  NguyenHaThanh97 (I11C) on 6/10/2011, 23:49

_Khái niệm luồng:
+ Luồng (Thread) còn gọi tiến trình nhẹ (LWP -LWP-Light Weight Process), một đơn vị cơ bản sử dụng CPU.
+Nhiều luồng có thể dùng chung 1 mã tiến trình rất có lợi khi thay đổi, phát triển thì chỉ cần sửa 1 chổ nhưng cho tất cả các luồng của tiến trình.
_So sánh khái niệm luồng và khái niệm tiến trình truyền thống:
+Giống : cũng là 1 tiến trình bình thường, là 1 đối tượng được cấp CPU và được quản lý bởi HĐH.
+Khác nhau:
_Luồng ở bên trong tiến trình mà HĐH vẫn truy xuất vào trong tiến trình được.
_Tiến trình truyền thống: bao gồm nhiều luồng bên trong vận hành.

NguyenHaThanh97 (I11C)

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

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

Về Đầu Trang Go down

Có những mô hình Đa luồng sau:

Bài gửi  VoMinhHoang (I11C) on 6/10/2011, 23:52

- Mô hình Many – to – One là nhiều User level threads được ánh xạ vào một Kernel Thread. Việc quản lý được thực hiện ở User Level, khi có một thread bị block thì toàn bộ các Process cũng bị block theo.
- Mô hình One – to – One là mỗi User level thread được gắn với một Kernel thread. Khi có một user thread mới được tạo ra thì cũng cần tạo một Kernel thread tương ứng, lúc này chi phí quá lớn.
- Mô hình Many – to – Many nhiều User level thread được phân chia ánh xạ vào một số Kernel thread. Tránh được các khuyết điếm của 2 mô hình trên.
avatar
VoMinhHoang (I11C)

Tổng số bài gửi : 26
Join date : 08/09/2011
Age : 32
Đến từ : Tp Tan An - Long An

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

Về Đầu Trang Go down

LẬP TRÌNH ĐA LUỒNG TRONG WINDOWS

Bài gửi  DoThuyTien16 (I11C) on 6/10/2011, 23:58

LẬP TRÌNH ĐA LUỒNG TRONG WINDOWS
- 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.

DoThuyTien16 (I11C)

Tổng số bài gửi : 15
Join date : 26/08/2011
Age : 29
Đến từ : Lâm Đồng

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

Về Đầu Trang Go down

Khái niệm cơ bản về luồng và mô hình đa luồng

Bài gửi  hoangquocduy.i11c on 7/10/2011, 00:27

Trong hầu hết các hệ điều hành, mỗi tiến trình có một không gian địa chỉ và chỉ có một dòng xử lý. Tuy nhiên, có nhiều tình huống người xử dụng mong muốn có nhiều dòng xử lý cùng chia sẽ một không gian địa chỉ, và các dòng xử lý này hoạt động song song tương tự như các tiến trình phân biệt (ngoài trừ việc chia sẽ không gian địa chỉ)
Ví Dụ: Một Server quản lý tập tin thỉnh thoảng phải tự khóa để chờ việc truy xuất các tập tin hoàn tất. nếu Server có nhiều dòng xử lý, hệ thống có thể xử lý các yêu cầu mới, trong khi các dòng xử lý khác bị khóa. như vậy việc thực hiện trương trình sẽ hiệu quả hơn. điều này không thể đạt được bằng cách tạo 2 tiến trình server riêng biệt vì cần phải chia sẽ cùng một vùng đệm, do vậy phải bắt buộc chia sẽ không gian địa chỉ.
chính vì các tình huống tương tự, người ta cần có một cơ chế xử lý mới cho phép có nhiều dòng xử lý trong cùng một tiến trình.
Ngày nay có nhiều hệ điều hành cung cấp cơ chế như vậy, gọi là luồng.
Vậy: luồng là một đơn vị 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. các luồng chia sẽ CPU với nhau như cách chia sẽ giữa các tiến trình: một luồng xử lý trong khi các luồng khác chờ đến lượt. Một luồng cũng có thể tạo lập các tiến trình con và nhận các trạng thái khác nhau như một tiến trình thực sự. một tiến trình có thể sở hữu nhiều luồng.

hoangquocduy.i11c

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

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

Về Đầu Trang Go down

Re: Thảo luận Bài 5 (Đa luồng)

Bài gửi  Sponsored content


Sponsored content


Về Đầu Trang Go down

Trang 1 trong tổng số 6 trang 1, 2, 3, 4, 5, 6  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