Thảo luận Bài 4

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

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

Ví dụ thực tiễn về bài toán sản xuất tiêu thụ để minh họa hệ thống có nhiều tiến trình song song, đồng hành cùng chia sẽ tài nguyên

Bài gửi  dangthihoangly(I12A) on 21/3/2013, 23:52

Ta lấy ví dụ một người bán trà đá:
Người bán trà đá sẽ đóng vai trò là người sản xuất.
Người mua trà đá và uống sẽ là người tiêu thụ.
Những ly trà đá sẽ đóng vai trò là sản phẩm.
Hệ thống tiến trình như sau:
Người bán trà đá sẽ pha trà và rót ra từng ly để bán. Các vị khách (người mua trà đá) sẽ mua từng ly trà và lần lượt hoặc cùng nhau uống trà. Như vậy, cứ người mua uống hết ly trà thứ nhất người bán trà lạ rót trà vào ly bừa hết. Người khách thứ 2 uống ly trà thứ 2 xong, người bán lại rót trà vào ly thứ 2 để tiếp tục bán. Tiến trình này cứ xảy ra song song như vậy giữa các ly trà, người mua và người bán.

dangthihoangly(I12A)

Tổng số bài gửi : 64
Join date : 10/03/2012
Age : 26
Đến từ : Quang ngai

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  dangthihoangly(I12A) on 21/3/2013, 23:53

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.

dangthihoangly(I12A)

Tổng số bài gửi : 64
Join date : 10/03/2012
Age : 26
Đến từ : Quang ngai

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

Về Đầu Trang Go down

Nhu cầu đồng bộ hóa (synchronisation)

Bài gửi  dangthihoangly(I12A) on 21/3/2013, 23:54

Trong một hệ thống cho phép các tiến trình liên lạc với nhau, bao giờ hệ điều hành cũng cần cung cấp kèm theo những cơ chế đồng bộ hóa để bảo đảm hoạt động của các tiến trình đồng hành không tác động sai lệch đến nhau vì các lý do sau đây:
1. Yêu cầu độc quyền truy xuất (Mutual exclusion)
Các tài nguyên trong hệ thống được phân thành hai loại: tài nguyên có thể chia sẻ cho phép nhiều tiến trình đồng thời truy xuất, và tài nguyên không thể chia sẻ chỉ chấp nhận một ( hay một số lượng hạn chế ) tiến trình sử dụng tại một thời điểm. Tuy nhiên không thể chia sẻ của tài nguyên thường có nguồn gốc từ một trong hai nguyên nhân sau đây:

Đặc tính cấu tạo phần cứng của tài nguyên không cho phép chia sẻ.

Nếu nhiều tiến trình sử dụng tài nguyên đồng thời, có nguy cơ xảy ra các kết quả không dự đoán được do hoạt động của các tiến trình trên tài nguyên ảnh hưởng lẫn nhau.

Để giải quyết vấn đề, cần bảo đảm tiến trình độc quyền truy xuất tài nguyên, nghĩa là hệ thống phải kiểm soát sao cho tại một thời điểm, chỉ có một tiến trình được quyền truy xuất một tài nguyên không thể chia sẻ.

2. Yêu cầu phối hợp (Synchronization)
Nhìn chung, mối tương quan về tốc độ thực hiện của hai tiến trình trong hệ thống là không thể biết trước, vì điều này phụ thuộc vào nhiều yếu tố động như tần suất xảy ra các ngắt của từng tiến trình, thời gian tiến trình được cấp phát bộ xử lý Có thể nói rằng các tiến trình hoạt động không đồng bộ với nhau. Như ng có những tình huống các tiến trình cần hợp tác trong việc hoàn thành tác vụ, khi đó cần phải đồng bộ hóa hoạt động của các tiến trình , ví dụ một tiến trình chỉ có thể xử lý nếu một tiến trình khác đã kết thúc một công việc nào đó.

3. Bài toán đồng bộ hóa
3.1. Vấn đề tranh đoạt điều khiển (race condition)
Giả sử có hai tiến trình P1 và P2 thực hiện công việc của các kế toán, và cùng chia sẻ một vùng nhớ chung lưu trữ biến taikhoan phản ánh thông tin về tài khoản. Mỗi tiến trình muốn rút một khoản tiền tienrut từ tài khoản:

if (taikhoan - tienrut >=0)

taikhoan = taikhoan - tienrut;

else

error(� khong the rut tien ! �);

Giả sử trong tài khoản hiện còn 800, P1 muốn rút 500 và P2 muốn rút 400. Nếu xảy ra tình huống như sau :

Sau khi đã kiểm tra điều kiện (taikhoan - tienrut >=0) và nhận kết quả là 300, P1 hết thời gian xử lý mà hệ thống cho phép, hệ điều hành cấp phát CPU cho P2.

P2 kiểm tra cùng điều kiện trên, nhận được kết quả là 400 (do P1 vẫn chưa rút tiền) và rút 400. Giá trị của taikhoan được cập nhật lại là 400.

Khi P1 được tái kích hoạt và tiếp tục xử lý, nó sẽ không kiểm tra lại điều kiện (taikhoan - tienrut >=0)-vì đã kiểm tra trong lượt xử lý trước- mà thực hiện rút tiền. Giá trị của taikhoan sẽ lại được cập nhật thành -100. Tình huống lỗi xảy ra !

Các tình huống tương tự như thế - có thể xảy ra khi có nhiều hơn hai tiến trình đọc và ghi dữ liệu trên cùng một vùng nhớ chung, và kết quả phụ thuộc vào sự điều phối tiến trình của hệ thống- được gọi là các tình huống tranh đoạt điều khiển (race condition) .
3.2. Miền găng (critical section)
Để ngăn chặn các tình huống lỗi có thể nảy sinh khi các tiến trình truy xuất đồng thời một tài nguyên không thể chia sẻ, cần phải áp đặt một sự truy xuất độc quyền trên tài nguyên đó : khi một tiến trình đang sử dụng tài nguyên, thì những tiến trình khác không được truy xuất đến tài nguyên.

Đoạn chương trình trong đó có khả năng xảy ra các mẫu thuẫn truy xuất trên tài nguyên chung được gọi là miền găng (critical section). Trong ví dụ trên, đoạn mã :

if (taikhoan - tienrut >=0)

taikhoan = taikhoan - tienrut;

của mỗi tiến trình tạo thành một miền găng.

Có thể giải quyết vấn đề mâu thuẫn truy xuất nếu có thể bảo đảm tại một thời điểm chỉ có duy nhất một tiến trình được xử lý lệnh trong miền găng.

Một phương pháp giải quyết tốt bài toán miền găng cần thõa mãn 4 điều kiện sau :

Không có hai tiến trình cùng ở trong miền găng cùng lúc.

Không có giả thiết nào đặt ra cho sự liên hệ về tốc độ của các tiến trình, cũng như về số lượng bộ xử lý trong hệ thống.

Một tiến trình tạm dừng bên ngoài miền găng không được ngăn cản các tiến trình khác vào miền găng.

Không có tiến trình nào phải chờ vô hạn để được vào miền găng.

dangthihoangly(I12A)

Tổng số bài gửi : 64
Join date : 10/03/2012
Age : 26
Đến từ : Quang ngai

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

Về Đầu Trang Go down

Phương thức liên lạc giữa các tiến trình qua IPC

Bài gửi  dangthihoangly(I12A) on 21/3/2013, 23:54

