Tải bản đầy đủ (.pdf) (52 trang)

ATHDH l03 nhom5 IO processing

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.59 MB, 52 trang )

NHẬN XÉT CỦA GIẢNG VIÊN
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………



i


MỤC LỤC
MỤC LỤC ................................................................................................................. ii
DANH MỤC HÌNH ẢNH ....................................................................................... iv
DANH MỤC TỪ VIẾT TẮT .................................................................................... v
LỜI NÓI ĐẦU ......................................................................................................... vi
Chương 1 TỔNG QUAN VỀ HỆ ĐIỀU HÀNH VÀ HỆ THỐNG NHẬP XUẤT . 1
1.1.

Tổng quan về hệ điều hành........................................................................ 1

1.1.1. Thành phần, chức năng và nhiệm vụ chính ............................................ 1
1.1.2 Phân loại hệ điều hành ............................................................................. 3
1.2.

Giới thiệu hệ thống nhập xuất ................................................................... 4

Chương 2 HỆ THỐNG NHẬP XUẤT ..................................................................... 6
2.1.

Phần cứng nhập/xuất ................................................................................. 6

2.1.1. Thăm dò................................................................................................. 10
2.1.2. Ngắt ....................................................................................................... 12
2.1.3. Truy cập bộ nhớ trực tiếp ...................................................................... 13
2.2.


Giao diện ứng dụng I/O ........................................................................... 15

2.2.1.

Thiết bị khối và thiết bị ký tự ............................................................ 19

2.2.2.

Thiết bị mạng .................................................................................... 20

2.2.3.

Đồng bộ và hẹn giờ ........................................................................... 21

2.2.4. Blocking & Nonblocking I/O ................................................................ 22
2.3.

Nhân của hệ thống con I/O ...................................................................... 24

2.3.1.

Định thời biểu nhập/xuất ................................................................... 24

2.3.2. Bộ đệm .................................................................................................. 26
2.3.3. Bộ nhớ đệm ........................................................................................... 28
2.3.4. Vùng chứa và thiết bị lưu trữ ................................................................ 29
2.3.5. Xử lý lỗi................................................................................................. 29
2.3.6. Nhập/xuất protection ............................................................................. 30
2.3.7. Cấu trúc dữ liệu trong nhân ................................................................... 31
2.4.


Chuyển yêu cầu nhập/xuất tới hoạt động phần cứng .............................. 33

2.5.

Streams .................................................................................................... 36
ii


2.6.

Hiệu suất của hệ thống nhập/xuất............................................................ 39

KẾT LUẬN ............................................................................................................. 45
TÀI LIỆU THAM KHẢO ....................................................................................... 46

iii


DANH MỤC HÌNH ẢNH

Hình 1.1 Các lớp chức năng nhập/xuất ..................................................................... 5
Hình 2.1 A typical PCI bus structure ........................................................................ 7
Hình 2.2 Device I/O port locations on PCs (partial) ................................................. 9
Hình 2.3 Chu kỳ nhập xuất hướng ngắt .................................................................. 12
Hình 2.4 Các bước trong DMA tranfer ................................................................... 14
Hình 2.5 Cấu trúc nhân I/O ..................................................................................... 16
Hình 2.6: Đặc tính của các thiết bị I/O.................................................................... 17
Hình 2.7 Hai phương thức I/O: (a) Đồng bộ (b) Không đồng bộ ........................... 24
Hình 2.8 Thiết bị - bảng trạng thái .......................................................................... 26

Hình 2.9 Sun Enterprise 6000 device-transfer rates (logarithmic) ......................... 27
Hình 2.10 Sử dụng lời gọi hệ thống để thực hiện nhập/xuất .................................. 31
Hình 2.11 Kiến trúc nhân UNIX nhập/xuất ............................................................ 33
Hình 2.12 Chu trình sống của yêu cầu nhập/xuất ................................................... 36
Hình 2.13 Cấu trúc STREAMS ............................................................................... 37
Hình 2.14 Intercomputer communications.............................................................. 41
Hình 2.15 Chức năng thiết bị tiến trình................................................................... 43

iv


DANH MỤC TỪ VIẾT TẮT
CD – ROM

Compact Disc Read Only Memory

CPU

Center Processing Unit

DMA

Direct Memory Access

FIFO

First In First Out

I/O


Input/Output

MS – DOS

Microsoft Disk Operating System

PC

Professional computer

RAID

Redundant Arrays of Inexpensive Disks

SCSI

Small Computer System Interface

USB

Universal Serial Bus

v


LỜI NÓI ĐẦU
Hệ điều hành là một phần thiết yếu của máy tính và hệ thống I/O là một phần
quan trọng trong bất kỳ hệ điều hành nào từ WINDOWS, LINUX, MAC… Mỗi
thiết bị I/O có những chức năng khác nhau, và các hệ điều hành cần phải cung cấp
các tính năng phù hợp để kiểm soát các thiết bị này. Và chức năng chính của hệ

thống I/O là trao đổi thông tin giữa máy tính và thế giới bên ngoài với các thao tác
cơ bản như nhập và xuất dữ liệu bằng cách sử dụng các thiết bị ngoại vi hoặc các
module I/O. Tất cả các thiết bị ngoại vi đều chậm hơn CPU, RAM vì vậy cần có
Trong nhiều trường hợp các thiết bị I/O được xem như phần chính không thể
thiếu trong một máy tính. Vì vậy, bài báo cáo này, tập trung trình bày về các thành
phần, các tiến trình xử lý, và cách thức I/O được xử lý bên trong hệ thống máy
tính hiện đại. Nội dung bài báo cáo gồm 2 chương:
Chương 1. Tổng quan về hệ điều hành và hệ thống nhập xuất: Chương này
trình bày tổng quan về hệ điều hành và hệ thống I/O để người dùng có cái nhìn
tổng quan hơn về OS cũng như I/O.
Chương 2. Hệ thống I/O: Chương này tập trung trình bày về các thiết bị phần
cứng, các ứng dụng, các tiến trình được thực hiện, việc lưu trữ, truyền dữ liệu, các
cơ chế bảo mật trong một hệ thống I/O,…
Chúng em xin chân thành cám ơn!

