You are on page 1of 18

ĐẠI HỌC BÁCH KHOA HÀ NỘI

TRƯỜNG ĐIỆN – ĐIỆN TỬ

BÁO CÁO BÀI TẬP LỚN

HỆ ĐIỀU HÀNH
Đề tài: Lập lịch CPU và Mô phỏng các thuật toán

Giảng viên hướng dẫn : PGS.TS. Nguyễn Thanh Bình

Sinh viên thực hiện:

Cao Minh Đức 20192765


Hoàng Bùi Minh Chí
20203333
Trần Đình Trung 20203622
Lê Minh Quân 20203539

Mã lớp : 145603
Hà Nội, 11/2023
LỜI NÓI ĐẦU

Hiện nay, khoa học kĩ thuật trên thế giới ngày càng phát triển mạnh mẽ. Khoa
học kĩ thuật đóng vai trò không thể thiếu trong đời sống hiện đại ngày nay của
chúng ta nó hiện diện trong từng sản phẩm, từng vật dụng mà chúng ta sử dụng
hàng ngày. Vì vậy việc học tập và đạo tạo, kế thừa và phát triển những thành tựu
khoa học cho thế hệ mới ngày nay là vô cùng quan trọng đặc biệt là thế hệ sinh
viên. Việc tiếp cận đó cần phải tiếp cận cả về mặt lí thuyết lẫn thực hành, như
vậy việc học tập và đào tạo mới có thể đạt được hiệu quả tốt nhất, đáp ứng được
cho xã hội nguồn nhân lực khoa học kĩ thuật chất lượng cao. Trong quá trình học
tập học phần Hệ điều hành do thầy Nguyễn Thanh Bình giảng dạy chúng em đã
được hướng dẫn, trợ giáo để hoàn thành việc thực hành các dự án trong khóa
học về các thuật toán.
Sau khi trải qua một khoảng thời gian, nhóm chúng em đã cơ bản hoàn thành
việc lập trình để hiểu hơn về lập lịch CPU. Trong bài báo cáo này, nhóm chúng
em sẽ đi trình bày cụ thể thông qua 3 chương sau:
Chương 1: Cơ sở lý thuyết
Chương 2: Các thuật toán lập lịch
Chương 3: Mô phỏng
Nhóm xin chân thành cảm ơn thầy đã tận tâm hướng dẫn chúng em trong
quá trình tìm hiểu và hoàn thiện báo cáo này!
CHƯƠNG 1. CỞ SỞ LÝ THUYẾT...................................................................................3

1.1 Các khái niệm liên quan đến tiến trình...................................................................3


1.1.1 Tiến trình là gì....................................................................................................3
1.1.2 Trạng thái của tiến trình.....................................................................................3

1.2 Lập lịch CPU.............................................................................................................5


1.2.1 Lập lịch CPU là gì..............................................................................................5
1.2.2 Các tiêu chuẩn lập lịch.......................................................................................5

CHƯƠNG 2. CÁC THUẬT TOÁN LẬP LỊCH...............................................................6

2.1 First Come, First Served (FCFS).............................................................................6

2.2 Shortest Job First (SJF)...........................................................................................7

2.3 Shortest Remaining Time First (SRTF)...................................................................9

2.4 Độ ưu tiên (Priority Scheduling)............................................................................10

2.5 Round Robin...........................................................................................................12


CHƯƠNG 1. CỞ SỞ LÝ THUYẾT

1.1 Các khái niệm liên quan đến tiến trình.

1.1.1 Tiến trình là gì

- Tiến trình trong hệ điều hành là một khái niệm quan trọng, đó là một chương trình
hoặc tác vụ đang chạy trên máy tính. Mỗi tiến trình bao gồm mã chương trình, dữ
liệu và tài nguyên hệ thống (như bộ nhớ, bộ vi xử lý). Mỗi khi bạn chạy một ứng
dụng hoặc một tác vụ trên máy tính, đó là một tiến trình.
- Một số tiến trình có thể chạy độc lập như trình duyệt web hoặc ứng dụng văn phòng,
trong khi một số khác có thể là phần của một hệ thống lớn hơn. Hệ điều hành quản lý
các tiến trình này bằng cách cấp phát tài nguyên và quản lý thời gian xử lý để chúng
có thể hoạt động một cách hiệu quả trên máy tính.

