Thứ Tư, 22 tháng 1, 2014

Quản lý nhập xuất

BÀI 9
HỆ THỐNG QUẢN LÝ NHẬP/XUẤT
I.KHÁI NIỆM
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 :
CÁC LỚP CHỨC NĂNG NHẬP/XUẤT
Xử lý của người dùng Tạo lời gọi nhập/xuất, định dạng nhập/xuất
Phần mềm độc lập thiết bị Đặt tên, bảo vệ, tổ chức khối, bộ đệm, định vị
Điều khiển thiết bị Thiết lập thanh ghi thiết bị, kiểm tra trạng thái
Kiểm soát ngắt Báo cho driver khi nhập/xuất hoàn tất
Phần cứng Thực hiện thao tác nhập/xuất
Ví dụ:
Một tiến trình , muốn đọc một khối từ một tập tin, phần mềm độc lập thiết bị (do hđh cung cấp) tìm
kiếm khối 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.

II. PHẦN CỨNG NHẬP/XUẤT
1. Thiết bị nhập/xuất
a) Phân loại: có hai loại là thiết bị khối và thiết bị tuần tự.
- Thiết bị khối : thông tin lưu trữ trong những khối có kích thước cố định, có địa chỉ xác định. Có thể
đọc hoặc ghi từng khối riêng biệt. Đĩa là một loại thiết bị khối.
- Thiết bị tuần tự: gửi và nhận dựa trên là chuỗi tuần tự các bits, không có xác định địa chỉ. Màn
hình, bàn phím, máy in, card mạng, chuột là thiết bị tuần tự.
Nhận xét: Có một số các thiết bị không phù hợp với hai loại trên, ví dụ đồng hồ không là thiết bị khối,
cũng không là thiết bị tuần tự.
b) Những đặc điểm của thiết bị I/O :
- Tốc độ truyền dữ liệu , ví dụ bàn phím : 0.01 KB/s, chuột 0.02 KB/s
- Công dụng.
- Đơn vị truyền dữ liệu (khối hoặc ký tự).
- Biểu diễn dữ liệu, điều này tùy thuộc vào từng thiết bị cụ thể.
- Tình trạng lỗi : nguyên nhân gây ra lỗi, cách mà chúng báo về
1
2. Tổ chức của chức năng I/O
Có ba cách để thực hiện I/O :
a) Bộ xử lý phát sinh một lệnh I/O đến các thiết bị I/O, sau đó, nó chờ cho đến khi thao tác I/O hoàn
tất rồi mới tiếp tục xử lý.
b) Bộ xử lý phát sinh một lệnh I/O đến các thiết bị I/O, sau đó, nó tiếp tục việc xử lý cho tới khi nhận
được một ngắt từ thiết bị I/O báo là đã hoàn tất, nó tạm ngưng việc xử lý hiện tại để chuyển qua xử lý
ngắt.
c) Sử dụng cơ chế DMA
Thông thường áp dụng phối hợp cách 2 và 3.
3. Bộ điều khiển thiết bị
Một thiết bị bị nhập xuất thường có kèm theo bộ phận điều khiển thiết bị hay card giao tiếp. card giao
tiếp có thể quản lý được nhiều thiết bị khác nhau. Ví dụ một card màn hình có thể điều khiển nhiều
màn hình. Thiết bị và bộ điều khiển phải tuân theo cùng chuẩn giao tiếp, ví dụ chuẩn ANSI, IEEE hay
ISO. .
Hệ điều hành không thể truy xuất trực tiếp với thiết bị mà phải thông qua bộ điều khiển dùng hệ thống
đường truyền gọi là bus.
Ví dụ : bộ điều khiển cho màn hình đọc các byte của ký tự để hiển thị trong bộ nhớ và tổ chức các tín
hiệu để điều khiển các tia của CRT để xuất trên màn ảnh bằng cách quét các tia dọc và ngang.
Mỗi bộ điều khiển có một số thanh ghi để liên lạc với CPU. Các thanh ghi này được gán một địa chỉ xác
định như là một phần của bộ nhớ chính, gọi là ánh xạ bộ nhớ nhập xuất.
Bộ điều khiển nhập/xuất Địa chỉ nhập/xuất Vectơ ngắt
Đồng hồ 040 - 043 8
Bàn phím 060 - 063 9
RS232 phụ 2F8 - 2FF 11
Đĩa cứng 320 - 32F 13
Máy in 378 - 37F 15
2
Màn hình mono 380 - 3BF -
Màn hình màu 3D0 - 3DF -
Đĩa mềm 3F0 - 3F7 14
RS232 chính 3F8 - 3FF 12
Hệ điều hành thực hiện nhập xuất bằng cách ghi lệnh lên các thanh ghi của bộ điều khiển và các tham
số cũng được nạp vào thanh ghi. Sau đó CPU sẽ thực hiện công việc khác, khi bộ điều khiển thực hiện
xong, sẽ phát sinh một ngắt để báo hiệu cho CPU biết và đến lấy kết quả được lưu giữ trong các thanh
ghi.
4. DMA (Direct Memory Access)
Xét quá trình đọc đĩa, CPU gửi cho bộ điều khiển lệnh đọc đĩa và các thông số như địa chỉ trên đĩa của
khối, địa chỉ trong bộ nhớ nơi cất khối, số byte cần chuyển. Bộ điều khiển sẽ đọc khối trên đĩa, từng
bit từng bit cho tới khi toàn bộ khối được đưa vào buffer của bộ điều khiển. Tiếp theo bộ điều khiển
tạo ra một ngắt để báo cho CPU biết. CPU đến lấy dữ liệu trong buffer chuyển về bộ nhớ chính bằng
cách tạo một vòng lặp đọc lần lượt từng byte. Thao tác này làm lãng phí thời gian của CPU.
Để tối ưu, bộ điều khiển thường được cung cấp thêm khả năng truy xuất bộ nhớ trực tiếp (DMA).
Nghĩa là sau khi bộ điều khiển đã đọc toàn bộ dữ liệu từ thiết bị vào buffer của nó . Bộ điều khiển
chuyển byte đầu tiên vào bộ nhớ chính tại địa chỉ được mô tả bởi địa chỉ bộ nhớ DMA. Sau đó nó tăng
địa chỉ DMA và giảm số bytes phải chuyển. Quá trình này lập cho tới khi số bytes phải chuyển bằng 0,
và bộ điều khiển tạo một ngắt. Như vậy bộ điều khiển tự chuyển khối vào trong bộ nhớ chính.

