
1
1
Nguyên lý hệ điều hành
Nguyễn Hải Châu
Khoa Công nghệ Thông tin
Trường Đại học Công nghệ
2
Hệvào/ra
Phần cứng
Giao diện vào/ra với ứng dụng
Hệvào/ra của nhân
Chuyển yêu cầu vào/ra thành thao tác
phần cứng
Streams
Các vấn đề vềhiệu năng
3
Phần cứng vào/ra
zCó rất nhiều loại thiết bịvào/ra
zCác khái niệm chung
zPort (cổng vào/ra)
zBus
zController
zCác vi lệnh điều khiển thiết bịvào/ra
zThiết bịvào/ra có địa chỉ được sửdụng bởi:
zCác lệnh vào/ra trực tiếp
zVào/ra thông qua ánh xạbộnhớ
4
Cấu trúc bus của máy PC
5
Một số địa chỉvào/ra của PC
6
Polling
zXác định trạng thái của thiết bị:
zcommand-ready (lệnh sẵn sàng?)
zbusy (bận?)
zError (lỗi?)
zThực hiện vòng lặp chờbận để chờvào/ra
với thiết bị

2
7
Interrupts (ngắt)
zThiết bịvào/ra kích hoạt đường yêu cầu ngắt
CPU
zBộthao tác ngắt nhận ngắt
zCPU có thểbỏqua hoặc làm trễviệc xửlý
một sốngắt
zVector ngắt giúp CPU tìm được hàm xửlý
ngắt
zDựa trên độ ưu tiến
zMột sốngắt là không che được (unmaskable)
zCơ chếngắt có thểdùng cho exceptions 8
Chu kỳvào/ra với ngắt
9
Bảng vector ngắt của BXL Intel
10
Truy cập bộnhớtrực tiếp
zThuật ngữ: Direct memory access (DMA)
zĐược sửdụng để tránh lập trình vào/ra với
dung lượng dữliệu lớn
zPhần cứng cần có: Bộ điều khiển DMA
zCPU truyền dữliệu trực tiếp giữa bộnhớvà
thiết bịvào/ra
11
Quá trình 6 bước thực hiện vào/ra
theo DMA
12
Giao diện vào/ra với ứng dụng
zCác hàm hệthống vào/ra của một thiết bị được
đóng gói trong các class chung
zTầng điều khiển thiết bị(device-driver layer) che
đi sựkhác biệt giữa các bộ điều khiển vào/ra
zCó nhiều loại thiết bị căn cứtheo các tiêu chí:
zCharacter-stream / block
zSequential / random-access
zSharable / dedicated
zSpeed of operation
zread-write / read only / write only

3
13
Cấu trúc vào ra của nhân
14
Đặc tính các thiết bịvào/ra
15
Các thiết bịblock và character
zCác thiết bịblock (ví dụ đĩa cứng):
zCác lệnh làm việc: read, write, seek
zCó thểthực hiện vào/ra theo chế độ raw I/O hoặc
thông qua truy cập hệthống tệp
zCó thểtruy cập qua tệp memory-mapped (ánh xạ
bộnhớ)
zCác thiết bịcharacter (ví dụbàn phím, chuột,
cổng COM):
zCác lệnh làm việc: get, put
zBổ sung thư viện cho phép làm việc theo dòng
(line) 16
Các thiết bịmạng
zCó thểlà thiết bịblock hoặc character
zUnix và Windows NT/9i/2000 có giao diện lập
trình socket
zTách biệt giao thức mạng với các thao tác mạng
zCó tính năng select
zNhiều cách tiếp cận vào/ra (pipes, FIFOs,
streams, queues, mailboxes)
17
Đồng hồ(clock) và timer
zCung cấp thông tin vềgiờhiện tại, giờ đã trôi
qua, timer
zNếu phần cứng clock/timer lập trình được:Có
thểtạo ngắt định kỳ(Cần cho các hệtime-
sharing)
18
Vào/ra blocking và nonblocking
zBlocking – Tiến trình treo đến khi vào/ra hoàn
thành
zDễhiểu, dễsửdụng
zKhông đủ đối với một sốloại yêu cầu vào/ra
zNonblocking – Hàm vào/ra trảlại kết quả
ngay không cần vào/ra hoàn thành
zGiao diện NSD, copy dữliệu có buffered vào/ra
zĐược cài đặt qua kỹthuật đa luồng
zTrảlại ngay số byte được đọc/ghi

4
19
Vào/ra không đồng bộ
zAsynchronous (không đồng bộ): Tiến trình
chạy trong khi vào/ra đang được thực hiện
zKhó sửdụng
zHệvào/ra gửi tín hiệu cho tiến trình khi vào/ra
hoàn thành
20
Hệvào/ra của nhân
zLập lịch
zMột sốyêu cầu vào/ra được phục vụthông qua
hàng chờvào/ra của từng thiết bị
zMột số HĐH cốgắng đảm bảo tính công bằng
zTạo vùng đệm lưu dữliệu trong bộnhớkhi
truyền dữliệu giữa các thiết bị:
zKhắc phục sựkhác nhau vềtốc độ của các thiết bị
zKhắc phục sựkhác nhau về độ dài gói dữliệu
zĐể duy trì ngữnghĩa copy
21
Tốc độ truyền dữliệu của các
thiết bịtrên Sun Enterprise 6000
22
Hệvào/ra của nhân
zCaching – Bộnhớtốc độ cao chứa các bản
copy của dữliệu
zDữliệu luôn là bản copy
zCải thiện đáng kểhiệu năng hệthống
zSpooling –Lưu dữliệu ra (output) cho một thiết
bị
zSửdụng khi thiết bịchỉphục vụ được một yêu cầu
tại một thời điểm
zVí dụ: Máy in
23
Hệvào/ra của nhân
zCung cấp khả năng sửdụng “độc quyền” một
thiết bị
zHàm hệthống: cấp phát và giải phóng thiết bị
zCơ chếchống bếtắc
24
Xửlý lỗi
zHĐH có thểkhôi phục lỗi gây ra do đọc đĩa,
thiết bị chưa sẵn sàng, ghi lỗi...
zKhi có lỗi vào/ra: Hàm điều khiển trảlại mã
lỗi
zHệthống có log ghi lại các lỗi vào/ra

5
25
Cấu trúc dữliệu của nhân
zNhân giữcác thông tin trạng thái cho các thành
phần của hệvào/ra, bao gồm bảng các mởtệp, kết
nối mạng, trạng thái các thiết bịcharacter
zNhiều cấu trúc dữliệu phức tạp để lưu vết các vùng
đệm, cấp phát bộnhớ, các khối nhớrỗi...
zMột số HĐH sửdụng phương pháp hướng đối
tượng và message-passing để cài đặt hệvào/ra
26
Cấu trúc vào/ra trong nhân UNIX
27
Chuyển đổi yêu cầu vào/ra
thành thao tác phần cứng
zGiảsửmột tiến trình đọc tệp từ đĩa cứng.
Các bước thực hiện như sau:
zXác định thiết bịchứa tệp
zBiến đổi tên tệp thành dạng biểu diễn của tệp trên
thiết bị
zĐọc dữliệu (vật lý) từ đĩa vào vùng đệm
zCho phép tiến trình được đọc dữliệu từvùng
đệm
zTrảlại điều khiển cho tiến trình
28
Thực hiện một yêu cầu vào/ra
29
STREAMS
zSTREAM – kênh liên lạc full-duplex giữa một
tiến trình của NSD và một thiết bị
zMột STREAM gồm có:
-STREAM head dùng để giao tiếp với tiến
trình của NSD
-driver end giao tiếp với thiết bị
-nSTREAM module giữa head và end (n≥0).
zMỗi module có một read queue và một
write queue
zMessage passing được sửdụng để truyền
thông giữa các queue 30
Cấu trúc STREAMS