Đang chuẩn bị nút TẢI XUỐNG, xin hãy chờ
Tải xuống
Chương 9 của bài giảng Hệ điều hành Unix trình bày về Unix IPC Interprocess Communication. Các nội dung chính trong chương này gồm có: Signal, pipes, message passing, shared memory,. Hy vọng bài giảng này sẽ cung cấp cho bạn đọc những kiến thức hữu ích để phục vụ quá trình học tập được hiệu quả. | Nội dung bài học Bài 9. Unix IPC Interprocess Communication Ngô Duy Hòa - KHMT - CNTT Signal. Pipes. Message Passing. Shared memory. 1. Signal User mode Process 1 Send Signal x Pid2 Process 2 Xử lý sự kiện X í Kernel Signal table signal table t Kemeh I I mode 3.x I rj l xứ lý ỳ -X I ifx Các khái niệm cơ bản Signal - software interrupt hỗ trợ thực hiện các sự kiện không đồng bộ asynchonous event đến tiến trình hoặc một nhóm tiến trình. - Sinh ra do người dùng nhấn 1 tổ hợp phím Ctrl C Ctrl Z . - Sinh ra do 1 tiến trình này gửi đến tiến trình khác. Về bản chất signal là 1 số nguyên dương tương ứng với chỉ số trong bảng Signal Table. Mỗi 1 signal đều có 1 chương trình xử lý mặc định trong kernel. Các khái niệm cơ bản Vai trò của Signal - Thông báo cho tiến trình biết 1 sự kiện xảy ra. - Yêu cầu tiến trình xử lý sự kiện tương ứng. Các loại signal Trong Linux có 2 loại - Regular Signal tập các signal chuẩn trong các hệ thống Unix Linux. Nhận gia trị 1-31 - Real-time Signal các signal hỗ trợ làm việc ở chế độ real-time. Thường được dùng trong các phiên bản embedded linux. Signal nhận giá trị 32-63. - Phân biệt Khi 1 signal được gửi nhiều lần liền nhau real-time signal luôn được đưa vào hàng đợi queue và xử lý nhiều lần regular signal chỉ xử lý một lần. 1 PCB Signal Table Cơ chế thực hiện Khi 1 tiến trình nhận được 1 signal - Giá trị signal sẽ được dùng để xác định vị trí signal trong signal table. - Mỗi phần tử trong bảng sẽ trỏ đến vị trí hàm xử lý signal tương ứng. Theo mặc định thì các hàm này được xây dựng sẵn trong kernel. - Nếu người dùng muốn xử lý theo cách của mình xây dựng hàm xử lý riêng cho signal rồi thông báo cho hệ thống. - Nếu signal bị nằm trong danh sách block -Ạ tiến trình sẽ không xử lý công việc gì. Shell command Signal Trong Shell có thể dùng hàm kill để gửi 1 signal đến 1 tiến trình thông qua PID của tiến trình. Cú pháp kill - signal PID Trong đó signal thường bắt đầu bằng cụm từ SIG ví dụ SIGINT . Trong Shell có thể bỏ qua SIG chỉ cần ghi các ký .