vi


Chương 1 TỔNG QUAN VỀ HỆ ĐIỀU HÀNH VÀ HỆ THỐNG NHẬP
XUẤT
1.1.

Tổng quan về hệ điều hành
Hệ điều hành là một chương trình hay một hệ chương trình hoạt động giữa

người sử dụng (user) và phần cứng của máy tính. Mục tiêu của hệ điều hành là
cung cấp một môi trường để người sử dụng có thể thi hành các chương trình. Nó
làm cho máy tính dể sử dụng hơn, thuận lợi hơn và hiệu quả hơn.
Hệ điều hành là một phần quan trọng của hầu hết các hệ thống máy tính.
Một hệ thống máy tính thường được chia làm bốn phần chính: phần cứng, hệ điều

hành, các chương trình ứng dụng và người sử dụng.
- Phần cứng (Hardware): bao gồm bộ xử lý trung tâm (CPU), bộ nhớ, thiết bị
xuất/nhập,.. cung cấp tài nguyên cơ bản cho hệ thống.
- Các chương trình ứng dụng (application programs): trình biên dịch
(compiler), trình soạn thảo văn bản (text editor), hệ cơ sở dữ liệu (database system),
trình duyệt Web,… định nghĩa cách mà trong đó các tài nguyên được sử dụng để
giải quyết yêu cầu của người dùng.
- Người dùng (user): có nhiều loại người dùng khác nhau, thực hiện những
yêu cầu khác nhau, do đó sẽ có nhiều ứng dụng khác nhau.
- Hệ điều hành điều khiển và phối hợp việc sử dụng phần cứng cho những
ứng dụng khác nhau của nhiều người sử dụng khác nhau. Hệ điều hành cung cấp
một môi trường mà các chương trình có thể làm việc hữu hiệu trên đó.
1.1.1. Thành phần, chức năng và nhiệm vụ chính
Các thành phần của hệ điều hành
- Hệ thống quản lý tiến trình.
- Hệ thống quản lý bộ nhớ.
- Hệ thống quản lý nhập xuất.
- Hệ thống quản lý tập tin.
- Hệ thống bảo vệ.
- Hệ thống dịch lệnh.
1


Bao gồm hai chức năng chính:
- Quản lý chia sẻ tài nguyên: Tài nguyên của hệ thống (CPU, bộ nhớ, thiết
bị ngoại vi,…) vốn rất giới hạn, nhưng trong các hệ thống đa nhiệm, nhiều người
sử dụng có thể đồng thời yêu cầu nhiều tài nguyên. Để thỏa mãn yêu cầu sử dụng
chỉ với tài nguyên hữu hạn và nâng cao hiệu quả sử dụng tài nguyên, hệ điều hành
cần phải có cơ chế và chiến lược thích hợp để quản lý việc phân phối tài nguyên.
Ngoài yêu cầu dùng chung tài nguyên để tiết kiệm chi phí, người sử dụng

còn cần phải chia sẻ thông tin (tài nguyên phần mềm) lẫn nhau, khi đó hệ điều
hành cần đảm bảo việc truy xuất đến các tài nguyên này là hợp lệ, không xảy ra
tranh chấp, mất đồng nhất,..
- Giả lập một máy tính mở rộng: Hệ điều hành làm ẩn đi các chi tiết phần
cứng, người sử dụng được cung cấp một giao diện đơn giản, dễ hiểu, dễ sử dụng và
không phụ thuộc vào thiết bị phần cứng cụ thể.
Thực tế, ta có thể xem Hệ điều hành như là một hệ thống bao gồm nhiều
máy tính trừu tượng xếp thành nhiều lớp chồng lên nhau, máy tính mức dưới phục
vụ cho máy tính mức trên. Lớp trên cùng là giao diện trực quan nhất để điều khiển.
Ngoài ra có thể chia chức năng của hệ điều hành theo bốn chức năng sau:
- Quản lý quá trình (process management).
- Quản lý bộ nhớ (memory management).
- Quản lý hệ thống lưu trữ.
- Giao tiếp với người dùng (user interaction).
Nhiệm vụ của hệ điều hành
- Điều khiển và quản lý trực tiếp các phần cứng như bo mạch chủ, bo mạch
đồ họa và bo mạch âm thanh,…
- Thực hiện một số thao tác cơ bản trong máy tính như các thao tác đọc, viết
tập tin, quản lý hệ thống tập tin (file system) và các kho dữ liệu.
- Cung ứng một hệ thống giao diện sơ khai cho các ứng dụng thường là
thông qua một hệ thống thư viện các hàm chuẩn để điều hành các phần cứng mà từ
đó các ứng dụng có thể gọi tới.
2


- Cung ứng một hệ thống lệnh cơ bản để điều hành máy. Các lệnh này gọi là
lệnh hệ thống (system command).
- Ngoài ra hệ điều hành, trong vài trường hợp, cũng cung cấp các dịch vụ cơ
bản cho các phần mềm ứng dụng thông thường như chương trình duyệt Web,
chương trình soạn thảo văn bản….

