Các dịch vụ I/O do hệ điều hành cung cấp

Một phần của tài liệu GIÁO TRÌNH HỆ ĐIỀU HÀNH ĐẦY ĐỦ NHẤT (Trang 87 - 90)

7.3.1 Các chuẩn phục vụ thiết bị nhập/xuất

Hệ điều hành cung cấp các chuẩn giao tiếp và các dịch vụ cho các loại thiết bị như sau:

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

- Thiết bị khối:

Các thiết bị khối như là thiết bị đĩa, hay các thiết bị khác truy nhập hướng khối. Các thao tác cơ bản như read(), write(), seek(). Nếu là thiết bị cĩ thể tìm kiếm ngẫu nhiên thì áp dụng cho seek(). Để tăng hiệu suất thao tác thiết bị trong hệ thống quản lý file các thao tác read(), write(), seek() cĩ thể xử lý tối ưu như các mảng khối khác với thao tác thơ cho các thiết bị I/O bình thuờng.

Các thiết bị cĩ thể ánh xạ bộ nhớ nếu cĩ thể. Việc truy xuất thiết bị cĩ thể truy cập vùng nhớ được ánh xạ, dùng đến bộ nhớ ảo trong các chế độ phân trang theo yêu cầu để thực hiện quá trình swap, dùng các phương pháp tạo vùng đệm để tăng hiệu suất ghi, đọc như các thiết bị đĩa…

- Thiết bị ký tự :

Các thiết bị ký tự như bàn phím và mouse, cổng chuột, đường máy in. Lời gọi hệ thống cho các thiết bị này trên từng ký tự theo dịng. Các thao tác cơ bản ở đây là get() và put() từng ký tự. Các thư viện I/O được xây dựng dựa trên dịng trong thời gian truy nhập với bộ đệm và địa chỉ dịch vụ thiết bị.

Thiết bị mạng

Hiệu suất mạng và việc định các chế độ địa chỉ là một phần quan trọng đối với thiết bị. Các cơ chế thao tác read() , write(), seek() thơng thường khác với thiết bị khối.

Cung cấp các socket để trao đổi thơng tin. Socket như một hộp thư cho phép người sử dụng giao tiếp với mạng. Socket cĩ thể tạo và huỷ một cách tự động. Tạo một socket sẽ trả về một tập tin mơ tả dùng để thiết lập nối,

đọc, ghi dữ liệu… Một socket hỗ trợï cho một mạng riêng và được mơ tả khi socket được tạo ra. Các dạng thiết bị thường gặp là:

Chuỗi các byte nối định hướng tin cậy: dạng này cho phép hai tiến trình trên những máy khác nhau tạo cơ chế đường ống giữa chúng.

Chuỗi gĩi nối định hướng tin cậy: dạng này tương tự như lệnh trên nhưng

gĩi dữ liệu.

Cuối cùng là vận chuyển gĩi dạng thơ.

Khi một socket được tạo những tham số mơ tả nghi thức được sử dụng. Thơng thường là nghi thứcTCP/IP và mỗi socket cĩ một địa chỉ.

Khi cĩ một socket được tạo ở máy nguồn và máy đích thì cĩ một kết nối giữa chúng như một đường ống. Khi hết kết nối nĩ sẽ bị đĩng lại.

Đồng hồ và bộ đếm giờ

Hầu hết các thiết bị đồng hồ và bộ đếm giờ cĩ các chức năng như sau:

- Cho biết giờ hiện hành : quản lýthời gian trong ngày. Hệ thống sẽ dùng

bộ đếm theo nhịp, theo giây, đếm theo nhịp khi hệ thống khởi động.

- Khơng cho phép tiến trình chạy lâu hơn cho phép : khi tiến trình bắt đầu ,

bộ lập lịch sẽ khởi gán giá trị cho bộ đếm , mỗi ngắt đồng hồ sẽ giảm giá trị cho bộ đếm , khi nào giá trị bằng 0 bộ lập lịch sẽ chuyển yêu cầu cho một tiến trình khác.

- Kế tốn việc sử dụng CPU: dùng một bộ timer thứ hai để khởi động khi

