Mục lục bài họcĐang ở d06-b2
← IB Computer Science
0/32 bài đã học xong
Chương 6 · Resource Management (HL) · Bài 2/4 của chương · bài 22/32 của IB Computer Science

Memory Management, Virtual Memory and Bottlenecks

Quản lý bộ nhớ, bộ nhớ ảo và nút thắt cổ chai
← Mục lục bài học
Lý thuyết · English

Virtual memory and paging. Programs are written as if a large continuous memory space were available, but physical memory is smaller. The operating system divides the virtual space into fixed-size pages, keeps only the pages currently in use in physical memory, and holds the rest on disk. When a program accesses a page that is not resident, a page fault occurs: the operating system loads that page from disk and, to make room, writes another page out. This allows a program larger than physical memory to run, and allows more programs to be resident at once than would otherwise fit.

Thrashing. Adding more concurrent programs raises throughput at first, because the processor can work for one program while another waits for the disk. But each additional program takes physical memory away from the others, so each holds fewer pages. Beyond a threshold, no program holds enough pages to do useful work: a page loaded is immediately evicted to make room for the next, then needed again straight away. The system enters thrashing, in which almost all time is spent moving pages and almost none doing work. The diagnostic signature is important: the processor appears busy while very little is completed, and disk activity is extremely high. The correct cure is more memory or fewer concurrent programs; a faster processor changes nothing, because the bottleneck is the disk.

Polling and interrupts. A processor can learn that a device needs attention in two ways. Polling means repeatedly checking each device: simple and predictable, but it wastes processor time when nothing has happened and it responds late if the interval is long. An interrupt means the device signals the processor, which suspends what it is doing, saves its state, runs a handler and resumes: no time is wasted checking, and response is immediate, but the mechanism is more complex and interrupts must be prioritised. Almost all modern input and output uses interrupts.

Buffering and caching. A buffer is memory that holds data between a fast producer and a slow consumer, so that neither has to wait for the other continuously. Disk caching keeps recently used disk blocks in memory, exploiting the same locality of reference that makes processor cache work.

Dependencies and bottlenecks. Resources are interdependent, so the resource that limits performance — the bottleneck — determines what the whole system can achieve. Increasing capacity anywhere except at the bottleneck produces no improvement at all. Diagnosing correctly therefore means identifying which resource is saturated, not upgrading whichever component is easiest to replace.

Giải thích tiếng Việt

Bộ nhớ ảo và phân trang. Chương trình được viết như thể có sẵn một không gian nhớ liên tục và rất lớn, nhưng bộ nhớ vật lý thì nhỏ hơn. Hệ điều hành chia không gian ảo thành các trang có kích thước bằng nhau, chỉ giữ trong bộ nhớ vật lý những trang đang được dùng, và để các trang còn lại trên ổ đĩa. Khi chương trình truy cập một trang không nằm trong bộ nhớ, xảy ra lỗi trang: hệ điều hành nạp trang đó từ ổ đĩa vào, và để có chỗ thì ghi một trang khác ra. Cơ chế này cho phép chạy một chương trình lớn hơn bộ nhớ vật lý, và cho phép nhiều chương trình cùng nằm trong bộ nhớ hơn mức lẽ ra chứa được.

Tráo trang liên tục. Tăng số chương trình chạy đồng thời ban đầu làm thông lượng tăng, vì bộ xử lý có thể làm việc cho chương trình này trong lúc chương trình kia chờ ổ đĩa. Nhưng mỗi chương trình thêm vào lại lấy đi một phần bộ nhớ vật lý của các chương trình khác, nên mỗi chương trình giữ được ít trang hơn. Qua một ngưỡng, không chương trình nào còn đủ trang để làm được việc có ích: trang vừa nạp vào lập tức bị đẩy ra để lấy chỗ cho trang kế tiếp, rồi ngay sau đó lại cần dùng lại. Hệ thống rơi vào tình trạng tráo trang liên tục, trong đó gần như toàn bộ thời gian dành cho việc di chuyển trang và gần như không có thời gian làm việc thực. Dấu hiệu chẩn đoán rất quan trọng: bộ xử lý trông có vẻ bận trong khi rất ít việc được hoàn thành, và hoạt động ổ đĩa cực kỳ cao. Cách chữa đúng là thêm bộ nhớ hoặc giảm số chương trình chạy cùng lúc; thay bộ xử lý nhanh hơn không thay đổi gì, vì nút thắt nằm ở ổ đĩa.

