Tiêu chuẩn định thời

Một phần của tài liệu Bao cao mon hoc hệ điều HÀNH (Trang 34 - 65)

1 .Khái niệm

2. Tiêu chuẩn định thời

- CPU utilization (tận dụng) - giữ cho CPU càng bận càng tốt (0- 100%)

• Throughput (thơng lƣợng tối đa) - số tiến trình đƣợc hồn thành trong một đơn vị thời gian

• Turnaround time - tổng lƣợng thời gian để thực hiện một tiến trình: t/g chờ đƣợc đƣa vào bộ nhớ t/g chờ trong ready queue + t/g thực hiện bởi CPU + t/g thực hiện vào-ra

- Waiting time - thời gian mà một tiến trình chờ đợi ở trong ready queue - Response time - lƣợng thời gian tính từ khi có một u câu đƣợc gửi đến khi có sự trà lời đâu tiên đƣợc phát ra, không phải là thời gian đƣa ra kết quả của sự trả lời đó.là tiêu chuẩn tốt.

3.Các giải thuật lập lịch

3.1. Giải thuật First-Come, First-Served (FCFS)

 Tiến trình nào yêu cầu CPU trƣớc sẽ đƣợc phân phối CPU trƣớc Giải

thuật FCFS'là không đƣợc ƣu tiên

 Là giải thuật đơn giản nhất

• Giả định rằng các tiến trình đến theo thứ tự: P1, P2, P3 thì biểu đơ Gantt (Gantt Chart) của lịch biểu nhƣ sau:

 Thời gian chờ đợi của các tiến trình: P1 = 0; P2 = 24; P3 = 27

 Thời gian chờ đợi trung bình: (0 + 24 + 27)/3 = 17

3.1. Giải thuật First-Come, First-Served (FCFS) -Giả sử các tiến trình đến theo thứ tự P2, P3, P1

• Biểu đồ Gantt của lịch biểu nhƣ sau:

• Thời gian chờ đợi của các tiến trình: P1 = 6; P2 = 0; P3 = 3 • Thời gian chờ đợi trung binh: (6 +0 + 3)/3 = 3

• Tốt hơn nhiều so với trƣờng hợp trƣớc

• Convoy effect (hiệu ứng hộ tổng): tiến trình ngắn đứng sau tiến trình đài -> tăng thời gian đợi của các tiến trình

3.2. Giải thuật Shortest-Job-First (SJF) (1)

Ví dụ: SJF khơng ƣu tiên trƣớc

• SJF (non-preemptive)

• Thời gian chờ đợi của các tiến trình: P1 = 0; P2 = 6; P3 = 3, P4 = 7 • Thời gian chờ đợi trung bình = (0 + 6 + 3 + 7)/4 = 4

• Ví dụ Preemptive SJF

• SRTF = SJF (preemptive)

• Thời gian chờ đợi trung bình (9 + 1+ 0 +2)/4 = 3

3.2. Giải thuật Shortest-Job-First (SJF) (3)

• SJF scheduling chart

•Average waiting time = (3 + 16 + 9 + 0) /4 = 7 3.3a. Xác định thời gian sử dụng CPU kế tiếp(1)

 Khơng thế biết chính xác thời gian sử dụng CPU tiếp sau của tiến trình

nhƣng có thể đốn giá trị xấp xỉ của nó dựa vào thời gian sử dụng CPU trƣớc đó và sử dụng công thức đệ quy:

τn+1 = αtn + (1- α) τn.

• τn+1 = giá trị dự đốn cho thời gian sử dụng CPU tiếp sau

• tn = thời gian thực tế của sự sử dụng CPU thứ n

• α. 0 ≤ α ≤ 1 • τ0 là một hằng số

 α = 0: τn+1 = τn = τ0

• Thời gian thực tế sử dụng CPU gån đây khơng có tác dụng gi cả.

 α = 1: τn+1 = τn

•Chỉ tính đến thời gian sử dụng CPU thực tế ngay trƣớc đó.

3.3b. Giải thuật Thời gian ngắn nhất cịn lại-Thời gian đầu tiên(SRTF) • Bây giờ chúng ta thêm các khái niệm về thời gian đến khác nhau và ƣu tiên

