Professional Documents
Culture Documents
11/04/09
Mục đích
• Giúp sinh viên hiểu sâu hơn về tiến trình và cách quản
lý tiến trình trên hệ điều hành Linux.
• Nắm được các kỹ thuật giao tiếp liên Tiến trình trong
lập trình đa Tiến trình.
• Vận dụng giải quyết được các bài toán thực tế.
2
11/04/09
Giao tiếp giữa các Tiến trình
3
11/04/09
Bộ nhớ chia sẻ (Shared memory)
Cho phép các tiến trình giao tiếp bằng cách đọc và ghi lên một vùng nhớ được chỉ ra.
Đây là cách đơn giản nhất cho phép hai hay nhiều tiến trình giao tiếp với nhau bằng cách
truy cập đến cùng bộ nhớ.
Khi một tiến trình thay đổi bộ nhớ, tất cả các tiến trình khác cũng sẽ thay đổi theo.
Một số hàm thông dụng:
#include <sys/shm.h>
#include <sys/stat.h>
4
11/04/09
Bộ nhớ chia sẻ (Shared memory)
5
11/04/09
Bộ nhớ chia sẻ (Shared memory)
6
11/04/09
Bộ nhớ chia sẻ (Shared memory)
7
11/04/09
Bộ nhớ chia sẻ (Shared memory)
continues
8
11/04/09
Bộ nhớ chia sẻ (Shared memory)
/* Gan ket lai phan doan bo nho chung voi dia chi khac*/
shared_memory = (char*) shmat(segment_id, (void*) 0x5000000, 0);
printf("Bo nho chia se gan ket lai den dia chi %p\n", shared_memory);
/* In ra chuoi tu bo nho chia se*/
printf("%s \n", shared_memory);
/* Go bo gan ket phan doan bo nho chung*/
shmdt(shared_memory);
/* Chi dinh lai kich thuoc phan doan */
shmctl(segment_id, IPC_RMID,0);
return 0;
}
=> Biên dịch và chạy chương trình từ dòng lệnh.
=> Tại terminal gõ lệnh
10 $ ipcs -m
11/04/09
KẾT THÚC
11
11/04/09