Gửi và nhận các thôngbáo

Một phần của tài liệu Tài liệu Phần mềm bảo mật trên môi trường Solaris docx (Trang 54 - 55)

Hầu hết các kiểu thông báo có thể đ−ợc sinh bởi các mô đun và trình điều khiển. Một vài thông báo dành cho đầu luồng. Các thông báo hay đ−ợc dùng nhất là M_DATA, M_PROTO và M_PCPROTO. Các thông báo này có thể đ−ợc chuyển giữa một tiến trình và một mô đun trên cùng (topmost) trong một luồng , với cùng một biên thông báo (mesage boundary) đ−ợc quản lý tại cả hai phía của nhận. Các thông báo M_PROTO và M_PCPROTO có chức năng chuyển các thông tin giao diện dịch vụ giữa các mô đun, trình điều khiển và các tiến trình ng−ời dùng. Một vài kiểu thông báo chỉ có thể đ−ợc dùngtrong một luồng và không thể gửi hoặc nhận từ mức ng−ời dùng. Các mô đun và trình điều khiển không giao tiếp trực tiếp với các lời gọi hệ thống trừ open và close. Đầu luồng (stream head) điều khiển tất cả các thông báo chuyển giữa các tiến trình ng−ời dùng và các thành phần streams . Các thông báo truyền giữa các tiến trình ng−ời dùng và đầu luồng (stream head) với nhiều dạng khác nhau. Ví dụ các thông báo M_DATA và M_PROTO có thể truyền trong dạng trực tiếp của chúng bởi các lời gọi hệ thống getmsg và putmsg. Lời gọi write làm cho một hoặc nhiều thông báo M_DATA đ−ợc tạo trong vùng nhớ đệm (buffer) dữ liệu đ−ợc chi ra trong lời gọi . Các thông báo M_DATA nhận tại đầu luồng (stream head) sẽ đ−ợc dùng bởi lời gọi read và đ−ợc sao chép vào vùng nhớ đệm (buffer) ng−ời dùng. Một ví dụ khác, thông báo M_SIG bắt buộc đầu luồng (stream head) phải gửi một tín hiệu tới một tiến trình.

Các mô dun và trình điều khiển (driver) có thể gửi thông báo bất kỳ theo các h−ớng trong luồng . Tuy nhiên dựa vào việc sử dụng các thông báo trong streams

và cách xử lý chúng bởi đầu luồng (stream head), các thông báo nhất định có thể đ−ợc phân loại nh− luồng lên (upstream), luồng xuống (downstream), hai chiều.

Các thông báo M_DATA, M_PROTO hoặc M_PCPROTO có thể đ−ợc gửi theo cả hai chiều. STREAMS cho phép các mô đun tạo các thông báo và chuyển chúng tới các mô đun liền kề. Tuy nhiên các lời gọi hệ thống read và write không cho phép một tiến trình ng−ời dùng tạo và nhận tất cả các thông báo. read và write chỉ có một vùng nhớ đệm (buffer) dùng cho việc truyền và nhận thông báo. Nếu thông tin điều khiển và dữ liệu đ−ợc đặt trong một vùng đệm (buffer) đơn, ng−ời dùng sẽ phải phân tích nội dung của vùng đệm (buffer )để tách dữ liệu từ thông tin điều khiển.

Một phần của tài liệu Tài liệu Phần mềm bảo mật trên môi trường Solaris docx (Trang 54 - 55)