vào phân tích

• SRTF = Biểu đồ Gantt Dự phịng SJF

• Thời gian chờ trung bình = [(10-1) + (1-1) + (17-2) + 5-3)] / 4 = 26/4 = 6,5 mili giây

3.4. Lập lịch có ƣu tiên - Priority Scheduling (1)

• Mỗi tiến trình đƣợc gắn một số ƣu tiên (số nguyên). VD: 0-127

• CPU đƣợc phân phối cho tiến trình có mức ƣu tiên cao nhất (có số ƣu tiên nhỏ nhất)

o Preemptive

o Nonpreemptive

• SJF là trƣờng hợp riêng của lập lịch có ƣu tiên: mức ƣu tiên chính là thời gian sử dụng CPU tiếp sau dự đốn đƣợc.

• Vấn đệ: những tiến trình có mức ƣu tiên thấp có thể khơng bao giờ đƣợc thực hiện (starvation).

• Giải pháp = Aging: kỹ thuật tăng mức ƣu tiên của các tiến trình chờ đợi lầu trong hệ thống.

• VD: Sau 1-15 phút giảm số ƣu tiên một lần.

3.4. Lập lịch có ƣu tiên - Priority Scheduling (2)

• Preemptive:

• T/gian chờ đợi trung bình = (0 +1+ 6 + 16 + 18)/5 = 8.2

3.5. Giải thuật Round-Robin (RR) (1)

• Mỗi tiến trình, sử dụng một lƣợng nhỏ thời gian của CPU (time quantum - thời gian định lƣợng, q), thƣờng là 10-100 mili giây (ms)

• Sau thời gian thực hiện q, tiến trình đƣa vào cuối của ready queue. • Ready queue đƣợc tổ chức dạng FIFO (FCFS)

o Nếu tiến trình có thời gian sử dụng CPU cịn lại < q

o Tiến trình sẽ giải phóng CPU khi kết thúc

o Giải phóng khỏi ready queue

o Trình lập lịch sẽ chọn tiến trình kế tiếp trong ready queue.

• Nếu tiến trình có thời gian sử dụng CPU cịn lại > g

o Bộ định thời (timer) sẽ đếm lùi q

o Gây ngắt HĐH khi q = 0

o Trình lập lịch sẽ chọn tiến trình kế tiếp trong ready queue.

o Tiến trình hiện tại đƣợc đƣa xuống cuối ready queue.

• Biểu đồ:

• T / gian chờ trung bình = (6 + 4 + 7) / 3 = 5.67

• Thơng thƣờng, quay vịng trung bình cao hơn SJF, nhƣng phản hồi tốt hơn nên lớn so với thời gian chuyển đổi ngữ cảnh

• q thƣờng là 10ms đến 100ms, chuyển đổi ngữ cảnh <10 usec

3.5. Giải thuật Round-Robin (RR) (3)

3.6. Lập lịch hàng đợi đa mức Multilevel Queue (1)

• Ý tƣởng: chia ready queue thành nhiều queue, các tiến trình trên cũng queue có cùng độ ƣu tiến

• Phổ biến:

o foreground (chứa các interactive process)

o background (chứa các batch process)

•Mỗi hàng đợi có giải thuật lập lịch riêng:

o foreground- RR

o background - FCFS

• Phải có sự lập lịch giữa các queue:

o Lập lịch với mức ƣu tiên cố định

VD: phục vụ tất cả tiến trình từ foreground, Tiếp theo từ background (có thể xảy ra starvation).

o Phân chia thời gian

 Mỗi queue nhận đƣợc một lƣợng thời gian CPU

 Các queue có thể lập lịch các tiến trình của mình.

 VD: 80% cho foreground queue

 Và 20% cho background queue

3.7. Hàng đợi phản hồi đa mức Multilevel Feedback Queue (1)

• Hạn chế của multilevel queue:

o Khơng linh động (một tiến trình khơng thể di chuyển giữa các hàng đợi)

o Dễ xảy ra trƣờng hợp đói CPU