1.1.2 Trạng thái của tiến trình

- Trạng thái của tiến trình tại một thời điểm được xác định bởi hoạt động hiện thời của
tiến trình tại thời điểm đó. Trong quá trình sống, một tiến trình thay đổi trạng thái do
nhiều nguyên nhân như : phải chờ một sự kiện nào đó xảy ra, hay đợi một thao tác
nhập/xuất hoàn tất, buộc phải dừng hoạt động do đã hết thời gian xử lý …

- Tại một thời điểm, một tiến trình có thể nhận trong một các trạng thái sau đây :
1. Trạng thái mới khởi tạo: tiến trình đang được tạo ra. Hệ điều hành đã tạo ra các
thông tin về tiến trình tuy nhiên tiến trình chưa được them vào danh sách những tiến
trình được phép thực hiện. Thông thường, tiến trình ở trạng thái này chưa nằm trong
bộ nhớ.
2. Trạng thái sẵn sàng: tiến trình chờ được cấp CPU để thực hiện lệnh của mình.
3. Trạng thái chạy: lệnh của tiến trình được CPU thực hiện. Với những máy tính có một
CPU và CPU có một lõi, tại mỗi thời điểm chỉ có một tiến trình nằm trong trạng thái
chạy.

3
4. Trạng thái chờ đợi: tiến trình chờ đợi một sự kiện gì đó xảy ra, ví dụ chờ tín hiệu từ
tiến trình khác hoặc chờ kết thúc quá trình vào/ra. Trạng thái chờ đợi còn được gọi là
trạng thái bị phong tỏa (blocked).
5. Trạng thái kết thúc: tiến trình không còn nằm trong danh sách các tiến trình được
thực hiện nhưng vẫn chưa bị xóa. Tiến trình thuộc về trạng thái này sau khi đã được
thực hiện xong hoặc bị tiến trình khác kết thúc.

- Các tiến tình có thể di chuyển giữa các trạng thái tùy thuộc vào các tác động từ hệ
thống hoặc các sự kiện nội và ngoại vi. Hệ điều hành quản lý việc chuyển đổi giữa
các trạng thái này để đảm bảo tất cả tiến trình hoạt động một cách hiệu quả.

4
1.2 Lập lịch CPU

1.2.1 Lập lịch CPU là gì

- Lập lịch CPU là quá trình quản lý việc sử dụng và phân phối thời gian CPU cho các
tiến trình trên hệ thống máy tính. Mục tiêu của lập lịch CPU là tối ưu hóa việc sử
dụng tài nguyên quý báu này, giúp hệ thống hoạt động hiệu quả hơn. Đảm bảo rằng
tất cả các tiến trình đều có cơ hội sử dụng tài nguyên CPU một cách công bằng.
- Các hệ điều hành sử dụng các thuật toán lập lịch CPU để quyết định tiến trình nào sẽ
được thực thi tiếp theo trên CPU. Các thuật toán lập lịch khác nhau có những ưu
điểm và hạn chế riêng, nhưng tất cả đều nhằm mục đích là tối ưu hóa thời gian đáp
ứng, tối thiêu hóa thời gian chờ đợi và cân nhắc việc sử dụng tài nguyên CPU giữa
các tiến trình.

1.2.2 Các tiêu chuẩn lập lịch