1.1.2 Phân loại hệ điều hành
Dưới góc độ loại máy tính:
- Hệ điều hành dành cho máy MainFrame
- Hệ điều hành dành cho máy Server
- Hệ điều hành dành cho máy nhiều CPU
- Hệ điều hành dành cho máy tính cá nhân (PC)
- Hệ điều hành dành cho máy PDA (Embedded OS – hệ điều hành nhúng)
- Hệ điều hành dành cho máy chuyên biệt
- Hệ điều hành dành cho thẻ chíp (SmartCard)
Thông thường dưới góc độ người sử dụng và số chương trình được sử
dụng cùng lúc hệ điều hành được chia làm 3 loại chính:
- Hệ điều hành đơn nhiệm một người dùng
- Hệ điều hành đa nhiệm một người dùng
- Hệ điều hành đa nhiệm nhiều người dùng
Đơn nhiệm: tức là mỗi lần chỉ thực hiện được một chương trình hay nói cách
khác các chương trình phải được thực hiện lần lượt (vd: HĐH MS-DOS).
Đa nhiệm: tức là có thể thực hiện đồng thời nhiều chương trình (VD: HĐH
Windows và một số phiên bản mới sau này của MS-DOS).
Một người dùng: chỉ cho phép một người đăng nhập vào hệ thống khi làm
việc (VD: HĐH Windows 95 trở về trước).
Nhiều người dùng: cho phép nhiều người đồng thời đăng nhập vào hệ thống.
Việc này được quản lí thông qua tài khoản người dùng và mật khẩu tương ứng
(VD: các phiên bản mới HĐH Windows như Win 2000,XP,7,8,…).
Dưới góc độ người dùng (truy xuất tài nguyên cùng lúc):
3


- Một người dùng.
- Nhiều người dùng.
- Mạng ngang hàng.

- Mạng có máy chủ: LAN, WAN,…
Dưới góc độ hình thức xử lý:
- Hệ thống xử lý theo lô.
- Hệ thống xử lý theo lô đa chương.
- Hệ thống chia sẻ thời gian.
- Hệ thống song song.
- Hệ thống phân tán.
- Hệ thống xử lý thời gian thực.
1.2.

Giới thiệu hệ thống nhập xuất
Một trong những chức năng chính của hệ điều hành là quản lý tất cả những

thiết bị nhập/xuất của máy tính. Hệ điều hành phải ra các chỉ thị điều khiển thiết bị,
kiểm soát các ngắt và lỗi. Hệ điều hành phải cung cấp một cách giao tiếp đơn giản
và tiện dụng giữa các thiết bị và phần còn lại của hệ thống và giao tiếp này phải
độc lập với thiết bị.
Vai trò của hệ điều hành trong nhập/xuất máy tính là quản lý và điều khiển
các thao tác nhập/xuất và các thiết bị nhập/xuất. Điều khiển các thiết bị được kết
nối tới máy tính là mối quan tâm chủ yếu của người thiết kế hệ điều hành. Vì thế
các thiết bị nhập/xuất rất khác nhau về chức năng và tốc độ (chuột, đĩa cứng, CDROM) nên sự đa dạng về phương pháp là cần thiết để điều khiển chúng. Các
phương pháp này hình thành một hệ thống nhập/xuất con (I/O subsystem) của nhân,
tách rời phần còn lại của nhân từ sự phức tạp của việc quản lý các thiết bị
nhập/xuất.
Công nghệ thiết bị nhập/xuất thể hiện hai xu hướng trái ngược nhau. Xu
hướng thứ nhất, chúng ta tăng sự chuẩn hóa phần mềm và giao diện phần cứng. Xu
hướng này giúp chúng ta hợp tác những thế hệ thiết bị được cải tiến vào các máy
tính và hệ điều hành đã có. Xu hướng thứ hai, chúng ta tăng sự đa dạng của các
thiết bị nhập/xuất. Thiết bị mới là rất khác với các thiết bị trước đó đã tạo ra một
4



trở ngại để hợp nhất chúng vào máy tính và hệ điều hành của chúng ta. Trở ngại
này được giải quyết bởi sự kết hợp kỹ thuật phần cứng và phần mềm. Các thành
phần phần cứng nhập/xuất cơ bản như cổng, bus và bộ điều khiển thiết bị chứa
trong một dãy rộng các thiết bị nhập/xuất. Để đóng gói các chi tiết và sự khác biệt
của các thiết bị khác nhau, nhân của hệ điều hành được chỉ dẫn để dùng các môđun
trình điều khiển thiết bị. Các trình điều khiển thiết bị hiện diện một giao diện truy
xuất thiết bị đồng nhất tời hệ thống con nhập/xuất, như các lời gọi hệ thống cung
cấp một giao diện chuẩn giữa ứng dụng và hệ điều hành.
Hệ thống quản lý nhập/xuất được tổ chức theo từng lớp, mỗi lớp có một
chức năng nhất định và các lớp có giao tiếp với nhau như sơ đồ sau:

Hình 1.1 Các lớp chức năng nhập/xuất
Ví dụ: Trong một chương trình ứng dụng, người dùng muốn đọc một khối từ
một tập tin, hệ điều hành được kích hoạt để thực hiện yêu cầu này. Phần mềm độc
lập thiết bị tìm kiếm trong cache, nếu khối cần đọc không có sẵn, nó sẽ gọi chương
trình điều khiển thiết bị gửi yêu cầu đến phần cứng. Tiến trình bị ngưng lại cho đến
khi thao tác đĩa hoàn tất. Khi thao tác này hoàn tất, phần cứng phát sinh một ngắt.
Bộ phận kiểm soát ngắt kiểm tra biến cố này, ghi nhận trạng thái của thiết bị và
đánh thức tiến trình bị ngưng để chấm dứt yêu cầu I/O và cho tiến trình của người
sử dụng tiếp tục thực hiện.

