You are on page 1of 17

CHƯƠNG 5B: ĐỊNH THỜI CPU NÂNG CAO

- Khái niệm lập lịch đa nhân.


• Gồm: CPU đa nhân, Lõi đa luồng, Hệ thống NUMA, Đa xử lý không đồng nhất
• Đa xử lý đối xứng (SMP- Symmetric multiprocessing) là nơi mỗi bộ xử lý tự lên lịch.
 Tất cả các chủ đề có thể trong một hàng đợi sẵn sàng chung (a)
 Mỗi bộ xử lý có thể có hàng đợi riêng của các luồng (b)
• Xu hướng gần đây để đặt nhiều lõi xử lý trên cùng một chip vật lý
• Nhanh hơn và tiêu thụ ít năng lượng hơn
• Nhiều luồng trên mỗi lõi cũng đang phát triển
 Tận dụng lợi thế của bộ nhớ để đạt được tiến bộ khác luồng trong khi truy xuất bộ nhớ xảy ra
• Đa luồng chip (CMT-Chip-multithreading) chỉ định mỗi lõi nhiều luồng phần cứng. (Intel gọi điều này là siêu phân luồng.)
• Trên hệ thống lõi tứ với 2 luồng phần cứng trên mỗi lõi, hệ điều hành sẽ thấy 8 bộ xử lý logic.
• Hai cấp độ lập kế hoạch:
 Hệ điều hành quyết định luồng phần mềm nào chạy trên CPU logic  Làm thế nào mỗi lõi quyết định luồng phần cứng
nào chạy trên lõi vật lý.
- Cân bằng tải trên các hệ thống đa nhân sẽ cân bằng tải giữa các nhân CPU, mặc dù việc di chuyển các tiểu trình giữa các nhân để
cân bằng tải có thể làm cho nội dung bộ nhớ cache bị vô hiệu và vì vậy có thể làm tăng thời gian truy cập bộ nhớ.
• Di chuyển đẩy - kiểm tra tác vụ định kỳ tải trên mỗi bộ xử lý và nếu tìm thấy sẽ đẩy tác vụ từ CPU quá tải sang các CPU khác
• Di chuyển kéo - bộ xử lý nhàn rỗi kéo tác vụ chờ từ bộ xử lý bận
- Lập lịch thời gian thực mềm (Soft real-time) Các nhiệm vụ thời gian thực quan trọng có mức độ ưu tiên cao nhất, nhưng không
đảm bảo khi nào các nhiệm vụ sẽ được lên lịch / Lập lịch thời gian thực cứng (Hard real-time) Tác vụ phải được phục vụ bởi thời
hạn của nó
• Hai loại độ trễ ảnh hưởng đến hiệu suất
 Độ trễ ngắt(Interrupt latency) - thời gian từ khi đến ngắt đến khi bắt đầu thói quen mà dịch vụ bị gián đoạn
 Độ trễ điều chỉnh (Dispatch latency) - lịch biểu mẫu thời gian để loại bỏ quá trình hiện tại khỏi CPU và chuyển sang
chế độ khác
- Lập lịch “Thời gian thực tỷ lệ đơn điệu” (Rate-monotonic real-time)
• Một ưu tiên được chỉ định dựa trên nghịch đảo của thời kỳ của nó
 Thời gian ngắn hơn = ưu tiên cao hơn;
 Thời gian dài hơn = ưu tiên thấp hơn
- Lập lịch “Tác vụ tới hạn” (EDF / Earliest-deadline-first)
• Các ưu tiên được chỉ định theo thời hạn:
 thời hạn càng sớm, mức độ ưu tiên càng cao;
 thời hạn càng muộn, mức độ ưu tiên càng thấp
