Giáo trình Lý thuyết hệ điều hành - Chương 2: Quản lý tiến trình

Tất cả các hệ điều hành đa chương, từ các hệ điều hành đơn người sử dụng đến các hệ điều hành có thể hỗ trợ đến hàng ngàn người sử dụng, đều phải xây dụng dựa trên khái niệm tiến trình. Vì thế, một yêu cầu quan trọng trong thiết kế hệ điều hành là thành phần quản lý tiến trình của hệ điều hành phải đáp ứng tất cả những gì liên quan đến tiến trình:

• Hệ điều hành phải cho phép thực hiện nhiều tiến trình đồng thời để khai thác tối đa thời gian xử lý của processor nhưng cũng cung cấp được thời gian hồi đáp hợp lý.

• Hệ điều hành phải cấp phát tài nguyên để tiến trình hoạt động một cách hiệu quả với một chính sách hợp lý nhưng không xảy ra tình trạng tắc nghẽn trong hệ thống.

• Hệ điều hành có thể được yêu cầu để hỗ trợ truyền thông liên tiến trình và người sử dụng tạo ra tiến trình.

Hệ điều hành phải có nhiệm vụ tạo ra tiến trình, điều khiển sự hoạt động của tiến trình và kết thúc tiến trình.

Một số hệ điều hành phân biệt hai khái niệm tiến trình và tiểu trình. Tiến trình liên quan đến quyền sở hữu tài nguyên, tiểu trình liên quan đến sự thực hiện chương trình.

Trong các hệ điều hành đa chương, có nhiều tiến trình tồn tại trên bộ nhớ chính, các tiến trình này luân phiên giữa hai trạng thái: sử dụng processor và đợi thực hiện vào/ra hay một vài sự kiện nào đó xảy ra.

Tất cả những vấn đề trên sẽ được làm sáng tỏ trong chương này.

 

doc53 trang | Chuyên mục: Hệ Điều Hành | Chia sẻ: dkS00TYs | Lượt xem: 9399 | Lượt tải: 5download
Tóm tắt nội dung Giáo trình Lý thuyết hệ điều hành - Chương 2: Quản lý tiến trình, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
ến trình cần processor. Bộ điều phối sẽ chọn tiến trình có P lớn để cấp processor, tức là ưu tiên cho những tiến trình có thời gian xử lý (thời gian cần processor) nhỏ.
	Chiến lược này có thể có thời gian chờ đợi trung bình đạt cực tiểu. Nhưng hệ điều hành khó có thể đoán được thời gian xử lý mà tiến trình yêu cầu.
Chiến lược nhiều cấp độ ưu tiên: Hệ điều hành phân lớp các tiến trình theo độ ưu tiên của chúng để có cách thức điều phối thích hợp cho từng lớp tiến trình. Mỗi cấp độ ưu tiên có một realy list riêng. Bộ điều phối dùng chiến lược điều phối thích hợp cho từng realy list. Hệ điều hành cũng phải thiết kế một cơ chế thích hợp để điều phối tiến trình giữa các lớp.
	Trong chiến lược này hệ điều hành sử dụng độ ưu tiên tĩnh, và điều phối không độc quyền, do đó một tiến trình thuộc ready list ở cấp ưu tiên i sẽ chỉ được cấp phát processor khi trong ready list ở cấp ưu tiên j (j > i) không còn một tiến trình nào.
	Các tiến trình ở ready list có độ ưu tiên thấp sẽ phải chờ đợi processor trong một khoảng thời gian dài, có thể là vô hạn. Để khắc phục điều này hệ điều hành xây dựng chiến lược điều phối: Nhiều mức độ ưu tiên xoay vòng. Trong chiến lược này hệ điều hành chuyển dần một tiến trình ở ready list có độ ưu tiên cao xuống ready list có độ ưu tiên thấp hơn sau mỗi lần sử dụng procesor, và ngược lại một tiến trình ở lâu trong ready list có độ ưu tiên thấp thì sẽ được chuyển dần lên ready list có độ ưu tiên cao hơn.
	Khi xây dựng chiến lược nhiều mức độ ưu tiên xoay vòng hệ điều hành cần xác định các thông tin sau: Số lượng các lớp ưu tiên. Chiến lược điều phối riêng cho từng read list trong mỗi lớp ưu tiên. Một tiến trình ready mới sẽ được đưa vào ready list nào. Khi nào thì thực hiện việc di chuyển một tiến trình từ ready list này sang ready list khác.	
