You are on page 1of 39

1

TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG


KHOA CÔNG NGHỆ THÔNG TIN

BÁO CÁO TIỂU LUẬN


NHẬP MÔN HỆ ĐIỀU HÀNH
HỌC KÌ II

Nhóm : 04

Tổ : 02

Họ Tên SV : Huỳnh Minh Ngọc

MSSV : 52100651

Niên học: 2021 - 2022


2

LỜI CẢM ƠN
Đầu tiên em xin chân thành cảm ơn thầy BÙI QUY ANH, là người thầy dạy trực tiếp
bộ môn Nhập môn Hệ điều hành (Lý thuyết) . Trong suốt thời gian học tập, thầy là
người đã tận tình chỉ dạy, hướng dẫn cũng như giúp đỡ để em có thể hoàn thành bài
báo cáo tiểu luận.

Em cũng xin chân thành cảm ơn toàn thể giáo viên khoa Công nghệ thông tin của
Trường Đại học Tôn Đức Thắng đã ủng hộ, đồng hành cùng em để hoàn thiện bài
báo cáo này đồng thời giúp em có thêm nhiều kiến thức để chuẩn bị cho hành trang
sắp tới.

Cuối cùng lời cảm ơn này em xin dành đến gia đình, các anh chị trong trường, nhất là
các anh chị trong câu lạc bộ ICON và những người bạn xung quanh luôn sát cánh,
đưa ra những lời khuyên hữu ích cho em.

Bài báo cáo này là minh chứng rõ nhất cho những cố gắng, nỗ lực học hỏi của em,
tuy nhiên cũng không tránh khỏi thiếu sót. Mong rằng em sẽ nhận được sự đóng góp,
chỉ bảo từ các thầy cô để cho em có thể sửa đổi, bổ sung và hoàn thành tốt hơn nữa.

Em rất mong sẽ nhận được sự hài lòng, giúp đỡ của các thầy cô. Một lần nữa em xin
chân thành cảm ơn!

TP. Hồ Chí Minh, ngày 22 tháng 04 năm 2022


Tác giả
(Ký tên và ghi rõ họ tên)

Huỳnh Minh Ngọc


3

BÁO CÁO ĐƯỢC HOÀN THÀNH TẠI TRƯỜNG ĐẠI HỌC


TÔN ĐỨC THẮNG

Tôi xin cam đoan đây là công trình nghiên cứu của riêng tôi và được sự hướng dẫn
khoa học của GV.Bùi Quy Anh. Các nội dung nghiên cứu, kết quả trong đề tài này
là trung thực và chưa công bố dưới bất kỳ hình thức nào trước đây. Những số liệu
trong các bảng biểu phục vụ cho việc phân tích, nhận xét, đánh giá được chính tác
giả thu thập từ các nguồn khác nhau có ghi rõ trong phần tài liệu tham khảo.

Ngoài ra, trong bài Báo cáo còn sử dụng một số nhận xét, đánh giá cũng như số liệu
của các tác giả khác, cơ quan tổ chức khác đều có trích dẫn và chú thích nguồn gốc.

Nếu phát hiện có bất kỳ sự gian lận nào tôi xin hoàn toàn chịu trách nhiệm về
nội dung Báo cáo của mình. Trường Đại học Tôn Đức Thắng không liên quan đến
những vi phạm tác quyền, bản quyền do tôi gây ra trong quá trình thực hiện (nếu
có).

TP. Hồ Chí Minh, ngày 22 tháng 04 năm 2022


Tác giả
(Ký tên và ghi rõ họ tên)

Huỳnh Minh Ngọc


4

MỤC LỤC
LỜI CẢM ƠN................................................................................................................2
BÁO CÁO ĐƯỢC HOÀN THÀNH TẠI TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG...3
DANH MỤC HÌNH ẢNH..............................................................................................6
DANH MỤC BẢNG......................................................................................................7
DANH MỤC VIẾT TẮT................................................................................................8
NỘI DUNG.................................................................................................................... 9
Câu 1: Trình bày về hệ thống nhúng và thời gian thực.......................................9
I. Hệ thống nhúng (Embedded Operating Systems)..........................9
1. Định nghĩa:..............................................................................9
2. Cách thức hoạt động:...............................................................9
3. Hệ thống nhúng khác nhau đáng kể:......................................10
4. Ứng dụng thực tế:..................................................................10
II. Hệ điều hành thời gian thực (Real-time Operating Systems).......11
1. Định nghĩa:............................................................................11
2. Cách thức hoạt động và đặc điểm:.........................................11
3. Phân loại:...............................................................................12
Câu 2: Trình bày về Thread usage (Web server)  (đọc và giải thích hình 2.8)...13
I. Máy chủ web (Web server)..........................................................13
1. Máy chủ web.........................................................................13
2. Luồng (Thread)......................................................................14
5

3. Máy chủ đơn luồng và máy chủ đa luồng (Single threaded web
and multithreaded server web).....................................................14
4. Đọc và giải thích hình............................................................15
5. Giải pháp thứ ba Máy trạng thái hữu hạn..............................18
Câu 3: Thread Scheduling (phần LOAD SHARING)........................................19
1. Lập lịch luồng (Thread Scheduling)......................................20
2. Chia sẻ tải (Load sharing):.....................................................20
3. Nhược điểm của chia sẻ tải....................................................23
Câu 4: Semaphores............................................................................................24
1. Các cơ chế hoạt động chung:.................................................25
2. Semaphore.............................................................................25
3. Semaphore nhị phân..............................................................28
4. Hạn chế về thời gian chờ bận (busy waiting).........................29
PHỤ LỤC.....................................................................................................................31
Câu 1:................................................................................................................31
I. Hệ thống nhúng (Embedded Operating Systems)........................31
II. Hệ điều hành thời gian thực (Real-time Operating Systems).......32
Câu 2:................................................................................................................33
Câu 3:................................................................................................................34
I. Các ví dụ thực tế:.........................................................................34
1. Lên lịch FCFS.......................................................................34
2. Nút thắc cổ chai.....................................................................35
II. Một số bài toán minh họa nhược điểm của phương pháp FCFS:. 36
1. Bài toán 1: Cho dãy tiến trình và thời gian phục vụ tương ứng:
36
2. Bài toán 2: Giả sử các bộ xử lí P1, P2, P3 ở bài toán 1 có thời
gian hoàn thành như trên nhưng có thứ tự thực hiện khác nhau:..36
6

TÀI LIỆU THAM KHẢO............................................................................................38


7

DANH MỤC HÌNH ẢNH


