ذخیرهسازی و فایلها: حافظهای که میمونه
اساسدی و هارد دیسک رو مقایسه کن، ببین سیستم فایل چطور اسمی مثل photo.jpg رو به بلوکهایی روی دیسک تبدیل میکنه، و چرا یه برنامه قبل از اجرا باید به رم کپی بشه.
دو جور یادآوری
هارد دیسک (HDD)
صفحههای مغناطیسی که میچرخن، معمولاً ۵۴۰۰ یا ۷۲۰۰ دور در دقیقه، با یه بازو که میچرخه تا برسه به شیار درست.
پیدا کردن داده حدوداً ۵ تا ۱۰ میلیثانیه طول میکشه، چون قطعهها باید واقعاً حرکت کنن.
برای هر گیگابایت ارزونه؛ هنوز برای پشتیبانگیریهای بزرگ رایجه.
اساسدی (SSD)
تراشههای حافظهی فلش، بدون هیچ قطعهی متحرکی.
هر خوندن حدوداً چند ده میکروثانیه طول میکشه، یعنی برای پیدا کردن داده حدود صد برابر سریعتر از هارد دیسک.
ولی هنوز حدود هزار برابر کندتر از رمـه. همهی این عددها تقریبیان.
خودت رو امتحان کن
چرا هارد دیسک برای پیدا کردن داده میلیثانیهها وقت میبره، ولی اساسدی فقط میکروثانیهها؟
- هارد دیسک دادهش رو با یه کد پیچیدهتر ذخیره میکنه
- هارد دیسک باید بازوش رو حرکت بده و صبر کنه صفحه بچرخه؛ اساسدی هیچ قطعهی متحرکی نداره
- اساسدی همیشه خیلی کوچیکتره، پس جای کمتری برای گشتن هست
- هارد دیسک با یه کابل بلندتر وصل شده
جواب رو ببین
هارد دیسک باید بازوش رو حرکت بده و صبر کنه صفحه بچرخه؛ اساسدی هیچ قطعهی متحرکی نداره
درسته. هارد دیسک مکانیکیه: بازو باید بچرخه تا شیار و جای درست باید زیرش بچرخه. حرکت فلز میلیثانیهها طول میکشه؛ اساسدی فقط بهصورت الکتریکی میخونه.
سیستم فایل (File System)
بخشی از سیستمعامل که یه دیسک رو مرتب نگه میداره. دیسک به بلوک (Block)های هماندازه تقسیم میشه، معمولاً هر کدوم ۴ کیلوبایت، و سیستم فایل یه جدول نگه میداره: اسم هر فایل، پوشهش، اندازه و تاریخهاش، و اینکه محتواش توی کدوم بلوکهاست. لازم نیست بلوکهای یه فایل کنار هم باشن. سیستم فایلهای رایج: NTFS روی ویندوز، APFS روی مک و آیفون، و ext4 روی خیلی از دستگاههای لینوکسی و گوشیهای اندرویدی.
photo.jpg با ۱۲ کیلوبایت ممکنه توی بلوکهای ۱۷، ۱۸ و ۴۲ باشه. جدول این فهرست رو یادش میمونه، پس خود دیسک هیچوقت لازم نیست بدونه عکس چیه.
قانون اصلی
پردازنده هیچچیز رو مستقیم از روی دیسک اجرا نمیکنه
پردازنده دستورها و دادهها رو فقط از آدرسهای حافظه برمیداره، یعنی از رم (از طریق کشها). دیسک خیلی کنده و اینجوری سیمکشی نشده. پس باز کردن یه برنامه یا فایل یعنی اول کپی کردنش از ذخیرهسازی به رم، و بعد پردازنده روی اون کپی کار میکنه. ذخیره کردن (Save) برعکسشه: کپی کردن از رم به دیسک، تا با رفتن برق از بین نره.
یه سند رو باز کن و یه ساعت تایپ کن؛ تغییرها فقط توی رمن. دکمهی ذخیره رو بزن، روی اساسدی کپی میشن.
خودت رو امتحان کن
چون اساسدیها سریعن، یه پردازندهی امروزی دستورهای یه برنامه رو مستقیم از روی اساسدی اجرا میکنه، بدون اینکه به رم کپیشون کنه.
جواب رو ببین
نادرست
غلطه. حتی یه اساسدیِ سریع هم حدوداً هزار برابر کندتر از رمه، و پردازنده فقط از آدرسهای حافظه برمیداره. کد برنامه اول به رم کپی میشه و پردازنده از اونجا اجراش میکنه.
قدمبهقدم ببین

photo.jpg یعنی بلوکهای ۱۷، ۱۸ و ۴۲ سمت چپ یه اساسدی هست که بهشکل یه جدول از بلوکها کشیده شده. سه تاش رنگیان: ۱۷، ۱۸ و ۴۲، و همهشون کنار هم نیستن. جدول کوچیک بالا ردیف سیستم فایله: photo.jpg توی همین سه تا بلوکه.