III. PHẦN MỀM NHẬP/XUẤT
1. Điều khiển thiết bị (Device drivers)
Mỗi device drivers kiểm soát mỗi loại thiết bị. Chức năng của device drivers là nhận những yêu cầu
nhập/xuất độc lập thiết bị ở lớp trên. Nếu driver đang bận, yêu cầu đó sẽ được đưa vào hàng đợi ,
ngược lại nó sẽ thực hiện ngay yêu cầu, bằng cách chuyển lệnh vào thanh ghi của bộ điều khiển thiết
bị.
2. Phần mềm nhập/xuất độc lập thiết bị
3
Chức năng cơ bản của phần mềm nhập/xuất độc lập thiết bị là những chức năng chung cho tất cả các
thiết bị và cung cấp một giao tiếp đồng nhất cho phần mềm phạm vi người sử dụng.
3. Phần mềm nhập/xuất phạm vi người sử dụng
lời gọi hệ thống nhập/xuất thường được thực hiện bởi các hàm thư viện.
Ví dụ khi trong chương trình C có lệnh
count = write(fd, buffer, nbytes) ;
IV. MỘT SỐ HỆ THỐNG I/O
1. HỆ THỐNG I/O ĐĨA
1.1 Các thuật toán truy xuất
Để truy xuất các khối trên đĩa, trước tiên phải di chuyển đầu đọc đến track thích hợp, thao tác này gọi
là seek và thời gian để hoàn tất gọi là seek time. Một khi đã đến đúng track, còn phải chờ cho đến khi
khối cần thiết đến dưới đầu đọc. Thời gian chờ này gọi là latency time. Cuối cùng là vận chuyển dữ
liệu giữa đĩa và bộ nhớ chính gọi là transfer time. Tổng thời gian cho dịch vụ đĩa chính là tổng của ba
khoảng thời gian trên. Trong đó seek time và latency time là mất nhiều thời gian nhất, do đó để giảm
thiểu thời gian truy xuất hệ điều hành đưa ra các thuật toán lập lịch truy xuất.
Lập lịch FCFS :
Phương pháp lập lịch đơn giản nhất là FCFS (first-come,first-served). Thuật toán này rất dễ lập trình
nhưng không cung cấp được một dịch vụ tốt. Ví dụ : cần phải đọc các khối theo thứ tự như sau :
98, 183, 37, 122, 14, 124, 65, và 67
Giả sử hiện tại đầu đọc đang ở vị trí 53. Như vậy đầu đọc lần lượt đi qua các khối 53, 98, 183, 37,
122, 14, 124, 65, và 67 như hình sau :
Lập lịch SSTF (shortest-seek-time-first)
Thuật toán này sẽ di chuyển đầu đọc đến các khối cần thiết theo vị trí lần lượt gần với vị trí hiện hành
của đầu đọc nhất. Ví dụ : cần đọc các khối như sau :
98, 183, 37, 122, 14, 124, 65, và 67
Giả sử hiện tại đầu đọc đang ở vị trí 53. Như vậy đầu đọc lần lượt đi qua các khối 53, 65, 67, 37, 14,
98, 122, 124 và 183 như hình sau :
4
Lập lịch SCAN
Theo thuật toán này, đầu đọc sẽ di chuyển về một phía của đĩa và từ đó di chuyển qua phía kia. Ví
dụ : cần đọc các khối như sau :
98, 183, 37, 122, 14, 124, 65, và 67
Giả sử hiện tại đầu đọc đang ở vị trí 53. Như vậy đầu đọc lần lượt đi qua các khối 53, 37, 14, 65, 67,
98, 122, 124 và 183 như hình sau :
Lập lịch C-SCAN
Thuật toán này tương tự như thuật toán SCAN, chỉ khác là khi nó di chuyển đến một đầu nào đó của
đĩa, nó sẽ lập tức trở về đầu bắt đầu của đĩa. Lấy lại ví dụ trên, khi đó thứ tự truy xuất các khối sẽ là :
53, 65, 67, 98, 122, 124, 183, 14, 37 như hình sau :
5
Lựa chọn thuật toán lập lịch :
Thuật toán SCAN và C-SCAN thích hợp cho những hệ thống phải truy xuất dữ liệu khối lượng lớn. Với
bất kỳ thuật toán lập lịch nào, điều quan trọng là khối lượng về số và kiểu khối cần truy xuất. Ví dụ ,
nếu số khối cần truy xuất là liên tục thì FCFS là thuật toán tốt.
1.2. RAM Disks
RAM disk dùng một phần của bộ nhớ chính để lưu trữ các khối. RAM disk có ưu điểm là cho phép truy
xuất nhanh chóng (không phải chờ quay hay tìm kiếm), thích hợp cho việc lưu trữ những chương trình
hay dữ liệu được truy xuất thường xuyên.
Một RAM disk được chia làm nhiều khối. Mỗi khối có cùng kích thước và vừa đúng bằng kích thước của
khối thực sự trên đĩa. Khi driver nhận được chỉ thị là đọc hoặc ghi một khối, nó sẽ tìm trong bộ nhớ
RAM disk vị trí của khối, và thực hiện việc đọc hay ghi trong đó thay vì từ đĩa .
1.3. Interleave
Bộ điều khiển đọc ghi đĩa phải thực hiện hai chức năng là đọc/ghi dữ liệu và chuyển dữ liệu vào hệ
thống. Để thực hiện được đồng bộ hai chức năng này, bộ điều khiển đọc đĩa cung cấp chức năng
interleave.
Trên đĩa các sector số hiệu liên tiếp nhau không nằm kế bên nhau mà có một khoảng cách nhất định,
khoảng cách này được xác định bởi quá trình format đĩa. Ví dụ : giả sử hệ thống chỉ có 17 sector, và
interleave được chọn là 4 thì các sector được bố trí theo thứ tự như sau :
1, 14, 10, 6, 2, 15, 11, 7, 3, 16, 12, 8, 4, 17, 13, 9, 5
Cách đọc lần lượt như sau :
Lần 1:
1, 14, 10, 6, 2, 15, 11, 7, 3, 16, 12, 8, 4, 17, 13, 9, 5
Lần 2:
6
1, 14, 10, 6, 2, 15, 11, 7, 3, 16, 12, 8, 4, 17, 13, 9, 5
Lần 3:
1, 14, 10, 6, 2, 15, 11, 7, 3, 16, 12, 8, 4, 17, 13, 9, 5
Lần 4:
1, 14, 10, 6, 2, 15, 11, 7, 3, 16, 12, 8, 4, 17, 13, 9, 5
Như vậy sau bốn lần thứ tự các sector đọc được vẫn là từ 1 đến 17