Hình 1. 1: Hệ thống thời gian thực cứng và thời gian thực mềm..................................11
Hình 2. 1: Máy chủ Web..............................................................................................13
Hình 2. 2: Hoạt động của multithreaded server web.....................................................15
Hình 2. 3: A Multithreaded Web server........................................................................16
Hình 2. 4: Sơ lược về code cho hình 2. 3 (a) Dispatcher thread. (b) Worker thread.....17
Hình 3. 1: Minh họa kĩ thuật Firsr-come-first-served...................................................21
Hình 3. 2: Hiện tượng nút thắt cổ chai..........................................................................23
Hình 4. 1: Edsger Dijkstra............................................................................................25
Hình 4. 2: Semaphore nguyên thủy..............................................................................26
Hình 4. 3: Semaphore nhị nhân nguyên thủy................................................................27
Hình 4. 4: Cơ chế hoạt động Semaphore......................................................................29
Hình 1- 1: So sánh Hệ điều hành tiêu chuẩn và hệ điều hành nhúng............................31
Hình 1- 2: Mô hình ứng dụng điều khiển bay tự động..................................................31
Hình 3- 1: Minh họa lên lịch FCFC..............................................................................34
Hình 3- 2: Hình 3- 1: Minh họa lên lịch FCFC.............................................................35
8

DANH MỤC BẢNG


Bảng 3. 1: Định nghĩa một số cơ chế hoạt động..........................................................25
Bảng 1- 1: So sánh Hệ điều hành tiêu chuẩn và hệ điều hành nhúng............................31
Bảng 2- 1: Bảng so sánh các cách xây dựng máy chủ..................................................34
9

DANH MỤC VIẾT TẮT


STT Kí tự viết tắt Chữ viết đầy đủ

1 OS Operating Systems (Hệ điều hành)

2 ASIC Application-specific Integrated Circuits

(mạch tích hợp dành riêng cho các ứng dụng)

3 CPU Bộ xử lí trung tâm

4 I/O Input/ Output (Đầu vào/ Đầu ra)


10

NỘI DUNG

Câu 1: Trình bày về hệ thống nhúng và thời gian thực

Trả Lời:

1. Hệ thống nhúng (Embedded Operating Systems)

2. Định nghĩa:

- Ngày nay, khi công nghệ đã trở thành một phần không thể thiếu trong cuộc sống
thì các thiết bị điện tử cũng ngày càng trở nên hiện đại, một trong số đó là các hệ
thống nhúng.
- Hệ thống nhúng (Embedded Operating Systems): là một hệ thống độc lập và nó
có thể là một phần của hệ thống lớn hơn và được “nhúng” vào hệ thống lớn hơn
đó. Nó được thiết kế để thực hiện một nhiệm vụ cụ thể, có thể hoàn thành nhiệm
vụ hoặc tham gia vào hoàn thành một nhiệm vụ nào đó trong hệ thống lớn hơn.
Hay một định nghĩa khác:
- Hệ thống nhúng là một hệ điều hành (OS) chuyên biệt được thiết kế để thực
hiện một nhiệm vụ cụ thể cho một thiết bị mà không phải là máy tính.

3. Cách thức hoạt động:

- Hệ thống nhúng có xu hướng chỉ thực hiện những nhiệm vụ cụ thể.

Ví dụ: Hệ thống nhúng của thang máy là một bộ vi xử lí (microprocessor) hay vi


điều khiển (microcontroller), chúng cho phép thang máy hiểu được một người
nhấn vào nút nào và thực hiện đúng yêu cầu.

- Hệ điều hành cung cấp các tính năng hạn chế do các hệ thống mà chúng chạy
thường là nguyên thủy.
11

- Chúng dành thời gian để quản lí và theo dõi các thiết bị phần cứng.
- Thông thường thì các thiết bị này có rất ít hoặc không có giao diện người dùng.
- Một số hệ thống nhúng hiện nay: Embedded Linux, VxWorks, Integrity, QNX,…

4. Hệ thống nhúng khác nhau đáng kể:

- Hệ điều hành tiêu chuẩn: có mục đích dùng chung. Chẳng hạn như Hệ điều
hành Linux với các ứng dụng dành cho mục đích cục thể để triển khai chức năng.
- Hệ điều hành nhúng với các thiết bị phần cứng: có mục đích đặc biệt và chỉ
cung cấp các chức năng cụ thể. Trong đó các thiết bị phần cứng có mạch tích hợp
dành riêng cho các ứng dụng (ASIC) dùng để thực hiện các tác vụ mà không cần
hệ điều hành.

5. Ứng dụng thực tế:

- Ứng dụng tiêu dùng: máy giặt, lò vi sóng, thiết bị giải trí bằng Audio/ Video, đồ
chơi điều khiển từ xa,...
- Ứng dụng phương tiện: các thiết bị an toàn trên xe ô tô (túi khí, ABS), cửa tự
động.
- Ứng dụng liên lạc: hệ thống định vị toàn cầu (GPS), thiết bị không dây (điện
thoại, máy chiếu), máy ATM, thẻ tín dụng,…
- Lĩnh vực công nghiệp: robotics, nhà máy điện hóa chất/ hạt nhân, đèn giao
thông, camera an ninh,…
- Lĩnh vực y tế: màn hình quan sát tim, máy tạo nhiệt tim, máy lọc máu, kĩ thuật
gắn chân giả,..
- Lĩnh vực quân sự: thiết bị điều hướng và xác định máy bay, trực thăng; máy xác
nhận mục tiêu, tháo bom tự động,…
12

6. Hệ điều hành thời gian thực (Real-time Operating Systems).

1. Định nghĩa:

- Hệ thống nhúng hầu hết luôn chạy trên hệ điều hành thời gian thực.
- Chúng được sử dụng khi các yêu cầu về thời gian nghiêm ngặt được đặt ra đối
với hoạt động của bộ xử lí hoặc luồng dữ liệu, nhờ đó, nó chỉ được sử dụng cho
một thiết bị điều khiển trong một ứng dụng chuyên dụng, cụ thể nào đó.
- Một định nghĩa khác của Stankovic:
“Hệ thời gian thực là một hệ thống mà ở đó tính chính xác trong hoạt động của
chúng không chỉ phụ thuộc vào kết quả mang tính logic, mà còn phụ thuộc cả
vào thời điểm đưa ra kết quả ấy.” Nó cho thấy sự quan trọng của hệ thời gian
thực đối với thời gian tính toán và thời điểm đưa ra đáp ứng của hệ thống.
- Để nhấn mạnh quan điểm này, tác giả Robert Oshana cũng nhắc đến:
“Hãy luôn ghi nhớ điều này khi đề cập đến hệ thời gian thực, rằng: đưa ra quá
muộn đáp án đúng thì cũng là kết quả sai.”

2. Cách thức hoạt động và đặc điểm:

