این پرسش رو خیلی دارن شاید شما نیز یکی از اونها باشید.
چرا اندازه ای که رو جعبه محصول (USB Flash,SSD,HDD) نوشته شده
با اندازه ای که توی رایانه میبینم تفاوت داره؟
توی این نوشتار چند نکته خواهم گفت که به درک مطلب کمک میکنه.
نکته: ممکنه با یک بار خوندن (همانند من) مطلب رو درک نکید
اما با چند بار خوندن به مقصود نویسنده میرسید.
پیش گفتار:
هارد دیسک ها در داخلشان دارای یک یا چند دیسک مغناطیسی هستند. هر دو طرف هارد دارای هد مغناطیسی
برای خواندن و نوشتن اطلاعات هست.
هر دو طرف هارد دیسک را در اصطلاح side یا head می نامند.
هر طرف هارد به بخش هائی تقسیم شده که اصطلاحا" track یا cylinder نام دارند.
هر track (یا cylinder) هم به قسمت هائی بنام sector تقسیم شده است.
هر sector میتواند فقط 512 بایت اطلاعات را ذخیره کند.
کوچکترین قسمتی که کنترل کننده هارد میتواند به آن دسترسی پیدا کند sector است.بدین معنی که اگر بخواهیم
حتی فقط یک بایت اطلاعات را از یک sector بخوانیم ، هارد مجبور است تمام اطلاعات موجود در سکتور مربوطه را
بخواند.
تعداد بایت ها در یک سکتور از هارد دیسک ثابت بوده و همانطوریکه در سطور بالا اشاره شد برابر 512 بایت است.
ولی تعداد track ها و تعداد سکتور های موجود در هر track نسبت به شرکت های مختلف سازنده هارد دیسک و
نسبت به حجم هارد ها متفاوت است.
توجه کنید که مجموعه مشخصه های (تعداد head ها ، تعداد track ها ، و تعداد سکنور های موجود در هر track) را
یرای هارد دیسک ها اصطلاحا" geometry میگویند.
اگر تعداد head های یک هارد را به تعداد track هایش ضرب کرده و سپس عدد حاصل را به تعداد سکتور های موجود
در هر track ضرب کنیم ، تعداد کل سکتور های یک هارد بدست می آید.که اگر این عدد را هم به 512 ضرب کنیم ،
حجم کل هارد مشخص خواهد شد.
دلیل تفاوت اندازه:
یک نکته ای را در رابطه با هارد دیسک ها باید توجه کنید و آن این است که سازندگان هارد دیسک ها ، در روی هارد
هایشان حجم را براساس اعداد بر پایه 10 می نویسند در حالیکه کامپیوتر حجم را براساس اعداد بر پایه 2 محاسبه
میکند.
اجازه بدهید که با یک مثال مطلب را روشنتر بیان کنم:وقتی کارخانه سازنده
هارد دیسک در روی هارد ، حجم آن را یک گیگا بایت می نویسد.منظورش این است
که حجم
هارد یک بیلیون بایت است (1000000000 یعنی برابر 10 بتوان 9).
ولی وقتی شما آن را در کامپیوتر استفاده میکنید ، چون سیستم بر اساس اعداد مبنای 2 کار میکند ،لذا چون عدد
1073741824 را یک گیگا بایت میداند (یعنی عدد 2 بتوان 30 را ). در نتیجه کامپیوتر این هارد (1000000000 بایتی )
بگفته سازنده را ، دیگر یک گیگا نمی شناسد بلکه آن را تقریبا" حدود هفتاد مگا بایت کمتر از یک گیگا بایت اعلام
خواهد کرد.
مثال دیگر :
------------
فرضا" شرکت Seagate هاردی را با حجم 250 گیگا بایت بیرون داده است.ولی با حساب کامپیوتری این هارد فقط
232.88 گیگا بایت حجم دارد (چون این هارد برابر اعلام سازنده دارای تعداد 488397168 سکتور است که اگر آنرا بعدد
512 ضرب کنیم حجمش برابر 250059350016 میشود که براساس اعداد بر مبنای 2 تقریبا" برابر 232 گیگا بایت است)
تفاوت در مبنا چیست؟
شرح این مطلب به زبانی که برای عموم قابل درک باشد واقعا" خیلی مشکل است. برای اینکه برای درک درست
مطلب ضرورت دارد که کاربر با اصول الکترونیک و بعد چگونگی کار مدارات دیجیتالی و مبنای اعداد مورد استفاده
آشنا باشید.
ما در زندگی روزمره از اعداد بر مبنای 10 استفاده میکنیم. این بدان معنی است که ما هر عددی را که بخواهیم
بگوئیم ، با کنار هم قرار دادن اعداد دهگانه 0 تا 9 این کار را انجام میدهیم.
ولی در مدارات دیجیتالی و کامپیوتر فقط دو عدد 0 و 1 وجود دارند و در نتیجه اینها هر عددی را با کنار هم قرار دادن
فقط اعداد 0 و 1 انجام میدهند
فرضا" در سیستم 4 بیتی عدد 0000 بمعنی 0 است و عدد 0001 بمعنی عدد 1 است و فرضا" 0101 بمعنی عدد 2
است (توجه داشته باشید که همه اعدادی که در اینجا عرض میکنم فرضی هستند).
حالا این فکر را بکنید که ما با داشتن فقط دو عدد 0 و 1 در یک سیستم آدرس دهی 4 بیتی چند عدد را میتوانیم بنویسیم.
حالا بیائیم به سیسیتم دیجیتالی 8 بیتی ، در اینجا فرضا" عدد 00000000 بمعنی عدد 0 ما است و عدد 00000001 به معنی
عدد 1 ما است و الی آخر
حالا با همین مختصر این مطلب را جمع کنم.
فرضا" میخواهیم عدد 10 را با سیستم 4 بیتی نوشته و جائی منتقل کنیم در اینجا برای عد 10 ما سیستم دیجیتالی باید اعداد
مبنای 2 یعنی 0000 و 0001 را کنار هم بنویسد و موقع انتقال بجای دیگر هم چون سیستم 4 بیتی است باید اول 4 بیت اول را
یعنی 0000 را منتقل کرده و سپس چهار بیت دوم یعنی 0001 را منتقل کند که زمانبر است
در حالیکه در سیستم 8 بیتی میشود 10 مثلا" بصورت 00000010 نوشت ک در یکبار هم منتقل میشود یعنی سرعت بالا رفته
است.
در سیستم مبنای دو همه اعدادی که ساخته میشوند بر مبنای 2 بتوان فلان نوشته میشوند
که حرف آخر اینکه عدد 1024 در مبنای 2 معادل عدد 1000 در اعداد مبنای 10 خودمان میشود.
شرکت سازنده هارد ، حجم را بر مبنای 10 اعلام میکند ولی کامپیوتر حجم را بر مبنای 2 محاسبه و اعلام میکند
و چون کامپیوتر هر 1024 را یک کیلو می شناسد لذا همواره حجمی که ما می بینیم کوچکتر از آنی هست که
سازنده گفته است.
نرم افزاری برای تبدیل عددها:
در رابطه با هارد ها دیدیم که فرضا" یک هارد 1000 گیگا می خریم ولی کامپیوتر آن را کمتر از این مقدار نشان می دهد.
بنده علت را توضیح دادم.
بد ندیدم که برنامه زیر را معرفی کنم که شاید بدردتان بخورد
برنامه رایگان و کم حجم و پرتابل Decimal Binary Unit Converter با جاوا نوشته شده و میتواند اعداد باینری و دسیمال
را بهمدیگر تبدیل کند.
برای مثال در شکل زیر ، بنده در قسمت (1) حجم هاردی را که خریداری کرده ام (1000 گیگا بایت یا 1 ترابایت) وارد
کرده ام و برنامه در قسمت (2) حجمی را که کامپیوتر نشان خواهد داد را مشخص کرده است. در این مثال می بینیم
که کامپیوتر حجم یک ترابایت (1000 گیگا بایت) را ، مقدار 931.32 گیگا بایت نشان خواهد داد
تذکر برای اجرای این برنامه باید در سیستمتان جاوا نصب باشد
http://www.mediafire.com/download/z0...ter-1.0.jar.7z
نرم افزار دیگر برنامه خوب AIDA64 هست که مشخصات هارد 500 گیگا بایتی بنده را بصورت زیر اعلام کرد
همانطور که مشاهده میکنید در قسمت Parameters تعداد سیلندر (یعنی track ) و هد و سکتور را مشخص نموده است
که مطابق زیر ، مجوع حاصلضرب آن ها برابر حجم هارد بنده یعنی 500 گیگا بایت میشود
کد:
969021x 16 x 63 x 512 = 500,107,862,016 Byte = 500 GB
نکته: بخشهایی از نوشتار برای کم کردن پاک شد.