2. HỆ THỐNG I/O CHUẨN (terminals)
Mọi máy tính đều liên lạc với một hay nhiều terminals. Terminals có rất nhiều dạng khác nhau. Bộ điều
khiển terminals ẩn dấu mọi sự khác biệt, vì vậy phần độc lập thiết bị của hệ điều hành và chương trình
người sử dụng không cần thiết phải viết lại cho mỗi loại terminal.
II.1 Phần cứng terminal
Dưới quan điểm của hệ điều hành, terminal được chia làm hai loại lớn dựa vào cách liên lạc với hệ điều
hành. Loại thứ nhất bao gồm những loại terminal giao tiếp theo chuẩn RS-232. Loại thứ hai là những
terminal dùng ánh xạ bộ nhớ. Mỗi loại được chia làm nhiều loại nhỏ như hình sau :
Terminal RS-232 là những thiết bị bao gồm như bàn phím và màn hình. Đây là thiết bị giao tiếp tuần
tự, mỗi lần một bit. Những terminals này dùng connector 25-pin, một pin dùng để chuyển dữ liệu, một
pin dùng để nhận dữ liệu, một pin là nền, 22 pin còn lại có những chức năng khác nhau, hầu hết
thường thường không dùng đến. Để gởi một ký tự cho terminal RS-232, máy tính mỗi lần chuyển một
bit, ngoài ra có một bit bắt đầu, và sau đó có 1 hoặc 2 bit kết thúc để giới hạn một ký tự. Thường
thường tốc độ vận chuyển là 1200, 2400, 4800, 9600…bps. Vì cả máy tính và terminal đều làm việc với
ký tự mà phải liên lạc với nhau bằng bit nên hệ thống phải thiết kế bộ chuyển đổi gọi là UART. Bộ
phận này được gắn vào các card giao tiếp của RS-232.
7
Để in một ký tự, bộ điều khiển terminal ghi một ký tự lên card giao tiếp, sau đó sẽ chuyển cho UART.
Terminal RS-232 được chia làm nhiều loại. Dạng đơn giản nhất là terminal hardcopy(printing). Ví dụ
các ký tự được nhập vào từ bàn phím và chuyển cho máy tính. Các ký tự từ máy tính xuất ra máy in.
Dạng tương tự như vậy nhưng ký tự được xuất trên màn hình gọi là "glass ttys" do đó nó cũng có chức
năng tương tự như trên. Terminals intelligent dùng trong máy tính nhỏ. Điểm khác biệt với loại trên
dưới quan điểm hệ điều hành là nó sẽ gữi ký tự ASCII ESC sau những ký tự khác nhau dùng để chuyển
cursor đến vị trí bất kỳ trên màn hình, chèn một dòng vào giữa màn hình. Blit là một terminal có bộ xử
lý mạnh và một màn hình có 1024x800 điểm giao tiếp với máy tính bằng RS-232.
II.2 Terminal ánh xạ bộ nhớ
Dạng thứ hai của terminal là terminal ánh xạ bộ nhớ. Loại này không giao tiếp với máy tính qua đường
serial. Nó là một phần của của hệ thống máy tính. Terminal ánh xạ bộ nhớ giao tiếp bằng một bộ nhớ
đặc biệt gọi là video RAM, là một phần của bộ nhớ chính được định vị bởi CPU.
Trên card video RAM có một chip gọi là bộ điều khiển video. Chip này sẽ lấy thông tin từ video RAM và
tạo ra tín hiệu video để điều khiển màn hình. Màn hình tạo những tia điện tử quét từ trên xuống dưới.
Thường thường có khoảng từ 200 đến 1200 dòng, trên mỗi dòng có từ 200 đến 1200 điểm. Mỗi điểm
được gọi là pixel. Bộ điều khiển tín hiệu sẽ xác định mỗi điểm là sáng hay tối. Màn hình màu sẽ có ba
tia là đỏ, lục và xanh.
Thông thường màn hình mono xây dựng một ký tự trong một box có chiều rộng là 9 pixel và chiều cao
là 14 pixel (bao gồm khoảng trống giữa những ký tự) như vậy sẽ có 25 dòng và mỗi dòng có 80 ký tự.
Mỗi khung được vẽ lại từ 45 đến 70 lần trong một giây. Bộ điều khiển video đặt các dòng 80 ký tự vào
trong video RAM.
Một ví dụ về màn hình ánh xạ ký tự trên máy IBM PC. Một phần bộ nhớ chính bắt đầu từ địa chỉ
0xB000 cho màn hình đơn sắc và 0xB800 cho màn hình màu. Mỗi ký tự trên màn hình chiếm hai bytes
8
trong bộ nhớ. Byte thấp chứa giá trị ASCII của ký tự, byte cao chứa thuộc tính như màu sắc, nhấp
nháy v.v Màn hình 80x25 sẽ chiếm 4000 bytes bộ nhớ video RAM
Khi CPU ghi một ký tự vào video RAM, nó xuất hiện trên màn hình theo mỗi lần hiển thị (1/50 giây cho
mono, 1/60 cho màu ). CPU có thể nạp 4K ảnh màn hình đã được tính trước vào video RAM trong vài
phần triệu giây. Với tốc độ 9600 bps, ghi 2000 ký tự vào terminal RS-232 mất khoảng 2083 phần triệu
giây. Terminal ánh xạ bộ nhớ cho phép truy xuất rất nhanh.
Terminal bit-map tương tự như vậy, ngoại trừ là mọi bit trong video RAM kiểm soát mỗi điểm trên màn
hình. Màn hình có 1024x800 pixel cần dùng 100 K bộ nhớ nhưng khó thiết kế font và kích thước cho ký
tự. Bàn phím giao tiếp thông qua cổng song song và giao tiếp RS-232. Mỗi khi gõ phím vào, CPU bị
ngắt, bộ điều khiển bàn phím xác định kiểu ký tự được đọc từ cổng I/O. Đôi khi bàn phím chỉ cung cấp
số hiệu phím , không phải mã ASCII. Trên IBM PC khi gõ phím A mã ký tự 30 được đưa vào thanh ghi
I/O. Bộ điều khiển xác định ký tự là chữ hoa hay chữ thường hay là tổ hợp phím.
II.3 Phần mềm nhập
Bàn phím và màn hình hầu như độc lập với thiết bị. Công việc cơ bản của bộ điều khiển bàn phím là
tập hợp các dữ liệu nhập từ bàn phím và chuyển cho chương trình của người sử dụng. Khi có một phím
được gõ, nó sẽ gây một ngắt, và bộ điều khiển yêu cầu ký tự trong suốt quá trình ngắt này. Nếu ngắt
được gây ra bởi một lời gọi ngắt của một ngôn ngữ lập trình cấp thấp nó sẽ chuyển ký tự này cho
chương trình đó. Nó sử dụng một buffer trong bộ nhớ chính và một thông điệp để báo cho bộ điều
khiển biết đã có ký tự nhập. Một khi bộ điều khiển nhận một ký tự, nó sẽ bắt đầu xử lý. Nếu dưới dạng
mã bàn phím, nó sẽ ánh xạ lại mã ASCII thật. Nếu terminal ở dạng cook, ký tự phải được lưu trữ cho
tới khi nhận được hết dòng vì người sử dụng có thể xóa một phần nội dung của nó.
Có hai loại buffer thông thường. Dạng thứ nhất, bộ điều khiển chứa pool chính của buffer, mỗi buffer
chứa 16 ký tự. Có một cấu trúc dữ liệu liên kết với nó, trong đó có chứa một con trỏ trỏ tới chuỗi trong
buffer. Khi ký tự chuyển cho chương trình, nó sẽ được loại khỏi buffer. Dạng thứ hai là buffer trực tiếp
có cấu trúc dữ liệu vì nếu tổ chức theo dạng thứ nhất sẽ không đủ bộ nhớ. Hình sau cho biết sự khác
biệt giữa hai cách như hình sau:
9
Mặt dù màn hình và bàn phím là hai thiết bị logic riêng biệt, nhưng mọi người đều quen với việc gõ ký
tự và xem nó xuất hiện trên màn hình. Một số terminal cho phép tự động hiển thị lên màn hình những
gì vừa gõ hoặc chỉ là những dấu . khi gõ password. Một số terminal không hiển thị ký tự được gõ do
đó phải dựa vào phần mềm để hiển thị input, xử lý này gọi là echoing.
Echoing phức tạp vì chương trình phải xuất lên màn hình khi người dùng gõ vào. Bộ điều khiển bàn
phím phải kiểm soát không cho ghi chồng lên output của chương trình. Echoing cũng gặp khó khăn khi
người nhập gõ nhiều hơn 80 ký tự trên màn hình 80 ký tự một dòng. Một vấn đề khác là xử lý tab. Bộ
điều khiển phải tính toán vị trí hiện thời cursor sau đó tính toán để chuyển cho chương trình và cho
echoing và tính toán bao nhiêu khoảng trống phải hiển thị. Vấn đề tiếp theo là phải xử lý carriage
return và line feed để chuyển cursor qua đầu dòng mới. Việc xử lý này tùy thuộc vào các hệ điều hành
khác nhau. Ngoài ra phải kiểm soát tổ hợp ký tư và những ký tự xoá, lùi, hay các phím chức năng.
II.4 Phần mềm xuất
Phần mềm xuất thì đơn giản hơn nhập nhưng ở hai dạng thiết bị terminal RS-232 và ánh xạ bộ nhớ là
khác nhau. Phương pháp thông thường của terminal RS-232 là có một buffer xuất cho mỗi loại
terminal. Dạng buffer có thể là pool như buffer nhập hay là dạng tận hiến như input. Khi chương trình
ghi lên terminal, trước tiên nó xuất lên buffer. Sau khi đã xuất lên buffer, ký tự đầu tiên được xuất, sau
đó bộ điều khiển tạm dừng, khi có một ngắt phát sinh, ký tự tiếp theo sẽ được xuất, và cứ tiếp tục
như vậy.
Với terminal ánh xạ bộ nhớ, vấn đề đơn giản hơn. Những ký tự được in được xuất một lần từ chương
trình người dùng được xuất lên video RAM. Với một số kýtự sẽ được xư lý đặc biệt. Ví dụ : backspace,
carriage return, line feed, và bell (CTRL-G). Bộ điều khiển ánh xạ bộ nhớ, lưu giữ trong phần mềm vị
trí của video RAM, vì vậy những ký tự in được được xuất trên đó theo thứ tự, các ký tự đặc biệt cũng
được cập nhật thích hợp.
Khi một line feed được xuất tại cuối dòng của màn hình, màn hình sẽ cuộn. Thường thường phần cứng
cung cấp một số giúp đỡ ở đây. Hầu hết những bộ điều khiển màn hình chứa một thanh ghi xác định
vị trí của video RAM để bắt đầu đặt các byte vào dòng đầu tiên của màn hình. Phần mềm soạn thảo
màn hình phải có nhiều xử lý phức tạp hơn là chỉ xuống dòng. Để tương thích, một số bộ điều khiển
terminal hỗ trợ một số xử lý, thông thường là :
Di chuyển cursor lên, xuống, trái, phải của một vị trí.
Di chuyển cursor đến vị trí x,y.
Chèn một ký tự hay chèn một dòng.
Xóa một ký tự hay một dòng.
Cuộn màn hình lên hoặc xuống n dòng.
Xoá màn hinh từ vị trí cursor đến cuối dòng hoặc màn hình.
10
Tạo tương phản, gạch dưới, nhấp nháy, hay mode thường.
Tạo, hủy, di chuyển quản trị các cửa sổ.

