Đại Học Cần Thơ - Khoa Công Nghệ Thông Tin - Giáo Trình Hệ Điều Hành – V1.0 QUÁ TRÌNH I Mục đích Sau khi học xong chương này, người học nắm được những kiến thức sau: • Hiểu các khái niệm về quá trình • Hiểu cách lập thời biểu quá trình • Biết các thao tác trên quá trình • Hiểu cách giao tiếp liên quá trình II Giới thiệu Những hệ thống máy tính ban đầu cho phép chỉ một chương trình được thực thi tại một thời điểm. Chương trình này có toàn quyền điều khiển hệ thống và có truy...
Đại Học Cần Thơ - Khoa Công Nghệ Thông Tin - Giáo Trình Hệ Điều Hành – V1.0 Q TRÌNH I Mục đích Sau học xong chương này, người học nắm kiến thức sau: • Hiểu khái niệm q trình • Hiểu cách lập thời biểu q trình • Biết thao tác q trình • Hiểu cách giao tiếp liên q trình II Giới thiệu Những hệ thống máy tính ban đầu cho phép chương trình thực thi thời điểm Chương trình có tồn quyền điều khiển hệ thống có truy xuất tới tất tài nguyên hệ thống Những hệ thống máy tính cho phép nhiều chương trình nạp vào nhớ thực thi đồng hành Sự phát triển yêu cầu điều khiển mạnh mẽ phân chia nhiều trình Yêu cầu dẫn đến khái niệm trình, chương trình thực thi Q trình đơn vị cơng việc hệ điều hành chia thời đại Một hệ điều hành phức tạp mong đợi nhiều việc thực hành vi người dùng Mặc dù quan tâm chủ yếu hệ điều hành thực thi chương trình người dùng, quan tâm đến tác vụ khác bên ngồi nhân Do đó, hệ thống chứa tập hợp trình: trình hệ điều hành thực thi mã hệ thống, trình người dùng thực thi mã người dùng Tất q trình có tiềm thực thi đồng hành, với CPU (hay nhiều CPU) đa hợp chúng Bằng cách chuyển đổi CPU q trình, hệ điều hành làm cho máy tính hoạt động với suất cao III Khái niệm trình Một vấn đề cần thảo luận gọi tất hoạt động CPU? Một hệ thống bó thực thi công việc, trái lại hệ thống chia thời thực thi chương trình người dùng hay tác vụ Thậm chí hệ thống đơn người dùng Microsoft Windows Macintosh OS, người dùng chạy nhiều chương trình thời điểm: xử lý văn bản, trình duyệt web, e-mail Thậm chí người dùng thực thi trình thời điểm, hệ điều hành cần hỗ trợ hoạt động lập trình bên trong, quản lý nhớ Trong nhiều khía cạnh, tất hoạt động tương gọi tất chúng trình Biên soạn: Th.s Nguyễn Phú Trường - 09/2005 Trang 37 Đại Học Cần Thơ - Khoa Cơng Nghệ Thơng Tin - Giáo Trình Hệ Điều Hành – V1.0 III.1 Quá trình Thật vậy, trình chương trình thực thi Một trình khơng mà chương trình, cịn bao gồm hoạt động hành diện giá trị đếm chương trình nội dung ghi xử lý Ngoài ra, trình thường chứa ngăn xếp trình, chứa liệu tạm thời (như tham số phương thức, địa trả về, biến cục bộ) phần liệu chứa biến toàn cục Chúng ta nhấn mạnh rằng, chương trình khơng phải q trình; chương trình thực thể thụ động, nội dung tập tin lưu đĩa, trái lại trình thực thể chủ động, với đếm chương trình xác định thị lệnh thực thi tập hợp tài ngun có liên quan Mặc dù hai q trình liên kết với chương trình chúng chứa hai thứ tự thực thi riêng rẻ Thí dụ, nhiều người dùng chạy chương trình gởi nhận thư, hay người dùng nạp lên nhiều chương trình soạn thảo văn Mỗi chúng trình riêng phần văn giống nhau, phần liệu khác Ngồi ra, q trình tạo nhiều q trình thực thi III.2 Trạng thái trình Khi trình thực thi, thay đổi trạng thái Trạng thái q trình định nghĩa hoạt động hành q trình Mỗi q trình trạng thái sau: • Mới (new): q trình tạo • Đang chạy (running): thị thực thi • Chờ (waiting): q trình chờ kiện xảy (như hoàn thành việc nhập/xuất hay nhận tín hiệu) • Sẳn sàng (ready): q trình chờ gán tới xử lý • Kết thúc (terminated): q trình hồn thành việc thực thi • Các tên trạng thái bất kỳ, chúng khác hệ điều hành khác Tuy nhiên, trạng thái mà chúng diện tìm thấy tất hệ thống Các hệ điều hành xác định mơ tả trạng thái q trình Chỉ q trình chạy tức xử lý nhiều q trình trạng thái sẳn sàng chờ Hình 0-1-Lưu đồ trạng thái trình Biên soạn: Th.s Nguyễn Phú Trường - 09/2005 Trang 38 Đại Học Cần Thơ - Khoa Công Nghệ Thông Tin - Giáo Trình Hệ Điều Hành – V1.0 III.3 Khối điều khiển trình Mỗi trình diện hệ điều hành khối điều khiển trình (Process Control Block-PCB) – gọi khối điều khiển tác vụ Một PCB hiển thị hình III-2 Nó chứa nhiều phần thông tin gắn liền với trình xác định, gồm: Hình 0-2-Khối điều khiển trình • • • • • • • Trạng thái q trình (process state): trạng thái mới, sẳn sàng, chạy, chờ đợi, kết thúc, … Bộ đếm chương trình (program counter): đếm hiển thị địa thị thực thi cho trình Các ghi (registers) CPU: ghi khác số lượng loại, phụ thuộc vào kiến trúc máy tính Chúng gồm tổng (accumulators), ghi mục, trỏ ngăn xếp, ghi đa (generalpurpose registers), với thông tin mã điều kiện (condition-code information) Cùng với đếm chương trình, thơng tin trạng thái phải lưu ngắt xảy ra, cho phép trình tiếp tục cách phù hợp sau (Hình III.3) Thơng tin lập thời biểu CPU (CPU-scheduling information): thơng tin gồm độ ưu tiên q trình, trỏ tới hàng đợi lập thời biểu, tham số lập thời biểu khác Thông tin quản lý nhớ (Memory-management information): thông tin gồm thơng tin giá trị ghi ghi giới hạn, bảng trang hay bảng phân đoạn, phụ thuộc hệ thống nhớ dùng hệ điều hành Thông tin tính tốn (accounting information): thơng tin gồm lượng CPU thời gian thực dùng, công việc hay số q trình,… Thơng tin trạng thái nhập/xuất (I/O status information): thông tin gồm danh sách thiết bị nhập/xuất cấp phát trình này, danh sách tập tin mở, PCB đơn giản phục vụ kho chứa cho thông tin khác từ trình tới trình khác Biên soạn: Th.s Nguyễn Phú Trường - 09/2005 Trang 39 Đại Học Cần Thơ - Khoa Công Nghệ Thông Tin - Giáo Trình Hệ Điều Hành – V1.0 Hình 0-3-Lưu đồ hiển thị việc chuyển CPU từ trình tới trình khác III.4 Luồng Mơ hình q trình vừa thảo luận ngụ ý trình chương trình thực luồng đơn thực thi Thí dụ, trình chạy chương trình xử lý văn bản, luồng đơn thị thực thi Đây luồng điều khiển đơn cho phép trình thực thi tác vụ thời điểm Thí dụ, người dùng khơng thể lúc nhập ký tự chạy kiểm tra tả q trình Nhiều hệ điều hành đại mở rộng khái niệm trình phép q trình có nhiều luồng thực thi Do đó, chúng cho phép thực nhiều tác vụ thời điểm IV Lập thời biểu trình Mục tiêu việc đa chương có vài q trình chạy tất thời điểm để tận dụng tối đa việc sử dụng CPU Mục tiêu chia thời chuyển CPU q trình thường xun để người dùng giao tiếp với chương trình chạy Một hệ thống đơn xử lý chạy trình Nếu nhiều trình tồn tại, q trình cịn lại phải chờ CPU rảnh lập thời biểu lại IV.1 Hàng đợi lập thời biểu Khi trình đưa vào hệ thống, chúng đặt vào hàng đợi cơng việc Hàng đợi chứa tất q trình hệ thống Các trình nằm nhớ sẳn sàng chờ để thực thi giữ danh sách gọi hàng đợi sẳn sàng Hàng đợi thường lưu danh sách liên kết Đầu hàng đợi sẳn sàng chứa hai trỏ: đến PCB tới PCB cuối danh sách Chúng ta bổ sung thêm PCB trường trỏ tới PCB hàng đợi sẳn sàng Hệ điều hành có hàng đợi khác Khi q trình cấp phát CPU, thực thi khoảng thời gian cuối kết thúc, ngắt, hay chờ Biên soạn: Th.s Nguyễn Phú Trường - 09/2005 Trang 40 Đại Học Cần Thơ - Khoa Cơng Nghệ Thơng Tin - Giáo Trình Hệ Điều Hành – V1.0 kiện xác định xảy ra, chẳng hạn hoàn thành yêu cầu nhập/xuất Trong trường hợp yêu cầu nhập/xuất, yêu cầu ổ đĩa băng từ tận hiến hay thiết bị chia sẻ đĩa Vì hệ thống có nhiều q trình, đĩa bận với u cầu nhập/xuất q trình khác Do đó, q trình phải chờ đĩa Danh sách trình chờ thiết bị nhập/xuất cụ thể gọi hàng đợi thiết bị Mỗi thiết bị có hàng đợi hình III.4 Một biểu diễn chung lập thời biểu trình lưu đồ hàng đợi, hình III.5 Mỗi hình chữ nhật diện hàng đợi Hai loại hàng đợi diện: hàng đợi sẳn sàng tập hàng đợi thiết bị, vòng tròn diện tài nguyên phục vụ hàng đợi, mũi tên hiển thị dịng q trình hệ thống Một trình khởi đầu đặt vào hàng đợi Nó chờ hàng đợi sẳn sàng chọn thực thi Một q trình gán tới CPU thực thi, nhiều kiện xảy ra: • Q trình phát yêu cầu nhập/xuất sau đặt vào hàng đợi nhập/xuất • Q trình tạo q trình chờ cho q trình kết thúc • Khi ngắt xảy ra, q trình bị buộc trả lại CPU đặt trở lại hàng đợi sẳn sàng Trong hai trường hợp đầu, cuối trình chuyển từ trạng thái chờ tới trạng thái sẳn sàng sau đặt trở lại vào hàng đợi sẳn sàng Một trình tiếp tục chu kỳ kết thúc Tại thời điểm kết thúc bị xố từ tất hàng đợi Sau đó, PCB tài ngun thu hồi Hình 0-4-Hàng đợi sẳn sàng hàng đợi nhập/xuất khác Biên soạn: Th.s Nguyễn Phú Trường - 09/2005 Trang 41 Đại Học Cần Thơ - Khoa Công Nghệ Thông Tin - Giáo Trình Hệ Điều Hành – V1.0 Hình 0-5-Biểu diễn lưu đồ hàng đợi lập thời biểu trình IV.2 Bộ định thời biểu Một trình di dời hai hàng đợi định thời khác suốt thời gian sống Hệ điều hành phải chọn, cho mục đích định thời, q trình từ hàng đợi Quá trình chọn lựa thực định thời hợp lý Trong hệ thống bó, thường nhiều q trình gởi đến thực thi tức Các trình lưu tới thiết bị lưu trữ (như đĩa), nơi chúng giữ cho việc thực thi sau Bộ định thời dài (long-term scheduler) hay định thời công việc (job scheduler), chọn trình từ vùng đệm nạp chúng vào nhớ để thực thi Bộ định thời ngắn (short-term scheduler) hay định thời CPU chọn trình từ trình sẳn sàng thực thi cấp phát CPU cho q trình Sự khác biệt chủ yếu hai định thời tính thường xuyên việc thực thi Bộ định thời CPU phải chọn trình cho CPU thường xun Một q trình thực thi vài mili giây trước chờ yêu cầu nhập/xuất Bộ định thời CPU thường thực thi lần 100 mili giây Vì thời gian ngắn việc thực thi nên định thời phải nhanh Nếu 10 mili giây để định thực thi trình 100 mili giây 10/(100+10) = phần trăm CPU dùng (hay bị lãng phí) đơn giản cho định thời công việc Ngược lại, định thời công việc thực thi thường xun Có vài phút việc tạo trình hệ thống Bộ định thời công việc điều khiển mức độ đa chương – số trình nhớ Nếu mức độ đa chương ổn định tốc độ trung bình việc tạo trình phải tốc độ khởi hành trung bình trình rời hệ thống Vì khoảng thời gian dài việc thực thi nên định thời cơng việc cấp nhiều thời gian để chọn trình thực thi Bộ định thời công việc phải thực chọn lựa cẩn thận Thơng thường, hầu hết q trình mơ tả q trình hướng nhập/xuất (I/Obound proces) hay trình hướng CPU (CPU-bound process) Một trình hướng nhập/xuất nhiều thời gian để thực nhập/xuất thời gian tính tốn Ngược lại, q trình hướng CPU phát sinh u cầu nhập/xuất khơng thường xuyên, dùng thời gian để thực việc tính tốn q trình hướng nhập/xuất dùng Bộ định thời cơng việc nên chọn kết hợp hài hồ trình Biên soạn: Th.s Nguyễn Phú Trường - 09/2005 Trang 42 Đại Học Cần Thơ - Khoa Công Nghệ Thơng Tin - Giáo Trình Hệ Điều Hành – V1.0 hướng nhập/xuất trình hướng CPU Nếu tất trình hướng nhập/xuất hàng đợi sẳn sàng rỗng định thời CPU có cơng việc để thực Nếu tất trình hướng CPU hàng đợi nhập/xuất rỗng, thiết bị không sử dụng hệ thống cân Hệ thống với lực tốt có kết hợp trình hướng CPU hướng nhập/xuất Trên vài hệ thống, định thời cơng việc khơng có hay Thí dụ, hệ thống chia thời UNIX thường khơng có định thời cơng việc đơn giản đặt trình vào nhớ cho định thời CPU Khả ổn định hệ thống phụ thuộc vào giới hạn vật lý (như số lượng thiết bị cuối sẳn dùng) hay tính tự nhiên tự chuyển đổi người dùng Nếu lực thực giảm tới mức độ chấp nhận số người dùng thoát khỏi hệ thống Một số hệ thống hệ chia thời đưa vào cấp độ định thời bổ sung hay định thời trung gian Bộ định thời trung gian (medium-term process) (được hiển thị lưu đồ hình III-6) xóa q trình khỏi nhớ (từ canh tranh CPU) giảm mức độ đa chương Tại thời điểm sau đó, q trình đưa trở lại nhớ việc thực thi tiếp tục nơi bị đưa Cơ chế gọi hốn vị (swapping) Q trình hốn vị sau hốn vị vào định thời trung gian Hoán vị cần thiết để cải tiến trộn lẫn trình (giữa trình hướng nhập/xuất hướng CPU), hay thay đổi yêu cầu nhớ vượt kích thước nhớ sẳn dùng Hoán vị thảo luận chương sau Hình 0-6-Lưu đồ bổ sung định thời trung bình tới hàng đợi IV.3 Chuyển ngữ cảnh Chuyển CPU tới trình khác yêu cầu lưu trạng thái trình cũ nạp trạng thái lưu cho trình Tác vụ xem chuyển ngữ cảnh (context switch) Ngữ cảnh trình diện PCB q trình; Nó chứa giá trị ghi, trạng thái trình (hình III.1) thơng tin quản lý nhớ Khi chuyển ngữ cảnh ngữ cảnh xảy ra, nhân lưu ngữ cảnh q trình cũ PCB nạp ngữ cảnh lưu trình định thời để chạy Thời gian chuyển ngữ cảnh chi phí hệ thống khơng thực cơng việc có ích chuyển Tốc độ khác từ máy tới máy khác phụ thuộc vào tốc độ nhớ, số lượng ghi phải chép tồn thị đặc biệt (như thị để nạp lưu tất ghi) Điển hình dãy tốc độ từ tới 1000 mili giây Những lần chuyển đổi ngữ cảnh phụ thuộc nhiều vào hỗ trợ phần cứng Thí dụ, vài xử lý (như Sun UltraSPARC) cung cấp nhiều tập ghi Một chuyển ngữ cảnh đơn giản chứa chuyển đổi trỏ tới tập ghi hành Dĩ nhiên, trình hoạt động vượt tập ghi hệ thống xếp lại liệu ghi tới từ nhớ Cũng mà hệ điều hành phức tạp nhiều công việc làm Biên soạn: Th.s Nguyễn Phú Trường - 09/2005 Trang 43 Đại Học Cần Thơ - Khoa Công Nghệ Thơng Tin - Giáo Trình Hệ Điều Hành – V1.0 chuyển ngữ cảnh Kỹ thuật quản lý nhớ nâng cao yêu cầu liệu bổ sung để chuyển với ngữ cảnh Thí dụ, khơng gian địa q trình hành phải lưu không gian tác vụ chuẩn bị dùng Không gian địa lưu lượng công việc yêu cầu để lưu phụ thuộc vào phương pháp quản lý nhớ hệ điều hành Chuyển ngữ cảnh dẫn đến thắt cổ chai lực thực lập trình viên sử dụng cấu trúc để tránh V Thao tác q trình Các q trình hệ thống thực thi đồng hành chúng phải tạo xóa tự động Do đó, hệ điều hành phải cung cấp chế (hay phương tiện) cho việc tạo trình kết thúc trình V.1 Tạo trình Quá trình tạo nhiều q trình mới, lời gọi hệ thống createprocess, thực thi Quá trình tạo gọi trình cha, ngược lại trình gọi trình trình Mỗi q trình sau tạo trình khác, hình thành trình (hình III-7) Hình 0-7-Cây trình hệ thống UNIX điển hình Thơng thường, q trình cần tài nguyên xác định (như thời gian CPU, nhớ, tập tin, thiết bị nhập/xuất ) để hồn thành tác vụ Khi q trình tạo q trình con, q trình nhận tài nguyên trực tiếp từ hệ điều hành hay bị ràng buộc tới tập tài nguyên trình cha Quá trình cha phải phân chia tài ngun q trình hay chia sẻ số tài nguyên (như nhớ tập tin) nhiều trình Giới hạn trình tới tập tài nguyên trình cha ngăn chặn trình từ nạp chồng hệ thống cách tạo nhiều trình Ngồi ra, q trình tạo lấy tài nguyên vật lý luận lý khác nhau, liệu khởi tạo (hay nhập) truyền từ q trình cha tới q trình Thí dụ, xét q trình với tồn chức hiển thị trạng thái tập Biên soạn: Th.s Nguyễn Phú Trường - 09/2005 Trang 44 Đại Học Cần Thơ - Khoa Cơng Nghệ Thơng Tin - Giáo Trình Hệ Điều Hành – V1.0 tin F1 hình Khi tạo, lấy liệu vào từ q trình cha, tên tập tin F1 thực thi dùng liệu để lấy thơng tin mong muốn Nó lấy tên thiết bị xuất Một số hệ điều hành chuyển tài nguyên tới trình Trên hệ thống thế, q trình lấy hai tập tin mở, F1 thiết bị cuối, cần chuyển liệu hai tập tin Khi trình tạo trình mới, hai khả tồn thuật ngữ việc thực thi: • Q trình cha tiếp tục thực thi đồng hành với q trình • Q trình cha chờ vài hay tất q trình kết thúc Cũng có hai khả thuật ngữ khơng gian địa q trình mới: • Q trình q trình cha • Q trình có chương trình nạp vào Để hiển thị việc cài đặt khác này, xem xét hệ điều hành UNIX Trong UNIX, trình xác định danh biểu trình (process identifier), số nguyên Một trình tạo lời gọi hệ thống fork Quá trình chứa khơng gian địa q trình gốc Cơ chế cho phép trình cha giao tiếp dễ dàng với trình Cả hai trình (cha con) tiếp tục thực thi thị sau lời gọi hệ thống fork, với khác biệt: mã trả cho lời gọi hệ thống fork khơng cho q trình (con), ngược lại danh biểu q trình (khác khơng) q trình trả tới trình cha Điển hình lời gọi hệ thống execlp dùng sau lời gọi hệ thống fork hai q trình để thay khơng gian nhớ với trình Lời gọi hệ thống execlp nạp tập tin nhị phân vào nhớ-xóa hình ảnh nhớ chương trình chứa lời gọi hệ thống execlp - bắt đầu việc thực thi Trong cách thức này, hai q trình giao tiếp sau thực cách riêng Sau đó, q trình cha tạo nhiều q trình con, hay khơng làm thời gian trình chạy phát lời gọi hệ thống wait để di chuyển vào hàng đợi sẳn sàng trình kết thúc Chương trình C (hình III-8 đây) hiển thị lời gọi hệ thống UNIX mơ tả trước Q trình cha tạo trình sử dụng lời gọi hệ thống fork Bây có hai q trình khác chạy chương trình Giá trị pid cho trình 0; cho trình cha số nguyên lớn Quá trình phủ lắp khơng gian địa với lệnh UNIX /bin/ls (được dùng để liệt kê thư mục) dùng lời gọi hệ thống execlp Quá trình cha chờ cho q trình hồn thành với lời gọi hệ thống wait Khi q trình hồn thành, trình cha bắt đầu lại từ lời gọi hệ thống wait nơi hồn thành việc sử dụng lời gọi hệ thống exit Ngược lại, hệ điều hành DEC VMS tạo trình mới, nạp chương trình xác định q trình bắt đầu thực thi Hệ điều hành Microsoft Windows NT hỗ trợ hai mơ hình: khơng gian địa q trình cha lại hay q trình cha xác định tên chương trình cho hệ điều hành nạp vào không gian địa trình Biên soạn: Th.s Nguyễn Phú Trường - 09/2005 Trang 45 Đại Học Cần Thơ - Khoa Công Nghệ Thơng Tin - Giáo Trình Hệ Điều Hành – V1.0 #include main(int argc, char* argv[]) { int pid; /*fork another process*/ pid = fork(); if(pid