Bài giảng Hệ điều hành - Chương 3: Tiến trình
Khái niệm tiến trình
Danh mục các tiến trình
Các thao tác trên tiến trình
Sự hợp tác giữa các tiến trình
Sự truyền thông liên tiến trình
Truyền thông trong các hệ thống khách/chủ
CHƯƠNG 3:TIẾN TRÌNH NHÓM 3:Nguyễn Thị Kim ThanhPhạm Thanh Hoàng Thọ Chương 3: Tiến Trình Khái niệm tiến trình Danh mục các tiến trình Các thao tác trên tiến trình Sự hợp tác giữa các tiến trình Sự truyền thông liên tiến trình Truyền thông trong các hệ thống khách/chủ Khái niệm tiến trình Một hệ điều hành thực hiện nhiều chương trình khác nhau: Hệ thống bó–công việc Hệ thống chia sẻ thời gian-Những nhiệm vụ và chương trình người sử dụng SGK dùng các thuật ngữ “công việc” và “tiến trình” hầu như có thể thay thế được cho nhau Tiến trình – là một chương trình thi hành; việc thi hành tiến trình phải được tiến hành một cách tuần tự Một tiến trình bao gồm : Bộ đếm chương trình Ngăn xếp Các đoạn dữ liệu Không gian nhớ của tiến trình Các trạng thái tiến trình Một tiến trình khi thi hành có thể chuyển đổi nhiều trạng thái khác nhau: new: Tiến trình đang được khởi tạo running: Tiến trình đang được thi hành waiting: Tiến trình đang đợi sự kiện để thực hiện (xin thêm tài nguyên,thực hiên I/O) ready: Tiến trình đang chờ đợi để được cấp một tiến trình terminated: Tiến trình được thi hành xong Sơ đồ trạng thái tiến trình Các khối quản lý tiến trình (PCB) Các thông tin liên quan đến mỗi tiến trình: Trạng thái tiến trình Bộ đếm chương trình Các thanh ghi CPU Thông tin điều phối tiến trình Thông tin quản lý bộ nhớ Thông tin thống kê Thông tin trạng thái I/O Sơ đồ các khối quản lý tiến trình (PCB) Sự chuyển đổi của VXL trong quá trình thực hiện các tiến trình Danh mục các hàng đợi tiến trình Hàng đợi công việc – tập hợp tất cả các tiến trình trong hệ thống Hàng đợi sẵn sàng – tập hợp tất cả các tiến trình cư trú trong bộ nhớ chính, sẵn sàng và đang đợi để thực hiện Hàng đợi thiết bị – tập hợp các tiến trình đang đợi thiết bị vào ra Các tiến trình có thể di trú trong nhiều loại hàng đợi khác nhau Hàng đợi sẵn sàng và các hàng đợi thiết bị I/O khác Mô hình điều phối tiến trình Các bộ điều phối Bộ điều phối dài hạn (hay điều phối công việc) – các tiến trình sẽ được đưa vào hàng đợi sẵn sàng Bộ điều phối ngắn hạn (hay điều phối vi xử lý) – các tiến trình sẽ được thực hiện và cấp phát vi xử lý Mô hình thêm vào của các kỳ trung gian Các bộ điều phối (cont.) Bộ phận điều phối ngắn hạn được đưa ra rất thường xuyên(1/1000s) rất nhanh Bộ phận điều phối dài hạn rất hiếm khi được đưa ra (vài giây,vài phút)có thể hơi chậm Bộ phận điều phối dài hạn điều khiển mức độ của chương trình đa chương Các tiến trình có thể được mô tả như sau : Tiến trình giới hạn I/O – dành nhiều thời gian đối với việc vào ra hơn việc tính toán Tiến trình giới hạn VXL – dành nhiều thời gian để tính toán hơn Một cây tiến trình điển hình Solaris Sự thay đổi bối cảnh Khi CPU di chuyển đột ngột đến một tiến trình khác,hệ thống phải lưu trữ trạng thái của tiến trình cũ và nạp nó cho tiến trình mới Thời gian thay đổi bối cảnh được nâng lên hàng đầu, hệ thống không còn làm việc hữu ích trong khi chuyển đổi Thời gian chuyển đổi phụ thuộc vào sự hỗ trợ cua phần cứng Sự tạo tiến trình Các tiến trình cha tạo ra các tiến trình con,lần lượt các tiến trình con tạo ra các tiến trình khác, từ đó hình thành cây các tiến trình Sự chia sẻ tài nguyên Tiến trình cha và con dùng chung tất cả tài nguyên Tiến trình con dùng tài nguyên của tiến trình cha Tiến trình cha và tiến trình con không có nguồn tài nguyên chia sẻ Sự thực hiện Tiến trình cha và con được thực hiện đồng thời Tiến trình cha sẽ đợi cho đến khi tiến trình con kết thúc Sự tạo tiến trình (cont.) Không gian địa chỉ Tiến trình con là bản sao của tiến trình cha Tiến trình con có một chương trình để tải vào trong nó UNIX Hệ thống phân nhánh gọi tạo tiến trình mới Hệ thống thực hiện sẽ gọi sử dụng sau một phân nhánh để thay thế không gian nhớ tiến trình với một chương trình mới Sơ đồ sự tạo tiến trình Sự tạo tiến trình trong POSIX Sự tạo tiến trình trong Win32 Sự tạo tiến trình trong Java Tiến trình kết thúc Tiến trình thi hành ở lời gọi cuối cùng và yêu cầu hệ điều hành xoá nó đi Đầu ra dữ liệu từ tiến trình con đến tiến trình cha (bằng cách đợi) Tài nguyên của tiến trình được định vị bởi hệ điều hành Tiến trình cha có thể kết thúc việc thi hành của các tiến trình con khi: ( abort:huỷ bỏ) Tiến trình con vượt quá phân bổ tài nguyên Nhiệm vụ đã ấn định cho tiến trình con đã không còn được yêu cầu Nếu tiến trình cha đã kết thúc Một số hệ điều hành sẽ không cho phép tiến trình con tiếp tục nếu tiến trình cha chấm dứt Tất cả tiến trình con kết thúc- cả đợt đó cũng kết thúc Truyền thông liên tiến trìnhInterprocess Communication Sự truyền thông điệp Bộ nhớ chia sẻ Vấn đề người sản xuất- Người sử dụng Mô hình cho tiến trình hợp tác,tiến trình người sản xuất cung cấp thông tin cho tiến trình người sử dụng Bộ đệm không giới hạn (unbounded-buffer) là nơi không có giới hạn thực tế trên kích thước của bộ đệm Bộ đệm giới hạn( bound-buffer) cho rằng có một kích thước buffer cố định Mô phỏng chia sẻ bộ nhớ trong Java Bộ đệm có giới hạn-Giải pháp chia sẻ bộ nhớ Bộ đệm có giới hạn- Giải pháp chia sẻ bộ nhớ Bộ đệm có giới hạn- Hình 3.16- Phương pháp chèn insert() Bộ đệm có giới hạn- Hình 3.17- Phương pháp di chuyển remove() Sự truyền thông điệp Thông điệp hệ thống-Tiến trình giao tiếp với nhau mà không cần phải chia sẻ với các biến Thông điệp hệ thống cung cấp 2 hoạt động: Gửi (message) – Kích thước thông điệp là cố định hoặc thay đổi được Nhận (message) Nếu P và Q muốn giao tiếp với nhau,chúng cần phải: Thiết lập một đường truyền giữa chúng với nhau Trao đổi thông tin thông qua việc gửi/nhận thông điệp Sự thi hành của đường truyền: Về vật lý(e.g:chia sẻ bộ nhớ,các bus phần cứng) Về logic(e.g: tính logic) Các câu hỏi bổ sung Đường link liên kết được thiết lập như thế nào? Một tiến trình có thể liên kết với nhiều hơn hai tiến trình hay không? Có bao nhiêu liên kết có thể có giữa mỗi cặp tiến trình giao tiếp? Dung lượng của một liên kết là gì? Có một thông điệp rằng liên kết có thể được cố định hay thay đổi được hay không? Một liên kết theo một hướng duy nhất hay theo hai hướng? Truyền thông trực tiếp Tiến trình phải gọi tên nhau rõ ràng: Gửi (P, message) – gửi một thông điệp đến tiến trình P Nhận (Q, message) – Nhận một thông điệp từ tiền trình Q Đặc trưng của liên kết truyền thông Liên kết được thiết lập một cách tự động Một liên kết được liên kết chính xác với một cặp của tiến trình truyền thông Giữa mỗi cặp đôi tồn tại chính xác một liên kết Mỗi liên kết có thể theo một hướng duy nhất,nhưng thông thường là theo hai hướng Truyền thông gián tiếp Mỗi thông điệp được hướng dẫn và được nhận từ hộp thư (được xem như là cổng) Mỗi hộp thư có một ID duy nhất Tiến trình chỉ có thể giao tiếp được nếu chúng chia sẻ một hộp thư Đặc tính của liên kết truyền thông Liên kết chỉ được thiết lập nếu tiến trình chia sẻ một hộp thư chung Một liên kết có thể liên kết với nhiều tiến trình Mỗi cặp của tiến trình có thể chia sẻ với nhiều liên kết truyền thông Liên kết có thể theo một hướng duy nhất hoặc theo hai hướng Truyền thông gián tiếp(cont.) Hoạt động: Tạo một hộp thư mới Gửi và nhận thông điệp qua hộp thư Huỷ một hộp thư Định nghĩa ban đầu: gửi (A, message) – Gửi một thông điệp từ hòm thư A nhận (A, message) – Nhận một thông điệp từ hòm thư A Truyền thông gián tiếp(cont.) Hộp thư chia sẻ: P1, P2, và P3 chia sẻ hòm thư A P1, gửi; P2 and P3 nhận Ai nhận được thông điệp? Giải pháp : Cho phép một liên kết được liên kết với nhiều nhất hai tiến trình Chỉ cho phép một tiến trình tại một thời điểm thực hiện nhận thông điệp Cho phép hệ thống lựa chọn người nhận tuỳ ý.Người gửi thông báo ai là người nhận thông điệp Đồng bộ hoá- Synchronization Truyền thông có thể bị ngăn chặn hoặc không ngăn chặn Sự ngăn chặn được xem là đồng bộ hoá Ngăn chặn gửi đối với người gửi cho tới khi thông điệp được nhận Ngăn chặn nhận đối với người nhận cho tới khi thông điệp có hiệu lực Sự không ngăn chặn được xem là không đồng bộ Không ngăn chặn gửi đối với người gửi gửi thông điệp và tiếp tục Không ngăn chặn nhận đối với người nhận nhận một thông điệp có hiệu lực hoặc vô hiệu lực Phép đệm- Buffering Hàng đợi của thông điệp được đính kèm theo liên kết, triển khai thực hiện theo một trong các cách: Không có dung lượng (Zero capacity) Người gửi phải đợi người nhận (ở nơi gặp) 2. Dung lượng có giới hạn( Bounded capacity) –có sự hạn chế về độ dài của n thông điệp -Người gửi phải đợi nếu liên kết đã đầy Dung lượng không có giới hạn(Unbounded capacity )- hạn chế về độ dài- Người gửi không bao giờ phải đợi Bộ đệm có giới hạn- Giải pháp truyền thông Bộ đệm có giới hạn- Giải pháp truyền thông Bộ đệm có giới hạn- Giải pháp truyền thông The Producer-Nhà sản xuất Bộ đệm có giới hạn- Giải pháp truyền thông The Consumer-Người sử dụng Truyền thông trong Windows XP Truyền thông khách/chủ Socket Gọi thủ tục từ xa Lời gọi phương thức từ xa (Java) Socket Một socket được định nghĩa như là một điểm cuối cho truyền thông Sự kết nối của địa chỉ IP và cổng Socket 161.25.19.8:1625 được xem như cổng 1625 trên máy chủ 161.25.19.8 Truyền thông bao gồm giữa mỗi cặp của socket Cơ chế truyền thông Cơ chế truyền thông trong Java Cơ chế truyền thông trong Java Gọi thủ tục từ xa (Remote Procedure Calls) RPC trừu tượng hoá thủ tục gọi giữa các tiến trình trên mạng hệ thống Stubs – Phía khách hàng uỷ nhiệm cho thủ tục hiện tại trên máy chủ Phía khách hàng định vị trí của máy chủ và tham số thu thập Phía máy chủ nhận thông điệp,giải nén các tham số thu thập được, và hiển thị thủ tục đó trên máy chủ Sự thi hành của RPC Phương fáp khẩn cấp từ xa (Remote Method Invocation) Phương pháp khẩn cấp từ xa(RMI) trong Java là cơ chế tương tự trong RPCs RMI cho phép một chương trình Java trên một máy khác gọi một phương thức trên một đối tượng từ xa Tham số thu thập Ví dụ về RMI Ví dụ về RMI Ví dụ về RMI KẾT THÚC CHƯƠNG 3Thank you for your contribution
File đính kèm:
- Bài giảng Hệ điều hành - Chương 3 Tiến trình.ppt