Bài giảng Lập trình hệ nhúng: Chương 4 - Phạm Ngọc Hưng
Số trang: 26
Loại file: pdf
Dung lượng: 756.71 KB
Lượt xem: 22
Lượt tải: 0
Xem trước 3 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Bài giảng "Lập trình hệ nhúng - Chương 4: Kỹ thuật lập trình nâng cao" cung cấp các kiến thức giúp sinh viên có thể nắm được khái niệm tiến trình (process), quan hệ giữa các tiến trình; trình bày được cơ chế sử dụng signal để giao tiếp, giữa các tiến trình; lập trình sử dụng kỹ thuật đa tiến trình; trình bày khái niệm luồng; lập trình ứng dụng đa luồng. Mời các bạn cùng tham khảo nội dung chi tiết.
Nội dung trích xuất từ tài liệu:
Bài giảng Lập trình hệ nhúng: Chương 4 - Phạm Ngọc Hưng Chương 4Kỹ thuật lập trình nâng cao Lập trình nhúng ARM-Linux 124 Mục tiêu chương 4 Sau khi kết thúc chương n{y, sinh viên có thể • Nắm được kh|i niệm tiến trình (process), quan hệ giữa c|c tiến trình • Trình b{y được cơ chế sử dụng signal để giao tiếp giữa c|c tiến trình • Lập trình sử dụng kỹ thuật đa tiến trình • Trình b{y kh|i niệm luồng • Lập trình ứng dụng đa luồng Lập trình nhúng ARM-Linux 125 Nội dung4.1. Tiến trình (process)4.2. Cơ chế sử dụng signal4.3. Lập trình giao tiếp đa tiến trình4.4. Luồng (thread)4.5. Lập trình ứng dụng đa luồng Lập trình nhúng ARM-Linux 126 4.1. Tiến trình (Process) Kh|i niệm tiến trình Lập trình đa tiến trình Lập trình nhúng ARM-Linux 127 Khái niệm tiến trình Tiến trình được tạo ra khi ta thực thi một chương trình Đa tiến trình cho phép nhiều chương trình cùng thực thi v{ chia sẻ dữ liệu với nhau C|c tham số của một tiến trình • PID (Process ID): số hiệu tiến trình • PPID (Parent Process ID): số hiệu tiến trình cha • Command: c}u lệnh được gọi để thực thi tiến trình ls –e –o pid,ppid,command Lập trình nhúng ARM-Linux 128 PID, PPIDLấy về PID: sử dụng hàm getpid()Lấy về PPID: sử dụng hàm getppid()Hàm getpid() và getppid() trả giá trị kiểu pid_t (bảnchất là kiểu int) Lập trình nhúng ARM-Linux 129 Dừng tiến trình C|ch 1: Sử dụng tổ hợp phím Ctrl + C C|ch 2: Sử dụng shell command kill PID Lập trình nhúng ARM-Linux 130 Tạo tiến trình mới Cách 1: sử dụng h{m system Lập trình nhúng ARM-Linux 131 Tạo tiến trình mới Cách 2: sử dụng h{m fork v{ exec Lập trình nhúng ARM-Linux 132 4.2. Cơ chế sử dụng signal Signal l{ cơ chế cho phép giao tiếp giữa c|c tiến trình Signal l{ cơ chế không đồng bộ Khi tiến trình nhận được signal, tiến trình phải xử lý signal ngay lập tức Linux hỗ trợ 32 SIGNAL Lập trình nhúng ARM-Linux 133 Danh sách signal thường dùng Kiểu SIGNAL Lý do gửi SIGNALSIGHUP Báo cho chương trình khi thoát khỏi terminalSIGINT Khi người dùng nhấn Ctrl + C để tắt chương trìnhSIGILL Khi chương trình chạy lệnh không hợp lệSIGABRT Khi chương trình nhận được lệnh abortSIGKILL Khi chương trình nhận được lệnh kill (đóng chương trình)SIGUSR1 Tùy biến theo ứng dụngSIGUSR2 Tùy biến theo chương trình Lập trình nhúng ARM-Linux 134 Gửi SIGNAL tới process Cách 1: sử dụng shell command kill [-SIGNAL_TYPE] PID Cách 2: sử dụng h{m kill trong chương trình, cho phép process n{y gửi signal tới process kh|c kill(PID, SIGNAL_TYPE) Lập trình nhúng ARM-Linux 135 4.3. Lập trình giao tiếp đa tiến trình Cơ chế: • Tiến trình chính tạo ra c|c tiến trình con sử dụng lệnh fork v{ exec • Sử dụng cơ chế signal để trao đổi tín hiệu giữa c|c tiến trình Lập trình nhúng ARM-Linux 136 Ví dụ Bắt v{ xử lý signal được gửi tới một tiến trình (SIGTERM và SIGINT) Lập trình nhúng ARM-Linux 137 killsignal.cLập trình nhúng ARM-Linux 138 Ví dụ: killsignal.c (tiếp)Lập trình nhúng ARM-Linux 139DemoLập trình nhúng ARM-Linux 140 4.4. Luồng (thread) Một chương trình mặc định chạy một luồng -> luồng chính Luồng chính có thể tạo ra c|c luồng kh|c, c|c luồng sẽ chạy đồng thời -> tăng tốc chương trình C|c luồng chia sẻ không gian nhớ, truy xuất file v{ các tài nguyên khác Tham số của một luồng: • thread ID: số hiệu luồng (kiểu dữ liệu pthread_t) Lập trình nhúng ARM-Linux 141 4.5. Lập trình xử lý đa luồng Tạo luồng Truyền tham số cho luồng Nhận gi| trị trả về từ luồng Tắt luồng Lập trình nhúng ARM-Linux 142 Tạo luồng Khai b|o thư viện: pthread.h H{m tạo luồng: pthread_create thread: thread id attr: các thuộc tính của luồng, mặc định để NULL start_routine ...
Nội dung trích xuất từ tài liệu:
Bài giảng Lập trình hệ nhúng: Chương 4 - Phạm Ngọc Hưng Chương 4Kỹ thuật lập trình nâng cao Lập trình nhúng ARM-Linux 124 Mục tiêu chương 4 Sau khi kết thúc chương n{y, sinh viên có thể • Nắm được kh|i niệm tiến trình (process), quan hệ giữa c|c tiến trình • Trình b{y được cơ chế sử dụng signal để giao tiếp giữa c|c tiến trình • Lập trình sử dụng kỹ thuật đa tiến trình • Trình b{y kh|i niệm luồng • Lập trình ứng dụng đa luồng Lập trình nhúng ARM-Linux 125 Nội dung4.1. Tiến trình (process)4.2. Cơ chế sử dụng signal4.3. Lập trình giao tiếp đa tiến trình4.4. Luồng (thread)4.5. Lập trình ứng dụng đa luồng Lập trình nhúng ARM-Linux 126 4.1. Tiến trình (Process) Kh|i niệm tiến trình Lập trình đa tiến trình Lập trình nhúng ARM-Linux 127 Khái niệm tiến trình Tiến trình được tạo ra khi ta thực thi một chương trình Đa tiến trình cho phép nhiều chương trình cùng thực thi v{ chia sẻ dữ liệu với nhau C|c tham số của một tiến trình • PID (Process ID): số hiệu tiến trình • PPID (Parent Process ID): số hiệu tiến trình cha • Command: c}u lệnh được gọi để thực thi tiến trình ls –e –o pid,ppid,command Lập trình nhúng ARM-Linux 128 PID, PPIDLấy về PID: sử dụng hàm getpid()Lấy về PPID: sử dụng hàm getppid()Hàm getpid() và getppid() trả giá trị kiểu pid_t (bảnchất là kiểu int) Lập trình nhúng ARM-Linux 129 Dừng tiến trình C|ch 1: Sử dụng tổ hợp phím Ctrl + C C|ch 2: Sử dụng shell command kill PID Lập trình nhúng ARM-Linux 130 Tạo tiến trình mới Cách 1: sử dụng h{m system Lập trình nhúng ARM-Linux 131 Tạo tiến trình mới Cách 2: sử dụng h{m fork v{ exec Lập trình nhúng ARM-Linux 132 4.2. Cơ chế sử dụng signal Signal l{ cơ chế cho phép giao tiếp giữa c|c tiến trình Signal l{ cơ chế không đồng bộ Khi tiến trình nhận được signal, tiến trình phải xử lý signal ngay lập tức Linux hỗ trợ 32 SIGNAL Lập trình nhúng ARM-Linux 133 Danh sách signal thường dùng Kiểu SIGNAL Lý do gửi SIGNALSIGHUP Báo cho chương trình khi thoát khỏi terminalSIGINT Khi người dùng nhấn Ctrl + C để tắt chương trìnhSIGILL Khi chương trình chạy lệnh không hợp lệSIGABRT Khi chương trình nhận được lệnh abortSIGKILL Khi chương trình nhận được lệnh kill (đóng chương trình)SIGUSR1 Tùy biến theo ứng dụngSIGUSR2 Tùy biến theo chương trình Lập trình nhúng ARM-Linux 134 Gửi SIGNAL tới process Cách 1: sử dụng shell command kill [-SIGNAL_TYPE] PID Cách 2: sử dụng h{m kill trong chương trình, cho phép process n{y gửi signal tới process kh|c kill(PID, SIGNAL_TYPE) Lập trình nhúng ARM-Linux 135 4.3. Lập trình giao tiếp đa tiến trình Cơ chế: • Tiến trình chính tạo ra c|c tiến trình con sử dụng lệnh fork v{ exec • Sử dụng cơ chế signal để trao đổi tín hiệu giữa c|c tiến trình Lập trình nhúng ARM-Linux 136 Ví dụ Bắt v{ xử lý signal được gửi tới một tiến trình (SIGTERM và SIGINT) Lập trình nhúng ARM-Linux 137 killsignal.cLập trình nhúng ARM-Linux 138 Ví dụ: killsignal.c (tiếp)Lập trình nhúng ARM-Linux 139DemoLập trình nhúng ARM-Linux 140 4.4. Luồng (thread) Một chương trình mặc định chạy một luồng -> luồng chính Luồng chính có thể tạo ra c|c luồng kh|c, c|c luồng sẽ chạy đồng thời -> tăng tốc chương trình C|c luồng chia sẻ không gian nhớ, truy xuất file v{ các tài nguyên khác Tham số của một luồng: • thread ID: số hiệu luồng (kiểu dữ liệu pthread_t) Lập trình nhúng ARM-Linux 141 4.5. Lập trình xử lý đa luồng Tạo luồng Truyền tham số cho luồng Nhận gi| trị trả về từ luồng Tắt luồng Lập trình nhúng ARM-Linux 142 Tạo luồng Khai b|o thư viện: pthread.h H{m tạo luồng: pthread_create thread: thread id attr: các thuộc tính của luồng, mặc định để NULL start_routine ...
Tìm kiếm theo từ khóa liên quan:
Lập trình hệ nhúng Bài giảng Lập trình hệ nhúng Kỹ thuật lập trình nâng cao Quan hệ giữa các tiến trình Cơ chế sử dụng signal Giao tiếp giữa các tiến trình Lập trình ứng dụng đa luồngTài liệu liên quan:
-
Giáo trình Kỹ thuật lập trình nâng cao (Ngành: Tin học ứng dụng) - CĐ Kinh tế Kỹ thuật TP.HCM
119 trang 66 0 0 -
Giáo Trình Kỹ thuật lập trình C căn bản và nâng cao: Phần 1
205 trang 32 0 0 -
Giáo Trình Kỹ thuật lập trình C căn bản và nâng cao: Phần 2
219 trang 29 0 0 -
Bài giảng môn học Lập trình hệ nhúng - Phạm Văn Thuận
113 trang 25 0 0 -
Bài giảng Lập trình hệ nhúng: Chương 7 - Phạm Ngọc Hưng
13 trang 21 0 0 -
Bài giảng Hệ điều hành: Chương 3 - ThS. Phan Đình Duy
44 trang 21 0 0 -
Bài giảng Lập trình hệ nhúng: Chương 2 - Phạm Văn Thuận
27 trang 20 0 0 -
Bài giảng Lập trình hệ nhúng: Chương 2 - Phạm Ngọc Hưng
23 trang 20 0 0 -
Bài giảng Lập trình hệ nhúng: Chương 6 - Phạm Văn Thuận
19 trang 20 0 0 -
Giáo trình Kỹ thuật lập trình nâng cao: Phần 2 - Trường ĐH Công nghiệp Thực phẩm TP. HCM
39 trang 19 0 0