رفتن به محتوا
مبانی کامپیوتر و اینترنتکامپیوتر از دروندرس ۲ از ۱۶

کامپیوتر از چه ساخته شده؟

پردازنده (CPU)، حافظه‌ی RAM، دیسک و سیستم‌عامل هر کدام چه کاری می‌کنند و چطور با هم کار می‌کنند؛ فرق RAM و دیسک با آزمایش واقعی (سرعت و ماندگاری)، خواندن مشخصات یک ماشین با lscpu و free و lsblk و df، و انتخاب مشخصات برای یک سرور.

  • حدود ۲۱ دقیقه مطالعه
  • ۶ مثال اجراشده
  • ۳ تمرین با جواب
  • مقدماتی (از صفر مطلق)
  • به‌روزرسانی: ۲۶ مهر ۱۴۰۵

توی این درس یاد می‌گیری کامپیوتر از چه بخش‌هایی ساخته شده و هر بخش چه کاری می‌کند: پردازنده (CPU) که فکر می‌کند، حافظه‌ی RAM که میز کار است، دیسک که کمد دائمی است، و سیستم‌عامل که همه را هماهنگ می‌کند. فرق RAM و دیسک را فقط توضیح نمی‌دهیم، با دو آزمایش واقعی می‌بینی (کدام تندتر است و کدام چیزها را نگه می‌دارد). آخرش هم می‌توانی مشخصات هر کامپیوتر یا سرور را بخوانی و بفهمی هر عدد یعنی چه.

مسئله: «کامپیوترم کند است» یعنی چه؟

Section titled “مسئله: «کامپیوترم کند است» یعنی چه؟”

همه این جمله را شنیده‌ایم یا گفته‌ایم. ولی «کند» چند علت کاملاً متفاوت دارد: شاید پردازنده سرش شلوغ است، شاید حافظه پر شده، شاید دیسک پر یا قدیمی است. اگر ندانی کامپیوتر از چه ساخته شده، فقط حدس می‌زنی و پول را هم اشتباه خرج می‌کنی (مثلاً دیسک بزرگ‌تر می‌خری، در حالی که مشکل RAM بود).

یک آشپزخانه‌ی رستوران را تصور کن:

  • پردازنده (CPU) مثل آشپز است: کار اصلی را او انجام می‌دهد؛ یک دستور را می‌خواند و اجرا می‌کند، بعد دستور بعدی. آشپز تندتر یا چند آشپز، یعنی کار زودتر تمام می‌شود.
  • RAM مثل میز کار آشپز است: چیزهایی که الان لازم دارد روی آن است. در دسترس و سریع است، ولی کوچک است و آخر شب جمع می‌شود (خاموش شدن کامپیوتر، RAM را خالی می‌کند).
  • دیسک مثل انبار و یخچال است: خیلی بزرگ‌تر است و همه‌چیز را نگه می‌دارد، حتی وقتی رستوران بسته است. ولی رفتن به انبار و برگشتن وقت می‌برد.
  • سیستم‌عامل مثل مدیر آشپزخانه است: تصمیم می‌گیرد کدام سفارش به کدام آشپز برسد، میز کار بین کارها چطور تقسیم شود و چه چیزی از انبار آورده شود.
برنامه‌ها روی دیسک ذخیره می‌شوند. وقتی اجرا می‌کنی، سیستم‌عامل آن‌ها را به RAM می‌آورد و پردازنده از RAM می‌خواند و اجرا می‌کند. هر چه به پردازنده نزدیک‌تر، تندتر و کوچک‌تر و گران‌تر.

بخش‌های اصلی یک کامپیوتر

