सीएचएस में सेक्टर-नंबर को संबोधित करना सेक्टर 1 से शुरू क्यों नहीं 0 से शुरू होता है?


13

एलबीए पेश किए जाने से पहले, सीएचएस क्यों शुरू होता है 0,0,1और नहीं 0,0,0?


1
"सेक्टर की गिनती 1 से क्यों शुरू होती है ..." - दरअसल आप सेक्टर नंबर की बात कर रहे हैं , सेक्टर की गिनती की नहीं । डिस्क रिक्वेस्ट में इस्तेमाल होने वाले दो अलग और अलग पैरामीटर हैं। "सेक्टर इंडेक्स" भी सेक्टर नंबर के लिए खराब नामकरण है, क्योंकि डिस्क ड्राइव में इंडेक्स नामक एक अलग इकाई है ।
चूरा

जवाबों:


8

दुर्भाग्य से, यह सिर्फ यही है कि समय पर लोकप्रिय सीएचएस संबोधन योजना को कैसे लागू किया गया और इसे अपनाया गया। यह डिस्क एक्सेस के लिए उपयोग किए जाने वाले BIOS में आईबीएम-संगत कंप्यूटरों के लिए आधिकारिक सम्मेलन के रूप में अपनाया गया था, यह बताते हुए कि इस सम्मेलन का आज तक क्यों उपयोग किया जाता है। से ECMA-107 स्टैंडर्ड , मात्रा और सूचना आदान लिए डिस्क कारतूस की फ़ाइल संरचना (यह भी मूल में बताया गया है एटीए-1 की विशेषताएं ):

6.1.3 तार्किक क्षेत्र संख्या

वॉल्यूम पर प्रत्येक सेक्टर को लॉजिकल सेक्टर नंबर द्वारा पहचाना जाएगा। [...] लॉजिकल सेक्टर नंबरों को एक आरोही क्रम में सौंपा जाएगा, 0 से शुरू होकर, सेक्टर 1 से शुरू होकर, ट्रैक 00, साइड 0 , ट्रैक 00, साइड 1 पर जारी रहेगा (यदि FDC दोनों तरफ रिकॉर्ड करने योग्य है) और फिर ट्रैक करने के लिए 01, साइड 0, आदि।

इस मुद्दे को कुछ हार्ड डिस्क के विनिर्देशों में संबोधित किया गया है , जहां यह ध्यान दिया जाता है कि एक दिया गया सीएचएस पता भौतिक सीएचओ पते स्थान से भिन्न होता है । यह आगे सीगेट एटीए इंटरफ़ेस संदर्भ मैनुअल में चर्चा की गई है , जिसमें यह दिलचस्प कथा है:

5.1 लॉजिकल ब्लॉक एड्रेसिंग

[...] ड्राइव पर सेक्टरों को रेखीय रूप से मैप किया गया है, जिसमें LBA 0 सिलेंडर 0 / हेड 0 / सेक्टर 1 है।

[...] सभी अनुवाद मोडों के लिए, C = 0, H = 0, S = 1 LBA = 0 के बराबर है। सभी अनुवाद मोड में सभी तार्किक ब्लॉक पते के लिए एक बराबर सीएचएस की गणना करना संभव नहीं है क्योंकि यह सूत्र केवल एक दिशा में काम करता है। ऐसा इसलिए है क्योंकि CHS एड्रेसिंग उन सभी संभावित क्षेत्रों के 1/256 वें हिस्से तक नहीं पहुंच सकता है जो तार्किक ब्लॉक एड्रेसिंग एक्सेस कर सकते हैं, क्योंकि CHS में कोई सेक्टर 0 नहीं है।

इस प्रकार तार्किक सीएचएस संबोधन के लिए, हालांकि पहला सिलेंडर / हेड इंडेक्स 0-आधारित ऑफसेट से शुरू होता है , और पहला सेक्टर इंडेक्स 1 से शुरू होता है (उदाहरण के लिए न्यूनतम संभव सीएचएस पता 0/0/1 है), इस बारे में कुछ भी नहीं बदलता है शारीरिक इस क्षेत्र के स्थान। इसे "सेक्टर 1" कहे जाने वाले डिस्क पर पहले भौतिक क्षेत्र के रूप में सोचें , सीएचएस 0/0/1 पर कब्जा कर रहा है। दरअसल, अधिकांश प्रोग्रामिंग भाषाओं में "पहला" तत्व 0-आधारित है, इसलिए CHS पते 0/0/1 पर क्षेत्र का तार्किक पता शून्य ( 0x00) है।