- Các tiêu chuẩn lập lịch CPU đo lường hiệu suất của các thuật toán lập lịch dựa trên
một số tiêu chí khác nhau. Một số tiêu chuẩn chính bao gồm:
1. Thời gian chờ đợi (waiting time): đo lường thời gian một tiến trình phải chờ đợi
trước khi được thực thi. Thuật toán lập lịch tốt sẽ cố gắng giảm thiểu thời gian chờ
đợi.
2. Thời gian quay vòng (turnaround time): là khoảng thời gian từ khi một tiến trình
bắt đầu cho đến khi hoàn thành. Mục tiêu là giảm thời gian này để các tiến trình
hoàn thành nhanh chóng.
3. Độ công bằng (fairness): một thuật toán lập lịch được coi là công bằng nếu nó cung
cấp cơ hội cho tất cả các tiến trình để thực thi và sử dụng CPU một cách công bằng.
4. Số lượng hoàn thành (throughput): đo lường số lượng tiến trình hoàn thành trong
một khoảng thời gian nhất định. Thuật toán lập lịch tốt sẽ cố gắng tăng cường
throughput.
5. Overhead (chi phí) của lập lịch: đo lường chi phí tính toán, bộ nhớ hoặc tài nguyên
khác mà thuật toán lập lịch yêu cầu. Thuật toán lập lịch tốt sẽ có overhead thấp.

- Các tiêu chuẩn này giúp đánh giá và so sánh hiệu suất của các thuật toán lập lịch
CPU khác nhau. Mục tiêu là tìm ra thuật toán hoặc cơ chế lập lịch phù hợp với yêu
cầu cụ thể của hệ thống máy tính để tối ưu hóa hiệu suất và sử dụng tài nguyên.

5
CHƯƠNG 2. CÁC THUẬT TOÁN LẬP LỊCH

2.1 First Come, First Served (FCFS)


Thuật toán lập lịch FCFS (First-Come, First-Served) là một trong những thuật toán đơn
giản nhất trong việc lập lịch tiến trình. Đây là cách lập lịch dựa trên nguyên tắc xử lý các
tiến trình theo thứ tự chúng được đưa vào hệ thống.

Ưu điểm:

Dễ hiểu và triển khai: FCFS rất dễ hiểu và thực hiện. Không cần nhiều tính toán phức tạp.

Không có xếp hạng ưu tiên: Mọi tiến trình đều được xử lý theo thứ tự đơn giản, không có
sự ưu tiên nào được áp dụng.

Nhược điểm:

Thời gian chờ lớn: Có thể dẫn đến thời gian chờ lâu đối với các tiến trình có thời gian thực
thi lâu và được đặt ở vị trí sau trong hàng đợi.

Hiệu suất thấp: Do không xét đến bất kỳ yếu tố ưu tiên nào, có thể dẫn đến việc tiến trình
ưu tiên cao phải chờ đợi lâu nếu được đặt vào hàng đợi sau các tiến trình khác.

Không tối ưu hóa thời gian chờ: Không cung cấp phương pháp tối ưu để giảm thiểu thời
gian chờ của các tiến trình.

Trong thực tế, FCFS thường không được sử dụng trong môi trường sản xuất vì nhược điểm
lớn về thời gian chờ và hiệu suất. Các thuật toán lập lịch khác như SJF (Shortest Job First)
hoặc Round Robin thường được ưu tiên hơn vì hiệu suất tốt hơn trong việc giảm thiểu thời
gian chờ và tối ưu hóa thời gian thực thi tiến trình.

Ví dụ:

Trong lịch trình sau, có 5 quy trình với ID quy trình P0, P1, P2, P3 và P4 . P0 đến tại
thời điểm 0, P1 tại thời điểm 1, P2 tại thời điểm 2, P3 đến tại thời điểm 3 và Quy trình
P4 đến tại thời điểm 4 trong hàng đợi sẵn sàng. Các quy trình và Arrival Time và Burst

6
tương ứng của chúng được đưa ra trong bảng sau

Turn Around Time và Waiting Time được tính bằng công thức sau.

1. Turn Around Time = Completion Time – Arrival Time


2. Waiting Time = Turn Around Time – Thời gian liên tục
Avg Waiting Time được xác định bằng cách tổng Waiting Time tương ứng của tất cả
các quá trình và chia tổng cho tổng số quá trình.