Liên lạc trực tiếp (Direct Communications)
- Theo địa chỉ đối xứng (Symmetric Scheme)
+ Send (P,Message) - Gửi thông điệp cho P
+ Recieve (Q,Message) - Nhận thông điệp từ Q
+ Đặc điểm :
1. Liên kết được thiết lập tự động giữa mỗi cặp tiến trình.
2. Liên kết chỉ giữa 2 tiến trình.
3. Chỉ có 1 liên kết giữa mỗi cặp.
4. Tính đối xứng của liên lạc (2 bên đều biết đích xác tên của nhau khi Gửi/Nhận).
- Theo địa chỉ phi đối xứng (Asymmetric Sheme)
+ Send (P,Message) - Gửi thông điệp cho P
+ Receive (id, Message) - Nhận thông điệp đến từ tiến trình bất kỳ, Biến id chứa số hiệu tiến trình gửi.

Liên lạc gián tiếp (Indirect Communications)
- Qua các hộp thư (Mailboxes) hoặc cổng (Ports).
- Hộp thư là một thực thể qua đó thông điệp được gửi đến và lấy ra.
- Mỗi hộp thư có định dạng riêng.
- Hai tiến trình phải chung nhau một hộp thư nào đó.
- Hai loại hộp thư:
+ Hộp thư tiến trình (Process Mailbox) : Nằm trong vùng địa chỉ của một tiến trình nào đó.
+ Hôp thư hệ điều hành (OS Mailbox) : Nằm trong vùng địa chỉ của hệ điều hành.

dangthihoangly(I12A)

Tổng số bài gửi : 64
Join date : 10/03/2012
Age : 26
Đến từ : Quang ngai

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

Về Đầu Trang Go down

Socket

Bài gửi  HongGiaPhu (I22A) on 22/3/2013, 02:09

Đặc tính Socket:
- Socket được coi như là 1 điểm cuối giao tiếp gồm địa chỉ IP và Port Number.
- Là 1 phương thức kết nối hai hay nhiều máy tính khác nhau để thực hiện việc liên lạc giữa các tiến trình.
- Có thể có nhiều trường hợp dữ liệu được lưu trên máy chủ, máy Client muốn lấy về phải thực hiện việc kết nối với máy chủ thông qua Socket để hai máy có thể trao đổi tiến trình.

Minh hoạ thực tiễn: Ta sẽ giả sử một bạn A muốn đi tới nhà (thực hiện kết nối) bạn B. Ta sẽ bắt đầu quá trình từ việc A mở cửa (Socket) để bắt đầu đi tới nhà bạn B. Khi đi đến nhà B, A bắt buộc phải biết địa chỉ nhà, tới nhà B, A bấm chuông, B quan sát có phải là A không và ra mở cửa.
Quá trình trao đổi giữa các máy tính cũng tương tự như vậy, khi một máy Client muốn liên lạc, giao tiếp với máy Server thì Client phải mở 1 Socket để bắt đầu kết nối tới máy Server dựa vào địa chỉ IP máy Server, thông tin từ máy Client sẽ được chuyển tới máy Server, bên máy Server sẽ chấp nhận máy Client bằng cách mở Socket để luồng thông tin từ Client đi vào và bắt đầu quá trình kết nối.

Các quá trình liên lạc giữa các Socket:
1/ Tạo lập, mở 1 Socket.
2/ Gắn 1 Socket tới một địa chỉ.
3/ Bắt đầu quá trình liên lạc.
a) Liên lạc trong chế độ không liên kết: hai tiến trình liên lạc với nhau không kết nối trực tiếp, mỗi thông điệp phải kèm theo địa chỉ người nhận.
Đặc điểm:
- Thông tin người gửi không chắc chắn đến được người nhận, có thể mất dữ liệu.
- Một gói tin có thể gửi nhiều lần.
- Tốc độ gửi đi khá nhanh.
b) Liên lạc trong chế độ kết nối: Trong tiến trình này, hai máy tính phải kết nối với nhau, có khi một trong 2 tiến trình sẽ đợi một tiến trình khác yêu cầu kết nối theo mô hình Client - Server. Ở đây, Server sẽ dùng các gói tin "Lắng nghe" (Listen) và "Chấp nhận" (Accept) để kết nối với Client rồi sau đó Client và Server sẽ bắt đầu quá trình liên lạc và trao đổi thông tin.
4/ Hủy một socket . farao






HongGiaPhu (I22A)

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

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

Về Đầu Trang Go down

Các hàm API dùng để Gửi/Nhận thông điệp

Bài gửi  NguyenThiThom(I22A) on 22/3/2013, 02:25




Theo hình trên:
Hàm SendMessage: P gửi 1 message (thông điệp) cho Q và chờ cho đến khi Q thông báo lại đã nhận được thì mới tiếp tục xử lý x = y + z, nếu Q chưa thông báo lại thì P sẽ trong trạng thái chờ (ngủ).

Hàm PostMessage: P gửi 1 message tới cho Q nhưng không cần biết Q nhận được hay chưa và message đó được xử lý ngay tức thì, lệnh x = y + z được thực hiện.

Hàm SendMessageTimeout: P gửi 1 message tới cho Q và P sẽ chờ trong vòng 50s nếu không có trả lời thì message đó vẫn được xử lý, lệnh x = y + z được thực hiện.

NguyenThiThom(I22A)

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

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

Về Đầu Trang Go down

TCP và UDP

Bài gửi  TruongTranThanhTu(I22B) on 22/3/2013, 07:50

1 . TCP


Các tầng trong bộ giao thức TCP/IP
Giao thức điều khiển vận chuyển, nằm ở lớp Transport trong mô hình OSI và là một trong những giao thức cốt lõi của bộ giao thức TCP/IP, nhằm kết nối các máy tính trên mạng với nhau, chia sẻ và trao đổi dữ liệu.

Hỗ trợ nhiều giao thức ứng dụng phổ biến trên Internet như HTTP, FTP, SMTP… Trong bộ giao thức TCP/IP, TCP là tầng trung gian giữa Internet Protocol (IP) bên dưới và tầng ứng dụng bên trên, là giao thức truyền dữ liệu chính xác, tin cậy TCP đòi hỏi phải thiết lập kết nối trước khi truyền dữ liệu. Đó là quá trình bắt tay 3 bước(3-way handshake).



Quy trình
Client yêu cầu mở cổng cho một dịch vụ( vd: web port 80) bằng cách gửi gói tin SYN(gói tin TCP yêu cầu đồng bộ) tới server( máy chủ chứa dịch vụ web), trong gói tin thì số sequence number được gán một giá trị ngẫu nhiên X.
Server sẽ trả về cho Client gói tin SYN – ACK chấp nhận cho thiết lập kết nối, tham số acknowledgment được gán giá trị bằng X+1, tham số sequence number được gán một giá trị ngẫu nhiên Y.
Để hoàn tất quá trình thiết lập kết nối( 3 – way handshark) thì Client phải gửi cho Server thêm một gói tin là ACK tới Server, với số sequence number được gán là X+1, số acknowledgment được gán là Y+1(số Y nhận của Server) nhằm cho Server biết là đã thiết lập kêt nối với Client hợp lệ.
Quá trình kết thúc truyền dữ liệu có 4 bước



Các kết nối sử dụng TCP có 3 giai đoạn kết nối

1. thiết lập kết nối.

2. truyền dữ liệu.

3. kết thúc kết nối.

TCP giải quyết nhiều vấn đề nhằm cung cấp một dòng dữ liệu đáng tin cậy như:

Dữ liệu đến đích đúng thứ tự.
Sửa lỗi dữ liệu ở mức tối thiểu( thật ra là truyền lại).
Dữ liệu trùng lặp bị loại bỏ.
Các gói tin thất lạc/loại bỏ được gửi lại.
Kiểm soát tắc nghẽn giao thông trong việc truyền/nhận dữ liệu.
2 . UDP

