1. Trang chủ
  2. » Luận Văn - Báo Cáo

Nguyên cứu tìm hiểu về quản lý tiến trình trong hệ Điều hành windows

52 0 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Thông tin cơ bản

Tiêu đề Nghiên cứu tìm hiểu về quản lý tiến trình trong hệ điều hành windows
Tác giả Nguyễn Như Công, Vũ Đức Dũng, Đỗ Ngọc Giang, Trịnh Gia Lộc, Lê Công Nghĩa
Người hướng dẫn ThS. Nguyễn Thanh Hải
Trường học Trường Đại Học Công Nghiệp Hà Nội
Chuyên ngành Công Nghệ Thông Tin
Thể loại Bài tập lớn
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 52
Dung lượng 4,62 MB

Cấu trúc

  • CHƯƠNG 1: TỔNG QUAN VỀ CÁC LOẠI TIẾN TRÌNH (10)
    • 1.1. Tiến trình và các loại tiến trình (10)
    • 1.2. Mô hình tiến trình (11)
    • 1.3. Tiểu trình và tiến trình (14)
    • 1.4. Các trạng thái tiến trình (15)
    • 1.5. Cấu trúc dữ liệu của khối quản lý tiến trình (21)
    • 1.6. Các thao tác điều khiển tiến trình (23)
  • CHƯƠNG 2: TÀI NGUYÊN GĂNG VÀ ĐOẠN GĂNG (26)
    • 2.1. Tài nguyên Găng (Critical Resource) (26)
    • 2.2. Đoạn Găng (Critical Section) (26)
    • 2.3. Yêu cầu của công tác điều độ qua đoạn Găng (27)
  • CHƯƠNG 3: BẾ TẮC (DEADLOCK) VÀ CHỐNG BẾ TẮC (29)
    • 3.1. Bế tắc (29)
    • 3.2. Điều kiện để hình thành bế tắc (29)
    • 3.3. Ngăn chặn bế tắc (Deadlock Prevention) (30)
    • 3.4. Nhận biết bế tắc (Deadlock detection) (31)
  • CHƯƠNG 4: ĐIỀU PHỐI TIẾN TRÌNH (33)
    • 4.1. Mục tiêu điều phối tiến trình (33)
    • 4.2. Tổ chức điều phối tiến trình (36)
    • 4.3. Các thuật toán điều phối tiến trình (0)
  • CHƯƠNG 5: QUẢN LÝ TIẾN TRÌNH VỚI TASK MANAGER (WINDOWS 11) (42)
    • 5.1. Task Manager là gì? (42)
    • 5.2. Chức năng của các Tab trong Task Manager (43)
    • 5.3. Khởi tạo tiến trình và chạy tiến trình mới (49)
    • 5.4. Chuỗi chờ đợi tiến trình (50)
  • KẾT LUẬN (51)
  • TÀI LIỆU THAM KHẢO (52)

Nội dung

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 ch

TỔNG QUAN VỀ CÁC LOẠI TIẾN TRÌNH

Tiến trình và các loại tiến trình

Để hỗ trợ đa nhiệm, hệ thống máy tính cần khả năng thực hiện nhiều tác vụ đồng thời, nhưng việc điều khiển hoạt động này ở cấp độ phần cứng rất phức tạp Do đó, các nhà thiết kế hệ điều hành đã đề xuất mô hình song hành giả lập, cho phép chuyển đổi bộ xử lý giữa các chương trình nhằm duy trì hoạt động của nhiều chương trình cùng lúc Trong mô hình này, các hệ thống được tổ chức thành các tiến trình (process).

Tiến trình là một phần quan trọng trong một chương trình đang được thực hiện, và đơn vị thực hiện tiến trình chính là bộ xử lý (processor).

Tiến trình là một phần quan trọng của chương trình, bao gồm các thành phần như con trỏ lệnh, con trỏ stack, tập các thanh ghi và không gian địa chỉ trong bộ nhớ chính Tất cả những yếu tố này cung cấp thông tin cần thiết để tiến trình hoạt động hiệu quả.

Khái niệm tiến trình trong hệ điều hành được hiểu qua nhiều định nghĩa khác nhau Theo Saltzer, tiến trình là một chương trình được thực hiện bởi một bộ xử lý logic Trong khi đó, Horning và Rendell định nghĩa tiến trình là quá trình chuyển đổi giữa các trạng thái dưới tác động của hàm hành động, bắt đầu từ một trạng thái ban đầu nhất định.

Cần phân biệt rõ giữa chương trình và tiến trình Chương trình là thực thể thụ động chứa các chỉ thị để máy tính thực hiện một tác vụ cụ thể Khi các chỉ thị này được thực hiện, con trỏ lệnh xác định chỉ thị tiếp theo cùng với các tài nguyên cần thiết cho hoạt động của tiến trình Tiến trình trong hệ thống được chia thành hai loại: tiến trình tuần tự, trong đó điểm khởi đầu là điểm kết thúc của tiến trình trước, và tiến trình song song, nơi điểm khởi đầu nằm trong thân của các tiến trình khác.

6 có thể khởi tạo một tiến trình mới khi các tiến trình trước đó chưa kết thúc Tiến trình song song được chia thành nhiều loại:

Tiến trình song song độc lập đề cập đến các tiến trình hoạt động đồng thời mà không có mối quan hệ thông tin nào với nhau Trong trường hợp này, hệ điều hành đảm bảo cơ chế bảo vệ dữ liệu cho từng tiến trình và phân bổ tài nguyên một cách hợp lý để tối ưu hóa hiệu suất.

Tiến trình song song trong hệ thống máy tính thường trao đổi thông tin với nhau, và trong một số tình huống, tiến trình gửi thông báo cần nhận tín hiệu từ tiến trình nhận để tiếp tục hoạt động Tuy nhiên, điều này có thể dẫn đến tình trạng bế tắc nếu tiến trình nhận không ở trạng thái sẵn sàng nhận tín hiệu hoặc tiến trình gửi không ở trạng thái chờ nhận phản hồi.

Trong tiến trình song song phân cấp, một tiến trình có thể khởi tạo các tiến trình con hoạt động đồng thời, với tiến trình khởi tạo được gọi là tiến trình cha Hệ điều hành phải giải quyết vấn đề cấp phát tài nguyên cho các tiến trình con, xác định nguồn tài nguyên từ tiến trình cha hay từ hệ thống Để quản lý tài nguyên, hệ điều hành áp dụng hai mô hình: mô hình tập trung, trong đó hệ điều hành phân phối tài nguyên cho tất cả các tiến trình, và mô hình phân tán, cho phép tiến trình con nhận tài nguyên từ tiến trình cha Trong mô hình phân tán, tiến trình cha có trách nhiệm nhận tài nguyên từ hệ điều hành để cấp phát cho các tiến trình con và thu hồi tài nguyên trước khi kết thúc.

Tiến trình song song đồng mức là các tiến trình hoạt động đồng thời, chia sẻ tài nguyên theo nguyên tắc lần lượt Mỗi tiến trình, sau một khoảng thời gian sử dụng tài nguyên, cần phải tự động trả lại tài nguyên đó cho tiến trình khác.

Mô hình tiến trình

Đa số các hệ điều hành đều muốn đưa sự đa chương, đa nhiệm vào hệ thống Tức

Trong hệ thống máy tính, có thể có nhiều chương trình hoạt động đồng thời (concurrency) nhờ vào việc sử dụng nhiều processor Tuy nhiên, hệ điều hành và người sử dụng mong muốn thực hiện đa chương ngay cả trên các hệ thống chỉ có một processor Nhiều hệ điều hành như Windows 9x và Windows NT/2000 đã thành công trong việc này Để đạt được điều đó, hệ điều hành áp dụng mô hình tiến trình nhằm tạo ra sự song song giả, biến các processor vật lý thành các processor logic Mỗi processor logic có thể hoạt động song song và chịu trách nhiệm thực hiện một tiến trình riêng biệt.

Trong mô hình tiến trình hệ điều hành, chương trình được chia thành nhiều tiến trình và khởi tạo nhiều tiến trình cùng lúc, với đầy đủ tài nguyên (trừ processor) được cấp phát cho chúng Hệ điều hành cấp processor cho một trong các tiến trình đang ở trạng thái sẵn sàng, sau đó thu hồi processor để cấp cho tiến trình khác Quá trình này lặp đi lặp lại cho đến khi tất cả các tiến trình hoàn thành Điều đặc biệt là khoảng thời gian chuyển giao processor rất ngắn, tạo cảm giác cho các tiến trình như đang sở hữu processor liên tục, dẫn đến hiện tượng song song giả, nơi hệ thống dường như cho phép các tiến trình hoạt động đồng thời.

Giả sử trong hệ thống có 3 tiến trình sẵn sàng P , P , P1 2 3 thì quá trình chuyển processor giữa 3 tiến trình này có thể minh họa như sau:

Thời điểm Trạng thái các tiến trình t1 P1: được cấp processor t2 P1: bị thu hồi processor (khi chưa kết thúc)

P3: được cấp processor t3 P3: bị thu hồi processor (khi chưa kết thúc)

P1: được cấp processor t4 P1: kết thúc và trả lại processor

P2: được cấp processor t5 P2: kết thúc và trả lại processor

P3: được cấp processor t6 P3: kết thúc và trả lại processo

Hình sau đây minh họa quá trình thực hiện của 3 tiến trình P1, P , P2 3 ở trên:

Hình 1: Sự hoạt động "song song" của các tiến trình P1, P2, P3

Chức năng cơ bản của bộ vi xử lý (processor) là thực hiện các chỉ thị máy (machine instruction) được lưu trữ trong bộ nhớ chính, mà các chỉ thị này được cung cấp từ một chương trình Chương trình bao gồm một chuỗi tuần tự các chỉ thị, và tiến trình là một phần của chương trình, sở hữu tập lệnh trong bộ nhớ chính cùng với con trỏ lệnh Do đó, việc chuyển đổi bộ vi xử lý từ tiến trình này sang tiến trình khác thực chất là việc điều khiển bộ vi xử lý để thực hiện xen kẽ các chỉ thị bên trong các tiến trình khác nhau Việc này có thể thực hiện dễ dàng bằng cách thay đổi.

Giá trị hợp lý của con trỏ lệnh trong các bộ vi xử lý thuộc kiến trúc Intel chính là cặp thanh ghi CS:IP Cặp thanh ghi này giúp con trỏ lệnh xác định vị trí các chỉ thị cần thực hiện trong các tiến trình.

Mô hình tiến trình hệ thống có được 2 điều lợi:

Tiết kiệm bộ nhớ là một lợi ích quan trọng, vì hệ thống chỉ cần nạp các tiến trình cần thiết nhất vào bộ nhớ, giúp giảm thiểu lượng bộ nhớ sử dụng Sau đó, tùy theo yêu cầu của người dùng, các tiến trình khác có thể được nạp thêm khi cần thiết.

Việc cho phép các chương trình hoạt động song song giúp tăng tốc độ xử lý của toàn hệ thống, đồng thời tối ưu hóa thời gian xử lý của bộ vi xử lý.

Tiểu trình và tiến trình

Tiểu trình là một cơ chế cho phép nhiều dòng xử lý chia sẻ cùng một không gian địa chỉ tiến trình, giúp chúng hoạt động song song như các tiến trình độc lập Điều này đáp ứng nhu cầu của một số ứng dụng cần xử lý đồng thời, và được hỗ trợ bởi các hệ điều hành hiện đại thông qua các chỉ thị trong chương trình.

Tiểu trình là đơn vị xử lý cơ bản trong hệ thống, tương tự như tiến trình, với khả năng xử lý tuần tự các chỉ thị máy Nó có con trỏ lệnh, một tập các thanh ghi và không gian stack riêng, đảm bảo hoạt động hiệu quả trong quản lý tài nguyên.

Một tiến trình đơn có thể chứa nhiều tiểu trình, cho phép chúng chia sẻ không gian địa chỉ và truy cập vào biến toàn cục cũng như vùng nhớ stack của nhau Các tiểu trình này sử dụng thời gian xử lý của processor tương tự như tiến trình, giúp chúng hoạt động song song (giả) với nhau Trong quá trình thực thi, tiểu trình có khả năng tạo ra các tiến trình con Mô hình đa tiểu trình trong tiến trình đơn cho phép nhiều tiểu trình hoạt động trên cả hệ thống multiprocessor và uniprocessor, mang lại hiệu suất cao cho các hệ điều hành khác nhau.

10 nhau có cách tiếp cận mô hình tiểu trình khác nhau Ở đây chúng ta tiếp cận mô hình tiểu trình từ mô hình tác vụ (Task)

Trong một tác vụ, có thể tồn tại một hoặc nhiều tiểu trình, mỗi tiểu trình bao gồm trạng thái thực thi (như running, ready), lưu trữ ngữ cảnh của bộ xử lý khi tiểu trình không hoạt động, thông tin thống kê về việc sử dụng biến cục bộ, một stack thực thi, và truy xuất đến bộ nhớ cùng tài nguyên của tác vụ, những thứ này được chia sẻ giữa các tiểu trình trong cùng tác vụ.

Hệ điều hành thực hiện các thao tác lập lịch và điều phối tiến trình dựa trên tiểu trình Tuy nhiên, khi có thao tác nào ảnh hưởng đến tất cả tiểu trình trong một tác vụ, hệ điều hành cần can thiệp vào tác vụ đó.

Tất cả các tiểu trình trong một tác vụ chia sẻ cùng một không gian địa chỉ, do đó, chúng phải được đưa vào trạng thái tạm ngưng (suspend) đồng thời Khi một tác vụ kết thúc, tất cả các tiểu trình liên quan cũng sẽ bị kết thúc Chúng ta sẽ giải thích rõ hơn về trạng thái tạm ngưng này trong phần tiếp theo.

Các trạng thái tiến trình

Từ khi được khởi tạo cho đến khi hoàn thành, tiến trình trải qua nhiều trạng thái khác nhau Trạng thái của tiến trình tại một thời điểm cụ thể được xác định bởi hoạt động hiện tại của nó.

Tiến trình hai trạng thái trong hệ điều hành cho phép tiến trình chỉ tồn tại ở hai trạng thái: Not Running và Running Khi một tiến trình mới được tạo ra, nó sẽ ở trạng thái Not Running, chờ đợi để chuyển sang trạng thái Running Nếu tiến trình đang thực hiện bị ngắt, bộ điều phối tiến trình của hệ điều hành sẽ quản lý trạng thái này.

Quá trình thu hồi bộ xử lý từ tiến trình hiện tại sẽ được thực hiện, sau đó một tiến trình ở trạng thái Not running sẽ được chọn để cấp bộ xử lý, chuyển nó sang trạng thái Running Tiến trình đã thu hồi bộ xử lý sẽ trở lại trạng thái Not running.

Hình 2: Sơ đồ chuyển trạng thái tiến trình

Trong một hệ điều hành, tại một thời điểm nhất định chỉ có một tiến trình ở trạng thái Running, trong khi nhiều tiến trình khác có thể ở trạng thái Not running Các tiến trình Not running này được lưu trữ trong một hàng đợi (Queue) Khi một tiến trình đang Running chuyển sang trạng thái Not running, nó sẽ được đưa vào hàng đợi để chờ xử lý tiếp theo Hình vẽ sau đây minh họa sự chuyển đổi trạng thái của tiến trình trong các hệ điều hành sử dụng hai trạng thái tiến trình.