Avg Waiting Time = 31/5

2.2 Shortest Job First (SJF)


Cơ sở lý thuyết của thuật toán SJF (Shortest Job First) dựa trên việc ưu tiên tiến trình có
thời gian thực thi ngắn nhất. Ý tưởng là để tối ưu hóa thời gian chờ đợi và thời gian hoàn
thành tổng thể của các tiến trình.

Ưu điểm:

Tối ưu thời gian chờ đợi: Thuật toán SJF có khả năng giảm thiểu thời gian chờ đợi của
các tiến trình, vì các tiến trình ngắn sẽ được xử lý trước, giảm thời gian chờ đợi của các tiến
trình dài hơn.

7
Tối ưu hóa thời gian hoàn thành tổng thể: Bằng cách ưu tiên xử lý tiến trình ngắn trước,
thuật toán SJF có thể dẫn đến thời gian hoàn thành tổng thể tối ưu hơn so với nhiều thuật
toán khác.

Nhược điểm:

Khó thực hiện đối với tiến trình mới (new process): SJF đòi hỏi thông tin về thời gian
thực thi của tiến trình trước khi bắt đầu, điều này có thể không khả thi khi tiến trình mới
được tạo ra hoặc thông tin thời gian thực thi không chính xác.

Hiện tượng "lưng chừng" (convoy effect): Nếu có một tiến trình dài hạn đến trước các
tiến trình ngắn hơn, các tiến trình ngắn sẽ phải chờ đợi lâu hơn, dẫn đến hiện tượng "lưng
chừng" và tăng thời gian chờ đợi.

Không công bằng: Các tiến trình dài hạn có thể chịu ảnh hưởng bởi việc ưu tiên tiến
trình ngắn hơn, dẫn đến việc chúng phải chờ đợi lâu hơn.

Mặc dù SJF có ưu điểm về tối ưu thời gian chờ đợi và thời gian hoàn thành, nhưng
cũng có nhược điểm khi không thể dự đoán hoặc xử lý tốt đối với tiến trình mới và có thể
dẫn đến hiện tượng không công bằng giữa các tiến trình.

Ví dụ:

Trong ví dụ sau, có năm công việc được đặt tên là P1, P2, P3, P4 và P5. Arrival Time và
Burst Time của chúng được đưa ra trong bảng dưới đây.

Do đó, Không có Quy trình nào đến tại thời điểm 0; sẽ có một vị trí trống trong biểu đồ
Gantt từ thời điểm 0 đến 1 (thời điểm mà quá trình đầu tiên đến). Theo thuật toán, hệ điều
hành lập lịch cho quá trình có Burst Time thấp nhất trong số các quá trình có sẵn trong hàng

8
đợi sẵn sàng. Trong số các quy trình được đưa ra trong bảng, P3 sẽ được thực thi tiếp theo
vì nó đang có Burst Time thấp nhất trong số tất cả các quy trình có sẵn.

Vì vậy, đó là cách thủ tục sẽ diễn ra trong thuật toán lập lịch SJF.

2.3 Shortest Remaining Time First (SRTF)

Thuật toán "Shortest Remaining Time First" (SRTF) là một thuật toán lập lịch
preemptive (có khả năng gián đoạn tiến trình đang thực thi) và ưu tiên việc thực thi tiến
trình có thời gian thực thi còn lại ngắn nhất.

Ưu tiên tiến trình có thời gian thực thi còn lại ngắn nhất so với các tiến trình khác.

Khi có một tiến trình mới được tạo ra hoặc tiến trình hiện tại hoàn thành, hệ thống sẽ
kiểm tra xem tiến trình nào có thời gian thực thi còn lại ngắn nhất và thực thi tiến trình đó
trước.

Ưu điểm:

Tối ưu hóa thời gian chờ đợi: SRTF có khả năng giảm thiểu thời gian chờ đợi của các
tiến trình, vì luôn ưu tiên tiến trình có thời gian thực thi ngắn nhất, giúp các tiến trình hoàn
thành nhanh hơn.