Một trong những giao thức cốt lõi của bộ giao thức TCP/IP. UDP không cung cấp sự tin cậy và thứ tự truyền nhận, các gói dữ liệu có thể đến không đúng thứ tự hay bị mất mà không có thông báo. Tuy nhiên UDP nhanh và hiệu quả hơn đối với các ứng dụng truyền những file kích thước nhỏ và yêu cầu khắt khe về thời gian. Do bản chất không trạng thái nên UDP hữu dụng trong việc trả lời các truy vấn nhỏ cho số lượng lớn người yêu cầu. Được hỗ trợ bởi nhiều dịch vụ phổ biến như DNS, streaming media, VoiIP, TFTP…

UDP không thực hiện quá trình bắt tay khi gửi và nhận thông tin, do đó được gọi là connectionless( truyền không đảm bảo).

UDP không đảm bảo cho các tầng phía trên rằng thông điệp đã được gửi và người gửi cũng không có trạng thái thông điệp UDP một khi gói tin đã được gửi.




Cấu trúc gói tin UDP

UDP thích hợp với rất nhiều ứng dụng dựa vào một số đặc điểm như sau

- No connection establishment: TCP đòi hỏi quá trình bắt tay 3 bước trước khi thiết lập một kết nối, trong khi đó thì UDP không yêu cầu quá trình thiết lập này, do đó nó không làm chậm quá trình kết nối của mạng. Đó là lý do tại sao DNS lại chạy nhanh hơn khi sử dụng UDP( DNS chạy cả trên TCP lẫn UDP).

- No connectin state: TCP lưu giữ trạng thái kết nối( thông số gửi và nhận gói tin, ACK, sequence number, …) trong buffer do đó làm tốn tài nguyên hệ thống. Trong khi đó UDP không hề lưu giữ thông số nào về gói tin đã gửi đi so đó làm tốn ít tài nguyên hệ thống hơn, giúp server có thể phục vụ nhiều client truy cập hơn.

- Small segment header overhead: trong khi header của TCP chứa 20 bytes dữ liệu thì header của UDP chỉ có 8 bytes giúp UDP truyền đi nhanh hơn.

- Unragulated send rate: TCP có cơ chế điều tiết tốc tộ truyền khi gặp những link hỏng hay khi mạng bắt đầu bị đụng độ, cơ chế này phục vụ cho những ứng dụng thời gian thực (có thể có những packet hỏng nhưng thời gian truyền lại packet đó sẽ ngắn). Bên cạnh đó, UDP chỉ phụ thuộc vào tốc độ của ứng dụng phục vụ việc truyền gói tin( như tốc độ CPU, clock-rate…) chứ không phụ thuộc vào mạng có bị đụng độ(congestion ) hay không.

3 . So sánh TCP & UDP

Giống nhau:

Đều là nền tảng trong việc truyền thông tin trên mạng IP, hỗ trợ nhiều ứng dụng.
Có cơ chế checksum( 16 bits).
Không hỗ trợ truyền dữ liệu theo dòng(stream).
Không hỗ trợ Multi-homing.
Khác nhau:

TCP yêu cầu Length field trong header còn UDP thì không.
Kích thước gói tin khác nhau(gói TCP Header 20 bytes, UDP chỉ có 8 bytes).
Truyền dữ liệu không lỗi(do cơ chế sửa lỗi/ truyền lại).
Truyền dữ liệu theo đúng thứ tự( dựa vào số sequence numbers).
Truyền lại các gói dữ liệu bị mất trên đường truyền.
Loại bỏ các gói dữ liệu trùng lặp.
Có cơ chế tránh tắc nghẽn đường truyền.

TruongTranThanhTu(I22B)

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

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

Về Đầu Trang Go down

Socket

Bài gửi  TruongTranThanhTu(I22B) on 22/3/2013, 08:08

Socket là một thiết bị truyền thông hai chiều tương tự như tập tin, chúng ta có thể đọc hay ghi lên nó, tuy nhiên mỗi socket là một thành phần trong một mối nối nào đó giữa các máy trên mạng máy tính và các thao tác đọc/ghi chính là sự trao đổi dữ liệu giữa các ứng dụng trên nhiều máy khác nhau.
Sử dụng socket có thể mô phỏng hai phương thức liên lạc trong thực tế : liên lạc thư tín (socket đóng vai trò bưu cục) và liên lạc điện thoại (socket đóng vai trò tổng đài) .
Các thuộc tính của socket:
Domaine: định nghĩa dạng thức địa chỉ và các nghi thức sử dụng. Có nhiều domaines, ví dụ UNIX, INTERNET, XEROX_NS, ...
Type: định nghĩa các đặc điểm liên lạc:
a) Sự tin cậy
b) Sự bảo toàn thứ tự dữ liệu
c) Lặp lại dữ liệu
d) Chế độ nối kết
e) Bảo toàn giới hạn thông điệp
f) Khả năng gởi thông điệp khẩn
Để thực hiện liên lạc bằng socket, cần tiến hành các thao tác ::
Tạo lập hay mở một socket
Gắn kết một socket với một địa chỉ
Liên lạc : có hai kiểu liên lạc tùy thuộc vào chế độ nối kết:
a) Liên lạc trong chế độ không liên kết : liên lạc theo hình thức hộp thư: hai tiến trình liên lạc với nhau không kết nối trực tiếp, mỗi thông điệp phải kèm theo địa chỉ người nhận.
Hình thức liên lạc này có đặc điểm được :
người gởi không chắc chắn thông điệp của học được gởi đến người nhận, một thông điệp có thể được gởi nhiều lần, hai thông điệp được gởi theo một thứ tự nào đó có thể đến tay người nhận theo một thứ tự khác.
Một tiến trình sau khi đã mở một socket có thể sử dụng nó để liên lạc với nhiều tiến trình khác nhau nhờ sử hai primitive send và receive.
b) Liên lạc trong chế độ nối kết:
Một liên kết được thành lập giữa hai tiến trình. Trước khi mối liên kết này được thiết lập, một trong hai tiến trình phải đợi có một tiến trình khác yêu cầu kết nối.Có thể sử dụng socket để liên lạc theo mô hình client-serveur. Trong mô hình này, server sử dụng lời gọi hệ thống listen và accept để nối kết với client, sau đó , client và server có thể trao đổi thông tin bằng cách sử dụng các primitive send và receive.
Hủy một socket
Trong nghi thức truyền thông TCP, mỗi mối nối giữa hai máy tính được xác định bởi một port, khái niệm port ở đây không phải là một cổng giao tiếp trên thiết bị vật lý mà chỉ là một khái niệm logic trong cách nhìn của người lập trình, mỗi port được tương ứng với một số nguyên dương.




Các socket và port trong mối nối TCP.
cách giao tiếp giữa hai máy tính trong nghi thức truyền thông TCP. Máy A tạo ra một socket và kết buộc (bind) socket nầy với một port X (tức là một số nguyên dương có ý nghĩa cục bộ trong máy A), trong khi đó máy B tạo một socket khác và móc vào (connect) port X trong máy A.

TruongTranThanhTu(I22B)

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

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

Về Đầu Trang Go down

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

Bài gửi  TruongTranThanhTu(I22B) on 22/3/2013, 08:18

