Bài giảng Hệ điều hành - Chương 2: Quản lý tiến trình - Phạm Đăng Hải

• Khi chương trình đang thực hiện

• Dược cung cấp tài nguyên (CPU, bộ nhớ, thiết bị vào/ra...) để hoàn thành công việc • Tài nguyên được cấp khi bắt đầu chương trình hay trong khi

chương trình đang thực hiện + Gọi là tiến trình (process). + Hệ thống bao gồm tập các tiến trình thực hiện đồng thời

Tiến trình hệ điều hành Thực hiện mã lệnh hệ thống

Tiến trình người dùng Thực hiện mã lệnh người dùng • Tiến trình có thể chứa một hoặc nhiều luồng điều khiển + Trách nhiệm của Hệ điều hành: Đảm bảo hoạt động của tiến | trình và tiểu trình (luồng)

• Tạo/xóa tiến trình (người dùng, hệ thống) + Điều phối tiến trình + Cung cấp cơ chế đồng bộ, truyền thông và ngăn ngừa tình

trạng bế tắc giữa các tiến trình

pdf 464 trang thiennv 08/11/2022 2780
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Hệ điều hành - Chương 2: Quản lý tiến trình - Phạm Đăng Hải", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

File đính kèm:

  • pdfbai_giang_he_dieu_hanh_chuong_2_quan_ly_tien_trinh_pham_dang.pdf

