Phần mềm I/O trong OS Thành phần I/O subsystem của OS cung cấp các dịch vụ liên quan đến I/O cho ứng dụng và một số thành phần khác của kernel Các trình điều khiển thiết bị device dr
Trang 11
I/O System
I/O subsystem và các trình điều khiển
Phần cứng I/O
Giao diện I/O cho ứng dụng
Hiệu suất I/O
SinhVienZone.com https://fb.com/sinhvienzonevn
Trang 2Phân loại chung các thiết bị I/O
Thiết bị lưu trữ (storage devices) như đĩa, băng từ
Thiết bị truyền dữ liệu (transmission devices) như
network card, modem; và
Thiết bị giao diện người-máy (human-interface devices) như màn hình, bàn phím, chuột
Trang 3Interface
Internals
SinhVienZone.com https://fb.com/sinhvienzonevn
Trang 4Phần mềm I/O trong OS
Thành phần I/O subsystem của OS cung cấp các dịch vụ liên quan đến I/O cho ứng dụng và một số thành phần khác của kernel
Các trình điều khiển thiết bị (device driver) cung cấp đến I/O subsystem một giao diện để truy cập thiết bị Ví dụ:
Hàm để đọc một disk block (đĩa)
Hàm để ghi một chuỗi ký tự (printer)
Trang 5Vấn đề khi thiết kế driver
Trường hợp mỗi driver có một
giao diện khác nhau đối với OS
Để giao diện đến driver mới sẽ
phải tốn công lập trình mới
Trường hợp mọi driver có cùng
một (hoặc một số ít) loại giao
diện đối với OS
Dễ dàng gắn driver mới nếu
nó tuân theo (conform) giao
diện đã định
From Tanenbaum
SinhVienZone.com https://fb.com/sinhvienzonevn
Trang 6Giao diện driver đồng nhất
Các driver phải theo (conform) một giao diện được định nghĩa trước Do đó người thiết kế driver biết trước
sẽ phải cung cấp các hàm nào cho phần còn lại của OS
sẽ được phép gọi các hàm nào của kernel (vd kmalloc, cài đặt IRQ handler…)
Có hai loại driver chủ yếu: block driver (vd đĩa) và
character driver (vd printer)
Trang 77
Phần cứng I/O
Các thành phần chính
Điểm kết nối vật lý – nơi kết nối giữa thiết bị I/O và hệ thống máy tính
Port (connection point)
Serial port
…
Bộ điều khiển
SinhVienZone.com https://fb.com/sinhvienzonevn
Trang 8Daisy chain bus arbitration
Trang 99
Tổ chức phần cứng I/O trong hệ thống PC
IDE host bus adapter
SCSI host bus adapter
IDE disk
controller
SCSI disk controller
SinhVienZone.com https://fb.com/sinhvienzonevn
Trang 10Điều khiển thiết bị I/O
Trên device controller có
CPU
control reg status reg input reg output reg
device Device controller
Trang 1111
Giao tiếp giữa CPU và thiết bị I/O
I/O code và device controller có thể ‘nói chuyện’ được với nhau bằng kỹ thuật
Mỗi thanh ghi được kết nối với một địa chỉ nhớ như thể nó là một
ô nhớ vật lý
Dùng lệnh truy cập bộ nhớ (không dùng được lệnh I/O) để tác động lên các thanh ghi của controller
SinhVienZone.com https://fb.com/sinhvienzonevn
Trang 12Một số I/O port address trong hệ thống PC
controller controller
controller
Trang 1313
Các kỹ thuật thực hiện I/O (1)
SinhVienZone.com https://fb.com/sinhvienzonevn
Trang 14Các kỹ thuật thực hiện I/O (2)
Kỹ thuật I/O dùng polling và programmed I/O
polling: I/O code chờ thiết bị sẵn sàng bằng cách liên tục (như bằng cách dùng vòng lặp) kiểm tra tình trạng của thiết bị
programmed I/O: khi thiết bị sẵn sàng, I/O code gửi lệnh, và
đọc/ghi dữ liệu thông qua các thanh ghi của thiết bị
While (STATUS == BUSY);
// wait until device is not busy Write data to DATA register
Write command to COMMAND register
(Doing so starts the device and executes the command) While (STATUS == BUSY);
// wait until device is done with your request
Trang 1515 13.2.1
Các kỹ thuật thực hiện I/O (3)
Ví dụ driver đọc dữ liệu:
Để đọc, vd word dữ liệu, từ một thiết
bị I/O, driver thiết lập một bit (bit 1) của thanh ghi điều khiển (control
register) để gửi lệnh đọc đến I/O controller
I/O controller đọc word dữ liệu từ thiết
bị I/O, xóa bit điều khiển (bit 0)
Driver phải liên tục đọc status bit
(polling) để kiểm tra trạng thái thiết bị I/O
Khi I/O controller sẵn sàng, driver đọc
word dữ liệu từ thanh ghi dữ liệu (data-in register)
SinhVienZone.com https://fb.com/sinhvienzonevn
Trang 16Interrupt
Polling
Interrupt
Trang 1717
Bảng vector ngắt trên Pentium processor
SinhVienZone.com https://fb.com/sinhvienzonevn
Trang 18Các kỹ thuật thực hiện I/O (4)
CPU có một ngõ Interrupt Request (INTR), được kích
hoạt bởi thiết bị I/O
cho trình phục vụ ngắt (interrupt service routine hay interrupt
Trang 1919
Các kỹ thuật thực hiện I/O (5)
Kỹ thuật I/O dùng ngắt quãng và programmed I/O
I/O code gửi lệnh, và đọc/ghi dữ liệu thông qua các thanh ghi
của thiết bị (programmed I/O)
Khi thiết bị hoàn tất lệnh I/O thì sẽ gây ngắt đến CPU
SinhVienZone.com https://fb.com/sinhvienzonevn
Trang 20Các kỹ thuật thực hiện I/O (6)
Interrupt-driven I/O
CPU không poll mà I/O controller sẽ gây
ra ngắt quãng mỗi khi sẵn sàng cho tác
vụ I/O
Trong lúc thiết bị I/O thực thi lệnh, CPU
có thể thực thi công việc khác
Thích hợp cho các thiết bị I/O có tốc độ
không cao (keyboard, mouse)
X
X
Trang 2121
Các kỹ thuật thực hiện I/O (7)
Polling / interrupt-driven I/O với programmed I/O đều tiêu tốn thời gian xử lý của CPU bởi vì CPU phải thực thi
‘ programmed I/O ’, tức là copy dữ liệu giữa memory và thanh ghi dữ liệu của thiết bị
SinhVienZone.com https://fb.com/sinhvienzonevn
Trang 22Các kỹ thuật thực hiện I/O (8)
Kỹ thuật I/O dùng direct memory access (DMA)
Các kỹ thuật polling và interrupt-driven I/Oø không thích hợp khi thực hiện di chuyển khối lượng lớn dữ liệu
Kỹ thuật DMA cần có phần cứng hỗ trợ đặc biệt, đó là DMA
controller
Kỹ thuật DMA thực hiện truyền dữ liệu trực tiếp giữa thiết bị I/O và bộ nhớ mà không cần sự can thiệp của CPU
Trang 2323 2.2.2, 13.2.3
Các kỹ thuật thực hiện I/O (9)
Direct Memory Access (DMA)
CPU gửi yêu cầu đến module DMA (=
DMA controller)
Module DMA chuyển một khối dữ liệu
giữa bộ nhớ và thiết bị I/O mà không
cần CPU can thiệp
Khi xong một tác vụ gửi/nhận thì phát
khởi một ngắt quãng
CPU chỉ tham gia vào giai đoạn khởi
đầu và kết thúc của việc truyền/nhận
dữ liệu
Trong khi đang truyền/nhận dữ liệu,
CPU có thể thực thi công việc khác
Thích hợp cho các thiết bị có tốc độ cao
(đĩa)
SinhVienZone.com https://fb.com/sinhvienzonevn
Trang 246 bước thực hiện DMA
IDE host bus adapter
Trang 2525
Giao diện I/O cho ứng dụng
I/O subsystem của OS cung cấp giao diện yêu cầu I/O cho ứng dụng
Giao diện được chuẩn hóa và đồng nhất
Ví dụ: một ứng dụng in tài liệu ra máy in mà không cần biết hiệu máy in, đặc tính máy in,…
Giao diện có dạng I/O system call
Device driver cung cấp giao diện được chuẩn hóa cho I/O subsystem nhằm giấu được sự khác biệt giữa các bộ điều khiển thiết bị (device controller) khác nhau
SinhVienZone.com https://fb.com/sinhvienzonevn
Trang 26Caáu truùc phaàn meàm I/O trong OS
Trang 27
27
Đặc tính của các thiết bị I/O
read&write
SinhVienZone.com https://fb.com/sinhvienzonevn
Trang 28Các dịch vụ I/O cho ứng dụng
Giao diện chuẩn và đồng nhất cho thiết bị
Thiết bị khối (block device)
Tác vụ: read, write, seek
Thiết bị kí tự (character device)
Tác vụ: get, put
Thiết bị mạng (network device)
Clock và timer
Cung cấp thời gian hiện tại, timer
Có thể lập trình được
Trang 2929
System call yêu cầu I/O
Blocking: process bị suspended cho đến khi I/O hoàn tất
Dễ dàng sử dụng
Không hiệu quả trong một số trường hợp
Nonblocking: I/O call returns as much as available
Ví dụ: data copy (buffered I/O)
Thường hiện thực với multithreading
Asynchronous: process vẫn thực thi trong lúc hệ thống đang thực hiện I/O
Khó sử dụng
I/O subsystem báo hiệu cho process khi I/O hoàn tất
SinhVienZone.com https://fb.com/sinhvienzonevn
Trang 3131
I/O subsystem (1)
• I/O subsystem hiện thực các kỹ thuật giảm overhead của hệ thống I/O và xử lý lỗi
Định thời các yêu cầu I/O
Các yêu cầu I/O xếp hàng tại các hàng đợi của mỗi thiết bị
Bảo đảm công bằng, hiệu suất cao
SinhVienZone.com https://fb.com/sinhvienzonevn
Trang 3333
Đệm dữ liệu (buffering): lưu dữ liệu tạm thời trong bộ
nhớ khi thực hiện I/O
Buffer là một vùng nhớ để lưu dữ liệu đang được truyền giữa hai thiết bị hay giữa thiết bị và ứng dụng
SinhVienZone.com https://fb.com/sinhvienzonevn
Trang 34I/O subsystem (tt)
• (tt)
Hỗ trợ thực hiện I/O hữu hiệu
trong trường hợp chênh lệch
về tốc độ hay kích thước dữ
liệu
Một quá trình đọc dữ liệu từ một modem rồi lưu vào đĩa Thay vì đọc từng
character (dùng read system call) từ modem và phải block đợi từng char thì
quá trình cung cấp một
n-char buffer trong user
space và gọi read n char;
khi buffer đầy quá trình sẽ được đánh thức
Trang 36I/O subsystem (3)
• (tt)
Xử lý lỗi (error handling)
Phân loại lỗi
Lỗi nhất thời (transient), vd mạng quá tãi
Lỗi lâu dài (permanent), vd disk controller hư
OS có thể phục hồi một số lỗi nhất thời
Vd thực thi lại (retry) lệnh send( ) gói dữ liệu vào mạng, nếu send( ) trước đó không thành công
Khi I/O system call không thành công, OS thường trả về thêm một mã lỗi (error code) cho biết thêm về nguyên nhân lỗi (vd lỗi phần cứng, timeout,…)
OS có thể duy trì nhật ký lỗi hệ thống (system error log) lưu các tường trình về lỗi
Trang 3737
Hiệu suất I/O (1)
Hiệu suất I/O ảnh hưởng lớn đến hiệu suất toàn hệ
thống I/O gây overhead do
CPU thực thi các lệnh của device driver và của kernel I/O code
Gây tải lên bus bộ nhớ khi copy dữ liệu giữa bộ nhớ và
controller, giữa kernel buffer và user buffer
Network traffic khiến tần suất chuyển ngữ cảnh cao
SinhVienZone.com https://fb.com/sinhvienzonevn
Trang 3939
Hiệu suất I/O (2)
Tăng hiệu suất I/O bằng cách giảm I/O overhead
Giảm số lần chuyển ngữ cảnh do I/O device interrupt
Giảm số lần copy dữ liệu giữa các buffer của thiết bị và quá trình
Giảm số lần ngắt quãng
Truyền khối dữ liệu lớn
Dùng các bộ controller thông minh
Dùng kỹ thuật polling nếu thời gian busy waiting nhỏ
SinhVienZone.com https://fb.com/sinhvienzonevn
Trang 40Tài liệu tham khảo
Operating Systems: Three Easy Pieces
Remzi H Arpaci-Dusseau and Andrea C Arpaci-Dusseau
Arpaci-Dusseau Books, Inc
January, 2014 (Version 0.8)