Dao Duy Thanh(I22B) đã viết:
HoangThanhThien(I22B) đã viết:
TruongTranThanhTu(I22B) đã viết:Giữa các tiến trình cần sự cộng tác với nhau để đảm bảo các tiến trình được xử lí hoạt động đạt hiệu quả tối đa.
+Chia sẻ thông tin (Information Sharing): Một tiến trình sử dụng thông tin do tiến trình khác cung cấp.
Ví dụ thực tế: Trong một nhóm kỹ sư xe máy tham gia nghiên cứu một dự án cải tiến mẫu xe máy mới. Nhóm kỹ thuật viên này chia tài liệu về dự án mới cho mỗi thành viên trong nhóm. Thành viên thứ nhất nghiên cứu về cách thay đổi mẫu mã của xe, thành viên thứ hai nghiên cứu về cách tiết kiệm xăng cho xe. Sau đó các thành viên này tập hợp những thông tin mình nghiên cứu được để hoàn thiện một chiếc xe máy mới.
+Tăng tốc tính toán (Computation Speedup): Các tiến trình cùng làm việc song song trên 1 hoặc nhiều máy để giải quyết bài toán chung.
Ví dụ thực tế: Mỗi người kỹ sư sẽ áp dụng những nghiên cứu của mình trên mỗi xe riêng để kiểm thử kết quả nghiên cứu.
+Đảm bảo tính đơn thể (Modularity): Chương trình được chia thành các đơn thể chức năng vận hành trong các tiến trình hoặc luồng khác nhau.
Ví dụ thực tế: Trong một dây chuyền lắp ráp một chiếc xe máy, mỗi người kỹ sư sẽ lắp ráp bộ phận do mình phụ trách. Điều này đảm bảo được tính đơn thể của sự cộng tác tiến trình.
+Đảm bảo tính tiện dụng (Convenience): Đảm bảo tính tiện dụng cho người dùng, người dùng sẽ được sử dụng nhiều tính năng mới.
Ví dụ thực tế: Sau khi chiếc xe cải tiến, người sử dụng sẽ được hưởng nhiều tính năng mới như: Mẫu mã đẹp, ít hao xăng, xe chạy khỏe hơn, ....

Cho mình được hỏi: Đảm bảo tính tiện dụng (Convenience): Vậy Người dùng có yêu cầu làm nhiều việc một lúc. Ví dụ như Soạn thảo ,in ấn ,duyệt web,Lấy file về,Biên dịch chương trình, kiểm tra chính tả. Vậy có gây xung đột, và có lổi trong tiến trình không bạn nhỉ ???

Mình chưa hiểu vấn đề của bạn lắm, ý của bạn là bạn thao tác tất cả những cái đó trong cùng 1 thời điểm hay sao??

Đảm bảo tính tiện dụng (Convenience): là người dùng có được những tính năng tốt hơn vì giữa các tiến trình cần sự cộng tác với nhau để đảm bảo các tiến trình được xử lí hoạt động đạt hiệu quả tối đa.nếu trong cùng 1 thời điểm mà bạn thao tác tất cả những vấn đề đó thì không có xung đột vì chương trình được chia thành các đơn thể chức năng vận hành trong các tiến trình hoặc luồng khác nhau.

TruongTranThanhTu(I22B)

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

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

Về Đầu Trang Go down

Trình bày mô hình chuyển trạng thái của tiến trình

Bài gửi  DuongTrungQuan on 22/3/2013, 10:25

Có 5 trạng thái sau:
New: tiến trình đang được tạo lập.
Running: các chỉ thị của tiến trình đang được xử lý.
Blocked: tiến trình chờ được cấp phát một tài nguyên, hay chờ một sự kiện xảy ra .
Ready: tiến trình chờ được cấp phát CPU để xử lý.
Kết thúc: tiến trình hoàn tất xử lý.

Tiến trình P1: vào hàng đợi Job-Queue ở trạng thái New, sẽ đợi 1 khoảng thời gian của quá trình điều phối chậm (Scheduler Long Term) của hệ điều hành(HĐH) để chọn tiến trình, sau khi được O.S chọn, P1 chuyển sang hàng đợi reday quueue và ở trạng thái Ready. Lúc này P1 chỉ đợi cấp CPU và running.
Sau một khỏang thời gian running, tiến trình P2 xuất hiện. Lúc này, hệ điều hành sẽ ghi lại thông tin của P1 vào thanh PCB1 bao gồm những thông tin: con trỏ, trạng thái của P1, số hiệu của tiến trình P1, Bộ đếm P1, nội dung của P1…Và chuyển P1 sang hàng đợi Waiting và chuyển trạng thái Ready. Lúc này, P2 sẽ được cấp CPU và running. Và sau một khỏang thời gian running, P2 cũng sẽ chuyển sang hàng đợi waiting và chuyển trạng thái ready, lúc này HĐH cũng ghi lại thông tin vào thanh ghi PCB2 như đã làm ở P1. Sau đó, HĐH sẽ load lại thông tin của PCB1 và P1 sẽ tiếp tục running. Quá trình này cũng sẽ lập lại cho P2. Đển khi P1 và P2 kết thúc.

Tại một thời điểm, chỉ có một tiến trình có thể nhận trạng thái running trên một bộ xử lý
bất kỳ. Trong khi đó, nhiều tiến trình có thể ở trạng thái blocked hay ready.
Các cung chuyển tiếp trong sơ đồ trạng thái biễu diễn sáu sự chuyển trạng thái có thể xảy
ra trong các điều kiện sau :
• Tiến trình mới tạo được đưa vào hệ thống
• Bộ điều phối cấp phát cho tiến trình một khoảng thời gian sử dụng CPU
• Tiến trình kết thúc
• Tiến trình yêu cầu một tài nguyên nhưng chưa được đáp ứng vì tài nguyên chưa sẵn sàng để cấp phát tại thời điểm đó ; hoặc tiến trình phải chờ một sự kiện hay thao tácnhập/xuất.
• Bộ điều phối chọn một tiến trình khác để cho xử lý .
• Tài nguyên mà tiến trình yêu cầu trở nên sẵn sàng để cấp phát ; hay sự kiện hoặc thao tác nhập/xuất tiến trình đang đợi hoàn tất.

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

Khái niệm và chức năng của PCB

Bài gửi  DuongTrungQuan on 22/3/2013, 10:27

Một khối điều khiển tiến trình (Process Control Block - PCB) là một cấu trúc dữ liệu trong nhân hệ điều hành chứa thông tin cần thiết để quản lý một tiến trình nhất định.
PCB là một cấu trúc dữ liệu chứa những thông tin quan trọng về process và có thể khác nhau trong các hệ thống khác nhau bao gồm những thông tin sau:

Định danh của tiến trình (process identifier hay PID)


Giá trị các thanh ghi của tiến trình, trong đó đáng chú ý là con trỏ chương trình và con trỏ stack


Không gian địa chỉ của tiến trình


Độ ưu tiên (trong đó tiến trình có giá trị cao hơn được ưu tiên trước, ví dụ nice trong các hệ điều hành Unix)


Thông tin kế toán tiến trình, ví dụ như thời điểm thực thi gần nhất, bao nhiêu thời gian CPU đã sử dụng...


Con trỏ tới PCB tiếp theo, nghĩa là con trỏ tới tiến trình tiếp theo được chạy


Thông tin V/R(Virtual reality) (ví dụ các thiết bị V/R được cấp phát cho tiến trình, danh sách các tệp đang mở...)