- Các cảm biến (sensors) sẽ đưa dữ liệu đến máy tính, tại đây máy tính sẽ phân tích
dữ liệu và có thể điều chỉnh các điều khiển để sửa đổi các đầu vào cảm biến.
- Hệ thống thời gian thực có các giới hạn thời gian cố định và được xác định rõ
ràng:
 Tính kịp thời: quá trình xử lí phải được thực hiện đúng trong khoảng thời gian
đã ràng buộc.
 Tính chính xác: nó chỉ hoạt động đúng nếu nó trả về đúng trong giới hạn thời
gian ràng buộc, ngược lại sẽ thất bại.
- Điểm khác so với các loại máy tính truyền thống (không có hệ thống thời
gian thực) là chúng cần thực hiện chính xác trong khoảng thời gian cố định còn
các loại máy tính trước thì không bắt buộc hệ thống phải phản hồi nhanh chóng.
13

 Ví dụ: Các ứng dụng như Word, Excel sẽ mất khoảng thời gian thực thi và hiển
thị khác nhau ở mỗi lần được kích hoạt.

3. Phân loại:

Có 2 loại:

Hình 1. 1: Hệ thống thời gian thực cứng và thời gian thực mềm

- Hệ thống xử lí thời gian thực cứng (Hard real-time): các công việc tuyệt đối
phải được hoàn thành đúng, chính xác trong thời gian quy định.
 Ứng dụng: trong các lĩnh vực quan sự, y tế, ngành công nghiệp, hàng không,
robotics, hệ thống phun nhiên liệu cho động cơ – ô tô,…
 Ví dụ:
i. Phẫu thuật Robot từ xa: nếu hệ thống quá nhanh hoặc quá chậm so với thực tế
hành động của bác sĩ thì có thể gây hại đến tính mạng của bệnh nhân.
ii. Các hệ thống xe hơi không người lái trên nền tảng QNX.
iii. Trong hệ thống phóng vệ tinh, nếu vòi phun của tên lửa không hoạt động vào
đúng thời gian quy đinh, nó dẫn đến thất bại và gây thiệt hại nặng về mặt tài
chính.
- Hệ thống xử lí thời gian thực mềm (Soft real-time): là hệ thống mà thời gian
thực thi có thể bị vi phạm trong một khoảng nhỏ không thường xuyên , tuy vậy
vẫn có thể chấp nhận được nếu không gây ra bất kì thiệt hại nào.
14

 Ứng dụng: hệ thống âm thanh kĩ thuật số, điện thoại,…


 Ví dụ:
Khi mở ổ CD/DVD của máy tính cá nhân (PC) có sự chậm trễ nhưng hoàn toàn
không gay ra thiệt hại nào.

Câu 2: Trình bày về Thread usage (Web server)  (đọc và giải thích hình 2.8)

Trả Lời:

I. Máy chủ web (Web server) 

1. Máy chủ web 

- Web server là máy chủ web, một máy tính lớn được kết nối với tập hợp mạng
máy tính mở rộng. Máy chủ chứa toàn bộ dữ liệu mà nó được giao quyền quản
lý. Mỗi máy chủ có một IP riêng và có thể đọc đa dạng ngôn ngữ như HTML,
HTM, File,… Máy chủ có dung lượng lớn và tốc độ rất cao để có thể lưu trữ và
vận hành tốt kho dữ liệu trên internet.

Hình 2. 1: Máy chủ Web


15

- Thông qua cổng giao tiếp riêng biệt của mỗi máy chủ mà hệ thống máy tính có
khả năng hoạt động trơn tru hơn. Máy chủ phải đảm bảo hoạt động liên tục để có
thể cung cấp dữ liệu cho mạng lưới máy tính của nó.
- Máy chủ web theo luồng là một máy chủ xử lý từng yêu cầu với một
luồng mới, trái ngược với việc xử lý từng yêu cầu bằng một quy trình mới
- Đó là một máy chủ web có một hàng đợi cho các yêu cầu HTTP đến và một nhóm
các luồng để đáp ứng chúng. Máy chủ đưa yêu cầu đầu tiên ra khỏi hàng đợi và chỉ
định một luồng từ nhóm để thực hiện công việc. Các yêu cầu xếp hàng trong hàng
đợi khi chúng đến nhanh hơn luồng có thể xử lý chúng hoặc nếu nhóm hết luồng .
Ví dụ: Người dùng truy cập vào website tdtu.edu.vn. Khi đó, server sẽ cung cấp tất
cả dữ liệu về website đó thông qua lệnh giao tiếp.

2. Luồng (Thread)

- Một tiến trình có thể tạo nhiều luồng, mỗi luồng thực hiện một chức năng riêng
biệt và thực thi đồng thời cũng bằng cách chia sẻ CPU. Các luồng trong cùng một
tiến trình dùng chung không gian địa chỉ tiến trình nhưng có con trỏ lệnh, tập các
thanh ghi và stack riêng. Một luồng cũng có thể tạo lập các tiến trình con, và nhận
các trạng thái khác nhau như một tiến trình.

3. Máy chủ đơn luồng và máy chủ đa luồng (Single threaded web and
multithreaded server web)

- Máy chủ đơn luồng: là loại máy chủ đơn giản nhất, chỉ sinh ra một luồng duy
nhất nên khi đó:
 Chỉ xử lý được một yêu cầu tại một thời điểm.
 Các yêu cầu chỉ có thể được xử lý tuần tự.
16

 Các yêu cầu có thể được xử lý bởi các tiến trình khác nhau và được gửi đến các
server khác nhau.
 Không đảm bảo tính trong suốt, nếu các việc gửi lên chưa được xử lý kịp và
đang phải xếp trong hàng đợi sẽ kiến người dùng không cảm nhận được sự trong
suốt của hệ thống
 Là vòng lặp để đọc các yêu cầu và chuyển chúng đến Dispatcher để xử lý.
- Máy chủ đa luồng: là một máy chủ có thể xử lý nhiều luồng, trong đó mỗi luồng
chịu trách nhiệm xử lý một yêu cầu riêng biệt từ mọi máy khách (người dùng).
Máy chủ bắt đầu chạy một luồng mới bất cứ khi nào nó tìm thấy một yêu cầu sắp
tới.
Ví dụ:

Hình 2. 2: Hoạt động của multithreaded server web

Lợi ích: Việc sử dụng cơ chế đa luồng giúp cho việc trao đổi thông tin giữa client và
server có thể tiến hành song song với các công việc xử lý thông tin khác => tăng tốc độ
và hiệu năng hệ thống.

4. Đọc và giải thích hình

- Giải thích từ khóa:


 Web server process: Tiến trình máy chủ web
17

 Dispatcher thread (luồng điều phối): Là luồng chuyên dụng đảm nhiệm chức