• Multilevel Feedback Queue:

o Tiến trình có thể di chuyển giữa các queue

o Tiến trình sử dụng nhiêu CPU burst có thể di chuyển từ hàng đợi có

mức ƣu tiên cao xuống hàng đoi có mức ƣu tiên thấp hơn

3.7. Hàng đợi phản hồi đa mức Multilevel Feedback Queue (1)

- Ví dụ:

 Queue0 - RR, q0 = 8 ms

 Queuel - RR, q1 = 16 ms

 Queue2 - FCFS

- Lập lịch:

• Một tiến trình vào Queue0 và đƣợc phục vụ RR • Khi nó giành đƣợc CPU, tiến trình nhận đƣợc 8 ms

• Nếu nó khơng hồn thành trong 8 ms, tiến trình đƣợc chuyến tới Queue1.

• Tại Queuel tiến trình tiếp tục đƣợc phục vụ RR với 16 ms nữa.

• Nếu nó vẫn chƣa hồn thành thì nó đƣợc ƣu tiên và đƣợc chuyển đến Queue2. • Tiến trình đƣợc chuyển từ Queue có mức cao xuống Queue có mức ƣu tiên thấp:

o Vẫn có độ ƣu tiên cao hơn tiến trình vào Queue mà nó chuyển

xuống ngay từ đầu.

o Các tiến trình Queue có mức ƣu tiên thấp chi đƣợc thực thi khi

3.7. Hàng đợi phản hồi đa mức Multilevel Feedback Queue (1)

Ví dụ: có 3 queue:

• Queue0 - RR, q0 = 8 ms • Queuel - RR, q1 = 16 ms • Queue2 – FCFS

3.7. Hàng đợi phản hồi đa mức Multilevel Feedback Queue (1)

• Ví dụ: • có 3 queue:

o Queue0 - RR, q0 = 8ms

o Queue1 - RR, q1 = 16 ms

o Queue2 - FCFS

4. Lập lịch multiprocessor

- Phức tạp

- Các loại processor trong multiprocessor

 Đồng nhất (Homogeneous): Tất cả có cùng kiến trúc.

 Không đồng nhất (Heterogeneous): Một số tiến trình có thể khơng tƣơng

thích với kiến trúc của các CPU.

 Cân bằng tải (Load balancing/sharing):

• Một ready queue cho tất cả các processor,

• CPU nhàn rỗi đƣợc gán cho tiến trình ở đầu queue

• Tránh trƣờng hợp 1 CPU quá tải

• Ready queue gắn với nó liên tục đây

• Trong khi các ready queue gắn với các CPU khác có thể ln

 Đa xử lý không đối xứng - Asymmetric multiprocessing:

 Chị một processor (CPU master) truy nhập các cấu trúc dữ liệu hệ

 Làm giảm sự chia sẻ dữ liệu;

 Có thế gây hiệu ứng thắt cổ chai khi CPU master phải thực hiện

Kiến trúc hệ thống-máy tính

- Hầu hết các hệ thống sử dụng một bộ xử lý đa năng duy nhất

• Hầu hết các hệ thống cũng có bộ xử lý cho mục đích đặc biệt

- Hệ thống đa bộ xử lý ngày càng đƣợc sử dụng và tầm quan trọng

• Cịn đƣợc gọi là hệ thống song song, hệ thống kết hợp chặt chẽ • Ƣu điểm bao gồm:

o Tính kinh tế của quy mơ

o Tăng độ tin cậy - giảm khả năng chịu lỗi hoặc giảm nhẹ

• Hai loại:

o Đa xử lý khơng đối xứng - mỗi bộ xử lý đƣợc giao một

nhiệm vụ cụ thể.

o Đa xử lý đối xứng - mỗi bộ xử lý thực hiện tất cả các tác vụ

4. Lập lịch multiprocessor

NUMA và lập lịch CPU

Thiết kế lõi thép

- 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

o Tận dụng sự ngừng trệ của bộ nhớ để thực hiện tiến trình trên

một chuỗi khác trong khi quá trình truy xuất bộ nhớ diễn ra.

o Đa chip và đa lõi