Thăm dò và ngắt. Bộ xử lý biết được một thiết bị cần xử lý theo hai cách. Thăm dò là việc liên tục kiểm tra từng thiết bị: đơn giản và có hành vi dễ dự đoán, nhưng lãng phí thời gian bộ xử lý khi không có gì xảy ra, và phản ứng chậm nếu khoảng kiểm tra dài. Ngắt là việc thiết bị phát tín hiệu cho bộ xử lý, và bộ xử lý tạm dừng việc đang làm, lưu trạng thái, chạy chương trình xử lý ngắt rồi tiếp tục: không lãng phí thời gian kiểm tra và phản ứng tức thời, nhưng cơ chế phức tạp hơn và các ngắt phải được xếp thứ tự ưu tiên. Gần như toàn bộ hoạt động nhập xuất hiện đại đều dùng ngắt.

Bộ đệm và bộ nhớ đệm. Bộ đệm là vùng nhớ giữ dữ liệu giữa một bên sản xuất nhanh và một bên tiêu thụ chậm, để không bên nào phải chờ bên kia liên tục. Bộ nhớ đệm đĩa giữ lại trong bộ nhớ những khối đĩa vừa được dùng, khai thác đúng tính cục bộ của truy cập vốn làm bộ nhớ đệm của bộ xử lý hoạt động được.

Phụ thuộc và nút thắt cổ chai. Các tài nguyên phụ thuộc lẫn nhau, nên tài nguyên nào đang giới hạn hiệu năng — tức nút thắt cổ chai — sẽ quyết định năng lực của toàn hệ thống. Tăng năng lực ở bất kỳ chỗ nào KHÔNG phải nút thắt thì không cải thiện được gì cả. Vì vậy chẩn đoán đúng nghĩa là xác định tài nguyên nào đang bão hoà, chứ không phải nâng cấp linh kiện nào dễ thay nhất.