năng điều phối các công việc yêu cầu. Mỗi khi nhận được yêu cầu thì luồng này
sẽ phân tích các yêu cầu này và gửi đến các luồng phù hợp để xử lí.
 Worker thread (luồng làm việc/ luồng người xử lí): Là thread mà người lập
trình tạo thêm cho chương trình để nó thực thi một công việc nào đó không liên
quan đến giao diện.
 Network connection: các yêu cầu công việc từ mạng gửi vào
 Web page cache: là bộ nhớ đệm trên trang web có chức năng lưu trữ tạm thời
các nội dung tĩnh thường được truy cập. Nó giúp các lần truy cập sau sẽ xuất dữ
liệu nhanh hơn mà không cần phải thông qua bộ nhớ chính.
 User space (không gian người dùng): Nó là không gian địa chỉ mà mã thực thi
bị giới hạn truy cập. Bảng quản lý luồng lưu trữ nằm ở đây và các việc điều phối
luồng là do tiến trình chịu trách nhiệm.
 Kernel space (không gian nhân): bảng quản lý thread lưu trữ ở phần kernel và
việc điều phối các luồng là do hệ điều hành chịu trách nhiệm
- Giải thích hình:

Hình 2. 3: A Multithreaded Web server


18

 Ở đơn luồng , người điều phối (dispatcher), đọc các yêu cầu công việc đến từ
mạng gửi vào. Sau khi kiểm tra yêu cầu, nó chọn một luồng làm việc (worker
thread) không hoạt động (idle or blocked) (tức là bị chặn) và gửi cho chúng yêu
cầu (request), có thể bằng cách viết một con trỏ tới thông báo bằng một từ đặc
biệt được liên kết với mỗi luồng. Sau đó, người điều phối đánh thức nhân viên/
người xử lí đang ngủ, chuyển nó từ trạng thái bị chặn (blocked) sang trạng thái
sẵn sàng (ready).
 Khi nhân viên thức dậy, nó sẽ kiểm tra xem liệu yêu cầu có thể được đáp ứng từ
bộ đệm của trang Web (Web page cache), nơi mà tất cả các luồng đều có quyền
truy cập hay không. Nếu không có đữ liệu từ bộ đệm , nó sẽ bắt đầu thao tác đọc
để lấy các trang từ đĩa và thực hiện chặn cho đến khi hoàn thành thao tác trên
đĩa. Song song đó, khi luồng chặn đang hoạt động trên đĩa, một luồng khác được
chọn để chạy, có thể là bộ điều phối, để nhận thêm công việc hoặc có thể là nhân
viên khác hiện đã sẵn sàng chạy.
- Nhận xét: Mô hình này cho phép máy chủ được viết như một tập hợp các luồng
tuần tự (sequential thread). Mỗi web server có hai luồng là dispatcher thread và
worker thread có nhiệm vụ sau:
 Chương trình của người điều phối bao gồm một vòng lặp vô hạn để nhận yêu
cầu công việc và giao nó cho nhân viên.
19

 Mỗi mã của nhân viên bao gồm một vòng lặp vô hạn bao gồm việc chấp nhận
yêu cầu từ người điều phối và kiểm tra bộ nhớ cache của Web để xem trang đó
có xuất hiện hay không. Nếu có, nó sẽ được trả lại cho khách hàng và nhân viên
sẽ chặn chờ một yêu cầu mới. Nếu không, nó sẽ lấy trang từ đĩa và thực hiện như
trên.

Hình 2. 4: Sơ lược về code cho hình 2. 3 (a) Dispatcher thread. (b) Worker thread

- Ở đây, TRUE được giả định là hằng số 1. Ngoài ra, buf và page là để lưu giữ
một yêu cầu công việc và một trang Web tương ứng.
Vậy khi máy chủ web không có luồng thì thực thi như thế nào?
- Xem xét cách máy chủ Web có thể được viết khi không có luồng: Một khả
năng là để nó hoạt động như một luồng duy nhất. Vòng lặp chính của máy chủ
Web nhận một yêu cầu, kiểm tra nó và thực hiện nó để hoàn thành trước khi nhận
được yêu cầu tiếp theo. Trong khi chờ đĩa, máy chủ không hoạt động và không
xử lý bất kỳ yêu cầu gửi đến nào khác. Nếu máy chủ Web đang chạy trên một
máy chuyên dụng, như thường thấy, CPU chỉ đơn giản là không hoạt động trong
khi máy chủ Web đang đợi đĩa.
- Ta thấy, kết quả thực tế cho thấy là nhiều yêu cầu/giây có thể ít được xử lý
hơn. Do đó, các luồng đạt được hiệu suất đáng kể, nhưng mỗi luồng được lập
trình tuần tự, theo cách thông thường. Vì thế, ta có cần có giải pháp khác cho vẫn
đề này ở phần sau.
20

5. Giải pháp thứ ba Máy trạng thái hữu hạn

Ta đã thấy được hai thiết kế là một máy chủ Web đa luồng và một máy chủ Web
một luồng. Giả sử rằng các luồng không có sẵn nhưng các nhà thiết kế hệ thống nhận
thấy sự mất hiệu suất do luồng đơn là điều đáng quan tâm. Vậy nếu có sẵn phiên
bản không chặn (nonblocking) của lệnh gọi hệ thống đọc, thì có thể thực hiện được
cách tiếp cận thứ ba:

- Khi một yêu cầu đến, sẽ có một luồng duy nhất sẽ kiểm tra nó. Nếu nó có thể
được đáp ứng từ bộ nhớ cache là tốt, nhưng nếu không, hoạt động đĩa không
chặn sẽ được thực thi.
- Máy chủ ghi lại trạng thái của yêu cầu hiện tại trong một bảng (table) và sau đó
đi và nhận yêu cầu tiếp theo. Nó có thể là một yêu cầu về công việc mới hoặc
câu trả lời từ đĩa về một hoạt động trước đó. Nếu đó là công việc mới, công việc
đó được bắt đầu. Nếu đó là câu trả lời từ đĩa, thông tin liên quan sẽ được tìm nạp
từ bảng và câu trả lời được xử lý. Với I / O đĩa không chặn, một phản hồi có
thể sẽ phải ở dạng tín hiệu hoặc ngắt.
- Trong thiết kế này, mô hình '' quy trình tuần tự '' trong hai trường hợp đầu tiên
bị mất. Trạng thái của tính toán phải được lưu và khôi phục một cách rõ ràng
trong bảng mỗi khi máy chủ chuyển từ hoạt động theo yêu cầu này sang yêu cầu
khác. Trên thực tế, chúng tôi đang mô phỏng các luồng và ngăn xếp của chúng
một cách khó khăn. Một thiết kế như thế này, trong đó mỗi tính toán có một trạng
thái đã lưu, và tồn tại một số sự kiện có thể xảy ra để thay đổi trạng thái, được
gọi là máy trạng thái hữu hạn (finite-state machine).