Section titled “بخش‌های اصلی یک کامپیوتر”
بخش کارش ماندگار است؟ اندازه‌ی معمول تشبیه
پردازنده (CPU) دستورها را یکی‌یکی اجرا می‌کند ندارد (چیزی ذخیره نمی‌کند) ۲ تا ۶۴ هسته آشپز
حافظه‌ی RAM داده و برنامه‌ی در حال اجرا نه: با خاموشی پاک می‌شود ۴ تا ۶۴ گیگابایت میز کار
دیسک (SSD یا HDD) همه‌ی فایل‌ها و برنامه‌ها بله ۱۲۸ گیگابایت تا چند ترابایت انبار
کارت شبکه حرف زدن با کامپیوترهای دیگر ندارد — تلفن
ورودی و خروجی صفحه‌کلید، ماوس، نمایشگر ندارد — پنجره‌ی سفارش
سیستم‌عامل مدیریت همه‌ی بالا روی دیسک نصب است — مدیر

دو اصطلاح که زیاد می‌شنوی: سخت‌افزار (hardware)، هر چیزی که می‌توانی لمس کنی (پردازنده، RAM، دیسک). نرم‌افزار (software)، دستورهایی که روی آن‌ها اجرا می‌شود (سیستم‌عامل، مرورگر، بازی).

نرم‌افزار روی سخت‌افزار سوار است. سیستم‌عامل بین برنامه‌ها و سخت‌افزار واسطه است؛ برنامه‌ها مستقیم با دیسک و RAM حرف نمی‌زنند و از سیستم‌عامل می‌خواهند.

مثال ۱: پردازنده را بشناس (lscpu)

Section titled “مثال ۱: پردازنده را بشناس (lscpu)”

دستور lscpu (مخفف list CPU) مشخصات پردازنده را چاپ می‌کند. خروجی بلند است؛ با sed فقط خط‌های مهم را نگه می‌داریم:

Terminal window
lscpu | grep -E 'Model name|^CPU\(s\)|Thread|Core|Socket|Architecture'
خروجی
Architecture: x86_64
CPU(s): 4
Model name: Intel(R) Xeon(R) Processor @ 2.10GHz
Thread(s) per core: 1
Core(s) per socket: 4
Socket(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) بنویس، نه با بایت خام:

Terminal window
free -h
خروجی
total used free shared buff/cache available
Mem: 15Gi 646Mi 14Gi 14Mi 1.2Gi 15Gi
Swap: 0B 0B 0B

سه ردیف و شش ستون:

  • total: کل RAM نصب‌شده، اینجا ۱۵ گیگابایت (Gi یعنی گیبی‌بایت؛ فرقش با گیگابایت را در درس بعد می‌بینی).
  • used: چقدر برنامه‌ها واقعاً استفاده می‌کنند (664Mi).
  • free: RAM کاملاً بی‌استفاده.
  • buff/cache: RAM ای که سیستم‌عامل برای نگه داشتن کپی فایل‌های اخیر استفاده می‌کند تا دفعه‌ی بعد سریع‌تر خوانده شوند. هر وقت برنامه‌ای RAM لازم داشته باشد، این بخش فوراً آزاد می‌شود.
  • available: عددی که واقعاً مهم است: چقدر RAM برای برنامه‌ی تازه در دسترس است (free به‌علاوه‌ی آنچه می‌شود فوراً آزاد کرد). اینجا تقریباً همه‌ی ۱۵ گیگ.
  • Swap: بخشی از دیسک که اگر RAM تمام شود، به‌عنوان حافظه‌ی اضطراری استفاده می‌شود. اینجا 0B، یعنی خاموش است.

دو دستور، دو نگاه متفاوت به دیسک. lsblk (list block devices) دستگاه‌های ذخیره‌سازی را نشان می‌دهد. df -h (disk free) نشان می‌دهد هر محل چقدر پر است:

Terminal window
lsblk -d -o NAME,SIZE,TYPE | grep -E 'NAME|vda'
echo
df -h / | awk '{print $1, $2, $3, $4, $5}' | column -t
خروجی
NAME SIZE TYPE
vda 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 یعنی «تا داده واقعاً روی دیسک ننشسته، تمام نشو».

Terminal window
echo "== RAM:"
dd if=/dev/zero of=/dev/shm/lx-test bs=1M count=32 2>&1 | tail -n 1
echo "== Disk:"
dd if=/dev/zero of=lx-test bs=1M count=32 conv=fdatasync 2>&1 | tail -n 1
rm -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 یعنی «بعد از هر تکه صبر کن تا واقعاً روی دیسک بنشیند». برنامه‌های واقعی (مثل دیتابیس) همین‌طور کار می‌کنند: بعد از هر تغییر مهم باید مطمئن شوند ذخیره شده.