BỘ NHỚ ẢO, PHÂN TRANG VÀ NGƯỠNG SỤP HIỆU NĂNG KHÔNG GIAN ẢO chương trình thấy trang 0 trang 1 trang 2 trang 3 trang 4 RAM THẬT khung 0 ← trang 1 khung 1 ← trang 3 chỉ chứa được 2 trang Ổ ĐĨA các trang 0, 2, 4 nằm chờ ở đây chậm hơn RAM hàng nghìn lần tráo trang ra và vào số chương trình chạy cùng lúc hiệu suất đỉnh SỤP SAU ĐỈNH LÀ HIỆN TƯỢNG SỤP HIỆU NĂNG DO TRÁO TRANG LIÊN TỤC Mỗi trang vừa nạp vào lại bị đẩy ra để lấy chỗ cho trang kế tiếp, rồi ngay sau đó lại cần dùng lại Bộ xử lý gần như chỉ ngồi chờ ổ đĩa — nó BẬN nhưng không hoàn thành công việc nào CÁCH CHỮA ĐÚNG: thêm RAM, hoặc giảm số chương trình chạy cùng lúc Thay bộ xử lý nhanh hơn KHÔNG giúp gì, vì nút thắt nằm ở ổ đĩa chứ không ở bộ xử lý
Hình này giải thích một hiện tượng mà ai dùng máy tính cũng gặp: máy đột nhiên chậm tới mức gần như đứng, và thay bộ xử lý nhanh hơn không hề giúp. Cơ chế bộ nhớ ảo. Chương trình được viết như thể có một không gian nhớ liên tục và rất lớn, nhưng bộ nhớ thật nhỏ hơn nhiều. Hệ điều hành chia không gian ảo thành các trang có kích thước bằng nhau, giữ trong bộ nhớ thật chỉ những trang đang được dùng, và để các trang còn lại trên ổ đĩa. Khi chương trình truy cập một trang không có trong bộ nhớ, xảy ra một lỗi trang: hệ điều hành phải nạp trang đó từ ổ đĩa vào, và để có chỗ thì phải đẩy một trang khác ra. Vì sao đồ thị đi lên rồi sụp. Ở phía trái, tăng số chương trình chạy cùng lúc làm hiệu suất tăng, vì trong lúc một chương trình chờ ổ đĩa thì bộ xử lý làm việc cho chương trình khác. Nhưng mỗi chương trình thêm vào lại chiếm mất một phần bộ nhớ thật, nên số trang mà mỗi chương trình được giữ giảm dần. Qua một ngưỡng, mỗi chương trình không còn đủ trang để chạy được một đoạn công việc có ý nghĩa: trang vừa nạp vào lại bị đẩy ra để lấy chỗ cho trang kế tiếp, rồi ngay sau đó lại cần dùng lại. Hệ thống rơi vào tình trạng tráo trang liên tục. Điểm cần nắm để trả lời câu hỏi chẩn đoán. Khi hệ thống rơi vào trạng thái này, bộ xử lý ĐANG BẬN nhưng gần như chỉ bận chờ ổ đĩa; công việc thực sự hoàn thành gần bằng không. Vì nút thắt nằm ở ổ đĩa và ở dung lượng bộ nhớ, cách chữa đúng là thêm bộ nhớ hoặc giảm số chương trình chạy cùng lúc. Thay bộ xử lý nhanh hơn không giúp gì cả — nó chỉ làm bộ xử lý chờ ổ đĩa nhanh hơn. Đây là ví dụ rõ nhất của nguyên tắc chung trong quản lý tài nguyên: tăng năng lực ở chỗ không phải nút thắt thì không cải thiện được gì.
Ví dụ — Chẩn đoán một máy chậm mà không đoán mò

Một máy chủ trở nên rất chậm vào giờ cao điểm. Số liệu quan trắc cho thấy mức sử dụng bộ xử lý là 96%, hoạt động đọc ghi ổ đĩa cực cao, số lỗi trang mỗi giây rất lớn, và mức sử dụng bộ nhớ là 99%. Nhân viên kỹ thuật đề xuất thay bộ xử lý mạnh hơn. Hãy chẩn đoán và phản biện đề xuất đó.

Giải.

Bước 1 — nhận ra rằng con số 96% đang gây hiểu lầm. Mức sử dụng bộ xử lý cao thoạt nhìn có vẻ chỉ thẳng vào bộ xử lý. Nhưng chỉ số này chỉ đo bộ xử lý có đang bận hay không, chứ không đo nó đang bận làm gì. Trong tình trạng tráo trang liên tục, phần lớn thời gian bận là dành cho việc xử lý lỗi trang, quản lý bảng trang và chờ ổ đĩa — tức bận mà không hoàn thành công việc của người dùng.

Bước 2 — đọc ba chỉ số còn lại cùng nhau. Bộ nhớ 99% cộng số lỗi trang rất lớn cộng hoạt động ổ đĩa cực cao là bộ ba dấu hiệu đặc trưng của tráo trang liên tục. Không dấu hiệu nào trong ba cái này xuất hiện nếu vấn đề thực sự là thiếu năng lực xử lý: một máy thiếu bộ xử lý sẽ có mức sử dụng bộ xử lý cao NHƯNG hoạt động ổ đĩa thấp và số lỗi trang thấp.