Tối ưu hóa thời gian hoàn thành tổng thể: Bằng việc liên tục chọn tiến trình có thời gian
thực thi ngắn nhất, SRTF có thể dẫn đến thời gian hoàn thành tổng thể tối ưu hơn.

Nhược điểm:

Overhead (Chi phí): Thuật toán này có thể tạo ra overhead lớn do việc liên tục kiểm tra
và so sánh thời gian thực thi còn lại của các tiến trình.

Hiện tượng "lưng chừng" (Convoy Effect): Nếu có một tiến trình dài hạn đến trước các
tiến trình ngắn hơn, các tiến trình ngắn sẽ phải chờ đợi lâu hơn, dẫn đến hiện tượng "lưng
chừng".

Không công bằng: Các tiến trình dài hạn có thể chịu ảnh hưởng bởi việc ưu tiên tiến
trình ngắn hơn.

9
Mặc dù SRTF có ưu điểm về tối ưu thời gian chờ đợi và thời gian hoàn thành tổng thể,
nhưng cũng có nhược điểm khi tạo ra overhead và có thể dẫn đến hiện tượng "lưng chừng"
và không công bằng giữa các tiến trình.

Ví dụ:

Trong ví dụ này, có ba công việc P1, P2, P3. Arrival Time và Burst Time của chúng được
đưa ra dưới đây trong bảng.

Có ba công việc P1, P2 và P3. P1 đến đơn vị thời gian 0; nó sẽ được lên lịch trước cho đến
khi quá trình tiếp theo đến. P2 đến 1 đơn vị thời gian. Burst Time của nó là 4 đơn vị, ít nhất
trong số các công việc trong hàng đợi. Do đó, nó sẽ được lên lịch tiếp theo.

Tại thời điểm 2, P3 sẽ đến với Burst Time 9. Vì Burst Time còn lại của P2 là 3 đơn vị, ít
nhất trong số các công việc hiện có. Do đó, bộ xử lý sẽ tiếp tục thực hiện cho đến khi hoàn
thành. Bởi vì tất cả các công việc đã đến nên không có quyền ưu tiên nào được thực hiện
ngay bây giờ và tất cả các công việc sẽ được thực hiện cho đến khi hoàn thành theo SJF.

- Waiting Time trung bình = (4 + 0 + 11) / 3 = 5 đơn vị

2.4 Độ ưu tiên (Priority Scheduling)

Thuật toán lập lịch theo độ ưu tiên (Priority Scheduling) dựa trên việc ưu tiên thực hiện
các tiến trình dựa trên mức độ ưu tiên đã được gán cho mỗi tiến trình. Mức độ ưu tiên này
có thể được xác định dựa trên nhiều yếu tố như thời hạn, loại công việc, độ quan trọng, và
nhiều tiêu chí khác.

10
Mỗi tiến trình có một mức độ ưu tiên riêng. Khi hệ thống sẵn sàng để lập lịch cho tiến
trình tiếp theo, tiến trình có mức độ ưu tiên cao nhất sẽ được chọn để thực thi.

Có thể có sự thay đổi độ ưu tiên theo thời gian hoặc theo các sự kiện cụ thể.

Ưu điểm:

Đa dạng về ưu tiên: Các tiến trình có thể được ưu tiên dựa trên nhiều tiêu chí khác nhau,
cho phép hệ thống ưu tiên các công việc quan trọng hơn.

Tính linh hoạt: Có khả năng điều chỉnh độ ưu tiên của các tiến trình theo thời gian hoặc
theo các sự kiện, đáp ứng nhanh chóng nhu cầu của hệ thống.

Nhược điểm:

Khả năng bị đánh giá sai về ưu tiên: Có thể xảy ra việc ước lượng hoặc đánh giá không
chính xác về mức độ ưu tiên, dẫn đến việc ưu tiên các tiến trình không hiệu quả.

