Chọn chức năng Use 32-Bit Disk Access trong hộp đối thoại Virtual Memory của Control Panel sẽ làm tăng tốc độ của Windows từ 10 đến 15%
FASTDISK là gì ? Windows 3.1 có một chức năng làm tăng tốc độ thực hiện chương trình, đó là một hệ thống các thành phần của Windows cho phép giao tiếp với đĩa cứng không thông qua BIOS, chức năng đó thường được gọi là FastDisk hoặc 32-Bit Disk Access.
Bạn có thể làm tăng hiệu quả khi chạy các ứng dụng DOS trong Windows bằng cách giảm thới gian truy nhập đĩa cứng khi sử dụng chương trình điều khiển thiết bị FastDisk, một chương trình 32 bit thật sự, chạy trong chế độ bảo vệ (protected) đối với các đĩa cứng tương thích với chuẩn Western Digital WD 1003. Bạn cũng có thể chạy đồng thời nhiều ứng dụng DOS trong Windows hơn vì FastDisk cho phép các ứng dụng DOS sử dụng bộ nhớ ảo theo cách của các ứng dụng Windows.
Tác dụng của FastDisk
Làm tăng tốc độ truy nhập đĩa
Cho phép bạn chạy nhiều ứng dụng DOS hơn và làm tăng tốc độ của hệ thống khi chạy một ứng dụng không viết cho Windows (non - Windows application) trong chế độ mềm.
Cung cấp một kỹ thuật mới cho những nhà sản xuất phần mềm độc lập viết chương trình tiện ích mạnh hơn cho đĩa.
Cách làm việc của FastDisk
Ðể biết FastDisk làm tăng tốc độ của Windows ra sao, trước tiên phải hiểu cách thức DOS truy nhập đĩa. Tất cả các máy tính tương thích chuẩn IBM đều có sẵn một ROM BISO cung cấp chương trình thực hiện các thao tác đọc và ghi đĩa cơ bản đối với các loại đĩa cứng và đĩa mềm ở mức sector.
Quá trình khi một ứng dụng muốn đọc đĩa dưới hệ điều hành DOS diễn ra như sau :
ứng dụng đó gọi ngắt 21H của DOS
DOS phân tích yêu cầu và xác định xem dữ liệu có trên đĩa không.
DOS gọi ngắt 13H của BIOS đĩa, nơi chứa thiết bị điều khiển cho mỗi đĩa cứng của hệ thống.
BIOS gọi trực tiếp Controller (bộ điều khiển) của đĩa cứng. Mỗi Controller đĩa cứng có một BIOS riêng để giao tiếp giữa đĩa cứng với những phần còn lại của hệ thống. (Xem hình 1).
Nếu hệ thống của bạn có một đĩa cứng không thông dụng, có thể ROM BIOS trên máy tính của bạn không biết được làm thế nào để giao tiếp với đĩa cứng đó. Với những đĩa cứng như vậy, máy tính cần có một chương trình điều khiển thiết bị đặc biệt thường cài trong file CONFIG.SYS. Chẳng hạn nếu máy tính của bạn có lắp CD-ROM, chương trình điều khiển MSCDEX sẽ cung cấp cho DOS các phương thức để giao tiếp với CD-ROM. Chương trình này chặn ngắt 13H và truy nhập thiết bị mà không thông qua BIOS.
Cũng giống như MSCDEX, FastDisk thay thế BIOS đĩa cứng khi có lời gọi ngắt yêu cầu truy nhập đĩa. FastDisk chờ khi có lệnh gọi ngắt 13H, nó giao tiếp trực tiếp với controller đĩa cứng và bỏ qua BIOS. (Xem hình 2).
FastDisk bắt buộc phải phù hợp với controller đĩa cứng mà Windows 3.1 hổ trợ theo chuẩn Western Digital của controller 1003. Chuẩn này tương thích với phần lớn các controller đĩa cứng trừ ESDI và SCSI.32-bit Disk Access là chuẩn mở mà Microsoft khuyến khích các nhà sản xuất tuân theo khi sản xuất controller đĩa cứng, vì vậy họ có thể viết một chương trình điều khiển thực hiện được chức năng nói trên.
Tuy nhiên không bắt buộc phải sử dụng 32-bit Disk Access. Nếu hệ thống của bạn không có chương trình điều khiển FastDisk, Windows 3.1 sẽ chạy theo cách của Windows 3.0.
Sử dụng FastDisk
Chỉ có thể sử dụng FastDisk trong chế độ Windows 386 Enhanced. FastDisk tương thích với phần lớn các loại đĩa cứng (khoảng 90% các điều khiển đĩa có trên thị trường). Nếu hệ thống của bạn có khả năng sử dụng FastDisk, ô Use 32 - Bit Disk Access sẽ xuất hiện trong hộp đối thoại Virtual Memory. Khi cài đặt, nếu Windows nhận thấy đĩa cứng không tương thích với chuẩn WD 1003, nó sẽ không hiện ô kiểm tra trên.
Chú ý : Nếu FastDisk không thể chạy được với hệ thống của bạn, Windows sẽ treo khi khởi động hoặc nhảy về đấu nhắc của DOS. Microsoft cảnh cáo rằng máy xách tay sử dụng pin hoặc đối với một số máy xách tay có đặc tính sleep (khả năng lưu trữ liệu trong bộ nhớ lên đĩa khi máy không được sử dụng sau đó lại khôi phục lại khi máy hoạt động).
Nhấn đúp vào biểu tượng 386 Enhanced trong Control Panel.
Nhấn vào nút Virtual Memory
Nhấn vào Change
Ðánh dấu ô Use 32 - Bit Disk Access trong hộp đối thoại Virtual Memory
Nhấn OK
Windows chèn các dòng sau đây vào phần [386 Enh] trong file SYSTEM.INI để đặt cấu hình cho FastDisk.
[386Enh]
32BitDiskAccess= off
Device = * intl3
Device = *wdctrl
Lệnh 32BitDiskAccess = được cài đặt trước giá trị off, khi bạn chọn ô Use 32 - Bit Disk Access, Windows sẽ đặt 32Bit Disk Access = on.
Dấu hoa thị (*) chỉ ra rằng chương trình điều khiển thiết bị int 13 và WDCtrl có sẵn trong Windows (WIN386.EXE)
Các thành phần của hệ thống 32 - bit Disk Access
# Wdctrl là chương trình điều khiển FastDisk, nó trao đổi thông tin trực tiếp với bộ điều khiển đĩa cứng tương thích WD 1003 để thực hiện các thao tác đọc và ghi cần thiết. Phần chương trình này chỉ được cài đặt nếu Windows nhận thấy controller đĩa cứng phù hợp.
# BlockDev là bộ phận tổ chức các dịch vụ vào ra theo khối và cung cấp một số dịch vụ cho FastDisk. Phần chương trình này luôn được cài đặt.
# PageFile nắm giữ các file của bộ nhớ ảo phân trang, nó được gọi thông qua BlockDev nếu sử dụng được chương trình điều khiển FastDisk. Phần chương trình này luôn được cài đặt.
# Int 13 chặn và thay thế ngắt 13H BIOS bằng cách gọi BlockDev. Phần lớn các ứng dụng, DOS và Windows gọi ngắt này để truy cập đĩa thông qua ROM BIOS.
FastDisk và các ứng dụng DOS
Người sử dụng luôn phàn nàn rằng mặc dù hộp đối thoại About.Help trong Program Manager thông báo còn rất nhiều không gian nhớ tự do đủ để chạy một ứng dụng rất lớn của Windows, vậy mà họ nhận được thông báo lỗi Out of Memory khi cố gắng chạy một ứng dụng DOS. Và dù số bộ nhớ đó hoàn toàn tự do, các ứng dụng của Windows chạy rất chậm và đọc đĩa liên tục. Vấn đề trên xảy ra do sự khác nhau giữa bộ nhớ ảo và bộ nhớ thực.
Các ứng dụng DOS phải chạy trên RAM vật lý ngay cả trong chế độ 386. Khác với các ứng dụng Windows chạy trong chế độ bảo vệ, hầu hết các ứng dụng DOS bắt buộc chạy trong chế độ thực. Ðể chạy các chương trình như vậy, Windows chạy chúng trong các máy ảo với không gian nhớ từ 640 KB trở lên. Tất cả các ứng dụng đó đều chiếm bộ nhớ vật lý ngay cả khi chúng chạy trong chế độ nền.
Các ứng dụng Windows có thể trao đổi ra đĩa cứng và chỉ giữ lại trong bộ nhớ vật lý những phần đang thực hiện. Tuy vậy, để trao đổi một ứng dụng DOS là cả một vấn đề. Khi một phần ứng dụng được ghi ra đĩa, nó có thể được ghi vào bộ đệm dữ liệu. Windows có thể đọc phần ứng dụng đó trở lại bộ nhớ vật lý khi ứng dụng yêu cầu. Giả sử ứng dụng gọi DOS để đọc dữ liệu từ đĩa và bộ đệm trên, DOS gởi một lời gọi ngắt 13H tới BIOS. BIOS giao tiếp với controller đĩa cứng tới khi dữ liệu được chuyển vào bộ đệm. Windows nhận thấy rằng cần phải trao đổi nội dung bộ đệm vào bộ nhớ nhưng không thể gọi DOS được vì DOS đang bận trong tác vụ trên. Nếu Windows gọi thêm một lần nữa, lời gọi sẽ mất tác dụng.
Ðối với BIOS cũng vậy, Windows không thể đọc dữ liệu bằng cách gọi ngắt trong khi BIOS đang bận. Quá trình trên sẽ tạo ra một vòng luẩn quẩn, Windows không cho phép lời gọi hiện thời kết thúc tới khi nó trao đổi dữ liệu từ bộ đệm vào bộ nhớ vật lý, và ngược lại nó cũng không thể trao đổi trong khi lời gọi hiện thời chưa kết thúc. Chỉ có một cách chắc chắn duy nhất để không xảy ra hiện tượng trên là không cho phép trao đổi trong khi một ứng dụng DOS đang gọi DOS và BIOS. Windows không bao giờ cho phép trao đổi một ứng dụng DOS đang hoạt động, điều đó có nghĩa là 640 KB hoặc nhiều hơn của máy ảo bắt buộc phải dùng bộ nhớ vật lý. Nếu bạn chạy một ứng dụng DOS khác, nó yêu cầu 640 KB bộ nhớ còn tự dọ, điều đó không thể thực hiện được.
Windows 3.1 sử dụng 32 - Bit Disk Access để tạo hàng đợi cho các lời gọi truy cập đĩa. Vì không dựa trên DOS và BIOS nên Windows có thể liên tục trao đổi dữ liệu giữa đĩa và RAM. Như vậy cùng một lúc bạn có thể chạy được nhiều ứng dụng DOS. Nếu About.Help chỉ ra rằng bạn còn 14 MB (bao gồm cả bộ nhớ vật lý và ảo) thì bạn có thể sử dụng cả 14 MB đó để chạy các ứng dụng DOS.
FastDisk làm tăng tốc độ thực hiện
Trên phần lớn các loại máy tính, BIOS đĩa thường chậm và khó sử dụng. Sau khi sử dụng FastDisk thay thế chức năng của BIOS, máy tính chạy hiệu quả hơn rất nhiều.
Windows và các ứng dụng Windows chạy trong chế độ 386 Enhanced, tuy vậy hệ thống buộc phải chuyển sang chế độ thực (hoặc chế độ ảo 8086) để chạy nền khi thực hiện mã của DOS và BIOS. Chuyển chế độ như vậy làm ảnh hưởng nhiều đến tốc độ thực hiện.
Khởi đầu ứng dụng chạy trong chế độ ảo. Khi ứng dụng đọc file, Windows chặn lời gọi ngắt và chuyển sang chế độ bảo vệ. Một số các thiết bị ảo kiểm tra lời gọi trên xem chúng có phải thực hiện không. Nếu không thì Windows gửi tiếp lời gọi đến DOS và chuyển lại chế độ ảo. DOS định vị yêu cầu đó trên đĩa sau đó tạo ra một ngắt 13H gọi tới BIOS. Một lần nữa Windows lại chặn lời gọi ngắt đó và chuyển qua chế độ bảo vệ để xử lý bổ sung trước khi trả chúng cho BIOS rồi lại chuyển về chế độ ảo. BIOS gọi controller đĩa cứng thực hiện việc đọc đĩa vật lý, đợi đến khi thực hiện xong thì trả lại ngắt 13H. Windows chuyển qua chế độ bảo vệ để xử lý thêm rồi mới chuyển kết quả cho DOS trong chế độ ảo trước khi trở về chế độ bảo vệ từ ngắt 21H. Kết thúc toàn bộ quá trình trên, Windows chuyển về chế độ ảo để trả lại kết quả cho ứng dụng đã gọi. (Xem hình 3).
Với 32 - Bit Disk Access, một chương trình điều khiển FastDisk được chèn vào để chặn và giữ các lời gọi ngắt 13H trong chế độ bảo vệ. Ðiều đó tiết kiệm ít nhất hai lần chuyển đổi chế độ bởi vì với một hành động DOS có thể gọi rất nhiều lần ngắt 13H. Quá trình diễn ra được mô tả trong hình 2.
Những điểm yếu của FastDisk
Tuy FastDisk được Microsoft thiết kế rất an toàn nhưng vẫn còn những trường hợp nó làm treo toàn bộ hệ thống do controller đĩa cứng không hoàn toàn tương thích với chuẩn WD 1003. Mỗi khi khởi động Windows, WD Ctrl giao tiếp thử với controller. Sau quá trình bắt buộc đó, WDCtrl đọc dữ liệu từ đĩa, nếu thành công nó ghi lại dữ liệu lên đĩa và sau đó đọc lại. Chỉ khi nào toàn bộ quá trình trên hoàn thành, FastDisk cho phép Windows tiếp tục.
Tuy nhiên có những ổ đĩa dường như tương thích với chuẩn WD 1003 nhưng thực chất thì không, đã không được phát hiện. Có những controller tương thích nhưng nằm trên những máy tính xách tay tiết kiệm năng lượng, chúng thường cắt nguồn điện của đĩa cứng để giảm lượng điện tiêu thụ mà không báo cho phần mềm biết. Nếu đĩa cứng bị cắt điện và được lưu trữ dữ liệu lại trong khi đang được WDCtrl quản lý, trạng thái của thông tin sẽ không chính xác và kết quả là có hàng loạt hư hỏng xảy ra.
Ðiều đó giải thích tại sao chức năng 32 - Bit Disk Access không được đặt ngầm định. Bạn bắt buộc đặt nó thông qua Control Panel. Ðối với một số nhà sản xuất thiết bị cơ bản cài đặt Windows ngay khi xuất xưởng trên một số hệ thống quen thuộc thì chức năng 32 - Bit Disk Access có thể được đặt dẫn một cách an toàn.
Khắc phục lỗi do FastDisk gây ra
Nếu trong quá trình khởi động. WDCtrl gặp lỗi lần thứ nhất, bạn sẽ không được biết điều đó và sẽ không tận dụng được các tính năng của FastDisk.
Nếu sau đó quá trình kiểm tra lại gặp lỗi, một thông bào lỗi sẽ xuất hiện và nhắc bạn khởi động lại máy tính. Nếu bạn chạy một ứng dụng không tương thích với FastDisk, Windows sẽ thông báo lỗi và bạn sẽ phải đóng ứng dụng đó.
Chú ý : Cần phải sao lưu các file WIN.INI, SYSTEM.INI trước khi sửa đổi chúng.
Nếu ứng dụng gây lỗi nằm trong nhóm StartUp của Program Manager thì trong khi khởi động Windows ấn và giữ phím Shift để bỏ qua ứng dụng đó.
Nếu ứng dụng gây lỗi được thực hiện bởi lệnh Run = và Load = trong file WIN.INI thì dùng một chương trình soạn thảo văn bản của DOS loại các ứng dụng đó ra khỏi các lệnh trên. Nếu bạn đã khởi động Windows và máy bị treo khi đang gọi một ứng dụng không tương thích với FastDisk thì có thể dùng tổ hợp phím Ctrl - Alt - Del để đóng ứng dụng đó.
Nếu bạn cần phải chạy ứng dụng gây lỗi thì tắt FastDisk bằng cách:
Nhấn đúp vào biểu tượng 386 Enhanced trong Control Panel.
Nhấn nút Virtual Memory.
Nhấn vào Change
Xoá đánh dấu ở ô Use 32 - Bit Disk Access trong hộp đối thoại Virtual Memory.
Nhấn OK
Nếu bạn muốn tắt FastDisk khi chưa khởi động Windows thì dùng một chương trình soạn thảo văn bản của DOS để mở file SYSTEM.INI. Sửa lại dòng 32 Bit Disk Access = on thành 32 Bit Disk Access = off trong phần [386Enh].