Bước 3 — nêu cơ chế. Bộ nhớ vật lý không đủ cho tập các trang đang thực sự được dùng của tất cả các chương trình đang chạy. Mỗi trang vừa được nạp vào lại bị đẩy ra ngay để lấy chỗ cho trang kế tiếp, rồi ngay sau đó lại được cần dùng, nên hệ thống dành gần như toàn bộ thời gian cho việc chuyển trang giữa bộ nhớ và ổ đĩa. Vì ổ đĩa chậm hơn bộ nhớ hàng nghìn lần, mỗi lần chuyển như vậy tốn thời gian tương đương hàng triệu chu kỳ xử lý.

Bước 4 — phản biện đề xuất thay bộ xử lý. Nút thắt cổ chai nằm ở dung lượng bộ nhớ và ở tốc độ ổ đĩa, không nằm ở bộ xử lý. Tăng năng lực ở chỗ không phải nút thắt không cải thiện được gì: một bộ xử lý nhanh gấp đôi sẽ chỉ chờ ổ đĩa nhanh gấp đôi, và số công việc hoàn thành mỗi giây gần như không đổi. Khoản chi đó vì vậy là lãng phí, và tệ hơn là nó khiến vấn đề thật không được xử lý.

Bước 5 — ba biện pháp đúng, xếp theo hiệu quả trên mỗi đồng. Thứ nhất và rẻ nhất là thêm bộ nhớ: nó tác động thẳng vào nguyên nhân, cho phép giữ đủ trang của mỗi chương trình nên số lỗi trang giảm mạnh và hệ thống ra khỏi vùng sụp hiệu năng. Thứ hai là giảm số chương trình chạy đồng thời vào giờ cao điểm — dời các tác vụ theo lô sang ban đêm, giới hạn số tiến trình phục vụ đồng thời — vì hình dạng đồ thị hiệu năng cho thấy chạy ít chương trình hơn lại hoàn thành được nhiều việc hơn khi hệ thống đã ở bên phải đỉnh. Thứ ba là thay ổ đĩa cơ bằng ổ thể rắn: nó không xoá được nguyên nhân nhưng làm chi phí của mỗi lỗi trang giảm mạnh, nên đẩy lùi ngưỡng sụp.

Nguyên tắc rút ra để trả lời mọi câu hỏi chẩn đoán. Đừng đọc từng chỉ số riêng lẻ. Hãy hỏi tài nguyên nào đang bão hoà, và nhớ rằng mức sử dụng bộ xử lý cao có thể là triệu chứng của một nút thắt ở nơi khác chứ không phải nguyên nhân.

Ví dụ — Thăm dò hay ngắt: chọn theo tính chất của sự kiện

Chọn cơ chế thăm dò hoặc ngắt cho từng tình huống và giải thích: (a) bàn phím của một máy tính cá nhân; (b) một cảm biến nhiệt độ trong lò công nghiệp cần đọc đúng mỗi 100 mili giây; (c) nút dừng khẩn cấp trên một dây chuyền sản xuất.

Giải.

Tiêu chí chọn. Hai câu hỏi quyết định. Sự kiện xảy ra thường xuyên hay hiếm, và thời điểm xảy ra có dự đoán được không. Sự kiện hiếm và không dự đoán được thì dùng ngắt; sự kiện đều đặn và biết trước thời điểm thì thăm dò lại hợp lý.

(a) Bàn phím — dùng ngắt. Việc nhấn phím vừa hiếm so với tốc độ bộ xử lý — khoảng cách giữa hai lần nhấn tương đương hàng trăm triệu chu kỳ — vừa hoàn toàn không dự đoán được. Nếu dùng thăm dò, bộ xử lý phải kiểm tra bàn phím hàng nghìn lần mỗi giây và gần như lần nào cũng thấy không có gì, tức lãng phí gần như toàn bộ số lần kiểm tra. Với ngắt, bộ xử lý không tốn một chu kỳ nào cho bàn phím cho tới đúng lúc có phím được nhấn, và phản ứng là tức thời nên người dùng không cảm nhận được độ trễ.