Tiến trình trong Windows NT
Giới thiệu
Việc thiết kế tiền trình trong Windows NT được thực hiện từ nhu cầu cung cấp sự hỗ trợ cho nhiều môi trường hệ điều hành khác nhau. Các tiến trình được hỗ trợ bởi các hệ điều hành khác nhau có một số điểm khác nhau, bao gồm: 
Cách đặt tên cho các tiến trình.
Có hay không các tiểu trình bên trong tiến trình.
Các tiến trình được thể hiện như thế nào.
Các tài nguyên của tiến trình được bảo vệ như thế nào.
Các chiến lược được sử dụng trong giao tiếp và đồng bộ tiến trình
Cách mà các tiến trình liên hệ với mỗi tiến trình khác
Do đó, các cấu trúc tiến trình và các dịch vụ ban đầu được cung cấp bởi kernel của windows NT là phải đạt mục tiêu đơn giản và tổng quát, cho phép mỗi hệ thống con hệ điều hành mô phỏng một cấu trúc tiến trình riêng và thiết thực. Các đặc tính quan trọng của các tiến trình windows NT là như sau:
Các tiến trình NT được cài đặt như là các đối tượng.
Một tiến trình có khả năng thi hành có thể chứa một hay nhiều tiểu trình.
Cả các đối tượng tiến trình và tiểu trình có sẵn khả năng đồng bộ.
Kernel của Windows NT không duy trì mối quan hệ nào giữa các tiến trình mà nó đã tạo ra, kể cả các mối quan hệ cha con.
Hình sau đây minh hoạ cách một tiến trình liên hệ với các tài nguyên nó điều khiển hoặc sử dụng. 
Thẻ (token) truy xuất, kiểm tra xem tiến trình có thể thay đổi các đặc tính của riêng nó hay không. Trong trường hợp này, tiến trình không có một handle được mở cho token truy xuất của nó. Nếu tiến trình cố gắng mở một handle như thế, hệ thống an toàn sẽ quyết định cho phép hay không, và do đó tiến trình có thể thay đổi các đặc tính riêng của nó hay không.
Process
Access token
Hình 2.8: Tiến trình và các tài nguyên của nó
Handle 1
Handle 2
Handle 3
Thread x
Section x
File y
Object
Table
Available
Object
Không gian địa chỉ ảo
Liên quan đến tiến trình là một dãy các block định nghĩa không gian địa chỉ ảo đang được kết gán cho tiến trình đó. Tiến trình không thể trực tiếp sửa đổi các cấu trúc này mà phải dựa vào thành phần quản lý bộ nhớ ảo, trình quản lý bộ nhớ cung cấp dịch vụ định vị bộ nhớ cho tiến trình.
Cuối cùng, tiến trình bao gồm một bảng đối tượng, với các handle đến các đối tượng khác liên quan đến tiến trình này. Một handle tồn tại cho mỗi tiểu trình chứa trong đối tượng này. Trong hình này, tiến trình có một tiểu trình đơn. Ngoài ra, tiến trình truy xuất đến một đối tượng file và đến một đối tượng section mà nó xác định một section bộ nhớ chia sẻ.	
Các đối tượng tiến trình và tiểu trình
Cấu trúc hướng đối tượng của windows NT làm cho việc phát triển tiến trình của nó được dễ dàng hơn. Windows NT có hai kiểu đối tượng liên quan đến tiến trình: các tiến trình và tiểu trình. Một tiến trình là một thực thể tương ứng với một công việc của người sử dụng hay ứng dụng mà nó sở hữu các tài nguyên, như bộ nhớ, và các tập tin được mở. Một tiểu trình là một đơn vị có thể điều phối, sự thực thi của nó có thể được thực hiện tuần tự hay bị ngắt, do đó processor có thể chuyển từ tiểu trình này sang tiểu trình khác.
Mỗi tiến trình windows NT được thể hiện bởi một đối tượng, mà cấu trúc chung của nó bao gồm: loại đối tượng (Object type), các thuộc tính đối tượng (Object Attributes) và các dịch vụ (Service). 
Mỗi tiến trình được định nghĩa bởi một tập các thuộc tính và các dịch vụ mà nó có thể thực hiện. Một tiến trình sẽ thực hiện một dịch vụ để nhận thông điệp thích hợp.
Khi windows NT tạo ra một tiến trình mới, nó sử dụng lớp đối tượng, hay kiểu, định nghĩa cho tiến trình windows NT như một template để tạo ra một thể hiện mới của đối tượng. Tại thời điểm tạo đó, các giá trị thuộc tính sẽ được gán. 
Một tiến trình windows NT phải chứa ít nhất một tiểu trình để thực thi. Tiểu trình đó sau đó có thể tạo ra các tiểu trình khác. Trong hệ thống đa xử lý, nhiều tiểu trình của cùng tiến trình có thể thực thi song song.
Một số thuộc tính của một tiểu trình tương tự với các thuộc tính của một tiến trình. Trong những trường hợp đó, giá trị thuộc tính của tiểu trình được thừa kế từ giá trị thuộc tính của tiến trình. Ví dụ, các processor liên quan đến các tiểu trình là tập các processor trong một hệ thống multiprocessor (đa vi xử lý) mà nó có thể thực thi tiểu trình này; tập đó tương đương hay một tập con của các processor liên quan đến tiến trình.
Một trong những thuộc tính của đối tượng tiểu trình là ngữ cảnh (context) của tiểu trình. Thông tin này cho phép các tiểu trình có thể tạm dừng và tái kích hoạt trở lại được. Hơn thế nữa, nó có thể thay đổi hành vi của một tiểu trình bằng cách thay đổi ngữ cảnh của nó khi nó bị tạm dừng.
Multithreading (Đa tiểu trình)
Windows NT hỗ trợ đồng thời nhiều tiến trình bởi vì các tiểu trình trong các tiến trình khác nhau có thể thực thi đồng thời. Hơn nữa, nhiều tiểu trình bên trong cùng một tiến trình có thể định vị tách biệt các processor và thực thi đồng thời. Một tiến trình đa tiểu trình đạt được sự đồng thời mà không cần sử dụng nhiều tiến trình. Các tiểu trình bên trong cùng tiến trình có thể trao đổi thông tin thông qua bộ nhớ chia sẻ và truy xuất các tài nguyên chia sẻ của tiến trình.
Một tiến trình đa tiểu trình hướng đối tượng là một công cụ hiệu quả cho việc cung cấp các ứng dụng server. Một tiến trình server đơn lẻ có thể phục vụ một số client. Mỗi client yêu cầu khởi phát việc tạo một tiểu trình mới bên trong server.
Hỗ trợ các hệ thống con hệ điều hành
Mục tiêu chung nhất của tiến trình và tiểu trình là phải hỗ trợ các cấu trúc tiến trình và tiểu trình của các client trên các hệ điều hành khác nhau. Đó là trách nhiệm của mỗi hệ thống con hệ điều hành, để khai thác các đặc tính của tiến trình và tiểu trình windows NT, để mô phỏng dễ dàng tiến trình và tiểu trình của hệ điều hành tương ứng của nó.
Sau đây chúng ta hãy quan sát quá trình tạo tiến trình trong windows NT để thấy được sự hỗ trợ tiến trình và tiểu trình cho các hệ thống con hệ điều hành. Việc tạo tiến trình bắt đầu với một yêu cầu một tiến trình mới từ một ứng dụng hệ điều hành. Yêu cầu tạo tiến trình được phát ra từ một ứng dụng đến hệ thống con được bảo vệ tương ứng. Đến lượt nó, hệ thống con phát ra một yêu cầu tiến trình cho thành phần Executive của windows NT. Windows NT tạo một đối tượng tiến trình và trả ra một handle của đối tượng đó đến cho hệ thống con. Khi windows NT tạo một tiến trình, nó không tự động tạo một tiểu trình. Do đó, đối với các hệ điều hành này, hệ thống con gọi trình quản lý tiến trình windows NT một lần nữa để tạo ra một tiểu trình cho tiến trình mới, mà nó nhận được một handle của tiểu trình từ windows NT. Thông tin tiểu trình và tiến trình thích hợp sau đó được trả lại cho ứng dụng. Trong Windows 16-bit và POSIX, các tiểu trình không được hỗ trợ. Do đó, đối với các hệ điều hành như thế này, hệ thống con có một tiểu trình cho tiến trình mới từ windows NT, cho nên tiến trình có thể được kích hoạt, nhưng chi trả lại thông tin tiến trình cho ứng dụng. Trong thực tế, tiến trình ứng dụng được cài đặt bằng cách sử dụng một tiểu trình không thấy cho ứng dụng.
Khi một tiến trình mới được tạo trong Win32 hay OS/2, tiến trình mới thừa kế nhiều đặc tính của nó từ tiến trình tạo. Tuy nhiên, trong môi trường hệ điều hành windows NT, việc tạo tiến trình này không được thực hiện trực tiếp. Một tiến trình client ứng dụng phát ra yêu cầu tạo tiến trình của nó đến cho hệ thống con hệ điều hành; sau đó một tiến trình trong hệ thống con đến lượt nó phát ra một yêu cầu tiến trình cho thành phần Executive của windows NT. Vì tác dụng mong đợi là tiến trình mới thừa kế các đặc tính của tiến trình client và không thừa kế từ tiến trình server, nên windows NT cho phép hệ thống con chỉ định cha của tiến trình mới. Sau đó tiến trình mới thừa kế token truy xuất, thời gian quota, độ ưu tiên cơ sở, và mối quan hệ processor mặc định của tiến trình cha.
Trong windows NT, không có quan hệ được định nghĩa trước giữa các tiến trình. Tuy nhiên, cả hệ điều hành POSIX và hệ điều hành OS/2 đều áp đặt một mối quan hệ phân cấp. Mỗi tiến trình mở rộng một tiến trình ban đầu được tạo bởi một tiến trình khác và được xem như cấp dưới tiến trình tạo ra nó. Bằng cách sử dụng các handle đối tượng, hệ thống con hệ điều hành có thể duy trì các mối quan hệ giữa các tiến trình này.

File đính kèm:

  • docGiáo trình Lý thuyết hệ điều hành - Chương 2 Quản lý tiến trình.doc