Liên lạc giữa các tiến trình qua Socket

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

Liên lạc giữa các tiến trình qua Socket

Bài gửi  NguyenThuyPhuong_I12A on 14/3/2012, 22:07

Nhu cầu liên lạc giữa các tiến trình
Trong môi trường đa chương, một tiến trình không đơn độc trong hệ thống
, mà có thể ảnh hưởng đến các tiến trình khác , hoặc bị các tiến trình
khác tác động. Nói cách khác, các tiến trình là những thực thể độc lập ,
nhưng chúng vẫn có nhu cầu liên lạc với nhau để :
Chia sẻ thông tin: nhiều tiến trình có thể cùng quan tâm đến những dữ
liệu nào đó, do vậy hệ điều hành cần cung cấp một môi trường cho phép sự
truy cập đồng thời đến các dữ liệu chung.
Hợp tác hoàn thành tác vụ: đôi khi để đạt được một sự xử lý nhanh
chóng, người ta phân chia một tác vụ thành các công việc nhỏ có thể tiến
hành song song. Thường thì các công việc nhỏ này cần hợp tác với nhau
để cùng hoàn thành tác vụ ban đầu, ví dụ dữ liệu kết xuất của tiến trình
này lại là dữ liệu nhập cho tiến trình khác. Trong các trường hợp đó,
hệ điều hành cần cung cấp cơ chế để các tiến trình có thể trao đổi thông
tin với nhau.
Socket
- Sockets được định nghĩa là một điểm cuối giao tiếp, được xác định bởi địa chỉ IP và số hiệu cổng.
- Là một phương pháp dùng để giao tiếp giữa các tiến trình khác nhau trong mạng máy tính hay là trên một máy đơn.
- Socket là một trong những phương thức giao tiếp giữa các quá trình
(inter-process communication) như pipe , message queue .... Giả sử ta
muốn thiết kế một hệ thống trao đổi file.
- Hệ thống này hoạt động như sau : Tất cả dữ liệu được lưu trữ trên một
máy chủ mạnh để bảo đảm an toàn và dễ quản lý Giao tiếp socket giúp
chúng ta hiện thực mô hình client / server dễ dàng hơn.
VD:A
muốn đến nhà B thì trước tiên phải mở cửa đi ra ngoài. Sau đó A đi bộ
đến nhà B. Bằng cách nào để đến nhà B không quan tâm phải đi như thế
nào.Khi đến nhà B thì A phải bấm chuông để B ra mở cửa. Qúa trình kết
nối giữa 2 ứng dụng trên mạng cũng giống như vậy.Client mở một
Sockets"Cái cửa' sau đó nó nhờ các lớp mạng tạo ra kết nối tới
Server(không quan tâm là kết nối thế nào). Tiếp theo Server cũng tạo ra
một sockets khác có địa chỉ "cái cửa thứ 2, nhưng có chuông, số nhà hẻn
hoi". Khi có kết nối đúng tới Server dựa vào thông tin trên sockets của
server(giống như client tìm đúng số nhà, bấm chuông...) Thì server sẽ mở
cổng ra và client/server sẽ bắt đầu trao đổi dữ liệu.
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 đượ 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 sendreceive.
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
Ví dụ :
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.
Lieân laïc giöõa 2 maùy qua Sockets








Hình minh họa Các socket và port trong mối nối TCP.
Hình minh họa một 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.

Cơ chế socket có thể sử dụng để chuẩn hoá
mối liên lạc giữa các tiến trình vốn không liên hệ với nhau, và có thể
hoạt động trong những hệ thống khác nhau.
avatar
NguyenThuyPhuong_I12A

Tổng số bài gửi : 35
Join date : 24/02/2012
Age : 31
Đến từ : TP_ Quảng Ngãi

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

Về Đầu Trang Go down

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