Nội dung text: Bài giảng Hệ điều hành - Chương 2: Quản lý tiến trình - Phạm Đăng Hải

  1. Chương trình: thực thể thụ động (nội dung file trên đĩa) Mã chương trình: Lệnh máy (CD2190EA ) Dữ liệu: Biến được lưu trữ và sử dụng trong bộ nhớ Biến toàn cục Biến được cung cấp động (malloc, new, ) Biến stack (tham số hàm, biến cục bộ ) Thư viện liên kết động (DLL) Không được dịch & liên kết cùng với chương trình Khi chương trình đang thực hiện, tài nguyên tối thiểu cần có Bộ nhớ cho mã chương trình và dữ liệu Các thanh ghi của VXL phục vụ cho quá trình thực hiện Tiến trình: thực thể chủ động (bộ đếm lệnh, tập tài nguyên) Một chương trình có thể Chỉ là một phần của trạng thái tiến trình Một chương trình, nhiều tiến trình( bộ dữ liệu khác nhau) gcc hello.c k gcc baitap.c Gọi tới nhiều tiến trình Chương 2: Quản lý tiến trình 1. Tiến trình 1.1 Khái niệm tiến trình Tiến trình >< chương trình 8 / 217
  2. Tiến trình: thực thể chủ động (bộ đếm lệnh, tập tài nguyên) Một chương trình có thể Chỉ là một phần của trạng thái tiến trình Một chương trình, nhiều tiến trình( bộ dữ liệu khác nhau) gcc hello.c k gcc baitap.c Gọi tới nhiều tiến trình Chương 2: Quản lý tiến trình 1. Tiến trình 1.1 Khái niệm tiến trình Tiến trình >< chương trình Chương trình: thực thể thụ động (nội dung file trên đĩa) Mã chương trình: Lệnh máy (CD2190EA ) Dữ liệu: Biến được lưu trữ và sử dụng trong bộ nhớ Biến toàn cục Biến được cung cấp động (malloc, new, ) Biến stack (tham số hàm, biến cục bộ ) Thư viện liên kết động (DLL) Không được dịch & liên kết cùng với chương trình Khi chương trình đang thực hiện, tài nguyên tối thiểu cần có Bộ nhớ cho mã chương trình và dữ liệu Các thanh ghi của VXL phục vụ cho quá trình thực hiện 8 / 217
  3. Một chương trình có thể Chỉ là một phần của trạng thái tiến trình Một chương trình, nhiều tiến trình( bộ dữ liệu khác nhau) gcc hello.c k gcc baitap.c Gọi tới nhiều tiến trình Chương 2: Quản lý tiến trình 1. Tiến trình 1.1 Khái niệm tiến trình Tiến trình >< chương trình Chương trình: thực thể thụ động (nội dung file trên đĩa) Mã chương trình: Lệnh máy (CD2190EA ) Dữ liệu: Biến được lưu trữ và sử dụng trong bộ nhớ Biến toàn cục Biến được cung cấp động (malloc, new, ) Biến stack (tham số hàm, biến cục bộ ) Thư viện liên kết động (DLL) Không được dịch & liên kết cùng với chương trình Khi chương trình đang thực hiện, tài nguyên tối thiểu cần có Bộ nhớ cho mã chương trình và dữ liệu Các thanh ghi của VXL phục vụ cho quá trình thực hiện Tiến trình: thực thể chủ động (bộ đếm lệnh, tập tài nguyên) 8 / 217
  4. Chương 2: Quản lý tiến trình 1. Tiến trình 1.1 Khái niệm tiến trình Tiến trình >< chương trình Chương trình: thực thể thụ động (nội dung file trên đĩa) Mã chương trình: Lệnh máy (CD2190EA ) Dữ liệu: Biến được lưu trữ và sử dụng trong bộ nhớ Biến toàn cục Biến được cung cấp động (malloc, new, ) Biến stack (tham số hàm, biến cục bộ ) Thư viện liên kết động (DLL) Không được dịch & liên kết cùng với chương trình Khi chương trình đang thực hiện, tài nguyên tối thiểu cần có Bộ nhớ cho mã chương trình và dữ liệu Các thanh ghi của VXL phục vụ cho quá trình thực hiện Tiến trình: thực thể chủ động (bộ đếm lệnh, tập tài nguyên) Một chương trình có thể Chỉ là một phần của trạng thái tiến trình Một chương trình, nhiều tiến trình( bộ dữ liệu khác nhau) gcc hello.c k gcc baitap.c Gọi tới nhiều tiến trình 8 / 217
  5. Chương 2: Quản lý tiến trình 1. Tiến trình 1.1 Khái niệm tiến trình Dịch và thực hiên một chương trình 9 / 217
  6. Hệ điều hành tạo một tiến trình và phân phối vùng nhớ cho nó Bộ thực hiện (loader/exec) Đọc và dịch (interprets) file thực thi (header file) Thiết lập không gian địa chỉ cho tiến trình để chứa mã lệnh và dữ liệu từ file thực thi Đặt các tham số dòng lệnh, biến môi trường (argc, argv, envp) vào stack Thiết lập các thanh ghi của VXL tới các giá trị thích hợp và gọi hàm "_start()"(hàm của hệ điều hành) Chương trình bắt đầu thực hiện tại "_start()". Hàm này gọi tới hàm main()(hàm của chương trình) ⇒"Tiến trình" đang thực hiện, không còn đề cập đến "chương trình" nữa Khi hàm main() kết thúc, OS gọi tới hàm "_exit()" để hủy bỏ tiến trình và thu hồi tài nguyên Tiến trình là chương trình đang thực hiện Chương 2: Quản lý tiến trình 1. Tiến trình 1.1 Khái niệm tiến trình Thực hiện một chương trình 10 / 217
  7. Bộ thực hiện (loader/exec) Đọc và dịch (interprets) file thực thi (header file) Thiết lập không gian địa chỉ cho tiến trình để chứa mã lệnh và dữ liệu từ file thực thi Đặt các tham số dòng lệnh, biến môi trường (argc, argv, envp) vào stack Thiết lập các thanh ghi của VXL tới các giá trị thích hợp và gọi hàm "_start()"(hàm của hệ điều hành) Chương trình bắt đầu thực hiện tại "_start()". Hàm này gọi tới hàm main()(hàm của chương trình) ⇒"Tiến trình" đang thực hiện, không còn đề cập đến "chương trình" nữa Khi hàm main() kết thúc, OS gọi tới hàm "_exit()" để hủy bỏ tiến trình và thu hồi tài nguyên Tiến trình là chương trình đang thực hiện Chương 2: Quản lý tiến trình 1. Tiến trình 1.1 Khái niệm tiến trình Thực hiện một chương trình Hệ điều hành tạo một tiến trình và phân phối vùng nhớ cho nó 10 / 217
  8. Chương trình bắt đầu thực hiện tại "_start()". Hàm này gọi tới hàm main()(hàm của chương trình) ⇒"Tiến trình" đang thực hiện, không còn đề cập đến "chương trình" nữa Khi hàm main() kết thúc, OS gọi tới hàm "_exit()" để hủy bỏ tiến trình và thu hồi tài nguyên Tiến trình là chương trình đang thực hiện Chương 2: Quản lý tiến trình 1. Tiến trình 1.1 Khái niệm tiến trình Thực hiện một chương trình Hệ điều hành tạo một tiến trình và phân phối vùng nhớ cho nó Bộ thực hiện (loader/exec) Đọc và dịch (interprets) file thực thi (header file) Thiết lập không gian địa chỉ cho tiến trình để chứa mã lệnh và dữ liệu từ file thực thi Đặt các tham số dòng lệnh, biến môi trường (argc, argv, envp) vào stack Thiết lập các thanh ghi của VXL tới các giá trị thích hợp và gọi hàm "_start()"(hàm của hệ điều hành) 10 / 217
  9. Khi hàm main() kết thúc, OS gọi tới hàm "_exit()" để hủy bỏ tiến trình và thu hồi tài nguyên Tiến trình là chương trình đang thực hiện Chương 2: Quản lý tiến trình 1. Tiến trình 1.1 Khái niệm tiến trình Thực hiện một chương trình Hệ điều hành tạo một tiến trình và phân phối vùng nhớ cho nó Bộ thực hiện (loader/exec) Đọc và dịch (interprets) file thực thi (header file) Thiết lập không gian địa chỉ cho tiến trình để chứa mã lệnh và dữ liệu từ file thực thi Đặt các tham số dòng lệnh, biến môi trường (argc, argv, envp) vào stack Thiết lập các thanh ghi của VXL tới các giá trị thích hợp và gọi hàm "_start()"(hàm của hệ điều hành) Chương trình bắt đầu thực hiện tại "_start()". Hàm này gọi tới hàm main()(hàm của chương trình) ⇒"Tiến trình" đang thực hiện, không còn đề cập đến "chương trình" nữa 10 / 217
  10. Tiến trình là chương trình đang thực hiện Chương 2: Quản lý tiến trình 1. Tiến trình 1.1 Khái niệm tiến trình Thực hiện một chương trình Hệ điều hành tạo một tiến trình và phân phối vùng nhớ cho nó Bộ thực hiện (loader/exec) Đọc và dịch (interprets) file thực thi (header file) Thiết lập không gian địa chỉ cho tiến trình để chứa mã lệnh và dữ liệu từ file thực thi Đặt các tham số dòng lệnh, biến môi trường (argc, argv, envp) vào stack Thiết lập các thanh ghi của VXL tới các giá trị thích hợp và gọi hàm "_start()"(hàm của hệ điều hành) Chương trình bắt đầu thực hiện tại "_start()". Hàm này gọi tới hàm main()(hàm của chương trình) ⇒"Tiến trình" đang thực hiện, không còn đề cập đến "chương trình" nữa Khi hàm main() kết thúc, OS gọi tới hàm "_exit()" để hủy bỏ tiến trình và thu hồi tài nguyên 10 / 217
  11. Chương 2: Quản lý tiến trình 1. Tiến trình 1.1 Khái niệm tiến trình Thực hiện một chương trình Hệ điều hành tạo một tiến trình và phân phối vùng nhớ cho nó Bộ thực hiện (loader/exec) Đọc và dịch (interprets) file thực thi (header file) Thiết lập không gian địa chỉ cho tiến trình để chứa mã lệnh và dữ liệu từ file thực thi Đặt các tham số dòng lệnh, biến môi trường (argc, argv, envp) vào stack Thiết lập các thanh ghi của VXL tới các giá trị thích hợp và gọi hàm "_start()"(hàm của hệ điều hành) Chương trình bắt đầu thực hiện tại "_start()". Hàm này gọi tới hàm main()(hàm của chương trình) ⇒"Tiến trình" đang thực hiện, không còn đề cập đến "chương trình" nữa Khi hàm main() kết thúc, OS gọi tới hàm "_exit()" để hủy bỏ tiến trình và thu hồi tài nguyên 10 /Tiến 217 trình là chương trình đang thực hiện
  12. Chương 2: Quản lý tiến trình 1. Tiến trình 1.1 Khái niệm tiến trình Trạng thái tiến trình Khi thực hiện, tiến trình thay đổi trạng thái Khởi tạo (New) Tiến trình đang được khởi tạo Sẵn sàng (Ready) Tiến trình đang đợi sử dụng processor vật lý Thực hiện (Running) Các câu lệnh của tiến trình đang được thực hiện Chờ đợi (Waiting) Tiến trình đang chờ đợi một sự kiện nào đó xuất hiện (sự hoàn thành thao tác vào/ra) Kết thúc (Terminated) Tiến trình thực hiện xong Trạng thái của tiến trình là một phần trong hoạt động hiện tại của tiến trình 11 / 217
  13. Hệ thống có một processor Có duy nhất một tiến trình ở trạng thái thực hiện Có thể có nhiều tiến trình ở trạng thái chờ đợi hoặc sẵn sàng Chương 2: Quản lý tiến trình 1. Tiến trình 1.1 Khái niệm tiến trình Lưu đồ thay đổi trạng thái tiến trình (Silberschatz 2002) 12 / 217
  14. Chương 2: Quản lý tiến trình 1. Tiến trình 1.1 Khái niệm tiến trình Lưu đồ thay đổi trạng thái tiến trình (Silberschatz 2002) Hệ thống có một processor Có duy nhất một tiến trình ở trạng thái thực hiện Có thể có nhiều tiến trình ở trạng thái chờ đợi hoặc sẵn sàng 12 / 217
  15. Chương 2: Quản lý tiến trình 1. Tiến trình 1.1 Khái niệm tiến trình Khối điều khiển tiến trình (PCB: Process Control Block) Mỗi tiến trình được thể hiện trong hệ thống bởi một khối điều khiển tiến trình PCB: cấu trúc thông tin cho phép xác định duy nhất một tt Trạng thái tiến trình Bộ đếm lệnh Các thanh ghi của CPU Thông tin dùng để điều phối tiến trình Thông tin quản lý bộ nhớ Thông tin tài nguyên có thể sử dụng Thông tin thống kê Con trỏ tới một PCB khác 13 / 217
  16. tail head Chương 2: Quản lý tiến trình 1. Tiến trình 1.1 Khái niệm tiến trình Danh sách tiến trình 14 / 217
  17. Chương 2: Quản lý tiến trình 1. Tiến trình 1.1 Khái niệm tiến trình Danh sách tiến trình tail head 14 / 217
  18. Tiến trình đa luồng : Là tiến trình có nhiều luồng thực thi ⇒ Cho phép thực hiện nhiều hơn một nhiệm vụ tại một thời điểm Chương 2: Quản lý tiến trình 1. Tiến trình 1.1 Khái niệm tiến trình Tiến trình đơn luồng và tiến trình đa luồng Tiến trình đơn luồng : Là chương trình thực hiện chỉ một luồng thực thi Có một luồng câu lệnh thực thi ⇒ Cho phép thực hiện chỉ một nhiệm vụ tại một thời điểm 15 / 217
  19. Chương 2: Quản lý tiến trình 1. Tiến trình 1.1 Khái niệm tiến trình Tiến trình đơn luồng và tiến trình đa luồng Tiến trình đơn luồng : Là chương trình thực hiện chỉ một luồng thực thi Có một luồng câu lệnh thực thi ⇒ Cho phép thực hiện chỉ một nhiệm vụ tại một thời điểm Tiến trình đa luồng : Là tiến trình có nhiều luồng thực thi ⇒ Cho phép thực hiện nhiều hơn một nhiệm vụ tại một thời điểm 15 / 217
  20. Chương 2: Quản lý tiến trình 1. Tiến trình 1.2 Điều phối tiến trình 1 Tiến trình Khái niệm tiến trình Điều phối tiến trình (Process Scheduling) Thao tác trên tiến trình Hợp tác tiến trình Truyền thông liên tiến trình 16 / 217
  21. Chương 2: Quản lý tiến trình 1. Tiến trình 1.2 Điều phối tiến trình Giới thiệu Mục đích Sử dụng tối đa thời gian của CPU ⇒ Cần có nhiều tiến trình trong hệ thống Vấn đề Luân chuyển CPU giữa các tiến trình ⇒ Phải có hàng đợi cho các tiến trình Hệ thống một processor ⇒ Một tiến trình thực hiện ⇒ Các tiến trình khác phải đợi tới khi CPU tự do 17 / 217
  22. Chương 2: Quản lý tiến trình 1. Tiến trình 1.2 Điều phối tiến trình Các hàng đợi tiến trìnhI Hệ thống có nhiều hàng đợi dành cho tiến trình Job-queue Tập các tiến trình trong hệ thống Ready-Queue Tập các tiến trình tồn tại trong bộ nhớ, đang sẵn sàng và chờ đợi để được thực hiện Device queues Tập các tiến trình đang chờ đợi một thiết bị vào ra. Phân biệt hàng đợi cho từng thiết bị 18 / 217
  23. Chương 2: Quản lý tiến trình 1. Tiến trình 1.2 Điều phối tiến trình Các hàng đợi tiến trình II Các tiến trình di chuyển giữa hàng đợi khác nhau Tiến trình mới tạo, được đặt trong hàng đợi sẵn sàng, và đợi cho tới khi được lựa chọn để thực hiện 19 / 217
  24. Chương 2: Quản lý tiến trình 1. Tiến trình 1.2 Điều phối tiến trình Các hàng đợi tiến trình III Tiến trình đã được chọn và đang thực hiên 1 Đưa ra một yêu cầu vào ra: đợi trong một hàng đợi thiết bị 2 Tạo một tiến trình con và đợi tiến trình con kết thúc 3 Hết thời gian sử dụng CPU, phải quay lại hàng đợi sẵn sàng Trường hợp (1&2) sau khi sự kiện chờ đợi hoàn thành, Tiến trình sẽ chuyển từ trạng thái đợi sang trạng thái sẵn sàng Tiến trình quay lại hàng đợi sẵn sàng Tiến trình tiếp tục chu kỳ (sẵn sàng, thực hiện, chờ đợi) cho tới khi kết thúc Xóa khỏi tất cả các hàng đợi PCB và tài nguyên đã cấp được giải phóng 20 / 217
  25. Chương 2: Quản lý tiến trình 1. Tiến trình 1.2 Điều phối tiến trình Bộ điều phối (Scheduler) Lựa chọn tiến trình trong các hàng đợi Điều phối công việc (Job scheduler; Long-term scheduler) Điều phối CPU (CPU scheduler; Short-term scheduler) 21 / 217
  26. Chương 2: Quản lý tiến trình 1. Tiến trình 1.2 Điều phối tiến trình Điều phối công việc Chọn các tiến trình từ hàng đợi tiến trình được lưu trong các vùng đệm (đĩa từ) và đưa vào bộ nhớ để thực hiện Thực hiện không thường xuyên (đơn vị giây/phút) Điều khiển mức độ đa chương trình (số t/trình trong bộ nhớ ) Khi mức độ đa chương trình ổn định, điều phối công việc được gọi chỉ khi có tiến trình rời khỏi hệ thống Vấn đề lựa chọn công việc Tiến trình thiên về vào/ra: sử dụng ít thời gian CPU Tiến trình thiên về tính toán: sử dụng nhiều thời gian CPU Cần lựa chọn lẫn cả 2 loại tiến tình ⇒ tt vào ra: hàng đợi sẵn sàng rỗng, lãng phí CPU ⇒ tt tính toán: hàng đợi thiết bị rỗng, lãng phí thiết bị 22 / 217
  27. Chương 2: Quản lý tiến trình 1. Tiến trình 1.2 Điều phối tiến trình Điều phối CPU Lựa chọn một tiến trình từ hàng đợi các tiến trình đang sẵn sàng thực hiện và phân phối CPU cho nó Được thực hiện thường xuyên (VD: 100ms/lần) Tiến trình thực hiện vài ms rồi thực hiện vào ra Lựa chọn tiến trình mới, đang sẵn sàng Phải thực hiện nhanh 10ms để quyết định ⇒10/(110)=9% thời gian CPU lãng phí Vấn đề luân chuyển CPU từ tiến trình này tới tiến trình khác Phải lưu trạng thái của tiến trình cũ (PCB) và khôi phục trạng thái cho tiến trình mới Thời gian luân chuyển là lãng phí Có thể được hỗ trợ bởi phần cứng Vấn đề lựa chọn tiến trình (điều phối CPU) 23 / 217
  28. Chương 2: Quản lý tiến trình 1. Tiến trình 1.2 Điều phối tiến trình Swapping tiến trình (Medium-term scheduler) Nhiệm vụ Đưa t/trình ra khỏi bộ nhớ (làm giảm mức độ đa chương trình) Sau đó đưa tiến trình quay trở lại (có thể ở vị trí khác) và tiếp tục thực hiện Mục đích: Giải phóng vùng nhớ, tạo vùng nhớ tự do rộng hơn 24 / 217
  29. Chương 2: Quản lý tiến trình 1. Tiến trình 1.2 Điều phối tiến trình Chuyển ngữ cảnh (context switch) Chuyển CPU từ tiến trình này sang tiến trình khác (hoán đổi tiến trình thực hiện) Thực hiện khi xuất hiện tín hiệu ngắt (ngắt thời gian) hoặc tiến trình đưa ra lời gọi hệ thống (thực hiện và ra) Lưu đồ của chuyển CPU giữa các t/trình(Silberschatz 2002) 25 / 217
  30. Chương 2: Quản lý tiến trình 1. Tiến trình 1.3 Thao tác trên tiến trình 1 Tiến trình Khái niệm tiến trình Điều phối tiến trình (Process Scheduling) Thao tác trên tiến trình Hợp tác tiến trình Truyền thông liên tiến trình 26 / 217
  31. Chương 2: Quản lý tiến trình 1. Tiến trình 1.3 Thao tác trên tiến trình Thao tác trên tiến trình Tạo tiến trình Kết thúc tiến trình 27 / 217
  32. Chương 2: Quản lý tiến trình 1. Tiến trình 1.3 Thao tác trên tiến trình Tạo tiến trình Tiến trình có thể tạo nhiều tiến trình mới cùng hoạt động (CreateProcess(), fork()) Tiến trình tạo: tiến trình cha Tiến trình được tạo: tiến trình con Tiến trình con có thể tạo tiến trình con khác ⇒Cây tiến trình Vấn đề phân phối tài nguyên Tiến trình con lấy tài nguyên từ hệ điều hành Tiến trình con lấy tài nguyên từ tiến trình cha Tất cả các tài nguyên Một phần tài nguyên của tiến trình cha (ngăn ngừa việc tạo quá nhiều tiến trình con) Vấn đề thực hiện Tiến trình cha tiếp tục thực hiện đồng thời với tiến trình con Tiến trình cha đợi tiến trình con kết thúc 28 / 217
  33. Chương 2: Quản lý tiến trình 1. Tiến trình 1.3 Thao tác trên tiến trình Kết thúc tiến trình Hoàn thành câu lệnh cuối và yêu cầu HĐH xóa nó (exit) Gửi trả dữ liệu tới tiến trình cha Các tài nguyên đã cung cấp được trả lại hệ thống Tiến trình cha có thể kết thúc sự thực hiện của tiến trình con Tiến trình cha phải biết định danh tiến trình con ⇒ tiến trình con phải gửi định danh cho tiến trình cha khi được khởi tạo Sử dụng lời gọi hệ thống (abort) Tiến trình cha kết thúc tiến trình con khi Tiến trình con sử dụng vượt quá mức tài nguyên được cấp Nhiệm vụ cung cấp cho tiến trình con không còn cần thiết nữa Tiến trình cha kết thúc và hệ điều hành không cho phép tiến trình con tồn tại khi tiến trình cha kết thúc ⇒Cascading termination. VD, kết thúc hệ thống 29 / 217
  34. TerminateProcess(HANDLE hProcess, UINT uExitCode) hProcess Thẻ tiến trình bị kết thúc đóng uExitCode Mã kết thúc tiến trình WaitForSingleObject(HANDLE hHandle, DWORD dwMs) hHandle Thẻ đối tượng dwMs Thời gian chờ đợi (INFINITE) Chương 2: Quản lý tiến trình 1. Tiến trình 1.3 Thao tác trên tiến trình Một số hàm với tiến trình trong WIN32 API CreateProcess( ) LPCTSTR Tên của chương trình được thực hiện LPTSTR Tham số dòng lệnh LPSECURITY_ATTRIBUTES Thuộc tính an ninh t/trình LPSECURITY_ATTRIBUTES Thuộc tính an ninh luồng BOOL Cho phép kế thừa các thẻ thiết bị (TRUE/FALSE) DWORD Cờ tạo tiến trình (VD CREATE_NEW_CONSOLE) LPVOID Trỏ tới khối môi trường LPCTSTR Đường dẫn đầy đủ đến chương trình LPSTARTUPINFO Cấu trúc thông tin cho tiến trình mới LPPROCESS_INFORMATION Thông tin về tiến trình mới 30 / 217
  35. WaitForSingleObject(HANDLE hHandle, DWORD dwMs) hHandle Thẻ đối tượng dwMs Thời gian chờ đợi (INFINITE) Chương 2: Quản lý tiến trình 1. Tiến trình 1.3 Thao tác trên tiến trình Một số hàm với tiến trình trong WIN32 API CreateProcess( ) LPCTSTR Tên của chương trình được thực hiện LPTSTR Tham số dòng lệnh LPSECURITY_ATTRIBUTES Thuộc tính an ninh t/trình LPSECURITY_ATTRIBUTES Thuộc tính an ninh luồng BOOL Cho phép kế thừa các thẻ thiết bị (TRUE/FALSE) DWORD Cờ tạo tiến trình (VD CREATE_NEW_CONSOLE) LPVOID Trỏ tới khối môi trường LPCTSTR Đường dẫn đầy đủ đến chương trình LPSTARTUPINFO Cấu trúc thông tin cho tiến trình mới LPPROCESS_INFORMATION Thông tin về tiến trình mới TerminateProcess(HANDLE hProcess, UINT uExitCode) hProcess Thẻ tiến trình bị kết thúc đóng uExitCode Mã kết thúc tiến trình 30 / 217
  36. Chương 2: Quản lý tiến trình 1. Tiến trình 1.3 Thao tác trên tiến trình Một số hàm với tiến trình trong WIN32 API CreateProcess( ) LPCTSTR Tên của chương trình được thực hiện LPTSTR Tham số dòng lệnh LPSECURITY_ATTRIBUTES Thuộc tính an ninh t/trình LPSECURITY_ATTRIBUTES Thuộc tính an ninh luồng BOOL Cho phép kế thừa các thẻ thiết bị (TRUE/FALSE) DWORD Cờ tạo tiến trình (VD CREATE_NEW_CONSOLE) LPVOID Trỏ tới khối môi trường LPCTSTR Đường dẫn đầy đủ đến chương trình LPSTARTUPINFO Cấu trúc thông tin cho tiến trình mới LPPROCESS_INFORMATION Thông tin về tiến trình mới TerminateProcess(HANDLE hProcess, UINT uExitCode) hProcess Thẻ tiến trình bị kết thúc đóng uExitCode Mã kết thúc tiến trình WaitForSingleObject(HANDLE hHandle, DWORD dwMs) hHandle Thẻ đối tượng 30 / 217 dwMs Thời gian chờ đợi (INFINITE)