Bài giảng lập trình hệ điều hành chương 3 tiến trình và luồng

57 540 0
Bài giảng lập trình hệ điều hành   chương 3  tiến trình và luồng

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Khoa Công Nghệ Thông Tin & Truyền Thông Đại học Cần Thơ Giảng viên: Hà Duy An Các khái niệm Định thời biểu tiến trình Các thao tác với tiến trình Giao tiếp tiến trình 8/22/2013 Chương 3: Tiến Trình • Hệ điều hành thực thi nhiều dạng chương trình: o Hệ thống bó (batch system) – jobs o Hệ thống chia thời gian – chương trình người dùng (user program) hay tác vụ (task) • Tiến trình - chương trình thực thi Sự thực thi tiến trình diễn theo cách thức • Một tiến trình bao gồm: o Mã chương chương trình (program code hay text section) o Bộ đếm chương trình (program counter) o Ngăn xếp (stack) – chứa liệu tạm thời • Các tham số hàm, địa trở về, biến cục o Phần liệu (data section) - chứa biến toàn cục o Heap – nhớ động, cấp phát suốt thời gian thực thi 8/22/2013 Chương 3: Tiến Trình • Chương trình thực thể bị động lưu trữ đĩa, tiến trình thực thể chủ động o Chương trình trở thành tiến trình nạp vào nhớ để thực thi o Chương trình kích hoạt qua thao tác nhấp chuột, nhập tên vào CLI, … o Một chương trình có vài tiến trình 8/22/2013 Chương 3: Tiến Trình • Tiến trình có trạng thái sau: o new: trình khởi tạo o running: thị trình thực thi o waiting: trình chờ đợi kiện xảy (hoàn thành xuất/nhập, chờ đợi tín hiệu) o ready: trình đợi để sử dụng CPU o terminated: trình kết thúc 8/22/2013 Chương 3: Tiến Trình 8/22/2013 Chương 3: Tiến Trình • Thông tin kết hợp với trình: o o o o o o o 8/22/2013 Trạng thái trình Bộ đếm chương trình Các ghi Thông tin định thời sử dụng CPU Thông tin quản lý nhớ Thông tin chi phí Thông tin trạng thái nhập/xuất Chương 3: Tiến Trình 8/22/2013 10 Chương 3: Tiến Trình 43 8/22/2013 Chương 3: Tiến Trình • Hầu hết chương trình ứng dụng đại đa luồng (Multithread) • Một ứng dụng có nhiều tác vụ => tác vụ cài đặt luồng: o o o o Cập nhật hiển thị Lấy liệu Kiểm tra tả Trả lời kết nối mạng,… • Tạo tiến trình cần nhiều chi phí tạo luồng • Việc lập trình đơn giản hơn, hiệu • Nhân nhiều HĐH ngày đa luồng 8/22/2013 44 Chương 3: Tiến Trình 8/22/2013 45 Chương 3: Tiến Trình 8/22/2013 46 Chương 3: Tiến Trình • • • • Tăng khả đáp ứng Chia tài nguyên dễ dàng Ít hao tốn tài nguyên hệ thống Tận dụng khả hệ thống có nhiều xử lý 8/22/2013 47 Chương 3: Tiến Trình 48 8/22/2013 Chương 3: Tiến Trình • Các hệ thống Multicore hay Multiprocessor giúp tăng lực xử lý cho hệ thống, đồng thời phát sinh nhiều vấn đề việc thiết kế phát triển chương trình: o o o o Phân chia tác vụ Cân Phân chia chia liệu Kiểm lỗi • Song song (Parallelism) khác với đồng thời (Concurrency) • Hai kiểu song song: o Dữ liệu – phân phối liệu kiểu, tác vụ xử lý giống o Tác vụ - tác vụ xử lý khác nhau, liệu giống khác 8/22/2013 49 Chương 3: Tiến Trình • Xử lý đồng thời hệ thống đơn nhân: • Xử lý song song hệ thống đa nhân: 8/22/2013 50 Chương 3: Tiến Trình 51 8/22/2013 Chương 3: Tiến Trình • User threads – cài đặt luồng mức người dùng • Kernel threads – hỗ trợ nhân (kernel) • Hầu tất hệ điều hành đa mục đích điều hỗ trợ kernel threads (Windows, Linux, MacOS X, and Solaris) • Liên hệ User threads kernel threads: o Many to One o One to One o Many to Many 8/22/2013 52 Chương 3: Tiến Trình • Nhiều user thread – kernel thread • Vấn đề: o Một luồng nghẽn => toàn tiến trình nghẽn o Chỉ luồng chạy mức nhân thời điểm định => không hiệu hệ thống multicore o Rất hệ thống dùng mô hình 8/22/2013 53 Chương 3: Tiến Trình • Mỗi user thread – kernel thread • Hiệu hệ thống multicore • Vấn đề: o Số lượng luồng tiến trình cần giới hạn chi phí tạo kernel thread đắt user thread • Các hệ thống dùng mô hình này: Windows NT/XP/2000, Linux, solaris 8/22/2013 54 Chương 3: Tiến Trình • Nhiều user thread - số lượng kernel thread hay • HĐH tạo môt số lượng kernel thread đủ dùng 8/22/2013 55 Chương 3: Tiến Trình • Thread library cung cấp API cho lập trình viên tạo quản lý luồng • Có cách cài đặt: o Mức người dùng o Mức nhân – hỗ trợ HĐH • Các thread library dùng phổ biến: POSIX Pthreads, Windows, Java 8/22/2013 56 Chương 3: Tiến Trình [...]... Quá trình con sao chép không gian địa chỉ của quá trình cha (cùng chương trình và dữ liệu) o Quá trình con tự nạp chương trình riêng của nó • Hệ thống UNIX o fork() –là lời gọi hệ thống dùng tạo quá trình mới o exec() –là lời gọi hệ thống được sử dụng sau fork() để thay thế không gian địa chỉ của quá trình bằng một chương trình mới 8/22/20 13 21 Chương 3: Tiến Trình 8/22/20 13 22 Chương 3: Tiến Trình. .. passing 8/22/20 13 27 Chương 3: Tiến Trình 8/22/20 13 28 Chương 3: Tiến Trình • Bài toán điển hình minh họa cho sự hợp tác giữa các tiến trình – tiến trình Nhà sản xuất sinh ra dữ liệu được sử dụng bởi tiến trình Người tiêu thụ • Giải quyết bài toán với cơ chế bộ nhớ chia sẽ - 2 tiến trình sử dụng một vùng nhớ dùng chung (buffer), tiến trình Người sản xuất ghi dữ liệu lên buffer, tiến trình Người tiêu... plug-in 8/22/20 13 26 Chương 3: Tiến Trình • Các tiến trình trong hệ thống có thể độc lập hay hợp tác • Tiến trình độc lập không thể gây ảnh hưởng hay bị ảnh hưởng bởi các tiến trình khác • Tiến trình hợp tác có thể gây ảnh hưởng hay bị ảnh hưởng bởi các tiến trình khác • Mục đích hợp tác giữa các tiến trình: o o o o Chia sẽ thông tin Tăng tốc độ tính toán Module hóa Tiện lợi • Tiến trình hợp tác cần... thiết bị (Device queue): tập hợp các quá trình đang đợi sử dụng một thiết bị xuất/nhập • Quá trình có thể di chuyển giữa các hàng đợi khác nhau 8/22/20 13 12 Chương 3: Tiến Trình 8/22/20 13 13 Chương 3: Tiến Trình 8/22/20 13 14 Chương 3: Tiến Trình • Bộ định thời dài kỳ (Long-term scheduler/job scheduler) – chọn quá trình nào sẽ được đặt vào hàng đợi sẵn sàng (nạp vào bộ nhớ) • Bộ định thời ngắn kỳ (Short-term... cố gắng điều hòa giữa các tiến trình này 8/22/20 13 15 Chương 3: Tiến Trình • Bộ định thời trung kỳ (Medium-term scheduling) – làm giảm mức độ đa chương của hệ thống o Di chuyển các tiến tình ra khỏi bộ nhớ, lưu trữ trên đĩa, sau đó mang vào bộ nhớ để tiếp tục thực thi: swapping 8/22/20 13 16 Chương 3: Tiến Trình • Chuyển ngữ cảnh (context switch): Khi CPU chuyển sang phục vụ tiến trình khác, hệ thống... quá trình con nay không còn cần thiết nữa o Quá trình cha đang thoát • Vài hệ điều hành không cho phép quá trình con tiếp tục thực thi khi quá trình cha kết thúc => Sự kết thúc hàng loạt các quá trình con (cascading termination) • Nếu tiến trình cha chưa gọi wait() => tiến trình con vừa kết thúc trở thành một zombie • Nếu tiến trình cha kết thúc trước => tiến trình con mồ coi (orphan) 8/22/20 13 24 Chương. .. Quá trình cha và con không chia sẻ tài nguyên nào cả • Thực thi: o Quá trình cha và con thực thi đồng thời o Quá trình cha đợi đến khi quá trình con hoàn thành 8/22/20 13 19 Chương 3: Tiến Trình init pid = 1 login pid = 8415 khelper pid = 6 bash pid = 8416 ps pid = 9298 8/22/20 13 sshd pid = 30 28 kthreadd pid = 2 pdflush pid = 200 sshd pid = 36 10 tcsch pid = 4005 emacs pid = 9204 20 Chương 3: Tiến Trình. .. vào cùng lúc 8/22/20 13 17 Chương 3: Tiến Trình • Quá trình cha tạo ra quá trình con, đến lượt quá trình con này lại tạo ra những quá trình khác, tạo nên cây quá trình • Thông thường các tiến trình được xác định và quản lý thông qua PID (Process identifier) • Chia sẻ tài nguyên – có nhiều lựa chọn: o Quá trình cha và con chia sẻ tất cả tài nguyên o Quá trình con chia sẻ một phần tài nguyên của quá trình. .. 22 Chương 3: Tiến Trình 8/22/20 13 23 Chương 3: Tiến Trình • Quá trình thực hiện câu lệnh cuối cùng và yêu cầu HĐH xóa nó (dùng exit) o Xuất dữ liệu từ quá trình con lên quá trình cha (wait()) pid_t pid; int status; pid=wait(&status); o Tài nguyên của quá trình bị thu hồi lại bởi hệ điều hành • Quá trình cha có thể kết thúc sự thực thi của quá trình con (abort()) o Quá trình con đã vượt quá số tài nguyên... Chương 3: Tiến Trình • Nếu các trình duyệt web thực thi dạng đơn tiến trình => nếu một web site bị lỗi, toàn bộ trình duyệt bị treo hay đổ vỡ • Google Chrome Brower thực thi dạng đa tiến trình, phân ra làm 3 nhóm: o Browser: tiến trình quản lý giao diện người dùng, xuât/nhập đĩa và mạng o Renderer: xử lý hiển thị các trang web (HTML, JavaScript, …) mỗi tiến trình cho một trang web o Plug-in: một tiến trình ... Plug-in: tiến trình cho loại plug-in 8/22/2013 26 Chương 3: Tiến Trình • Các tiến trình hệ thống độc lập hay hợp tác • Tiến trình độc lập gây ảnh hưởng hay bị ảnh hưởng tiến trình khác • Tiến trình. .. thời biểu tiến trình Các thao tác với tiến trình Giao tiếp tiến trình 8/22/2013 Chương 3: Tiến Trình • Hệ điều hành thực thi nhiều dạng chương trình: o Hệ thống bó (batch system) – jobs o Hệ thống... 40 Chương 3: Tiến Trình 41 8/22/2013 Chương 3: Tiến Trình Giới thiệu Luồng (Thread) Lập trình vi xử lý đa nhân Mô hình đa luồng 8/22/2013 42 Chương 3: Tiến Trình 43 8/22/2013 Chương 3: Tiến Trình

Ngày đăng: 14/04/2016, 15:54

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan