intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Lập trình hệ nhúng: Chương 4 - Phạm Ngọc Hưng

Chia sẻ: ảnh ảo | Ngày: | Loại File: PDF | Số trang:26

67
lượt xem
6
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

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.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Lập trình hệ nhúng: Chương 4 - Phạm Ngọc Hưng

  1. Chương 4 Kỹ thuật lập trình nâng cao Lập trình nhúng ARM-Linux 124
  2. 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
  3. Nội dung 4.1. Tiến trình (process) 4.2. Cơ chế sử dụng signal 4.3. Lập trình giao tiếp đa tiến trình 4.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. 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
  5. 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
  6. 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ản chất là kiểu int) Lập trình nhúng ARM-Linux 129
  7. 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
  8. 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
  9. 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
  10. 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
  11. Danh sách signal thường dùng Kiểu SIGNAL Lý do gửi SIGNAL SIGHUP Báo cho chương trình khi thoát khỏi terminal SIGINT Khi người dùng nhấn Ctrl + C để tắt chương trình SIGILL 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 abort SIGKILL Khi chương trình nhận được lệnh kill (đóng chương trình) SIGUSR1 Tùy biến theo ứng dụng SIGUSR2 Tùy biến theo chương trình Lập trình nhúng ARM-Linux 134
  12. 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
  13. 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
  14. 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
  15. killsignal.c Lập trình nhúng ARM-Linux 138
  16. Ví dụ: killsignal.c (tiếp) Lập trình nhúng ARM-Linux 139
  17. Demo Lập trình nhúng ARM-Linux 140
  18. 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
  19. 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
  20. 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: hàm thực thi trong luồng  arg: các tham số truyền cho luồng  Biên dịch chương trình: gcc –o multithread multithread.c -pthread Lập trình nhúng ARM-Linux 143
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2