- Lập lịch theo tỷ lệ phân bổ (Proportional share)
Một ứng dụng có thể nhận được N cổ phiếu thời gian, do đó đảm bảo rằng ứng dụng sẽ có N ∕ T trên tổng thời gian xử lý. Ví dụ: giả
sử tổng số T = 100 cổ phiếu được chia cho ba quy trình, A, B và C. A được chỉ định
50 cổ phiếu, B được chỉ định 15 cổ phiếu và C được chỉ định 20 cổ phiếu. Sơ đồ này đảm bảo rằng A sẽ có 50 phần trăm tổng thời
gian của bộ xử lý, B sẽ có 15 phần trăm và C sẽ có 20 phần trăm - Linux sử dụng bộ lập lịch “hoàn toàn công bằng”, cụ thể nó như
thế nào?
• Chỉ định tỷ lệ thời gian xử lý CPU cho từng tác vụ. Tỷ lệ này dựa trên giá trị thời gian chạy ảo (vruntime) được liên kết với từng
tác vụ
• Thay vì sử dụng cấu trúc dữ liệu hàng đợi tiêu chuẩn, mỗi tác vụ có thể chạy được đặt trong cây đen đỏ, một cây tìm kiếm nhị
phân cân bằng có khóa dựa trên giá trị của vruntime.
• Khi một tác vụ trở nên chạy được, nó sẽ được thêm vào cây. Nếu một tác vụ trên cây không thể chạy được (ví dụ: nếu nó bị
chặn trong khi chờ I / O), nó sẽ bị xóa.
• Các tác vụ đã được đưa ra ít thời gian xử lý hơn nằm ở phía bên trái.
• Các tác vụ được cho nhiều thời gian xử lý hơn nằm ở phía bên phải.
• Theo các thuộc tính của cây tìm kiếm nhị phân, nút ngoài cùng bên trái có giá trị khóa nhỏ nhất, vì lợi ích của bộ lập lịch CFS
có nghĩa là nó là nhiệm vụ có mức độ ưu tiên cao nhất. Vì lý do hiệu quả, bộ lập lịch Linux lưu trữ giá trị này trong biến rb
ngoài cùng bên trái và do đó, việc xác định tác vụ nào sẽ chạy tiếp theo chỉ yêu cầu truy xuất giá trị được lưu trong bộ nhớ
cache.
- Bộ lặp lịch Windows có những đặc trưng gì.
• Windows sử dụng ưu tiên dựa trên kế hoạch ưu tiên
• Chủ đề ưu tiên cao nhất chạy tiếp theo
• Dispatcher là lên lịch
• Chủ đề chạy cho đến khi (1) khối, (2) sử dụng lát cắt thời gian, (3) được ưu tiên bởi luồng ưu tiên cao hơn
• Chủ đề thời gian thực có thể ưu tiên phi thời gian thực
• Đề án ưu tiên 32 cấp
• Lớp biến là 1-15, lớp thời gian thực là 16-31
• Ưu tiên 0 là luồng quản lý bộ nhớ
• Hàng đợi cho mỗi ưu tiên
• Nếu không có luồng có thể chạy, hãy chạy luồng không tải
- Mô hình hóa và mô phỏng có thể được sử dụng để đánh giá một thuật toán lập lịch CPU.
• Mô hình xác định
 Loại đánh giá phân tích
 Có một khối lượng công việc được xác định trước cụ thể và xác định hiệu suất của từng thuật toán cho khối lượng
công việc đó
• Đối với mỗi thuật toán, tính thời gian chờ trung bình tối thiểu
• Đơn giản và nhanh chóng, nhưng yêu cầu số chính xác cho đầu vào, chỉ áp dụng cho những đầu vào đó

• Mô phỏng chính xác hơn


 Mô hình lập trình của hệ thống máy tính
 Đồng hồ là một biến
 Thu thập số liệu thống kê chỉ ra hiệu suất thuật toán
 Dữ liệu để mô phỏng ổ đĩa được thu thập thông qua o Trình tạo số ngẫu nhiên theo xác suất o Phân phối được xác
định theo toán học hoặc theo kinh nghiệm o Băng ghi âm ghi lại chuỗi sự kiện có thật trong hệ thống thực
CHƯƠNG 6: ĐỒNG BỘ HOÁ
- Cấu trúc của một chương trình gồm những phần code nào?
• Entry, critical, exit, remainder section
- Đoạn code nào là đối tượng cần đồng bộ? Tại sao? Bằng cách nào?
• Critical section
• Critical section trong đó quy trình có thể đang truy cập - và cập nhật - dữ liệu được chia sẻ với ít nhất một quy trình khác. Khi
một quy trình được thực thi trong phần quan trọng của nó, không có quy trình nào khác được phép thực hiện trong phần
quan trọng của nó.
• Thiết kế một giao thức mà các quy trình có thể sử dụng để đồng bộ hóa hoạt động của chúng để chia sẻ dữ liệu hợp tác.
- Lệnh đơn nguyên là gì? Biến số đơn nguyên là gì?
• Nó so sánh nội dung của một vị trí bộ nhớ với một giá trị nhất định và, chỉ khi chúng giống nhau, sửa đổi nội dung của vị trí bộ
nhớ đó thành một giá trị mới nhất định.
• Cung cấp các cập nhật nguyên đơn (không bị gián đoạn) trên các kiểu dữ liệu cơ bản như số nguyên và booleans.
- Rào cản (Barrier) là gì? Cách sử dụng?
• Một rào cản bộ nhớ là một hướng dẫn buộc bất kỳ thay đổi nào trong bộ nhớ được lan truyền (hiển thị) cho tất cả các bộ xử
lý khác.
• Khi một lệnh chặn bộ nhớ được thực hiện, hệ thống đảm bảo rằng tất cả các tải và lưu trữ được hoàn thành trước khi bất kỳ
hoạt động tải hoặc lưu trữ nào được thực hiện.
• Hàng rào bộ nhớ đảm bảo rằng các hoạt động của cửa hàng được hoàn thành trong bộ nhớ và hiển thị cho các bộ xử lý khác
trước khi các hoạt động tải hoặc lưu trữ trong tương lai được thực hiện.
- Mutex lock là gì? Cách sử dụng?
• Bảo vệ một phần quan trọng bằng cách đầu tiên aquire () một khóa sau đó release () khóa, Biến Boolean cho biết khóa có sẵn
hay không
• Các lệnh gọi aquire () và release () phải là atomic, thường được thực hiện thông qua các hướng dẫn nguyên tử phần cứng như
compare-and-swap.
• Nhưng giải pháp này đòi hỏi phải chờ đợi bận rộn, khóa này do đó được gọi là spinlock - Test_and_set() hoạt động ra sao?
• Các hướng dẫn phần cứng đặc biệt cho phép chúng tôi kiểm tra và sửa đổi nội dung của một từ hoặc hai trao đổi nội dung
của hai từ nguyên tử (không bị gián đoạn.)
 Hướng dẫn Test-and-Set o Thực hiện nguyên tử o Trả về giá trị ban đầu của tham số đã truyền o Đặt giá trị mới của
tham số đã truyền thành đúng
 Hướng dẫn Compare-and-Swap o Thực hiện nguyên tử
o Trả về giá trị ban đầu của giá trị tham số đã truyền
o Đặt giá trị biến giá trị của tham số đã truyền new_value nhưng chỉ khi * value == dự kiến là đúng. Đó là, việc
hoán đổi chỉ diễn ra trong điều kiện này.
- Semaphore là gì? Cách sử dụng?
• Là 1 biến số nguyên
• Thông qua hai hoạt động không thể chia cắt (amotic) wait () và signal () (Ban đầu được gọi là P () và V ())
• Đếm semaphore - giá trị số nguyên có thể nằm trong một miền không giới hạn
• Semaphore nhị phân - giá trị số nguyên chỉ có thể nằm trong khoảng từ 0 đến 1(Tương tự như khóa mutex)
• Có thể giải quyết các vấn đề đồng bộ hóa khác nhau
• Các ứng dụng có thể dành nhiều thời gian trong các phần quan trọng và do đó đây không phải là một giải pháp tốt
- Monitor là gì? Cách nó hoạt động?
• Loại monitor là một ADT (abstract data type)bao gồm một tập hợp các hoạt động do lập trình viên xác định được cung cấp
loại trừ lẫn nhau trong monitor.
• Một monitor sử dụng các biến điều kiện cho phép các quá trình chờ đợi một số điều kiện trở thành đúng và báo hiệu cho
nhau khi các điều kiện được đặt thành đúng.
- Starvation nói đến tình trạng nào trong hệ thống?
• Sự chết đói thường được gây ra bởi sự bế tắc ở chỗ nó gây ra một quá trình đóng băng. Hai hoặc nhiều quá trình trở nên bế
tắc khi mỗi trong số chúng không làm gì trong khi chờ đợi một tài nguyên bị chiếm bởi một chương trình khác trong cùng một
bộ. Mặt khác, một quá trình đang bị đói khi nó đang chờ một tài nguyên liên tục được trao cho các quy trình khác. - Giải thuật
Peterson có cấu trúc ra sao? Đặc điểm và cách nó hoạt động.
• Có thể chứng minh rằng ba yêu cầu CS được đáp ứng:
 Loại trừ lẫn nhau được bảo tồn P chỉ vào CS nếu: hoặc cờ [j] = false hoặc Turn = i
 Yêu cầu tiến độ được thỏa mãn
 Yêu cầu giới hạn chờ được đáp ứng
- Tình trạng cạnh tranh (race condition) là gì?
• Tình trạng cuộc đua xảy ra khi các quy trình có quyền truy cập đồng thời vào dữ liệu được chia sẻ và kết quả cuối cùng phụ
thuộc vào thứ tự cụ thể trong đó các truy cập hiện tại xảy ra. Điều kiện cuộc đua có thể dẫn đến các giá trị bị hỏng của dữ liệu
chia sẻ.
- 03 tiêu chí của một giải thuật đồng bộ là gì?
• Loại trừ lẫn nhau - Nếu quy trình Pi đang thực thi trong phần quan trọng của nó, thì không có quy trình nào khác có thể được
thực thi trong các phần quan trọng của chúng
• Tiến trình - Nếu không có quy trình nào được thực thi trong phần quan trọng của nó và tồn tại một số quy trình muốn vào
phần quan trọng của chúng, thì việc lựa chọn các quy trình sẽ vào phần quan trọng tiếp theo có thể bị hoãn vô thời hạn
• Chờ đợi bị ràng buộc - Phải có ràng buộc về số lần các quy trình khác được phép vào các phần quan trọng của chúng sau khi
một quy trình đưa ra yêu cầu nhập phần quan trọng của nó và trước khi yêu cầu đó được cấp
 Giả sử rằng mỗi quá trình thực hiện ở tốc độ khác không
 Không có giả định liên quan đến tốc độ tương đối của các quá trình - Busy waiting là gì? Khi nào xuất hiện, tác động
của nó đến hệ thống là gì?
• Trong khi một quy trình nằm trong phần quan trọng của nó, bất kỳ quy trình nào khác cố gắng nhập phần quan trọng của nó
phải lặp lại liên tục trong lệnh gọi để aquire().
• Vòng lặp liên tục này rõ ràng là một vấn đề trong một hệ thống đa chương trình thực sự, trong đó một lõi CPU được chia sẻ
giữa nhiều quy trình.
• Chờ đợi bận rộn cũng làm lãng phí chu kỳ CPU mà một số quy trình khác có thể có thể sử dụng hiệu quả.
- Tính sống còn (liveness) của các bài toán đồng bộ là gì?
• Các quy trình có thể phải chờ vô thời hạn trong khi cố gắng có được một công cụ đồng bộ hóa như khóa mutex hoặc
semaphore.
• Liveness đề cập đến một tập hợp các thuộc tính mà một hệ thống phải đáp ứng để đảm bảo các tiến trình đạt được tiến bộ.
• Chờ đợi vô thời hạn là một ví dụ về một thất bại liveness.
• Bế tắc - hai hoặc nhiều quá trình đang chờ đợi vô thời hạn cho một sự kiện có thể được gây ra chỉ bởi một trong các quy trình
chờ
• Các giải pháp cho vấn đề của phần quan trọng có thể gặp phải các vấn đề về liveness, bao gồm cả bế tắc.
CHƯƠNG 7: CÁC VÍ DỤ ĐỒNG BỘ
- Xem lại bài toán Triết gia ăn tối.
• Các triết gia dành cuộc sống của họ xen kẽ suy nghĩ và ăn uống
• Không tương tác với hàng xóm của họ, thỉnh thoảng cố gắng nhặt 2 chiếc đũa (mỗi lần một cái) để ăn từ bát
• Cần cả hai để ăn, sau đó thả cả hai khi hoàn thành
• Trong trường hợp của 5 triết gia
• Chia sẻ dữ liệu
• Bát cơm (tập dữ liệu)
• Đũa semaphore [5] khởi tạo thành 1
• Sử dụng semaphore và monitor, có thể xảy ra starvation.
- Xem lại bài Toán Bộ ghi - Bộ đọc.
• Một tập dữ liệu được chia sẻ giữa một số quy trình đồng thời
 Độc giả - chỉ đọc tập dữ liệu; họ không thực hiện bất kỳ cập nhật nào
 Nhà văn - có thể vừa đọc vừa viết