tiến trình bắt đầu và đến khi kết thúc, timer này sẽ cho biết thời gian tiến trình thực hiện.

- Cung cấp watchdog timer cho một phần hệ thống đoù: Các thiết bị I/O cần

thiết lập bộ timer riêng (watchdog timer) để quản lý các thơng số các thiết bị như việc khởi động đĩa mềm hệ thống phải khởi động motor và chờ khoảng thời gian 500ms . Vì vậy cần phải sử dụng wathdog timer để chờ thao tác I/O tiếp theo vào khoảng 3ms để khơng tắt montor.

7.3.2 Các kiểu truy cập I/O

Một kiểu khác của hệ thống gọi của giao tiếp thiết bị là chọn giữa giao tiếp blocking hay non-blocking hay kiểu bất đồng bộ. Khi chương trình ứng dụng phát ra lời gọi hệ thống kiểu blocking, thì sự thực hiện ứng dụng của chương trình dừng lại. Chương trình ứng dụng sẽ chuyển trạng thái thực thi sang trạng thái đợi. Sau khi lời gọi hệ thống thực hiện xong, thì chương trình sẽ quay trở lại hàng đợi tại vị trí thích hợp để thực hiện tiếp ở tại thời điểm mà nĩ sẽ nhận các giá trị trở về của hệ thống gọi. Do đĩ, thiết bị điều khiển I/O sẽ hoạt động bất đồng bộ vì khơng cĩ sự dự đốn trước thời gian của hệ thống gọi. Thiết bị I/O hoạt động theo khối dễ dàng, dễ cài đặt, đơn giản. Các thiết bị hoạt động theo khối như đĩa hay giao tiếp các loại máy in hiện đại.

Một số truy cập cấp thấp người dùng cần chế độ non-blocking như kiểu giao tiếp các thiết bị mouse, bàn phím và một số thiết bị khác như vỉ video truy cập theo frame.

Một số thiết bị hoạt động theo kiểu khối cĩ thể viết chồng khi thực hiện lệnh gọi hệ thống, tiến trình điều khiển sẽ chạy một luồng khác trong hệ thống đa luồng. Một số thiết bị hoạt động theo kiểu non-blocking sẽ khơng bị dừng khi thực hiện các chương trình ứng dụng ràng buộc theo thời gian, thay vì chúng thực thi rất nhanh chúng chỉ thơng báo số byte cần chuyển.

Cĩ một sự thay đổi giữa bất đồng bộ (asynchronous) trong lời gọi hệ thống. Lời gọi hệ thống bất đồng bộ sẽ đáp lại ngay lập tức, các thiết bị I/O khơng đợi và chương trình ứng dụng thực hiện tiếp tục. Sự hồn thành của thiết bị I/O trong một thời điểm tương lai là giao tiếp lại các chương trình ứng dụng, hoặc là thiết lập lại các biến địa chỉ trong khơng gian địa chỉ hay khởi hoạt các tín hiệu ngắt mềm phục vụ chương trình. Khác nhau giữa non-blocking và bất đồng bộ như lệnh read() kiểu non-blocking thì nĩ trở về ngay lập tức với bất cứ dữ liệu kiểu gì – sẽ chuyển đầy đủ các byte theo yêu cầu, hay một ít hay khơng cĩ byte nào. Cịn lệnh gọi bất đồng bộ thì nĩ sẽ chuyển đầy đủ khi nhận được lệnh và lệnh này sẽ hồn thành một thời điểm nào đĩ trong tương lai.

7.3.3 Phần mềm I/O ( thiết bị lơ gíc)

Cơ chế cung cấp dịch vụ I/O bằng bằng phần mềm hay thiết bị lơgíc bao gồm: - Kiểm sốt ngắt. - Device Drives. - Phần mềm nhập/xuất độc lập thiết bị. - Phần mềm nhập/xuất phạm vi người dùng.  Kiểm sốt ngắt

Khi một ngắt xảy ra, hàm xử lý ngắt khởi tạo một tiến trình mới để xử lý ngắt. Nĩ sẽ thực hiện một tín hiệu trên biến điều khiển và gửi thơng điệp cho tiến trình bị khố và làm cho một tiến trình bị khố được thực hiện trở lại.

