답변:
불행히도, 이것은 당시에 널리 사용되었던 CHS 주소 지정 체계가 구현되고 사용되는 방식입니다. 이것은 디스크 액세스에 사용되는 BIOS 인터럽트에서 IBM 호환 컴퓨터의 공식 규칙으로 채택되어 오늘날까지이 규칙이 사용되는 이유를 설명합니다. 가입일 은 ECMA-107 표준 , 볼륨 및 정보 교환에 대한 디스크 카트리지 파일 구조 (이는 또한 원래에서 설명한 ATA-1 규격 )
6.1.3 논리 섹터 번호
볼륨의 각 섹터는 논리 섹터 번호로 식별됩니다. [...] 논리 섹터 번호는 0부터 시작하여 섹터 1, 트랙 00, 사이드 0에서 시작 하여 트랙 00, 사이드 1 (FDC가 양면에 기록 가능한 경우)로 계속 오름차순으로 할당됩니다. 01, 사이드 0 등을 추적합니다.
이 문제는 일부 하드 디스크 의 사양에서 해결되었으며, 주어진 논리적 CHS 주소는 물리적 CHS 주소 위치 와 다릅니다 . 이에 대한 자세한 내용은 Seagate ATA 인터페이스 참조 설명서 에서 자세히 설명합니다 .
5.1 논리 블록 어드레싱
[...] 드라이브의 섹터는 실린더 0 / 헤드 0 / 섹터 1의 LBA 0을 사용하여 선형으로 매핑 된 것으로 가정합니다.
[...] 모든 변환 모드에서 C = 0, H = 0, S = 1은 LBA = 0과 같습니다. 이 수식은 한 방향으로 만 작동하기 때문에 모든 변환 모드에서 모든 논리 블록 주소에 대해 동등한 CHS를 계산할 수 없습니다. CHS에 0 번 섹터가 없기 때문에 논리 블록 주소 지정이 액세스 할 수있는 모든 가능한 섹터의 1/256 번째에 CHS 주소 지정이 액세스 할 수 없기 때문입니다.
따라서 논리 CHS 주소 지정의 경우 첫 번째 실린더 / 헤드 인덱스가 0 기반 오프셋에서 시작 하고 첫 번째 섹터 인덱스가 1 에서 시작하지만 (예 : 가능한 최소 CHS 주소는 0/0/1), 이는 변경되지 않습니다. 이 섹터 의 물리적 위치 CHS 0/0/1을 차지하는 "섹터 1"이라고하는 디스크 의 첫 번째 물리 섹터 로 생각하십시오 . 실제로 대부분의 프로그래밍 언어에서 "첫 번째"요소는 0 기반이므로 CHS 주소 0/0/1에서 섹터 의 논리 주소는 0 ( 0x00
)입니다.
이것은 디스크 장치를 다른 메모리 장치로 지정할 수 있기 때문에 논리적으로 (즉, "제로" 논리 주소는 첫 번째 물리 섹터 임) 훨씬 더 의미 가 있습니다 (각 섹터는 고유 한 선형 주소를 가지므로 물리에 매핑됩니다) LBA가 0에서 시작하는 것이 합리적 인 이유는 무엇입니까? 실제로, CHS 주소 0/0/1을 LBA 로 변환하면 결과 LBA는 0x00000000
(대부분의 CHS의 섹터 인덱스에서 1을 LBA 계산에서 빼고 1이 LBA의 인덱스에 추가되는 이유입니다) CHS 계산).
zero sector
오류 코드 및 불량 블록 등에 사용되었다는 사실을 알았 습니다. 드라이브에 컨트롤러 (펌웨어) 추가 및 "논리"디스크 연결 시작의 전환 ... 이제 컨트롤러가 보이지 않지만 동일한 방식으로 사용한다고 가정 할 수 있습니다.이 용어는 이제 "호스트 보호됨"이라고합니다. 지역 " en.wikipedia.org/wiki/Fixed-block_architecture 및 en.wikipedia.org/wiki/Host_protected_area
1
동안 여전히 이유에 대한 정보를 찾지 못했습니다 (섹터 0
가 오류 플래그로 예약 된 섹터와 관련이 있다고 생각되지만 ). 내가 뭔가를 만나면 당신을 업데이트 할 것입니다.
나는 CHS 의 역사 와 "1로 시작하는"섹터 넘버링 피스코 를 추적하려고 시도했는데 , 이로 인해 디스크 드라이버 제작자들에게 많은 합병증이 생겨 LBA 가 급격히 상승했습니다 .
CHS는 개인용 컴퓨터가 디스켓에서 실행 된 날과 BIOS가 발명 된 날로 거슬러 올라갑니다. 이것이 Wikipedia의 말입니다 :
BIOS (Basic Input / Output System)라는 용어는 Gary Kildall이 발명했으며 1975 년 CP / M 운영 체제에서 처음 등장하여 부팅시로드 된 CP / M의 시스템 별 부분을 하드웨어와 직접 인터페이스합니다.
CP / M BIOS에 대한 연구에 따르면 CP / M 정보 아카이브 (BDOS 시스템 호출 )에서 섹터 번호가 0으로 시작 하는 문서가 발견되었습니다 . : 결론이다 초기 CHS 스키마가 실제로 제로 섹터 주소를 사용 .
1 기반 섹터 주소는 첫 번째 IBP / PC에서 처음 소개되었습니다. 문서 INT 13-디스켓 BIOS 서비스는 구체적으로 다음과 같이 말합니다.
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
따라서 사실상의 BIOS 구현으로 섹터 번호를 0에서 1로 변환 한 것은 IBM / PC였습니다.
David J. Bradley 는 IBM 개인용 컴퓨터 (모델 5150)를 작성하도록 지정된 12 명의 IBM 엔지니어 중 BIOS 용 코드를 개발했습니다. 그래서 그는 다른 모든 세부 사항 중에서 디스크 인터럽트의 매개 변수를 결정한 사람입니다. 우리는 또한 Mel CTRL+ Hallerman과 함께이 남자에게 유명한 + ALT+를 빚지고 DEL있습니다.
그래서 대답 질문에는
왜 섹터 수는 1에서 시작 않고 0이 아닌 CHS에서이 있습니다 :
데이비드 J. 브래들리가 진행하는 BIOS를 프로그램 때문에 .
그가 왜 이런 식으로했는지에 관해서는, 이것은 스스로 대답하는 것이 가장 좋습니다. 내가 추측해야한다면, 그는 운전자가 헤드가 올바른 길을 가고 있음을 확인할 수있는 어드레싱 섹터로 섹터 0을 남겼다고 말할 것이다.
디스크가 실제로 그러한 메커니즘을 요구하지 않도록 설계되었고 엔지니어가 BIOS 때문에 한 섹터를 낭비 할 준비가되지 않았으므로 섹터 0은 존재하지 않았습니다. 그 후, 드라이버 기록기는 모든 BIOS 디스크 호출에 대해 하나를 빼고 섹터 주소에 하나를 더할 필요가있었습니다.
플로피 디스크의 첫 번째 사양은 IBM에서 IBM 3740 모양으로 만들어졌으며 시스템 용으로 예약 된 섹터가 있다고 언급하지는 않습니다. 이 시스템의 유일한 예약은 트랙 00이며, 트랙 01에서 76에 저장된 정보의 유형을 식별하는 "데이터 세트 레이블"만 저장합니다. 첫 번째 섹터가 SECTOR 1임을 명확하게 정의합니다. 이는 우연이 아니라 a 컴퓨터 번호 매기기에 대한 자연적인 계산 문제.
우리는 인간이 어떤 것을 계산하기 시작하면 0이 아니라 1로 시작한다는 것을 알 수 있습니다. 예를 들어, 교실에 135 명의 학생이 있다고 상상해보십시오. 숫자를 세는 것은 다음과 같습니다. 1, 2, 3 ... 백 삼십 사, 백 삼십 오.
숫자 표현은 다음과 같습니다. 1, 2, 3, ... 134, 135 지금까지 우리는 동의합니까?
001, 002, 003, ..., 015, 016, ..., 099, 100, ..., 133, 134, 135와 같이 표시되지 않은 숫자를 입력 해 봅시다.
이것이 CHS에서 일어나는 일입니다 . 0,0,1-0,0,2-0,0,3 ...
Excel 시트의 행이나 데이터베이스의 자동 숫자 필드는 0이 아닌 1로 시작하고 아무도 이에 대해 아무 말도하지 않는 것이 중요합니다.
David J. Bradley가 BIOS를 그렇게 예약 했습니까?
네,하지만 그는 옆에 없었습니다.
SECTOR 0이 다른 이유로 사용자에게 예약되고 숨겨져 있지 않는 한 SECTOR 0을 사용할 수없는 기술적 이유는 없습니다. 원칙적으로 모든 것은 자연적인 번호의 문제입니다.
GA21-9152-2 파일 번호 3740-00,15
IBM 3740 데이터 입력 시스템
페이지 12
디스크 초기화
... 각 디스크에는 불규칙한 트랙을 대체하기위한 두 개의 예비 트랙이 있습니다. 또한, 초기화 기능은 디스켓에서 일련의 섹터 주소를 변경하는 수단을 제공합니다. 일반적으로 섹터 순서는 숫자 순서 (1, 2, 3, ... 25,26) 입니다.
24 페이지
DATA ON 표지 디스켓을
초기화하는 동안은, 데이터 세트에 대한 데이터 세트 라벨 자기 인덱스 트랙 디스켓 (00 트랙)에 기록된다. 이 레이블의 주요 목적은 디스켓에서 데이터 세트의 위치를 표시하는 것입니다.
8 인치 디스켓에 데이터를 기록했습니다. IBM PC 5150은 1981 년 8 월 12 일에 태어 났으며 이전 장치와의 호환성을 유지해야한다는 것을 잊을 수 없습니다.
기술적 이유는 없었습니다.