o Hệ thống chứa tất cả các chip Khung chứa nhiều hệ thống

riêng biệt

CHƢƠNG 5:

PROCESS SYCHRONIZATION – ĐỒNG BỘ GIỮA CÁC TIẾN TRÌNH

1. Nhu cầu đồng bộ hóa

- Trong hệ thống:

• Nhiều tiến trình liên lạc với nhau

• HĐH ln cân cung cấp những cơ chế đơng bộ hóa để bảo đảm hoạt động đồng thời của các tiến trình khơng tác động sai lệch đến nhau

- Nguyên nhân tác động sai lệch:

• Yêu cầu độc quyền truy xuất • Yêu cầu phối hợp

1.1. Yêu cầu độc quyền truy xuất

Phân loại Tài nguyên trong hệ thống:

- Tài nguyên chia sẻ: Cho phép nhiêu tiến trình đồng thời truy xuất

- Tài nguyên khơng thể chia xẻ:

• Tại một thời điểm chỉ có một tiến trình sử dụng

 Khơng thể chia xẻ do:

o Đặc điểm phân cứng

o Nhiều tiến trình đồng thời sử dụng tài nguyên này sẽ

gây ra kết quả không dự đoán trƣớc đƣợc

 Giải pháp:

o HĐH cần đảm bảo vấn đề độc quyền truy xuất tài

nguyên: Tại một thời điểm chi cho phép một tiến trình sử dụng tải nguyên

1.2. Yêu cầu phối hợp đồng bộ

- Các tiến trình trong hệ thống: Hoạt động độc lập thƣờng khơng đồng bộ

o Phối hợp hồn thành một tác vụ

o Có thể dẫn đến yêu cầu đồng bộ:

 Tiến trình này sử dụng kết quả của tiền trình kia

 Cần hồn thiện các tiến trình con mới có thể hồn thiện tiến

trình cha

2. Vấn đề đồng bộ (2)

- Mơ tả:

• Nếu giá trị ban đầu của x là 1, sau khi thực hiện các bƣớc trên, x sẽ có

giá trị 0 (chỉ = 1 khi 2 tiến trình lần lƣợt thực hiện: P1 xong, P2 mới thực hiện)

Vấn đề đồng bộ(3)

Bài toán 2:

- Khách hàng

• Có tài khồn 800K,

• Cần thực hiện yêu cầu rút 400K,

• Việc thực hiện yêu cầu thơng qua tien trình P1.

- Hacker

• Có đƣợc mật khẩu của khách hàng, • Truy nhập vào tài khoản khách hàng, •Yêu cầu rút 700K,

• Việc thực hiện u cầu hacker thơng qua tiến trình P2

• Đều truy nhập vào biển dùng chung là account của khách hàng; • Mỗi tiến trình rút tiền có

• Đều có đoạn rút tiền và cập nhật tài khoản: require (số tiền cần rút)

Vấn đề đồng bộ (4)

- Bài toán 2(tiếp)

Tình huống nảy sinh:

 Tiến trình P1:

o Kiểm tra thấy account > require • -> Thực hiện đoạn code

trên để rút tiền, Nhƣng chƣa cập nhật tài khoản • (chƣa thực hiện lệnh account -= require): Do hết thời gian sử dụng CPU đƣợc phân phối cho nó

 Tiến trình P2:

o Kiểm tra điều kiện vẫn thỏa mãn (account vân = 800K)

->Thực hiện việc rút tiền.

o Giả sử P2 đƣợc phân phối đù thời gian sử dụng CPU,

 Cập nhật account = 100K

 Kết thúc

 Tiến trình P1

o Quay lại thực hiện nốt cơng việc (vì đã kiểm tra điều kiện từ

lần trƣớc)

 Cập nhật account = -300 -> Tình huống lỗi

Vấn đề đồng bộ (4)

- Bài tốn 2(tiếp) • Giải pháp:

o Áp dụng cơ chế truy xuất độc quyền

 Trên tài ngun đó (account): Khi một tiến trình đang

sử dụng tài nguyên, thì các tiến trình khác khơng đƣợc sử dụng