باز کردن عکس بلوکهاش رو به رم کپی میکنه عکس رو باز میکنی. سه تا بلوک از روی یه فلش توی سه تا خونهی رم، سمت راست، کپی میشن، این بار کنار هم، و پردازندهی زیر رم روشن میشه. حالا برنامهی نمایش عکس میتونه روش کار کنه، چون پردازنده به رم دسترسی داره.

قطع برق: رم خالی میشه، اساسدی بلوکهاش رو نگه میداره حالا برق قطع میشه. نوار رم خالی میشه، درست مثل درس ۷. ولی بلوکهای ۱۷، ۱۸ و ۴۲ روی اساسدی رنگی میمونن: عکس هنوز اونجاست و منتظره دفعهی بعد دوباره کپی بشه.

بهای یادت موندن سه تا میله روی یه مقیاس کشاومده: رم حدود ۱۰۰ نانوثانیه، اساسدی حدود ۵۰ میکروثانیه، هارد دیسک حدود ۵ میلیثانیه. اساسدی تقریباً هزار برابر کندتر از رمه و هارد دیسک از اون هم کندتر. اینها عددهای تقریبیان.
خودت رو امتحان کن
توی قابها، کامپیوتر از کجا میدونست photo.jpg توی بلوکهای ۱۷، ۱۸ و ۴۲ـه؟
- پردازنده همهی بلوکها رو گشت دنبال چیزی که شبیه عکس باشه
- جدول سیستم فایل اسم هر فایل و بلوکهایی که توشه رو فهرست کرده
- عکسها همیشه توی اولین بلوکهای خالی ذخیره میشن
- بلوکها به اسم فایل نامگذاری شدن
جواب رو ببین
جدول سیستم فایل اسم هر فایل و بلوکهایی که توشه رو فهرست کرده
درسته. سیستم فایل یه جدول از اسمها، پوشهها، اندازهها و فهرست بلوکها نگه میداره. پیدا کردن photo.jpg توی جدول، بدون هیچ گشتنی، ۱۷، ۱۸ و ۴۲ رو میده.
وقتی photo.jpg رو باز میکنی چی میشه
- پیدا کردن اسم
سیستم فایل photo.jpg رو توی جدولش پیدا میکنه: ۱۲ کیلوبایت، بلوکهای ۱۷، ۱۸ و ۴۲.
- خوندن بلوکها
اساسدی این سه تا بلوک رو میخونه، هر کدوم حدوداً توی چند ده میکروثانیه.
- کپی به رم
بایتها توی رم گذاشته میشن، جایی که پردازنده میتونه با آدرس بهشون برسه.
- کار روی کپی
برنامهی نمایش عکس، عکس رو رمزگشایی میکنه و میکشه. تا وقتی یه ویرایش رو ذخیره نکنی، فایل روی اساسدی دستنخورده میمونه.
خودت رو امتحان کن
وقتی آرش یه فایل رو پاک میکنه و سطل بازیافت رو خالی میکنه، بایتهاش همیشه دقیقاً همون لحظه از روی دیسک از بین میرن.
جواب رو ببین
نادرست
غلطه. معمولاً فقط ردیف جدول حذف میشه و بلوکها آزاد علامت میخورن. بایتها ممکنه تا وقتی روشون نوشته بشه بمونن (روی اساسدی، TRIM اغلب کمی بعد پاکشون میکنه). برای همینه که پاک کردن امن یه مرحلهی جداست.
خودت رو امتحان کن
کدومها با خاموش شدن برق دادهشون رو نگه میدارن؟
- رم
- کش L1
- رجیسترهای پردازنده
- اساسدی
- هارد دیسک
- فلش مموری USB
جواب رو ببین
بدون برق فراموش میکنه: رم, کش L1, رجیسترهای پردازنده
بدون برق هم نگه میداره: اساسدی, هارد دیسک, فلش مموری USB
مرور درس
- ذخیرهسازی غیرفرّاره: برنامهها، عکسها و سیستمعامل رو با خاموش شدن هم نگه میداره.
- هارد دیسک یه بازو رو روی صفحههای چرخان حرکت میده و میلیثانیهها طول میکشه؛ اساسدی قطعهی متحرک نداره و چند ده میکروثانیه طول میکشه، که هنوز حدود هزار برابر کندتر از رمه.
- سیستم فایل دیسک رو به بلوکها تقسیم میکنه و یه جدول از اسم و بلوکهای هر فایل نگه میداره، که لازم نیست کنار هم باشن.
- پردازنده هیچچیز رو از روی دیسک اجرا نمیکنه: باز کردن اون رو به رم کپی میکنه و ذخیره کردن برش میگردونه.
- پاک کردن معمولاً فقط ردیف جدول رو حذف میکنه، پس بایتها ممکنه تا وقتی روشون نوشته بشه بمونن.