Terminal window
echo "== RAM:"
dd if=/dev/zero of=/dev/shm/lx-test bs=4k count=2000 oflag=dsync 2>&1 | tail -n 1
echo "== Disk:"
dd if=/dev/zero of=lx-test bs=4k count=2000 oflag=dsync 2>&1 | tail -n 1
rm -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) و همان عدد در یک فایل (یعنی روی دیسک). بعد برنامه را دوبار پشت‌سرهم اجرا می‌کنیم:

counter.py
# 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 ends
on_disk = int(open(path).read()) if os.path.exists(path) else 0
in_memory += 1
on_disk += 1
open(path, "w").write(str(on_disk))
print(f"in RAM (variable): {in_memory} on disk (file): {on_disk}")
Terminal window
python3 counter.py
python3 counter.py
python3 counter.py
rm -f counter.txt counter.py
خروجی
in RAM (variable): 1 on disk (file): 1
in RAM (variable): 1 on disk (file): 2
in RAM (variable): 1 on disk (file): 3

سه بار برنامه را اجرا کردیم:

  • in RAM (variable) هر بار ۱ است: وقتی برنامه تمام شد، متغیر (که در RAM بود) از بین رفت و اجرای بعدی از صفر شروع کرد.
  • on disk (file) هر بار یکی بیشتر شد: ۱، ۲، ۳. چون عدد در فایل نوشته شد و فایل روی دیسک ماند و اجرای بعدی آن را خواند.

همین اصل است که می‌گوید «ذخیره کن»: هر چیزی که فقط در RAM باشد، با بسته شدن برنامه (یا خاموش شدن کامپیوتر) از بین می‌رود. (آخر بلوک فایل‌های آزمایشی را پاک کردیم.)

مثال ۶: یک برنامه چقدر RAM می‌گیرد؟

Section titled “مثال ۶: یک برنامه چقدر RAM می‌گیرد؟”

وقتی برنامه‌ای را اجرا می‌کنی، سیستم‌عامل آن را از دیسک به RAM می‌آورد. ببینیم فایل برنامه‌ی پایتون روی دیسک چقدر جا می‌گیرد و پروسه‌ی در حال اجرایش چقدر RAM:

Terminal window
ls -lh $(readlink -f $(which python3)) | awk '{print "on disk:", $5, $NF}'
python3 -c "
import resource
kb = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss
print(f'in RAM (peak): {kb / 1024:.1f} MB for an empty Python program')
"
خروجی
on disk: 7.7M /usr/bin/python3.12
in 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) یعنی یک آشپز کامل؛ پردازنده‌ی چهارهسته‌ای چهار کار را واقعاً همزمان انجام می‌دهد.

«کامپیوتر من ۱۶ گیگ دارد» یعنی چه؟ ۱۶ گیگ RAM یا ۱۶ گیگ دیسک؟ اولی یعنی میز کار خیلی بزرگ، دومی یعنی انبار خیلی کوچک (برای امروز تقریباً هیچ). همیشه بپرس «کدام؟». راه‌حل: همیشه نوع را بگو: «۱۶ گیگ RAM و ۵۱۲ گیگ SSD».

در مثال ۲ دیدی ستون free معمولاً خیلی کوچک نیست؛ ولی در سیستم‌هایی که مدتی روشن بوده‌اند، free اغلب کم می‌شود و buff/cache بزرگ. این عیب نیست: سیستم‌عامل RAM خالی را با کش فایل‌ها پر می‌کند تا سریع‌تر شود و هر وقت برنامه‌ای RAM بخواهد، آن را فوراً آزاد می‌کند. عددی که باید نگاه کنی ستون available (در دسترس) است. راه‌حل: به available نگاه کن، نه free.

۳) اشتباه در نوشتن گزینه‌ی دستور

Section titled “۳) اشتباه در نوشتن گزینه‌ی دستور”
Terminal window
free -x 2>&1 | head -n 4
خروجی
free: invalid option -- 'x'
Usage:
free [options]

