5.1 – Nguyên tắc phân cấp trong quản lý thiết bị ngoại vi
Ở các máy tính thế hệ thứ I và thế thế hệ thứ II được kết nối trực tiếp với bộ
xử lý (processor). Điều này có nghĩa là có đường BUS nối trực tiếp processor với thiết bị ngoại vi. Processor trực tiếp quản lý hoạt động của thiết bị ngoại vi. Trong
hệ lệnh của máy phải có các lệnh phục vụ trao đổi thông tin với thiết bị ngoại vi.
Điều này làm số lượng và chủng loại thiết bị ngoại vi bị hạn chế. Số lượng thiết bị ngoại vi được kết nối bị hạn chế bởi số lượng đường BUS đã thiết kế. Thiết
bị ngoại vi chỉ có thể kết nối với máy tính cùng loại bởi vì phải đồng bộ với tín hiệu điều khiển từ processor.
Tốc độ trung bình của hệ thống bị giảm đáng kể do thời gian thực hiện các phép trao đổi vào ra là rất lớn.
Các máy tính từ thế hệ thứ III trở đi các thiết bị được thiết kế dưới dạng nhóm thiết bị độc lập. Bản thân processor trở thành Bộ xử lý trung tâm (Central
Processor Unit – CPU). CPU không làm việc trực tiếp với thiết bị ngoại vi mà chỉ
làm việc với các Thiết bị điều khiển vào ra (Control Devices, hay còn gọi là Controllers). Thiết bị điều khiển vào ra mới kết nối và làm việc với thiết bị vào ra.
Các thiết bị điều khiển và thiết bị vào ra hoạt động như những máy tính chuyên dụng. Chúng hoạt động độc lập với nhau và độc lập với Bộ xử lý trung tâm. Mỗi thiết bị này là một máy tính chuyên dụng với hệ lệnh riêng và ngôn ngữ riêng. Các thiết bị này được điều khiển bằng chương trình. Khi nhận được tín hiệu số do controller chuyển đến, mỗi thiết bị vào ra xử lý nó theo cách riêng của mình. Như
Nội dung của chương V bao gồm hai phần tương đối độc
lậpnhưng có quan hệ chặt chẽ với nhau.Phần I liên quan tới nguyên tắc quản lý thiết bị ngoại vi, quy trình thực hiện một phép trao đổi vào/ra và các kỹ thuật nâng cao hiệu quả hoạt động của
hệ thống trong việc tổ chức vào ra. Phần II của chương xét các vấn đề liên quan tới file, hệ thống quản lý file vàcác vấn đề liên
quan tới tổ chức cơ sở dữ liệu quản lý file.
vậy, cùng một tín hiệu số nhưng hành động thực hiện ở những thiết bị ngoại vi khác nhau có thể khác nhau.
Mỗi thiết bị điều khiển cùng với các thiết bị vào ra gắn với nó tạo thành một cụm thiết bị độc lập gọi là một kênh (Channel). Chương trình viết trên ngôn ngữ
Hình 5.1. Cấu trúc phân cấp trong quản lý thiết bị vào/ra.
Thực hiện chương trình kênh
+ M
ã trở về Xử lý Ngắt Vào/Ra
Thực hiện chương trình kênh
+ M
ã trở về Xử lý Ngắt Vào/Ra
Hình 5.2. Sơ đồ thực hiện phép trao đổi vào/ra.
thiết bị vào ra và ngôn ngữ của controller được gọi là chương trình kênh.
Khi thực hiện một phép trao đổi vào/ra CPU tạo ra chương trình kênh, chuyển giao chương trình kênh này cho kênh và tiếp tục thực hiện các công việc của mình. Như vậy phép trao đổi vào/ra được thực hiện theo nguyên lý Macroprocessor. Điều này lý giải tại sao cùng một chương trình ở những lần thực hiện khác nhau dữ liệu
có thể được nhập vào từ những thiết bị khác nhau và cũng có thể đưa thông tin ra các thiết bị khác nhau.
Khi nhận được chương trình kênh, ở những hệ thống được tổ chức tốt, kênh
sẽ thực hiện chương trình nhận được song song với hoạt động của CPU. Khi thực hiện xong chương trình nhận được, kênh sẽ báo về cho CPU dưới dạng tín hiệu ngắt vào/ra (I/O Interrupt) và cung cấp Mã trở về (Return Code). Nếu không có gì đặc biệt, CPU sẽ tạm dừng công việc của mình, chuyển sang thực hiện chương trình Xử lý ngắt vào/ra. Chương trình này phân tích Mã trở về, đánh giá chất lượng thực hiện chương trình kênh.
Nếu việc vào/ra được thực hiện tốt và còn có nhu cầu trao đổi vào/ra, hệ thống sẽ tạo và cung cấp tiếp cho kênh chương trình mới.
Nếu có lỗi khi thực hiện trao đổi vào/ra hệ thống sẽ tổ chức thực hiện lại chương trình kênh. Sau một số lần thực hiện lại mà vẫn gặp lỗi (với WINDOWS là
8 lần) thì hệ thống sẽ thông báo vào ra tương ứng.
Để tạo được chương trình kênh CPU cần:
Biết ngôn ngữ của kênh,
Có các mô đun (Tools) khởi tạo trên ngôn ngữ kênh các phép trao đổi vào/ra theo yêu cầu.
Các khối quản lý thiết bị do driver cung cấp sẽ đảm bảo các thông tin về ngôn ngữ của kênh. Mỗi thiết bị cần có một bộ chương trình (các Tools) khởi tạo chương trình kênh cho mình.
Bản thân các thiết bị điều khiển (controller) cũng phức tạp không kém CPU.
Ở các máy tính thế hệ thứ IV kích thước các controller đã được thu nhỏ một cách đáng kể và được tổ chức dưới dạng các Cards vào/ra. Vào cuối những năm 80 của thế kỷ XX, cards vào ra vẫn còn khá cồng kềnh. Mỗi loại thiết bị phải có một card riêng! Như vậy phải có card điều khiển đĩa mềm, card điều khiển đĩa cứng, card điều khiển chuột v.v….
Việc xây dựng các tools tạo chương trình kênh được gọi là lập trình trên card
vào ra.
Đến đầu những năm 90 tiến bộ công nghệ cho phép thu gọn các cards, tập trung chúng lại trên vài ba tấm cards rời. Cuối những năm 90 người ta đã chế tạo được các máy tính có cards in ngay trên bảng mạch chính. Đó là các máy tính cards liền (Cards on Board).
Ngay từ những năm 70 người ta đã thiết kế controller có nhiệm vụ quản lý các controllers khác – các controllers con. Các controllers con này mới quản lý thiết bị ngoại vi. Như vậy đã hình thành một kênh trong đó có chứa các kênh con. Kênh này được gọi là kênh bó (kênh Multiplex).
Kênh bó thường bao gồm các kênh con có
liên hệ với nhau và thường được khai thác đồng
thời. Phổ biến hiện nay là kênh bó bao gồm kênh
âm thanh và kênh hình ảnh.
Ở máy tính cá nhân card quản lý kênh bó
được gọi là card đa phương tiện (Multimedia).
Với sự ra đời và phổ biến của card đa phương
tiện tin học có thêm hai loại dữ liệu cơ bản là âm
thanh và hình ảnh. Người ta phải xây dựng các
chuẩn mực để lưu trữ dữ liệu âm thanh và hình
ảnh, trang bị các công cụ để xử lý chúng.
Hình 5.3. Card điều khiển đĩa
mềm.
Hình 5.4. Card điều khiển đĩa
cứng.
Hình 5.5. Kênh bó (Multiplex).
5.2 – Xử lý yêu cầu trao đổi vào/ra
Quản lý thiết bị ngoại vi chủ yếu là phục vụ cho việc thực hiện các yêu cầu trao đổi vào/ra nêu trong chương trình. Mặc dù người dùng nêu các yêu cầu trao đổi vào ra dưới dạng các phép xử lý cơ sở của thiết bị nhưng hệ thống vẫn phải thực hiện một số hành động liên quan tới quản lý thiết bị. Đó là công việc như phân phối bộ nhớ trên thiết bị, quyền sử dụng đường truyền tới thiết bị, trực tiếp truy xuất tới thiết bị, v.v…
5.2.1 – Phân phối bộ nhớ
Thiết bị vào ra mà người sử dụng yêu cầu có thể là loại dùng chung, đồng thời
có thể phục vụ cho nhiều người dùng, nhiều chương trình hoặc cũng có thể là loại không phân chia – chỉ có thể phục vụ cho một người dùng, một chương trình cho đến khi người dùng hay chương trình trả lại thiết bị cho hệ thống. Máy in là thiết bị điển hình cho loại không phân chia. Đĩa cứng (HD), đĩa đặc (SSD) là các thiết bị dùng chung được. Các thiết bị không phân chia phải được phân phối liên tục cho một chương trình trong suốt một khoảng thời gian nhất định. Việc phân phối cho mỗi chương trình, mỗi người dùng một thiết bị không phân chia khi có yêu cầu là không kinh tế và không khả thi về mặt kỹ thuật. Hệ thống giải quyết khó khăn này bằng con đường tạo ra các thiết bị lô gic (thiết bị ảo) để đảm bảo việc thực hiện chương trình được liên tục. Việc gắn thiết bị vật lý không phân chia được cho chương trình hay người dùng sớm hay muộn cũng sẽ phải được thực hiện, nhưng thời điểm và khoảng thời gian gắn sẽ do chương trình điều phối của hệ thống đảm nhiệm.
Tuy vậy, ngay cả đối với những thiết bị này hệ thống cũng không để người dùng truy cập trực tiếp tới thiết bị vì hai lý do:
Có thể làm giảm đáng kể năng suất của hệ thống. Nếu người dùng lần lượt truy nhập tới các khối thông tin ở xa nhau trên đĩa cứng, hiệu suất làm việc của ổ đĩa sẽ bị giảm đáng kể do thời gian dẫn dắt đầu từ lớn hơn rất nhiều so với thời gian đọc/ghi thông tin.
Có nguy cơ dữ liệu của một người sẽ bị người khác đọc, sao chép, sửa đổi hoặc xóa.
Chính vì vậy việc truy nhập tới các thiết bị phân chia được cũng do hệ thống quản lý. Đó là chức năng của hệ quản lý vào/ra hay còn gọi là supervisor vào/ra.
Các thiết bị có khả năng dùng chung thường được sử dụng như bộ nhớ ngoài. Chúng phải được phân phối trước khi truy cập. Việc sử dụng chúng đòi hỏi thực hiện hai loại phân phối:
Bộ nhớ ngoài,
Quyền truy cập tới bộ nhớ đó.
Việc phân phối có thể thực hiện có thể thực hiện dưới một trong hai phương thức:
Phân phối tĩnh, cố định trong thời gian thực hiện chương trình,
Phân phối động cho từng phiên truy nhập theo yêu cầu.
5.2.2 – Cấp phát truy nhập
Các phép trao đổi vào/ra thực hiện chậm hơn nhiều so với các phép tính toán
và điều khiển của processor. Chính vì vậy cách phân phối quyền truy nhập tới thiết
bị vào/ra sẽ tác động rất nhiều tới năng suất của hệ thống. Mục tiêu quản lý quyền truy nhập là giảm thời gian chờ đợi thông tin khi đáp ứng các yêu cầu vào/ra. Điều này đặc biệt quan trọng với các thiết bị có chuyển động cơ như đĩa cứng hoặc đĩa quang. Các yêu cầu truy nhập phải được đáp ứng theo trình tự thích hợp để tổng thời gian đáp ứng các yêu cầu nhận được là nhỏ nhất.
Đáng tiếc, đây là bài toán tối ưu rất phức tạp. Trên thực tế hệ thống chỉ thực hiện việc tối ưu hóa bộ phận, xác định trình tự truy nhập đáp ứng cực tiểu địa phương.
5.2.3 – Thông tin trạng thái
Việc thực hiện phép trao đổi vào/ra chỉ có thể thực hiện được khi thỏa mãn các điều kiện:
Tồn tại đường truyền tới thiết bị vào ra,
Thiết bị điều khiển rãnh,
Thiết bị vào/ra tương ứng ở trạng thái sẵn sàng tiếp nhận yêu cầu xử lý.
Vì vậy cần có các thành phần hệ thống kiểm tra, lưu trữ và cung cấp thông tin tương ứng cho bộ phận thực hiện trao đổi vào/ra.
5.3 – Kỹ thuật phòng đệm
Việc các chương trình ứng dụng liên lạc trực tiếp với thiết bị ngoại vi sẽ làm giảm năng suất chung của hệ thống và khó đảm bảo an toàn thông tin. Ngoài ra, chương trình sẽ bị phụ thuộc vào thiết bị vật lý cụ thể và người lập trình phải nắm
của mình. Để giải quyết các vấn đề trên hệ thống tổ chức đáp ứng các yêu cầu trao đổi vào ra của người dùng thông qua cơ chế phòng đệm (Buffer).
2.3.1 – Khái niệm phòng đệm
Phòng đệm (Buffer) của hệ điều hành là vùng bộ nhớ dùng để lưu trữ tạm thời các thông tin phục vụ cho các phép trao đổi vào/ra.
Sau khi mở file input, ngay lập tức hệ thống sẽ đọc thông tin từ file dàn kín phòng đệm. Một thành phần của hệ thống là AM (Access Methods – Các phương
pháp truy nhập) sẽ đảm nhiệm đáp ứng các yêu cầu trao đổi vào/ra trong chương trình.
Mỗi khi gặp chỉ thị đọc thông tin trong chương trình, AM sẽ dựa vào thuộc tính các biến trong danh sách nhập tách thông tin từ phòng đệm, biến đối dạng biểu diễn (nếu cần) và cung cấp các thông tin tương ứng cho chương trình yêu cầu nhập
dữ liệu. Mỗi khi thông tin trong phòng đệm đã được đọc hết, hệ thống sẽ đọc tiếp gói tin mới vào phòng đệm. Quá trình đọc gói tin mới này được thực hiện song song song với việc xử lý dữ liệu của chương trình đã đưa ra chỉ thị nhập.Tương tự như vậy với việc đưa thông tin ra từ chương trình. Khi gặp chỉ thị đưa thông tin ra, các phương pháp truy nhập (AM) sẽ biến đổi thông tin đưa ra về dạng cần thiết,
a
cin
>>a;
AM
a
cin
>>a;
AM
Hình 5.6. Phòng đệm.
nạp chúng vào phòng đệm ra. Khi phòng đệm ra đầy hệ thống sẽ đưa toàn bộ thông tin trong phòng đệm ra thiết bị ngoại vi trong thời gian chương trình còn đang tính toán dẫn xuất đại lượng ra tiếp theo.
Như vậy các chương trình ứng dụng không làm việc trực tiếp với thiết bị ngoại vi. Đối với chương trình ứng dụng, mọi phép trao đổi vào/ra đều thực hiện trong khuôn khổ bộ nhớ RAM.
5.3.2 – Vai trò của phòng đệm
Phòng đệm đóng vai trò một thiết bị ảo vạn năng thay thế cho mọi thiết bị ngoại vi trong việc xử lý các yêu cầu vào/ra của chương trình. Tính đa năng và mềm dẻo của thiết bị ảo này đã mang lại những thay đổi về chất lượng trong việc thực hiện các phép trao đổi vào ra của chương trình ứng dụng:
Tạo điều kiện để có thể thực hiện song song các phép trao đổi dữ liệu với thiết bị ngoại vi vật lý và việc xử lý dữ liệu của chương trình ứng dụng. Với file input, khi chương trình ứng dụng nhận được dữ liệu cuối cùng trong phòng đệm và xử lý dữ liệu này thì hệ thống có thể nạp gói dữ liệu mới từ thiết bị ngoại vi vào phòng đệm. Với file output, khi chương trình ứng dụng đưa thông tin ra đầy phòng đệm, hệ thống sẽ tổ chức đưa gói tin này ra thiết
bị ngoại vi vật lý trong lúc chương trình ứng dụng đang tiến hành tính toán dẫn xuất dữ liệu ra tiếp theo. Lưu ý rằng đây là quá trình song song giữa trao đổi vào/ra và tính toán trong phạm vi một chương trình.
Đảm bảo tính độc lập:
Giữa thông tin và phương tiện mang thông tin. Chương trình ứng dụng không trực tiếp liên hệ với thiết bị ngoại vi. Mọi thông tin cần thiết được hệ thống chuẩn bị dưới dạng từng gói tin lưu trữ trong phòng đệm. Phụ thuộc theo môi trường được xác lập khi thực hiện chương trình, thông tin có thể được nhập vào hay đưa ra thiết bị tùy ý.
Độc lập giữa bản ghi lô gic và bản ghi vật lý,
Độc lập giữa lưu trữ và xử lý.
Giảm số lần truy nhập vật lý tới thiết bị ngoại vi.
Me
Det L
Hình 5.7. Một số cách xem nội dung thư mục.
C T
Không phụ thuộc vào yêu cầu truy nhập đưa ra trong chương trình hệ thống đưa thông tin từ thiết bị ngoại vi vào bộ nhớ trong theo từng đơn vị gói tin. Ở WINDOWS trong phần lớn các trường hợp một gói tin có kích thước là một số nguyên lần 4 KB. Điều này làm giảm thiểu đáng kể thời gian chờ đợi thông tin trong quá trình xử lý. Hơn thế nữa, việc đưa thông tin vào từ thiết bị ngoại vi vào được tiến hành song song đồng thời với quá trình xử lý. Đây chính là yếu tố quan trọng nhất giảm thời gian truy nhập thông tin trên thiết bị ngoại vi.
Ví dụ, giả thiết mỗi lần truy nhập trực tiếp tới thiết bị ngoại vi mất 10-3 giây
và file được truy nhập theo byte, tức là mỗi xử lý chỉ đọc một byte. Xét hai trường hợp: truy nhập trực tiếp từ thiết bị ngoại vi và truy nhập qua một phòng đệm dung lượng 4 KB. Thời gian tách thông tin để cung cấp cho chương trình là đủ bé để có thể bỏ qua (thời gian này tồn tại trong cả hai kiểu truy nhập!).
Chính vì phòng đệm cho phép giảm đáng kể thời gian truy nhập nên nơi nào
có chênh lệch về tốc độ truy nhập và xử lý đều có phòng đệm. Để hỗ trợ cho phòng đệm mềm người ta còn tổ chức phòng đệm cứng dưới bộ nhớ cache, một loại bộ nhớ đặc biệt chuyên đóng vai trò trung gian, lưu trữ dữ liệu tham gia vào quá trình truy nhập.
Phòng đệm có thể gắn liền với file hoặc dùng chung cho tất cả các file. Trong trường hợp đầu, khi mở file hệ thống sẽ tạo ra phòng đệm chỉ phục vụ riêng cho file đó. Việc gắn phòng đệm với file sẽ tốn bộ nhớ nhưng tốc độ truy nhập cao hơn nhờ có việc có thể xây dựng bản đồ giải mã thông tin riêng ngay trong lúc khởi tạo phòng đệm. Hệ điều hành OS IBM 360 sử dụng phòng đệm kiểu này. Do có tốc độ
Hình 5.8. So sánh thời gian truy nhập.