Trước khi LBA được giới thiệu, tại sao CHS bắt đầu 0,0,1
và không 0,0,0
?
Trước khi LBA được giới thiệu, tại sao CHS bắt đầu 0,0,1
và không 0,0,0
?
Câu trả lời:
Thật không may, đây chỉ là cách chương trình xử lý địa chỉ CHS, phổ biến vào thời điểm đó, được triển khai và áp dụng vào sử dụng. Điều này đã được thông qua như là quy ước chính thức cho các máy tính tương thích IBM trong các ngắt BIOS được sử dụng để truy cập đĩa, giải thích lý do tại sao quy ước này được sử dụng cho đến ngày nay. Từ tiêu chuẩn ECMA-107 , cấu trúc khối lượng và tệp của hộp mực đĩa để trao đổi thông tin (điều này cũng được đề cập trong thông số kỹ thuật ATA-1 ban đầu ):
6.1.3 Số ngành logic
Mỗi khu vực trên một khối lượng sẽ được xác định bởi một số khu vực hợp lý. [...] Số ngành logic sẽ được chỉ định theo thứ tự tăng dần, bắt đầu bằng 0, bắt đầu từ khu vực 1, theo dõi 00, bên 0 , tiếp tục theo dõi 00, bên 1 (nếu FDC có thể ghi được ở cả hai bên) và sau đó để theo dõi 01, bên 0, v.v.
Vấn đề này được giải quyết trong các thông số kỹ thuật cho một số đĩa cứng , trong đó lưu ý rằng một địa chỉ CHS logic đã cho khác với vị trí địa chỉ CHS vật lý . Điều này được thảo luận thêm trong Hướng dẫn tham khảo giao diện Seagate ATA , trong đó có tường thuật thú vị này:
5.1 Địa chỉ khối logic
[...] Các khu vực trên ổ đĩa được giả định là được ánh xạ tuyến tính, với LBA 0 của hình trụ 0 / đầu 0 / khu vực 1.
[...] Đối với tất cả các chế độ dịch, C = 0, H = 0, S = 1 tương đương với LBA = 0. Không thể tính một CHS tương đương cho tất cả các địa chỉ khối logic trong tất cả các chế độ dịch vì công thức này chỉ hoạt động theo một hướng. Điều này là do địa chỉ CHS không thể truy cập 1/256 của tất cả các lĩnh vực có thể mà địa chỉ khối logic có thể truy cập, vì không có khu vực 0 trong CHS.
Như vậy cho CHS địa chỉ logic, mặc dù cylinder đầu tiên / chỉ số khởi đầu từ một 0-dựa bù đắp, và là người đầu tiên khu vực bắt đầu chỉ số từ 1 (ví dụ như địa chỉ tối thiểu CHS thể là 0/0/1), điều này không thay đổi bất cứ điều gì về các vật lý vị trí của lĩnh vực này. Hãy nghĩ về nó như là khu vực vật lý đầu tiên trên đĩa được gọi là "khu vực 1", chiếm CHS 0/0/1. Thật vậy, phần tử "đầu tiên" trong hầu hết các ngôn ngữ lập trình là dựa trên 0, vì vậy địa chỉ logic của khu vực tại địa chỉ CHS 0/0/1 là zero ( 0x00
).
Điều này có ý nghĩa logic hơn (cụ thể là địa chỉ lôgic "zeroth" là khu vực vật lý đầu tiên ), vì chúng ta có thể giải quyết thiết bị đĩa như bất kỳ thiết bị bộ nhớ nào khác (vì mỗi khu vực có một địa chỉ tuyến tính duy nhất để ánh xạ nó thành vật lý ngành), do đó, tại sao nó có ý nghĩa cho LBA bắt đầu từ số không. Thật vậy, nếu chúng tôi dịch địa chỉ CHS 0/0/1 sang LBA , LBA kết quả sẽ là 0x00000000
(đây là lý do tại sao 1 bị trừ khỏi chỉ số ngành trong hầu hết các tính toán CHS sang LBA và tại sao 1 được thêm vào chỉ mục cho LBA để tính toán CHS).
zero sector
mã lỗi và các khối xấu, v.v .... chuyển sang CHS và "kiến trúc khối cố định" bạn cũng đã có quá trình chuyển đổi thêm bộ điều khiển (phần sụn) vào ổ đĩa và bắt đầu các liên kết đĩa "logic" ... bộ điều khiển bây giờ là vô hình nhưng bạn có thể giả sử sử dụng nó theo cùng một cách ... thuật ngữ hiện được gọi là "Máy chủ được bảo vệ Khu vực " en.wikipedia.org/wiki/Fixed-block_arch architecture và en.wikipedia.org/wiki/host_protected_area
1
, tôi vẫn không tìm thấy bất kỳ thông tin nào về lý do (mặc dù tôi nghi ngờ nó có thể có liên quan đến khu vực 0
được bảo lưu như một cờ lỗi). Tôi chắc chắn sẽ cập nhật cho bạn nếu tôi gặp bất cứ điều gì.
Tôi đã cố gắng theo dõi lịch sử của CHS và fiasco đánh số ngành "bắt đầu bằng 1", điều này đã gây ra nhiều phức tạp cho các nhà văn trình điều khiển đĩa và đã nhanh chóng gia tăng LBA .
CHS bắt đầu từ thời máy tính cá nhân chạy trên đĩa và khi BIOS được phát minh. Đây là những gì Wikipedia nói:
Thuật ngữ BIOS (Hệ thống đầu vào / đầu ra cơ bản) được phát minh bởi Gary Kildall và lần đầu tiên xuất hiện trong hệ điều hành CP / M vào năm 1975, mô tả phần CP / M dành riêng cho máy được tải trong thời gian khởi động giao tiếp trực tiếp với phần cứng.
Một nghiên cứu về BIOS CP / M đã tìm thấy kho lưu trữ thông tin CP / M tài liệu : các cuộc gọi hệ thống BDOS , trong đó số ngành bắt đầu bằng 0. Kết luận là: lược đồ CHS sớm nhất thực sự sử dụng các địa chỉ cung cấp dựa trên zero .
Địa chỉ khu vực một dựa trên lần đầu tiên được giới thiệu với IBP / PC đầu tiên. Tài liệu INT 13 - Dịch vụ BIOS đĩa mềm nói cụ thể:
Most disk BIOS calls use the following parameter scheme:
AH = function request number
AL = number of sectors (1-128 dec.)
CH = cylinder number (0-1023 dec.)
CL = sector number (1-17 dec.) <--------!!!
DH = head number (0-15 dec.)
DL = drive number (0=A:, 1=2nd floppy, 80h=drive 0, 81h=drive 1)
DL = drive number (0=A:, 1=2nd floppy, 80h=C:, 81h=D:)
Note that some programming references use (0-3) as the
drive number which represents diskettes only.
ES:BX = address of user buffer
Vì vậy, chính IBM / PC đã thực hiện BIOS một cách thực tế đã chuyển đổi đánh số ngành từ 0 thành dựa trên một.
Trong số mười hai kỹ sư của IBM được giao nhiệm vụ tạo Máy tính cá nhân IBM (kiểu 5150), David J. Bradley đã phát triển mã cho BIOS của mình. Vì vậy, anh ấy là người, trong số tất cả các chi tiết khác, đã quyết định các tham số cho các ngắt đĩa. Chúng tôi cũng nợ anh chàng này cùng với Mel Hallerman nổi tiếng CTRL+ ALT+ DEL.
Vì vậy, câu trả lời cho câu hỏi
Tại sao số đếm khu vực bắt đầu từ 1 chứ không phải 0 trong CHS là:
Bởi vì David J. Bradley đã lập trình BIOS theo cách đó .
Về lý do tại sao anh ta làm theo cách này, điều này được trả lời tốt nhất bởi chính mình. Nếu tôi phải đoán, tôi sẽ nói rằng anh ta rời khỏi khu vực số 0 như một khu vực địa chỉ mà theo đó người lái xe có thể xác minh rằng đầu đang đi đúng hướng.
Vì các đĩa thực sự được thiết kế để không yêu cầu cơ chế như vậy và các kỹ sư không sẵn sàng lãng phí một khu vực vì BIOS, ngành số 0 không bao giờ tồn tại. Sau đó, các trình soạn thảo trình điều khiển không còn cần phải trừ - một và thêm một vào địa chỉ sector cho tất cả các cuộc gọi đĩa BIOS.
Đặc tả đầu tiên trên các đĩa mềm được IBM tạo ra với sự xuất hiện của IBM 3740 và không đề cập đến việc có các khu vực dành riêng cho hệ thống. Bảo lưu duy nhất cho hệ thống là track 00, chỉ lưu trữ "Nhãn tập dữ liệu" xác định loại thông tin được lưu trữ trong các rãnh từ 01 đến 76. Nó xác định rõ rằng khu vực đầu tiên là SECTOR 1. Đây không phải là sự trùng hợp ngẫu nhiên mà là vấn đề số tự nhiên so với việc đánh số máy tính.
Chúng ta có thể quan sát thấy rằng khi một con người bắt đầu đếm bất cứ thứ gì, nó không bắt đầu bằng 0 mà là một. Ví dụ, hãy tưởng tượng rằng có 135 học sinh trong một lớp học. Đếm số sẽ là một cái gì đó như thế: Một, hai, ba ... một trăm ba mươi bốn, một trăm ba mươi lăm.
Đại diện số của nó sẽ là như vậy: 1, 2, 3, ... 134, 135 Cho đến nay chúng ta đồng ý, phải không?
Bây giờ, hãy đặt các chữ số không được biểu thị bằng 0. Nó sẽ trông như thế này: 001, 002, 003, ..., 015, 016, ..., 099, 100, ..., 133, 134, 135
Đây là những gì xảy ra với CHS : 0,0,1 - 0,0,2 - 0,0,3 ...
Điều quan trọng là các hàng trong trang tính Excel hoặc các trường số tự động trong cơ sở dữ liệu bắt đầu bằng 1 chứ không phải 0 và không ai nói gì về điều này.
David J. Bradley đã lên lịch cho BIOS theo cách đó?
Phải, nhưng anh không đứng ngoài cuộc.
Chắc chắn không có lý do kỹ thuật tại sao SECTOR 0 không thể được sử dụng trừ khi nó được bảo lưu và ẩn khỏi người dùng vì những lý do khác. Về nguyên tắc mọi thứ đều chỉ ra nó là vấn đề đánh số tự nhiên.
GA21-9152-2 Tệp số 3740-00,15
Hệ thống nhập dữ liệu IBM 3740
trang 12 KHỞI TẠO
DISK
... Mỗi đĩa chứa hai rãnh dự phòng để thay thế bất kỳ rãnh bất thường nào. Ngoài ra, tính năng khởi tạo cung cấp một phương tiện để thay đổi chuỗi địa chỉ khu vực trên đĩa. Thông thường, chuỗi các ngành theo thứ tự số (1, 2, 3, ... 25,26) .
trang 24
DỮ LIỆU DỮ LIỆU TRÊN DISKETTE
Trong quá trình khởi tạo, nhãn tập dữ liệu cho một tập dữ liệu được ghi từ tính trên rãnh ghi (rãnh 00) của đĩa. Mục đích chính của nhãn này là hiển thị vị trí của tập dữ liệu trên đĩa
Đó là vào năm 1973. Nó đã ghi lại dữ liệu trên đĩa 8 ". IBM PC 5150 ra đời vào ngày 12 tháng 8 năm 1981 ... và chúng tôi không thể quên rằng họ phải duy trì khả năng tương thích với các thiết bị trước đó.
Chắc chắn không có lý do kỹ thuật.