Khi chuyển ngữ cảnh, tiến trình đang thực hiện bị dừng lại và một tiến trình khác có cơ hội thực hiện. Nhân dừng việc thực hiện của tiến trình, sao chép các giá trị trong thanh ghi vào PCB và cập nhật thanh ghi với các giá trị của PCB của tiến trình mới.[list][*]
Vị trí của PCB
Vì PCB chứa những thông tin tối quan trọng đối với tiến trình, nó phải được giữ trong một vùng bộ nhớ được bảo vệ. Trong một số hệ điều hành,, PCB được đặt ở đầu của ngăn xếp nhân của tiến trình.
PCB là đối tượng quan trọng, nhờ nó HĐH có thể có được toàn bộ thông tin cơ bản nhất về một process.

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

Những lý do công tác giữa các tiến trình.

Bài gửi  NguyenTanDat(I22B) on 22/3/2013, 15:31

1. Chia sẻ thông tin (Information Sharing): Một tiến trình sử dụng thông tin do tiến trinh khác cung cấp.
2. Tăng tốc tính toán (Computation Speedup): Các tiến trình cùng làm việc song song trên 1 hoặc nhiều máy để giải quyết bài toán chung.
3. Đảm bảo tính đơn thể (Modularity): Chương trình được chia thành các đơn thể chức năng vận hành trong các tiến trình hoặc luồng khác nhau.
4. Đảm bảo tính tiện dụng (Convenience): Người dùng có nhu cầu làm nhiều việc một lúc: Soạn thảo, In ấn, Duyệt Web, Lấy file về, Biên dịch chương trình, Kiểm tra chính tả,...

NguyenTanDat(I22B)

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

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

Về Đầu Trang Go down

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

Bài gửi  PhamQuocCuong (I22A) on 22/3/2013, 16:08

Theo lý thuyết thì hệ điều hành đảm bảo các ứng dụng các tiến trình không chiếm dụng tài nguyên mãi mãi. Cụ thể đó là Task Manager, vậy tại sao trong một số trường hợp người dùng không thể tương tác với task manager được. Vậy đó là do cái gì? bạn nào giúp mình với

PhamQuocCuong (I22A)

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

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

Về Đầu Trang Go down

Phân biệt các loại trình điều phối

Bài gửi  CAOTHANHLUAN(I22B) on 22/3/2013, 17:54

Trình điều phối (Schduler) có 3 loại trình điều phối :

---Điều phối chậm (long - term schduler)
+ chọn tiến trình từ job queue để đưa vào Ready Queue
Kiểm soát độ đa chương. (số tiến trính trong bộ nhớ)
Do có nhiều thời gian (tới vài phút) loại scheduler này có điều kiện để lựa chọn kỹ càng nhầm phối hợp cân đối 2 tiến trinh2.

1. Hướng CPU (CPU - Bound) ; tính toán nhiều, ít I/O.
Ví dụ: Công ty có một chiếc ô tô (CPU), nhiều nhân viên cần đi công tác (nhiều tiến trình) phải sử dụng ô tô. Do đó, ô tô (CPU) phải bận (phục vụ) cho nhiều người (nhiều tiến trình).
2. Hướng I/O : (I/O) tính toán ít , nhiều I/O
VD: công ty có 1 chiếc xe ô to (CPU) các nhân viên trong công ty chỉ ngồi nghiên cứu I/O không sử dụng đến ô tô ; vậy quá lãng phí ô tô (CPU).

Mục đích cân bằng tải cho toàn hệ thống.
-- điều phối nhanh (short - term schedule)
-- còn gọi là điều phối cpu.
-- chọn tiến trình từ ready queue để cấp cpu.
-- có tần suất công việc cao. thường cứ 100ms lại tốn 10ms đề sát định tiến trình kế tiếp như vậy 10/(100+10)=9% thời gian cpu được dùng để điều phối công việc.
--Điều phối vừa: ( Medium - term Scheduler) :
---- là Short -Term Scheduler được thêm chức năng rút các tiến trình khỏi bộ nhớ dẫn đến làm giảm độ đa chương,sau đó đưa lại chúng vào bộ nhớ vào thời điểm thích hợp để tiếp tục thực hiện từ vị trí bị tạm ngừng trước đó.
----nhờ cách điều phối này hỗn hợp các tiến trình trong Ready Queue có tính tối ưu.


Ví dụ: Phòng thực hành nhỏ, nhưng nhiều bạn đi học thực hành (nhiều tiến trình). Thầy (HĐH) sẽ đẩy một số bạn ra khỏi lớp (rút tiến trình ra khỏi bộ nhớ). Sau khi nhóm trong phòng học xong Thầy sẽ đẩy các bạn bên ngoài vào phòng học (đưa tiến trình vào bộ nhớ vào thời điểm thích hợp).

CAOTHANHLUAN(I22B)

Tổng số bài gửi : 10
Join date : 12/03/2013
Age : 27
Đến từ : Bình Định

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

Về Đầu Trang Go down

Phân biệt điều phối chậm với điều phối nhanh

Bài gửi  Ng0HaiQuan(i22B) on 22/3/2013, 18:47

Điều phối chậm (Long-term scheduler (or job scheduler)) :
- Chọn process nào sẽ được đưa vào ready queue (từ New chuyển sang Ready)
- Kiểm soát Độ đa chương
- Do có nhiều thời gian (tới vài phút), loại scheduler này có điều kiện để lựa chọn kỹ càng nhằm phối hợp cân đối 2 loại tiến trình
+ Hướng CPU: tính toán nhiều, ít I/O.
Ví dụ: Công ty có một chiếc ô tô (CPU), có nhiều nhân viên cần đi công tác (nhiều tiến trình) phải sử dụng ô tô. Do đó, ô tô (CPU) bận (phục vụ) cho nhiều người (nhiều tiến trình).
+ Hướng I/O: tính toán ít, nhiều I/O
Ví dụ: Công ty có một chiếc ô tô (CPU), các nhân viên trong công ty ko cần sử dụng đến ô tô (I/O). Vậy quá lãng phí ô tô (CPU)
- Mục đích cân bằng tải

Điều phối nhanh (Short-term scheduler (or CPU scheduler)) :
- Còn gọi là Điều phối CPU.
- Chọn tiến trình từ Ready Queue để cấp CPU.
- Có tần suất công việc cao. Thường cứ 100 ms lại tốn 10 ms để xác định tiến trình kế tiếp, như vậy 10/(100+10)=9% thời gian CPU được dùng để điều phối công việc.

Ng0HaiQuan(i22B)

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

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

Về Đầu Trang Go down

Khối điều khiển tiến trình (PCB)

Bài gửi  LuGiaLam(I22A) on 22/3/2013, 22:44

Khối điều khiển tiến trình (PCB)

Để nắm bắt được thông tin về đối tượng mình quản lý, HĐH thường tạo ra các bảng ghi trạng thái hiện thời về từng đối tượng.
HĐH thường có 4 bảng để quản lý bộ nhớ, thiết bị, file và tiến trình.Bảng quản lý bộ nhớ ghi thông tin về bộ nhớ cấp phát cho tiến trình, các thuộc tính bảo vệ của vùng bộ nhớ.
Bảng vào/ra chứa thông tin về thiết bị. Chẳng hạn, thiết bị còn rỗi hay đã cấp phát cho tiến trình nào. Nếu đang thực hiện một thao tác vào/ra thì HĐH cần xác định trạng thái của thao tác. Bảng file cung cấp các thông tin về vị trí của file trên ổ cứng. Cuối cùng là bảng theo dõi tất cả các tiến trình. Bốn bảng này có quan hệ chặt chẽ với nhau.