(b) Cảm biến nhiệt độ đọc mỗi 100 mili giây — dùng thăm dò. Đây là trường hợp mà thăm dò thực sự đúng, và nó hay bị chọn sai. Sự kiện ở đây đều đặn và biết trước thời điểm: hệ thống chủ động quyết định khi nào cần một giá trị nhiệt độ, chứ không phải cảm biến quyết định. Dùng ngắt trong tình huống này không mang lại lợi ích gì mà lại thêm phức tạp, và nếu cảm biến phát ngắt nhanh hơn nhu cầu thì còn gây tải không cần thiết. Thăm dò theo lịch cũng cho hành vi dễ dự đoán về mặt thời gian, một yêu cầu quan trọng trong hệ thống điều khiển thời gian thực.

(c) Nút dừng khẩn cấp — dùng ngắt, và phải là ngắt ưu tiên cao nhất. Sự kiện cực kỳ hiếm, hoàn toàn không dự đoán được, và có yêu cầu về độ trễ nghiêm ngặt nhất trong ba tình huống. Nếu dùng thăm dò với chu kỳ 100 mili giây, trong trường hợp xấu nhất máy phản ứng chậm 100 mili giây — với một dây chuyền đang chuyển động thì đó có thể là khoảng cách giữa an toàn và tai nạn. Ngắt cho phản ứng gần như tức thời. Chi tiết đáng nêu thêm: ngắt này phải được gán mức ưu tiên cao nhất để nó cắt được cả những chương trình xử lý ngắt khác đang chạy, và thông thường nó còn được bổ sung một mạch dừng bằng phần cứng hoạt động độc lập với phần mềm, vì không nên đặt an toàn con người vào tay một chương trình có thể treo.

Câu tổng quát để viết trong bài. Ngắt hiệu quả khi sự kiện hiếm và không dự đoán được; thăm dò hợp lý khi sự kiện đều đặn và do chính hệ thống chủ động lấy, hoặc khi cần hành vi thời gian dễ dự đoán.

Bẫy hay mất điểm — Bẫy 1 — đọc mức sử dụng bộ xử lý cao thành "thiếu năng lực xử lý". Trong tình trạng tráo trang liên tục, bộ xử lý bận nhưng bận chờ ổ đĩa. Phải đọc bộ ba dấu hiệu cùng nhau: bộ nhớ gần đầy, số lỗi trang cao, hoạt động ổ đĩa cao.
Bẫy 2 — nâng cấp linh kiện không phải nút thắt. Tăng năng lực ở chỗ không phải nút thắt không cải thiện được gì. Luôn xác định tài nguyên đang bão hoà trước khi đề xuất giải pháp.
Bẫy 3 — kết luận ngắt luôn tốt hơn thăm dò. Thăm dò hợp lý khi sự kiện đều đặn và do hệ thống chủ động lấy, hoặc khi cần hành vi thời gian dễ dự đoán trong hệ thống điều khiển.
Phải nhớ — Chốt bài 2. Bốn thứ mang vào phòng thi. Một, cơ chế bộ nhớ ảo gồm trang, lỗi trang và việc tráo trang, cùng lợi ích là chạy được chương trình lớn hơn bộ nhớ vật lý. Hai, bộ ba dấu hiệu chẩn đoán tráo trang liên tục và câu chốt rằng bộ xử lý bận mà không hoàn thành việc gì. Ba, nguyên tắc nút thắt cổ chai: tăng năng lực ở chỗ không phải nút thắt thì vô ích, nên phải xác định tài nguyên bão hoà trước. Bốn, hai câu hỏi chọn giữa thăm dò và ngắt: sự kiện hiếm hay đều đặn, và có dự đoán được thời điểm hay không.

Đọc xong rồi — làm thử ngay

Bài tập của chương Resource Management (HL) gồm 14 câu trắc nghiệm và 5 đề tự luận. Đáp án hiện ngay khi chọn, miễn phí.

Làm bài tập chương →