Nhận xét: Phương pháp trên có thể giữ lại ý tưởng về các quy trình tuần tự thực
hiện các lệnh gọi chặn (ví dụ: cho I / O đĩa) và vẫn đạt được tính song song. Máy chủ
đơn luồng vẫn giữ được sự đơn giản của việc chặn các cuộc gọi hệ thống nhưng lại
21

loại bỏ hiệu suất. Cách trên đạt được hiệu suất cao thông qua song song nhưng sử
dụng các cuộc gọi và ngắt không chặn và do đó khó lập trình.

Câu 3: Thread Scheduling (phần LOAD SHARING)

Trả Lời:

1. Lập lịch luồng (Thread Scheduling)


- Ta thấy một ứng dụng có thể được triển khai dưới dạng một tập hợp các luồng hợp
tác và thực thi đồng thời trong cùng một không gian địa chỉ.
- Trên một bộ xử lý đơn, các luồng có thể được sử dụng như một công cụ hỗ trợ cấu
trúc chương trình và để chồng chéo I / O với quá trình xử lý. Ta thấy khi thực hiện
chuyển đổi luồng so với chuyển đổi quy trình thì lợi ích là chúng được thực hiện
với chi phí thấp. Tuy nhiên, toàn bộ thế mạnh của các luồng trở nên rõ ràng hơn
trong một hệ thống đa xử lý (multiprocessor system):

 Trong môi trường này, các luồng có thể được sử dụng để khai thác tính song
song (parallelism) thực sự trong một ứng dụng.
 Nếu các luồng khác nhau của một ứng dụng được chạy đồng thời trên các bộ
xử lý riêng biệt, thì có thể đạt được hiệu suất đáng kể.
 Tuy nhiên, có thể chỉ ra rằng đối với các ứng dụng yêu cầu sự tương tác đáng kể
giữa các luồng (tính song song trung bình / madium-grain parallelism)
 Sự khác biệt nhỏ trong việc lập lịch và quản lý luồng có thể có tác động đáng kể
đến hiệu suất .
- Trong số nhiều đề xuất về lập lịch luồng đa bộ xử lý và phân công bộ xử lý, có bốn
cách tiếp cận chung nổi bật:
 Chia sẻ tải
 Lập lịch nhóm
 Chỉ định bộ xử lý chuyên dụng
22

 Lập lịch động

2. Chia sẻ tải (Load sharing):


- Load sharing: các quá trình không được gán cho một bộ xử lý cụ thể. Một hàng
đợi toàn cục (global queue) gồm các luồng đã sẵn sàng được duy trì và mỗi bộ xử
lý, khi không hoạt động, sẽ chọn một luồng từ hàng đợi. Thuật ngữ load sharing
được sử dụng để phân biệt với load-balancing, trong đó công việc được phân bổ
trên một cơ sở.
- Đây là cách tiếp cận đơn giản nhất và trực tiếp nhất từ môi trường đơn xử lý.
- Lợi ích mang lại:
 Tải được phân bổ đồng đều trên các bộ xử lý: nó đảm bảo rằng không có bộ
xử lý nào đang nhàn rỗi trong khi công việc có sẵn để làm.
 Không cần thiết lập lịch tập trung hay qui về một chỗ: khi một bộ xử lý khả
dụng, quy trình lập lịch của hệ điều hành sẽ được chạy trên bộ xử lý đó để chọn
luồng tiếp theo.
 Hàng đợi toàn cục có thể được tổ chức và truy cập: bao gồm các lược đồ dựa
trên mức độ ưu tiên và các xem xét lịch sử thực thi hoặc các nhu cầu xử lý dự
kiến.
- Theo [LEUT90], ta có ba phiên bản load sharing khác nhau:
 Ai đến trước được phục vụ trước (Firsr-come-first-served/FCFS):

Hình 3. 1: Minh họa kĩ thuật Firsr-come-first-served


23

i. Ý nghĩa giống như tên của phiên bản này, quá trình nào đến trước sẽ
được thực thi trước hay nói chính xác hơn là quá trình nào yêu cầu CPU
trước sẽ được cấp phát CPU trước.
ii. Chế độ quyết định: Non-Preemptive (kĩ thuật không ưu tiên trước) là
khi ở trạng thái running, bộ xử lí sẽ thực thực thi cho đến khi hoàn thành
hoặc lệnh chặn (blocked) do I/O.
iii. Sử dụng hàng đợi FIFO:
 Tiến trình đi vào được vào cuối hàng đợi
 Tiến trình được được lựa chọn để xử lí lấy từ đầu hàng đợi
iv. Ưu điểm:
 Là phiên bản cơ bản nhất và dễ cài đặt nhất
 Không gặp vấn đề đói CPU (Starvation) có nghĩa các quá trình có độ ưu
tiên thấp sẽ không bao giờ được cấp CPU.
v. Nhược điểm:
 Như ví dụ ở trên đã phân tích thì thời gian chờ trung bình của
FCFS thường khá dài ( Nếu một process có burst-time rất dài đến
trước, khi đó các process có burst-time nhỏ sẽ phải chờ 1 khoảng thời
gian rất lâu mới đến lượt thực thi).
 Hiệu ứng nối đuôi (Convoy effect): lãng phí thời gian do CPU trống
quá nhiều, chúng ta cấp pháp CPU cho quá trình ngắn sau quá trình dài
dẫn đến thời gian chờ đợi trung bình càng cao (Average waiting time)
sau làm cho hệ thống CPU hoạt động không hiệu quả.
 Không hoạt động tốt trong hệ thống chia sẻ thời gian (Time-sharing
system): do mỗi người dùng (user) sẽ được hệ thống chia sẻ CPU trong
những khoảng thời gian đều đặn, mà điều này không thể thực hiện trong
FCFS bởi vì chỉ khi nào luồng hoàn tất thực thi hoàn toàn hoặc lệnh
chặn từ I/O thì CPU mới được cấp phát cho luồng tiếp theo.
24

 Non Preemptive: mức độ ưu tiên quá trình không quan trọng vì thế nếu
một quá trình có mức ưu tiên thấp đang thực thi với thời gian dài thì đột
nhiên một số quá trình có mức độ ưu tiên cao hơn xuất hiện (ví dụ như
ngắt để tránh sự cố hệ thống) thì với chế độ này thì mức độ ưu tiên cao
hơn vẫn phải chờ luồng có mức độ ưu tiên thấp kết thúc mới có thể thực
hiện vì thế có thể dẫn đến sập hệ thống.
 Số luồng nhỏ nhất trước (Smallest number of thread first): Hàng đợi sẵn sàng