Tiến trình được HĐH kiểm soát thông qua khối điều khiển tiến trình (Process Control Block – PCB). Khối này chứa các thông tin liên quan đến tiến trình sau đây:
• Trạng thái tiến trình (Process state): Có thể là tạo mới, sẵn sàng, đang chạy, phong tỏa hay kết thức.
• Con trỏ chương trình (Program couter): Chứa địa chỉ của chỉ thị sẽ được thực thi kế tiếp.
• Các thanh ghi CPU (CPU register): Số lượng các thanh ghi phụ thuộc vào kiến trúc máy tính. Các thanh ghi này có thể cho phép người dùng truy cập (thanh ghi tích lũy, thanh ghi chỉ mục, thanh ghi ngăn xếp, các thanh ghi đa chức năng, thanh ghi trạng thái hay còn gọi là thanh ghi cờ) cùng các thanh ghi đặc biệt dùng cho quá trình kiểm soát của HĐH.
• Thông tin về điều phối CPU: Quyền ưu tiên của tiến trình, con trỏ đến hàng đợi điều phối và các tham số điều phối khác.
• Thông tin quản lý bộ nhớ: Giá trị thanh ghi cơ sở và thanh ghi giới hạn: bảng trang, bảng đoạn. Thông tin này phụ thuộc vào hệ thống quản lý bộ nhớ
• Trạng thái vào/ra: Danh sách các thiết bị vào/ra tiến trình đang sử dụng, danh sách các file đang mở.

Nguồn: Tư liệu sách tham khảo Exclamation



Được sửa bởi LuGiaLam(I22A) ngày 22/3/2013, 22:49; sửa lần 1. (Reason for editing : sữa hình)

LuGiaLam(I22A)

Tổng số bài gửi : 18
Join date : 11/03/2013
Age : 27
Đến từ : Viet Nam

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

Về Đầu Trang Go down

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

Bài gửi  NguyenHoangKimVu (I11C) on 23/3/2013, 07:51

NguyenThiThom(I22A) đã viết:


Theo hình trên:
Hàm SendMessage: P gửi 1 message (thông điệp) cho Q và chờ cho đến khi Q thông báo lại đã nhận được thì mới tiếp tục xử lý x = y + z, nếu Q chưa thông báo lại thì P sẽ trong trạng thái chờ (ngủ).

Hàm PostMessage: P gửi 1 message tới cho Q nhưng không cần biết Q nhận được hay chưa và message đó được xử lý ngay tức thì, lệnh x = y + z được thực hiện.

Hàm SendMessageTimeout: P gửi 1 message tới cho Q và P sẽ chờ trong vòng 50s nếu không có trả lời thì message đó vẫn được xử lý, lệnh x = y + z được thực hiện.

Trong ứng dụng tương tác của Thầy chúng ta đã thấy rõ sự khác biệt giữa SendMessage và PostMessage.
Dùng SendMessage thì sẽ gửi xong 1 đoạn văn bản (Ti) rồi mới gửi tiếp đoạn sau (Ti+1) -> VnVoice phát âm bình thường.
Dùng PostMessage thì sẽ gửi thông tin đi liên tục mà không cần biết luồng thông tin trước đã gửi hết hay chưa -> VnVoice sẽ phát âm loạn cả lên.

Admin
Có chú ý nghe giả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

Tổ chức điều phối

Bài gửi  NguyenManhHuy(I22B) on 23/3/2013, 08:51

Các danh sách sử dụng trong quá trình điều phối.

Hệ điều hành sử dụng hai loại danh sách để thực hiện điều phối các tiến trình là danh sách sẵn sàng (ready list) và danh sách chờ đợi(waiting list).

Khi một tiến trình bắt đầu đi vào hệ thống, nó được chèn vào danh sách các tác vụ (job list). Danh sách này bao gồm tất cả các tiến trình của hệ thống. Nhưng chỉ các tiến trình đang thường trú trong bộ nhớ chính và ở trạng thái sẵn sàng tiếp nhận CPU để hoạt động mới được đưa vào danh sách sẵn sàng.

Bộ điều phối sẽ chọn một tiến trình trong danh sách sẵn sàng và cấp CPU cho tiến trình đó. Tiến trình được cấp CPU sẽ thực hiện xử lý, và có thể chuyển sang trạng thái chờ khi xảy ra các sự kiện như đợi một thao tác nhập/xuất hoàn tất, yêu cầu tài nguyên chưa được thỏa mãn, được yêu cầu tạm dừng ...Khi đó tiến trình sẽ được chuyển sang một danh sách chờ đợi.

Hệ điều hành chỉ sử dụng một danh sách sẵn sàng cho toàn hệ thống, nhưng mỗi một tài nguyên ( thiết bị ngoại vi ) có một danh sách chờ đợi riêng bao gồm các tiến trình đang chờ được cấp phát tài nguyên đó.

Quá trình xử lý của một tiến trình trải qua những chu kỳ chuyển đổi qua lại giữa danh sách sẵn sàng và danh sách chờ đợi.

Thoạt đầu tiến trình mới được đặt trong danh sách các tiến trình sẵn sàng (ready list), nó sẽ đợi trong danh sách này cho đến khi được chọn để cấp phát CPU và bắt đầu xử lí. Sau đó có thể xảy ra một trong các tình huống sau :

Tiến trình phát sinh một yêu cầu một tài nguyên mà hệ thống chưa thể đáp ứng, khi đó tiến trình sẽ được chuyển sang danh sách các tiến trình đang chờ tài nguyên tương ứng.

Tiến trình có thể bị bắt buộc tạm dừng xử lý do một ngắt xảy ra, khi đó tiến trình được đưa trở lại vào danh sách sẵn sàng để chờ được cấp CPU cho lượt tiếp theo.

Trong trường hợp đầu tiên, tiến trình cuối cùng sẽ chuyển từ trạng thái blocked sang trạng thái ready và lại được đưa trở vào danh sách sẵn sàng. Tiến trình lặp lại chu kỳ này cho đến khi hoàn tất tác vụ thì được hệ thống hủy bỏ khỏi mọi danh sách điều phối.

Các cấp độ điều phối

Thực ra công việc điều phối được hệ điều hành thực hiện ở hai mức độ : điều phối tác vụ (job scheduling) và điều phối tiến trình ( process scheduling).

a) Điều phối tác vụ

Quyết định lựa chọn tác vụ nào được đưa vào hệ thống, và nạp những tiến trình của tác vụ đó vào bộ nhớ chính để thực hiện. Chức năng điều phối tác vụ quyết định mức độ đa chương của hệ thống ( số lượng tiến trình trong bộ nhớ chính). Khi hệ thống tạo lập một tiến trình, hay có một tiến trình kết thúc xử lý thì chức năng điều phối tác vụ mới được kích hoạt. Vì mức độ đa chương tương đối ổn định nên chức năng điều phối tác vụ có tần suất hoạt động thấp .

Để hệ thống hoạt động tốt, bộ điều phối tác vụ cần biệt tính chất của tiến trình là hướng nhập xuất (I/O bounded) hay hướng xử lý ( CPU bounded). Một tiến trình được gọi là hướng nhập xuất nếu nó chủ yếu nó chỉ sử dụng CPU để thực hiện các thao tác nhập xuất. Ngược lại một tiến trình được gọi là hướng xử lý nếu nó chủ yếu nó chỉ sử dụng CPU để thực hiện các thao tác tính toán. Để cần bằng hoạt động của CPU và các thiết bị ngoại vi, bộ điều phối tác vụ nên lựa chọn các tiến trình để nạp vào bộ nhớ sao cho hệ thống là sự pha trộn hợp lý giữa các tiến trình hướng nhập xuất và các tiến trình hướng xử lý

b) Điều phối tiến trình