यह तार्किक रूप से बहुत अधिक समझ में आता है (अर्थात, "शून्य" तार्किक पता पहला भौतिक क्षेत्र है), क्योंकि हम डिस्क डिवाइस को किसी भी अन्य मेमोरी डिवाइस के रूप में संबोधित कर सकते हैं (जैसा कि प्रत्येक सेक्टर का भौतिक में मैप करने के लिए एक अद्वितीय रेखीय पता है सेक्टर), इस प्रकार यह एलबीए को शून्य से शुरू करने के लिए समझ में क्यों आता है। वास्तव में, यदि हम सीएचएस पता 0/0/1 का एलबीए में अनुवाद करते हैं , तो परिणामस्वरूप एलबीए होगा 0x00000000(यही कारण है कि 1 को सीएचएस से एलबीए की गणना में सेक्टर इंडेक्स से घटाया जाता है, और 1 को एलबीए के सूचकांक में क्यों जोड़ा जाता है सीएचएस गणना के लिए)।


मैं इस प्रश्न का उत्तर पहले ही दे देता हूं, लेकिन मुझे लगता है कि जिस व्यक्ति को मैंने अपनी टिप्पणियाँ छोड़ दीं, उत्तर को प्रदर्शित करते हुए उसे हटा दिया गया ... वैसे भी मैंने यह प्रश्न पूछा था कि इस तथ्य के कारण हर कोई था और मैंने जो कुछ भी पढ़ा वह आपके मूल रूप से सटीक रूप से पोस्ट किया गया था अधिकांश भाग के लिए शब्द। इसका जवाब "यह सिर्फ उन्होंने इसे बनाने का तरीका है ..." मुझे वास्तव में परेशान किया क्योंकि लोग कुछ का निर्माण नहीं करते हैं और केवल इसलिए इसका उपयोग नहीं करते हैं क्योंकि वे इसका उपयोग नहीं करना चाहते हैं ... यह तर्क तब से नहीं है बिल्कुल ...
जॉर्डन डेविस

1
सीएचआर / सीएचएस / एलबीए के इतिहास के माध्यम से जाने पर आप पाते हैं कि सीएचआर से पहले जो एमबीबीसीएचएचआर का उपयोग करने वाली चर लंबाई थी zero sector, त्रुटि कोड, और खराब ब्लॉकों आदि के लिए उपयोग किया जाता था .... सीएचएस और "फिक्स्ड-ब्लॉक-आर्किटेक्चर" के लिए संक्रमण आपके पास भी था। ड्राइव में एक नियंत्रक (फर्मवेयर) जोड़ने और "तार्किक" डिस्क संघों की शुरुआत का संक्रमण ... नियंत्रक अब अदृश्य है, लेकिन आप मान सकते हैं कि यह उसी तरह उपयोग कर रहा है ... शब्द को अब "होस्ट संरक्षित" कहा जाता है क्षेत्र " en.wikipedia.org/wiki/Fixed-block_altecture और en.wikipedia.org/wiki/Host_protected_area
जॉर्डन डेविस

@JordanDavis ज्यादातर मामलों में, होस्ट-संरक्षित क्षेत्र डिस्क के अंत में है, शुरुआत नहीं। वास्तव में, जबकि पहले क्षेत्र के लिए नामकरण को मूल्य के रूप में लौटाया गया है 1, मुझे अभी भी कोई जानकारी नहीं मिली है कि क्यों (हालांकि मुझे संदेह है कि यह कुछ ऐसा हो सकता है जिसमें सेक्टर 0को त्रुटि ध्वज के रूप में आरक्षित किया जा सकता है )। अगर मुझे कुछ भी आता है तो मैं आपको अपडेट करना सुनिश्चित करूंगा।
ब्रेकथ्रू

एफबीए अनुभाग अवलोकन के लिए विकिपीडिया लिंक, ईसीसी के रूप में ज़ीरोथ रिकॉर्ड होने की सूची है, लेकिन यह अच्छा लगता है, अगर मैं या तो भर में आता हूं तो मैं भी ऐसा ही करूंगा।
जॉर्डन डेविस