• Vấn đề - cho phép nhiều người đọc đọc cùng một lúc, chỉ một nhà văn duy nhất có thể truy cập dữ liệu được chia sẻ cùng một
lúc
• Một số biến thể về cách người đọc và nhà văn được xem xét - tất cả đều liên quan đến một số hình thức ưu tiên
• Chia sẻ dữ liệu
 Tập dữ liệu
 Semaphore rw_mutex khởi tạo thành 1
 Semaphore mutex khởi tạo thành 1
 Số nguyên read_count khởi tạo thành 0
- Xem lại bài toán Producer - Consumer.
• n bộ đệm, mỗi bộ có thể giữ một mục
• Semaphore mutex khởi tạo giá trị 1
• Semaphore đầy khởi tạo với giá trị 0
• Semaphore trống được khởi tạo cho giá trị n
CHƯƠNG 8: TẮC NGHẼN
- Đồ thị cấp phát tài nguyên RAG: mô hình, cách xây dựng.
• V được phân chia thành hai loại:
 P = {P1, P2, Hoài, Pn}, tập hợp bao gồm tất cả các quy trình trong hệ thống
 R = {R1, R2, Hoài, Rm}, tập hợp bao gồm tất cả các loại tài nguyên trong hệ thống
• yêu cầu cạnh(request edge) - cạnh chỉ đạo Pi → Rj
• cạnh gán(assign edge) - cạnh định hướng Rj → Pi - Đọc thông tin của đồ thị RAG.
• Nếu đồ thị không chứa chu kỳ không có bế tắc
• Nếu đồ thị chứa một chu kỳ
 nếu chỉ có một thể hiện cho mỗi loại tài nguyên, thì bế tắc
 nếu một vài trường hợp cho mỗi loại tài nguyên, khả năng bế tắc
- Khái niệm: hệ thống an toàn, hệ thống không an toàn, hệ thống bị tắc nghẽn được hiểu thế nào và tương quan của chúng ra sao?
• Khi một quy trình yêu cầu một tài nguyên có sẵn, hệ thống phải quyết định xem việc phân bổ ngay lập tức có khiến hệ thống
ở trạng thái an toàn không
• Hệ thống ở trạng thái an toàn nếu có tồn tại một chuỗi <P1, P2, ..., Pn> của tất cả các quá trình trong các hệ thống như vậy
mà cho mỗi Pi, các nguồn lực mà Pi vẫn có thể yêu cầu có thể được thỏa mãn bởi tài nguyên hiện có sẵn + tài nguyên được
giữ bởi tất cả các Pj, với j <I
 Nếu nhu cầu tài nguyên Pi không có sẵn ngay lập tức, thì Pi có thể đợi cho đến khi tất cả Pj kết thúc
 Khi Pj kết thúc, Pi có thể có được các tài nguyên cần thiết, thực thi, trả lại các tài nguyên được phân bổ và chấm dứt
 Khi Pi kết thúc, Pi +1 có thể có được các tài nguyên cần thiết, v.v.
• Nếu một hệ thống ở trạng thái an toàn không có bế tắc
• Nếu một hệ thống ở trạng thái không an toàn, khả năng bế tắc
• Tránh ⇒ đảm bảo rằằng một hệ thốống sẽẽ khống bao giờ đi vào trạng thái khống an toàn.
- Giải thuật nhà băng.
• Nhiều trường hợp tài nguyên
• Mỗi quy trình phải sử dụng tối đa yêu cầu
• Khi một quá trình yêu cầu một tài nguyên, nó có thể phải chờ
• Khi một quá trình có được tất cả các tài nguyên của nó, nó phải trả lại chúng trong một khoảng thời gian hữu hạn
• Đặt n = số lượng quy trình và m = số loại tài nguyên.
 Available: Vector có chiều dài m. Nếu available [j] = k, có k trường hợp loại tài nguyên Rj khả dụng
 Max: n x m ma trận. Nếu Max [i, j] = k, thì quá trình Pi có thể yêu cầu tối đa k trường hợp loại tài nguyên Rj
 Allocation: n x m matrix. If Allocation[i,j] = k thì Pi hiện được phân bổ k phiên bản của Rj
 Need: n x m matrix. If Need[i,j] = k, thì Pi có thể cần thêm k thể hiện của Rj để hoàn thành nhiệm vụ của mình