được chia sẻ được tổ chức như một hàng đợi ưu tiên, với mức độ ưu tiên cao nhất
dành cho các luồng từ các công việc có số lượng luồng đột xuất nhỏ nhất. Các
công việc có mức độ ưu tiên ngang nhau được sắp xếp theo thứ tự công việc nào
đến trước. Như với FCFS, một luồng đã lên lịch sẽ được chạy đến khi hoàn thành
hoặc bị chặn.
 Ưu tiên công việc có số luồng nhỏ nhất không theo lịch (Preemptive smallest
number of threads first): Mức độ ưu tiên cao nhất được đưa ra cho các công
việc có số lượng không theo lịch đột xuất nhỏ nhất. Một công việc sắp đến với số
lượng luồng ít hơn một công việc đang thực thi sẽ đặt trước các luồng thuộc công
việc đã lên lịch.

Nhận xét: Qua các mô tả trên thì ta nhận thấy FCFS vượt trội hơn so với giải pháp còn
lại.

3. Nhược điểm của chia sẻ tải


 Nút thắt cổ chai: hàng đợi trung tâm chiếm một vùng bộ nhớ phải được truy cập
theo cách thực thi loại trừ lẫn nhau nếu nhiều bộ xử lý tìm việc cùng một lúc.
Đặc biệt khi bộ đa xử lý bao gồm hàng chục hoặc thậm chí hàng trăm bộ xử lý,
nguy cơ về nút cổ chai là vấn đề cần giải quyết.
25

Hình 3. 2: Hiện tượng nút thắt cổ chai


i. Nút thắt cổ chai: điều gì xảy ra một quá trình giữa CPU trong một khoảng
thời gian dài trong khi chúng ta cần rất nhiều quy trình nhỏ cần rất ít thời gian
để thực thi. Tuy nhiên ở đầu hàng đợi lại có một quy trình lớn cần một lượng
thời gian dài để thực thi, và chúng chỉ trả lại CPU khi quy trình kết thúc hoặc
lệnh chặn từ I/O. Khi đó toàn bộ hàng đợi phí sau đều bị trì hoãn.
 Các luồng được mở đầu không có khả năng tiếp tục thực thi trên cùng một bộ
xử lý. Nếu mỗi bộ xử lý được trang bị bộ nhớ đệm cục bộ, bộ nhớ đệm sẽ trở nên
kém hiệu quả hơn.
 Không chắc rằng tất cả các luồng của một chương trình sẽ có quyền truy cập
vào các bộ xử lý cùng một lúc. Nếu yêu cầu mức độ phối hợp cao giữa các luồng
của chương trình, các quá trình chuyển mạch liên quan có thể ảnh hưởng nghiêm
trọng đến hiệu suất.
Nhận xét: Mặc dù có những nhược điểm tiềm ẩn, chia sẻ tải là một trong những cách
được sử dụng phổ biến nhất trong các bộ đa xử lý hiện nay.

Câu 4: Semaphores
Trả lời:
26

1. Các cơ chế hoạt động chung:


Semaphore Một giá trị số nguyên được sử dụng để báo hiệu giữa
các quá trình.
Có 3 hoạt động thực thi (trong đó đều là các nguyên
tử): khởi tạo, tăng và giảm.
Thao tác giảm dần có thể dẫn đến việc chặn một quá
trình còn thao tác tăng dần sẽ dẫn đến việc bỏ chặn
một quá trình. Còn gọi là semaphone đếm (counting
semaphore) hoặc semaphore tổng quát (general
semaphore).
Semaphore nhị phân Một semaphore chỉ nhận các giá trị 0 và 1.
(Binary Semaphore)
Mutex Tương tự như một Semaphore nhị phân. Điểm khác biệt
cơ bản là tiến trình khóa mutex (locks mutex) đặt giá trị
bằng 0 còn mở khóa (unlocks mutex) thì đặt giá trị bằng 1
Biến điều kiện Một kiểu dữ liệu được sử dụng để chặn một luồng hay
(Condition Variable) một quá trình cho đến khi đáp ứng đúng điều kiện.
Khóa xoay vòng Thực hiện trên cơ chế loại trừ lẫn nhau. Là một quá
(Spinlocks) trình thực hiện trong một vòng lặp vô hạn.
Bảng 3. 1: Định nghĩa một số cơ chế hoạt động

2. Semaphore
- Semaphore do Edsger Dijkstra đề xuất vào năm 1965, là một kĩ thuật để quản lí
các quá trình. Đây là một trong những bước tiến quan trong đầu tiên trong việc giải
quyết các vấn đề của bộ xử lí.
27

Hình 4. 1: Edsger Dijkstra


- Nguyên lí hoạt động:
 Hai hay nhiều quá trình có thể hợp tác bằng cách chia sẻ các tín hiệu đơn giản sao
cho một quá trình bị buộc phải dừng lại ở một địa điểm xác định cho đến lúc nhận
lại một tín hiệu báo cụ thể.
 Một biến đặc biệt được sử dụng là semaphore dùng để chia sẻ giữa các luồng. Nó
được sử dụng để giải quyết vấn đề quan trọng và để đạt mức độ đồng bộ hóa quá
trình trong môi trình đa xử xử lí (multiprocessing environment).
 Ngoài việc khởi tạo thì semaphore chỉ được truy cập qua hai phép toán nguyên tử
tiêu chuẩn là: semSignal(s) và semWait(s)
i. semSignal(s): kí hiệu P, tiếng Hà Lan là proberen, nghĩa là “kiểm tra” (“to test”).
Dùng để truyền tín hiệu qua các semaphore.
ii. semWait(s): kí hiêu V, tiếng Hà Lan là verhogen, nghĩa là “tăng dần” (“to
increment”). Dùng để nhận tín hiệu qua các semaphore, nếu các tín hiệu này vẫn
chưa được truyền đi thì bộ xử lí sẽ tạm dừng cho đén khi quá trình truyền diễn ra.
- Các phép toán thực thi như sau:
28

Hình 4. 2: Semaphore nguyên thủy


 Một semaphore có thể được khởi tạo từ một giá trị số nguyên không âm
 semWait: nó làm nhiệm vụ giảm giá trị semarphore. Nếu kết quả nhỏ hơn 0 thì
quá trình thực thi semWait sẽ bị chặn.
 semSignal: nó làm nhiệm vụ tăng giá trị semarphore. Nếu kết quả nhỏ hơn hoặc
bằng 0 thì quá trình bị chặn bởi hoạt động chờ đợi, nếu không sẽ bỏ chặn.
 Ngoài 3 thao tác này thì không có cách nào để kiểm tra hoặc thực thi trên