دستور free گزینه‌ی -x را ندارد و فهرست گزینه‌های درست را برایت چاپ می‌کند (ما فقط چهار خط اولش را نگه داشتیم). خطا بد نیست؛ راهنماست.

Terminal window
df -h /no/such/place
خروجی
df: /no/such/place: No such file or directory

و وقتی مسیری وجود ندارد، دستور اسم همان مسیر را در خطا می‌آورد. راه‌حل هر دو خطا: متن خطا را بخوان؛ خط اول همیشه می‌گوید چه چیزی اشتباه است. برای گزینه‌های ممکن --help بزن (مثلاً free --help).

تمرینآسان

تعداد هسته‌های پردازنده، مقدار کل RAM و اندازه‌ی کل دیسک ماشین خودت را پیدا کن. (روی ویندوز: Task Manager ← Performance؛ روی مک: منوی سیب ← About This Mac؛ روی لینوکس: دستورهای زیر.)

دیدن جواب
Terminal window
echo "cores: $(nproc)"
echo "RAM: $(free -h | awk '/^Mem:/ {print $2}')"
echo "disk: $(df -h / | awk 'NR==2 {print $2}')"
خروجی
cores: 4
RAM: 15Gi
disk: 252G
  • nproc تعداد هسته‌های در دسترس را می‌دهد (۴).
  • از free -h ستون total (۱۵ گیگ)، و از df -h / ظرفیت دیسک (۲۵۲ گیگ) را برداشتیم.
  • اگر روی ویندوز یا مک بودی، همین سه عدد را در Task Manager یا About This Mac می‌بینی؛ فقط بدان «حافظه (Memory)» یعنی RAM و «ذخیره‌سازی (Storage)» یعنی دیسک.
تمرینمتوسط

درصد RAM در دسترس را حساب کن: available تقسیم بر total ضرب در ۱۰۰. (راهنمایی: free -m عددها را به مگابایت می‌دهد؛ awk می‌تواند حساب کند.)

دیدن جواب
Terminal window
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 use

RAM کل ۱۶٬۰۹۳ مگابایت، در دسترس ۱۵٬۴۱۶ مگابایت، یعنی ۹۶٪. در 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 website
cpu=$(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)"
fi
EOF
bash ~/spec.sh
rm -f ~/spec.sh
خروجی
CPU: Intel(R) Xeon(R) Processor @ 2.10GHz
Cores: 4
RAM: 15 GB
Disk: / is 31% full
Verdict: enough for a small website

اسکریپت چهار مقدار را از چهار دستور برداشت، چاپ کرد و با if تصمیم گرفت: «دست‌کم ۲ هسته و دست‌کم ۲ گیگ RAM». free -g عددها را به گیگابایت صحیح می‌دهد (۱۵). این ماشین هر دو شرط را دارد؛ پس «کافی است». (اسکریپت‌نویسی با if و متغیر را در دوره‌ی «اسکریپت‌نویسی Bash» از پایه یاد می‌گیری؛ اینجا فقط ببین چطور چند عدد واقعی کنار هم تصمیم می‌سازند.)

⚡ بررسی سریع

کامپیوتر ناگهان خاموش شد (برق رفت). کدام چیز از بین می‌رود؟

آزمونک
  1. کدام بخش «فکر می‌کند» و دستورها را یکی‌یکی اجرا می‌کند؟

  2. کدام دو چیز درباره‌ی RAM درست است؟

  3. سایتی هر شب ساعت ۹ کند می‌شود و در همان ساعت available ِ RAM تقریباً صفر است و دیسک پر نیست. اول چه چیزی را زیاد می‌کنی؟

  4. در خروجی free -h کدام ستون نشان می‌دهد چقدر RAM برای برنامه‌های تازه واقعاً در دسترس است؟

  5. وقتی روی یک برنامه دوبار کلیک می‌کنی، به‌ترتیب چه اتفاقی می‌افتد؟

  • پردازنده (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نوشتن ۳۲ مگابایت برای سنجیدن سرعت