• Need [i,j] = Max[i,j] – Allocation [i,j]
- Thứ tự cấp phát và sử dụng tài nguyên của một loại tiến trình.
• Mỗi quy trình sử dụng một tài nguyên như sau: yêu cầu -> sử dụng -> giải phóng - 4 điều kiện xảy ra tắc nghẽn là gì?
• Loại trừ lẫn nhau: chỉ một quá trình tại một thời điểm có thể sử dụng tài nguyên
• Giữ và chờ đợi: một quy trình đang nắm giữ ít nhất một tài nguyên đang chờ để có được các tài nguyên bổ sung do các quy
trình khác nắm giữ
• No preemption: một tài nguyên chỉ có thể được phát hành một cách tự nguyện bởi quá trình giữ nó, sau khi quá trình đó đã
hoàn thành nhiệm vụ của nó
• Circuit wait: tồn tại một tập hợp {P0, P1, …, Pn} của các quy trình chờ sao cho P0 đang chờ một tài nguyên được giữ bởi P1,
P1 đang chờ một tài nguyên được tổ chức bởi P2, …, Pn - 1 đang chờ một tài nguyên do Pn nắm giữ và Pn đang chờ một tài
nguyên do P0 nắm giữ.
- Loại trừ tắc nghẽn được thực hiện ra sao? Cách nào là thực tế nhất? circular wait
• Loại trừ lẫn nhau - không bắt buộc đối với tài nguyên có thể chia sẻ (ví dụ: các tệp chỉ đọc); phải giữ cho các tài nguyên không
thể chia sẻ
• Giữ và chờ - phải đảm bảo rằng bất cứ khi nào một quy trình yêu cầu tài nguyên, nó không giữ bất kỳ tài nguyên nào khác
 Yêu cầu quy trình để yêu cầu và được phân bổ tất cả các tài nguyên của nó trước khi bắt đầu thực thi hoặc cho phép
quy trình chỉ yêu cầu tài nguyên khi quy trình không được phân bổ cho nó.  Sử dụng tài nguyên thấp; có thể chết đói
• Không có quyền ưu tiên
 Nếu một quy trình đang nắm giữ một số tài nguyên yêu cầu một tài nguyên khác không thể được phân bổ ngay lập
tức cho nó, thì tất cả các tài nguyên hiện đang được giữ sẽ được giải phóng
 Các tài nguyên được ưu tiên được thêm vào danh sách các tài nguyên mà quá trình đang chờ
 Quá trình sẽ chỉ được khởi động lại khi nó có thể lấy lại tài nguyên cũ, cũng như những tài nguyên mới mà nó đang
yêu cầu
• Chờ thông tư - áp đặt tổng thứ tự của tất cả các loại tài nguyên và yêu cầu mỗi quy trình yêu cầu tài nguyên theo thứ tự tăng
dần
- Các cách phục hồi một hệ thống tắc nghẽn.
• Chấm dứt tiến trình:
 Hủy bỏ tất cả các quy trình bế tắc
 Hủy bỏ một quá trình tại một thời điểm cho đến khi chu trình khóa chết được loại bỏ
• Ưu tiên tài nguyên
 Chọn nạn nhân - giảm thiểu chi phí
 Phục hồi - trở lại trạng thái an toàn, khởi động lại quá trình cho trạng thái đó
 Đói - quá trình tương tự có thể luôn luôn được chọn là nạn nhân, bao gồm số lần khôi phục trong yếu tố chi phí
CHƯƠNG 9: BỘ NHỚ CHÍNH
- Khái niệm Cache / Memory / Register.
• Chương trình phải được đưa (từ đĩa) vào bộ nhớ và được đặt trong một quy trình để nó được chạy  Bộ nhớ chính và các
thanh ghi chỉ là CPU lưu trữ có thể truy cập trực tiếp  Đơn vị bộ nhớ chỉ nhìn thấy một luồng:
 địa chỉ + yêu cầu đọc, hoặc
 địa chỉ + dữ liệu và viết yêu cầu
• Thanh ghi truy cập được thực hiện trong một đồng hồ CPU (hoặc ít hơn)
• Bộ nhớ chính có thể mất nhiều chu kỳ, gây ra một gian hàng
• Bộ nhớ cache nằm giữa bộ nhớ chính và các thanh ghi CPU
• Bảo vệ bộ nhớ cần thiết để đảm bảo hoạt động chính xác
- Khái niệm trang (page), bảng trang / bảng phân trang (page table) và khung trang (frame) là gì?
• Chia bộ nhớ vật lý thành các khối có kích thước cố định được gọi là khung
• Chia bộ nhớ logic thành các khối có cùng kích thước được gọi là các trang
• Thiết lập bảng trang để dịch logic sang địa chỉ vật lý - Địa chỉ luận lý, địa chỉ vật lý.
• Khái niệm về một không gian địa chỉ logic được liên kết với một không gian địa chỉ vật lý riêng biệt là trung tâm để quản lý bộ
nhớ phù hợp
 Địa chỉ logic - được tạo bởi CPU; còn được gọi là địa chỉ ảo
 Địa chỉ vật lý - địa chỉ mà đơn vị bộ nhớ nhìn thấy