Chọn một tiến trình ở trạng thái sẵn sàng ( đã được nạp vào bộ nhớ chính, và có đủ tài nguyên để hoạt động ) và cấp phát CPU cho tiến trình đó thực hiện. Bộ điều phối tiến trình có tần suất hoạt động cao, sau mỗi lần xảy ra ngắt ( do đồng hồ báo giờ, do các thiết bị ngoại vi...), thường là 1 lần trong khoảng 100ms. Do vậy để nâng cao hiệu suất của hệ thống, cần phải tăng tốc độ xử lí của bộ điều phối tiến trình. Chức năng điều phối tiến trình là một trong chức năng cơ bản, quan trọng nhất của hệ điều hành.

Trong nhiều hệ điều hành, có thể không có bộ điều phối tác vụ hoặc tách biệt rất ít đối với bộ điều phối tiến trình. Một vài hệ điều hành lại đưa ra một cấp độ điều phối trung gian kết hợp cả hai cấp độ điều phối tác vụ và tiến trình

NguyenManhHuy(I22B)

Tổng số bài gửi : 30
Join date : 09/03/2013
Age : 28
Đến từ : 12H1010047

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

Về Đầu Trang Go down

Ví dụ về bài toán sản xuất-tiêu thụ

Bài gửi  NguyenTienDat (I22A) on 23/3/2013, 15:20

Ví dụ trong một lớp sử dụng chung 1 cái bảng:
- Mỗi sinh viên là một tiến trình
- Những sinh viên nào lên bảng viết hoặc trình bày quan điểm của mình về một vấn đề nào đó thì ta gọi đó là một tiến trình sản xuất.
- Những sinh viên phía dưới tập trung lắng nghe, đọc thông tin hoặc chụp hình, sao lưu thì ta gọi đó là một tiến trình tiêu thụ.
Trong cuộc sống, hai tiến trình luôn xảy ra song song với nhau. Có tiêu thụ thì có sản xuất và ngược lại sản xuất ra thì cần phải có thứ để tiêu thụ.

NguyenTienDat (I22A)

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

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

Về Đầu Trang Go down

Process vs Thread

Bài gửi  TranQuocLoc(I22A) on 23/3/2013, 22:34

Tiến trình và Luồng

Tiến trình là một thể hiện thực ti (an execution instance) của một ứng dụng. Điều đó có nghĩa là gì? Ví dụ, khi bạn kích đúp chuột vào biểu tưởng Microsoft Word, bạn đã khởi động một tiến trình chạy chương trình Word. Một luồng là một phần thực thi (a path of execution) trong một tiến trình. Một chủ đề có thể bao gồm nhiều luồng. Khi bạn khởi động Word, hệ điều hành tạo ra một tiến trình và bắt đầu thực hiện của luồng chính của tiến trình đó.

Điều quan trọng cần lưu ý là một luồng có thề làm bất cứ việc gì mà tiến trình có thể làm. Nhưng từ khi một tiến trình có thể bao gồm nhiều luồng, thì luồng có thể được coi là một tiền trình ‘nhẹ’. Như vậy, sự khác biệt chủ yêu giữa một tiến trình và một luồng là khối lượng công việc mà chúng được giao. Luồng được sử dụng cho các nhiệm vụ nhỏ, trong khi tiến trình được sử dụng cho các nhiệm vụ ‘nặng ký’ hơn – thực thi các ứng dụng.

Một sự khác biệt nữa giữa tiến trình và luồng là các luồng trong cùng một tiến trình chia sẻ cùng một không gian địa chỉ, còn tiến trình thì không. Điều này cho phép các luồng đọc ra và ghi vào cùng một cấu trúc dữ liệu và các biến, và cũng tạo điều kiện giao tiếp giữa các luồng với nhau. Trong khi đó, truyền thông giữa các tiến trình - còn được gọi là IPC (Inter-Process Communication) – là khá khó khăn và chiếm nhiều tài nguyên.

Đa luồng

Luồng, tất nhiên, cho phép đa luồng. Một ví dụ phổ biến trong thực tế cho thấy lợi thế của công nghệ đa luồng là bạn đang dùng một trình xử lý văn bản để in một tài liệu sử dụng một luồng chạy nền (a background thread), cùng lúc đó một luồng khác vẫn nhận dữ liệu nhập vào của người dùng, do đó bạn vẫn có thể soạn một tài liệu khác trong khi tài liệu trước đó đang được in.

Nếu chúng ta chạy một ứng dụng chỉ có 1 luồng, khi đó ứng dụng chỉ có thể làm một việc tại một thời điểm - vì vậy vừa in vừa nhận dữ liệu người dùng nhập vào là bất khả thi trong một luồng duy nhất.
Mỗi tiến trình có không gian địa chỉ riêng của nó, nhưng các luồng trong tiến trình chia sẻ không gian địa chỉ đó. Luổng cũng chia sẻ các tài nguyên khác trong tiến trình đó. Điều này có nghĩa là rất dễ dàng chia sẻ dữ liệu giữa các luồng, nhưng cũng rất dễ dàng cho việc một luồng có thể xâm nhập vào các luồng khác (worm, trojan, virus, …) có thể dẫn tới những điều tồi tệ.

Các chương trình đa luồng phải được lập trình một cách cẩn thận để ngăn chặn những điều xấu xảy ra. Các phần code sửa đổi cấu trúc dữ liệu được chia sẻ cho nhiều chủ đề được gọi là các bộ phận quan trọng (critical sections). Khi một critical sections đang chạy trong một luồng nào đó thì các luồng khác không được phép truy cập tới critical section đó. Điều này được gọi là đồng bộ hóa, mà tôi sẽ không đề cập đến trong phần này. Tóm lại, đa luồng phải được lập trình vô cùng cẩn thận.

Ngoài ra, chuyển đổi giữa các luồng nói chung là ít tốn kém hơn so với tiến trình. Và cuối cùng, the overhead (chi phí truyền thông) giữa các luồng thấp hơn giữa các tiến trình.

Dưới đây là tóm tắc sự khác biệt giữa luồng và tiến trình:

1. Tạo một luồng dễ hơn tạo một tiến trình kể từ khi chúng không yêu cầu một không gian địa chỉ riêng biệt.
2. Không giống như luồng, các tiến trình không chia sẻ cùng một không gian địa chỉ.
3. Luồng được coi là nhẹ bởi vì chúng sử dụng ít tài nguyên hơn tiến trình.
4. Các tiến trình độc lập với nhau. Các luồng thì phụ thuộc lẫn nhau do chia sẻ cùng một không gian địa chỉ.
5. Một tiến trình có thể bao gồm nhiều luồng


Nguồn: http://www.programmerinterview.com

TranQuocLoc(I22A)

Tổng số bài gửi : 10
Join date : 09/03/2013
Age : 26
Đến từ : Bà Rịa- Vũng Tàu

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

Về Đầu Trang Go down

Một vài ứng dụng sử dụng Socket

Bài gửi  TranDangKhoa(I22A) on 24/3/2013, 11:46


Các ngôn ngữ lập trình như VB, C++, C#, Java,.. đều có những thư viên hỗ trợ cho việc tạo lập các kết nối socket, và socket là một trong những ứng dụng mạnh và đến ngày nay, socket vẫn được sử dụng khá phổ biến, khi lập trình phần mềm. Nguyên lý hoạt động khá đơn giản và có thể dễ mường tượng như sau:

- Nếu phần mềm socket client sẽ được khai báo: IP address destination và port destination, sẽ được truy xuất đế Socket Server (trong trường hợp Server đang bật và Server có thể cho phép nhiều connections liên kết tới).

