Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 21 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
21
Dung lượng
456,41 KB
Nội dung
BÁO CÁO ĐỒ ÁN NGUYÊN LÝ HỆ ĐIỀU HÀNH Đề tài: Giao tiếp giữa các tiến trình bằng đường ống pipe. SVTH : Đậu Thị Huyền Lớp : 11T1 Nhóm : 12A GVHD : Mai Văn Hà GIỚI THIỆU TỔNG QUAN ĐỀ TÀI 1 CƠ SỞ LÝ THUYẾT 2 CÀI ĐẶT THUẬT TOÁN VÀ TRIỂN KHAI 3 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 4 TỔNG QUAN ĐỀ TÀI 1.1 Bối cảnh đề tài: Việc giao tiếp giữa các tiến trình trên linux có thể giúp ta hiểu rõ hơn cơ chế xử lý, và trao đổi dữ liệu giữa các tiến trình trong hệ điều hành linux. Đặc biệt là cơ chế pipe. 1.2 Mục tiêu đề tài: Nghiên cứu đề tài này sẽ có thể cho ta hiểu được thế nào là pipe và cơ chế hoạt động của nó. 1.3 Hướng giải quyết: Khi một pipe được thiết lập giữa hai tiến trình, một tiến trình sẽ ghi dữ liệu vào pipe còn tiến trình kia đọc dữ liệu từ pipe. Tạo hai tiến trình cha và con, để hai tiến trình này giao tiếp với nhau ta phải tạo một đường ống pipe. TỔNG QUAN ĐỀ TÀI 2.1Giới thiệu về hệ điều hành Linux 2.1.1.Lịch sử ra đời hệ điều hành Linux Năm 1991 tại Phần Lan, Linux B. Torvalds lúc đó là sinh viên ở trường Đại học tổng hợp Hensinki đã dùng một máy tính cá nhân có trang bị bộ xử lí 386 để nghiên cứu cách làm việc của nó. Ngày nay, Linux hoàn toàn là một hệ điều hành Unix. Nó ổn định và liên tục phát triển. CƠ SỞ LÝ THUYẾT 2.1.2 Các chức năng của hệ điều hành Linux Đa xử lí. Đa nền. Hỗ trợ truyền thông giao xử lí ( Pipes , IPC , Sockets ). Quản lí các thông điệp điều khiển khác nhau. Hệ thống quản lí thiết bị đầu cuối tuân thủ theo tiêu chuẩn POSIX. Hỗ trợ một dải rộng các thiết bị ngoại vi. Buffer cache. Hệ thống quản lí bộ nhớ trang yêu cầu. Các thư viện động và dùng chung. Thiết bị của TCP/IP và các giao thức mạng khác. CƠ SỞ LÝ THUYẾT 2.2 Tiến trình trong Linux: 2.2.1 Tổng quan về tiến trình: Tiến trình là một chương trình đang xử lý, sở hữu một con trỏ lệnh, tập các thanh ghi và các biến. Để hoàn thành tác vụ của mình, một tiến trình có thể cần đến một số tài nguyên – như CPU, bộ nhớ chính, các tập tin và thiết bị nhập/xuất. CƠ SỞ LÝ THUYẾT Sơ đồ trạng thái các tiến trình trong Linux: CƠ SỞ LÝ THUYẾT 2.2.2. Cấu trúc tiến trình Trong quá trình thực hiện,một tiến trình được đặc trưng bởi nhiều thuộc tính do hệ thống duy trì như: Trạng thái của nó. Định danh của nó. Các giá trị của các thanh ghi, bao gồm cả bộ đếm chương trình. Mã định danh người sử dụng có tên mà tiến trình đang thực hiện. Thông tin được kernel sử dụng để thiết lập lịch biểu của các tiến trình (thứ tự ưu tiên, v.v…). CƠ SỞ LÝ THUYẾT 2.2.3.Các thao tác điều khiển tiến trình Tạo lập tiến trình bằng hàm system() Thay thế tiến trình hiện hành với hàm exec() Nhân bản tiến trình với hàm fork() Kiểm soát và đợi tiến trình con Đón xử lý tín hiệu khi tiến trình con kết thúc Bỏ rơi tiến trình con CƠ SỞ LÝ THUYẾT 2.3 Cơ chế giao tiếp bằng đường ống 2.3.1 Định nghĩa Các pipe (ống dẫn) tạo thành phương tiện truyền thông giữa những tiến trình. Nguyên tắc: dữ liệu đã ghi tại một đầu và được đọc ở đầu bên kia. Đường ống pipe. Tiến trình A Tiến trình B Ống dẫn truyền thông [...]... 2.3.2 Đường ống pipe giao tiếp trao đổi dữ liệu một chiều: • Hàm pipe( ) dùng để tạo đường ống có khả năng đọc/ghi #include int pipe( int filedes[2]) Phần tử thứ nhất của mảng được dùng để đọc, trong khi phần tử thứ hai của mảng được dùng để ghi CƠ SỞ LÝ THUYẾT 2.3.3 Đường ống pipe giao tiếp trao đổi dữ liệu hai chiều: Tương đương với việc sử dụng 2 đường ống 1 chiều Cả 2 tiến trình. .. được ghi sau Thực hiện bài toán dùng pipe (hoặc shared memory) để giao tiếp CÀI ĐẶT THUẬT TOÁN VÀ TRIỂN KHAI 3.2 Mô tả bài toán: Có 2 tiến trình P0 (tiến trình cha) và P1 (tiến trình con) qua cơ chế đường ống P0 sẽ đọc file test.txt trong cùng thư mục với file chứa mã nguồn Sau đó đưa các dãy vào mảng, chuyển sang cho P1 bằng đường ống (pipe) P1 sắp xếp các danh sách theo thứ tự tăng dần và... liệu vào đường ống Tuy nhiên cũng rất dễ gây ra tình trạng tắc nghẽn Hàm read() đọc dữ liệu từ pipe -Cơ chế : nếu đường ống rỗng hàm sẽ khóa trong trạng thái chờ (block) cho đến khi dữ liệu được đổ vào đường ống hay khi đường ống bị đóng lại bởi phía bên ghi Hàm write() Dùng để ghi dữ liệu vào trong đường ống CÀI ĐẶT THUẬT TOÁN VÀ TRIỂN KHAI 3.1 Đề tài : Tạo ra 2 quá trình P0 và P1 Quá trình P0... KHAI 3.4 Kết quả chương trình: Nội dung file “test.txt” trước khi xử lý: CÀI ĐẶT THUẬT TOÁN VÀ TRIỂN KHAI 3.4 Kết quả chương trình: Chạy chương trình: CÀI ĐẶT THUẬT TOÁN VÀ TRIỂN KHAI 3.4 Kết quả chương trình: File test.txt sau khi được xử lý KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 4.1 Kết luận: Chương trình đã thỏa yêu cầu của bài toán về việc giao tiếp giữa các quá trình bằng ống pipe trên nền Linux Việc... TOÁN VÀ TRIỂN KHAI Các hàm,biến quan trọng sử dụng trong chương trình • void read_f(void) : Hàm đọc file test.txt và lấy các • • • • • dãy số vào mảng void write_f(void) : Hàm để ghi vào file test.txt các dãy số trong mảng void do_P0(int *,int *) : Thực hiện tiến trình P0 void do_P1(int *,int *) : Thực hiện tiến trình P1 Biến counter dùng để đếm số dãy số có trong file Mảng a để chứa các dãy số,đây là... Quá trình P0 đọc từ file nhiều dãy số nguyên liên tiếp (mỗi dãy có thể có số phần tử khác nhau) Sau đó quá trình này gởi lần lượt các dãy này cho quá trình P1 P1 thực hiện sắp xếp mỗi dãy theo thứ tự tăng dần, đồng thời tính tổng của dãy đó và gởi dãy kết quả cùng với tổng tính được tương ứng cho mỗi dãy về lại quá trình P0 Khi này, P0 thực hiện ghi các dãy kết quả vào lại file sao cho: dãy có tổng... trình bằng ống pipe trên nền Linux Việc đọc ghi file text chỉ thực hiện được và cho kết quả đúng khi nó thõa mãn cú pháp theo 1 dạng xác định Các kí tự trong file text phải là các số 4.2 Hướng phát triển Cần tìm hiểu đặc điểm và cách quản lý tiến trình trong các Hệ điều hành nói chung và trong Hệ điều hành Linux nói riêng Làm quen với HĐH Linux là rất quan trọng bởi Việt Nam đang khuyến khích sử . Các pipe (ống dẫn) tạo thành phương tiện truyền thông giữa những tiến trình. Nguyên tắc: dữ liệu đã ghi tại một đầu và được đọc ở đầu bên kia. Đường ống pipe. Tiến trình A Tiến trình B Ống. bản tiến trình với hàm fork() Kiểm soát và đợi tiến trình con Đón xử lý tín hiệu khi tiến trình con kết thúc Bỏ rơi tiến trình con CƠ SỞ LÝ THUYẾT 2.3 Cơ chế giao tiếp bằng đường ống 2.3.1. lập lịch biểu của các tiến trình (thứ tự ưu tiên, v.v…). CƠ SỞ LÝ THUYẾT 2.2.3 .Các thao tác điều khiển tiến trình Tạo lập tiến trình bằng hàm system() Thay thế tiến trình hiện hành với