semarphore.
- Ba hệ quả thú vị của Semaphore:
 Không có cách nào biết trước một tiến trình làm giảm một semaphore liệu nó sẽ bị
chặn hoặc không.
 Sau khi một tiến trình tăng semaphore và một tiến trình khác bị đánh thức, cả hai
tiếng trình chạy đồng thời. Lúc này không có cách nào khác để biết tiến trình nào,
nếu có, sẽ tiếp tục trên hệ thống đơn xử lí
 Khi tạo một semaphore thì chúng ta không biết liệu tiến trình khác có đang chờ hay
không, vì thế số lượng bỏ chặn có thể bằng 0 hoặc 1.
29

3. Semaphore nhị phân


- Semaphore nhị phân: các giá trị của senephore nhị phân chỉ nhận các giá trị trong
khoảng từ 0 đến 1. Trên một số hệ thống thì còn ược gọi là Mutex clocks (Khóa
loại trừ hổ tương), vì chúng đều cung cấp chế dộ loại trừ lẫn nhau. Điểm khác
biệt cơ bản đã được nhắc đến ở phần 1.
- Cách hoạt động:

Hình 4. 3: Semaphore nhị nhân nguyên thủy


 Một semaphore có thể khởi tạo bởi hai giá trị 0 hoặc 1.
 semWaitB: thực hiện kiểm tra giá trị semaphore truyền vào. Nếu bằng 1 thì sẽ gán
lại thành 0 và thực hiện chặn tiến trình semWaitB. Nếu bằng 0 thì chỉ cần thực thi
chặn.
 semSignalB: kiểm tra xem có tiến trình nào bị chặn không. Nếu có sẽ thực hiện gỡ
chặn . Nếu không có tiến trình nào bị chặn thì giá trị của semaphore được gán bằng
1.
30

4. Hạn chế về thời gian chờ bận (busy waiting)


- Hạn chế: vẫn còn sự chờ đợi bận gây lãng phí thời gian của CPU, gây ra hiệu suất
thấp nên cần một giải pháp hàng đợi (queue) được sử dụng.
- Đối với các semaphores đếm và semaphores nhị phân, một hàng đợi được sử
dụng để giữ các tiến trình đang đợi trên semaphore. Thứ tự các tiến trình bị xóa
khỏi hàng đợi một cách công bằng nhất là nhập trước xuất trước (FIFO): Quá
trình bị chặn lâu nhất sẽ được giải phóng khỏi hàng đợi trước. Khi đó một
semaphore sử dụng phương pháp này được gọi là semaphore mạnh. Một
semaphore không xác định thứ tự của các các tiến trình bị xóa khỏi hàng đợi là một
semaphore yếu.

Hình 4. 4: Cơ chế hoạt động Semaphore


- Hình là một ví dụ về hoạt động của một semaphore mạnh. Ở đây các quả trình A,
B và C phụ thuộc vào kết quả từ quá trình D. A đang chạy (1): B, C và D đã sẵn
sàng; và số đếm semaphore là 1. Khi A đưa ra lệnh semWait trên semaphore s,
semaphore giảm xuống 0 và A có thể tiếp tục thực thi: sau đó nó tham gia lại hàng
31

đợi sẵn sàng.Kế tiếp B chạy (2), cuối cùng đưa ra lệnh semWait, và bị chặn, cho
phép D chạy (3). Khi D hoàn thành một kết quả mới, nó đưa ra một lệnh
semSignal, cho phép B di chuyển đến hàng đợi sẵn sàng (4). D tham gia lại hàng
đợi sản sàng và C bắt đầu chạy (5) nhưng bị chặn khi nó đưa ra một lệnh semWait.
Tương tự, A và B chạy và bị chặn trên semaphore, cho phép D tiếp tục thực hiện
(6), Khi D có kết quả, nó sẽ đưa ra một semSignal, chuyển C đến hàng đợi sẵn
sàng. Các chu kì sau của D sẽ giải phóng A và B khỏi trạng thái Bị chặn.

-
32

PHỤ LỤC

Câu 1:

I. Hệ thống nhúng (Embedded Operating Systems)


- Bảng so sánh Hệ điều hành tiêu chuẩn và Hệ điều hành nhúng:

Đặc điểm Hệ điều hành tiêu chuẩn Hệ điều hành nhúng

Thực thi Chạy trên nhiều ứng dụng Chạy trên duy nhất một ứng
dụng

Nhiệm vụ Mục đích sử dụng chung, giải Mục đích sử dụng riêng biệt,
quyết tất cả các nhiệm vụ cụ thể

Phân phối Hệ điều hành và các ứng Hệ điều hành và các ứng dụng
ứng dụng dụng được phân phối riêng được phân phối dưới dạng
biệt một hình ảnh, giao diện duy
nhất

Xử lí CPU CPU và MCU

Bảng 1- 1: So sánh Hệ điều hành tiêu chuẩn và hệ điều hành nhúng


- Phân tích ứng dụng thực tế của Hệ thống nhúng:
 Hệ thống túi khí của xe ô tô: có bộ vi xử lí cảm biến (gia tốc, va chạm, áp suất
sườn, phanh, con quay hồi chuyển), tất cả các cảm biến kết nối với bộ điều khiển
túi khí. Khi va chạm xảy ra, chúng sẽ gửi cảnh báo đến khiến túi khí bung ra. Cảm
biến chứa một hệ điều hành nhúng cho phép chúng thực hiện các tác vụ trên.
33

Hình 1- 1: So sánh Hệ điều hành tiêu chuẩn và hệ điều hành nhúng


 Nhà thông minh (Smart Home): một hệ thống nhà đang trở nên phổ biến của thế
giới. Ở đó, ngôi nhà có thẻ được một máy tính trung tâm hoặc một máy tính đa
năng hay một hệ thống nhúng điều khiển các thiết bị như hệ thống ánh sáng, đèn,
hầm giữ xe, máy sưởi, cửa, …

2. Hệ điều hành thời gian thực (Real-time Operating Systems).


- Ví dụ Tính kịp thời: Tác giả Michael J. Pont viết trong chương 6: Meeting real-
time constraints [8]

Hình 1- 2: Mô hình ứng dụng điều khiển bay tự động


34