@JordanDavis मैंने इस प्रश्न पर एक इनाम जोड़ा है, जैसा कि मैं वास्तव में दूसरों से कुछ इनपुट सुनना पसंद करूंगा - विशेष रूप से क्यों इस पहलू के संबंध में .. प्रश्न को खुला रखने के लिए स्वतंत्र महसूस करें / समय देने के लिए अनुत्तरित रहें अन्य उत्तरों के लिए मौका।
ब्रेकफास्ट

8

मैंने सीएचएस के इतिहास और "1 से शुरू होने वाले" सेक्टर नंबरिंग फियास्को का पता लगाने की कोशिश की है , जिसने डिस्क-ड्राइवरों के लेखकों के लिए कई जटिलताएं पैदा की हैं और एलबीए को तेजी से जन्म दिया है ।

CHS उन दिनों में वापस आता है जब पर्सनल कंप्यूटर डिस्केट्स पर चलते थे और जब BIOS का आविष्कार किया गया था। यह विकिपीडिया कहता है:

BIOS (बेसिक इनपुट / आउटपुट सिस्टम) शब्द का आविष्कार गैरी किल्डल द्वारा किया गया था और पहली बार CP / M ऑपरेटिंग सिस्टम में 1975 में दिखाई दिया, जिसमें बूट समय के दौरान लोड किए गए CP / M के मशीन-विशिष्ट भाग का वर्णन किया गया था जो सीधे हार्डवेयर के साथ इंटरफेस करता है।

CP / M BIOS के एक शोध में दस्तावेज़ CP / M सूचना संग्रह पाया गया है : BDOS सिस्टम कॉल , जिसमें सेक्टर संख्या शून्य से शुरू होती है। निष्कर्ष यह है कि: सीएचएस स्कीमा वास्तव में शून्य-आधारित सेक्टर पते का उपयोग करता है

पहले आईबीपी / पीसी के साथ एक-आधारित क्षेत्र के पते पेश किए गए थे। दस्तावेज़ 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 के एक वास्तविक कार्यान्वयन द्वारा सेक्टर-नंबरिंग को शून्य-आधारित से एक-आधारित में बदल दिया गया था।

आईबीएम पर्सनल कंप्यूटर (मॉडल 5150) बनाने के लिए सौंपे गए बारह आईबीएम इंजीनियरों में से, डेविड जे। ब्रैडले ने अपने BIOS के लिए कोड विकसित किया। तो वह वह है जो अपने सभी अन्य विवरणों के बीच, डिस्क के लिए मापदंडों पर फैसला करता है। हम यह भी प्रसिद्ध मेल Hallerman के साथ मिलकर इस आदमी को देना है CTRL+ ALT+ DEL

तो इस सवाल का जवाब है कि सीएचएस में सेक्टर 1 क्यों नहीं 0 से शुरू होता है:
क्योंकि डेविड जे। ब्रैडली ने BIOS को इस तरह से प्रोग्राम किया था

इस तरह से उसने ऐसा क्यों किया, इसका जवाब सबसे अच्छा है। अगर मुझे अनुमान लगाना था, तो मैं कहूंगा कि उन्होंने सेक्टर को संबोधित क्षेत्र के रूप में शून्य छोड़ दिया, जिसके द्वारा ड्राइवर यह सत्यापित कर सकता था कि सिर सही रास्ते पर है।

चूंकि डिस्क वास्तव में इंजीनियर थे, इसलिए इस तरह के तंत्र की आवश्यकता नहीं थी, और इंजीनियर BIOS के कारण एक सेक्टर को बर्बाद करने के लिए तैयार नहीं थे, सेक्टर शून्य कभी अस्तित्व में नहीं आया। इसके बाद, ड्राइवर-लेखकों को सभी BIOS डिस्क कॉल के लिए सेक्टर-वन और ऐड-वन को सेक्टर के पते पर घटाने की आवश्यकता के साथ छोड़ दिया गया था।


"मैं कहूंगा कि उन्होंने संबोधित क्षेत्र के रूप में सेक्टर शून्य को छोड़ दिया ..." - अवैध अनुमान। हर सेक्टर का एक पहचान रिकॉर्ड होता है जिसमें सिलेंडर / हेड / सेक्टर एड्रेस शामिल होता है। डिस्क नियंत्रक को यह सुनिश्चित करने के लिए इंडेक्स के लिए प्रतीक्षा करने की आवश्यकता नहीं है कि सही सिलेंडर पर पूरा होने की तलाश है; बहुत ही अगला सेक्टर जो सत्यापन के लिए सिर के नीचे घूमता है।
चूरा