Vấn đề đồng bộ (5): Đoạn gang

- Critical session • (- critical region: đoạn găng, miền găng)

- Trong ví dụ trên: Tiến trình P1, P2 đều bao gồm chuỗi các lệnh riêng và

các lệnh thực hiện rút tiền:

Vấn đề đồng bộ (6): Đoạn găng

- Khái niệm: Đoạn găng (miền găng) là đoạn mã lệnh có khả năng xảy ra mâu thuẫn, khi truy xuất tài nguyên chung.

- Hệ điều hành:

 Cân cài đặt các giải pháp đồng bộ để giải quyết vấn đề độc quyền truy

xuất quyết định: Tiến trình nào sẽ đƣợc vào miền găng (thực hiện các lệnh trong miền này)

 Khi một tiến trình đang ở miền găng thì các tiến trình khác khơng thể vào

miền găng.

Vấn đề đồng bộ (7): Đoạn găng

3. Giải pháp « busy waiting »

- Giải pháp phần mềm:

• Sử dụng các biến cờ hiệu(semaphore) • Sử dụng việc kiểm tra luân phiên • Giải pháp của Peterson

- Giải pháp có sự hỗ trợ phần cứng:

• Cấm ngắt • Test & Set

3.1. Sử dụng các biến cờ hiệu (Semaphore) (1)

- Ý tƣởng:

 Các tiến trình chia sẻ một biến chung: Biến đóng vai trị « chốt cửa »

(lock), biến này đƣợc khởi động là 0.

 Một tiến trình muốn vào miên găng, trƣớc tiên phải kiểm tra giá trị của

biến lock:

o Nếu lock=0, tiến trình đặt lại giá trị cho lock=1 và đi vào miền găng.

o Nếu lock=1, tiến trình phải chờ đến khi lock có giá trị 0.

- Nhƣ vậy:

 lock=0 khơng có tiến trình nào đang ở trong miền găng

3.1. Sử dụng các biến cờ hiệu (Semaphore) (1)

3.1. Sử dụng các biến cờ hiệu (Semaphore) (2)

Nhận xét: Giải pháp này vẫn xảy ra trƣờng hợp

- 2 tiến trình cùng trong đoạn gắng khi:

- Tiến trình P1:

• Thấy lock==0, đi vào đoạn, nhƣng chƣa kịp đặt lock=1. Vì hết thời gian sử dụng CPU.

- Tiến trình P2:

• Thấy lock==0, đi vào đoạn găng,

• Đặt lock=1, đang thực hiện các lệnh trong đoạn gắng, nhƣng chƣa xong vì hết thời gian CPU.

- Tiến trình P1 tiếp tục đƣợc phân phối CPU và thực hiện các lệnh trong

đoạn găng.

- Khi đó P1, P2 cùng trong đoạn găng

3.2. Sử dụng việc kiểm tra luân phiên (1)

Ý tƣởng: Giải pháp đề nghị cho hai tiến trình:

- Hai tiến trình sử dụng chung biến turn

- Khởi động turn == 0.

- Nếu turn = 0

 Tiến trình P1 đƣợc vào đoạn găng, khi tiến trình P1 rời khỏi đoạn

găng

- Nếu turn= 1

 Tiến trình P2 đƣợc vào đoạn găng

 Khi tiến trình P2 rời khỏi đoạn gắng, Nó lại đặt giá trị turn=0 để

cho phép tiến trình P1 đi vào đoạn găng.

- Nếu một trong hai tiến trình P1, P2 trong đoạn gắng: Tiến trình cịn lại đi

vào một vịng lặp chờ biến turn thay đổi.

3.3. Sử dụng việc kiểm tra ln phiên (2)

• Cấu trúc tiến trình P1

• Cấu trúc tiến trình P2

3.2. Sử dụng việc kiểm tra luân phiên(3)

Đặc điểm:

• Số lần vào đoạn găng của P1, P2 là cân bằng (luân phiên nhau) →Vấn đề:

Một phần của tài liệu Bao cao mon hoc hệ điều HÀNH (Trang 34 - 65)

Tải bản đầy đủ (PDF)

(118 trang)