Một số ứng dụng như: trình duyệt (WebBrowser), trò chuyện (Chat), hội nghị truyền hình (Video Conferences), tuyền dẫn tập tin (FTP),...

TranDangKhoa(I22A)

Tổng số bài gửi : 32
Join date : 10/03/2013
Age : 25
Đến từ : Lớp I22A

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

Về Đầu Trang Go down

Job Queue và Ready Queue

Bài gửi  NguyenVanPhat(I22B) on 25/3/2013, 10:11

Job Queue: là hàng chờ công việc, chứa các tiến trình chờ được vận hành.
Ready Queue: là hàng chờ sẵn sàng, chứa các tiến trình chờ được cấp CPU.
Giống nhau:
- Đều là các hàng chờ chứa các tiến trình cần vận hành.
- Đều cần thuật giải điều phối để sắp xếp các tiến trình.
Khác nhau:
- Dùng giải thuật điều phối chậm(Long - term Scheduler) để đưa các tiến trình từ Job Queue vào Ready Queue.
- Dùng giải thuật điều phối nhanh(Short - term Scheduler) chọn các tiến trình trong Ready Queue để cấp CPU.
Job Queue : Có nhiều thời gian xử lý hơn.
Ready Queue : Có ít thời gian so với Job Queue.

NguyenVanPhat(I22B)

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

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

Về Đầu Trang Go down

Hướng I/O và hướng CPU

Bài gửi  NguyenVanPhat(I22B) on 25/3/2013, 10:12

Hướng CPU: scan virus, scan registry, defragment hardisk....
( đại khái là những công việc đòi hỏi CPU phải tính toán nhiều, sử dụng nhiều bộ nhớ ( RAM ), và khi nó làm việc thì ta ít chú ý đến nó - vì nó " im hơi lặng tiếng" quá mà
Hướng I/O:Nghe nhạc, xem phim, chơi game....

NguyenVanPhat(I22B)

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

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

Về Đầu Trang Go down

Liên lạc giũa các tiến trình

Bài gửi  TrỉnhToQuyen(I12A) on 27/3/2013, 14:01

Có 2 loại: liên lạc trực tiếp và gián tiếp
-Trực tiếp: có 2 phương án: đối xứng và không đối xứng
Đối xứng: giữa 2 tiến trình chỉ có 1 liên kết với nhau, và biết chính xác tên của 2 tiến trình muốn gửi/ nhận với nhau khi gửi nhận
-Gián tiếp: là liên lạc giữa các tiến trình qua hộp thư chung. Gửi : đưa thông tin vào hộp thu đó. Nhận: vào hộp thư đó để lấy thông tin.
có 2 loại hộp thư: hộp thư tiến trình người dùng (VD: hộp thư riêng ở nhà), hộp thư hệ thống(VD: hộp thư đặt ở bưu điện)

Bạn nào có thể giải thích rõ thêm về liên lạc trực tiếp không đối xứng giúp mình được không.

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

Mô hình chuyển trạng thái của tiến trình

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

* Tiến trình: là một thực thể chủ động, trong máy tính và đã được nạp vào bộ nhớ chính. Là một thực thể chủ động của một chương trình, có thời gian sống nhất định. Có nhiều trạng thái và có thể chuyển từ trạng thái này sang trạng thái khác. Một tiến trình có thể sinh ra nhiều tiến trình con khác khi thực hiện.

* Các trạng thái tiến trình: các trạng thái của tiến trình: Khi một tiến trình thực thi, nó thay đổi trạng thái.Trạng thái của tiến trình tại 1 thời điểm được xác định bởi các hoạt động hiện hành của nó tại thời điểm đó.Mỗi tiến trình có thể ở 1 trong các trạng thái sau:
+ Mới (new): tiến trình đang được tạo ra.
+ Đang chạy (running): các chỉ thị đang được thực thi.
+ Chờ (waiting): tiến trình đang chờ sự kiện xảy ra (VD: hoàn thành việc nhập/xuất hay nhận dạng tín hiệu).
+ Sẵn sàng (ready): tiến trình đang chờ được cấp phát CPU để xử lý.
+ Kết thúc (terminated): tiến trình hoàn thành việc thực thi.
Tại một thời điểm xác định, chỉ có duy nhất 1 tiến trình ở trạng thái running nhưng nhiều tiến trình có thể ở trạng thái waiting hay ready.

* Vai trò của khối kiểm soát tiến trình PCB: PCB là 1 cấu trúc dữ liệu được hệ điều hành duy trì cho mỗi tiến trình dùng để chứa các thông tin cần thiết về tiến trình đó. PCB chứa "Bản sao công việc của tiến trình" gồm:
+ Trạng thái tiến trình (process state): trạng thái có thể là mới, sẵn sàng, đang chạy, chờ đợi, kết thúc, …
+ Bộ đếm chương trình (program counter): bộ đếm hiển thị địa chỉ của chỉ thị kế tiếp được thực thi cho quá trình này.
+ Các thanh ghi (registers) CPU: các thanh ghi khác nhau về số lượng và loại, phụ thuộc vào kiến trúc máy tính. Chúng gồm các bộ tổng (accumulators), các thanh ghi chỉ mục, các con trỏ ngăn xếp, và các thanh ghi đa năng (generalpurpose registers), cùng với thông tin mã điều kiện (condition-code information). Cùng với bộ đếm chương trình, thông tin trạng thái này phải được lưu khi một ngắt xảy ra, cho phép quá trình được tiếp tục một cách phù hợp sau đó.
+ Thông tin lập thời biểu CPU (CPU-scheduling information): thông tin gồm độ ưu tiên của quá trình, các con trỏ chỉ tới các hàng đợi lập thời biểu, và bất kỳ tham số lập thời biểu khác.
+ Thông tin quản lý bộ nhớ (Memory-management information): thông tin này có thể gồm những thông tin như giá trị của các thanh ghi nền và thanh ghi giới hạn, các bảng trang hay các bảng phân đoạn, phụ thuộc hệ thống bộ nhớ được dùng bởi hệ điều hành.
+ Thông tin tính toán (accounting information): thông tin này gồm lượng CPU và thời gian thực được dùng, công việc hay số quá trình,…
+ Thông tin trạng thái nhập/xuất (I/O status information): thông tin này gồm danh sách của thiết bị nhập/xuất được cấp phát quá trình này, một danh sách các tập tin đang mở,.. PCB đơn giản phục vụ như kho chứa cho bất cứ thông tin khác nhau từ quá trình này tới quá trình khác.



P1 xuất hiện ở hàng đợi Job-Queue, trình điều phối chậm đưa P1 vào hàng đợi Ready để chờ được cấp CPU và running. Sau 1 khoảng thời gian running, tiến trình P2 xuất hiện ở Job-Queue, lúc này HĐH sẽ ghi lại thông tin của P1 vào PCB1 và chuyển P1 vào hàng đợi Ready, P2 được cấp CPU và được thực thi. Sau 1 khoảng thời gian, P2 được đưa vào hàng đợi Waiting rồi được chuyển lên Ready, HĐH cũng đã ghi lại các thông tin của P2 vào PCB2. HĐH tiếp tục cho P1 running sau khi đã load lại các thông tin cần thiết từ PCB1, quá trình này sẽ được lặp lại cho đến khi P1 và P2 hoàn tất.

Admin
P2 đã chuyển sang Ready Queue đâu mà được cấp CPU ?

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

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

Bài gửi  Sponsored content Today at 14:49


Sponsored content


Về Đầu Trang Go down

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