"CH = सिलेंडर नंबर (0-1023 dec।)" - मूल आईबीएम पीसी BIOS "ट्रैक" नंबर के लिए CH का उपयोग करता है। CH एक 8-बिट रजिस्टर है, इसलिए अधिकतम मूल्य केवल 255 है।
चूरा

"मैंने सीएचएस के इतिहास का पता लगाने की कोशिश की है ... और एलबीए में तेजी से वृद्धि की है" - स्पष्ट होने के लिए, "एलबीए" के बारे में ये सभी चर्चाएं केवल पीसी डिस्क इंटरफेस से संबंधित हैं, खासकर एटीएपीआई विनिर्देश। अन्यथा CHS और LBA सह-अस्तित्व में आ सकते हैं। ईजी मैंने कुछ फाइलसिस्टम लिखे हैं जो आंतरिक रूप से एलबीए का उपयोग करते हैं, लेकिन नियंत्रक इंटरफ़ेस के अनुसार वास्तविक डिस्क I / O का प्रदर्शन करने के लिए सीएचएस को संबोधित परिवर्तित किया है। "शुरुआती सीएचएस स्कीमा वास्तव में शून्य-आधारित क्षेत्र के पते का उपयोग करता है।" - सच है, लेकिन सीपी / एम से पहले ऐसा हुआ था।
चूरा

@sawdust: मैंने सभी आईबीएम दस्तावेजों का हवाला दिया, जो पीसी BIOS इंटरफ़ेस के लिए रजिस्टरों के असाइनमेंट से पहले भी हो सकता है। यह स्पष्ट है कि ब्रैडले को सेक्टर 0 को एक आरक्षित पते के रूप में सेट करके गलत या गलत किया गया था, लेकिन हम यह सुनिश्चित नहीं कर सकते कि क्या हुआ, क्योंकि यह कभी नहीं हुआ। यह हो सकता है कि वह इस बात से अवगत नहीं था कि सेक्टर के पते-हिस्से में भी ट्रैक-नंबर निहित है। या शायद यह अतिरिक्त क्षेत्र डिस्केट्स की एक संपत्ति थी जिसे ब्रैडली के सामान्य BIOS इंटरफ़ेस में ले जाया गया था। हम केवल यह जानते हैं कि CHS में इस परिवर्तन के लिए IBM / PC BIOS जिम्मेदार था।
harrymc

हमेशा इन मामलों में, राल्फ ब्राउन की इंटरप्ट लिस्ट अमूल्य जानकारी प्रदान करती है। हालांकि यह सच है कि @sawdust ने CH के बारे में एक आठ-बिट रजिस्टर होने के बारे में लिखा था, यह नहीं कि CX का उपयोग कैसे किया गया था। इसके बजाय, CX को सिलेंडर नंबर और सेक्टर नंबर दोनों के साथ थोड़ा-सा भर दिया गया था (लेकिन यह एक्सटेंशन जाहिरा तौर पर केवल हार्ड डिस्क पर लागू होता था, फ्लॉपी के लिए नहीं। फ्लॉपी के लिए, CL ने सेक्टर नंबर और CH सिलेंडर नंबर को पकड़ रखा था)। उदाहरण के लिए Int 13 / AH = 02h, BIOS के लिए निर्दिष्ट इंटरफ़ेस की तुलना करें - DISK - READ SECTOR (S) INTO MEMORY इनपुट पैरामीटर।
एक सीवीएन

1

फ्लॉपी डिस्क पर पहला विनिर्देश आईबीएम 3740 की उपस्थिति के साथ आईबीएम द्वारा बनाया गया था और यह उल्लेख नहीं करता है कि सिस्टम के लिए आरक्षित क्षेत्र हैं। सिस्टम के लिए एकमात्र आरक्षण ट्रैक 00 है, जो केवल "डेटा सेट लेबल" को संग्रहीत करता है जो पटरियों 01 से 76 में संग्रहीत जानकारी के प्रकार की पहचान करता है। यह स्पष्ट रूप से परिभाषित करता है कि पहला क्षेत्र सेक्टर 1 है। यह एक संयोग नहीं है, लेकिन ए कंप्यूटर की संख्या के खिलाफ प्राकृतिक संख्या का मामला।

