Download miễn phí Đề tài Quản lý luồng trong Unix, Win2000





MỤC LỤC
 Trang
PHẦN I: Tổng quan về luồng
1,Luồng là gì .3
2,Các loại luồng 3
3,Các mô hình luồng 4
PHẦN II: Cấp phát luồng
1,Lời gọi hệ thống và exec .6
2,Hủy luồng 13
3,Truyền thông giữa các luồng .14
PHẦN III: Mô hình luồng trong win2000 và unix
1,Mô hình luồng trong win2000 .15
2,Mô hình luồng trong unix .16
 
 



Để tải bản Đầy Đủ của tài liệu, xin Trả lời bài viết này, Mods sẽ gửi Link download cho bạn sớm nhất qua hòm tin nhắn.
Ai cần download tài liệu gì mà không tìm thấy ở đây, thì đăng yêu cầu down tại đây nhé:
Nhận download tài liệu miễn phí

Tóm tắt nội dung tài liệu:

TRƯỜNG ĐẠI HỌC KINH TẾ QUỐC DÂN
Bài thảo luận
Môn: Hệ điều hành
Đề tài
Quản lý luồng trong Unix, Win2000
Sinh viên thực hiện: Nguyên Chí Điện
Phùng Văn Quyết
Đào Mạnh Cường
Nguyễn Văn Huy
HÀ NỘI, 2009
MỤC LỤC
Trang
PHẦN I: Tổng quan về luồng
1,Luồng là gì………………………………………………….3
2,Các loại luồng………………………………………………3
3,Các mô hình luồng…………………………………………4
PHẦN II: Cấp phát luồng
1,Lời gọi hệ thống và exec…………………………………..6
2,Hủy luồng…………………………………………………13
3,Truyền thông giữa các luồng…………………………….14
PHẦN III: Mô hình luồng trong win2000 và unix
1,Mô hình luồng trong win2000…………………………...15
2,Mô hình luồng trong unix……………………………….16
Phần l: Tổng quan về luồng
1, Luồng là gì?
Luồng (thread), còn gọi là quá trình nhẹ (lightweight process- lwp) hay tiểu trình, là một đơn vị cơ bản của việc sử dụng CPU. Luồng có mô hình tương tự tiến trình, trong việc xử lí tuần tự các chỉ thị máy.
Cấu trúc luồng bao gồm một định danh luồng (thread ID), một bộ đếm chương trình, các tập thanh ghi và ngăn xếp (stack).
Do được định nghĩa như một tiến trình nhỏ, ta dễ thấy trong phạm vi một tiến trình, có thể có một hay nhiều luồng, mỗi luồng gồm: một trạng thái thực thi luồng (running, ready), một lưu trữ về ngữ cảnh của processor khi luồng ở trạng thái not running, các thông tin thống kê về việc sử dụng các biến cục bộ của luồng, một ngăn xếp thực thi. Việc truy xuất đến bộ nhớ và tài nguyên tiến trình được chia sẻ với tất cả các luồng khác trong cùng một tiến trình. Các luồng này có cùng một không gian địa chỉ, nhờ đó mà có thể chia sẻ các biến toàn cục của tiến trình và có thể truy xuất lên các vùng nhớ stack của nhau.
Các luồng chia sẻ thời gian sử lý của processor giống như cách của tiến trình, nhờ đó mà các luồng có thể hoạt động song song với nhau. Trong quá trình thực thi của luồng nó có thể tạo ra các luồng con của nó.
2, Các loại luồng
Có hai loại luồng: luồng cấp người dùng và luồng cấp nhân. Hỗ trợ luồng được cung cấp ở cấp người dung cho các luồng người dùng hay ở cấp nhân cho các luồng nhân.
Luồng nhân: được hỗ trợ trực tiếp bởi hệ điều hành, thực hiện việc tạo luồng, lập thời biểu và quản lý không gian nhân. Do việc quản lý được thực hiện bởi hệ điều hành, luồng nhân tạo và quản lý chậm hơn luồng người dùng. Tuy nhiên, do được quản lý thời biểu, nếu một luồng thực hiện một lời gọi hệ thống nghẽn, nhân có thể lập thời biểu cho một luồng khác trong ứng dụng thực thi, giúp hệ thống không bị nghẽn. Hiện nay, các hệ điều hành đều được hỗ trợ luồng nhân.
Luồng người dùng: được hỗ trợ dưới nhân và được cài đặt bởi thư viện tại cấp người dùng. Thư viện cung cấp việc tạo luồng, lập thời biểu và quản lý luồng mà không có sự hỗ trợ từ nhân, do đó các luồng ở cấp này thường được tạo và quản lý nhanh. Việc tiến trình bị tắc nghẽn khi thực hiện một lời gọi hệ thống chỉ xảy ra khi nhân là đơn luồng (một dòng điều khiển).
3, Các mô hình luồng
Trong quá trình thực thi (running) một tiến trình có thể tạo ra một luồng hay nhiều luồng con để phục vụ các yêu cầu của mình. Chính vì thế mà ta có các mô hình đơn luồng và đa luồng.
Mô hình đơn luồng là mô hình mà tại một thời điểm khi một tiến trình đưa ra yêu cầu thì nó sinh ra một luồng điều khiển đơn cho phép chỉ thực hiện một yêu cầu của tiến trình tại thời điểm đó.
Mô hình đa luồng là mô hình mà tại một thời điểm, khi tiến trình đưa ra các yêu cầu thì nó có thể sinh ra nhiều luồng điều khiển để thực hiện các yêu cầu đó tại cùng thời điểm.
Nhiều hệ điều hành cung cấp sự hỗ trợ cả luồng nhân và luồng người dùng, nên từ đó tạo ra nhiều mô hình đa luồng khác nhau. Có ba loại mô hình đa luồng thông thường:
+ Mô hình nhiều-một: ánh xạ nhiều luồng cấp người dùng tới một luồng cấp nhân.Khi đó, 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ý:
Hình1: Mô hình nhiều-một
+ Mô hình một-một: ánh xạ một luồng cấp người dùng tới một luồng cấp nhân.cho phép nhiều luồng chạy song song trên các bộ xử lý khác nhau.Nhưng nhược điểm là khi tạo một luồng người dùng thì phải tạo một luồng nhân tương ứng:
Hình 2: Mô hình một-một
+ Mô hình nhiều-nhiều: ánh xạ nhiều luồng cấp người dùng tới nhiều cấp nhân nhưng số lượng luồng người dùng phải nhỏ hơn hay bằng số lượng luồng nhân.
Hình 3: Mô hình nhiều-nhiều
Phần II. Cấp phát luồng:
Trên lý thuyết, mỗi tiến trình sẽ có một không gian địa chỉ và một dòng xử lý riêng. Nhưng trong thực tế, có một số ứng dụng cần nhiều dòng xử lý cùng chia sẻ một không gian địa chỉ tiến trình. Các dòng xử lý này có thể hoạt động song song với nhau như các tiến trình độc lập trong hệ thống. Để thực hiện điều này,các hệ điều hành đưa ra một số cơ chế thực thi mà ta gọi là luồng. Khi một tiến trình đang thực thi đưa ra các yêu cầu, trình phục vụ sẽ nhận yêu cầu và tạo ra luồng riêng để phục vụ yêu cầu đó.
1, Lời gọi hệ thống fork và exec
Các hệ điều hành dùng lời gọi hệ thống fork và exec để cấp phát luồng. Trong một chương trình đa luồng, ngữ nghĩa của lời gọi hệ thống fork và exec thay đổi.
Nếu một luồng trong lời gọi chương trình fork thì quá trình mới sao chép lại qua trình tất cả luồng hoặc một quá trình đơn luồng mới.Một số hệ Unix chọn việc sử dụng hai ấn bản của fork, một sao chép lại tất cả luồng và một sao chép lại chỉ luồng được nạp lên lời gọi hệ thống, phụ thuộc vào ứng dụng của luồng. Còn nếu một luồng nạp lời gọi hệ thống exec thì chương trình được nạp trong tham số exec sẽ thay thế toàn bộ quá trình-chứa tất cả các luồng và các quá trình tải nhẹ.
Một số lời gọi hệ thống :fork,wait,signal,exec,brk,shell,init…Trong đó:
-Fork(): Tạo ra một tiến trình mới.
-Exec(): Cho phép một tiến trình kích hoạt một chương trình “mới”.Bản chất của ‘exec’ là biến tiến trình gọi thành tiến trình mới .Tiến trình mới là một tệp thực thi và mã của nó sẽ “ghi đè ” lên không gian của tiến trình gọi ,vì vậy sẽ không có giá trị trả về kho exec thành công.
FORK
Sự tạo lập một tiến trình mới được thực hiện bằng lời gọi hệ thống fork.Fork() cho phép một tiến trình lập một bản sao của nó,trừ bộ định dạng tiến trình.Tiến trình gốc tự nhân bản chính nó được gọi là tiến trình cha và bản sao tạo ra gọi là tiến trình con.
Cú pháp như sau:
Pid = fork()
Khi thực hiên xong ,hai tiến trình trên có hai bản sao user lever context như nhau và với các giá trị trả lại pid khác nhau:
trong bản thân mã của tiến trình bố, pid là số định danh của tiến trình con;
trong bản thân mã của tiến trình con, pid=0 thông báo kết quả tạo tiến trình là tốt;
các bước thực hiện fork như sau:
1.cấp cho tt mới một đầu vào...
 
Các chủ đề có liên quan khác

Các chủ đề có liên quan khác

Top