6. 1. Giới
thiệu.
📌 Thiết bị I/O giúp nhập và xuất dữ liệu giữa người
dùng và máy tính.
📌 Thách thức: Các thiết bị này có tốc độ và chức
năng rất khác nhau.
📌 Mục tiêu của quản lý I/O: Đảm bảo hiệu suất,
ổn định và tương thích giữa phần cứng và phần
mềm.
Hình ảnh sơ đồ hệ
thống I/O trong
máy tính.
Hình ảnh các loại thiết bị ngoại vi
(chuột, bàn phím, ổ cứng, máy in, cáp
mạng...).
7. 2. Tầm Quan
Trọng của Quản
Lý Thiết Bị I/O.
Đảm bảo thiết bị có thể giao tiếp với
CPU mà không bị xung đột.
Tối ưu hóa tốc độ xử lý và giảm tải cho
CPU.
Giúp hệ thống hoạt động trơn tru và
hiệu quả.
Nội
dung:
8. 📌 Thách thức:
3. Sự Đa Dạng
của Thiết Bị
I/O.
✔ Thiết bị
nhập.
✔ Thiết bị
xuất.
✔ Thiết bị
lưu trữ.
✔ Thiết bị
mạng.
📌 Các thiết bị I/O có thể chia thành nhiều nhóm:
Một số thiết bị cần phản hồi nhanh
(chuột, bàn phím), số khác có thể hoạt
động chậm hơn (ổ cứng, máy in).
• Hệ điều hành phải có cơ chế điều phối
phù hợp với từng loại thiết bị.
9. 4. Hệ Thống
Con I/O trong
Kernel.
✔ Tách biệt phần cứng và phần mềm.
✔ Cung cấp giao diện lập trình thống
nhất (System Calls).
✔ Quản lý thiết bị hiệu quả hơn, tránh
xung đột.
Gợi ý hình ảnh minh họa: Sơ đồ
kernel và hệ thống con I/O.
10. 5. Các Dịch Vụ
Quản Lý I/O
Quan Trọng.
Lập lịch I/O (I/O Scheduling)
Bộ đệm (Buffering)
Bộ nhớ đệm (Caching):
Xử lý hàng đợi (Spooling):
STREAMS - Phương pháp tiếp cận hiện đại
🔹 Dịch tên (Name Translation)
11. 12.2 Hệ Thống I/O Trong Máy Tính
Trong phần này, chúng ta sẽ khám phá cách các
thiết bị ngoại vi, từ những thiết bị quen thuộc như
bàn phím và chuột đến các ổ cứng và card mạng
phức tạp hơn, giao tiếp với máy tính của chúng ta.
12. Phần Cứng I/O: Giới Thiệu Tổng Quan
Thiết Bị Lưu Trữ
Đĩa cứng (HDD) và ổ đĩa thể rắn
(SSD) là các thiết bị lưu trữ dữ
liệu quan trọng. Băng từ cũng
được sử dụng trong một số hệ
thống lưu trữ lớn.
Thiết Bị Truyền Tải
Kết nối mạng (Ethernet, Wi-Fi) và
Bluetooth cho phép máy tính giao
tiếp với các thiết bị và mạng khác.
Thiết Bị Giao Diện
Màn hình, bàn phím, chuột, loa và
microphone là các thiết bị giao
diện người dùng, giúp người dùng
tương tác với máy tính.
I. Các loại thiết bị I/O trong máy tính:
13. II.Cổng và Bus: Kết Nối Thiết Bị Với Máy Tính
Cổng (Port)
Cổng là điểm kết nối giữa các
thiết bị ngoại vi và máy tính
Bus
Bus là một nhóm dây điện và
giao thức cho phép truyền tải
tín hiệu giữa các thiết bị và
máy tính, giúp tiết kiệm
không gian và tài nguyên.
Daisy Chain
Daisy Chain là kiểu kết nối chuỗi các thiết bị, giúp tiết kiệm dây
cáp và đơn giản hóa kết nối, thường thấy trong các hệ thống nhiều
màn hình.
14. a. Các Loại Bus Phổ Biến Trong Máy Tính
PCIe
PCIe là bus phổ biến,
kết nối CPU và bộ nhớ
với các thiết bị nhanh
như card đồ họa và
SSD, cung cấp băng
thông cao.
Bus Mở Rộng
Bus mở rộng kết nối
các thiết bị chậm hơn
như bàn phím, chuột
và cổng USB, đảm bảo
kết nối ổn định.
SAS(Serial Attached SCSI)
SAS được sử dụng để
kết nối nhiều ổ đĩa với
nhau, thường dùng
trong các hệ thống lưu
trữ dữ liệu lớn.
15. b.Cấu Trúc của PCIe và Lane
Lane trong PCIe
Các bus như PCIe sử dụng "lane" để truyền tải dữ
liệu, với mỗi lane có thể gửi dữ liệu song song theo
hình thức truyền tải hai chiều.
Nhiều Lane
PCIe có thể sử dụng nhiều lane cùng lúc, ví dụ: x1,
x8, x16, để tăng tốc độ truyền tải dữ liệu.
Truyền Tải Dữ Liệu
Mỗi lane trong PCIe bao gồm 4 dây điện, hoạt động
song song hai chiều (full-duplex), giúp truyền tải dữ
liệu nhanh chóng.
16. III.Controller trong Hệ Thống I/O
Controller
Controller là mạch điện tử điều
khiển các cổng, bus hoặc thiết bị
trong hệ thống, giúp truyền tải
tín hiệu và xử lý dữ liệu.
1
Quản Lý Giao Tiếp
Controller giúp quản lý việc giao
tiếp với các bus như SAS hoặc
SATA, thực hiện các tác vụ như
xử lý lỗi và lưu trữ bộ nhớ đệm.
2
Tích Hợp
Nhiều thiết bị, như ổ đĩa cứng, có
một controller tích hợp bên trong
để tối ưu hiệu suất.
3
17. IV.Memory-Mapped I/O: Giao Tiếp Thông Qua Bộ Nhớ
1
Memory-Mapped I/O
Memory-Mapped I/O là ph ng th c giao ti p gi a CPU và b đi u khi n thi t b thông qua b
ươ ứ ế ữ ộ ề ể ế ị ộ
nh , giúp đ n gi n hóa và tăng t c quá trình giao ti p.
ớ ơ ả ố ế
2
Thanh Ghi Điều Khiển
CPU giao ti p v i b đi u khi n b ng cách đ c và ghi vào các thanh ghi này,
ế ớ ộ ề ể ằ ọ
thông qua các l nh chu n đ truy c p vào các thanh ghi đi u khi n trong
ệ ẩ ể ậ ề ể
không gian b nh .
ộ ớ
18. IV.Memory-Mapped I/O: Giao Tiếp Thông Qua Bộ Nhớ
4 Các thanh ghi điều khiển thiết bị bao gồm Data-in Register, Data-out Register, Status
Register và Control Register.
5
FIFO (First In, First Out)
Một số bộ điều khiển sử dụng FIFO để lưu trữ tạm thời dữ liệu, giúp bộ điều
khiển xử lý một lượng nhỏ dữ liệu đầu vào hoặc đầu ra, tăng hiệu suất.
6
Lợi ích của Memory-Mapped I/O
Tăng tốc độ và hiệu quả, giảm thiểu sự phức tạp khi sử dụng
các lệnh I/O, dễ dàng thao tác với các thanh ghi điều khiển
Thanh Ghi Điều Khiển
19. V.Polling và Nhược Điểm
1 Polling
Polling là một phương thức trong hệ
điều hành, trong đó CPU định kỳ kiểm
tra trạng thái của bộ điều khiển hoặc
thiết bị ngoại vi để xác định liệu có sự
kiện hoặc dữ liệu mới cần xử lý không.
2 Nhược Điểm
Host phải kiểm tra liên tục bit
busy, điều này có thể gây
lãng phí tài nguyên CPU, có
thể xảy ra vấn đề với các
thiết bị có dữ liệu đến liên tục
3 Ngắt thay thế Polling
Khi polling không hiệu quả, hệ thống có thể sử dụng ngắt
để bộ điều khiển thông báo cho CPU khi thiết bị sẵn sàng
phục vụ. Ngắt giúp giảm việc phải polling liên tục và cải
thiện hiệu suất CPU
20. VI.Cơ Chế Ngắt và DMA trong
Hệ Thống Máy Tính
Chúng ta sẽ khám phá cách các ngắt được quản lý để xử lý các sự
kiện quan trọng và cách DMA giúp giảm tải cho CPU trong quá
trình chuyển giao dữ liệu lớn.
21. 1.Cơ Chế Ngắt Cơ Bản
Interrupt-request line
Dây tín hiệu yêu cầu ngắt mà CPU kiểm tra sau mỗi
lệnh thực thi. Khi phát hiện tín hiệu yêu cầu ngắt từ bộ
điều khiển, CPU lưu trạng thái hiện tại và chuyển đến
routine xử lý ngắt tại một địa chỉ cố định trong bộ nhớ
Interrupt handler
Routine xử lý ngắt xác định nguyên nhân của ngắt,
thực hiện các xử lý cần thiết, khôi phục trạng thái
trước ngắt và tiếp tục thực thi các lệnh tiếp theo.
Cơ chế ngắt là một phần quan trọng của hệ thống máy tính, cho phép CPU phản ứng với các sự kiện bên ngoài một
cách hiệu quả. Interrupt-request line và interrupt handler là hai thành phần chính của cơ chế này.
22. a.Quy Trình Ngắt Cơ Bản
Kích hoạt ngắt
Bộ điều khiển kích hoạt ngắt bằng cách gửi tín hiệu
yêu cầu ngắt đến CPU.
CPU "catch" ngắt
CPU nhận ngắt và chuyển đến routine xử lý ngắt tương ứng.
"Clear" ngắt
Sau khi hoàn thành, ngắt được "clear" khi bộ điều
khiển được phục vụ xong.
Quy trình ngắt bao gồm ba bước chính: kích hoạt ngắt, CPU
"catch" ngắt và "clear" ngắt. Quá trình này đảm bảo rằng các sự
kiện quan trọng được xử lý một cách kịp thời và hiệu quả.
Activate
Catch
Clear
23. b.Quản Lý Ngắt Trong Hệ Thống Hiện Đại
1 Deferred interrupt handling
Trì hoãn xử lý ngắt trong quá trình xử lý quan
trọng để đảm bảo tính toàn vẹn của dữ liệu.
2 Dispatching interrupts
Xử lý ngắt hiệu quả mà không cần polling tất cả
các thiết bị, giúp giảm tải cho CPU.
3 Multilevel interrupts
Phân biệt ngắt cao và thấp ưu tiên, giúp hệ điều
hành phản hồi với độ khẩn cấp phù hợp.
4 Traps
Các ngắt xảy ra do lỗi hệ thống như lỗi chia cho
0 hoặc truy cập bộ nhớ không hợp lệ.
Trong hệ thống hiện đại, việc quản lý ngắt đòi hỏi các tính năng phức tạp hơn để đảm bảo hiệu suất và độ tin cậy.
Các tính năng như deferred interrupt handling, dispatching interrupts, multilevel interrupts và traps đóng vai trò
quan trọng trong việc quản lý ngắt.
24. c.Các Loại Ngắt
1 Nonmaskable interrupt
Ngắt không thể tắt, thường dùng cho các lỗi
không thể phục hồi như lỗi bộ nhớ.
2 Maskable interrupt
Ngắt có thể tắt trước khi thực hiện các lệnh quan
trọng để tránh bị gián đoạn.
3 Interrupt vector
Một bảng địa chỉ lưu trữ các địa chỉ của các
routine xử lý ngắt, giúp CPU nhanh chóng tìm
đến đúng routine mà không cần quét tất cả các
ngắt
25. 2.Direct Memory Access (DMA)
Giảm tải cho CPU
DMA giúp giảm tải công việc
cho CPU khi thực hiện các
chuyển giao dữ liệu lớn.
Bộ điều khiển đặc biệt
DMA sử dụng một bộ điều
khiển đặc biệt để thực hiện
chuyển giao dữ liệu trực tiếp
giữa bộ nhớ và thiết bị.
Không cần can thiệp của CPU
DMA thực hiện chuyển giao dữ
liệu mà không cần sự can thiệp
của CPU.
Direct Memory Access (DMA) là một cơ chế quan trọng giúp giảm tải cho CPU trong quá trình chuyển giao dữ
liệu lớn. DMA sử dụng một bộ điều khiển đặc biệt để thực hiện chuyển giao dữ liệu trực tiếp giữa bộ nhớ và thiết
bị mà không cần sự can thiệp của CPU.
26. Khởi Tạo DMA
CPU tạo command block, chứa thông tin nguồn và đích, cùng số
byte cần chuyển. Command block hỗ trợ scatter-gather, thực hiện
nhiều chuyển giao trong một lệnh. CPU ghi command block vào
bộ nhớ.
a.Quá trình DMA:
27. Hoạt Động của DMA
Ghi Địa Chỉ
CPU ghi địa chỉ command block vào bộ điều khiển DMA.
Tiếp Tục Công Việc
CPU tiếp tục công việc khác.
Chiếm Quyền Memory Bus
Bộ điều khiển DMA chiếm quyền sử dụng memory bus.
Chuyển Giao Dữ Liệu
DMA thực hiện chuyển giao dữ liệu trực tiếp, không
cần CPU can thiệp.
28. b.Tác Động của DMA Đến CPU và Bộ Nhớ
1
Memory Bus Seizing
Khi bộ điều khiển DMA chiếm memory bus,
CPU sẽ không thể truy cập vào bộ nhớ chính
trong một thời gian ngắn. 2 Cycle Stealing
Việc chiếm memory bus tạm thời có thể làm
giảm tốc độ tính toán của CPU.
3
Cải thiện hiệu suất hệ thống
Việc offload công việc chuyển giao dữ liệu cho
bộ điều khiển DMA giúp cải thiện tổng thể
hiệu suất hệ thống.
DMA có tác động đáng kể đến CPU và bộ nhớ. Mặc dù việc chiếm memory bus tạm thời có thể làm giảm tốc độ
tính toán của CPU, nhưng việc offload công việc chuyển giao dữ liệu cho bộ điều khiển DMA giúp cải thiện tổng
thể hiệu suất hệ thống.
29. 12.3 Giao diện I/O ứng dụng
Các kỹ thuật
cấu trúc và
giao diện
cho hệ điều
hành.
Cho phép các
thiết bị I/O
được xử lý
theo cách tiêu
chuẩn và
đồng nhất.
30. Cấu trúc I/O của kernel
Trừu tượng hóa, đóng gói và
phân lớp phần mềm.
Trình điều khiển thiết bị ẩn các khác
biệt giữa các bộ điều khiển thiết bị
khỏi hệ thống con I/O của kernel.
31. Đặc điểm của Thiết bị I/O
Luồng ký tự hoặc khối
Truy cập tuần tự hoặc ngẫu nhiên
Đồng bộ hoặc không đồng bộ
Chia sẻ được hoặc chuyên dụng
Tốc độ hoạt động
Đọc-ghi, chỉ đọc, ghi một lần
32. Truy cập ổ
đĩa và các
thiết bị
hướng khối
khác.
Truy cập thiết
bị như bàn
phím, chuột.
Cung cấp
quyền truy cập
vào bộ nhớ đĩa
thông qua một
mảng byte
trong bộ nhớ
chính.
Giao diện
socket cho
phép tạo, kết
nối, lắng nghe,
gửi và nhận
gói tin.
Truy cập đồng
hồ thời gian
trong ngày, bộ
định thời, hiển
thị đồ họa,
video và thiết
bị âm thanh.
12.3.1 Thiết bị Khối và Thiết bị Ký tự
I/O khối I/O luồng ký tự
Truy cập tệp ánh
xạ bộ nhớ
Ổ cắm mạng Các lệnh gọi hệ
thống đặc biệt
Các kiểu truy cập Thiết bị I/O
33. Thiết bị khối và thiết bị ký tự
1 2 3
Giao diện
thiết bị
khối: Các
lệnh read(),
write(),
seek().
I/O thô và
I/O trực tiếp:
Truy cập
thiết bị trực
tiếp mà
không qua
hệ thống tập
tin.
Truy cập tập
tin ánh xạ bộ
nhớ: Ánh xạ
tập tin vào
bộ nhớ,
truyền dữ
liệu khi cần
thiết.
34. 12.3.2 Thiết bị Mạng
Giao diện socket mạng
Trả về thông tin về socket nào có gói tin chờ nhận hoặc có chỗ
trống để gửi gói tin.
Hàm select() để quản lý socket
Tạo socket, kết nối, lắng nghe, gửi và nhận gói tin.
35. 12.3.3 Đồng hồ và Bộ định thời
Cung cấp
thời gian
hiện tại,
thời gian
đã trôi
qua.
Đặt bộ
định thời
để kích
hoạt hoạt
động X tại
thời điểm
T.
Bộ định
thời
khoảng
thời gian
lập trình
được: Tạo
ngắt sau
khoảng
thời gian
nhất
định.
36. 12.3.4 I/O Không Chặn và Bất Đồng Bộ
I/O
chặn
Luồng gọi bị tạm dừng cho đến khi
lệnh gọi hệ thống hoàn thành.
I/O
không
chặn
Lệnh gọi hệ thống trả về ngay lập tức
với số byte đã truyền.
Lệnh
gọi hệ
thống
bất
đồng bộ
Trả về ngay lập tức, hoàn thành I/O
vào thời điểm tương lai.
37. 12.3.5 I/O Vector
I/O Vector
(Vectored
I/O): Lệnh
gọi hệ
thống
readv của
UNIX.
Tính
nguyên tử
của I/O
Vector:
Đảm bảo
tất cả các
hoạt động
I/O được
thực hiện
mà không
bị gián
đoạn.
Phương pháp
scatter-gather:
Truyền dữ
Liệu từ nhiều
bộ đệm
thông qua
một lệnh gọi
hệ thống
duy nhất.
38. 12.4 Hệ thống con I/O của Kernel
1. Chức năng
Cung cấp các dịch vụ liên quan đến I/O, tối
ưu hóa hiệu suất và bảo vệ hệ thống.
2. Các dịch vụ chính:
o Lập lịch I/O
o Đệm (Buffering)
o Bộ nhớ đệm (Caching)
o Spooling
o Đặt trước thiết bị
o Xử lý lỗi
39. 12.4.1 Lập lịch I/O
o Lập lịch I/O là quá trình sắp
xếp thứ tự thực thi các yêu
cầu I/O nhằm tối ưu hiệu suất
hệ thống.
o Giúp giảm quãng đường di
chuyển của thiết bị (ví dụ:
cánh tay đĩa) và cải thiện thời
gian chờ trung bình.
1. Khái niệm và cách thức hoạt động
o Khi ứng dụng gửi yêu cầu I/O
chặn, hệ điều hành đưa yêu
cầu vào hàng đợi của thiết bị.
o Bộ lập lịch I/O sắp xếp thứ tự
phục vụ yêu cầu để tối ưu
hiệu suất.
o Có thể ưu tiên một số yêu cầu
quan trọng như truy xuất bộ
nhớ ảo.
40. • Kernel duy trì bảng trạng thái thiết bị, mỗi mục lưu thông tin loại
thiết bị, địa chỉ, trạng thái (bận, nhàn rỗi, không hoạt động).
• Nếu thiết bị bận, hệ điều hành theo dõi loại yêu cầu và các tham số
liên quan.
2. Quản lý trạng thái thiết bị
3. Cải thiện hiệu suất I/O
Ngoài lập lịch, hệ điều hành còn sử dụng:
• Buffering (đệm dữ liệu): Tăng tốc truyền dữ liệu giữa thiết
bị và bộ nhớ.
• Caching (bộ nhớ đệm): Lưu trữ dữ liệu thường dùng để truy
cập nhanh hơn.
• Spooling: Hỗ trợ xử lý nhiều yêu cầu I/O cùng lúc.
41. 12.4.2 Đệm (Buffering)
2. Mục đích sử dụng
o Giải quyết chênh lệch tốc độ
Khi tốc độ giữa bên gửi và bên nhận khác nhau.
Sử dụng double buffering để ghi dữ liệu xuống đĩa trong khi tiếp tục nhận dữ liệu
mới.
o Điều chỉnh kích thước truyền dữ liệu
Giúp phân mảnh và tái tạo dữ liệu
Ví dụ: Chia nhỏ dữ liệu lớn thành các gói tin nhỏ khi gửi, sau đó ghép lại khi
nhận.
o Hỗ trợ "copy semantics" trong I/O
Đảm bảo dữ liệu được ghi vào đĩa đúng với trạng thái khi ứng dụng gọi write().
Hệ điều hành sao chép dữ liệu từ bộ đệm ứng dụng vào bộ đệm kernel trước khi
ghi.
Tăng độ tin cậy nhưng có chi phí xử lý; có thể tối ưu bằng virtual memory
mapping và copy-on-write.
1. Khái niệm
o Là vùng nhớ trung gian giữa hai thiết bị hoặc giữa thiết bị và ứng dụng.
o Giúp tối ưu hóa tốc độ truyền dữ liệu, điều chỉnh kích thước dữ liệu, và đảm bảo tính nhất quán
khi ghi dữ liệu.
42. 12.4.3 Bộ nhớ đệm (Caching)
🧠 Caching (Bộ nhớ đệm - Lưu tạm để dùng lại)
- Mục đích: Tăng tốc độ truy cập dữ liệu bằng cách lưu
trữ tạm những dữ liệu được dùng thường xuyên.
- Ví dụ thực tế: Trình duyệt web lưu lại hình ảnh
logo Google bạn đã xem, lần sau mở lại sẽ nhanh
hơn vì không cần tải lại từ internet.Khi dùng: Khi
dữ liệu có thể được dùng lại nhiều lần.
📥 Buffering (Bộ nhớ đệm - Chờ xử lý xong)
- Mục đích: Giảm độ trễ và xử lý trơn tru khi tốc độ
nhập dữ liệu và xử lý không đồng bộ nhau.
- Ví dụ thực tế: Khi bạn xem video online, máy sẽ tải
trước một phần vào bộ nhớ tạm (buffer) để bạn
xem không bị giật.Khi dùng: Khi tốc độ đọc và ghi
không đều nhau, ví dụ: ghi dữ liệu vào đĩa, đọc file
lớn, truyền mạng...
43. 12.4.4 Spooling và Đặt trước Thiết bị
1. Spooling (Simultaneous Peripheral Operation On-Line)
Khái niệm: Spooling sử dụng bộ đệm để lưu trữ tạm thời đầu ra của thiết bị không thể xử
lý nhiều luồng dữ liệu đồng thời, như máy in.
Cách hoạt động:
1. Hệ điều hành ghi đầu ra của từng ứng dụng vào tệp spool trên bộ nhớ thứ cấp.
2. Khi máy in rảnh, hệ thống xếp hàng tệp spool và gửi đến máy in từng tệp một.
3. Một tiến trình daemon hoặc một luồng trong kernel chịu trách nhiệm
quản lý hàng đợi.
4. Người dùng có thể hiển thị hàng đợi, hủy lệnh in, tạm dừng in, v.v.
2. Đặt trước Thiết bị (Device Reservation)
Một số thiết bị (ổ băng từ, máy in) không thể xử lý đa luồng I/O đồng thời.
Hai cách tiếp cận để xử lý truy cập đồng thời:
1. Spooling: Điều phối các yêu cầu đầu ra bằng cách sử dụng bộ đệm.
2. Đặt trước thiết bị:
Một tiến trình cấp phát thiết bị nhàn rỗi và hủy cấp phát sau khi sử dụng.
Một số hệ điều hành giới hạn số tay cầm tệp mở trên mỗi thiết bị.
Windows hỗ trợ tham số trong OpenFile() để quy định quyền truy cập của luồng đồng thời khác.
Trách nhiệm tránh deadlock thuộc về ứng dụng.
44. 12.4.5 Xử lý lỗi
1. Hệ Điều Hành & Xử Lý Lỗi
Hệ điều hành sử dụng bộ nhớ được bảo vệ → Giúp chống lại lỗi phần cứng & ứng dụng.
Lỗi I/O có thể là tạm thời hoặc vĩnh viễn:
o Lỗi tạm thời: Mạng quá tải, đọc đĩa thất bại → Hệ điều hành thử lại.
o Lỗi vĩnh viễn: Hỏng bộ điều khiển đĩa → Khó phục hồi.
2. Cơ Chế Xử Lý Lỗi Của Hệ Điều Hành
Quy tắc chung: Lệnh hệ thống I/O trả về trạng thái thành công/thất bại.
UNIX sử dụng errno để trả về mã lỗi → Có khoảng 100 mã lỗi mô tả nguyên nhân lỗi.
3. Báo Cáo Lỗi Của Phần Cứng
Một số phần cứng cung cấp thông tin lỗi chi tiết, nhưng hệ điều hành không luôn hiển thị đầy đủ.
Thiết bị SCSI báo cáo lỗi theo 3 mức chi tiết:
1. Sense key: Bản chất lỗi (lỗi phần cứng, yêu cầu không hợp lệ, v.v.).
2. Additional sense code: Loại lỗi (tham số lệnh không hợp lệ, lỗi tự kiểm tra, v.v.).
3. Additional sense-code qualifier: Chi tiết lỗi cụ thể hơn (tham số nào bị lỗi, phần cứng nào hỏng, v.v.).
4. Nhật Ký Lỗi Của Thiết Bị SCSI
Nhiều thiết bị SCSI có nhật ký lỗi nội bộ → Máy chủ có thể truy xuất nhưng ít khi được sử dụng.
45. 12.4.6 Bảo vệ I/O
Tiến trình người dùng có thể
vô tình hoặc cố ý thực hiện
lệnh I/O bất hợp pháp, gây
gián đoạn hệ thống.
Hệ điều hành cần cơ chế bảo
vệ để ngăn chặn các thao tác
không hợp lệ này.
1. Mối Liên Hệ
Giữa Lỗi và
Bảo Vệ
2. Cơ Chế Ngăn
Chặn Lệnh I/O
Bất Hợp Pháp
Tất cả lệnh I/O đều là lệnh đặc
quyền → Người dùng không thể
thực hiện trực tiếp.
Thực hiện I/O phải thông qua
system call → Hệ điều hành
kiểm tra và xử lý yêu cầu.
Hệ điều hành chạy ở chế độ
giám sát (monitor mode) để
kiểm soát quá trình này.
46. 12.4.6 Bảo vệ I/O
Hạt nhân có thể cho phép cấp
phát bộ nhớ đồ họa theo tiến
trình.
Chỉ một tiến trình được sử
dụng một vùng bộ nhớ đồ họa
tại một thời điểm, đảm bảo
hiệu suất và bảo mật.
4. Cơ Chế
Khóa (Locking
Mechanism)
3. Bảo Vệ Bộ
Nhớ Ánh Xạ
I/O & Cổng I/O
Hệ thống bảo vệ bộ nhớ ngăn
chặn truy cập trái phép vào các
vùng nhớ ánh xạ I/O.
Tuy nhiên, một số phần mềm
(game, chỉnh sửa video, phát
video) cần quyền truy cập bộ
nhớ đồ họa để tăng tốc xử lý.
47. 12.4.7 Cấu trúc dữ liệu của Kernel
2. Hệ Điều Hành UNIX & Xử Lý I/O
UNIX hỗ trợ I/O cho tập tin người dùng, thiết bị thô (raw devices), tiến trình.
Mỗi loại I/O có cách xử lý khác nhau:
o Tập tin người dùng: Kiểm tra bộ nhớ đệm (buffer cache) trước khi đọc từ đĩa.
o Đĩa thô (raw disk): Yêu cầu kích thước đọc là bội số của sector, dữ liệu căn chỉnh
theo sector.
o Ảnh tiến trình (process image): Chỉ cần sao chép dữ liệu từ bộ nhớ.
UNIX sử dụng cấu trúc hướng đối tượng, trong đó:
o Bản ghi tập tin mở (open-file record) chứa bảng phân phối (dispatch table).
o Bảng phân phối giữ con trỏ đến các hàm xử lý phù hợp theo loại tập tin.
1. Kernel & Cấu Trúc Dữ Liệu I/O
Kernel quản lý trạng thái các thành phần I/O thông qua các cấu trúc dữ liệu nội bộ.
48. 3. Hệ Điều Hành Windows & Cơ Chế Truyền Thông Điệp
Windows sử dụng truyền thông điệp (message-passing) để xử lý I/O.
Quy trình thực hiện I/O trong Windows:
o Yêu cầu I/O → Chuyển thành thông điệp.
o Thông điệp gửi qua kernel → Đến trình quản lý I/O (I/O manager).
o I/O manager gửi đến trình điều khiển thiết bị (device driver).
o Mỗi bước có thể thay đổi nội dung thông điệp.
Ưu & Nhược Điểm:
o Tăng chi phí xử lý so với các kỹ thuật dựa trên dữ liệu chia sẻ.
o Đơn giản hóa thiết kế hệ thống I/O.
o Tăng tính linh hoạt trong quản lý I/O.
49. 12.4.8 Quản lý Năng lượng
Vấn đề năng lượng: Trung tâm dữ liệu tiêu thụ lượng điện khổng lồ, cả cho
vận hành máy chủ và hệ thống làm mát (đôi khi tốn gấp 2 lần điện năng máy
chủ).
Giải pháp tiết kiệm: Làm mát tự nhiên bằng không khí, nước hồ, năng
lượng mặt trời.
Vai trò của hệ điều hành:
o Điều chỉnh tải xử lý, di chuyển tiến trình, đưa hệ thống vào trạng thái
nhàn rỗi.
o Tắt CPU, thiết bị I/O không cần thiết để giảm tiêu thụ điện.
o Vô hiệu hóa các lõi CPU không dùng đến, kích hoạt lại khi cần.
1. Quản lý năng lượng trong trung tâm dữ liệu
2. Quản lý năng lượng trong thiết bị di động
Mục tiêu: Giảm tiêu thụ điện, kéo dài tuổi thọ pin.
Công nghệ Android sử dụng:
1. Power Collapse – Đưa thiết bị vào trạng thái ngủ sâu, tắt màn hình, loa, I/O, CPU về mức tiêu thụ thấp nhất.
2. Quản lý năng lượng cấp thành phần – Xây dựng cây thiết bị, theo dõi hoạt động phần cứng, tắt các thành phần
không sử dụng.
3. Wakelocks – Giữ thiết bị thức khi cần (chơi game, tải dữ liệu, cập nhật ứng dụng).
50. ACPI (Giao diện Cấu hình Nâng cao và Quản lý Năng lượng) giúp hệ điều
hành kiểm soát phần cứng, quản lý thiết bị động (hot-plug), xử lý lỗi và tối ưu
điện năng.
Khi hệ điều hành cần tắt thiết bị, nó gọi trình điều khiển → ACPI → phần
cứng thực hiện.
Kết luận
Quản lý năng lượng giúp tiết kiệm chi phí, kéo dài tuổi thọ thiết bị, giảm tác
động môi trường và tối ưu hiệu suất hệ thống.
3. Quản lý thiết bị & ACPI
52. 1
2
1. Chuyển đổi Yêu cầu I/O
thành Hoạt động Phần
cứng
Giới thiệu về cách hệ điều hành kết nối yêu
cầu I/O từ ứng dụng đến phần cứng.
Tầm quan trọng của quá trình này
trong việc quản lý thiết bị.
53. 🔹 UNIX:
- Không có phần cố định trong tên đường dẫn.
- Sử dụng bảng mount để ánh xạ tên đường dẫn với
thiết bị.
🔹 MS-DOS (FAT):
- Dùng tiền tố (C:, D:) để xác định thiết bị.
- Hệ điều hành ánh xạ trực tiếp đến địa chỉ cổng
phần cứng.
2. Ánh xạ Tên tệp đến Thiết bị
(MS-DOS vs UNIX)
54. 🔹 UNIX:
- Thiết bị được tích hợp vào hệ thống tệp chung.
- Quyền sở hữu và kiểm soát truy cập áp dụng cho
cả thiết bị và tệp.
🔹 MS-DOS:
- Không gian tên thiết bị tách biệt hệ thống tệp.
- Dễ dàng bổ sung tính năng như spooling (xử lý
hàng đợi in).
3. Cách Quản lý Không gian
Tên của Thiết bị
55. 4. Hệ điều
hành Hiện
đại và Quản
lý Thiết bị
• Hệ điều hành hiện đại linh hoạt trong xử lý I/O:
- Sử dụng bảng tra cứu nhiều cấp giữa ứng
dụng và phần cứng.
- Hỗ trợ trình điều khiển thiết bị động (tải khi
cần thiết).
• Cách hoạt động:
- Phát hiện phần cứng khi khởi động.
- Tải trình điều khiển theo yêu cầu hoặc khi
thiết bị được cắm vào.
56. 5. Vòng đời của Yêu
cầu Đọc (Read I/O)
Quy trình xử lý một yêu cầu đọc:
1) Tiến trình gọi read().
2) Hệ điều hành kiểm tra dữ liệu trong bộ
đệm.
3) Nếu không có, tiến trình chờ & yêu cầu
gửi đến trình điều khiển.
4) Trình điều khiển cấp phát bộ đệm &
gửi lệnh đến bộ điều khiển.
5) Bộ điều khiển thực hiện truyền dữ liệu.
6) Ngắt báo hiệu hoàn tất & dữ liệu được
trả về tiến trình.
57. 6. Hệ thống Ngắt và
Xử lý Hoàn tất I/O
Ngắt trong hệ thống I/O:
- Bộ điều khiển tạo ngắt khi dữ liệu sẵn sàng.
- Trình xử lý ngắt lưu dữ liệu, báo hiệu hoàn thành I/O.
- Hệ điều hành chuyển tiến trình từ trạng thái chờ sang sẵn sàng.
Ưu điểm:
- Giảm tải CPU, tăng hiệu suất xử lý.
59. Một stream là một kết nối full-duplex giữa driver thiết bị và tiến
trình người dùng.
STREAMS là một cơ chế trong UNIX System V và nhiều phiên bản
UNIX khác, cho phép ứng dụng lắp ráp các pipeline driver một
cách động.
1.Giới thiệu về STREAMS
60. 2.Cấu trúc của
STREAMS
-Một stream bao gồm:
•Stream head: Giao tiếp với tiến trình
người dùng.
•Driver end: Điều khiển thiết bị.
•Stream module: Được đặt giữa stream
head và driver end.
•Mỗi thành phần này chứa một cặp hàng
đợi (read queue và write qe).
Hình 12.15 Cấu trúc STREAMS.
61. 3.Chức năng của
STREAMS
Các module Dữ liệu Hỗ trợ kiểm soát luồn
Cung cấp chức năng xử lý
STREAMS và được đẩy
vào stream bằng lệnh
ioctl().
Truyền bằng cách thông
điệp giữa các hàng đợi
trong các module liền kề
Một hàng đợi có thể hỗ
trợ kiểm soát luồng bằng
cách đệm các thông điệp
và không chấp nhận thêm
thông điệp nếu không có
đủ không gian đệm
62. 4.Các lệnh hệ
thống trong
STREAMS •write(): Ghi dữ liệu thô vào stream.
•putmsg(): Cho phép tiến trình người dùng chỉ
định một thông điệp.
•read(): Đầu luồng nhận một thông điệp từ hàng
đợi liền kề và trả về dữ liệu thông thường.
•getmsg(): Trả về một thông điệp cho tiến trình
người dùng.
63. 1
2
5.Kiểm soát
luồng trong
STREAMS
Hàng đợi hỗ trợ kiểm soát luồng: Đệm các thông điệp và
không chấp nhận thông điệp nếu không có đủ không gian
đệm.
Thông điệp điều khiển: Trao đổi giữa các hàng
đợi trong các module liền kề để ngăn chặn tràn
hàng đợi.
64. 6.Lợi ích của
STREAMS
•Khung làm việc mô-đun: STREAMS cung cấp một khung làm việc cho cách tiếp
cận mô-đun và gia tăng trong việc viết trình điều khiển thiết bị và giao thức
mạng.
Hỗ trợ ranh giới thông điệp và thông tin điều khiển: STREAMS cho phép
hỗ trợ các ranh giới thông điệp và thông tin điều khiển khi giao tiếp giữa
các module
Sử dụng lại các module: Các module có thể được sử dụng
bởi nhiều luồng và thiết bị khác nhau
65. 12.7 HIỆU SUẤT
1. I/O và Hiệu Suất 5. Cải Thiện Hiệu Suất I/O
2. I/O theo Lập Trình vs I/O Điều
Khiển Bằng Ngắt
3. Lưu Lượng Mạng và I/O
4. Giảm Tải Cho CPU với Kênh I/O
7. Tiến Bộ của Thiết Bị I/O
6. Triển Khai Chức Năng I/O
8. Hiệu Suất I/O và Độ Trễ
Mạng
66. Mục tiêu cải
thiện
Ảnh hưởng của I/O
Chuyển đổi ngữ cảnh
trong I/O tốn kém, tạo
gánh nặng cho CPU và
bộ nhớ.
1. I/O và hiệu
suất
. I/O ảnh hưởng lớn đến hiệu
suất hệ thống, gây áp lực lên
CPU, bộ nhớ đệm và cơ chế xử
lý ngắt.
67. 2. I/O theo lập trình
với I/O điều khiển
ngắt
Tiêu chí I/O theo lập trình I/O điều khiển bằng ngắt
Hiệu quả Tốt khi trạng thái chờ bận ít, chi phí
ngắt và chuyển đổi ngữ cảnh thấp
Tốt khi có nhiều ngắt, giúp tiết kiệm tài
nguyên CPU trong thời gian chờ
Tài nguyên
CPU
Tiêu tốn tài nguyên CPU do phải
kiểm tra trạng thái thiết bị liên tục
Tiết kiệm tài nguyên CPU, CPU chỉ làm
việc khi có ngắt
Độ trễ
Có thể gây độ trễ cao nếu thiết bị
chậm
Thích hợp với thiết bị chậm, giảm độ
trễ khi chờ đợi sự sẵn sàng của thiết bị
Chi phí
ngắt
Không có chi phí ngắt Chi phí ngắt cao, tốn tài nguyên khi xử
lý ngắt nhiều
Ứng dụng
phù hợp
Các thiết bị I/O nhanh, ít yêu cầu
ngắt
Các hệ thống với thiết bị I/O chậm, có
số lần ngắt nhiều
68. 3. Lưu lượng và
I/O
Mạng tạo ra nhiều lần chuyển
đổi ngữ cảnh khi truyền dữ liệu
giữa máy tính, làm giảm hiệu
suất I/O.
69. 4. Giảm Tải Cho
CPU với Kênh
I/O
Sử dụng bộ xử lý I/O
(kênh I/O) giúp giảm tải
cho CPU chính và duy trì
luồng dữ liệu ổn định.
Hình 12.16 Giao tiếp giữa các máy tính.
70. 5. Cải
thiện hiệu
suất I/O
Giảm số lần chuyển đổi ngữ cảnh.
Giảm số lần sao chép dữ liệu trong bộ nhớ khi truyền dữ liệu giữa thiết bị và ứng
dụng.
Giảm tần suất ngắt bằng cách sử dụng các lần truyền dữ liệu lớn hơn, bộ điều
khiển thông minh và kỹ thuật thăm dò (polling) nếu có thể hạn chế trạng thái chờ
bận (busy waiting).
Tăng khả năng xử lý đồng thời bằng cách sử dụng các bộ điều khiển hỗ trợ DMA
hoặc kênh I/O để giảm tải việc sao chép dữ liệu đơn giản khỏi CPU.
Chuyển một số thao tác xử lý cơ bản vào phần cứng, cho phép chúng hoạt động
đồng thời với CPU và bus.
Cân bằng hiệu suất giữa CPU, bộ nhớ, bus và I/O, vì nếu một trong số chúng bị
quá tải, các thành phần khác có thể bị gián đoạn hoặc nhàn rỗi.
71. 1 2 3
6.Triển Khai Chức
Năng I/O
Kiểm tra
tính xác
thực của
nguồn
thông tin.
Sử dụng
công cụ
kiểm tra
thông tin để
đảm bảo
tính chính
xác.
Nhận diện
và tránh
thiên vị
trong quá
trình xử lý.
72. 7. Tiến Bộ của Thiết Bị I/O
Các thiết bị bộ nhớ không bay hơi (NVM) có tốc độ ngày càng cao, yêu
cầu các hệ thống I/O và thuật toán tối ưu để tận dụng tối đa tốc độ.
73. 8. Hiệu Suất I/O và Độ Trễ
Mạng
Độ trễ mạng có thể
làm giảm hiệu suất
I/O, tạo thêm "thuế"
hiệu suất cho hệ
thống.