हम यह देख सकते हैं कि जब मानव कुछ भी गिनना शुरू करता है, तो वह शून्य से शुरू नहीं होता है, बल्कि एक से होता है। उदाहरण के लिए, कल्पना कीजिए कि एक कक्षा में 135 छात्र हैं। संख्या की गणना कुछ इस तरह होगी: एक, दो, तीन ... एक सौ चौंतीस, एक सौ पैंतीस।

इसका संख्यात्मक प्रतिनिधित्व इस प्रकार होगा: 1, 2, 3, ... 134, 135 अब तक हम सहमत हैं, है ना?

अब आइए उन अंकों को डालें जिन्हें 0. द्वारा दर्शाया नहीं गया है। यह इस तरह दिखेगा: 001, 002, 003, ..., 015, 016, ..., 099, 100, ..., 133, 134, 135

सीएचएस के साथ ऐसा होता है : 0,0,1 - 0,0,2 - 0,0,3 ...

यह महत्वपूर्ण है कि किसी डेटाबेस में एक्सेल शीट या ऑटो-न्यूमेरिक फील्ड में पंक्तियाँ 1 से शुरू होती हैं और 0 से नहीं।

क्या डेविड जे। ब्रैडले ने BIOS को इस तरह से शेड्यूल किया था?

हाँ, लेकिन वह बाहर नहीं था।

निश्चित रूप से कोई तकनीकी कारण नहीं है कि SECTOR 0 का उपयोग तब तक नहीं किया जा सकता है जब तक कि यह आरक्षित न हो और अन्य कारणों से उपयोगकर्ताओं से छिपा हो। सिद्धांत रूप में सब कुछ यह प्राकृतिक अंकन का मामला है।

GA21-9152-2 फाइल नंबर 3740-00,15
आईबीएम 3740 डेटा एंट्री सिस्टम

पेज 12
डिस्क जांच
... प्रत्येक डिस्क में किसी भी अनियमित पटरियों को बदलने के लिए दो स्पेयर ट्रैक होते हैं। इसके अलावा, इनिशियलाइज़ेशन फीचर डिस्केट पर सेक्टर एड्रेस के अनुक्रम को बदलने का एक साधन प्रदान करता है। आम तौर पर, क्षेत्रों का अनुक्रम संख्यात्मक क्रम (1, 2, 3, ... 25,26) में होता है

पृष्ठ 24
डिस्कनेक्ट पर डेटा लेबलिंग
आरंभीकरण के दौरान, डेटा सेट के लिए डेटा सेट लेबल मैग्नेटिक रूप से डिस्केट के सूचकांक ट्रैक (ट्रैक 00) पर दर्ज किया जाता है। इस लेबल का प्राथमिक उद्देश्य डिस्केट पर सेट किए गए डेटा का स्थान दिखाना है

यह 1973 में था। इसने 8 "डिस्केट पर डेटा दर्ज किया। आईबीएम पीसी 5150 का जन्म 12 अगस्त, 1981 को हुआ था ... और हम यह नहीं भूल सकते कि उन्हें पिछले उपकरणों के साथ कुछ संगतता बनाए रखना था।

कोई तकनीकी कारण जरूर था।


ड्राइवर के लिए आरक्षित - I / O फर्मवेयर इंटरफ़ेस, यहां तक ​​कि आधुनिक दिन में SSD डिस्क या फ्लैश में I / O संचालन के लिए / पढ़ने / लिखने / कॉपी / प्रारूप आदि के लिए आरक्षित स्थान है
जॉर्डन डेविस


हां, लेकिन SECTOR 0 नहीं बल्कि CYLINDER 0. पहले विनिर्देशन (IBM 3740) सिलेंडर 0 से "इंडेक्स सिलेंडर" कहलाता है और "INDEX CYLINDER LAYOUT" में निर्दिष्ट कई डेटा संग्रहीत करता है। आधुनिक डिस्क पर यह सिलेंडर आमतौर पर "CYLINDER नंबर -1", हां "-1" के रूप में असाइन किया गया है, और केवल नियंत्रक द्वारा सुलभ है। यह बताने के लिए कुछ भी नहीं है कि सेक्टर 0 का उपयोग क्यों नहीं किया गया है और हालांकि हम इसे सीपी / एम जैसे कुछ ऑपरेटिंग सिस्टम में देख सकते हैं, यह वर्चुअल है क्योंकि हार्डवेयर अभी भी आईबीएम 3740 के अनुसार निर्मित है। दूसरे शब्दों में, पहला सेक्टर है क्षेत्र 1. क्यों? "प्राकृतिक
अंकन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.