Không công bằng: Các tiến trình có mức độ ưu tiên cao có thể lợi thế so với các tiến
trình có độ ưu tiên thấp, dẫn đến việc các tiến trình ít quan trọng có thể bị đẩy sang sau.

Mặc dù Priority Scheduling cho phép tính linh hoạt và ưu tiên công việc quan trọng
hơn, nhưng cũng có thể dẫn đến việc không công bằng hoặc việc ước lượng không chính
xác về độ ưu tiên.

Ví dụ:

Cho 5 tiến trình sau với các mức độ khác nhau.

Do đây là giải thuật P nên ta sắp xếp lại thứ tự đến CPU dựa vào độ ưu tiên, độ ưu tiên nhỏ
thì được thực hiện trước tiên: P2→P5→P1→P3→P4→CPU

Lược đồ Gantt:

11
Thời gian chờ trung bình: (0+1+6+16+18)/5=8.2

2.5 Round Robin

Thuật toán lập lịch Round Robin là một thuật toán lập lịch CPU có tính chất preemptive (có
khả năng gián đoạn tiến trình đang thực thi). Nó chia thời gian CPU thành các đoạn nhỏ gọi
là "time quantum" và cấu trúc công việc theo kiểu hàng đợi vòng.

Mỗi tiến trình được thực thi trong một khoảng thời gian cố định (time quantum). Nếu tiến
trình không hoàn thành trong khoảng thời gian này, nó sẽ bị gián đoạn để nhường CPU cho
các tiến trình khác.

Tiến trình đang chờ đợi sẽ được đưa vào cuối hàng đợi, tạo ra một chu kỳ lặp đi lặp lại
(round-robin) cho tất cả các tiến trình.

Ưu điểm:

Công bằng: Mỗi tiến trình được cấp một phần bằng nhau của thời gian CPU, đảm bảo công
bằng giữa các tiến trình.

Giảm thời gian chờ đợi: Tiến trình sẽ được thực thi ngay lập tức nếu đến lượt nó, giảm thiểu
thời gian chờ đợi của các tiến trình.

Nhược điểm:

Hiệu suất có thể bị giảm: Nếu time quantum quá nhỏ, có thể xảy ra nhiều overhead do việc
chuyển đổi giữa các tiến trình.

Không phù hợp cho các công việc dài hạn: Các tiến trình dài hạn có thể gặp vấn đề vì phải
chờ đợi quá lâu để lấy lại CPU.

Round Robin là một phương pháp công bằng và khá linh hoạt, nhưng cũng có thể dẫn đến
overhead nếu time quantum quá nhỏ hoặc gây thất vọng đối với các tiến trình dài hạn nếu
không có cơ chế quản lý thích hợp.

Ví dụ:

12
Trong ví dụ sau, có sáu quy trình được đặt tên là P1, P2, P3, P4, P5 và P6. Arrival Time và
Burst Time của chúng được đưa ra dưới đây trong bảng.

Theo thuật toán, chúng ta phải duy trì hàng đợi sẵn sàng và biểu đồ Gantt. Cấu trúc của cả
hai cấu trúc dữ liệu sẽ được thay đổi sau mỗi lần lập lịch.

Lược đồ Gantt:

Waiting Time trung bình = (12 + 16 + 6 + 8 + 15 + 11) / 6 = 76/6 đơn vị

13
CHƯƠNG 3. MÔ PHỎNG
3.1 MỤC TIÊU MÔ PHỎNG
- Mô phỏng tất cả các thuật toán lập lịch cho CPU được đề cập trong phần lý thuyết:
 First Come First Serve (FCFS)
 Shortest-Job-First (SJF)
 Round-Robin (RR)
 Priority scheduling
 Shortest Remaining Time Frist (SRTF)
 Input: Các thông tin về process
 Output: Hiển thị Ready Queue, Gantt Chart
Tính toán được các thông số liên quan đến process

3.2 KẾT QUẢ MÔ PHỎNG


3.2.1 First Come Frist Serve

14
15
16

You might also like