Trong hầu hết các hệ điều hành, tiến trình có thể ở một trong ba trạng thái: sẵn sàng (ready), đang chạy (running) và bị chặn (blocked) Sơ đồ chuyển tiến trình vào hàng đợi minh họa rõ ràng quá trình này.

Trạng thái Ready (sẵn sàng) là giai đoạn mà tiến trình được khởi tạo và đưa vào hệ thống với đầy đủ tài nguyên, ngoại trừ bộ xử lý Trong trạng thái này, tiến trình đang chờ được cấp phát bộ xử lý để có thể bắt đầu thực hiện các tác vụ của mình.

Trạng thái Running (thực hiện) là khi tiến trình đang chiếm quyền sử dụng bộ xử lý (processor) để thực hiện các chỉ thị của nó Trong trạng thái này, các lệnh của tiến trình được xử lý và thực hiện bởi bộ xử lý, đảm bảo tiến trình hoạt động một cách hiệu quả.

Hình 4: Sơ đồ chuyển trạng thái tiến trình

Trạng thái Blocked (khóa) là trạng thái mà một tiến trình đang chờ nhận thêm tài nguyên, chờ sự kiện xảy ra hoặc chờ quá trình vào/ra hoàn tất.

Quá trình chuyển trạng thái của các tiến trình trong được mô tả bởi sơ đồ sau: Trong đó:

1 (Admit) Tiến trình được khởi tạo, được đưa vào hệ thống, được cấp phát đầy đủ tài nguyên chỉ thiếu processor

2 (Dispatch) Tiến trình được cấp processor để bắt đầu thực hiện/ xử lý

3 (Release) Tiến trình hoàn thành xử lý và kết thúc

4 (Timeout) Tiến trình bị bộ điều phối tiến trình thu hồi processor, do hết thời gian được quyền sử dụng processor, để cấp phát cho tiến trình khác

Tiến trình đang ở trạng thái chờ khi nó đợi một sự kiện xảy ra, hoặc khi đang chờ thao tác vào/ra hoàn tất, hoặc khi tài nguyên mà tiến trình yêu cầu chưa được hệ điều hành cung cấp.

Sự kiện xảy ra khi tiến trình chờ đã hoàn tất, bao gồm thao tác vào/ra kết thúc hoặc tài nguyên mà tiến trình yêu cầu đã được hệ điều hành cung cấp.

Bộ phận điều phối tiến trình thu hồi processor từ một tiến trình đang thực hiện trong các trường hợp sau:

- Tiến trình đang thực hiện hết thời gian (timeout) được quyền sử dụng processor mà bộ phận điều phối dành cho nó

- Có một tiến trình mới phát sinh và tiến trình mới này có độ ưu tiên cao hơn tiến trình hiện tại

Một tiến trình mới đã xuất hiện và yêu cầu thời gian xử lý của bộ vi xử lý ngắn hơn nhiều so với thời gian còn lại của tiến trình hiện tại Trong hệ thống, có thể có nhiều tiến trình đang hoạt động đồng thời tại một thời điểm nhất định.

Trong hệ thống quản lý tiến trình, có 13 tiến trình ở trạng thái Ready hoặc Blocked, nhưng chỉ có một tiến trình đang ở trạng thái Running Các tiến trình ở trạng thái Ready và Blocked được tổ chức trong các hàng đợi riêng biệt.

Hình 5: Sơ đồ chuyển tiến trình vào các hàng đợi

Có nhiều nguyên nhân khiến một tiến trình đang chạy chuyển sang trạng thái bị chặn Để quản lý tình huống này, hầu hết các hệ điều hành đều thiết kế một hệ thống hàng đợi với nhiều hàng đợi khác nhau, mỗi hàng đợi được sử dụng để lưu trữ các tiến trình đang chờ đợi một sự kiện cụ thể nào đó.

Trong môi trường hệ điều hành đa nhiệm, việc tổ chức các Queue để lưu trữ các tiến trình chưa thể hoạt động là rất quan trọng Tuy nhiên, nếu số lượng tiến trình trong Queue hoặc bộ nhớ chính quá nhiều, sẽ dẫn đến lãng phí bộ nhớ và không đủ tài nguyên để nạp các tiến trình khác khi cần Hơn nữa, nếu các tiến trình trong Queue chiếm giữ tài nguyên mà các tiến trình khác cần, sẽ gây ra tình trạng sử dụng tài nguyên không hợp lý, dẫn đến thiếu hụt tài nguyên và có thể làm cho hệ thống bị bế tắc Do đó, các hệ điều hành đa nhiệm cần thiết kế thêm một trạng thái tiến trình để quản lý hiệu quả hơn.

Trạng thái Suspend (tạm dừng) là một trong 14 trình mới, rất quan trọng cho các hệ thống áp dụng kỹ thuật Swap trong việc quản lý bộ nhớ cho các tiến trình Khái niệm Swap sẽ được trình bày chi tiết trong chương Quản lý bộ nhớ của tài liệu này.

Hình 6: Sơ đồ chuyển trạng thái tiến trình có suspend

Cấu trúc dữ liệu của khối quản lý tiến trình

Để quản lý tiến trình và tài nguyên trong hệ thống, hệ điều hành cần thông tin về trạng thái hiện tại của từng tiến trình và tài nguyên Hệ điều hành xây dựng và duy trì các bảng thông tin như memory table cho bộ nhớ, I/O table cho thiết bị vào/ra, file table cho tập tin và process table cho tiến trình Memory table theo dõi bộ nhớ thực và ảo, bao gồm không gian bộ nhớ chính và phụ, thuộc tính bảo vệ bộ nhớ, cùng thông tin quản lý bộ nhớ ảo Việc quản lý tiến trình và bộ nhớ có mối quan hệ chặt chẽ; bộ phận quản lý tiến trình cần thông tin về bộ nhớ để điều khiển hoạt động của tiến trình, trong khi bộ phận quản lý bộ nhớ cần thông tin về tiến trình để tổ chức nạp tiến trình vào bộ nhớ Điều này cũng áp dụng cho các bộ phận quản lý vào/ra và tập tin Để quản lý một tiến trình, hệ điều hành phải biết vị trí nạp tiến trình trong bộ nhớ chính và các thuộc tính cần thiết cho việc quản lý tiến trình.

Định vị của tiến trình phụ thuộc vào chiến lược quản lý bộ nhớ đang sử dụng Trong trường hợp đơn giản nhất, hình ảnh của tiến trình được lưu trữ tại các khối nhớ liên tục trên bộ nhớ phụ, thường là đĩa Để tiến trình có thể thực hiện, nó cần được nạp vào bộ nhớ.

Hệ điều hành cần xác định vị trí của mỗi tiến trình trên đĩa và trong bộ nhớ chính Trong một số chiến lược quản lý bộ nhớ, chỉ một phần của tiến trình được nạp vào bộ nhớ chính, trong khi phần còn lại vẫn lưu trữ trên đĩa Khi một tiến trình đang ở trong bộ nhớ chính, có thể một phần của nó bị swap-out ra đĩa, trong khi phần còn lại vẫn ở lại bộ nhớ chính Do đó, hệ điều hành phải theo dõi tiến trình để biết phần nào đang ở trong bộ nhớ chính và phần nào còn lại trên đĩa.

Trong các hệ thống đa chương, thông tin về mỗi tiến trình là rất quan trọng cho việc quản lý tiến trình của hệ điều hành, và thông tin này thường được lưu trữ trong khối điều khiển tiến trình (PCB - Process Control Block) PCB là một cấu trúc dữ liệu trong nhân hệ điều hành, chứa các thông tin cần thiết để quản lý một tiến trình cụ thể Hệ điều hành sử dụng PCB để theo dõi và quản lý các tiến trình, vì vậy thông tin trong PCB phải được lưu trữ trong một vùng bộ nhớ được bảo vệ Trong hệ điều hành Windows, PCB được đặt ở đầu của ngăn xếp nhân của tiến trình Thông tin trong PCB có thể được phân chia thành ba nhóm chính.

Định danh tiến trình (PID) là một mã số duy nhất được gán cho mỗi tiến trình trong hệ thống, giúp phân biệt chúng với nhau PID có thể được lưu trữ trong các bảng như memory table và I/O table Khi một tiến trình giao tiếp với tiến trình khác, PID sẽ được sử dụng để hệ điều hành xác định tiến trình đích Ngoài ra, khi một tiến trình tạo ra tiến trình khác, PID cũng được dùng để chỉ ra mối quan hệ giữa tiến trình cha và tiến trình con Tóm lại, các thông tin về PID được lưu trữ trong PCB bao gồm: định danh của tiến trình, định danh của tiến trình cha và định danh của người sử dụng.

• Thông tin trạng thái processor (processor state information): bao gồm các thanh ghi User-visible, các thanh ghi trạng thái và điều khiển, các con trỏ stack

Thông tin điều khiển tiến trình bao gồm trạng thái và lập lịch của tiến trình, cấu trúc dữ liệu, truyền thông giữa các tiến trình, quyền truy cập vào tiến trình, quản lý bộ nhớ, cũng như tài nguyên khởi tạo và tài nguyên sinh ra Ngoài ra, nó cũng cung cấp thông tin về thời điểm thực thi gần nhất và thời gian CPU đã sử dụng.

PCB là cấu trúc dữ liệu quan trọng trong hệ điều hành, chứa tất cả thông tin cần thiết về tiến trình, giúp hệ điều hành quản lý và điều phối hoạt động của các tiến trình hiệu quả.

Trong hệ điều hành, nhiều mô-đun thành phần có khả năng đọc và/hoặc sửa đổi PCB, bao gồm lập lịch tiến trình, cấp phát tài nguyên và xử lý ngắt tiến trình Các thiết lập trong PCB đóng vai trò quan trọng trong việc xác định trạng thái của hệ điều hành.

Các thao tác điều khiển tiến trình

Khi khởi tạo tiến trình hệ điều hành thực hiện các thao tác sau:

Hệ điều hành cấp một PID cho tiến trình mới và thêm tiến trình này vào danh sách quản lý của hệ thống, sử dụng một mục trong PCB để lưu trữ thông tin liên quan đến tiến trình vừa được tạo ra.

Hệ điều hành cần cấp phát không gian bộ nhớ cho tiến trình bằng cách xác định kích thước của tiến trình, bao gồm mã, dữ liệu và ngăn xếp Kích thước này có thể được gán mặc định theo loại tiến trình hoặc theo yêu cầu của người sử dụng khi tạo công việc Nếu tiến trình được sinh ra từ một tiến trình khác, tiến trình cha có thể truyền kích thước của nó đến hệ điều hành trong yêu cầu tạo tiến trình.

Khởi tạo thông tin cần thiết cho khối điều khiển tiến trình bao gồm các PID của tiến trình cha (nếu có), trạng thái tiến trình, độ ưu tiên của tiến trình, và thông tin ngữ cảnh của bộ xử lý như bộ đếm chương trình và các thanh ghi khác.

• Cung cấp đầy đủ các tài nguyên cần thiết nhất, trừ processor, để tiến trình có thể vào trạng thái ready được hoặc bắt đầu hoạt động được

Đưa tiến trình vào danh sách tiến trình như danh sách sẵn sàng, danh sách tạm ngưng hoặc danh sách chờ, phù hợp với chiến lược điều phối của bộ phận điều phối tiến trình trong hệ điều hành.

Khi một tiến trình khởi tạo một tiến trình con, tài nguyên có thể được cấp phát bởi hệ điều hành hoặc được tiến trình cha thừa hưởng từ các tài nguyên ban đầu của nó.

Khi một tiến trình trong hệ điều hành hoàn tất, sau khi thực hiện chỉ thị cuối cùng, hệ điều hành sẽ tiến hành các thao tác cần thiết để kết thúc tiến trình đó.

• Thu hồi tài nguyên đã cấp phát cho tiến trình

• Loại bỏ tiến trình ra khỏi danh sách quản lý của hệ thống.

• Huỷ bỏ khối điều khiển tiến trình

Hầu hết các hệ điều hành không cho phép tiến trình con tiếp tục hoạt động sau khi tiến trình cha đã kết thúc Khi tiến trình cha kết thúc, hệ điều hành sẽ tự động kết thúc tiến trình con để đảm bảo tính ổn định và quản lý tài nguyên hiệu quả.

Khi một tiến trình trong hệ điều hành chuyển từ trạng thái đang chạy (running) sang trạng thái khác như sẵn sàng (ready) hoặc bị chặn (blocked), hệ thống thực hiện các bước cần thiết để đảm bảo quản lý tài nguyên và hiệu suất tối ưu Việc chuyển đổi này giúp duy trì sự ổn định và hiệu quả trong việc xử lý các tiến trình song song trong hệ thống.

Khi hệ điều hành cần thay đổi trạng thái tiến trình, nó phải thực hiện một loạt các bước quan trọng để đảm bảo sự thay đổi diễn ra hiệu quả trong môi trường làm việc.

• Lưu (save) ngữ cảnh của processor, bao gồm thanh ghi bộ đếm chương trình (PC: program counter) và các thanh ghi khác

Cập nhật PCB của tiến trình là việc điều chỉnh thông tin để phản ánh trạng thái mới của tiến trình, bao gồm các thông tin tính toán và trạng thái hiện tại.

• Di chuyển PCB của tiến trình đến một hàng đợi thích hợp, để đáp ứng được các yêu cầu của công tác điều phối tiến trình

• Chọn một tiến trình khác để cho phép nó thực hiện

• Cập nhật PCB của tiến trình vừa được chọn thực hiện ở trên, chủ yếu là thay đổi trạng thái của tiến trình đến trạng thái running

Cập nhật thông tin về quản lý bộ nhớ là bước quan trọng, tùy thuộc vào yêu cầu chuyển đổi địa chỉ bộ nhớ hiện tại.

Để tiến trình được chọn có thể hoạt động, cần khôi phục ngữ cảnh của bộ xử lý, đồng thời điều chỉnh giá trị của bộ đếm chương trình và các thanh ghi khác cho phù hợp.

Khi hệ điều hành chuyển một tiến trình từ trạng thái đang chạy sang trạng thái tạm dừng, nó cần lưu trữ các thông tin quan trọng như Program Count để có thể tái kích hoạt tiến trình sau này Đồng thời, hệ điều hành sẽ chọn một tiến trình khác đang ở trạng thái sẵn sàng để chuyển sang trạng thái đang chạy Trong quá trình này, hệ điều hành phải thay đổi giá trị của PC và ngữ cảnh của bộ xử lý, để PC trỏ đến địa chỉ của chỉ thị đầu tiên của tiến trình mới trong bộ nhớ Đây là bản chất của việc thực hiện các tiến trình trong hệ thống uniprocessor.

TÀI NGUYÊN GĂNG VÀ ĐOẠN GĂNG

Tài nguyên Găng (Critical Resource)

Trong môi trường hệ điều hành đa nhiệm và đa người sử dụng, việc chia sẻ tài nguyên giữa các tiến trình là cần thiết Tuy nhiên, nếu hệ điều hành không quản lý tốt việc sử dụng tài nguyên chung, điều này không chỉ làm giảm hiệu quả khai thác tài nguyên mà còn có thể dẫn đến hỏng dữ liệu ứng dụng Hơn nữa, việc hỏng dữ liệu này có thể không được phát hiện bởi hệ điều hành hoặc ứng dụng, gây ra sai lệch trong ý nghĩa thiết kế của ứng dụng, điều mà cả lập trình viên và hệ điều hành đều không mong muốn.

Các tiến trình hoạt động đồng thời thường cạnh tranh tài nguyên dùng chung, như khi hai tiến trình cùng ghi vào một biến chung trong bộ nhớ hoặc cùng ghi dữ liệu vào một file chia sẻ Sự cạnh tranh này có thể dẫn đến xung đột khi sử dụng tài nguyên Để tránh tình trạng này, hệ điều hành cần tổ chức cho các tiến trình có quyền truy xuất độc quyền vào các tài nguyên dùng chung, đảm bảo hoạt động trơn tru và hiệu quả.

Tài nguyên găng là các tài nguyên logic và vật lý được phân bổ cho các tiến trình song hành, bao gồm cả tài nguyên phần cứng và phần mềm Những tài nguyên này có thể là tài nguyên phân chia được hoặc không phân chia được.

Đoạn Găng (Critical Section)

Các đoạn trình sử dụng tài nguyên găng được gọi là đoạn găng (đoạn tới hạn) Để hạn chế lỗi do sử dụng tài nguyên găng, hệ điều hành cần điều khiển các tiến trình sao cho chỉ một tiến trình được phép vào đoạn găng tại một thời điểm Nếu có nhiều tiến trình muốn vào đoạn găng, chỉ một tiến trình được cho phép vào, trong khi các tiến trình khác phải chờ Khi một tiến trình rời khỏi đoạn găng, các tiến trình đang chờ sẽ được xem xét để vào.

Đoạn găng là một phần quan trọng trong quản lý tiến trình, yêu cầu hệ điều hành và các tiến trình khác phải được thông báo để có thể tham gia vào đoạn găng Công tác điều độ tiến trình qua đoạn găng của hệ điều hành cần sự phối hợp chặt chẽ giữa vi xử lý, hệ điều hành và lập trình viên Vi xử lý đưa ra chỉ thị, trong khi hệ điều hành cung cấp công cụ cần thiết để lập trình viên thiết kế sơ đồ điều độ hợp lý, đảm bảo rằng tài nguyên găng được sử dụng một cách độc quyền bởi các tiến trình.

Yêu cầu của công tác điều độ qua đoạn Găng

Nhiệm vụ điều độ tiến trình là sự phối hợp giữa phần cứng vi xử lý, hệ điều hành, ngôn ngữ lập trình và người lập trình, với hệ điều hành và người lập trình đóng vai trò chính Vi xử lý, hệ điều hành và ngôn ngữ lập trình cung cấp công cụ cần thiết để tổ chức sơ đồ điều độ, trong khi hệ điều hành giám sát và thực hiện các sơ đồ này Dù nhiệm vụ điều độ thuộc về thành phần nào, tất cả đều phải đáp ứng các yêu cầu nhất định.

1 Tại một thời điểm không thể có hai tiến trình nằm trong đoạn găng

2 Nếu có nhiều tiến trình đồng thời cùng xin được vào đoạn găng thì chỉ có một tiến trình được phép vào đoạn găng, các tiến trình khác phải xếp hàng chờ trong hàng đợi

3 Tiến trình chờ ngoài đoạn găng không được ngăn cản các tiến trình khác vào đoạn găng.

4 Không có tiến trình nào được phép ở lâu vô hạn trong đoạn găng và không có tiến trình phải chờ lâu mới được vào đoạn găng (chờ trong hàng đợi)

5 Nếu tài nguyên găng được giải phóng thì hệ điều hành có nhiệm vụ đánh thức các tiến trình trong hàng đợi ra để tạo điều kiện cho nó vào đoạn găng Trước khi tìm hiểu về các giải pháp điều độ tiến trình qua đoạn găng chúng ta cần lưu ý một lần nữa rằng: nguyên lý cơ bản của điều độ là tổ chức truy xuất độc quyền trên tài nguyên găng, nhưng sự bắt buộc độc quyền này còn tồn tại hai hạn chế

Bế tắc (Deadlock) trong hệ thống có thể xảy ra khi hai tiến trình, chẳng hạn như P1 và P2, cùng yêu cầu hai tài nguyên găng R1 và R2 Ví dụ, nếu R1 được cấp cho P2 và R2 được cấp cho P1, thì cả hai tiến trình sẽ chờ đợi tài nguyên còn lại để thực hiện hàm của mình Trong tình huống này, không tiến trình nào giải phóng tài nguyên đang sở hữu cho đến khi nhận được tài nguyên còn lại, dẫn đến tình trạng bế tắc cho cả hai tiến trình.

Trong hệ thống, các tiến trình có thể gặp tình trạng đói tài nguyên (Starvation), ví dụ như khi có ba tiến trình P1, P2 và P3, mỗi tiến trình cần truy xuất định kỳ đến tài nguyên R Khi P1 đang sở hữu tài nguyên, hai tiến trình P2 và P3 sẽ phải chờ đợi Khi P1 thoát khỏi đoạn găng của nó, cả P2 và P3 đều có khả năng được chấp nhận truy xuất tài nguyên.

R Giả sử rằngP3 được truy xuất R, sau đó trước khi P3 kết thúc đoạn găng của nó P1 lại một lần nữa cần truy xuất, và giả như P1 được truy xuất sau khi P3 kết thúc đoạn găng, và nếu như P1, P3 thay nhau nhận được quyền truy xuất thì P2 hầu như không thể truy cập đến tài nguyên, cho dù không có sự bế tắc nào xảy ra

BẾ TẮC (DEADLOCK) VÀ CHỐNG BẾ TẮC

Bế tắc

Tất cả hiện tượng bế tắc trong hệ thống đều xuất phát từ xung đột tài nguyên giữa hai hoặc nhiều tiến trình hoạt động đồng thời Tài nguyên có thể bao gồm ổ đĩa, bản ghi trong cơ sở dữ liệu, hoặc không gian địa chỉ trong bộ nhớ chính Dưới đây là một số ví dụ minh họa cho hiện tượng này.

Bế tắc thường xảy ra do xung đột về tài nguyên không thể chia sẻ, nhưng cũng có một số ít trường hợp liên quan đến tài nguyên có thể phân chia Một ví dụ điển hình về bế tắc là xung đột liên quan đến tài nguyên bộ nhớ, vốn thuộc loại tài nguyên có thể chia sẻ.

Hình 8: Chờ đợi vòng tròn

Bế tắc là hiện tượng xảy ra trong hệ thống khi một nhóm các tiến trình đều chờ nhận tài nguyên, nhưng tài nguyên này lại đang bị chiếm giữ bởi một tiến trình khác trong cùng nhóm Tình trạng chờ đợi này có thể kéo dài vô hạn nếu không có sự can thiệp từ bên ngoài.

Điều kiện để hình thành bế tắc

Năm 1971, Coffman đã chỉ ra rằng hệ thống sẽ rơi vào trạng thái bế tắc nếu đồng thời tồn tại bốn điều kiện sau đây.

1 Loại trừ lẫn nhau (mutual exclusion) hay độc quyền sử dụng: Đối với các tài nguyên không phân chia được thì tại mỗi thời điểm chỉ có một tiến trình tài nguyên R2

Giữ Yêu cầu tài nguyên R1

25 sử dụng được tài nguyên

2 Giữ và đợi (hold and wait): Một tiến trình hiện tại đang chiếm giữ tài nguyên, lại xin cấp phát thêm tài nguyên mới

3 Không ưu tiên (No preemption): Không có tài nguyên nào có thể được giải phóng từ một tiến trình đang chiếm giữ nó

4 Đợi vòng tròn (Circular wait): Đây là trường hợp của ví dụ 1 mà chúng ta đã nêu ở trên Tức là, mỗi tiến trình đang chiếm giữ tài nguyên mà tiến trình khác đang cần

Sự bế tắc có thể xảy ra khi thỏa mãn ba điều kiện đầu tiên, tuy nhiên, không nhất thiết phải xảy ra chỉ với ba điều kiện này Để đảm bảo rằng sự bế tắc diễn ra, cần phải có thêm một điều kiện thứ tư.

Ba điều kiện đầu tiên là những yếu tố cần thiết nhưng không đủ để dẫn đến bế tắc Kết quả thứ tư xuất hiện như một hệ quả tất yếu từ ba điều kiện này.

Ngăn chặn bế tắc (Deadlock Prevention)

Ngăn chặn bế tắc là thiết kế hệ thống nhằm loại trừ hiện tượng bế tắc Các phương pháp ngăn chặn bế tắc tập trung vào việc giải quyết bốn điều kiện gây ra bế tắc, đảm bảo rằng hệ thống không thể xảy ra đồng thời cả bốn điều kiện này.

1 Đối với điều kiện độc quyền: Điều kiện này gần như không tránh khỏi, vì sự độc quyền là cần thiết đối với tài nguyên thuộc loại phân chia được như các biến chung, các tập tin chia sẻ, hệ điều hành cần phải hỗ trợ sự độc quyền trên các tài nguyên này Tuy nhiên, với những tài nguyên thuộc loại không phân chia được hệ điều hành có thể sử dụng kỹ thuật SPOOL (Simultaneous Peripheral Operation Online) để tạo ra nhiều tài nguyên ảo cung cấp cho các tiến trình đồng thời

2 Đối với điều kiện giữ và đợi: Điều kiện này có thể ngăn chặn bằng cách yêu cầu tiến trình yêu cầu tất cả tài nguyên mà nó cần tại một thời điểm và tiến trình sẽ bị khoá (blocked) cho đến khi yêu cầu tài nguyên của nó được hệ điều hành đáp ứng Phương pháp này không hiệu quả

3 Đối với điều kiện No preemption: Điều kiện này có thể ngăn chặn bằng cách, khi tiến trình bị rơi vào trạng thái khoá, hệ điều hành có thể thu hồi tài nguyên của tiến

Trong quản lý tiến trình, 26 thiết bị sẽ được khóa để cấp phát cho các tiến trình khác Khi tiến trình được giải phóng khỏi trạng thái khóa, toàn bộ tài nguyên sẽ được cấp lại đầy đủ cho tiến trình đó.

4 Đối với điều kiện chờ đợi vòng tròn: Điều kiện này có thể ngăn chặn bằng cách phân lớp tài nguyên của hệ thống Theo đó, nếu một tiến trình được cấp phát tài nguyên ở lớp L, thì sau đó nó chỉ có thể yêu cầu các tài nguyên ở lớp thấp hơn lớp L.

Nhận biết bế tắc (Deadlock detection)

Các phương thức ngăn chặn bế tắc chủ yếu tập trung vào việc hạn chế quyền truy cập vào tài nguyên và áp đặt ràng buộc lên các tiến trình Mặc dù điều này giúp ngăn chặn độc quyền tài nguyên, nhưng cũng có thể ảnh hưởng đến hiệu quả khai thác tài nguyên của hệ điều hành Ví dụ, hệ điều hành cần thiết lập các cơ chế độc quyền để bảo vệ tài nguyên chia sẻ Tuy nhiên, việc cấp phát tài nguyên một lần cho các tiến trình nhằm ngăn chặn hiện tượng hold and wait cũng gặp phải một số hạn chế nhất định.

Các hệ điều hành giải quyết vấn đề bế tắc thông qua việc phát hiện và tìm cách thoát khỏi tình trạng này Phát hiện bế tắc không giới hạn truy xuất tài nguyên và không áp đặt ràng buộc lên tiến trình, cho phép đáp ứng yêu cầu cấp phát tài nguyên ngay khi có khả năng Để phát hiện bế tắc, hệ điều hành thường sử dụng thuật toán nhằm kiểm tra sự tồn tại của hiện tượng chờ đợi vòng tròn trong hệ thống.

Việc kiểm tra khả năng xảy ra bế tắc trong hệ thống có thể được thực hiện liên tục khi có yêu cầu tài nguyên hoặc theo chu kỳ, tùy thuộc vào tần suất bế tắc xảy ra Kiểm tra bế tắc khi có yêu cầu tài nguyên giúp phát hiện nhanh hơn và áp dụng thuật toán đơn giản hơn, nhưng lại tốn nhiều thời gian cho mỗi lần kiểm tra Khi bế tắc được phát hiện, hệ điều hành sẽ thực hiện một số giải pháp để thoát khỏi tình trạng này.

- Thoát tất cả các tiến trình bị bế tắc Đây là một giải pháp đơn giản nhất, thường được các hệ điều hành sử dụng nhất

- Sao lưu lại mỗi tiến trình bị bế tắc tại một vài điểm kiểm tra được định nghĩa trước, sau đó khởi động lại tất cả các tiến trình

Giải pháp yêu cầu hệ điều hành lưu lại thông tin cần thiết tại điểm dừng của tiến trình, bao gồm con trỏ lệnh và tài nguyên đang sử dụng, để có thể khởi động lại tiến trình Tuy nhiên, nguy cơ xuất hiện bế tắc trở lại là rất cao, vì khi tất cả các tiến trình được reset, việc tranh chấp tài nguyên khó tránh khỏi Hơn nữa, hệ điều hành thường phải chịu chi phí lớn cho việc tạm dừng và tái kích hoạt tiến trình.

Để giải quyết tình trạng bế tắc trong tập tiến trình, hệ điều hành cần kết thúc một tiến trình, thu hồi tài nguyên và cấp phát cho một tiến trình khác trong cùng tập bế tắc Sau đó, thuật toán kiểm tra bế tắc sẽ được gọi lại để xác định xem hệ thống đã thoát khỏi bế tắc hay chưa Nếu vẫn còn bế tắc, cần tiếp tục giải phóng thêm tiến trình khác cho đến khi tất cả các tiến trình đều được giải phóng Vấn đề quan trọng là xác định tiến trình nào nên được giải phóng trước và tiêu chí lựa chọn sao cho chi phí giải phóng bế tắc là thấp nhất.

Để giải quyết tình trạng bế tắc, hệ điều hành tập trung toàn bộ quyền ưu tiên sử dụng tài nguyên cho một tiến trình duy nhất, sau đó kiểm tra xem hệ thống đã thoát khỏi bế tắc hay chưa Nếu hệ thống đã ra khỏi bế tắc, tiến trình sẽ dừng lại; nếu chưa, quá trình sẽ tiếp tục cho đến khi giải quyết được vấn đề Hệ điều hành cần xem xét việc tái kích hoạt tiến trình sau khi tình trạng bế tắc được khắc phục Đối với các giải pháp 3 và 4, hệ điều hành lựa chọn tiến trình để giải phóng hoặc ưu tiên tài nguyên dựa trên các tiêu chí như thời gian xử lý ngắn nhất, thời gian cần processor còn lại ít nhất, tài nguyên cần cấp phát tối thiểu và quyền ưu tiên thấp nhất.

ĐIỀU PHỐI TIẾN TRÌNH

Mục tiêu điều phối tiến trình

Trong công tác điều phối tiến trình, bộ điều phối áp dụng hai cơ chế chính: điều phối độc quyền và điều phối không độc quyền.

1 Điều phối độc quyền: Khi có được processor tiến trình toàn quyền sử dụng processor cho đến khi tiến trình kết thúc xử lý hoặc tiến trình tự động trả lại processor cho hệ thống Các quyết định điều phối xảy ra khi: Tiến trình chuyển trạng thái từ Running sang Blocked hoặc khi tiến trình kết thúc

2 Điều phối không độc quyền: Bộ phận điều phối tiến trình có thể tạm dừng tiến trình đang xử lý để thu hồi processor của nó, để cấp cho tiến trình khác, sao cho phù hợp với công tác điều phối hiện tại Các quyết định điều phối xảy ra khi: Tiến trình chuyển trạng thái hoặc khi tiến trình kết thúc

Khi tổ chức điều phối tiến trình, bộ phận điều phối của hệ điều hành thường dựa vào các đặc điểm quan trọng của tiến trình Một số đặc điểm này bao gồm trạng thái của tiến trình, mức độ ưu tiên, và yêu cầu tài nguyên, giúp tối ưu hóa hiệu suất và quản lý tài nguyên hệ thống hiệu quả.

1 Tiến trình thiên hướng Vào/Ra: Là các tiến trình cần nhiều thời gian hơn cho việc thực hiện các thao tác xuất/nhập dữ liệu, so với thời gian mà tiến trình cần để thực hiện các chỉ thị trong nó, được gọi là các tiến trình thiên hướng Vào/Ra

2 Tiến trình thiên hướng xử lý: Ngược lại với trên, đây là các tiến trình cần nhiều thời gian hơn cho việc thực hiện các chỉ thị trong nó, so với thời gian mà tiến trình để thực hiện các thao tác Vào/Ra

3 Tiến trình tương tác hay xử lý theo lô: Tiến trình cần phải trả lại kết quả tức thời(như trong hệ điều hành tương tác) hay kết thúc xử lý mới trả về kết quả (như

29 trong hệ điều hành xử lý theo lô)

4 Độ ưu tiên của tiến trình: Mỗi tiến trình được gán một độ ưu tiên nhất định, độ ưu tiên của tiến trình có thể được phát sinh tự động bởi hệ thống hoặc được gán tường minh trong chương trình của người sử dụng Độ ưu tiên của tiến trình có hai loại: Thứ nhất, độ ưu tiên tĩnh: là độ ưu tiên gắn trước cho tiến trình và không thay đổi trong suốt thời gian sống của tiến trình Thứ hai, độ ưu tiên động: là độ ưu tiên được gán cho tiến trình trong quá trình hoạt động của nó, hệ điều hành sẽ gán lại độ ưu tiên cho tiến trình khi môi trường xử lý của tiến trình bị thay đổi Khi môi trường xử lýcủa tiến trình thay bị đổi hệ điều hành phải thay đổi độ ưu tiên của tiến trình cho phù hợp với tình trạng hiện tại của hệ thống và công tác điều phối tiến trình của hệ điều hành

5 Thời gian sử dụng processor của tiến trình: Tiến trình cần bao nhiêu khoảng thời gian của processor để hoàn thành xử lý

6 Thời gian còn lại tiến trình cần processor: Tiến trình còn cần bao nhiêu khoảng thời gian của processor nữa để hoàn thành xử lý

Bộ phận điều phối tiến trình thực hiện điều phối tác vụ dựa trên đặc điểm của tiến trình, với điều phối tác vụ diễn ra trước điều phối tiến trình Hệ điều hành chọn tác vụ để đưa vào hệ thống khi có tiến trình mới được tạo lập hoặc khi một tiến trình kết thúc Điều phối tác vụ ảnh hưởng đến đa chương của hệ thống và hiệu quả hoạt động của bộ phận điều phối tiến trình Để tối ưu hóa thời gian xử lý của bộ vi xử lý, cần cân đối số lượng tiến trình tính hướng vào/ra với số lượng tiến trình tính hướng xử lý Nếu có quá nhiều tiến trình tính hướng vào/ra, sẽ dẫn đến lãng phí thời gian xử lý, trong khi quá nhiều tiến trình tính hướng xử lý có thể khiến bộ vi xử lý không đáp ứng kịp thời, gây ra tình trạng chờ đợi lâu và giảm hiệu quả tương tác.

Mục tiêu điều phối: bộ phận điều phối tiến trình của hệ điều hành phải đạt được các mục tiêu sau đây trong công tác điều phối của nó

1 Sự công bằng (Fairness): Các tiến trình đều công bằng với nhau trong việc chia sẻ thời gian xử lý của processor, không có tiến trình nào phải chờ đợi vô hạn để được cấp processor

2 Tính hiệu quả (Efficiency): Tận dụng được 100% thời gian xử lý của processor

3 Trong công tác điều phối, khi processor rỗi bộ phận điều phối sẽ chuyển ngay nó cho tiến trình khác, nếu trong hệ thống có tiến trình đang ở trạng thái chờ processor, nên mục tiêu này dễ đạt được Tuy nhiên, nếu hệ điều hành đưa vào hệ thống quá nhiều tiến trình thiên hướng vào/ra, thì nguy cơ processor bị rỗi là có thể Do đó, để đạt được mục tiêu này hệ điều hành phải tính toán và quyết định nên đưa vào hệ thống bao nhiêu tiến trình thiên hướng vào/ra, bao nhiêu tiến trình thiên hướng xử lý, là thích hợp

4 Thời gian đáp ứng hợp lý (Response time): Đối với các tiến trình tương tác, đây là khoảng thời gian từ khi tiến trình đưa ra yêu cầu cho đến khi nhận được sự hồi đáp Một tiến trình đáp ứng yêu cầu của người sử dụng, phải nhận được thông tin hồi đáp từ yêu cầu của nó thì nó mới có thể trả lời người sử dụng Do đó, theo người sử dụng thì bộ phận điều phối phải cực tiểu hoá thời gian hồi đáp của các tiến trình, có như vậy thì tính tương tác của tiến trình mới tăng lên

5 Thời gian lưu lại trong hệ thống (Turnaround time): Đây là khoảng thời gian từ khi tiến trình được đưa rađến khiđược hoàn thành Bao gồm thời gian thực hiện thực tế cộng với thời gian đợi tài nguyên (bao gồm cả đợi processor) Đại lượng này dùng trong các hệ điều hành xử lý theo lô Do đó, bộ phận điều phối phải cực tiểu thời gian hoàn thành (lưu lại trong hệ thống) của các tác vụ xử lý theo lô

6 Thông lượng tối đa (Throughput): Chính sách điều phối phải cố gắng để cực đại được số lượng tiến trình hoàn thành trên một đơn vị thời gian Mục tiêu này ít phụ thuộc vào chính sách điều phối mà phụ thuộc nhiều vào thời gian thực

31 hiện trung bình của các tiến trình

Công tác điều phối trong hệ điều hành gặp khó khăn trong việc đáp ứng đồng thời tất cả các mục tiêu, do bản chất mâu thuẫn giữa các mục tiêu này Do đó, các hệ điều hành chỉ có thể điều chỉnh và dung hòa các mục tiêu ở một mức độ nhất định.

Tổ chức điều phối tiến trình

Để điều phối tiến trình trong hệ điều hành, hai danh sách quan trọng được sử dụng: Danh sách sẵn sàng (Ready list) lưu trữ các tiến trình ở trạng thái sẵn sàng, trong khi Danh sách đợi (Waiting list) chứa các tiến trình đang chờ được đưa vào danh sách sẵn sàng.

Chỉ những tiến trình trong danh sách ready mới được cấp processor, trong khi các tiến trình chuyển sang trạng thái blocked sẽ được đưa vào danh sách waiting Hệ thống chỉ có một danh sách ready duy nhất, nhưng có thể có nhiều danh sách waiting Thông thường, hệ điều hành thiết kế nhiều danh sách waiting để chứa các tiến trình đang chờ nhận tài nguyên hoặc sự kiện cụ thể.

Hình 9: Sơ đồ chuyển tiến trình vào các danh sách

1 Tiến trình trong hệ thống được cấp đầy đủ tài nguyên chỉ thiếu processor

2 Tiến trình được bộ điều phối chọn ra để cấp processor để bắt đầu xử lý

3 Tiến trình kết thúc xử lý và trả lại processor cho hệ điều hành

4 Tiến trình hết thời gian được quyền sử dụng processor (time-out), bị bộ điều

Waiting list 2 Waiting list 1 Ready list

32 phối tiến trình thu hồi lại processor

5 Tiến trình bị khóa (blocked) do yêu cầu tài nguyên nhưng chưa được hệ điều hành cấp phát Khi đó tiến trình được đưa vào danh sách các tiến trình đợi tài nguyên (waiting list 1)

6 Tiến trình bị khóa (blocked) do đang đợi một sự kiện nào đó xảy ra Khi đó tiến trình được bộ điều phối đưa vào danh sách các tiến trình đợi tài nguyên (waiting list 2)

7 Tài nguyên mà tiến trình yêu cầu đã được hệ điều hành cấp phát Khi đó tiến trình được bộ điều phối chuyển sang danh sách các tiến trình ở trạng thái sẵn sàng (ready list) để chờ được cấp processor để được hoạt động

Khi sự kiện mà tiến trình chờ xảy ra, bộ điều phối sẽ chuyển tiến trình đó sang danh sách các tiến trình ở trạng thái sẵn sàng (ready list) để chờ được cấp phát bộ xử lý Các thuật toán điều phối tiến trình đóng vai trò quan trọng trong việc quản lý và tối ưu hóa hiệu suất hoạt động của hệ thống.

First Come First Served (FCFS):

- Đây là thuật toán đơn giản nhất Tiến trình nào yêu cầu CPU trước sẽ được phục vụ trước

- Ưu điểm: Đơn giản, dễ cài đặt

+ Tiến trình có thời gian xử lý ngắn phải đợi tiến trình có thời gian xử lý dài + Có thể xảy ra tình trạng độc chiếm CPU

+ Không phù hợp với hệ thống tương tác người dùng

Thuật toán ưu tiên xử lý các tiến trình có thời gian xử lý ngắn nhất trước Trong trường hợp có nhiều tiến trình có thời gian xử lý giống nhau, thuật toán FCFS sẽ được áp dụng để xử lý theo thứ tự đến.

- Ưu điểm: Tối ưu thời gian chờ

- Nhược điểm: Cần phải ước lượng thời gian cần CPU tiếp theo của các process Shortest Remain Time (SRT):

Trong thuật toán điều phối tiến trình, bộ phận điều phối sử dụng độ ưu tiên của các tiến trình để phân bổ bộ xử lý Tiến trình được chọn để nhận bộ xử lý là tiến trình có độ ưu tiên cao nhất tại thời điểm đó Hệ điều hành thường áp dụng nguyên tắc kết hợp giữa gán độ ưu tiên tĩnh và động Khi khởi tạo, tiến trình sẽ được gán độ ưu tiên tĩnh, nhưng sau đó có thể thay đổi dựa trên môi trường hoạt động và công tác điều phối của bộ phận điều phối.

Khi hệ thống phát sinh một tiến trình mới, bộ phận điều phối sẽ so sánh độ ưu tiên của tiến trình đó với tiến trình hiện tại đang sử dụng bộ xử lý Nếu tiến trình mới có độ ưu tiên thấp hơn, nó sẽ được chèn vào danh sách sẵn sàng tại vị trí thích hợp Ngược lại, nếu tiến trình mới có độ ưu tiên cao hơn, bộ điều phối sẽ thu hồi bộ xử lý từ tiến trình hiện tại để cấp cho tiến trình mới trong trường hợp điều phối không độc quyền, hoặc chèn tiến trình mới vào danh sách sẵn sàng nếu là điều phối độc quyền.

Chiến lược này yêu cầu sử dụng danh sách sẵn sàng (ready list), trong đó các tiến trình được sắp xếp theo thứ tự giảm dần của độ ưu tiên Điều này có nghĩa là tiến trình được chọn để cấp phát bộ xử lý sẽ là tiến trình đứng đầu trong danh sách sẵn sàng.

Hệ điều hành cần phân bổ bộ xử lý cho ba tiến trình P1, P2 và P3, với độ ưu tiên và thời gian yêu cầu cho mỗi tiến trình được trình bày trong bảng dưới đây.

Tiến trình Độ ưu tiên Thời gian xử lý

Thì thứ tự cấp processor cho các tiến trình lần lượt là:

Chiến lược quản lý tiến trình có thể gây ra tình trạng các tiến trình ưu tiên thấp bị chờ đợi vô hạn Để giải quyết vấn đề này, hệ điều hành thường giảm độ ưu tiên của các tiến trình có độ ưu tiên cao sau mỗi lần chúng được cấp quyền sử dụng bộ xử lý.

Trong thuật toán này, ready list được thiết kế theo dạng danh sách nối vòng Tiến

Bộ điều phối chọn tiến trình thứ 35 để cấp processor, và tiến trình này đứng đầu trong danh sách sẵn sàng (ready list) Sau một khoảng thời gian nhất định, bộ điều phối thu hồi processor từ tiến trình này và chuyển cho tiến trình kế tiếp, giờ đã trở thành tiến trình đầu tiên trong danh sách Tiến trình vừa bị thu hồi processor sẽ được đưa vào cuối danh sách sẵn sàng Điều này cho thấy chiến lược điều phối được áp dụng là không độc quyền.

Khoảng khoản thời gian mà mỗi tiến trình được sở hữu processor để hoạt động là bằng nhau, và thường được gọi là Quantum

Khi hệ điều hành cần phân bổ bộ xử lý cho ba tiến trình P1, P2, P3, thời điểm vào danh sách sẵn sàng và thời gian cần thiết cho mỗi tiến trình được mô tả trong bảng dưới đây Với quantum là 4, việc quản lý tài nguyên bộ xử lý trở nên hiệu quả hơn, giúp tối ưu hóa thời gian xử lý cho từng tiến trình.

Tiến trình Thời điểm vào Thời gian xử lý

Thì thứ tự cấp processor cho các tiến trình lần lượt là:

Vậy thời gian chờ đợi trung bình sẽ là: (0 + 6 + 3 + 5)/3 = 4.46

Như vậy RR có thời gian chờ đợi trung bình nhỏ hơn so với

Trong chiến lược thiết kế hệ thống, việc lựa chọn kích thước quantum là rất quan trọng Nếu quantum quá nhỏ, hệ thống sẽ mất nhiều thời gian để cập nhật danh sách sẵn sàng và chuyển trạng thái tiến trình, điều này vi phạm mục tiêu tối đa hóa thời gian xử lý của bộ xử lý Ngược lại, nếu quantum quá lớn, thời gian chờ đợi trung bình và thời gian phản hồi sẽ tăng, làm giảm tính tương tác của hệ thống.

QUẢN LÝ TIẾN TRÌNH VỚI TASK MANAGER (WINDOWS 11)

Ngày đăng: 14/02/2025, 15:50

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN