Table of Contents

فصل دوم: نرم افزار

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

تقسیم‌بندی نرم‌افزار

نرم‌افزار به دو دسته اصلی تقسیم می‌شود:

  1. نرم‌افزار سیستم (System Software): برنامه‌هایی که سخت‌افزار را مدیریت می‌کنند و بستری برای اجرای نرم‌افزارهای کاربردی فراهم می‌کنند. مثال: سیستم‌عامل (Windows، Linux، macOS)
  2. نرم‌افزار کاربردی (Application Software): برنامه‌هایی که وظایف خاصی را برای کاربر انجام می‌دهند. مثال: Word، Chrome، Photoshop

نرم‌افزار سیستم

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

🎬 نرم‌افزار سیستم و کاربردی

نرم‌افزار کاربردی

نرم‌افزار کاربردی (Application Software) برنامه‌هایی هستند که برای انجام وظایف خاص توسط کاربر نهایی طراحی شده‌اند. این نرم‌افزارها روی سیستم‌عامل اجرا می‌شوند و از خدمات آن استفاده می‌کنند.

انواع نرم‌افزارهای کاربردی:

  • واژه‌پردازها (Word Processors): Microsoft Word، Google Docs
  • صفحات گسترده (Spreadsheets): Microsoft Excel، Google Sheets
  • مرورگرهای وب (Web Browsers): Chrome، Firefox، Edge
  • نرم‌افزارهای گرافیکی: Photoshop، Illustrator
  • نرم‌افزارهای ارتباطی: Zoom، Teams، WhatsApp
  • بازی‌های کامپیوتری

معماری سیستم کامپیوتر و عملکرد آن

معماری سیستم کامپیوتر به ساختار و سازماندهی اجزای یک سیستم کامپیوتری اشاره دارد. این معماری شامل CPU، حافظه، دستگاه‌های ورودی/خروجی و نحوه ارتباط آن‌ها با یکدیگر است.

ویژگی‌های اساسی سیستم‌های کامپیوتری

یک سیستم کامپیوتری دارای چهار ویژگی اساسی است:

  1. ورودی (Input): دریافت داده از کاربر یا دستگاه‌های خارجی
  2. پردازش (Processing): انجام عملیات روی داده‌ها توسط CPU
  3. خروجی (Output): ارائه نتایج به کاربر
  4. ذخیره‌سازی (Storage): نگهداری داده‌ها برای استفاده بعدی

کامپایل برنامه: ترجمه برنامه‌ها از زبان سطح بالا به کد ماشین

کامپایلر (Compiler) برنامه‌ای است که کد نوشته شده به زبان‌های سطح بالا (مانند C، Java، Python) را به کد ماشین (صفر و یک) ترجمه می‌کند که CPU می‌تواند آن را اجرا کند.

مراحل کامپایل:

  1. تحلیل لغوی (Lexical Analysis): شکستن کد به توکن‌ها
  2. تحلیل نحوی (Syntax Analysis): بررسی ساختار گرامری
  3. تحلیل معنایی (Semantic Analysis): بررسی معنا و منطق
  4. تولید کد میانی (Intermediate Code)
  5. بهینه‌سازی (Optimization)
  6. تولید کد نهایی (Code Generation): تولید کد ماشین

🎬 معماری سیستم کامپیوتر

فرآیند بوت شدن (Booting)

بوت شدن (Booting) فرآیندی است که طی آن کامپیوتر از حالت خاموش روشن می‌شود و سیستم‌عامل را بارگذاری می‌کند. این فرآیند شامل مراحل مختلفی از بررسی سخت‌افزار تا بارگذاری کامل سیستم‌عامل است.

انواع بوت شدن:

  1. Cold Boot (بوت سرد): روشن کردن کامپیوتر از حالت خاموش کامل
  2. Warm Boot (بوت گرم): راه‌اندازی مجدد کامپیوتر بدون خاموش کردن کامل (Restart)

مراحل فرآیند بوت شدن:

  1. Power-On Self-Test (POST): بررسی سلامت سخت‌افزار (CPU، RAM، کارت گرافیک)
  2. بارگذاری BIOS/UEFI: firmware مادربرد اجرا می‌شود
  3. تشخیص دستگاه بوت: BIOS/UEFI دستگاه بوت (HDD، SSD، USB) را پیدا می‌کند
  4. بارگذاری Bootloader: برنامه کوچکی که سیستم‌عامل را بارگذاری می‌کند (مانند GRUB برای Linux)
  5. بارگذاری هسته سیستم‌عامل (Kernel): هسته سیستم‌عامل در RAM بارگذاری می‌شود
  6. راه‌اندازی سرویس‌ها: درایورها و سرویس‌های سیستم راه‌اندازی می‌شوند
  7. صفحه ورود (Login Screen): سیستم آماده استفاده است

بارگذاری سیستم‌عامل:

پس از اجرای Bootloader، هسته سیستم‌عامل (Kernel) در حافظه RAM بارگذاری می‌شود. Kernel مسئول مدیریت منابع سیستم، زمان‌بندی پردازش‌ها و ارتباط با سخت‌افزار است.

🎬 فرآیند بوت شدن

سیستم‌عامل (Operating System - OS)

سیستم‌عامل (OS) مهم‌ترین نرم‌افزار یک کامپیوتر است. این نرم‌افزار به عنوان واسط بین کاربر و سخت‌افزار عمل می‌کند و منابع سیستم را مدیریت می‌کند.

هسته (Kernel) و شِل (Shell)

هسته (Kernel):

Kernel قلب سیستم‌عامل است که مستقیماً با سخت‌افزار ارتباط برقرار می‌کند. وظایف اصلی Kernel:

  • مدیریت حافظه (Memory Management)
  • مدیریت پردازش‌ها (Process Management)
  • مدیریت دستگاه‌ها (Device Management)
  • مدیریت فایل (File Management)
  • امنیت و کنترل دسترسی

شِل (پوسته):

Shell رابطی است که کاربر از طریق آن با Kernel ارتباط برقرار می‌کند. دو نوع Shell وجود دارد:

  • CLI (Command Line Interface): رابط خط فرمان (مانند Bash، PowerShell)
  • GUI (Graphical User Interface): رابط گرافیکی (مانند Windows Desktop، GNOME)

انواع سیستم‌عامل‌ها

  1. سیستم‌عامل‌های دسکتاپ: Windows، macOS، Linux
  2. سیستم‌عامل‌های موبایل: Android، iOS
  3. سیستم‌عامل‌های سرور: Windows Server، Linux Server، Unix
  4. سیستم‌عامل‌های Embedded: RTOS، Embedded Linux
  5. سیستم‌عامل‌های Real-Time: QNX، VxWorks

🎬 سیستم‌عامل

ویژگی های سیستم عامل های مدرن

سیستم‌عامل‌های مدرن دارای ویژگی‌های پیشرفته‌ای هستند:

  • چندوظیفگی (Multitasking): اجرای همزمان چندین برنامه
  • چندکاربری (Multi-user): پشتیبانی از چندین کاربر همزمان
  • حافظه مجازی (Virtual Memory): استفاده از فضای دیسک به عنوان RAM
  • امنیت (Security): کنترل دسترسی، رمزنگاری، فایروال
  • شبکه (Networking): پشتیبانی از پروتکل‌های شبکه
  • رابط کاربری گرافیکی (GUI): محیط بصری برای تعامل کاربر

انواع سیستم‌عامل‌های محبوب

  1. Microsoft Windows: محبوب‌ترین سیستم‌عامل دسکتاپ
  2. macOS: سیستم‌عامل اختصاصی Apple
  3. Linux: سیستم‌عامل متن‌باز با توزیع‌های مختلف (Ubuntu، Fedora، Debian)
  4. Android: سیستم‌عامل موبایل مبتنی بر Linux
  5. iOS: سیستم‌عامل موبایل Apple

سیستم عامل 32 بیتی در مقابل سیستم عامل 64 بیتی

تفاوت اصلی بین سیستم‌عامل ۳۲ بیتی و ۶۴ بیتی:

  • حافظه قابل آدرس‌دهی: ۳۲ بیتی تا ۴GB، ۶۴ بیتی تا ۱۶EB
  • عملکرد: ۶۴ بیتی سریع‌تر برای محاسبات سنگین
  • سازگاری: ۶۴ بیتی می‌تواند برنامه‌های ۳۲ بیتی را اجرا کند
  • امنیت: ۶۴ بیتی ویژگی‌های امنیتی بیشتری دارد

حافظه مجازی (Virtual Memory)

حافظه مجازی تکنیکی است که به سیستم‌عامل اجازه می‌دهد از فضای دیسک (HDD/SSD) به عنوان RAM استفاده کند. این کار امکان اجرای برنامه‌های بزرگ‌تر از RAM فیزیکی را فراهم می‌کند.

نحوه کار حافظه مجازی

سیستم‌عامل حافظه را به بلوک‌های کوچکی به نام «صفحه» (Page) تقسیم می‌کند. صفحاتی که در حال حاضر استفاده نمی‌شوند، به فضای دیسک (Swap File در Windows یا Swap Partition در Linux) منتقل می‌شوند. وقتی برنامه‌ای به آن صفحه نیاز دارد، دوباره به RAM بازگردانده می‌شود.

صفحه‌بندی (Paging) در سیستم‌عامل

صفحه‌بندی (Paging) یک روش مدیریت حافظه است که در آن حافظه فیزیکی به بلوک‌های هم‌اندازه به نام Frame و حافظه منطقی به بلوک‌های هم‌اندازه به نام Page تقسیم می‌شود.

اصطلاحات مرتبط با صفحه‌بندی

  • Page: بلوک حافظه منطقی
  • Frame: بلوک حافظه فیزیکی
  • Page Table: جدولی که نگاشت Page به Frame را ذخیره می‌کند
  • Page Fault: وقتی برنامه به Page‌ای دسترسی پیدا می‌کند که در RAM نیست
  • Swapping: جابه‌جایی Page بین RAM و دیسک

فرآیند صفحه‌بندی گام به گام

  1. CPU یک آدرس منطقی تولید می‌کند
  2. Page Table برای یافتن Frame متناظر بررسی می‌شود
  3. اگر Page در RAM باشد (Page Hit)، داده مستقیماً خوانده می‌شود
  4. اگر Page در RAM نباشد (Page Fault)، از دیسک بارگذاری می‌شود

تکنیک‌های صفحه‌بندی

  • Demand Paging: Page فقط وقتی بارگذاری می‌شود که نیاز باشد
  • Pre-paging: Pageهای مجاور همزمان بارگذاری می‌شوند
  • Page Replacement: وقتی RAM پر است، Page قدیمی با جدید جایگزین می‌شود (FIFO، LRU، Optimal)

نقص صفحه (Page Fault) و مدیریت آن

Page Fault زمانی رخ می‌دهد که برنامه به Page‌ای دسترسی پیدا کند که در RAM نیست. سیستم‌عامل:

  1. بررسی می‌کند که آیا دسترسی معتبر است
  2. یک Frame خالی در RAM پیدا می‌کند
  3. Page را از دیسک به RAM منتقل می‌کند
  4. Page Table را به‌روزرسانی می‌کند
  5. دستورالعمل را دوباره اجرا می‌کند

شلوغی (Thrashing) و علل آن

Thrashing وضعیتی است که در آن سیستم‌عامل بیشتر وقت خود را صرف جابه‌جایی Pageها بین RAM و دیسک می‌کند تا اجرای واقعی برنامه‌ها. این باعث کاهش شدید عملکرد می‌شود.

علل Thrashing:

  • کمبود RAM فیزیکی
  • اجرای همزمان برنامه‌های زیاد
  • الگوریتم Page Replacement نامناسب

مزایا و معایب حافظه مجازی و صفحه‌بندی

مزایا:

  • اجرای برنامه‌های بزرگ‌تر از RAM
  • ایزوله‌سازی فرآیندها (هر فرآیند فضای آدرس مجازی خود را دارد)
  • استفاده بهینه از RAM

معایب:

  • کندی نسبت به RAM فیزیکی
  • امکان Thrashing
  • پیچیدگی پیاده‌سازی

🎬 حافظه مجازی

فصل: معرفی فرآیندها (Processes) و رشته‌ها (Threads) در سیستم عامل

معماری مفهومی کامپیوتر

در معماری مفهومی کامپیوتر، سخت‌افزار (CPU، RAM، I/O) در پایین‌ترین لایه قرار دارد. سیستم‌عامل روی سخت‌افزار اجرا می‌شود و برنامه‌های کاربردی روی سیستم‌عامل.

تعریف فرآیند (Process)

فرآیند (Process) یک برنامه در حال اجرا است. هر فرآیند شامل کد برنامه، داده‌ها، پشته (Stack)، heap و منابع سیستم (فایل‌های باز، سوکت‌ها) است.

مراحل ایجاد و اجرای فرآیند

  1. بارگذاری برنامه از دیسک به RAM
  2. تخصیص منابع (حافظه، فایل‌ها)
  3. ایجاد PCB (Process Control Block)
  4. قرار دادن در صف آماده (Ready Queue)
  5. زمان‌بندی برای اجرا توسط CPU

چرخه حیات فرآیند (Process Lifecycle)

  1. New: فرآیند ایجاد شده است
  2. Ready: آماده اجرا، منتظر CPU
  3. Running: در حال اجرا روی CPU
  4. Waiting: منتظر رویداد (I/O، سیگنال)
  5. Terminated: اجرا پایان یافته است

پردازنده (CPU) و نقش آن در اجرای فرآیندها

CPU از طریق Context Switching بین فرآیندها جابه‌جا می‌شود. در هر لحظه فقط یک فرآیند روی یک هسته CPU اجرا می‌شود، اما با جابه‌جایی سریع (Time Slicing)، توهم اجرای همزمان ایجاد می‌شود.

رشته‌ها (Threads) و چندرشتگی (Multithreading)

Thread یک واحد اجرایی سبک‌وزن درون یک فرآیند است. یک فرآیند می‌تواند چندین Thread داشته باشد که همگی فضای حافظه یکسانی را به اشتراک می‌گذارند.

تفاوت بین فرآیندها و Threadها

  • حافظه: فرآیندها فضای حافظه جداگانه دارند، Threadها فضای مشترک
  • ارتباط: ارتباط بین Threadها ساده‌تر از فرآیندها است
  • ایجاد: ایجاد Thread سریع‌تر از Process است
  • ایزوله‌سازی: فرآیندها ایزوله‌تر و امن‌تر هستند