5


Chương 2 HỆ THỐNG NHẬP XUẤT
2.1.

Phần cứng nhập/xuất

Máy tính điều khiển rất nhiều loại thiết bị. Hầu hết chúng thuộc các loại phổ

biến như thiết bị lưu trữ chung (đĩa, băng), thiết bị truyền dẫn (card mạng, modem)
và các thiết bị giao diện người dùng (màn hình, bàn phím, chuột). Ngoài ra có các
thiết bị chuyên dụng hơn, chẳng hạn như người tham gia vào việc chỉ đạo hoạt
động của một máy bay chiến đấu quân sự hoặc một con tàu vũ trụ. Trong những
chiếc máy bay này, con người đưa đầu vào máy bay bằng bàn phím điều khiển và
bàn đạp chân, và máy tính sẽ gửi các lệnh đầu ra khiến động cơ chuyển động bánh
lái, cánh tay và cần đẩy. Mặc dù có nhiều loại thiết bị nhập xuất khác thường
nhưng chỉ cần một vài khái niệm để hiểu cách thức các thiết bị được gắn vào và
phần mềm có thể kiểm soát phần cứng như thế nào.
Một thiết bị liên lạc với một hệ thống máy tính bằng cách gửi tín hiệu qua
cáp hay thậm chí là vô tuyến. Thiết bị này giao tiếp với máy tính thông qua một
điểm kết nối, hoặc cổng, ví dụ như cổng nối tiếp. Nếu thiết bị sử dụng một tập hợp
dây dẫn, các kết nối trong đó được gọi là bus. Bus được miêu tả là tập hợp các giao
thức kết nối trên đường truyền để gửi dữ liệu.
Bus được sử dụng nhiều trong kiến trúc máy tính và thay đổi trong phương
pháp báo hiệu của chúng, tốc độ, thông lượng, và phương pháp kết nối. Một cấu
trúc bus PC thông thường xuất hiện trong hình 2.1. Hình này cho thấy bus PCI (bus
hệ thống PC phổ biến) nối bộ xử lý - phân hệ bộ nhớ với thiết bị nhanh và bus mở
rộng kết nối thiết bị tương đối chậm, như bàn phím và cổng nối tiếp và cổng USB.
Ở bên phải phía trên phần hình vẽ, bốn đĩa được ghép với nhau trên bus SCSI tích
hợp vào bộ điều khiển SCSI. Bus phổ biến khác được dùng để kết nối các phần
chính của máy tính bao gồm PCI - X có đến 4.3 GB; PCIExpress (PCie), với thông
lượng tới 16 GB; và HyperTransport, với thông lượng tới 20 GB.

6


Hình 2.1 A typical PCI bus structure

Bộ điều khiển là một tập hợp các thiết bị điện tử có thể vận hành một cổng,
một bus, hoặc một thiết bị. Bộ điều khiển cổng nối tiếp là một bộ điều khiển thiết
bị đơn giản. Nó là một chip đơn (hoặc một phần của một chip) trong máy tính kiểm
soát tín hiệu trên dây của một cổng nối tiếp. Trái lại, bộ điều khiển bus SCSI
không đơn giản. Do giao thức SCSI phức tạp, bộ điều khiển bus SCSI thường được
thực hiện như một bo mạch riêng biệt (hoặc tích hợp vào máy tính). Nó thường
chứa bộ vi xử lý, mã vi mã và một số bộ nhớ riêng cho phép xử lý các thông điệp
giao thức SCSI. Một số thiết bị có bộ điều khiển riêng của nó. Nếu bạn nhìn vào
một ổ đĩa, bạn sẽ thấy một bo mạch gắn liền với một bên. Bo mạch này là bộ điều
khiển đĩa. Nó thực hiện trên giao thức cho một số loại kết nối - ví dụ như SCSI hay
ATA, nó có vi mã và một bộ xử lý để thực hiện nhiều tác vụ, chẳng hạn như lập
bản đồ khu vực xấu, lập vùng đệm, và lưu trữ tạm vào bộ nhớ cache.

7


Làm thế nào có thể bộ xử lý đưa ra lệnh và dữ liệu để điều khiển một để
thực hiện việc chuyển giao I/O? Câu trả lời ngắn gọn là bộ điều khiển có một hoặc
nhiều thanh ghi dữ liệu và các tín hiệu điều khiển. Bộ vi xử lý giao tiếp với bộ điều
khiển bằng cách đọc và ghi các khuôn mẫu bit trong các thanh ghi này. Một trong
những cách giao tiếp này có thể xảy ra là thông qua việc sử dụng đặc biệt lệnh
nhập/xuất đặc biệt để chỉ định chuyển một byte hoặc một từ thành địa chỉ cổng I/O.
Lệnh I/O kích hoạt các đường bus để chọn thiết bị thích hợp và di chuyển các bit
vào hoặc ra khỏi thanh ghi thiết bị. Ngoài ra, bộ điều khiển thiết bị có thể hỗ trợ
ánh xạ bộ nhớ I/O. Trong trường hợp này, thanh ghi điều khiển thiết bị được ánh
xạ vào không gian địa chỉ của bộ xử lý. CPU thực hiện yêu cầu I/O bằng cách sử
dụng các hướng dẫn truyền dữ liệu tiêu chuẩn để đọc và ghi thanh ghi điều khiển
thiết bị.
Một số hệ thống sử dụng cả hai kỹ thuật. Ví dụ, máy tính cá nhân sử dụng
các lệnh I/O để kiểm soát một số thiết bị và I/O đã được ánh xạ bộ nhớ để kiểm

soát những người khác. Hình 2.2 chỉ ra địa chỉ cổng I/O thông thường cho máy
tính cá nhân. Trình điều khiển đồ hoạ có các cổng I/O cho các thao tác điều khiển
cơ bản, nhưng bộ điều khiển có một khu vực được ánh xạ bộ nhớ lớn để giữ nội
dung màn hình. Quá trình gửi dữ liệu đầu ra tới màn hình bằng cách ghi dữ liệu
vào vùng được ánh xạ bộ nhớ. Bộ điều khiển tạo ra hình ảnh màn hình dựa trên nội
dung của bộ nhớ này. Kỹ thuật này rất đơn giản để sử dụng. Hơn nữa, viết hàng
triệu byte vào bộ nhớ đồ hoạ là nhanh hơn phát hành hàng triệu hướng dẫn I/O.
Tuy nhiên, sự dễ dàng bằng văn bản cho bộ điều khiển I/O được ánh xạ bộ nhớ
được bù lại bởi một bất lợi. Bởi vì một loại lỗi phần mềm phổ biến là viết qua một
con trỏ không chính xác đến một khu vực không nhớ của bộ nhớ, một bộ nhớ được
ánh xạ thiết bị đăng ký là dễ bị thay đổi mởi một sự sửa đổi tình cờ. Tất nhiên, bộ
nhớ được bảo vệ giúp giảm nguy cơ này.

8


Hình 2.2 Device I/O port locations on PCs (partial)
Cổng I/O thường bao gồm bốn thanh ghi, được gọi là (1) trạng thái, (2) kiểm
soát, (3) dữ liệu vào và (4) các thanh ghi dữ liệu ra.
- Các data-in register được đọc bởi các máy chủ để gửi đầu vào.
- Các data – out register được viết bởi các máy chủ để gửi đầu ra.
- Status register chứa các bit có thể được đọc bởi máy chủ. Các bit này chỉ ra
các trạng thái, chẳng hạn như liệu lệnh hiện tại đã hoàn thành, cho dù một byte có
sẵn để đọc từ thanh ghi dữ liệu và lỗi thiết bị xảy ra.
-

Control register có thể được ghi bởi máy chủ để bắt đầu một lệnh hoặc thay

đổi chế độ của một thiết bị. Ví dụ, một bit nhất định trong thanh ghi điều khiển của
một cổng nối tiếp chọn giữa truyền thông full-duplex và half-duplex, một bit khác

cho phép kiểm tra chẵn lẻ, một bit thứ ba thiết lập độ dài từ 7 hoặc 8.
Các thanh ghi dữ liệu thường có kích thước từ 1 đến 4 byte. Một số bộ điều
khiển có các chip FIFO có thể chứa nhiều byte dữ liệu đầu vào hoặc đầu ra để mở
rộng dung lượng bộ điều khiển vượt quá kích thước của thanh ghi dữ liệu. Một
chip FIFO có thể giữ một lượng dữ liệu nhỏ cho đến khi thiết bị hoặc máy chủ có
thể nhận được dữ liệu đó.
9


2.1.1. Thăm dò
Giao thức hoàn chỉnh cho sự tương tác giữa máy chủ và bộ điều khiển có thể
phức tạp, nhưng khái niệm bắt tay cơ bản rất đơn giản. Chúng tôi giải thích khái
niệm bắt tay với một ví dụ. Giả sử rằng 2 bit được sử dụng để kết nối mối quan hệ
giữa nhà sản xuất và người tiêu dùng giữa bộ điều khiển và máy chủ. Bộ điều
khiển cho biết trạng thái của nó thông qua bit bận trong thanh ghi trạng thái.) Bộ
điều khiển thiết lập bit bận khi nó đang bận làm việc và xóa bận khi nó đã sẵn sàng
để chấp nhận lệnh tiếp theo. Máy chủ báo hiệu các mong muốn của nó thông qua
bit lệnh sẵn sàng trong đăng ký lệnh. Máy chủ đặt bit lệnh sẵn sàng khi một lệnh
có sẵn để điều khiển thực hiện. Ví dụ này, máy chủ ghi dữ liệu ra thông qua một
cổng, phối hợp với bộ điều khiển bằng tay như sau:
1. Máy tính sẽ đọc liên tục các bit cho đến khi các bit này bị xóa
2. Máy tính thiết lập bit ghi trong thanh ghi lệnh và viết một byte vào thanh ghi dữ
liệu ra.
3. Host thiết lập lệnh sẵn sàng cho bit.
4. Khi bộ điều khiển thông báo rằng bit lệnh sẵn sàng được thiết lập, nó sẽ đặt bit
bận.
5. Bộ điều khiển đọc thanh ghi lệnh và thấy lệnh ghi. Nó đọc từ thanh ghi dữ liệu
ra để có được các byte và thực hiện nhập/xuất tới thiết bị.
6. Bộ điều khiển sẽ xóa bit sẵn sàng nhận lệnh, xóa bit lỗi trong thanh ghi trạng
thái để chỉ ra rằng thiết bị nhập/xuất đã thành công và xóa bit bận để cho biết nó

đã kết thúc.
Vòng lặp này được thực hiện lặp lại cho mỗi byte.
Trong bước 1, máy là chờ đợi bận hay thăm dò. Nó ở trong một vòng lặp,
đọc thanh ghi trạng thái cho đến khi bit bận được xóa. Nếu bộ điều khiển và thiết
bị nhanh thì phương pháp này là một phương pháp phù hợp. Nhưng nếu chờ lâu
máy chủ chuyển sang một tác vụ khác. Sau đó, máy tính làm thế nào để biết khi
nào bộ điều khiển rảnh? Đối với một số thiết bị, máy tính phải phục vụ thiết bị
nhanh chóng hoặc dữ liệu sẽ bị mất. Ví dụ, khi dữ liệu đang truyền vào cổng tuần
10


tự từ bàn phím, một vùng đệm nhỏ trên bộ điều khiển sẽ tràn và dữ liệu sẽ bị mất
nếu máy tính chờ quá lâu trước khi trả về các byte đã được đọc.
Trong nhiều kiến trúc máy tính, ba chu kì lệnh CPU đủ để thăm dò một thiết
bị: read một thanh ghi thiết bị, thực hiện phép tính luận lý and để lấy bit trạng thái
và tách ra (branch) nếu khác 0. Rõ ràng, thao tác tham dò cơ bản là đủ. Nhưng
thăm dò trở nên không đủ khi được lặp lại nhiều lần, hiếm khi tìm được một thiết
bị sẵn sàng phục vụ trong lần thăm dò đầu tiên, trong khi cần dùng CPU để xử lý
cho các công việc khác. Trong trường hợp như thế, sẽ hiệu quả hơn để sắp xếp bộ
điều khiển phần cứng thong báo cho CPU khi nào thiết bị sẵn sàng phục vụ hơn là
yêu cầu CPU lặp lại việc thăm dò cho việc hoàn thành nhập/xuất. Cơ chế phần
cứng cho phép một thiết bị thông báo tới CPU được gọi là ngắt (interrupt)

11


2.1.2. Ngắt

Hình 2.3 Chu kỳ nhập xuất hướng ngắt
Cơ chế ngắt cơ bản làm việc như sau: phần cứng CPU có một dây dẫn được

gọi là dòng yêu cầu ngắt (interrupt – request line) mà CPU cảm ứng sau khi thực
thi mỗi chỉ thị. Khi một CPU phát hiện một bộ điều khiển xác nhận một tín hiệu
trên dòng yêu cầu ngắt thì CPU sẽ lưu một lượng nhỏ trạng thái như giá trị hiện
hành của con trỏ lệnh, và nhảu tới thủ tục của bộ quản lý ngắt (interrupt - handler)
tại địa chỉ cố định trong bộ nhớ. Bộ quả lý ngắt xác định nguyên nhân gây ra ngắt,
thực hiện xử lý cần thiết, thực thi chỉ thị return form interrupt để trả về CPU trạng
thái thực thi trước khi ngắt. Chúng ta nói rằng bộ điều khiển thiết bị sinh ra một
ngắt bằng cách xác định tín hiệu trên dòng yêu cầu ngắn và bộ quản lý xóa ngắt

12


bằng cách phục vụ thiết bị. Hình 2.3 tóm tắt chu kì nhập/xuất hướng ngắt
(Interrupt-driven I/O cycle)
2.1.3. Truy cập bộ nhớ trực tiếp
Một thiết bị chuyển đổi lớn, như là ổ đĩa, nó có vẻ lãng phí để sử dụng một
bộ xử lý đa mục đích đắt tiền để xem bit trạng thái và để cấp dữ liệu vào một bộ
điều khiển 1 byte tại 1 thời điểm, 1 tiến trình được gọi là programmed I/O (PIO).
Nhiều máy tính tránh gánh nặng CPU với PIO bằng cách dỡ bỏ một số công việc
cho một bộ vi xử lý đặc biệt được gọi là Direct Memory Access controller (DMA).
Để truyền DMA, máy chủ viết một khối lệnh DMA vào bộ nhớ, khối lệnh
này chứa một con trỏ trỏ tới nguồn, một con trỏ đến đích, và 1 số byte được truyền.
CPU viết địa chỉ của khối lệnh chặn này lên bộ điều khiển DMA, sau đó đi đến
công việc khác. Bộ điều khiển DMA tiến hành thực hiện trực tiếp các bus nhớ, đặt
các địa chỉ vào bus để chuyển giao mà không có sự trợ giúp của CPU. Một bộ điều
khiển DMA đơn giản là một trong những tiêu chuẩn của máy tính cá nhân. Và Bus
Mastering I/O boards cho máy tính thường chứa phần cứng DMA tốc độ cao.
Bắt tay giữa bộ điều khiển DMA và bộ điều khiển thiết bị được thực hiện
qua một dây được gọi là DMA request và DMA acknowledge. Bộ điều khiển thiết
bị đặt một tín hiệu lên DMA request khi một từ dữ liệu đã sẵn sàng. Tín hiệu này

làm cho bộ điều khiển DMA nắm bắt được bus nhớ, đặt địa chỉ mong muốn lên bộ
nhớ địa chỉ (memory address), và đặt 1 tín hiệu lên dây DMA acknowkledge. Khi
bộ điều khiển thiết bị nhận được tín hiệu DMA acknowledge, nó sẽ truyền từ của
dữ liệu đến bộ nhớ và loại bỏ tín hiệu DMA request.
Khi quá trình truyền hoàn tất, bộ điều khiển DMA ngắt CPU. Tiến trình này
được mô tả trong hình dưới đây:

13


Hình 2.4 Các bước trong DMA tranfer
1. Trình điều khiển thiết bị được cho biết để truyền dữ liệu trên đĩa để đệm tại địa
chỉ X.
2. Trình điều khiển thiết bị cho bộ điều khiển đĩa để chuyển các byte C từ đĩa vào
bộ đệm tại địa chỉ X.
3. Bộ điều khiển đĩa khởi tạo chuyển DMA
4. Bộ điều khiển đĩa gửi byte còn lại tới bộ điều khiển DMA.
5. Bộ điều khiển DMA chuyển các byte đến bộ đệm X, tăng địa chỉ bộ nhớ và
giảm C cho đến khi C = 0
6. Khi C = 0, DMA ngắt CPU để chuyển tín hiệu hoàn thành.
Khi bộ điều khiển DMA thu giữ bộ nhớ, CPU sẽ bị chặn truy nhập bộ nhớ
chính dù nó có thể truy nhập dữ liệu trong các bộ nhớ chính. Mặc dù cycle stealing
này có thể làm giảm tốc độ tính toán của CPU, việc tải dữ liệu đến bộ điều khiển
14


DMA cải thiện hiệu suất toàn bộ hệ thống. Một số kiến trúc máy tính sử dụng địa
chỉ bộ nhớ vật lý cho DMA, nhưng một số khác thực hiện direct virtual memory
access (DVMA), sử dụng các địa chỉ ảo qua bản dịch sang các địa chỉ vật lý.
DVMA có thể thực hiện chuyển đổi giữa hai thiết bị nhớ được ánh xạ mà không có

sự can thiệp của CPU hoặc việc sử dụng bộ nhớ chính.
Về chế độ bảo vệ nhân, hệ điều hành nói chung ngăn chặn các tiến trình từ
các lệnh trực tiếp. Điều luật này bảo vệ dữ liệu không bị đánh cắp và cũng bảo vệ
hệ thống được an toàn. Thay vào đó, hệ điều hành xuất ra các chức năng mà một
tiến trình đầy đủ đặc quyền có thể sử dụng để truy cập vào các hoạt động ở mức
thấp trên phần cứng. Trên các nhân không có cơ chế bảo vệ bộ nhớ, các tiến trình
có thể truy cập trực tiếp vào bộ điều khiển thiết bị. Truy cập trực tiếp này có thể
được sử dụng để đạt được hiệu suất cao, nó có thể tránh được giao tiếp hạt nhân.
Nó ảnh hưởng đến sự an toàn và sự ổn định của hệ thốn. Mục đích chung của các
hệ điều hành là bảo vệ bộ nhớ, các thiết bị để hệ thống có thể chống lại các ứng
dụng, phần mềm độc hại.
2.2.

Giao diện ứng dụng I/O
Trong phần này, bài báo cáo tập trung vào các cấu trúc kỹ thuật, các giao

diện hệ điều hành cho phép các thiết bị I/O được xử lý thống nhất, theo các chuẩn
nhất định. Ví dụ: Làm thế nào để một ứng dụng có thể mở một file trong ổ đĩa mà
không cần biết đó là loại đĩa nào, và các thiết bị khác có thể thêm vào một máy
tính mà không làm gián đoạn hệ điều hành.
Chúng ta có thể tóm tắt sự khác biệt chi tiết trong các thiết bị I/O bằng việc
xác định một vài loại chung. Mỗi loại được truy cập thông qua một số chức năng
được chuẩn hóa 1 giao diện. Sự khác biệt giữa các modules nhân được gọi là trình
điều khiển thiết bị, được chỉnh phù hợp với các thiết bị cụ thể nhưng ouput là một
trong các giao diện tiêu chuẩn.

15


Hình 2.5 Cấu trúc nhân I/O

Mục đích của các lớp điều khiển thiết bị là ẩn đi sự khác nhau giữa các bộ
điều khiển thiết bị từ hệ thống I/O con của nhân, giống như hệ thống I/O chính là
hành vi của các thiết bị trong một vài lớp chung nhằm giấu đi sự khác nhau giữa
các ứng dụng. Làm hệ thống I/O con độc lập với phần cứng, đơn giản hóa công
việc của nhà phát triển hệ điều hành. Điều này còn có lợi cho các nhà phát triển
phần cứng. Họ thiết kế các thiết bị mới để tương thích với một giao diện điều khiển
máy chủ (giống như SCSI – 2), hoặc họ viết các diều khiển thiết bị để giao diên
phần cứng mới phổ biến với hệ điều hành. Chúng ta có thể kết nối một thiết bị
ngoại vi mới mà không cần chờ sự hỗ trợ từ các nhà phát triển hệ điều hành.

16


Tuy nhiên, mỗi loại hệ điều hành có các tiêu chuẩn riêng cho giao diện điều
khiển thiết bị. Một thiết bị có thể được cung cấp với nhiều trình điều khiển thiết bị
ví dụ như trình điều khiển cho MS-DOS, Windows 95/98, Windows NT / 2000 và
Solaris. Các thiết bị khác nhau bởi nhiều khía cạnh:

Hình 2.6: Đặc tính của các thiết bị I/O

- Character stream or block (Dòng ký tự/ khối): Một thiết bị dòng ký tự chuyển
các byte một lần một, trong khi một thiết bị khối truyền một khối byte dưới dạng
một đơn vị.
- Truy cập tuần tự hoặc ngẫu nhiên: Thiết bị tuần tự truyền dữ liệu theo một thứ
tự cố định được xác định bởi thiết bị, trong khi người dùng thiết bị truy cập ngẫu
nhiên có thể hướng dẫn thiết bị tìm kiếm bất kỳ vị trí lưu trữ dữ liệu có sẵn nào.

17



- Đồng bộ hoặc không đồng bộ: Thiết bị đồng bộ thực hiện truyền dữ liệu với
thời gian phản hồi dự đoán. Thiết bị không đồng bộ có thời gian đáp ứng bất
thường hoặc không thể dự đoán.
- Sharable/dedicated: Một thiết bị chia sẻ có thể được sử dụng đồng thời bởi
một số tiến trình hoặc luồng (thread); một thiết bị dedicated thì không thể.
- Tốc độ hoạt động: Tốc độ thiết bị bao gồm từ vài byte mỗi giây đến một vài
gigabyte mỗi giây.
- Read – Write, read only, or write only: Một số thiết bị thực hiện cả đầu vào và
đầu ra, nhưng một số khác chỉ hỗ trợ một hướng truyền dữ liệu.
Với mục đích truy cập ứng dụng, sự khác biệt này được ẩn bởi hệ điều hành,
và các thiết bị được nhóm lại thành một số loại phổ biến. Các kiểu thiết bị truy cập
này rất hữu ích và phổ biến. Mặc dù các cuộc gọi hệ thống có thể khác nhau trên
các hệ điều hành, các loại thiết bị này có thể thích hợp với các hệ điều hành. Các
quy ước truy cập chính bao gồm khối I/O, dòng ký tự I/O, truy cập tập tin ánh xạ
bộ nhớ, và socket mạng. Hệ điều hành cũng cung cấp các cuộc gọi hệ thống đặc
biệt để truy cập vào một số thiết bị bổ sung, chẳng hạn như đồng hồ thời gian và
đồng hồ hẹn giờ. Một số hệ điều hành cung cấp một tập hợp các cuộc gọi hệ thống
cho các thiết bị hiển thị đồ hoạ, video và âm thanh.
Hầu hết các hệ điều hành cũng có một escape (hoặc back door). Trong
UNIX, cuộc gọi hệ thống này là ioctl() (cho "I/O control"). Gọi hệ thống ioctl()
cho phép một ứng dụng truy cập bất kỳ chức năng nào có thể được ngụ ý bởi bất
kỳ trình điều khiển thiết bị nào, mà không cần phải tạo ra một cuộc gọi hệ thống
mới. Cuộc gọi hệ thống ioctl() có ba đối số. Đầu tiên là một trình mô tả tập tin kết
nối ứng dụng với trình điều khiển bằng cách đề cập đến một thiết bị phần cứng
được quản lý bởi trình điều khiển đó. Thứ hai là một số nguyên để chọn một trong
những lệnh được thực hiện trong driver. Thứ ba là một con trỏ đến một cấu trúc dữ
liệu tùy ý trong bộ nhớ cho phép ứng dụng và driver kiểm soát thông tin hoặc dữ
liệu cần thiết.

18



2.2.1. Thiết bị khối và thiết bị ký tự
Giao diện của thiết bị khối dữ liệu chứa tất cả các phương diện cần thiết cho
việc lưu trữ trên các ổ đĩa và các thiết bị hướng dữ liệu khác. Thiết bị này được dự
kiến có thể hiểu được các lệnh như đọc và ghi; nếu đó là một thiết bị truy cập ngẫu
nhiên, nó cũng được dự kiến có lệnh để tìm kiếm được khối dữ liệu nào được chỉ
định để chuyển tiếp.
Các ứng dụng thường truy nhập vào thiết bị thông qua giao diện hệ thống
tập tin. Chúng ta có thể thấy rằng các lệnh read(), write() và seek() nắm bắt các
công đoạn cần thiết của thiết bị lưu trữ khối dữ liệu, vì vậy các ứng dụng được tách
riêng từ sự phân biệt cấp thấp giữa các thiết bị.
Chính hệ điều hành, cũng như các ứng dụng đặc biệt như hệ quản trị cơ sở
dữ liệu, có thể ưu tiên truy cập một mảng tuyến tính đơn giản của các khối dữ liệu.
Chế độ truy cập này đôi khi còn được gọi là chế độ vào ra cơ bản. Nếu ứng dụng
thực hiện bộ đệm riêng của nó, sau đó sử dụng một hệ thống tập tin sẽ không cần
thiết bộ đệm. Tương tự, nếu ứng dụng cung cấp khóa riêng của khối tập tin hoặc
vùng tập tin của nó, sau đó bất kỳ dịch vụ khóa hệ điều hành nào có thể dư thừa ít
nhất và mâu thuẫn xảy ra ở mức tồi tệ nhất. Để tránh những xung đột này, truy cập
thiết bị thô kiểm soát thiết bị trực tiếp đến ứng dụng, giúp hệ điều hành thoát khỏi
xung đột. Thật không may, không có dịch vụ hệ điều hành nào sau đó được thực
hiện trên thiết bị này. Một thỏa hiệp đang trở nên phổ biến cho hệ điều hành để cho
phép một phương thức hoạt động trên một tập tin mà vô hiệu hóa bộ đệm và khóa.
Trên UNIX, điều này được gọi là vào ra trực tiếp.
Truy cập tệp được ánh xạ bộ nhớ có thể được xếp lớp trên cùng trình điều
khiển thiết bị khối. Thay vì cung cấp các thao tác đọc và ghi, một giao diện ánh xạ
bộ nhớ cung cấp truy cập vào bộ nhớ đĩa thông qua một mảng các byte trong bộ
nhớ chính. Hệ thống gọi ánh xạ một tập tin vào bộ nhớ trả về địa chỉ bộ nhớ ảo có
chứa một bản sao của tập tin. Việc truyền dữ liệu thực tế chỉ được thực hiện khi
cần thiết để đáp ứng sự truy cập vào bộ nhớ. Bởi vì việc truyền này được xử lý bởi

cùng một cơ chế như được sử dụng cho theo nhu cầu truy cập bộ nhớ ảo phân trang,
bộ nhớ ánh xạ I/O là hiệu quả. Ánh xạ bộ nhớ cũng thuận tiện cho người lập trình 19


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×