• Như nhau trong các lược đồ liên kết địa chỉ thời gian biên dịch và thời gian tải; Khác nhau trong sơ đồ liên kết địa chỉ thời gian
thực hiện
• Không gian địa chỉ logic/vật lí là tập hợp tất cả các địa chỉ logic/vật lí được tạo bởi một chương trình - Thanh ghi BASE, LIMIT
có vai trò gì.
• Kiểm duyệt rằng một quy trình chỉ có thể truy cập vào các địa chỉ đó trong không gian địa chỉ.
• Thanh ghi cơ sở chứa giá trị của địa chỉ vật lý nhỏ nhất
• Thanh ghi giới hạn chứa phạm vi địa chỉ logic - mỗi địa chỉ logic phải nhỏ hơn thanh ghi giới hạn
- 3 giai đoạn gắn địa chỉ (binding) cho các biến số và lệnh là khi nào? Nguyên tắc và đặc tính của từng giai đoạn.
• Thời gian biên dịch: Nếu vị trí bộ nhớ đã biết trước, có thể tạo mã tuyệt đối; phải biên dịch lại mã nếu bắt đầu thay đổi vị trí
• Thời gian tải: Phải tạo mã có thể định vị lại nếu không biết vị trí bộ nhớ tại thời gian biên dịch
• Thời gian thực hiện: Liên kết bị trì hoãn cho đến thời gian chạy nếu quá trình có thể được di chuyển trong quá trình thực thi
từ phân đoạn bộ nhớ này sang phân đoạn bộ nhớ khác - Phân trang trong Windows.
- Hiện tượng phân mảnh nội xảy ra khi nào? Cách khắc phục?
• Phân mảnh nội bộ - bộ nhớ được phân bổ có thể lớn hơn một chút so với bộ nhớ được yêu cầu; sự khác biệt kích thước này
là bộ nhớ trong của một phân vùng, nhưng không được sử dụng - Hiện tượng phân ngoại nội xảy ra khi nào? Cách khắc phục?
• Phân mảnh bên ngoài - tổng dung lượng bộ nhớ tồn tại để đáp ứng yêu cầu, nhưng nó không liền kề
• Giảm sự phân mảnh bên ngoài bằng cách nén
 Xáo trộn nội dung bộ nhớ để đặt tất cả bộ nhớ trống trong một khối lớn
 Việc nén chỉ có thể nếu việc di chuyển là động và được thực hiện tại thời điểm thực hiện
 Vấn đề I / O o Chốt công việc trong bộ nhớ trong khi nó liên quan đến I / O
o Chỉ I / O vào bộ đệm hệ điều hành - Các cách chọn lổ trống khi cấp phát liên
tục.
• Phù hợp đầu tiên: Phân bổ lỗ đầu tiên đủ lớn
• Phù hợp nhất: Phân bổ lỗ nhỏ nhất đủ lớn; phải tìm kiếm toàn bộ danh sách, trừ khi được sắp xếp theo kích thước(Tạo ra lỗ
còn lại nhỏ nhất)
• Phù hợp tệ nhất: Phân bổ lỗ lớn nhất; cũng phải tìm kiếm toàn bộ danh sách(Tạo ra lỗ còn sót lại lớn nhất)
- Chia sẻ trang.
• Mã chia sẻ
 Một bản sao của mã chỉ đọc (reentrant) được chia sẻ giữa các quy trình (trình soạn thảo văn bản, trình biên dịch, hệ
thống cửa sổ)
 Tương tự như nhiều luồng chia sẻ cùng một không gian xử lý
 Cũng hữu ích cho giao tiếp giữa các quá trình nếu chia sẻ các trang đọc-ghi được cho phép
• Mã riêng và dữ liệu
 Mỗi quy trình giữ một bản sao riêng của mã và dữ liệu
 Các trang cho mã riêng và dữ liệu có thể xuất hiện ở bất cứ đâu trong không gian địa chỉ logic
- Bộ MMU. Thiết bị phần cứng trong thời gian chạy ánh xạ ảo đến địa chỉ vật lý, Thanh ghi cơ sở bây giờ được gọi là thanh ghi di dời
• Phần sau đây phác thảo các bước được thực hiện bởi MMU để dịch địa chỉ logic do CPU tạo ra thành địa chỉ vật lý:
 1. Trích xuất số trang p và sử dụng nó làm chỉ mục vào bảng trang.
 2. Trích xuất số khung hình tương ứng f từ bảng trang.
 3. Thay thế số trang p trong địa chỉ logic bằng số khung f.
- Số trang, số khung, độ dịch / offset.
• Địa chỉ do CPU tạo ra được chia thành:
 Số trang (p) - được sử dụng làm chỉ mục vào bảng trang chứa địa chỉ cơ sở của từng trang trong bộ nhớ vật lý
 Trang offset (d) - kết hợp với địa chỉ cơ sở để xác định địa chỉ bộ nhớ vật lý được gửi đến đơn vị bộ nhớ
