QUẢN LÝ HỆ THỐNG NHẬP/XUẤT
Trang 1 trong tổng số 1 trang
QUẢN LÝ HỆ THỐNG NHẬP/XUẤT
1.Các khái niệm cơ bản
Điều khiển các thiết bị được nối kết 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ì các thiết bị nhập/xuất rất khác nhau về chức năng và
tốc độ (xem xét chuột, đĩa cứng, và CD-ROM) 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 hoá 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 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 modules trình điều khiển thiết bị.
Các trình điều khiển thiết bị (device driver) 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.
2 .Phần cứng nhập/xuất
Các máy tính điều hành nhiều loại thiết bị. Hầu hết chúng thuộc các chủng loại
phổ biến như thiết bị lưu trữ (đĩa, băng từ), thiết bị truyền (card mạng, modem) và
thiết bị giao diện người dùng (màn hình, bàn phím, chuột),.... Mặc dù có sự đa dạng
về các thiết bị nhập/xuất, nhưng chúng ta chỉ cần hiểu một vài khái niệm như các thiết
bị được gán như thế nào và phần mềm có thể điều khiển phần cứng như thế nào.
Một thiết bị giao tiếp với một hệ thống máy tính bằng cách gởi các tín hiệu qua
dây cáp hay thậm chí qua không khí. Các thiết bị giao tiếp với máy bằng một điểm nối
kết (cổng-port) như cổng tuần tự. Nếu một hay nhiều thiết bị dùng một tập hợp dây
dẫn, nối kết được gọi là bus. Một bus là một tập hợp dây dẫn và giao thức được định
nghĩa chặt chẽ để xác định tập hợp thông điệp có thể được gởi qua dây. Trong thuật
ngữ điện tử, các thông điệp được truyền bởi các mẫu điện thế điện tử được áp dụng
tới các dây dẫn với thời gian được xác định. Khi thiết bị A có một cáp gán vào thiết bị
B, thiết bị B có một cáp gán vào thiết bị C và thiết bị C gán vào một cổng máy tính,
sự sắp xếp này được gọi là chuỗi nối tiếp. Một chuỗi nối tiếp thường điều hành như
một bus.
3.Giao diện nhập/xuất ứng dụng
Trong phần này, chúng ta thảo luận các kỹ thuật cấu trúc và các giao diện cho
hệ điều hành cho phép các thiết bị nhập/xuất được đối xử trong cách chuẩn, không
đổi. Thí dụ, chúng ta giải thích một ứng dụng có thể mở một tập tin trên đĩa mà không
biết loại đĩa đó là gì và các đĩa mới và các thiết bị khác có thể được thêm tới máy tính
như thế nào mà không làm hệ điều hành bị gián đoạn.
Như những vấn đề công nghệ phần mềm phức tạp khác, tiếp cận ở đây liên quan
đến tính trừu tượng, bao gói và phân tầng phần mềm. Đặc biệt, chúng ta có thể trừu
tượng sự khác nhau chi tiết trong các thiết bị nhập/xuất bằng cách xác định một vài
loại thông dụng. Mỗi loại thông dụng được truy xuất thông qua một tập hợp hàm
chuẩn-một giao diện. Sự khác biệt này được bao gói trong module nhân được gọi là
trình điều khiển thiết bị (device driver) mà qui định bên trong được áp đặt cho mỗi
thiết bị, nhưng được nhập vào một trong những giao diện chuẩn. Hình XI-3 hiển thị
cách các thành phần liên quan nhập/xuất của nhân được cấu trúc trong các tầng phần
mềm.
4.Hệ thống con nhập/xuất của nhân (kernel I/O
subsytem)
Nhân cung cấp nhiều dịch vụ liên quan đến nhập/xuất. Một vài dịch vụ-định
thời biểu, vùng đệm (buffering), vùng lưu trữ (cache), đặt trước thiết bị, quản lý lỗi-
được cung cấp bởi hệ thống con nhập/xuất của nhân và xây dựng trên phần cứng và
cơ sở hạ tầng trình điều khiển thiết bị.
5. Chuyển nhập/xuất tới hoạt động phần cứng
Phần trước chúng ta mô tả việc bắt tay giữa một trình điều khiển thiết bị và bộ
điều khiển thiết bị, nhưng chúng ta không giải thích cách hệ điều hành nối kết yêu cầu
ứng dụng tới tập hợp dây mạng hay một sector đĩa xác định như thế nào. Chúng ta hãy
xem xét một thí dụ đọc một tập tin từ đĩa. Ứng dụng tham chiếu tới dữ liệu bằng tên
tập tin. Trong một đĩa, hệ thống tập tin ánh xạ từ tên tập tin thông qua các thư mục hệ
thống tập tin để lấy không gian cấp phát của tập tin.
Các hệ điều hành hiện đại đạt được khả năng linh hoạt cao từ nhiều giai đoạn
của bảng tra cứu trong đường dẫn giữa yêu cầu và bộ điều khiển thiết bị vật lý. Các cơ
chế truyền yêu cầu giữa ứng dụng và trình điều khiển là phổ biến. Do đó, chúng ta có
thể giới thiệu các thiết bị mới và trình điều khiển vào máy tính mà không biên dịch lại
nhân. Thật vậy, một số hệ điều hành có khả năng nạp trình điều khiển thiết bị theo yêu
cầu. Tại thời điểm khởi động, hệ thống đầu tiên thăm dò các bus phần cứng để xác
định thiết bị nào hiện diện và sau đó hệ thống nạp các trình điều khiển cần thiết ngay
lập tức hay khi được yêu cầu bởi một yêu cầu nhập/xuất đầu tiên.
Bây giờ chúng ta mô tả chu trình sống điển hình của một yêu cầu đọc bị nghẽn,
như trong hình XI-5. Hình này đề nghị rằng một thao tác nhập/xuất yêu cầu nhiều
bước và tiêu tốn số lượng lớn chu kỳ CPU.
1) Một quá trình phát ra một lời gọi hệ thống read() tới bộ mô tả tập tin đã được
mở trước đó.
2) Mã lời gọi hệ thống trong nhân kiểm tra tính đúng đắn của các tham số. Trong
trường hợp nhập, nếu dữ liệu đã có sẳn trong vùng đệm thì dữ liệu được trả về
tới quá trình và yêu cầu nhập/xuất được hoàn thành.
3) Ngược lại, nhập/xuất vật lý cần được thực hiện để mà quá trình được xóa từ
hàng đợi thực thi và được đặt vào hàng đợi chờ cho thiết bị, và yêu cầu
nhập/xuất được lập thời biểu. Cuối cùng, hệ con nhập/xuất gởi yêu cầu tới
trình điều khiển thiết bị. Phụ thuộc vào hệ điều hành, yêu cầu được gởi bằng
lời gọi thủ tục con hay bằng thông điệp trong nhân.
4) Trình điều khiển thiết bị cấp phát vùng đệm nhân để nhận dữ liệu và lập thời
biểu nhập/xuất. Cuối cùng, trình điều khiển gởi lệnh tới bộ điều khiển thiết bị
bằng cách viết vào thanh ghi điều khiển của thiết bị.
5) Trình điều khiển thiết bị thao tác trên phần cứng thiết bị để thực hiện truyền
dữ liệu.
6) Trình điều khiển có thể thăm dò trạng thái và dữ liệu hay thiết lập truyền
DMA vào bộ nhớ nhân. Chúng ta thừa nhận rằng truyền được quản lý bởi bộ
điều khiển DMA sinh ra một ngắt khi việc truyền hoàn thành.
7) Bộ quản lý ngắt tương ứng nhận ngắt bằng bằng vector ngắt, lưu bất cứ dữ liệu
cần thiết, báo hiệu trình điều khiển thiết bị và trả về từ ngắt.
Trình điều khiển thiết bị nhận tín hiệu, xác định yêu cầu nhập/xuất hoàn thành,
xác định trạng thái yêu cầu và báo hiệu cho hệ con nhập/xuất nhân rằng yêu
cầu đã hoàn thành.
9) Nhân truyền dữ liệu hay trả về mã tới không gian địa chỉ của quá trình được
yêu cầu và di chuyển quá trình từ hàng đợi chờ tới hàng đợi sẳn sàng.
10) Di chuyển quá trình tới hàng đợi sẳn sàng không làm nghẽn quá trình. Khi bộ
định thời biểu gán quá trình tới CPU, quá trình tiếp tục thực thi tại thời điểm
hoàn thành của lời gọi hệ thống.
6. Năng lực
Nhập/xuất là một yếu tố quan trọng trong năng lực hệ thống. Nó đặt nhiều yêu
cầu trên CPU để thực thi mã trình điều khiển thiết bị và định thời biểu quá trình công
bằng và hiệu quả khi các quá trình này nghẽn và không nghẽn. Chuyển đổi ngữ cảnh
chú trọng đến CPU và vùng lưu trữ phần cứng. Nhập/xuất cũng hiển thị tính không
hiệu quả trong các cơ chế quản lý ngắt trong nhân, và nhập/xuất tải xuống bus bộ nhớ
trong suốt thời gian chép giữa vùng đệm nhân và không gian dữ liệu ứng dụng. Chép
một cách hợp lý tất cả yêu cầu này là một trong những quan tâm chính của kiến trúc
máy tính.
Mặc dù các máy tính hiện đại có thể quản lý hàng ngàn ngắt trên giây, quản lý
ngắt là một tác vụ tương đối đắt: mỗi ngắt gây cho hệ thống thực hiện một thay đổi
trạng thái, để thực thi bộ quản lý ngắt và sau đó phục hồi trạng thái. Nhập/xuất được
lập trình có thể hiệu quả hơn nhập/xuất hướng ngắt (interrupt-driven I/O) nếu số chu
kỳ tiêu tốn cho việc chờ đợi bận là không quá mức. Hoàn thành một thao tác
nhập/xuất không nghẽn một quá trình dẫn đến toàn bộ chi phí của việc chuyển đổi
ngữ cảnh.
Chúng ta có thể tận dụng nhiều nguyên tắc để cải tiến tính hiệu quả của
nhập/xuất:
• Cắt giảm số lượng chuyển ngữ cảnh
• Cắt giảm số lần dữ liệu phải được chép vào bộ nhớ trong khi truyền giữa thiết
bị và ứng dụng.
• Cắt giảm tần số xuất hiện ngắt bằng cách dùng sự truyền lớn, bộ điều khiển
thông tin và vùng chứa (nếu chờ đợi bận có thể là nhỏ nhất).
• Gia tăng tính đồng hành dùng các bộ điều khiển tri thức DMA (DMA-
knowledgeable controllers) hay các kênh để giảm gánh nặng chép dữ liệu đơn
giản từ CPU.
• Di chuyển các hàm xử lý cơ bản vào phần cứng, để cho phép họat động của
chúng trong các bộ điều khiển thiết bị đồng hành với các thao tác CPU và bus.
• Cân bằng CPU, hệ con bộ nhớ, bus và năng lực nhập/xuất vì quá tải trong một
vùng bất kỳ sẽ gây rảnh rỗi trong vùng khác.
Ở đây các chức năng nhập/xuất nên được cài đặt-trong phần cứng thiết bị, trong
trình điều khiển thiết bị hay trong phần mềm ứng dụng? Chúng ta quan sát tiến trình
được mô tả trong hình XI-6.
• Khởi đầu, chúng ta cài đặt giải thuật nhập/xuất thử nghiệm tại cấp ứng dụng vì
mã ứng dụng là linh họat và những lỗi ứng dụng là không chắc gây ra sự sụp
đổ hệ thống. Ngoài ra, bằng phát triển mã tại cấp ứng dụng, chúng ta tránh yêu
cầu khởi động hay nạp lại trình điều khiển thiết bị sau mọi thay đổi tới mã.
Tuy nhiên, cài đặt cấp ứng dụng có thể không đủ vì chi phí chuyển ngữ cảnh
và vì ứng dụng không thể lấy lợi điểm của những cấu trúc dữ liệu nhân bên
trong và chức năng nhân (như truyền thông điệp hữu hiệu trong nhân, luồng và
khóa).
• Khi một giải thuật cấp ứng dụng chứng minh tính giá trị của nó, chúng ta có
thể cài đặt lại nó trong nhân. Điều này có thể cải tiến năng lực nhưng nỗ lực
phát triển có thử thách nhiều hơn vì nhân hệ điều hành lớn, phần mềm hệ
thống phức tạp. Ngoài ra, việc cài đặt trong nhân phải được gỡ rối toàn bộ để
tránh hư hỏng dữ liệu và sụp đổ hệ thống.
• Năng lực cao nhất có thể đạt được bởi cài đặt chuyên dụng trong phần cứng,
trong thiết bị hay trong bộ điều khiển. Sự bất lợi của việc cài đặt phần cứng gồm khó khăn và chi phí của việc tạo những cải tiến xa hơn hay sửa lỗi, thời
gian phát triển tăng (tháng hơn là ngày) và khả năng linh hoạt giảm.
7. Tóm tắt
Các thành phần phần cứng cơ bản được nạp vào nhập/xuất là các bus, các bộ
điều khiển thiết bị, và chính các thiết bị. Công việc chuyển dữ liệu giữa thiết bị và bộ
nhớ chính được thực hiện bởi CPU khi nhập/xuất được lập trình, hay được chuyển tải
tới bộ điều khiển DMA. Module nhân điều khiển một thiết bị là một trình điều khiển
thiết bị. Giao diện lời gọi hệ thống cung cấp tới ứng dụng được thiết kế để quản lý
nhiều chủng loại cơ bản của phần cứng, sockets mạng và bộ đếm thời gian đến được
lập trình.
Hệ con nhập/xuất của nhân cung cấp nhiều dịch vụ. Các dịch vụ này là định
thời biểu nhập/xuất, vùng đệm, vùng chứa, quản lý lỗi và đặt trước thiết bị. Một dịch
vụ khác là dịch tên, để tạo nối kết giữa các thiết bị phần cứng và tên tập tin tượng
trưng được dùng bởi ứng dụng. Nó liên quan nhiều cấp ánh xạ mà dịch từ tên chuỗi
ký tự tới một trình điều khiển thiết bị xác định và địa chỉ thiết bị và sau đó tới địa chỉ
vật lý của cổng nhập/xuất hay bộ điều khiển bus
Các lời gọi hệ thống nhập/xuất tính chi phí theo thuật ngữ tiêu tốn CPU vì
nhiều lớp phần mềm giữa thiết bị vật lý và ứng dụng. Các lớp này ngụ ý chi phí
chuyển ngữ cảnh để đi qua phạm vi bảo vệ của nhân, của tín hiệu và bộ quản lý ngắt
để phục vụ các thiết bị nhập/xuất, và của tải trên CPU và hệ thống bộ nhớ để chép dữ
liệu giữa vùng đệm nhân và không gian ứng dụng.
Điều khiển các thiết bị được nối kết 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ì các thiết bị nhập/xuất rất khác nhau về chức năng và
tốc độ (xem xét chuột, đĩa cứng, và CD-ROM) 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 hoá 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 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 modules trình điều khiển thiết bị.
Các trình điều khiển thiết bị (device driver) 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.
2 .Phần cứng nhập/xuất
Các máy tính điều hành nhiều loại thiết bị. Hầu hết chúng thuộc các chủng loại
phổ biến như thiết bị lưu trữ (đĩa, băng từ), thiết bị truyền (card mạng, modem) và
thiết bị giao diện người dùng (màn hình, bàn phím, chuột),.... Mặc dù có sự đa dạng
về các thiết bị nhập/xuất, nhưng chúng ta chỉ cần hiểu một vài khái niệm như các thiết
bị được gán như thế nào và phần mềm có thể điều khiển phần cứng như thế nào.
Một thiết bị giao tiếp với một hệ thống máy tính bằng cách gởi các tín hiệu qua
dây cáp hay thậm chí qua không khí. Các thiết bị giao tiếp với máy bằng một điểm nối
kết (cổng-port) như cổng tuần tự. Nếu một hay nhiều thiết bị dùng một tập hợp dây
dẫn, nối kết được gọi là bus. Một bus là một tập hợp dây dẫn và giao thức được định
nghĩa chặt chẽ để xác định tập hợp thông điệp có thể được gởi qua dây. Trong thuật
ngữ điện tử, các thông điệp được truyền bởi các mẫu điện thế điện tử được áp dụng
tới các dây dẫn với thời gian được xác định. Khi thiết bị A có một cáp gán vào thiết bị
B, thiết bị B có một cáp gán vào thiết bị C và thiết bị C gán vào một cổng máy tính,
sự sắp xếp này được gọi là chuỗi nối tiếp. Một chuỗi nối tiếp thường điều hành như
một bus.
3.Giao diện nhập/xuất ứng dụng
Trong phần này, chúng ta thảo luận các kỹ thuật cấu trúc và các giao diện cho
hệ điều hành cho phép các thiết bị nhập/xuất được đối xử trong cách chuẩn, không
đổi. Thí dụ, chúng ta giải thích một ứng dụng có thể mở một tập tin trên đĩa mà không
biết loại đĩa đó là gì và các đĩa mới và các thiết bị khác có thể được thêm tới máy tính
như thế nào mà không làm hệ điều hành bị gián đoạn.
Như những vấn đề công nghệ phần mềm phức tạp khác, tiếp cận ở đây liên quan
đến tính trừu tượng, bao gói và phân tầng phần mềm. Đặc biệt, chúng ta có thể trừu
tượng sự khác nhau chi tiết trong các thiết bị nhập/xuất bằng cách xác định một vài
loại thông dụng. Mỗi loại thông dụng được truy xuất thông qua một tập hợp hàm
chuẩn-một giao diện. Sự khác biệt này được bao gói trong module nhân được gọi là
trình điều khiển thiết bị (device driver) mà qui định bên trong được áp đặt cho mỗi
thiết bị, nhưng được nhập vào một trong những giao diện chuẩn. Hình XI-3 hiển thị
cách các thành phần liên quan nhập/xuất của nhân được cấu trúc trong các tầng phần
mềm.
4.Hệ thống con nhập/xuất của nhân (kernel I/O
subsytem)
Nhân cung cấp nhiều dịch vụ liên quan đến nhập/xuất. Một vài dịch vụ-định
thời biểu, vùng đệm (buffering), vùng lưu trữ (cache), đặt trước thiết bị, quản lý lỗi-
được cung cấp bởi hệ thống con nhập/xuất của nhân và xây dựng trên phần cứng và
cơ sở hạ tầng trình điều khiển thiết bị.
5. Chuyển nhập/xuất tới hoạt động phần cứng
Phần trước chúng ta mô tả việc bắt tay giữa một trình điều khiển thiết bị và bộ
điều khiển thiết bị, nhưng chúng ta không giải thích cách hệ điều hành nối kết yêu cầu
ứng dụng tới tập hợp dây mạng hay một sector đĩa xác định như thế nào. Chúng ta hãy
xem xét một thí dụ đọc một tập tin từ đĩa. Ứng dụng tham chiếu tới dữ liệu bằng tên
tập tin. Trong một đĩa, hệ thống tập tin ánh xạ từ tên tập tin thông qua các thư mục hệ
thống tập tin để lấy không gian cấp phát của tập tin.
Các hệ điều hành hiện đại đạt được khả năng linh hoạt cao từ nhiều giai đoạn
của bảng tra cứu trong đường dẫn giữa yêu cầu và bộ điều khiển thiết bị vật lý. Các cơ
chế truyền yêu cầu giữa ứng dụng và trình điều khiển là phổ biến. Do đó, chúng ta có
thể giới thiệu các thiết bị mới và trình điều khiển vào máy tính mà không biên dịch lại
nhân. Thật vậy, một số hệ điều hành có khả năng nạp trình điều khiển thiết bị theo yêu
cầu. Tại thời điểm khởi động, hệ thống đầu tiên thăm dò các bus phần cứng để xác
định thiết bị nào hiện diện và sau đó hệ thống nạp các trình điều khiển cần thiết ngay
lập tức hay khi được yêu cầu bởi một yêu cầu nhập/xuất đầu tiên.
Bây giờ chúng ta mô tả chu trình sống điển hình của một yêu cầu đọc bị nghẽn,
như trong hình XI-5. Hình này đề nghị rằng một thao tác nhập/xuất yêu cầu nhiều
bước và tiêu tốn số lượng lớn chu kỳ CPU.
1) Một quá trình phát ra một lời gọi hệ thống read() tới bộ mô tả tập tin đã được
mở trước đó.
2) Mã lời gọi hệ thống trong nhân kiểm tra tính đúng đắn của các tham số. Trong
trường hợp nhập, nếu dữ liệu đã có sẳn trong vùng đệm thì dữ liệu được trả về
tới quá trình và yêu cầu nhập/xuất được hoàn thành.
3) Ngược lại, nhập/xuất vật lý cần được thực hiện để mà quá trình được xóa từ
hàng đợi thực thi và được đặt vào hàng đợi chờ cho thiết bị, và yêu cầu
nhập/xuất được lập thời biểu. Cuối cùng, hệ con nhập/xuất gởi yêu cầu tới
trình điều khiển thiết bị. Phụ thuộc vào hệ điều hành, yêu cầu được gởi bằng
lời gọi thủ tục con hay bằng thông điệp trong nhân.
4) Trình điều khiển thiết bị cấp phát vùng đệm nhân để nhận dữ liệu và lập thời
biểu nhập/xuất. Cuối cùng, trình điều khiển gởi lệnh tới bộ điều khiển thiết bị
bằng cách viết vào thanh ghi điều khiển của thiết bị.
5) Trình điều khiển thiết bị thao tác trên phần cứng thiết bị để thực hiện truyền
dữ liệu.
6) Trình điều khiển có thể thăm dò trạng thái và dữ liệu hay thiết lập truyền
DMA vào bộ nhớ nhân. Chúng ta thừa nhận rằng truyền được quản lý bởi bộ
điều khiển DMA sinh ra một ngắt khi việc truyền hoàn thành.
7) Bộ quản lý ngắt tương ứng nhận ngắt bằng bằng vector ngắt, lưu bất cứ dữ liệu
cần thiết, báo hiệu trình điều khiển thiết bị và trả về từ ngắt.
Trình điều khiển thiết bị nhận tín hiệu, xác định yêu cầu nhập/xuất hoàn thành,
xác định trạng thái yêu cầu và báo hiệu cho hệ con nhập/xuất nhân rằng yêu
cầu đã hoàn thành.
9) Nhân truyền dữ liệu hay trả về mã tới không gian địa chỉ của quá trình được
yêu cầu và di chuyển quá trình từ hàng đợi chờ tới hàng đợi sẳn sàng.
10) Di chuyển quá trình tới hàng đợi sẳn sàng không làm nghẽn quá trình. Khi bộ
định thời biểu gán quá trình tới CPU, quá trình tiếp tục thực thi tại thời điểm
hoàn thành của lời gọi hệ thống.
6. Năng lực
Nhập/xuất là một yếu tố quan trọng trong năng lực hệ thống. Nó đặt nhiều yêu
cầu trên CPU để thực thi mã trình điều khiển thiết bị và định thời biểu quá trình công
bằng và hiệu quả khi các quá trình này nghẽn và không nghẽn. Chuyển đổi ngữ cảnh
chú trọng đến CPU và vùng lưu trữ phần cứng. Nhập/xuất cũng hiển thị tính không
hiệu quả trong các cơ chế quản lý ngắt trong nhân, và nhập/xuất tải xuống bus bộ nhớ
trong suốt thời gian chép giữa vùng đệm nhân và không gian dữ liệu ứng dụng. Chép
một cách hợp lý tất cả yêu cầu này là một trong những quan tâm chính của kiến trúc
máy tính.
Mặc dù các máy tính hiện đại có thể quản lý hàng ngàn ngắt trên giây, quản lý
ngắt là một tác vụ tương đối đắt: mỗi ngắt gây cho hệ thống thực hiện một thay đổi
trạng thái, để thực thi bộ quản lý ngắt và sau đó phục hồi trạng thái. Nhập/xuất được
lập trình có thể hiệu quả hơn nhập/xuất hướng ngắt (interrupt-driven I/O) nếu số chu
kỳ tiêu tốn cho việc chờ đợi bận là không quá mức. Hoàn thành một thao tác
nhập/xuất không nghẽn một quá trình dẫn đến toàn bộ chi phí của việc chuyển đổi
ngữ cảnh.
Chúng ta có thể tận dụng nhiều nguyên tắc để cải tiến tính hiệu quả của
nhập/xuất:
• Cắt giảm số lượng chuyển ngữ cảnh
• Cắt giảm số lần dữ liệu phải được chép vào bộ nhớ trong khi truyền giữa thiết
bị và ứng dụng.
• Cắt giảm tần số xuất hiện ngắt bằng cách dùng sự truyền lớn, bộ điều khiển
thông tin và vùng chứa (nếu chờ đợi bận có thể là nhỏ nhất).
• Gia tăng tính đồng hành dùng các bộ điều khiển tri thức DMA (DMA-
knowledgeable controllers) hay các kênh để giảm gánh nặng chép dữ liệu đơn
giản từ CPU.
• Di chuyển các hàm xử lý cơ bản vào phần cứng, để cho phép họat động của
chúng trong các bộ điều khiển thiết bị đồng hành với các thao tác CPU và bus.
• Cân bằng CPU, hệ con bộ nhớ, bus và năng lực nhập/xuất vì quá tải trong một
vùng bất kỳ sẽ gây rảnh rỗi trong vùng khác.
Ở đây các chức năng nhập/xuất nên được cài đặt-trong phần cứng thiết bị, trong
trình điều khiển thiết bị hay trong phần mềm ứng dụng? Chúng ta quan sát tiến trình
được mô tả trong hình XI-6.
• Khởi đầu, chúng ta cài đặt giải thuật nhập/xuất thử nghiệm tại cấp ứng dụng vì
mã ứng dụng là linh họat và những lỗi ứng dụng là không chắc gây ra sự sụp
đổ hệ thống. Ngoài ra, bằng phát triển mã tại cấp ứng dụng, chúng ta tránh yêu
cầu khởi động hay nạp lại trình điều khiển thiết bị sau mọi thay đổi tới mã.
Tuy nhiên, cài đặt cấp ứng dụng có thể không đủ vì chi phí chuyển ngữ cảnh
và vì ứng dụng không thể lấy lợi điểm của những cấu trúc dữ liệu nhân bên
trong và chức năng nhân (như truyền thông điệp hữu hiệu trong nhân, luồng và
khóa).
• Khi một giải thuật cấp ứng dụng chứng minh tính giá trị của nó, chúng ta có
thể cài đặt lại nó trong nhân. Điều này có thể cải tiến năng lực nhưng nỗ lực
phát triển có thử thách nhiều hơn vì nhân hệ điều hành lớn, phần mềm hệ
thống phức tạp. Ngoài ra, việc cài đặt trong nhân phải được gỡ rối toàn bộ để
tránh hư hỏng dữ liệu và sụp đổ hệ thống.
• Năng lực cao nhất có thể đạt được bởi cài đặt chuyên dụng trong phần cứng,
trong thiết bị hay trong bộ điều khiển. Sự bất lợi của việc cài đặt phần cứng gồm khó khăn và chi phí của việc tạo những cải tiến xa hơn hay sửa lỗi, thời
gian phát triển tăng (tháng hơn là ngày) và khả năng linh hoạt giảm.
7. Tóm tắt
Các thành phần phần cứng cơ bản được nạp vào nhập/xuất là các bus, các bộ
điều khiển thiết bị, và chính các thiết bị. Công việc chuyển dữ liệu giữa thiết bị và bộ
nhớ chính được thực hiện bởi CPU khi nhập/xuất được lập trình, hay được chuyển tải
tới bộ điều khiển DMA. Module nhân điều khiển một thiết bị là một trình điều khiển
thiết bị. Giao diện lời gọi hệ thống cung cấp tới ứng dụng được thiết kế để quản lý
nhiều chủng loại cơ bản của phần cứng, sockets mạng và bộ đếm thời gian đến được
lập trình.
Hệ con nhập/xuất của nhân cung cấp nhiều dịch vụ. Các dịch vụ này là định
thời biểu nhập/xuất, vùng đệm, vùng chứa, quản lý lỗi và đặt trước thiết bị. Một dịch
vụ khác là dịch tên, để tạo nối kết giữa các thiết bị phần cứng và tên tập tin tượng
trưng được dùng bởi ứng dụng. Nó liên quan nhiều cấp ánh xạ mà dịch từ tên chuỗi
ký tự tới một trình điều khiển thiết bị xác định và địa chỉ thiết bị và sau đó tới địa chỉ
vật lý của cổng nhập/xuất hay bộ điều khiển bus
Các lời gọi hệ thống nhập/xuất tính chi phí theo thuật ngữ tiêu tốn CPU vì
nhiều lớp phần mềm giữa thiết bị vật lý và ứng dụng. Các lớp này ngụ ý chi phí
chuyển ngữ cảnh để đi qua phạm vi bảo vệ của nhân, của tín hiệu và bộ quản lý ngắt
để phục vụ các thiết bị nhập/xuất, và của tải trên CPU và hệ thống bộ nhớ để chép dữ
liệu giữa vùng đệm nhân và không gian ứng dụng.
HuynhThanhLy(I12A)- Tổng số bài gửi : 42
Join date : 17/02/2012
Age : 35
Đến từ : Quảng Ngãi
Trang 1 trong tổng số 1 trang
Permissions in this forum:
Bạn không có quyền trả lời bài viết