You are on page 1of 4

2.

PRINCIPLES OF I/O SOFTWARE


(Nguyên tắc)
A.Goals of I/O software: read & write (Mục tiêu)
● Device Independence
- Programs can access any I/O device: Chương trình có thể
truy cập mọi thiết bị vào ra và ko cần thông báo trước, các
hàm đó hoạt động đều tốt với ( Floppy, Hard drive, or CD -
ROM )
- Without specifying device in advance(Không chỉ định
trước thiết bị) ( Floppy, Hard drive, or CD - ROM )
- Một khái niệm quan trọng trong thiết kế phần mềm I/O được gọi là độc
lập của thiết bị. Điều đó có nghĩa là chúng ta sẽ có thể viết các chương
trình có thể truy cập bất kỳ thiết bị I/O nào mà không phải chỉ định thiết
bị trước. Ví dụ: một chương trình đọc tệp dưới dạng đầu vào sẽ có thể
đọc một tệp trên đĩa cứng, DVD hoặc trên thẻ USB mà không cần phải
sửa đổi cho từng thiết bị khác nhau. Và nó hoạt động với đầu vào đến
từ bất kỳ loại đĩa hoặc bàn phím và đầu ra sẽ đi đến bất kỳ loại đĩa
hoặc màn hình nào. Tùy thuộc vào hệ điều hành để chăm sóc các vấn
đề gây ra bởi thực tế là các thiết bị này thực sự khác nhau và yêu cầu
các chuỗi lệnh rất khác nhau để đọc hoặc viết.
● Uniform Naming
- Name of a file or device is a string or an integer
- Not depending(phụ thuộc) on which machine
Liên quan chặt chẽ đến tính độc lập của thiết bị là mục tiêu đặt tên thống nhất.
Tên của một tệp hoặc một thiết bị chỉ đơn giản là một chuỗi hoặc một số
nguyên và không phụ thuộc vào thiết bị theo bất kỳ cách nào. Trong Unix, tất
cả các đĩa có thể được tích hợp trong hệ thống phân cấp hệ thống tệp theo
những cách tùy ý để người dùng không cần phải biết tên nào tương ứng với
thiết bị nào. Ví dụ: một thanh USB có thể được gắn trên đầu thư
mục/usr/ast/sao lưu để sao chép tệp vào/usr/ast/backup/thứ hai sao chép tệp
lên thẻ USB. Theo cách này, tất cả các tệp và thiết bị đều được giải quyết
theo cùng một cách: bằng tên đường dẫn.
● Error Handling (Xử lí lỗi)
- Handle as close to the hardware as possible (- Xử lý càng
gần phần cứng càng tốt)
- Một vấn đề quan trọng khác đối với phần mềm I / O là xử lý lỗi. Nói
chung, các lỗi cần được xử lý càng gần với phần cứng càng tốt. Nếu bộ
điều khiển phát hiện ra lỗi đọc, nó sẽ cố gắng tự sửa lỗi nếu có thể.
Nếu nó không thể, thì trình điều khiển thiết bị nên xử lý nó, có lẽ bằng
cách cố gắng đọc lại khối. Nhiều lỗi chỉ là thoáng qua, chẳng hạn như
lỗi đọc gây ra bởi các đốm bụi trên đầu đọc và thường sẽ biến mất nếu
thao tác lặp lại. Chỉ khi các lớp dưới không thể giải quyết được vấn đề
thì các lớp trên mới được thông báo về vấn đề đó. Trong nhiều trường
hợp, việc khôi phục lỗi có thể được thực hiện một cách minh bạch ở
mức thấp mà không cần cấp trên biết về lỗi.
● Synchronous versus asynchronous (Đồng bộ so với không
đồng bộ)
- Blocked transfers vs. interrupt – driven(Chuyển giao bị
chặn so với gián đoạn - điều khiển)
- Vẫn còn một vấn đề quan trọng khác là việc chuyển giao đồng bộ
(chặn) so với không đồng bộ (điều khiển ngắt). Hầu hết các I/O vật lý là
không đồng bộ, CPU bắt đầu chuyển và tắt để làm một cái gì đó khác
cho đến khi ngắt đến. Các chương trình người dùng sẽ dễ dàng hơn
nhiều để viết nếu các hoạt động I/O đang chặn, sau khi một hệ thống
đọc gọi chương trình sẽ tự động bị đình chỉ cho đến khi dữ liệu có sẵn
trong bộ đệm. Tùy thuộc vào hệ điều hành để thực hiện các hoạt động
thực sự bị gián đoạn theo hướng điều khiển cho các chương trình
người dùng. Tuy nhiên, một số ứng dụng hiệu suất rất cao cần kiểm
soát tất cả các chi tiết của I/O, do đó, một số hệ điều hành tạo ra I/O
không đồng bộ có sẵn cho chúng.
● Bufferring ( Lưu vào bộ đệm)
- Data coming off a device cannot be stored in final
destination (Dữ liệu từ thiết bị không thể được lưu trữ ở
điểm đến cuối cùng)
- Một vấn đề khác cho phần mềm I/O là đệm. Thông thường dữ liệu đi ra
khỏi một thiết bị không thể được lưu trữ trực tiếp trong đích đến cuối
cùng của họ. Ví dụ, khi một gói đến ngoài mạng, hệ điều hành không
biết nơi đặt nó cho đến khi nó lưu trữ gói ở đâu đó và kiểm tra nó.
Ngoài ra, một số thiết bị có các ràng buộc thời gian thực nghiêm trọng
(ví dụ: các thiết bị âm thanh kỹ thuật số), do đó dữ liệu phải được đặt
vào bộ đệm đầu ra trước để tách rời tốc độ mà bộ đệm được lấp đầy từ
tốc độ mà nó được làm trống, Để tránh các bộ đệm. Bộ đệm liên quan
đến việc sao chép đáng kể và thường có tác động lớn đến hiệu suất
I/O.
● Sharable vs. dedicated devices(Thiết bị có thể chia sẻ so
với thiết bị chuyên dụng)
- Disks are sharable
- Tape drives would not be
- Khái niệm cuối cùng mà chúng tôi sẽ đề cập ở đây là các thiết bị chia
sẻ so với các thiết bị chuyên dụng. Một số thiết bị I/O, chẳng hạn như
đĩa, có thể được sử dụng bởi nhiều người dùng cùng một lúc. Không có
vấn đề gì được gây ra bởi nhiều người dùng có các tệp mở trên cùng
một đĩa cùng một lúc. Các thiết bị khác, chẳng hạn như máy in, phải
được dành riêng cho một người dùng cho đến khi người dùng đó kết
thúc. Sau đó, người dùng khác có thể có máy in. Có hai hoặc nhiều
người dùng viết các ký tự xen kẽ ngẫu nhiên vào cùng một trang chắc
chắn sẽ không hoạt động. Giới thiệu các thiết bị chuyên dụng (không
chia sẻ) cũng giới thiệu một loạt các vấn đề, chẳng hạn như bế tắc. Một
lần nữa, hệ điều hành phải có khả năng Hanfle cả hai thiết bị được chia
sẻ và chuyên dụng theo cách tránh các vấn đề.
B.Programed I/O

Figure 5-7. Steps in printing a string.


Figure 5-8. Writing a string to the printer
using programmed I/O.
C.Interrupt - Driven I/O

Figure 5-9. Writing a string to the printer using interrupt-driven


I/O. (a) Code executed at the time the print system call is
made. (b) Interrupt service procedure for the printer.
D.I/O Using DMA

Figure 5-10. Printing a string using DMA. (a) Code executed


when the print system call is made. (b) Interrupt service
procedure.

You might also like