- TLB là gì?
• Vấn đề truy cập hai bộ nhớ có thể được giải quyết bằng cách sử dụng bộ đệm phần cứng tra cứu nhanh đặc biệt gọi là bộ
đệm dịch sang một bên (TLB) (còn gọi là bộ nhớ kết hợp).
• TLB thường nhỏ (64 đến 1.024 mục), Mỗi mục TLB chứa một số trang và khung tương ứng của nó.
• Sử dụng TLB trong dịch địa chỉ cho các hệ thống phân trang liên quan đến việc lấy số trang từ địa chỉ logic và kiểm tra xem
khung cho trang có nằm trong TLB không. Nếu có, khung được lấy từ TLB. Nếu khung không có trong TLB, nó phải được lấy từ
bảng trang
- Bảng phân trang nhiều mức.
• Chia không gian địa chỉ lôgic thành nhiều bảng trang
• Một kỹ thuật đơn giản là một bảng trang hai cấp
• Chúng tôi sau đó trang bảng bảng
- Bảng phân trang băm, bảng phân trang đảo ngược.
• Phổ biến trong không gian địa chỉ> 32 bit
• Số trang ảo được băm vào bảng trang
 Bảng trang này chứa một chuỗi các phần tử băm đến cùng một vị trí
• Mỗi phần tử chứa (1) số trang ảo (2) giá trị của khung trang được ánh xạ (3) một con trỏ tới phần tử tiếp theo
• Số trang ảo được so sánh trong chuỗi này để tìm kiếm sự trùng khớp
 Nếu một trùng khớp được tìm thấy, khung vật lý tương ứng được trích xuất
• Biến thể cho địa chỉ 64 bit là các bảng trang được nhóm
 Tương tự như băm nhưng mỗi mục đề cập đến một số trang (chẳng hạn như 16) thay vì 1
 Đặc biệt hữu ích cho các không gian địa chỉ thưa thớt (nơi các tham chiếu bộ nhớ không liền kề và phân tán)
• Thay vì mỗi quy trình có một bảng trang và theo dõi tất cả các trang logic có thể, hãy theo dõi tất cả các trang vật lý
• Một mục nhập cho mỗi trang thực của bộ nhớ
• Mục nhập bao gồm địa chỉ ảo của trang được lưu trữ ở vị trí bộ nhớ thực đó, với thông tin về quy trình sở hữu trang đó
• Giảm bộ nhớ cần thiết để lưu trữ từng bảng trang, nhưng tăng thời gian cần thiết để tìm kiếm bảng khi tham chiếu trang xảy
ra
• Sử dụng bảng băm để giới hạn tìm kiếm trong một - hoặc nhiều nhất là một vài - mục trong bảng trang
 TLB có thể tăng tốc truy cập - Khái niệm về hoán đổi (Swapping).
• Một quá trình có thể được hoán đổi tạm thời ra khỏi bộ nhớ vào một cửa hàng sao lưu, và sau đó được đưa trở lại vào bộ
nhớ để tiếp tục thực hiện
• Cửa hàng sao lưu - đĩa nhanh đủ lớn để chứa các bản sao của tất cả các hình ảnh bộ nhớ cho tất cả người dùng; phải cung
cấp quyền truy cập trực tiếp vào những hình ảnh bộ nhớ này
• Roll out, roll in - biến thể hoán đổi được sử dụng cho các thuật toán lập lịch ưu tiên; quy trình ưu tiên thấp hơn được hoán
đổi để quy trình ưu tiên cao hơn có thể được tải và thực thi
• Phần chính của thời gian hoán đổi là thời gian chuyển giao; tổng thời gian truyền tỷ lệ thuận với lượng bộ nhớ được hoán đổi
• Hệ thống duy trì hàng đợi các quy trình sẵn sàng chạy có hình ảnh bộ nhớ trên đĩa

CHƯƠNG 10: BỘ NHỚ ẢO


- Khái niệm bộ nhớ ảo.
• Bộ nhớ ảo trừu tượng hóa bộ nhớ vật lý thành một mảng lưu trữ cực kỳ lớn.
• Lợi ích của bộ nhớ ảo bao gồm: (1) chương trình có thể lớn hơn bộ nhớ vật lý, (2) chương trình không cần hoàn toàn trong bộ
nhớ, (3) quy trình có thể chia sẻ bộ nhớ và (4) quy trình có thể được tạo ra hiệu quả hơn.
- Lỗi trang, các bước xử lý của hệ thống.
• Xảy ra lỗi trang khi một trang hiện không có trong bộ nhớ được truy cập. Trang phải được đưa từ cửa hàng sao lưu vào khung
trang có sẵn trong bộ nhớ.
- Tính địa phương của tham khảo.
• Một địa phương đại diện cho một tập hợp các trang được sử dụng tích cực cùng nhau. Khi một quá trình thực thi, nó di
chuyển từ địa phương đến địa phương. Một bộ làm việc dựa trên địa phương và được định nghĩa là tập hợp các trang hiện
đang được sử dụng bởi một quy trình.
- Phân trang theo yêu cầu.
• Phân trang theo yêu cầu là một kỹ thuật trong đó các trang chỉ được tải khi chúng được yêu cầu trong khi thực hiện chương
trình. Do đó, các trang không bao giờ được yêu cầu không bao giờ được tải vào bộ nhớ.
- Quy ước sao chép khi ghi (Copy on Write).
• Copy-on-write cho phép một tiến trình con chia sẻ cùng một không gian địa chỉ với cha mẹ của nó. Nếu một trong hai quá
trình con hoặc cha mẹ viết (sửa đổi) một trang, một bản sao của trang được tạo ra.
- Các giải thuật chọn frame nạn nhân: FIFO, Optimal, LRU, Second Chance.
• Khi bộ nhớ khả dụng sắp hết, thuật toán thay thế trang sẽ chọn một trang hiện có trong bộ nhớ để thay thế bằng một trang
mới. Các thuật toán thay thế trang bao gồm FIFO, tối ưu và LRU. Các thuật toán thuần túy là không thực tế để thực hiện và
thay vào đó, hầu hết các hệ thống sử dụng thuật toán xấp xỉ LRU.
- Thay thế toàn cục / Thay thế địa phương.
• Các thuật toán thay thế trang toàn cầu chọn một trang từ bất kỳ quy trình nào trong hệ thống để thay thế, trong khi các thuật
toán thay thế trang cục bộ mỗi quy trình chỉ chọn từ bộ khung được phân bổ của riêng mình.
- Thrashing.
• Xảy ra khi một hệ thống dành nhiều thời gian phân trang hơn là thực thi.