“Như ví dụ sau, hãy xem sét ứng dụng điều khiển bay tự động. Chúng ta giả sử rằng,
phi công đã nhập vào hướng lộ trình cần thiết, khi đó, hệ thống phải đưa ra những
thay đổi thường xuyên và ổn định cho cánh lái hướng, cánh lái độ cao, cánh liệng và
động cơ (ví dụ như vậy) để giữ cho máy bay đi theo lộ trình ấy.
Một đặc điểm quan trọng của hệ thống nhúng là phải xử lý đầu vào và đưa ra kết quả
đầu ra thật nhanh, theo đơn vị thời gian được đo bằng ms. Đối với trường hợp này,
thậm chí một khoảng trễ nhỏ trong thay đổi cánh lái hướng (ví dụ như thế) có thể gây
ra cho máy bay những dao động không mong muốn, đi vào các trạng thái cực đoan
hoặc thậm chí bị rơi. Tuy nhiên, để có thể giúp hệ thống bay tự động như vậy được
chứng nhận và đi vào sử dụng, thì việc đảm bảo rằng quá trình xử lý đã ‘nhanh nhất
mà chúng tôi có thể’ không thỏa mãn được các nhà chức năng. Trong trường hợp này,
cũng như với rất nhiều các ứng dụng thời gian thực khác, tính năng trọng yếu là khả
năng xử lý tiền định. Điều đó có nghĩa rằng, trong rất nhiều các hệ thống nhúng thời
gian thực, chúng ta cần có khả năng để đảm bảo rằng từng chức năng riêng biệt sẽ
luôn luôn được hoàn thành trong 2 ms (ví dụ như thế). Nếu quá trình xử lý không đáp
ứng đặc tính kỹ thuật này, thì ứng dụng không chỉ đơn thuần là chậm hơn những gì mà
chúng ta muốn, mà là – chúng đã vô dụng”
Như vậy, ngoài độ chính xác thì còn cần đúng thời điểm, trong khung thời gian cho
trước mà khung giờ này cần phải đủ nhanh để đảm bảo tính tức thời với môi trường
mà hệ thống tương tác.
- Ví dụ Tính chính xác:
Một cánh tay Robot thực hiện quá trình gỡ bom thì không được có sự chênh lệch
khoảng thời gian nào, độ chính xác gần như tuyệt đối, nếu có sự chênh lệch dù là nhỏ
nhất, trong trường hợp vi phạm, trái bom bị kích nổ thì coi như thất bại.

Câu 2:

Ta có một bảng so sánh các mô hình:


35

Mô hình Đặc điểm

Đơn luồng Không song song, lời gọi hệ thống


dừng

Đa luồng Song song, lời gọi hệ thống dừng

Máy trạng thái hữu hạn Song song, lời gọi hệ thống không
dừng

Bảng 2- 1: Bảng so sánh các cách xây dựng máy chủ

Câu 3:

I. Các ví dụ thực tế:

1. Lên lịch FCFS

Hình 3- 1: Minh họa lên lịch FCFC


36

Hình 3- 2: Hình 3- 1: Minh họa lên lịch FCFC

- Một ví dụ thực tế về việc lên lịch FCFS là mua vé tại một rạp chiếu phim hay
tính tiền tại quầy trong siêu thị. Ta thấy nếu có nhiều khách hàng thì họ sẽ
đứng thành một hàng chờ, khi đó người đến trước sẽ đứng ở đầu hàng, và sẽ
đứng liên tiếp đến cuối hàng đợi. Nhân viên sẽ phục vụ và cung cấp vé cho người
đầu tiên trước và lần lượt cho đến cuối hàng, khi đó người đến trước sẽ được
phục vụ trước. Đây cũng chính là nguyên lí thực thi của FCFS.

2. Nút thắc cổ chai


- Tuy nhiên, có một vấn đề xảy ra ở đây là nếu người đầu tiên mua đến 10 vé cho cả
nhóm bạn thì khi đó thời gian để phục vụ là quá dài trong khi những người đến sau
chỉ mua 1 đến 2 vé nhưng phải chờ trong thời gian khá lâu. Nếu hôm đó là ngày
thường thì có lẽ sẽ không gây ra quá nhiều phiền phức, nhưng nếu ngay những
ngày lễ, hay những ngày cuối tuần thì lượng khách sẽ tăng đột biến, lúc này sẽ gây
ra hiện tượng “tắc nghẽn” nếu những khách hàng đến trước mua mỗi lần quá
nhiều số vé để thời gian cho mỗi khách hàng quá lâu trong khi quá nhiều người
phía sau chỉ cần mua mỗi người 1 vé. Dần dần sẽ gây ra một hàng đợi dài không
thể phục vụ kịp.
37

3. Một số bài toán minh họa nhược điểm của phương pháp FCFS:

1. Bài toán 1: Cho dãy tiến trình và thời gian phục vụ tương ứng:
Process Burst Time (ms) Arrival Time
(Bộ xử lí) (Thời gian hoàn thành) (Thời gian đến)
P1 30 0
P2 5 0
P3 5 0

- Sơ đồ Gantt:
P1 P2 P3
0 30 35 40
- Thời gian chờ đợi trung bình của các tiến trình:
Average Waiting Time = (0 + 30 + 35) / 3 = 21,(6) ms

2. Bài toán 2: Giả sử các bộ xử lí P1, P2, P3 ở bài toán 1 có thời gian hoàn
thành như trên nhưng có thứ tự thực hiện khác nhau:
- Sơ đồ Gantt:

P2 P3 P1
0 5 10 40
- Thời gian chờ đợi trung bình của các tiến trình:
Average Waiting Time = (10 + 0 + 5) / 3 = 5 ms

Nhận xét:

- Ta thấy hai bài toán trên có các số liệu như nhau nhưng khi thay đổi thứ tự làm việc
của bộ xử lí thì thời gian chờ đợi trung bình của bài toán 2 nhỏ hơn 4 lần so với thời
gian chờ đợi trung bình của bài toán 1. Vì thế nên các giải pháp của FCFS không
38

phải hoàn toàn hiệu quả, nó còn phụ thuộc vào thời gian hoàn thành và thứ tự
đến.
- Ở bài toán 1 cũng cho ta thấy, Hiệu ứng nối đuôi (Convoy effect) gây lãng phí thời
gian do CPU trống quá nhiều, chúng ta cấp pháp CPU cho P1 trước dẫn đến P2, P3
chờ đợi khá lâu và làm cho thời gian chờ đợi trung bình càng cao.
39

TÀI LIỆU THAM KHẢO


Tiếng Việt

[1] Slideshare(2012), hệ điều hành, truy cập 14/11/2021,


https://www.slideshare.net/tuanvinh2610/h-iu-hnh

Tiếng Anh

[2] Abraham Silberschatz(2013), Peter Baer Galvin, Greg Gagne, Operating System
Concepts, Pearson.

[3] Andrew S.Tangenbaum(2014), Modern Operating Systems, Pearson Education.

[4] William Stalling (2015), Operating System – Internals and Design

Principles, 7th Edition, Boston: Pearson.

You might also like