KỸ THUẬT NHẬP XUẤT

Một phần của tài liệu Giao Trinh He Dieu Hanh (Trang 69 - 73)

QUẢN LÝ NHẬP XUẤT

II. KỸ THUẬT NHẬP XUẤT

1) Kỹ thuật Busy-Waitting: (chờ trong trạng thái bận rộn)

Đây là phương pháp nhập xuất đơn giản nhất. Khi một chương trình muốn nhập xuất dữ liệu thì nó phát lời gọi hệ thống (system call) đến hệ điều hành.

Hệ điều hành sẽ chuyển lời gọi đó đến thiết bị mà chương trình cần. Driver của thiết bị sẽ khởi động việc nhập xuất và chờ cho đến khi việc nhập xuất hoàn thành tại thiết bị đó. Sau đó, driver sẽ chuyển dữ liệu đến nơi cần thiết rồi kết thúc. Lúc này, hệ điều hành trả điều khiển trở lại chương trình vừa gọi nhập xuất. Phương pháp này được gọi là Busy-Waitting vì trong khi việc nhập xuất đang thực hiện thì CPU nhàn rỗi nhưng không thể gán CPU cho process nào cả.

2) Ngắt quãng (interrupt):

Ngắt quãng là một sự kiện phát sinh từ phần cứng hay yêu cầu từ chương trình. Ngắt làm tạm ngưng chương trình đang thực hiện để chuyển sang thực hiện một công việc khác. Sau khi thực hiện xong thì chương trình bị ngắt sẽ tiếp tục thực hiện trở lại.

Máy tính có tất cả 256 ngắt, đánh số từ 00 hexa đến FF hexa. Mỗi ngắt có một chương trình xử lý đi kèm theo. Các chương trình này được gọi là các chương trình xử lý ngắt. Các chương trình xử lý ngắt nằm trong bộ nhớ. Muốn gọi chương trình xử lý ngắt thì ta phải biết địa chỉ của nó trong bộ nhớ. Bảng vector ngắt là một vùng nhớ có kích thước 1KB dùng để lưu địa chỉ của tất cả các chương trình xử lý ngắt.

CPU memory bộ điều

khiển đĩa bộ điều khiển

máy in bộ điều khiển các thiết bị khác máy in

giao tieáp thieát bò

Địa chỉ của 1 ngắt là 4 bytes. 4 bytes x 256 =1024 = 1KB. Bảng vector ngắt nằm ở đầu bộ nhớ, từ địa chỉ 0000:0000 đến 0000:03FF hexa.

Ngắt được chia làm hai loại:

− Ngắt mềm: phát sinh do yêu cầu của chương trình.

− Ngắt cứng: được phát sinh từ các thiết bị phần cứng.

Một ví dụ về một quá trình nhập xuất có dùng interrupt:

Hãy quan sát hình vẽ sau:

Bước 1: Driver ra phát lệnh cho controller bằng cách ghi yêu cầu vào các thanh ghi của controller. Controller liền khởi động thiết bị để đọc hoặc ghi.

Bước 2: Khi controller hoàn thành việc đọc hoặc ghi số lượng byte theo yêu cầu của lệnh thì nó sẽ phát tín hiệu đến bộ điều khiển ngắt quãng (interrupt controller).

Bước 3: Bộ điều khiển ngắt quãng sẽ kết nối đến CPU, gởi số hiệu của thiết bị vừa mới hoàn thành nhập xuất đến CPU. CPU nhận biết và phân biệt đó là thiết bị nào (vì có nhiều thiết bị chạy cùng một lúc).

CPU liền lưu thông tin của chương trình mà nó đang chạy vào stack rồi chuyển đến thực hiện chương trình ngắt tương ứng với thiết bị. Khi hoàn thành chương trình ngắt, CPU thực hiện tiếp tục chương trình trước đó theo các thông tin từ stack.

chương trình đang thực hiện

chửụng trình ngaét

CPU

Interrupt Controller

Disk Controller Disk Driver (1)

(1)

(1) (3) (2)

3) Kỹ thuật DMA: (Direct Memory Access)

Phương pháp nhập xuất này dùng một mạch đặc biệt là DMA chip. Nó có thể điều khiển luồng bit dữ liệu giữa bộ nhớ và contronller mà không cần sự can thiệp thường xuyên của CPU. Khi nhận được một yêu cầu nhập xuất nào đó, CPU sẽ khởi động DMA chip, thông báo với DMA chip các thông tin như: cần phải chuyển bao nhiêu bit, thiết bị và vùng nhớ nào tham gia nhập xuất, hướng truyền dữ liệu từ bộ nhớ ra thiết bị hay ngược lại. Thông báo xong thì DMA chip thực hiện việc trao đổi dữ liệu, còn CPU có thể đi thực hiện một công việc khác.

Khi DMA chip hoàn thành việc nhập xuất, nó sẽ phát sinh một ngắt đến CPU để báo hoàn thành.

4) I/O port:

Mỗi một controller của các thiết bị nhập xuất đều có một vài thanh ghi của nó. Các thanh ghi này được dùng giao tiếp với CPU. CPU ra lệnh cho thiết bị bằng việc ghi thông tin vào các thanh ghi này. Ngược lại, thông qua các thanh ghi này mà CPU biết được trạng thái của thiết bị. Ngoài ra, một số thiết bị còn được hệ điều hành cấp cho một vùng nhớ cho phép hệ điều hành và chương trình trao đổi thông tin với thiết bị thông qua vùng nhớ đó. Người ta gọi đó là cơ chế nhập xuất ánh xạ bộ nhớ (Memory-Mapped I/O). Vùng nhớ đó được xem như là một cổng nhập xuất (I/O port).

Vùng địa chỉ của một số cổng:

vuứng ủũa chổ thieỏt bũ

000-00F DMA controller

020-021 interrupt controller

040-043 timer

200-20F game cotroller

2F8-2FF serial port (secondry) 320-32F harddisk-controller

378-37F parallel port

3D0-3DF graphics controller 3F0-3F7 diskett-drive controller 3F8-3FF serial port (primary) 5) I/O buffering:

Buffer dùng để lưu giữ tạm thời dữ liệu. Kỹ thuật buffering là kỹ thuật dùng một hay nhiều buffer để lưu giữ tạm thời dữ liệu cho quá trình chuyển giao (transfer) dữ liệu giữa chương trình người dùng và thiết bị nhập xuất.

Các dạng tổ chức buffer:

Không có buffer: dữ liệu được chuyển trực tiếp giữa thiết bị I/O và chửụng trỡnh.

Single-buffer (buffer đơn): Dữ liệu được đọc, ghi tuần tự vào buffer.

Dữ liệu vào buffer, sau đó được chuyển đến process đang cần. Khi đọc dữ liệu ra thì không được ghi dữ liệu vào (và ngược lại).

Double buffer (buffer đôi): Dùng 2 buffer. Khi dữ liệu đang được ghi vào ở buffer này thì việc đọc dữ liệu ra được thực hiện ở buffer kia (và ngược lại).

Circular buffer: gồm nhiều buffer. Là sự cải tiến của Double buffer.

Một phần của tài liệu Giao Trinh He Dieu Hanh (Trang 69 - 73)

Tải bản đầy đủ (PDF)

(96 trang)