کامپیوتر از چه ساخته شده؟
پردازنده (CPU)، حافظهی RAM، دیسک و سیستمعامل هر کدام چه کاری میکنند و چطور با هم کار میکنند؛ فرق RAM و دیسک با آزمایش واقعی (سرعت و ماندگاری)، خواندن مشخصات یک ماشین با lscpu و free و lsblk و df، و انتخاب مشخصات برای یک سرور.
- حدود ۲۱ دقیقه مطالعه
- ۶ مثال اجراشده
- ۳ تمرین با جواب
- مقدماتی (از صفر مطلق)
- بهروزرسانی: ۲۶ مهر ۱۴۰۵
توی این درس یاد میگیری کامپیوتر از چه بخشهایی ساخته شده و هر بخش چه کاری میکند: پردازنده (CPU) که فکر میکند، حافظهی RAM که میز کار است، دیسک که کمد دائمی است، و سیستمعامل که همه را هماهنگ میکند. فرق RAM و دیسک را فقط توضیح نمیدهیم، با دو آزمایش واقعی میبینی (کدام تندتر است و کدام چیزها را نگه میدارد). آخرش هم میتوانی مشخصات هر کامپیوتر یا سرور را بخوانی و بفهمی هر عدد یعنی چه.
مسئله: «کامپیوترم کند است» یعنی چه؟
Section titled “مسئله: «کامپیوترم کند است» یعنی چه؟”همه این جمله را شنیدهایم یا گفتهایم. ولی «کند» چند علت کاملاً متفاوت دارد: شاید پردازنده سرش شلوغ است، شاید حافظه پر شده، شاید دیسک پر یا قدیمی است. اگر ندانی کامپیوتر از چه ساخته شده، فقط حدس میزنی و پول را هم اشتباه خرج میکنی (مثلاً دیسک بزرگتر میخری، در حالی که مشکل RAM بود).
تشبیه: یک آشپزخانه
Section titled “تشبیه: یک آشپزخانه”یک آشپزخانهی رستوران را تصور کن:
- پردازنده (CPU) مثل آشپز است: کار اصلی را او انجام میدهد؛ یک دستور را میخواند و اجرا میکند، بعد دستور بعدی. آشپز تندتر یا چند آشپز، یعنی کار زودتر تمام میشود.
- RAM مثل میز کار آشپز است: چیزهایی که الان لازم دارد روی آن است. در دسترس و سریع است، ولی کوچک است و آخر شب جمع میشود (خاموش شدن کامپیوتر، RAM را خالی میکند).
- دیسک مثل انبار و یخچال است: خیلی بزرگتر است و همهچیز را نگه میدارد، حتی وقتی رستوران بسته است. ولی رفتن به انبار و برگشتن وقت میبرد.
- سیستمعامل مثل مدیر آشپزخانه است: تصمیم میگیرد کدام سفارش به کدام آشپز برسد، میز کار بین کارها چطور تقسیم شود و چه چیزی از انبار آورده شود.
بخشهای اصلی یک کامپیوتر
Section titled “بخشهای اصلی یک کامپیوتر”| بخش | کارش | ماندگار است؟ | اندازهی معمول | تشبیه |
|---|---|---|---|---|
| پردازنده (CPU) | دستورها را یکییکی اجرا میکند | ندارد (چیزی ذخیره نمیکند) | ۲ تا ۶۴ هسته | آشپز |
| حافظهی RAM | داده و برنامهی در حال اجرا | نه: با خاموشی پاک میشود | ۴ تا ۶۴ گیگابایت | میز کار |
| دیسک (SSD یا HDD) | همهی فایلها و برنامهها | بله | ۱۲۸ گیگابایت تا چند ترابایت | انبار |
| کارت شبکه | حرف زدن با کامپیوترهای دیگر | ندارد | — | تلفن |
| ورودی و خروجی | صفحهکلید، ماوس، نمایشگر | ندارد | — | پنجرهی سفارش |
| سیستمعامل | مدیریت همهی بالا | روی دیسک نصب است | — | مدیر |
دو اصطلاح که زیاد میشنوی: سختافزار (hardware)، هر چیزی که میتوانی لمس کنی (پردازنده، RAM، دیسک). نرمافزار (software)، دستورهایی که روی آنها اجرا میشود (سیستمعامل، مرورگر، بازی).
مثالهای عملی
Section titled “مثالهای عملی”مثال ۱: پردازنده را بشناس (lscpu)
Section titled “مثال ۱: پردازنده را بشناس (lscpu)”دستور lscpu (مخفف list CPU) مشخصات پردازنده را چاپ میکند. خروجی بلند است؛ با sed فقط خطهای مهم را نگه میداریم:
lscpu | grep -E 'Model name|^CPU\(s\)|Thread|Core|Socket|Architecture'Architecture: x86_64CPU(s): 4Model name: Intel(R) Xeon(R) Processor @ 2.10GHzThread(s) per core: 1Core(s) per socket: 4Socket(s): 1خطبهخط:
Architecture: x86_64: خانوادهی پردازنده (۶۴ بیتی، مثل بیشتر کامپیوترهای شخصی و سرورها؛ گوشیها و مکهای جدید معمولاًarm64هستند).Model name: مدل پردازنده.2.10GHzیعنی حدود ۲٫۱ میلیارد چرخه در ثانیه.CPU(s): 4: چهار «واحد پردازش» برای سیستمعامل.Core(s) per socket: 4وSocket(s): 1: یک تراشهی فیزیکی (socket) با چهار هسته.Thread(s) per core: 1یعنی هر هسته یک رشتهی اجرا دارد (در بعضی پردازندهها ۲ است: هر هسته دو کار را تقریباً همزمان پیش میبرد، و عددCPU(s)دو برابر هستهها میشود).
یعنی این ماشین میتواند چهار کار را واقعاً همزمان انجام بدهد.
مثال ۲: حافظهی RAM (free -h)
Section titled “مثال ۲: حافظهی RAM (free -h)”دستور free میزان RAM را نشان میدهد. -h یعنی «human»: عددها را با واحد خوانا (Mi و Gi) بنویس، نه با بایت خام:
free -h total used free shared buff/cache availableMem: 15Gi 646Mi 14Gi 14Mi 1.2Gi 15GiSwap: 0B 0B 0Bسه ردیف و شش ستون:
total: کل RAM نصبشده، اینجا ۱۵ گیگابایت (Giیعنی گیبیبایت؛ فرقش با گیگابایت را در درس بعد میبینی).used: چقدر برنامهها واقعاً استفاده میکنند (664Mi).free: RAM کاملاً بیاستفاده.buff/cache: RAM ای که سیستمعامل برای نگه داشتن کپی فایلهای اخیر استفاده میکند تا دفعهی بعد سریعتر خوانده شوند. هر وقت برنامهای RAM لازم داشته باشد، این بخش فوراً آزاد میشود.available: عددی که واقعاً مهم است: چقدر RAM برای برنامهی تازه در دسترس است (freeبهعلاوهی آنچه میشود فوراً آزاد کرد). اینجا تقریباً همهی ۱۵ گیگ.Swap: بخشی از دیسک که اگر RAM تمام شود، بهعنوان حافظهی اضطراری استفاده میشود. اینجا0B، یعنی خاموش است.
مثال ۳: دیسک (lsblk و df -h)
Section titled “مثال ۳: دیسک (lsblk و df -h)”دو دستور، دو نگاه متفاوت به دیسک. lsblk (list block devices) دستگاههای ذخیرهسازی را نشان میدهد. df -h (disk free) نشان میدهد هر محل چقدر پر است:
lsblk -d -o NAME,SIZE,TYPE | grep -E 'NAME|vda'echodf -h / | awk '{print $1, $2, $3, $4, $5}' | column -tNAME SIZE TYPEvda 256G disk
Filesystem Size Used Avail Use%overlay 252G 12G 27G 31%lsblk: یک دیسک به اسمvdaبا ۲۵۶ گیگابایت و نوعdisk(در ماشینهای مجازی اسم دیسک اغلبvdaیاsdaاست؛ روی لپتاپهای جدیدnvme0n1). (فهرست کامل بیشتر از این است؛ باgrepفقط خط سرستون و دیسک اصلی را نگه داشتیم.)df -h: فایلسیستم اصلی (/) ۲۵۲ گیگابایت جا دارد، ۱۲ گیگ استفاده شده (Used)، ۲۷ گیگ باقی مانده (Avail) و ۳۱٪ پر است (Use%).
دقت کن Size منهای Used دقیقاً برابر Avail نیست. دلیلش این است که در این ماشین، دیسک یک «دیسک مجازی» است و عددها از دیسک میزبان میآیند؛ حتی روی کامپیوتر معمولی هم بخشی از ظرفیت برای سیستمعامل رزرو میشود. برای تصمیم، Avail و Use% را نگاه کن. هر وقت Use% به ۹۰٪ رسید، وقت پاکسازی یا دیسک بزرگتر است.
مثال ۴: RAM چقدر از دیسک تندتر است؟
Section titled “مثال ۴: RAM چقدر از دیسک تندتر است؟”ادعا کردیم RAM تند و دیسک کند است. بیا بسنجیم. پوشهی /dev/shm در لینوکس یک «دیسک» است که در واقع در RAM قرار دارد؛ پس میتوانیم یک کار را یک بار در RAM و یک بار روی دیسک واقعی انجام بدهیم. دستور dd داده مینویسد و سرعت را چاپ میکند.
آزمایش الف: یک نوشتن بزرگ (۳۲ مگابایت یکجا). conv=fdatasync یعنی «تا داده واقعاً روی دیسک ننشسته، تمام نشو».
echo "== RAM:"dd if=/dev/zero of=/dev/shm/lx-test bs=1M count=32 2>&1 | tail -n 1echo "== Disk:"dd if=/dev/zero of=lx-test bs=1M count=32 conv=fdatasync 2>&1 | tail -n 1rm -f /dev/shm/lx-test lx-test== RAM:33554432 bytes (34 MB, 32 MiB) copied, 0.0120708 s, 2.8 GB/s== Disk:33554432 bytes (34 MB, 32 MiB) copied, 0.0374097 s, 897 MB/sبرای یک نوشتن بزرگ و یکجا، RAM حدود ۳ برابر سریعتر بود (چند گیگابایت در ثانیه در برابر چند صد مگابایت)، یعنی تفاوت زیاد نیست. چرا؟ دیسکهای SSD امروزی (و دیسک مجازی این ماشین) در نوشتن پیوسته عالیاند: داده مثل آب از یک شلنگ میریزد. ضعفشان جای دیگر است:
آزمایش ب: هزاران نوشتن کوچک. ۲۰۰۰ تکهی ۴ کیلوبایتی، و oflag=dsync یعنی «بعد از هر تکه صبر کن تا واقعاً روی دیسک بنشیند». برنامههای واقعی (مثل دیتابیس) همینطور کار میکنند: بعد از هر تغییر مهم باید مطمئن شوند ذخیره شده.
echo "== RAM:"dd if=/dev/zero of=/dev/shm/lx-test bs=4k count=2000 oflag=dsync 2>&1 | tail -n 1echo "== Disk:"dd if=/dev/zero of=lx-test bs=4k count=2000 oflag=dsync 2>&1 | tail -n 1rm -f /dev/shm/lx-test lx-test== RAM:8192000 bytes (8.2 MB, 7.8 MiB) copied, 0.00390812 s, 2.1 GB/s== Disk:8192000 bytes (8.2 MB, 7.8 MiB) copied, 0.686592 s, 11.9 MB/sاینجا تفاوت حدود ۱۸۰ برابر است: RAM در حدود چهار هزارم ثانیه تمام کرد و دیسک در حدود هفت دهم ثانیه (۱۲ مگابایت بر ثانیه). هر نوشتن کوچک باید صبر کند تا دیسک تأیید کند؛ و این تأخیر (latency) است که دیسک را کند میکند، نه پهنای پیوسته. بیشتر کارهای واقعی (باز کردن صدها فایل کوچک، دیتابیس، بوت شدن) از نوع دوماند، و برای همین RAM کافی چنین تفاوتی در سرعت حسشده ایجاد میکند. (روی دیسک چرخان قدیمی (HDD) هر دو آزمایش خیلی بدتر میشد.)
مثال ۵: RAM فراموش میکند، دیسک نه
Section titled “مثال ۵: RAM فراموش میکند، دیسک نه”یک برنامهی کوچک پایتون مینویسیم که دو چیز نگه میدارد: یک عدد در متغیر (یعنی در RAM) و همان عدد در یک فایل (یعنی روی دیسک). بعد برنامه را دوبار پشتسرهم اجرا میکنیم:
# keeps a counter in memory (a variable) and on disk (a file)import os
path = "counter.txt"in_memory = 0 # lives in RAM, gone when the program endson_disk = int(open(path).read()) if os.path.exists(path) else 0
in_memory += 1on_disk += 1open(path, "w").write(str(on_disk))print(f"in RAM (variable): {in_memory} on disk (file): {on_disk}")python3 counter.pypython3 counter.pypython3 counter.pyrm -f counter.txt counter.pyin RAM (variable): 1 on disk (file): 1in RAM (variable): 1 on disk (file): 2in RAM (variable): 1 on disk (file): 3سه بار برنامه را اجرا کردیم:
in RAM (variable)هر بار ۱ است: وقتی برنامه تمام شد، متغیر (که در RAM بود) از بین رفت و اجرای بعدی از صفر شروع کرد.on disk (file)هر بار یکی بیشتر شد: ۱، ۲، ۳. چون عدد در فایل نوشته شد و فایل روی دیسک ماند و اجرای بعدی آن را خواند.
همین اصل است که میگوید «ذخیره کن»: هر چیزی که فقط در RAM باشد، با بسته شدن برنامه (یا خاموش شدن کامپیوتر) از بین میرود. (آخر بلوک فایلهای آزمایشی را پاک کردیم.)
مثال ۶: یک برنامه چقدر RAM میگیرد؟
Section titled “مثال ۶: یک برنامه چقدر RAM میگیرد؟”وقتی برنامهای را اجرا میکنی، سیستمعامل آن را از دیسک به RAM میآورد. ببینیم فایل برنامهی پایتون روی دیسک چقدر جا میگیرد و پروسهی در حال اجرایش چقدر RAM:
ls -lh $(readlink -f $(which python3)) | awk '{print "on disk:", $5, $NF}'python3 -c "import resourcekb = resource.getrusage(resource.RUSAGE_SELF).ru_maxrssprint(f'in RAM (peak): {kb / 1024:.1f} MB for an empty Python program')"on disk: 7.7M /usr/bin/python3.12in RAM (peak): 9.0 MB for an empty Python programفایل برنامهی پایتون روی دیسک حدود ۷٫۷ مگابایت است (اسمش در واقع python3.12 است و python3 یک میانبر به آن است). وقتی اجرا میشود، حتی یک برنامهی کاملاً خالی حدود ۹ مگابایت RAM میگیرد (قلهی مصرف): خود برنامه و کتابخانههایی که برای اجرا لازم دارد به RAM آمدهاند، بهعلاوهی فضای کار. برنامهی واقعی بسته به دادههایی که پردازش میکند صدها مگابایت یا بیشتر میشود. این همان «مصرف RAM» است که در مدیر وظیفه (Task Manager) هر برنامه میبینی.
پشت پرده: چرا سه سطح حافظه داریم؟
Section titled “پشت پرده: چرا سه سطح حافظه داریم؟”چرا همهچیز را در یک نوع حافظهی تند نگذاریم؟ چون حافظهی تند گران است. پس کامپیوتر چند سطح دارد و دادهی پرمصرف را به سطح تندتر میآورد. زمان دسترسی تقریبی (مرتبهی بزرگی، نه عدد دقیق):
| سطح | زمان دسترسی تقریبی | یعنی اگر ۱ نانوثانیه = ۱ ثانیه باشد |
|---|---|---|
| کش پردازنده (cache) | ~۱ نانوثانیه | ۱ ثانیه |
| RAM | ~۱۰۰ نانوثانیه | حدود ۲ دقیقه |
| SSD | ~۱۰۰ میکروثانیه | حدود ۱ روز و ۴ ساعت |
| دیسک چرخان (HDD) | ~۱۰ میلیثانیه | حدود ۴ ماه |
(ستون سوم فقط برای حس کردن فاصلههاست: اگر پردازنده برای خواندن از کش یک ثانیه صبر کند، برای HDD چند ماه صبر میکند.) به همین دلیل مثال ۴ فرق بزرگی نشان داد، و به همین دلیل وقتی RAM پر میشود سیستمعامل مجبور میشود بخشی از داده را روی دیسک (swap) بگذارد و همهچیز ناگهان کند میشود.
چرخهی کار پردازنده هم ساده است و میلیاردها بار در ثانیه تکرار میشود: ۱) بخوان (دستور بعدی را از RAM بیاور)، ۲) بفهم (این دستور چه میخواهد؟)، ۳) اجرا کن (مثلاً دو عدد را جمع کن). سرعت پردازنده را با گیگاهرتز (GHz) میگویند: ۲٫۱ گیگاهرتز یعنی حدود ۲٫۱ میلیارد چرخه در ثانیه. هسته (core) یعنی یک آشپز کامل؛ پردازندهی چهارهستهای چهار کار را واقعاً همزمان انجام میدهد.
اشتباهات رایج
Section titled “اشتباهات رایج”۱) قاطی کردن RAM و دیسک
Section titled “۱) قاطی کردن RAM و دیسک”«کامپیوتر من ۱۶ گیگ دارد» یعنی چه؟ ۱۶ گیگ RAM یا ۱۶ گیگ دیسک؟ اولی یعنی میز کار خیلی بزرگ، دومی یعنی انبار خیلی کوچک (برای امروز تقریباً هیچ). همیشه بپرس «کدام؟». راهحل: همیشه نوع را بگو: «۱۶ گیگ RAM و ۵۱۲ گیگ SSD».
۲) نگران شدن از ستون free
Section titled “۲) نگران شدن از ستون free”در مثال ۲ دیدی ستون free معمولاً خیلی کوچک نیست؛ ولی در سیستمهایی که مدتی روشن بودهاند، free اغلب کم میشود و buff/cache بزرگ. این عیب نیست: سیستمعامل RAM خالی را با کش فایلها پر میکند تا سریعتر شود و هر وقت برنامهای RAM بخواهد، آن را فوراً آزاد میکند. عددی که باید نگاه کنی ستون available (در دسترس) است. راهحل: به available نگاه کن، نه free.
۳) اشتباه در نوشتن گزینهی دستور
Section titled “۳) اشتباه در نوشتن گزینهی دستور”free -x 2>&1 | head -n 4free: invalid option -- 'x'
Usage: free [options]دستور free گزینهی -x را ندارد و فهرست گزینههای درست را برایت چاپ میکند (ما فقط چهار خط اولش را نگه داشتیم). خطا بد نیست؛ راهنماست.
df -h /no/such/placedf: /no/such/place: No such file or directoryو وقتی مسیری وجود ندارد، دستور اسم همان مسیر را در خطا میآورد. راهحل هر دو خطا: متن خطا را بخوان؛ خط اول همیشه میگوید چه چیزی اشتباه است. برای گزینههای ممکن --help بزن (مثلاً free --help).
تعداد هستههای پردازنده، مقدار کل RAM و اندازهی کل دیسک ماشین خودت را پیدا کن. (روی ویندوز: Task Manager ← Performance؛ روی مک: منوی سیب ← About This Mac؛ روی لینوکس: دستورهای زیر.)
دیدن جواب
echo "cores: $(nproc)"echo "RAM: $(free -h | awk '/^Mem:/ {print $2}')"echo "disk: $(df -h / | awk 'NR==2 {print $2}')"cores: 4RAM: 15Gidisk: 252Gnprocتعداد هستههای در دسترس را میدهد (۴).- از
free -hستونtotal(۱۵ گیگ)، و ازdf -h /ظرفیت دیسک (۲۵۲ گیگ) را برداشتیم. - اگر روی ویندوز یا مک بودی، همین سه عدد را در Task Manager یا About This Mac میبینی؛ فقط بدان «حافظه (Memory)» یعنی RAM و «ذخیرهسازی (Storage)» یعنی دیسک.
درصد RAM در دسترس را حساب کن: available تقسیم بر total ضرب در ۱۰۰. (راهنمایی: free -m عددها را به مگابایت میدهد؛ awk میتواند حساب کند.)
دیدن جواب
free -m | awk '/^Mem:/ {printf "total %d MB, available %d MB = %.0f%% free to use\n", $2, $7, $7 / $2 * 100}'total 16093 MB, available 15449 MB = 96% free to useRAM کل ۱۶٬۰۹۳ مگابایت، در دسترس ۱۵٬۴۱۶ مگابایت، یعنی ۹۶٪. در awk، $2 ستون دوم (total) و $7 ستون هفتم (available) خروجی free است. %.0f یعنی «عدد اعشاری را بدون رقم اعشار چاپ کن». اگر این درصد در ساعت شلوغ زیر ۱۰٪ برود، RAM در خطر است.
تمرین اصلی درس: یک «کارت مشخصات» یکصفحهای از ماشین بساز که مدل پردازنده، تعداد هسته، RAM به گیگابایت و پُری دیسک را چاپ کند، و بگوید این ماشین برای یک سایت کوچک (حداقل ۲ هسته و ۲ گیگ RAM) کافی است یا نه.
دیدن جواب
cat > ~/spec.sh <<'EOF'#!/usr/bin/env bash# prints a one-page spec sheet and checks a minimum for a small websitecpu=$(lscpu | awk -F': +' '/Model name/ {print $2}')cores=$(nproc)ram_gb=$(free -g | awk '/^Mem:/ {print $2}')disk_use=$(df -h / | awk 'NR==2 {print $5}')
echo "CPU: $cpu"echo "Cores: $cores"echo "RAM: ${ram_gb} GB"echo "Disk: / is ${disk_use} full"if [ "$cores" -ge 2 ] && [ "$ram_gb" -ge 2 ]; then echo "Verdict: enough for a small website"else echo "Verdict: too small (need 2+ cores and 2+ GB RAM)"fiEOFbash ~/spec.shrm -f ~/spec.shCPU: Intel(R) Xeon(R) Processor @ 2.10GHzCores: 4RAM: 15 GBDisk: / is 31% fullVerdict: enough for a small websiteاسکریپت چهار مقدار را از چهار دستور برداشت، چاپ کرد و با if تصمیم گرفت: «دستکم ۲ هسته و دستکم ۲ گیگ RAM». free -g عددها را به گیگابایت صحیح میدهد (۱۵). این ماشین هر دو شرط را دارد؛ پس «کافی است». (اسکریپتنویسی با if و متغیر را در دورهی «اسکریپتنویسی Bash» از پایه یاد میگیری؛ اینجا فقط ببین چطور چند عدد واقعی کنار هم تصمیم میسازند.)
آزمونک
Section titled “آزمونک”کامپیوتر ناگهان خاموش شد (برق رفت). کدام چیز از بین میرود؟
جواب درست: چیزهایی که فقط در RAM بودند و ذخیره نشده بودند
RAM با قطع برق خالی میشود، برای همین وقتی فایلی را ذخیره نکرده باشی از دست میرود. دیسک و سیستمعامل (که روی دیسک است) سر جایشان میمانند.
کدام بخش «فکر میکند» و دستورها را یکییکی اجرا میکند؟
جواب درست: پردازنده (CPU)
پردازنده بخشی است که دستور را میخواند و اجرا میکند. RAM و دیسک فقط داده و برنامه نگه میدارند و کارت شبکه برای ارتباط با کامپیوترهای دیگر است.
- RAM ← RAM میز کار است: چیزی را اجرا نمیکند، فقط دادهی در حال استفاده را نگه میدارد.
- دیسک ← دیسک انبار دائمی است و خودش هیچ دستوری را اجرا نمیکند.
- کارت شبکه ← کارت شبکه فقط داده را بین کامپیوتر و شبکه جابهجا میکند.
کدام دو چیز دربارهی RAM درست است؟
جواب درست: تند است و با خاموشی پاک میشود
RAM تند است ولی موقت: وقتی برق قطع شود، محتوایش پاک میشود. برای همین هر چیزی که میخواهی بماند باید روی دیسک ذخیره شود.
- کند است و دائمی است ← RAM بسیار تندتر از دیسک است و دائمی هم نیست.
- تند است و دائمی است ← تند است، ولی دائمی نیست.
- کند است و با خاموشی پاک میشود ← کند نیست؛ RAM چند هزار برابر تندتر از دیسک است.
سایتی هر شب ساعت ۹ کند میشود و در همان ساعت
availableِ RAM تقریباً صفر است و دیسک پر نیست. اول چه چیزی را زیاد میکنی؟جواب درست: RAM
وقتی RAM تمام شود، سیستمعامل مجبور میشود از دیسک کند بهعنوان حافظهی کمکی (swap) استفاده کند و همهچیز کند میشود. چون دیسک پر نیست، اضافه کردن دیسک مشکل را حل نمیکند.
- اندازهی دیسک ← دیسک پر نیست؛ پس مشکل از فضای ذخیرهسازی نیست.
- سرعت اینترنت کاربر ← سرعت اینترنت کاربر ربطی به کندی داخل سرور ندارد.
- اسم دامنه ← اسم دامنه روی سرعت پردازش اثری ندارد.
در خروجی
free -hکدام ستون نشان میدهد چقدر RAM برای برنامههای تازه واقعاً در دسترس است؟جواب درست: available
ستون available حساب میکند چه مقدار RAM آزاد است یا میشود فوراً آزادش کرد (مثلاً کش فایلها). ستون free فقط RAM کاملاً خالی را نشان میدهد و معمولاً گمراهکننده است.
- free ← free فقط RAM کاملاً بیاستفاده است؛ سیستمعامل عمداً بقیه را با کش پر میکند و آن را هم میشود آزاد کرد.
- shared ← shared حافظهی مشترک بین پروسههاست و ربطی به «آزاد بودن» ندارد.
- total ← total کل RAM نصبشده است، نه مقدار در دسترس.
وقتی روی یک برنامه دوبار کلیک میکنی، بهترتیب چه اتفاقی میافتد؟
جواب درست: سیستمعامل برنامه را از دیسک به RAM میآورد و پردازنده از RAM اجرایش میکند
پردازنده فقط از RAM میخواند (دیسک برایش خیلی کند است). سیستمعامل برنامه را از دیسک به RAM میآورد و پردازنده آن را از آنجا اجرا میکند.
- پردازنده برنامه را مستقیم از دیسک اجرا میکند ← دیسک برای پردازنده بسیار کند است؛ داده باید اول به RAM بیاید.
- برنامه از اینترنت دانلود میشود ← برنامهای که نصب است از قبل روی دیسک هست و دانلود لازم ندارد.
- برنامه روی کارت شبکه اجرا میشود ← کارت شبکه فقط ارتباط شبکه را انجام میدهد و برنامهای اجرا نمیکند.
جمعبندی
Section titled “جمعبندی”- پردازنده (CPU) دستورها را اجرا میکند. هسته یعنی یک اجراکنندهی کامل؛ چند هسته یعنی چند کار واقعاً همزمان.
- RAM میز کار است: تند، متوسط، موقت. دیسک انبار است: بزرگ، کند، دائمی. خاموشی RAM را پاک میکند، نه دیسک را.
- برنامه از دیسک به RAM میآید و پردازنده از RAM اجرایش میکند. وقتی RAM تمام شود، سیستمعامل از دیسک کمک میگیرد و همهچیز کند میشود.
- سیستمعامل بین برنامهها و سختافزار واسطه است و منابع را بینشان تقسیم میکند.
- برای سنجیدن مشخصات:
lscpu(پردازنده)،free -h(RAM، ستونavailable)،lsblkوdf -h(دیسک). - همیشه نوع را بگو: «۱۶ گیگ RAM» با «۱۶ گیگ دیسک» دو دنیاست.
| دستور | کاری که میکند |
|---|---|
lscpu | مشخصات پردازنده |
nproc | تعداد هستههای در دسترس |
free -h | وضعیت RAM (به ستون available نگاه کن) |
lsblk | فهرست دیسکها و پارتیشنها |
df -h | هر محل چقدر پر است |
dd if=/dev/zero of=FILE bs=1M count=32 | نوشتن ۳۲ مگابایت برای سنجیدن سرعت |