CHƯƠNG 11: LƯU TRỮ THỨ CẤP


• Ổ đĩa thuộc một trong hai loại có thể được gắn vào hệ thống máy tính theo một trong ba cách: (1) thông qua các cổng I / O
cục bộ trên máy chủ, (2) được kết nối trực tiếp với bo mạch chủ hoặc (3) thông qua mạng truyền thông hoặc kết nối mạng lưu
trữ.
• Yêu cầu I / O lưu trữ thứ cấp được tạo bởi hệ thống tệp và bởi hệ thống bộ nhớ ảo. Mỗi yêu cầu chỉ định địa chỉ trên thiết bị
sẽ được tham chiếu dưới dạng số khối logic.
- Đặc trưng của đĩa cứng HDD và các thông số hoạt động của nó.
• Ổ đĩa cứng và thiết bị bộ nhớ không biến đổi là đơn vị I / O lưu trữ thứ cấp chính trên hầu hết các máy tính. Lưu trữ thứ cấp
hiện đại được cấu trúc như các mảng một chiều lớn của các khối logic.
• Platters dao động từ 0,85” đến 14” (lịch sử), Thường 3,5” , 2,5” và 1,8”
• Dao động từ 30GB đến 3TB mỗi ổ đĩa
• Tốc độ truyền - lý thuyết - 6 Gb / giây
• Tốc độ truyền hiệu quả - thực - 1Gb / giây
• Tìm kiếm thời gian từ 3ms đến 12ms - 9ms phổ biến cho các ổ đĩa máy tính để bàn
• Thời gian tìm kiếm trung bình được đo hoặc tính toán dựa trên 1/3 track
• Độ trễ dựa trên tốc độ trục chính 1 / (RPM / 60) = 60 / RPM
• Độ trễ trung bình = ½ độ trễ
• Độ trễ truy cập = Thời gian truy cập trung bình = thời gian tìm kiếm trung bình + độ trễ trung bình
• Thời gian I / O trung bình = thời gian truy cập trung bình + (số tiền chuyển / chuyển) + chi phí điều khiển
- Đặc trưng của SSD.
• Các hình thức khác bao gồm ổ USB (ổ ngón tay cái, ổ đĩa flash), thay thế đĩa DRAM, gắn trên bề mặt trên bo mạch chủ và lưu
trữ chính trong các thiết bị như điện thoại thông minh
• Có thể đáng tin cậy hơn ổ cứng
• Đắt hơn mỗi MB
• Có thể có tuổi thọ ngắn hơn - cần quản lý cẩn thận
• Công suất thấp
• Nhưng nhanh hơn nhiều
• Bus có thể quá chậm -> kết nối trực tiếp PCI ví dụ
• Không có bộ phận chuyển động, vì vậy không có thời gian tìm kiếm hoặc độ trễ quay - Các thiết bị NVM.
• Ví dụ về bộ nhớ non-volatile bao gồm đèn flash bộ nhớ , chỉ đọc bộ nhớ (ROM), sắt điện RAM , hầu hết các loại lưu trữ máy
tính từ thiết bị (ví dụ như ổ đĩa cứng, đĩa mềm, và băng từ), đĩa quang, và các phương pháp lưu trữ máy tính đầu chẳng hạn
như băng giấy và thẻ đục lỗ.
- Định thời đĩa: FCFS, SCAN, C-SCAN.
• Các thuật toán lập lịch đĩa có thể cải thiện băng thông hiệu quả của ổ cứng, thời gian phản hồi trung bình và phương sai về
thời gian đáp ứng.
• Các thuật toán như SCAN và C-SCAN được thiết kế để thực hiện các cải tiến đó thông qua các chiến lược để đặt hàng theo
đĩa. Hiệu suất của các thuật toán lập lịch đĩa có thể khác nhau rất nhiều trên các đĩa cứng.
• Ngược lại, vì các đĩa trạng thái rắn không có bộ phận chuyển động, hiệu suất thay đổi rất ít giữa các thuật toán lập lịch và
thường sử dụng chiến lược FCFS đơn giản.
- Các cấp độ RAID.
• Do dung lượng lưu trữ cần thiết trên các hệ thống lớn và do các thiết
bị lưu trữ bị lỗi theo nhiều cách khác nhau, các thiết bị lưu trữ thứ
cấp thường được tạo dự phòng thông qua thuật toán RAID.
• Các thuật toán này cho phép sử dụng nhiều hơn một ổ đĩa cho một
hoạt động nhất định và cho phéphoạt động liên tục và thậm chí tự
động phục hồi khi gặp sự cố ổ đĩa. Các thuật toán RAID được tổ chức
thành các cấp độ khác nhau; mỗi cấp độ cung cấp một số kết hợp độ
tin cậy và tốc độ truyền cao.

You might also like