III. CÀI ĐẶT ĐỒNG HỒ
Đồng hồ còn được gọi là timer, là bộ phận rất cần thiết cho các thao tác của những hệ thống chia sẻ vì
nhiều nguyên nhân khác nhau. Nó kiểm soát thời gian trong ngày và không cho phép một tiến trỉnh
nào đó độc chiếm CPU trong khi tồn tại những tiến trình khác. Phần mềm đồng hồ có thể xem như là
device driver mặc dù đồng hồ không phải là thiết bị khối như đĩa hay thiết bị tuần tự như bàn phím,
màn hình.
III.1 Phần cứng đồng hồ
Trong máy tính thường sử dụng hai loại đồng hồ nhưng cả hai đều khác với đồng hồ người sử dụng
thông thường. Dạng đơn giản sử dụng đồng hồ với điện thế 110v hay 220v, và tạo ra ngắt theo mỗi
chu kỳ của hiệu điện thế, từ 50 đến 60 MHz.
Một dạng khác của đồng hồ được xây dựng dựa trên ba thành phần : bộ dao động bằng thạch anh,
bột đếm và bộ thanh ghi lưu trữ như hình vẽ. Dưới tác dụng của dòng điện, tinh thể thạch anh tạo ra
dao động. Nhịp dao động rất chính xác theo thời gian, thường thường vào khoảng từ 5 đến 100 MHz
tùy theo mỗi loại thạch anh. Tín hiệu này sẽ chuyển cho bộ đếm và bộ đếm sẽ thực hiện việc đếm lùi
về 0. Khi bộ đếm có giá trị là 0, nó sẽ gây ra một ngắt CPU. Điều gì xảy ra tiếp theo là do hệ điều
hành.
Dạng đồng hồ có thể lập trình có vài dạng thao tác. Thứ nhất là one-shot, khi đồng hồ khởi động, nó
sẽ copy giá trị trong thanh ghi lưu trữ vào bộ đếm và sau đó giảm bộ đếm sau mỗi nhịp của thạch
anh. Khi bộ đếm đến giá trị 0, nó sẽ gây ra một ngắt và dừng lại cho đến khi phần mềm khởi động lại
nó. Thứ hai là square-wave, khi đến giá trị 0, nó sẽ gây ra một ngắt, bộ thanh ghi lưu trữ tự động nạp
lại giá trị vào bộ đếm, và tiến trình sẽ được lập lại. Những ngắt phát sinh định kỳ này gọi là clock tick.
Ưu điểm của đồng hồ có thể lập trình là ngắt định kỳ được điều khiển bởi phần mềm. Nếu sử dụng tin
thể thạch anh có tần số 1 MHz, bộ đếm sẽ có nhịp là mỗi micro giây. Với thanh ghi 16 bit, ngắt có thể
được lập trình để xảy ra trong khoảng từ 1 đến 65535 msec.
III.2 Phần mềm đồng hồ
Tất cả mọi việc mà phần cứng đồng hồ thực hiện tạo ra các ngắt theo từng khoảng thời gian đều đặn.
Mọi điều khác đều được thực hiện bởi phần mềm đồng hồ, là driver đồng hồ. Công việc của driver
đồng hồ trên mỗi hệ điều hành là khác nhau, nhưng thường bao gồm những chức năng chính như
sau :
Quản lý thời gian trong ngày.
Không cho phép tiến trình chạy lâu hơn thời gian mà nó được phép.
11
Kế toán việc sử dụng CPU.
Cung cấp watchdog timer cho một phần của chính hệ thống đó.
Chức năng đầu tiên của đồng hồ, quản lý thời gian trong ngày thì không khó. Chỉ cần tăng một bộ
đếm sau mỗi nhịp của đồng hồ như đề cập ở trên. Vấn đề lưu ý ở đây là số lượng bit cho bộ counter.
Với đồng hồ ở tần số 60 MHz, một bộ đếm 32 bit sẽ bị tràn sau hai năm. Do đó hệ thống không thể
lưu trữ thời gian thực sự dưới dạng số nhịp từ 01/01/1970. Có ba cách giải quyết. Thứ nhất, dùng bộ
đếm 64 bit, giải pháp này tốn kém. Thứ hai, lưu trữ dưới dạng giây thay vì nhịp vì 2
32
giây sẽ là 136
năm. Thứ ba, đếm theo nhịp, nhưng liên hệ với thời gian của hệ thống khi khởi động.
Chức năng thứ hai là không cho phép một tiến trình thực hiện quá lâu. Khi nào một 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ị của bộ đếm, khi nào
giá trị bằng 0, bộ điều khiển đồng hồ sẽ yêu cầu bộ lập lịch thiết lập giá trị cho một tiến trình khác.
Chức năng thứ ba là kế toán việc sử dụng CPU. Cách thức chính xác nhất là sử dụng một bộ timer
thứ hai, khác với timer hệ thống. Bộ timer thứ hai khởi động khi tiến trình bắt đầu và khi tiến trình kết
thúc, timer này sẽ cho biết thời gian tiến trình đã thực hiện.
Phần lớn hệ thống cần thiết thiết lập timer. Gọi là watchdog timer. Ví dụ, để sử dụng đĩa mềm, hệ
thống phải khởi động motor và chờ khoảng 500msec đạt được tốc độ. Vì vậy, ý tưởng tốt là phải sử
dụng watchdog timer để chờ cho thao tác I/O tiếp theo, vào khoảng 3 giây, không tắt motor.
Câu hỏi kiểm tra kiến thức
1. So sánh các thuật toán đọc đĩa.
2. Lựa chọn các thuậ toán đọc đĩa như thế nào ?
3. Nguyên nhân các lỗi khi truy xuất đĩa và cách khắc phục ?
4. RAM disks là gì ?
5. Vì sao có cơ chế Interleave ?
6. Đặc điểm của phần cứng terminal.
7. Terminal ánh xạ bộ nhớ dùng để làm gì ?
8. Vai trò của đồng hồ.
Bài tập
Giả sử đĩa có 2 side, mỗi side có 1024 track, mỗi track có 32 sector. Tốc độ xoay của đĩa là 6000
vòng/phút. Thời gian di chuyển giữa các track là 100ms. Giả sử thời gian đọc và chuyển dữ liệu là
không đáng kể. Cho biết để truy xuất tất cả sector logic sau phải tốn bao lâu :
34, 16, 120, 14, 86, 200, 79, 300, 8, 500, 170, 450, 1000, 380, 800
Biết :
Sector = Seclog / SecTrk + 1
Side = (Seclog/SecTrk) / SideNo
12

Xem chi tiết: Quản lý nhập xuất


Không có nhận xét nào:

Đăng nhận xét