Bài giảng Hệ điều hành - Bài 2: Tiến trình & luồng được biên soạn nhằm trang bị cho các bạn những kiến thức về khái niệm Tiến trình (process), giao tiếp giữa các tiến trình, luồng (Thread). Mời các bạn tham khảo bài giảng để bổ sung thêm kiến thức về lĩnh vực này.
Ths Lương Trần Hy Hiến www.hutechos.tk Khái niệm Tiến trình (process) Giao tiếp tiến trình Luồng (Thread) Tiến trình = thể việc thi hành chương trình Thường gọi “HeavyWeight Process” Tiến trình trừu tượng hóa cung cấp HĐH, cần thiết để thi hành chương trình Một ngữ cảnh tính tốn tách biệt cho ứng dụng Ngữ cảnh tính tốn Trạng thái CPU + không gian địa + môi trường Tiến trình chương trình thực thi 5 Tiến trình thường gồm có hai phần: Một dãy lệnh mà cần phải thi hành ▪ Code ▪ Trạng thái CPU Các tài ngun riêng ▪ Trạng thái nhớ (không gian địa chỉ) ▪ Trạng thái nhập xuất (file thao tác) 6 Tạo tiến trình Khởi động hệ thống Người dùng kích hoạt chương trình Một tiến trình tạo tiến trình khác ▪ Unix/ Linux: exec(), fork() ▪ Windows: CreateProcess() Cây tiến trình ▪ Unix/ Linux: tiến trình cha, có mối quan hệ chặt chẽ ▪ Windows: tiến trình cha, độc lập với Dừng tiến trình Xử lý xong lệnh cuối hay gọi lệnh kết thúc ▪ Unix/ Linux: exit() ▪ Windows: ExitProcess() Một tiến trình yêu cầu dừng tiến trình khác ▪ Unix/ Linux: kill() ▪ Windows: TerminateProcess() Điều xảy tiến trình “nạn nhân” chưa muốn “chết”? Do lỗi chương trình Khi tiến trình thực thi, thay đổi trạng thái Trạng thái tiến trình xác định hoạt động Mỗi tiến trình trạng thái sau: (new), sẵn sàng (ready), chạy (running), chờ (waiting), hay kết thúc (terminated) 10 37 Luồng (thread) dòng điều khiển phạm vi tiến trình Tiến trình đa luồng gồm nhiều dịng điều khiển khác khơng gian địa Những lợi điểm đa luồng gồm đáp ứng nhanh người dùng, chia sẻ tài nguyên tiến trình, tính kinh tế khả thuận lợi kiến trúc đa xử lý Tách biệt: Trạng thái CPU, ngăn xếp Chia sẻ: Mọi thứ khác ▪ Data, Code, Heap, môi trường Đặc biệt: Không gian địa (Tại sao?) 38 Mỗi tiến trình ln có luồng (dịng xử lý cho hàm main()) Ngồi luồng chính, tiến trình cịn có nhiều luồng khác Các luồng tiến trình Chia sẻ khơng gian vùng code data Có vùng stack riêng 39 MultiThreading = chương trình tạo số hoạt động đồng thời HeaveWeight Process = Tiến trình với luồng 40 40 TCB thường chứa thông tin riêng luồng ID luồng Không gian lưu ghi Con trỏ tới vị trí xác định ngăn xếp Trạng thái luồng Thông tin chia sẻ luồng tiến trình Các biến toàn cục Các tài nguyên sử dụng tập tin,… Các tiến trình Thông tin thống kê … 41 PC SP Mã hàm thread_create() PCBs TCBs thread_create() new_thread_starts_here stacks 42 Quản lý tiểu trình mức người dùng thư viện hỗ trợ: ▪ POSIX Pthreads ▪ Win32 threads ▪ Java threads Quản lý tiểu trình mức hệ thống Hệ điều hành hỗ trợ: Windows XP/2000 Solaris Linux Mac OS X 43 44 44 Database server: Nhiều kết nối sở liệu lúc Network Server: Truy cập đồng thời từ mơi trường mạng Một tiến trình – nhiều thao tác đồng thời File Server, Web server, Paralell Programming (có nhiều CPU) Chia chương trình thành nhiều thread để tận dụng nhiều CPU Còn gọi Multi - Processing 45 45 Hệ điều hành Ưu điểm: lập lịch luồng thực OS ▪ Tối ưu hóa CPU Khuyết điểm: nhiều luồng overhead Mức người dùng Ưu điểm: overhead thấp Khuyết điểm: OS không nhận cụ thể ▪ VD: luồng bị block I/O block tất luồng khác tiến trình 46 46 Các chương trình đa luồng đưa nhiều thử thách cho việc lập trình Pthread API cung cấp tập hợp hàm để tạo quản lý luồng cấp người dùng Java cung cấp API tương tự cho việc hỗ trợ luồng Tuy nhiên, luồng Java quản lý JVM thư viện luồng cấp người dùng hay nhân, chúng không rơi vào loại luồng người dùng hay nhân 47 Tại không dùng nhiều tiến trình để thay cho việc dùng nhiều luồng ? Các tác vụ điều hành luồng (tạo, kết thúc, điều phối, chuyển đổi,…) tốn chi phí thực so với tiến trình Liên lạc luồng thông qua chia sẻ nhớ, không cần can thiệp kernel 48 Tương tự tiến trình: new: Luồng tạo ready: Luồng chờ để chạy running: Luồng thi hành waiting: Luồng chờ kiện terminated: Luồng kết thúc thi hành Thông tin luồng lưu TCB 49 49 Bài giảng có tham khảo từ: Slide Bài giảng Hệ điều hành, ĐH KHTN TpHCM Slide Bài giảng Hệ điều hành, ĐH CNTT 50 51 ... phép tiến trình trao đổi thơng điệp Nhiệm vụ cung cấp chế giao tiếp tách rời với hệ điều hành Hai chế dùng lúc hệ điều hành 36 37 Luồng (thread) dòng điều khiển phạm vi tiến trình Tiến. .. Trạng thái tiến trình new: Tiến trình vừa tạo (chạy chương trình) ready: Tiến trình sẵn sàng để chạy (đang chờ cấp CPU) running: Tiến trình chạy (thi hành lệnh) waiting: Tiến trình chờ... chương trình Một tiến trình tạo tiến trình khác ▪ Unix/ Linux: exec(), fork() ▪ Windows: CreateProcess() Cây tiến trình ▪ Unix/ Linux: tiến trình cha, có mối quan hệ chặt chẽ ▪ Windows: tiến trình