Danh mục

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    
Hoai.2512

Hỗ trợ phí lưu trữ khi tải xuống: 13,000 VND Tải xuống file đầy đủ (26 trang) 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, PPIDLấ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ài liệu được xem nhiều: