Quản lý tài nguyên hệ điều hành và tiến trình
Đã giới thiệu| English | Ý nghĩa |
|---|---|
| process/ˈprəʊses/ | tiến trình |
| scheduler/ˈʃedjʊlə/ | trình điều phối |
| multi-tasking/ˈmʌlti ˈtæskɪŋ/ | đa tác vụ |
| spooling/ˈspuːlɪŋ/ | giả lập trực tiếp |
| caching/ˈkæʃɪŋ/ | bộ đệm |
| round robin/raʊnd ˈrɒbɪn/ | round robin: round robin |
| context switch/ˈkɒntekst swɪtʃ/ | context switch: chuyển đổi ngữ cảnh |
| process control block/ˈprəʊses kənˈtrəʊl blɒk/ | process control block: khối điều khiển tiến trình |
Tại sao con chuột vẫn di chuyển khi mọi thứ đã đóng băng
- Một chương trình bị khóa. Cửa sổ không vẽ lại, vòng quay dừng, không gì phản hồi. Nhưng con trỏ chuột vẫn trượt trên màn hình y hệt như trước.
- Đó là hệ điều hành đang nói với bạn điều gì đó: máy tính không bị kẹt, mà chỉ có một quá trình bị kẹt. Bộ phân phối tác vụ vẫn đang cấp các mảnh thời gian cho bộ xử lý, và chương trình bị đóng băng chỉ đơn giản là không làm việc gì hữu ích với phần thời gian của mình.
- Mọi tài nguyên trong máy tính đều được chia sẻ theo cách này: bộ xử lý theo thời gian, bộ nhớ theo không gian, máy in theo hàng đợi.
- Bài học này giải thích cách hệ điều hành khai thác tối đa các nguồn lực đó, cũng như cách nó quản lý một tiến trình từ lúc tạo ra đến khi kết thúc.
Tối ưu hóa việc sử dụng tài nguyên
- Đa tác vụ: bộ xử lý chuyển đổi nhanh chóng giữa các tiến trình, khiến nhiều tiến trình dường như đang chạy cùng lúc mặc dù chỉ có một tiến trình thực sự được thực thi tại bất kỳ thời điểm nào.
- Phân trang (Paging): dữ liệu được di chuyển qua lại giữa RAM và ổ đĩa cứng, cho phép mở nhiều chương trình hơn dung lượng bộ nhớ vật lý cho phép.
- Dành sẵn (Spooling): đầu ra của thiết bị chậm được xếp hàng chờ trên ổ đĩa, giúp bộ xử lý không phải đợi máy in. Bộ nhớ đệm (Caching) giữ dữ liệu vừa dùng gần đây trong bộ nhớ tốc độ cao để không cần lấy lại.
- Hệ điều hành còn ẩn giấu tất cả những quy trình phức tạp này sau một giao diện người dùng, có thể là dòng lệnh hoặc giao diện đồ họa (GUI).
Đa tác vụ giúp nhiều chương trình có vẻ như đang chạy cùng lúc bằng cách:
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Hệ điều hành chuyển nhanh CPU đơn giữa các tiến trình để chúng đều có vẻ như đang tiến triển cùng nhau.
Ví dụ minh họa: Tại sao Dành sẵn (Spooling) lại hữu ích
- Giải thích cách Dành sẵn (Spooling) cải thiện việc sử dụng tài nguyên của máy tính. [3]
- Máy in chậm hơn bộ xử lý hàng nghìn lần, nên nếu chương trình gửi trực tiếp dữ liệu ra máy in thì sẽ phải chờ đợi, khiến bộ xử lý bị nhàn rỗi.
- Với Dành sẵn (Spooling), dữ liệu đầu ra được ghi nhanh vào hàng chờ trên ổ đĩa, và chương trình tiếp tục thực thi ngay lập tức.
- Một tiến trình riêng biệt sau đó sẽ cung cấp dữ liệu cho máy in với tốc độ riêng của nó, cho phép nhiều công việc xếp hàng trong khi bộ xử lý tiếp tục làm các công việc khác. Hãy nêu tên thiết bị chậm, hàng chờ, và những gì bộ xử lý làm thay thế.
Spooling giúp hệ thống vì:
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Spooling đệm các công việc in vào đĩa để CPU nhanh không bị máy in chậm làm gián đoạn.
Kỹ thuật nào giúp hệ điều hành tận dụng tối đa tài nguyên? Chọn tất cả các đáp án đúng.
Difficulty 2/5 · 140 coins + a small bonus on first completion today
chia sẻ thời gian, xếp hàng cho thiết bị chậm và giữ dữ liệu nóng gần đó. Giết các tiến trình đang chờ sẽ làm mất dữ liệu người dùng, không cải thiện hiệu suất sử dụng.
Các tiến trình và Bộ lên lịch
- Một tiến trình là một chương trình đang được thực thi: bao gồm mã nguồn, trạng thái hiện tại, vùng nhớ và các tệp đang mở của nó. Một chương trình nằm trên ổ đĩa chưa phải là tiến trình; chỉ khi nó đang chạy mới được gọi là tiến trình.
- Bộ lên lịch (Scheduler) quyết định tiến trình nào ở trạng thái Sẵn sàng sẽ được thực thi tiếp theo và trong khoảng thời gian bao lâu. Mục tiêu của nó là duy trì bộ xử lý luôn bận rộn, phản hồi nhanh với người dùng tương tác, và đảm bảo tính công bằng.
- Vòng tròn (Round robin) trao cho mỗi tiến trình Sẵn sàng một thời lượng cố định (time slice), sau đó đưa nó về cuối hàng chờ: đơn giản, công bằng và phản hồi tốt. Các chính sách khác bao gồm trước đến trước phục vụ, công việc ngắn nhất trước tiên và thời gian còn lại ngắn nhất.

Mọi người đều có lượt, và không ai chiếm hữu bộ xử lý mãi mãi
Lập lịch Round-robin cấp mỗi tiến trình sẵn sàng một khoảng thời gian cố định, sau đó đưa nó về cuối hàng đợi — giúp công bằng và phản hồi tốt.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Các khoảng thời gian bằng nhau lần lượt ngăn một tiến trình chiếm hữu CPU, giúp chương trình tương tác vẫn phản hồi nhanh.
Tiến trình là gì?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Tệp trên đĩa là một chương trình; khi được tải lên và chạy với trạng thái riêng, nó trở thành một tiến trình.
Các trạng thái của tiến trình
- Mới (New): đang được tạo ra. Sẵn sàng (Ready): có thể chạy, chỉ đang chờ bộ xử lý. Đang chạy (Running): đang được thực thi hiện tại. Bị chặn (Blocked): đang chờ một sự kiện khác, thường là đầu vào hoặc đầu ra. Kết thúc (Terminated): đã hoàn thành.
- Các sự chuyển đổi này là nội dung mà đề thi yêu cầu. Chuyển từ Đang chạy sang Sẵn sàng khi thời lượng hết hạn. Chuyển từ Đang chạy sang Bị chặn khi tiến trình yêu cầu I/O. Từ Bị chặn sang Sẵn sàng khi I/O hoàn tất. Từ Sẵn sàng sang Đang chạy khi Bộ lên lịch chọn nó.
- Lưu ý sự bất đối xứng: một tiến trình Bị chặn không bao giờ quay trở lại trạng thái Đang chạy ngay lập tức. Nó sẽ quay về hàng chờ Sẵn sàng và chờ đến lượt mình.

Năm trạng thái, và lý do cho từng mũi tên
Ghép nối mỗi trạng thái tiến trình với ý nghĩa của nó.
Difficulty 2/5 · 140 coins + a small bonus on first completion today
Một tiến trình tuần hoàn qua: Sẵn sàng → Đang chạy → (Chờ) → Sẵn sàng, cho đến khi kết thúc.
Ví dụ minh họa: Theo dõi một tiến trình
- Một tiến trình đang chạy thì yêu cầu đọc một tệp. Hãy mô tả những gì xảy ra với tiến trình đó.
- Nó chuyển từ Đang chạy sang Bị chặn, vì nó không thể tiếp tục cho đến khi dữ liệu đến, và Bộ lên lịch ngay lập tức trao bộ xử lý cho một tiến trình Sẵn sàng khác thay vì chờ đợi.
- Khi ổ đĩa hoàn tất, tiến trình chuyển từ Bị chặn sang Sẵn sàng. Nó không tiếp tục ngay lập tức; nó tham gia vào hàng chờ Sẵn sàng.
- Sau đó, Bộ lên lịch chọn nó, và nó chuyển từ Sẵn sàng sang Đang chạy, tiếp tục thực thi đúng nơi nó đã dừng lại.
Vòng đời của một tiến trình
Nhìn vào vòng lặp mà tiến trình di chuyển. Nó chỉ chạy khi trình lập lịch chọn; cần I/O thì đưa sang trạng thái chờ, và hết thời gian xử lý thì quay về trạng thái sẵn sàng — liên tục như vậy cho đến khi hoàn thành.
Một tiến trình đang chạy yêu cầu đọc một tệp. Xếp thứ tự những gì xảy ra với nó.
Difficulty 3/5 · 200 coins + a small bonus on first completion today
Một tiến trình đang chờ không bao giờ quay thẳng về Đang chạy: nó tham gia lại hàng đợi Sẵn sàng và chờ đến lượt.
Chuyển đổi ngữ cảnh (Context switching)
- Để thay đổi tiến trình đang chạy, hệ điều hành lưu trạng thái hiện tại, các thanh đăng ký, bộ đếm chương trình và trạng thái của tiến trình hiện tại vào khối điều khiển tiến trình (process control block), sau đó tải trạng thái của tiến trình tiếp theo từ khối điều khiển của chính tiến trình đó.
- Đây là một chuyển đổi ngữ cảnh. Nó có chi phí thực tế: trong quá trình này, bộ xử lý chỉ làm việc quản lý hệ thống chứ không thực hiện công việc của người dùng.
- Do đó, thời lượng là một sự đánh đổi. Nếu quá dài, các chương trình tương tác sẽ cảm thấy chậm chạp; nếu quá ngắn, máy tính sẽ tốn thời gian cho việc chuyển đổi thay vì tính toán.
Chuyển đổi ngữ cảnh bao gồm:
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Hệ điều hành lưu các thanh ghi/PC của tiến trình đang chạy vào PCB của nó và tải PC của tiến trình tiếp theo — một chi phí nhỏ ở mỗi lần chuyển đổi.
Trong khi chuyển đổi ngữ cảnh, các thanh ghi và bộ đếm chương trình của một tiến trình được lưu vào ____ của nó.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Trạng thái của tiến trình tiếp theo sau đó được tải từ bảng điều khiển của chính nó. Việc lưu và tải là công việc thực tế, đây chính là lý do tại sao việc chuyển đổi tốn thời gian.
Ngắt (Interrupts) và Kernel
- Kernel, lõi của hệ điều hành, là thành phần thực hiện việc này: nó phản ứng với các ngắt (interrupts) từ thiết bị và từ chương trình, và ngắt chính là cơ chế trả quyền kiểm soát về cho hệ điều hành từ một tiến trình đang chạy.
- Một ngắt bộ đếm thời gian ở cuối thời lượng là yếu tố khiến lên lịch chủ động (pre-emptive scheduling) có thể tồn tại; nếu không có nó, một chương trình không bao giờ tự nguyện nhường bộ xử lý sẽ chiếm hữu nó mãi mãi.
- Đó chính là lời giải cho câu đố mở đầu: chương trình bị đóng băng không chiếm hữu bộ xử lý lâu hơn thời lượng của nó, nên con chuột vẫn tiếp tục di chuyển.
Điểm số dễ mất
- Một tiến trình là một chương trình đang được thực thi, không phải file trên ổ đĩa.
- Từ Bị chặn sang Sẵn sàng, không bao giờ từ Bị chặn thẳng sang Đang chạy. Bộ lên lịch sẽ chọn khi nào tiến trình chạy tiếp.
- Chuyển đổi ngữ cảnh lưu và khôi phục trạng thái thông qua khối điều khiển tiến trình, và nó tốn thời gian.
- Đa tác vụ nghĩa là các tiến trình luân phiên nhau rất nhanh đến mức chúng dường như diễn ra đồng thời, chứ không phải thực sự được thực thi song song cùng lúc trên một nhân CPU.
Bạn đã nắm vững
- Hệ điều hành tối đa hóa việc sử dụng tài nguyên thông qua đa tác vụ, phân trang, dành sẵn vào hàng chờ trên ổ đĩa và bộ nhớ đệm.
- Một tiến trình là chương trình đang thực thi; Bộ lên lịch chọn tiến trình Sẵn sàng tiếp theo, với vòng tròn trao cho mỗi tiến trình một thời lượng cố định.
- Các trạng thái mới, sẵn sàng, đang chạy, bị chặn, kết thúc: thời lượng hết hạn gửi Đang chạy về Sẵn sàng, yêu cầu I/O gửi nó sang Bị chặn, và hoàn tất I/O gửi nó trở lại Sẵn sàng.
- Một chuyển đổi ngữ cảnh lưu và khôi phục trạng thái qua khối điều khiển tiến trình và tốn thời gian, đó là lý do tại sao độ dài thời lượng là một sự đánh đổi.