Device Drives

Chức năng của device drives là nhận những yêu cầu trừu tượng từ phần mềm nhập/xuất độc lập thiết bị ở lớp trên và giám sát yêu cầu này thực hiện. Nếu drive đang rãnh, nĩ sẽ thực hiện ngay yêu cầu, ngược lại yêu cầu đĩ đưa sẽ được đưa vào hàng đợi.

Thí dụ, bước đầu tiên của yêu cầu nhập/xuất đĩa là chuyển từ trừu tượng sang cụ thể. Drive của đĩa phải biết khối nào cần đọc , kiểm tra sự hoạt động của motỏ đĩa, xác định đầu đọc cĩ đúng hay chưa.

Nghĩa là drives phải xác định được những thao tác của bộ điều khiển phải thi hành và theo thứ tự nào. Một khi xác định được chỉ thị nĩ bắt đầu chuyển lệnh vào các thanh ghi của bộ điều khiển thiết bị. Bộ điều khiển cĩ thể nhận một hay nhiều

chỉ thị liên tiếp và sau đĩ tự nĩ thực hiện khơng cần can thiệp của hệ điều hành. Trong khi thực hiện lệnh cĩ hai trường hợp xảy ra là device drivers chờ cho bộ điều khiển thực hiện xong bằng cách tự khố lại cho tới khi một ngắt phát sinh mở khố cho nĩ hay hệ điều hành chấm dứt mà khơng chờ vì vậy driver khơng cần phải khố.

Sau khi hệ điều hành hồn tất việc kiểm tra lỗi và mọi thứ đều ổn driver sẽ chuyển dữ liệu cho phần mềm độc lập thiết bị. Cuối cùng nĩ trả về thơng tin về trạng thái lỗi cho nơi gọi và nếu cĩ yêu cầu khác từ hàng đợi, nĩ sẽ thực hiện tiếp, nếu khơng sẽ khố lại chờ đến yêu cầu tiếp theo.

Phần mềm nhập/xuất độc lập thiết bị

Nĩ bao gồm các chức năng như sau:

- Giao tiếp đồng nhất cho device drives : Đây là chức năng cơ bản nhất

chung cho tất cả thiết bị cung cấp cái nhìn đồng nhất cho phần mềm phạm vi người sử dụng.

- Đặt tên thiết bị: dùng để tạo một ánh xạ giữa thiết bị và một tên hình thức.

Nhiều hệ điều hành tạo tên riêng cho từng thiết bị giống như tên file.

- Bảo vệ thiết bị: cho phép hay khơng cho phép người sử dụng truy xuất thiết

bị. Các hệ điều hành cĩ thể hay khơng cĩ chức năng này.

- Cung cấp khối dữ liệu độc lập với thiết bị: Nĩ cung cấp các khối dữ liệu

lơgic độc lập với kích thước sector vật lý. Thí dụ những đĩa khác nhau sẽ cĩ kích thước sector khác nhau sẽ gây khĩ khăn cho các phần mềm sử dụng lớp trên nên nĩ cấp khối dữ liệu lơgíc để đồng nhất giữa các thiết bị .

- Tổ chức buffer : để hỗ trợï cho đồng bộ hố quá trình hoạt động của hệ

thống. Ví dụ buffer bàn phím.

- Định vị lưu trữ trên thiết bị khối.

- Cấp phát và giải phĩng các thiết bị tận hiến.

- Báo lỗi: dùng để thơng báo cho các lớp bên trên từ các lỗi do device driver

báo về.

Phần mềm nhập/xuất phạm vi người dùng

Các hàm thư viện chuyển tham số thích hợp cho lời gọi hệ thống và hàm thư viện định vị xuất/nhập như printf trong C. Thư viện nhập/xuất chuẩn chứa một số hàm cĩ chức năng xuất/nhập và tất cả chạy như chương trình người dùng.

Một phần của tài liệu GIÁO TRÌNH HỆ ĐIỀU HÀNH ĐẦY ĐỦ NHẤT (Trang 87 - 90)