Hệ điều hành - Phần cứng I / O
Một trong những công việc quan trọng của Hệ điều hành là quản lý các thiết bị I / O khác nhau bao gồm chuột, bàn phím, touch pad, ổ đĩa, bộ điều hợp màn hình, thiết bị USB, màn hình được ánh xạ bit, đèn LED, bộ chuyển đổi tương tự sang kỹ thuật số, Bật / công tắc tắt, kết nối mạng, I / O âm thanh, máy in, v.v.
Cần có hệ thống I / O để nhận yêu cầu I / O của ứng dụng và gửi đến thiết bị vật lý, sau đó nhận bất kỳ phản hồi nào từ thiết bị và gửi đến ứng dụng. Thiết bị I / O có thể được chia thành hai loại:
Block devices- Thiết bị khối là thiết bị mà trình điều khiển giao tiếp bằng cách gửi toàn bộ khối dữ liệu. Ví dụ, đĩa cứng, máy ảnh USB, Disk-On-Key, v.v.
Character devices- Thiết bị ký tự là thiết bị mà trình điều khiển giao tiếp bằng cách gửi và nhận các ký tự đơn (byte, octet). Ví dụ: cổng nối tiếp, cổng song song, thẻ âm thanh, v.v.
Bộ điều khiển thiết bị
Trình điều khiển thiết bị là các mô-đun phần mềm có thể được cắm vào hệ điều hành để xử lý một thiết bị cụ thể. Hệ điều hành nhận trợ giúp từ trình điều khiển thiết bị để xử lý tất cả các thiết bị I / O.
Bộ điều khiển Thiết bị hoạt động giống như một giao diện giữa thiết bị và trình điều khiển thiết bị. Các đơn vị I / O (Bàn phím, chuột, máy in, v.v.) thường bao gồm một thành phần cơ khí và một thành phần điện tử trong đó thành phần điện tử được gọi là bộ điều khiển thiết bị.
Luôn có một bộ điều khiển thiết bị và một trình điều khiển thiết bị cho mỗi thiết bị để giao tiếp với Hệ điều hành. Một bộ điều khiển thiết bị có thể xử lý nhiều thiết bị. Là một giao diện, nhiệm vụ chính của nó là chuyển đổi dòng bit nối tiếp thành khối byte, thực hiện sửa lỗi khi cần thiết.
Mọi thiết bị được kết nối với máy tính đều được kết nối bằng phích cắm và ổ cắm, và ổ cắm được kết nối với bộ điều khiển thiết bị. Sau đây là mô hình kết nối CPU, bộ nhớ, bộ điều khiển và thiết bị I / O trong đó bộ điều khiển CPU và thiết bị đều sử dụng một bus chung để giao tiếp.
I / O đồng bộ và không đồng bộ
Synchronous I/O - Trong lược đồ này, CPU sẽ đợi thực thi trong khi I / O tiến hành
Asynchronous I/O - I / O tiến hành đồng thời với việc thực thi CPU
Giao tiếp với thiết bị I / O
CPU phải có cách để truyền thông tin đến và đi từ thiết bị I / O. Có ba cách tiếp cận có sẵn để giao tiếp với CPU và Thiết bị.
- I / O hướng dẫn đặc biệt
- I / O được ánh xạ bộ nhớ
- Truy cập bộ nhớ trực tiếp (DMA)
I / O hướng dẫn đặc biệt
Điều này sử dụng các lệnh CPU được tạo riêng để điều khiển các thiết bị I / O. Các hướng dẫn này thường cho phép gửi dữ liệu đến thiết bị I / O hoặc đọc từ thiết bị I / O.
I / O được ánh xạ bộ nhớ
Khi sử dụng I / O được ánh xạ bộ nhớ, cùng một không gian địa chỉ được chia sẻ bởi bộ nhớ và các thiết bị I / O. Thiết bị được kết nối trực tiếp với các vị trí bộ nhớ chính nhất định để thiết bị I / O có thể chuyển khối dữ liệu đến / từ bộ nhớ mà không cần thông qua CPU.
Trong khi sử dụng IO được ánh xạ bộ nhớ, OS phân bổ bộ đệm trong bộ nhớ và thông báo cho thiết bị I / O sử dụng bộ đệm đó để gửi dữ liệu đến CPU. Thiết bị I / O hoạt động không đồng bộ với CPU, ngắt CPU khi kết thúc.
Ưu điểm của phương pháp này là mọi lệnh có thể truy cập bộ nhớ đều có thể được sử dụng để thao tác với thiết bị I / O. IO được ánh xạ bộ nhớ được sử dụng cho hầu hết các thiết bị I / O tốc độ cao như đĩa, giao diện truyền thông.
Truy cập bộ nhớ trực tiếp (DMA)
Các thiết bị chậm như bàn phím sẽ tạo ra một ngắt đến CPU chính sau khi mỗi byte được chuyển. Nếu một thiết bị nhanh như đĩa tạo ra một ngắt cho mỗi byte, hệ điều hành sẽ dành phần lớn thời gian để xử lý những ngắt này. Vì vậy, một máy tính điển hình sử dụng phần cứng truy cập bộ nhớ trực tiếp (DMA) để giảm chi phí này.
Truy cập bộ nhớ trực tiếp (DMA) có nghĩa là CPU cấp quyền cho mô-đun I / O để đọc hoặc ghi vào bộ nhớ mà không cần tham gia. Mô-đun DMA tự nó điều khiển việc trao đổi dữ liệu giữa bộ nhớ chính và thiết bị I / O. CPU chỉ tham gia vào lúc bắt đầu và kết thúc quá trình truyền và chỉ bị ngắt sau khi toàn bộ khối đã được chuyển.
Truy cập bộ nhớ trực tiếp cần một phần cứng đặc biệt được gọi là bộ điều khiển DMA (DMAC) để quản lý việc truyền dữ liệu và phân xử quyền truy cập vào bus hệ thống. Bộ điều khiển được lập trình với con trỏ nguồn và đích (nơi đọc / ghi dữ liệu), bộ đếm để theo dõi số byte được truyền và các cài đặt, bao gồm I / O và các loại bộ nhớ, ngắt và trạng thái cho các chu kỳ CPU.
Hệ điều hành sử dụng phần cứng DMA như sau:
Bươc | Sự miêu tả |
---|---|
1 | Trình điều khiển thiết bị được hướng dẫn để chuyển dữ liệu đĩa sang địa chỉ đệm X. |
2 | Sau đó trình điều khiển thiết bị ra lệnh cho bộ điều khiển đĩa chuyển dữ liệu vào bộ đệm. |
3 | Bộ điều khiển đĩa bắt đầu truyền DMA. |
4 | Bộ điều khiển đĩa gửi từng byte đến bộ điều khiển DMA. |
5 | Bộ điều khiển DMA chuyển các byte vào bộ đệm, tăng địa chỉ bộ nhớ, giảm bộ đếm C cho đến khi C trở về 0. |
6 | Khi C trở thành 0, DMA ngắt CPU để báo hiệu hoàn thành quá trình truyền. |
Thăm dò ý kiến so với Ngắt I / O
Máy tính phải có cách phát hiện sự xuất hiện của bất kỳ loại đầu vào nào. Có hai cách để điều này có thể xảy ra, được gọi làpolling và interrupts. Cả hai kỹ thuật này đều cho phép bộ xử lý đối phó với các sự kiện có thể xảy ra bất cứ lúc nào và không liên quan đến quá trình nó hiện đang chạy.
Thăm dò ý kiến I / O
Thăm dò ý kiến là cách đơn giản nhất để thiết bị I / O giao tiếp với bộ xử lý. Quá trình kiểm tra định kỳ tình trạng của thiết bị để xem đã đến lúc cho thao tác I / O tiếp theo hay chưa, được gọi là thăm dò. Thiết bị I / O chỉ cần đưa thông tin vào thanh ghi Trạng thái và bộ xử lý phải đến và lấy thông tin.
Hầu hết thời gian, các thiết bị sẽ không yêu cầu sự chú ý và khi một thiết bị làm vậy, nó sẽ phải đợi cho đến khi nó được chương trình thăm dò thẩm vấn tiếp theo. Đây là một phương pháp không hiệu quả và phần lớn thời gian của bộ xử lý bị lãng phí vào các cuộc thăm dò không cần thiết.
So sánh phương pháp này với việc một giáo viên liên tục hỏi từng học sinh trong lớp, hết học sinh này đến học sinh khác, nếu họ cần giúp đỡ. Rõ ràng là phương pháp hiệu quả hơn sẽ là học sinh thông báo cho giáo viên bất cứ khi nào họ yêu cầu hỗ trợ.
Ngắt I / O
Một sơ đồ thay thế để xử lý I / O là phương pháp điều khiển gián đoạn. Ngắt là một tín hiệu đến bộ vi xử lý từ một thiết bị cần được chú ý.
Bộ điều khiển thiết bị đặt tín hiệu ngắt trên bus khi nó cần sự chú ý của CPU khi CPU nhận được ngắt, Nó lưu trạng thái hiện tại của nó và gọi trình xử lý ngắt thích hợp bằng cách sử dụng vectơ ngắt (địa chỉ của các thói quen hệ điều hành để xử lý các sự kiện khác nhau). Khi thiết bị ngắt đã được xử lý, CPU tiếp tục với nhiệm vụ ban đầu của nó như thể nó chưa bao giờ bị ngắt.