سیری عمیق در سیستم عامل ها

Summarize this content to 400 words in Persian Lang
سیستم عامل نرم افزاری است که سخت افزار کامپیوتر را مدیریت می کند. یک سیستم کامپیوتری را می توان به چهار جزء تقسیم کرد: سخت افزار، سیستم عامل، برنامه های کاربردی، و الف کاربر.
را سخت افزار – واحد پردازش مرکزی (CPU)، حافظه، و دستگاه های ورودی/خروجی (I/O) – منابع محاسباتی اساسی را برای سیستم فراهم می کند.
را سیستم عامل سخت افزار را کنترل می کند و استفاده از آن را در بین برنامه های کاربردی مختلف برای کاربران مختلف هماهنگ می کند.
سیستم عامل (OS) به عنوان مدیر منابع کامپیوتر عمل می کند
از آنجایی که استفاده از سخت افزار خالی به تنهایی آسان نیست، برنامه های کاربردی توسعه یافته اند. این برنامه ها به عملیات مشترک خاصی نیاز دارند، مانند عملیات کنترل دستگاه های ورودی/خروجی.سپس کارکردهای مشترک کنترل و تخصیص منابع در یک نرم افزار جمع می شوند: سیستم عامل.
این جزء اصلی یک سیستم عامل است. کنترل کاملی بر هر چیزی که در سیستم اتفاق می افتد دارد. سخت افزار، منابع سیستم و اجرای برنامه ها را مدیریت می کند.
هسته یکپارچه
این یک فرآیند بزرگ است که به طور کامل در یک فضای آدرس واحد اجرا می شود. به دلیل ارتباط مستقیم بین اجزا، عملکرد بالایی را ارائه می دهد. طراحی آنها ساده تر است.مثال ها: لینوکس، نسخه های اولیه یونیکس.
میکروکرنل
با انتقال بیشتر خدمات سیستم عامل، مانند درایورهای دستگاه و سیستم های فایل، به فضای کاربر، مقدار کد در حال اجرا در حالت هسته را به حداقل می رساند. خود هسته فقط وظایف اساسی مانند ارتباطات بین فرآیندی (IPC) و تعامل سخت افزاری سطح پایین را انجام می دهد.ماژولار بودن بیشتر و نگهداری آسان تر از آنجایی که سرویس ها از هسته جدا شده اند.مثال: MINIX، QNX، L4
هسته ترکیبی
این جنبههای معماری یکپارچه و میکروکرنل را ترکیب میکند. هدف آن ارائه عملکرد یک هسته یکپارچه در حالی که مقداری ماژولار بودن را با اجازه دادن به خدمات خاصی برای اجرا در فضای کاربر حفظ می کند.مثال: Windows NT، macOS
مسئولیت هامدیریت فرآیندمدیریت حافظهمدیریت دستگاهمدیریت فایل سیستمتماس های سیستمی:
نمای کاربر
قانون مور
در دهه 1960، گوردون مور، یکی از بنیانگذاران اینتل، پیش بینی کرد که تعداد ترانزیستورهای یک مدار مجتمع تقریباً هر 18 ماه دو برابر می شود که منجر به افزایش تصاعدی در قدرت محاسباتی و کاهش هزینه هر ترانزیستور می شود.
اجزای سیستم عامل
هسته:
برنامه های سیستم:برنامه های سیستم ابزارها و ابزارهایی هستند که به کاربران در تعامل با سیستم عامل و مدیریت منابع سیستم کمک می کنند، اما بخشی از هسته نیستند.مثال CLI، ابزارهای مدیریت فایل (به عنوان مثال، ls، cp)، و ابزارهای پیکربندی سیستم.
برنامه های کاربردی:برنامه های کاربردی برای کاربران نهایی برای انجام وظایف خاص طراحی شده اندمثال مایکروسافت ورد، گوگل کروم
سازمان کامپیوتری – سیستمی
CPU (واحد پردازش مرکزی):دستورالعمل ها را اجرا می کند و داده ها را پردازش می کند. این جزء اصلی مسئول محاسبات و مدیریت وظایف است.
WMIC (خط فرمان ابزار مدیریت ویندوز) یک ابزار خط فرمان در ویندوز است که راهی برای پرس و جو و مدیریت اطلاعات سیستم و داده های پیکربندی ارائه می دهد.
wmic cpu get name, maxclockspeed, numberofcores,numberoflogicalprocessors,threadcount,systemname
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
کنترل کننده های دستگاه:این یک جزء سخت افزاری است که عملکرد نوع خاصی از دستگاه های جانبی را مدیریت و کنترل می کند (به عنوان مثال، درایوهای دیسک، پورت های USB، کارت های گرافیک). به عنوان یک واسطه بین CPU و دستگاه جانبی عمل می کند.
wmic path Win32_PnPEntity get Name, DeviceID
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
*درایورهای دستگاه: *این یک جزء نرم افزاری است که به سیستم عامل و برنامه های کاربردی راهی برای تعامل با یک دستگاه سخت افزاری از طریق یک رابط استاندارد ارائه می دهد. دستورات کلی از سیستم عامل را به عملیات خاص دستگاه که توسط کنترل کننده دستگاه درک می شود ترجمه می کند.
driverquery //list all the installed drivers
wmic driver get name, description
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
*کنترل کننده حافظه: *دسترسی به حافظه سیستم (RAM) را مدیریت می کند و تضمین می کند که CPU و کنترل کننده های مختلف دستگاه می توانند به طور منظم و هماهنگ به حافظه دسترسی داشته باشند.
اتوبوساین یک سیستم ارتباطی است که اجزای مختلف را در یک کامپیوتر از جمله CPU، حافظه و کنترلکنندههای دستگاه به هم متصل میکند.
قطع می کنداینها سیگنال هایی هستند که به CPU ارسال می شوند تا آن را در مورد رویدادهایی که نیاز به توجه فوری دارند، آگاه کنند.
کارکردن:
1) هنگامی که یک دستگاه نیاز به توجه دارد، کنترل کننده دستگاه یک سیگنال وقفه را به CPU ارسال می کند، معمولاً از طریق گذرگاه سیستم.2) با دریافت وقفه، CPU وظیفه فعلی خود را متوقف می کند و اجرا را به یک مکان ثابت در حافظه که روال سرویس وقفه (ISR) در آن قرار دارد، منتقل می کند.3) ISR رویدادی را که باعث وقفه شده است اجرا و مدیریت می کند. پس از تکمیل ISR، CPU به حالت قبلی باز می گردد و محاسبات قطع شده را از سر می گیرد.
مدیریت وقفه:برای مدیریت وقفه ها از جدول اشاره گرها (بردار وقفه) استفاده می شود. این جدول آدرس های روتین های مختلف ISR را ذخیره می کند. هر ورودی در جدول مربوط به یک شماره درخواست وقفه است.
انواع حافظه
حافظه اصلی (RAM): (فرار)برای ذخیره برنامه ها و داده هایی که به طور فعال/مستقیما توسط CPU استفاده می شود استفاده می شود.
برنامه بوت استرپ:این برنامه اولیه ای است که هنگام روشن شدن رایانه اجرا می شود و سیستم عامل را در RAM بارگذاری می کند. از آنجایی که RAM فرار است، در حافظه غیر فرار ذخیره می شود.
سلسله مراتب ذخیره سازی
ذخیره سازی اولیه/حافظه فیزیکی (فرار):ثبت می کندحافظه کشحافظه اصلی (RAM)
ذخیره سازی ثانویه (غیر فرار):هارد دیسک (HDD) (ذخیره سازی مکانیکی)درایوهای حالت جامد (SSD) (ذخیرهسازی الکتریکی)دیسک های نوری و نوارهای مغناطیسی
حافظه کش
در CPU یا نزدیک به آن یکپارچه شده است. این یک فضای ذخیره سازی کوچک و پرسرعت است که در داخل CPU یا بین CPU و حافظه اصلی قرار دارد. برای کاهش تأخیر و بهبود عملکرد، کپیهایی از دادههایی که اغلب به آنها دسترسی دارند را از حافظه اصلی ذخیره میکند. این به طور معمول شامل چندین سطح (L1، L2، و گاهی اوقات L3) است که هر سطح بزرگتر اما کندتر از سطح قبلی است.
این یک مکان ذخیره سازی کوچک و سریع در یک CPU است که برای نگهداری موقت داده ها در طول پردازش استفاده می شود. آنها را می توان در یک چرخه ساعت دسترسی داشت. رجیسترهای تعبیه شده در هر هسته CPU معمولاً برای دسترسی بسیار سریع و اغلب در یک چرخه ساعت CPU طراحی شده اند.
انواع رجیستر
رجیسترهای همه منظوره (GPR):این رجیسترها برای انواع عملیات استفاده می شوند و می توانند داده ها، آدرس ها یا نتایج میانی را در خود نگه دارند.
ثبت های ویژه:
برنامه شمارنده (PC): آدرس دستور بعدی را که باید اجرا شود را نگه می دارد. این به CPU کمک می کند تا جریان دستورالعمل ها را پیگیری کند.Instruction Register (IR): شامل دستور فعلی در حال اجرا است.Stack Pointer (SP): به بالای فعلی پشته اشاره می کند که برای مدیریت فراخوانی تابع و متغیرهای محلی استفاده می شود.نشانگر پایه (BP): برای اشاره به پایه قاب پشته استفاده می شود که به دسترسی به پارامترهای تابع و متغیرهای محلی کمک می کند.ثبت وضعیت / ثبت پرچم: حاوی پرچم هایی است که اطلاعاتی در مورد وضعیت CPU ارائه می دهد (به عنوان مثال، حمل، صفر، پرچم های سرریز).
ثبت فهرست:برای ذخیره نمایه ها برای دسترسی به آرایه و جدول استفاده می شود. آنها اغلب در حالت های آدرس دهی برای محاسبه موثر آدرس استفاده می شوند.
حافظه با دسترسی تصادفی (RAM)
این یک نوع حافظه فرار است که توسط CPU برای ذخیره داده هایی که به طور فعال در حال استفاده یا پردازش هستند استفاده می شود و دسترسی سریع به این داده ها را فراهم می کند.
انواع رم:
DRAM (رم پویا)هر بیت داده را در یک خازن جداگانه در یک مدار مجتمع ذخیره می کند. از آنجایی که خازن ها شارژ نشت می کنند، داده های ذخیره شده باید به طور دوره ای به روز شوند. هزینه کمتر و کندتر از SRAM است.
SRAM (رم استاتیک)از فلیپ فلاپها برای ذخیره هر بیت داده استفاده میکند، که مانند DRAM نیازی به رفرش ندارد.مثال حافظه کش
رام (حافظه فقط خواندنی)
این یک حافظه غیر فرار است که برای ذخیره سیستم عامل و نرم افزار سیستم استفاده می شود که نیازی به تغییر مکرر ندارد.
انواع رام:
PROM (رام قابل برنامه ریزی)می توان آن را یک بار پس از ساخت برنامه ریزی کرد و به طور دائم ذخیره می شود. فرآیند برنامه نویسی با استفاده از تجهیزات ویژه انجام می شود.
EPROM (رام قابل برنامه ریزی قابل پاک شدن)با قرار گرفتن در معرض اشعه ماوراء بنفش (UV) پاک می شود و سپس دوباره برنامه ریزی می شود.مثال در سیستم هایی استفاده می شود که گاهی اوقات به روز رسانی سیستم عامل ضروری است.
EEPROM (رام قابل برنامه ریزی با قابلیت پاک شدن الکتریکی)می توان آن را با استفاده از شارژ الکتریکی پاک کرد و دوباره برنامه ریزی کرد، بدون نیاز به نور UV.
مثال برای ذخیره مقادیر کمی از داده ها استفاده می شود که ممکن است نیاز به به روز رسانی دوره ای داشته باشند، مانند تنظیمات بایوس یا داده های پیکربندی.
هارد دیسک (HDD)
این یک نوع ذخیره سازی غیر فرار است که به دلیل قطعات متحرک مکانیکی کندتر از SSD است و ظرفیت ذخیره سازی بالاتری را ارائه می دهد. مثال معمولاً برای ذخیره مقادیر زیادی داده از جمله سیستم عامل ها، برنامه ها و فایل های کاربر استفاده می شود
درایوهای حالت جامد (SSD)
این یک نوع ذخیره سازی غیر فرار است که سریعتر از HDD است و ظرفیت ذخیره سازی کمتری را ارائه می دهدمثال برای ذخیره سازی داده ها در جایی که سرعت بسیار مهم است، مانند کارهای محاسباتی با کارایی بالا، بازی ها و کارهایی که نیاز به دسترسی به داده های با سرعت بالا دارند، استفاده می شود.
wmic diskdrive get model,serialNumber,size,mediaType
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
یک نخ است کوچکترین واحد اجرا در یک فرآیند این یک دنباله دستورالعمل سبک و مستقل است که می تواند همزمان با رشته های دیگر در همان فرآیند اجرا شود.
اجزای موضوع:
شمارنده برنامه: دستور بعدی را که باید اجرا شود را پیگیری می کند.ثبت نام ها: داده ها و آدرس های میانی را در حین اجرا نگه دارید.پشته: فراخوانی توابع، متغیرهای محلی و آدرسهای برگشتی خاص رشته را مدیریت میکند.شناسه موضوع: به طور منحصر به فرد موضوع را در فرآیند شناسایی می کند.
شرایط
چندبرنامهنویسی – چندبرنامهنویسی به عنوان آماده نگه داشتن چندین برنامه در حافظه اصلی به طور همزمان برای اجرا شناخته میشود.چند پردازش – کامپیوتری که همزمان از بیش از یک CPU استفاده می کند.چندوظیفه ای – چندوظیفه ای چیزی نیست جز چندبرنامه نویسی با الگوریتم زمان بندی دورگرد.Multithreading گسترش چندوظیفه ای است.
این یک فناوری است که به چندین نمونه مجازی مانند ماشین های مجازی (VM) اجازه می دهد تا روی یک ماشین فیزیکی واحد اجرا شوند.
انواع مجازی سازی
مجازی سازی کامل:محیط مجازی کاملی را ایجاد می کند که از سیستم میزبان جدا شده است. به نظر می رسد هر ماشین مجازی (VM) سیستم عامل و سخت افزار کامل خود را دارد. سیستم عامل مهمان نمی داند که در یک محیط مجازی اجرا می شود.
مجازی سازی:سیستم عامل مهمان برای آگاهی از محیط مجازی. این به سیستم عامل مهمان اجازه می دهد تا مستقیماً با هایپروایزر ارتباط برقرار کند و برخی از سربارهای مرتبط با مجازی سازی کامل را دور بزند.
هر فرآیند در فضای حافظه اختصاص داده شده خود عمل می کند و از سایر فرآیندها محافظت می شود و سیستم عامل، دو مکانیسم کلیدی استفاده می شود: ثبات های پایه و حد.
ثبت پایهاین کوچکترین آدرس حافظه فیزیکی قانونی را که یک فرآیند می تواند به آن دسترسی داشته باشد، در خود جای داده است.
ثبت محدوداندازه محدوده حافظه ای که فرآیند می تواند به آن دسترسی داشته باشد را مشخص می کند.
فضای آدرس منطقیآدرسی که توسط CPU در حین اجرای برنامه ایجاد می شود. این آدرسی است که برنامه از آن استفاده می کند و آدرس مجازی محسوب می شود
فضای آدرس فیزیکیآدرس واقعی در حافظه فیزیکی (RAM) که در آن داده ها یا دستورالعمل ها ذخیره می شوند. این آدرسی است که توسط واحد حافظه مشاهده می شود.
واحد مدیریت حافظه (MMU): جزء سخت افزاری که مسئول ترجمه آدرس های منطقی (مجازی) به آدرس های فیزیکی است.
فرآیند زامبی
این فرآیندی است که اجرا را به پایان رسانده است اما هنوز یک ورودی در جدول پردازش دارد. این فرآیندها اغلب بی ضرر هستند اما می توانند منابع سیستم را انباشته و هدر دهند.
اولین خدمت، اولین خدمت (FCFS)
فرآیندها به ترتیبی که وارد میشوند اجرا میشوند و هر فرآیند تا تکمیل بدون پیشپرداخت اجرا میشود.
مزایا:
معایب:فرآیندها ممکن است متوسط زمان انتظار ضعیف و اثر کاروان را تجربه کنند، اگر یک فرآیند طولانی، فرآیندهای کوتاهتر را به تاخیر بیندازد. علاوه بر این، در سیستمهای پرمشغله، در صورتی که فرآیندهای پیوسته، CPU را با کارهای طولانی مشغول کنند، ممکن است فرآیندها دچار گرسنگی شوند.
کوتاهترین شغل بعدی (SJN) / کوتاهترین شغل اول (SJF)
این فرآیندها را با کوتاهترین زمان پشت سر هم زمانبندی می کند. این شامل دو تغییر است: غیر پیشگیرانه، جایی که یک فرآیند پس از شروع به اتمام می رسد، و Preemptive (اول کوتاهترین زمان باقی مانده – SRTF)، که در آن CPU می تواند با یک فرآیند جدید با زمان باقیمانده کمتری از پیش گرفته شود.
معایب:نیاز به دانستن یا پیشبینی زمان انفجار دارد، که اغلب غیرعملی است، و در صورت رسیدن مداوم فرآیندهای کوتاهتر، میتواند منجر به گرسنگی فرآیندهای طولانیتر شود.
راند رابین (RR)
به هر فرآیند یک برش زمان ثابت یا کوانتومی برای اجرا اختصاص می دهد. اگر فرآیندی در بازه زمانی خود کامل نشود، از قبل انتخاب میشود و به انتهای صف منتقل میشود و سپس CPU به پردازش بعدی در صف داده میشود.
مزایا:بدون گرسنگی
معایب:تغییر مکرر زمینه می تواند عملکرد را کاهش دهد اگر برش زمانی خیلی کوتاه باشد، و اگر برش زمانی خیلی طولانی باشد، عملکرد کلی ممکن است کاهش یابد.
برنامه ریزی اولویت
CPU را به فرآیند با بالاترین اولویت اختصاص می دهد. اولویت ها می توانند ثابت یا پویا باشند و زمان بندی می تواند باشد پیشگیرانه، جایی که فرآیندهای با اولویت بالاتر می توانند از فرآیندهای پایین تر جلوگیری کنند، یا غیر پیشگیرانه، جایی که یک فرآیند پس از شروع کامل می شود.
معایب:فرآیندهای با اولویت پایین تر، گرسنگی را تجربه می کنند
صف چند سطحی (MLQ)
فرآیندها را بر اساس معیارهایی مانند اولویت یا نوع به صفهای مختلف تقسیم میکند و هر صف از الگوریتم زمانبندی خاص خود استفاده میکند. CPU بر اساس خط مشی زمانبندی صف مربوطه تخصیص داده می شود.
صف بازخورد چند سطحی (MLFQ)
این به صورت پویا صف های فرآیند را بر اساس رفتار و استفاده از CPU تنظیم می کند و فرآیندها را بین صف ها برای بهینه سازی عملکرد جابجا می کند. به عنوان مثال، فرآیندهای فشرده CPU ممکن است به صفهای با اولویت پایینتر تنزل داده شوند، در حالی که میتوان آنهایی را که تقاضای کمتری دارند ارتقا داد.
این اثری است که در آن فرآیندهای کوتاهتر در انتظار یک فرآیند طولانی که در حال حاضر در حال اجرا است، گیر میکنند. از آنجایی که فرآیند طولانی، CPU را برای یک دوره طولانی اشغال می کند، تمام فرآیندهای کوتاهتر در صف پشت آن، زمان انتظار را افزایش می دهند.
تغییر متن
این شامل ذخیره وضعیت یک فرآیند در حال اجرا و بارگیری وضعیت یک فرآیند دیگر است که به CPU اجازه می دهد چندین فرآیند را به طور موثر مدیریت کند و چند وظیفه را فعال کند. در طول سوئیچ زمینه، وضعیت فرآیند در حال اجرا در یک ذخیره می شود بلوک کنترل فرآیند (PCB) یا بلوک کنترل وظیفه (TCB).
این بخشی از کد است که به یک منبع مشترک دسترسی دارد و نباید توسط بیش از یک رشته یا فرآیند در یک زمان اجرا شود تا از ناهماهنگی یا خرابی داده ها جلوگیری شود. مکانیسمهای همگامسازی، مانند mutexes، سمافورها یا قفلها، برای مدیریت دسترسی به بخش حیاتی و اجتناب از مسائلی مانند شرایط مسابقه استفاده میشوند.
این یک همگام سازی اولیه است که برای کنترل دسترسی به یک منبع مشترک در برنامه نویسی همزمان استفاده می شود. این تضمین می کند که تنها یک رشته یا فرآیند می تواند در یک زمان به بخش مهم کد یا منبع مشترک دسترسی داشته باشد.
قفل: یک نخ یا فرآیند باید قبل از ورود به بخش بحرانی، mutex را با قفل کردن آن به دست آورد. اگر mutex قبلاً توسط رشته دیگری قفل شده باشد، رشته درخواست کننده تا زمانی که mutex در دسترس نباشد مسدود می شود.باز کردن قفل: پس از تکمیل عملیات خود بر روی منبع مشترک، رشته mutex را باز میکند و به رشتههای دیگر اجازه میدهد آن را بدست آورند و به بخش بحرانی دسترسی پیدا کنند.
این یک ابزار متغیر/انتزاعی نوع داده/همگامسازی است که راهی را برای فرآیندها یا رشتهها فراهم میکند تا به یکدیگر در مورد در دسترس بودن منابع یا پیشرفت کارها سیگنال دهند.
انواع سمافورها
1) سمافور باینری (Mutex):این می تواند 0 یا 1 باشد. این امر محرومیت متقابل را تضمین می کند به این معنی که فقط یک فرآیند یا رشته می تواند در یک زمان به بخش مهمی از کد یا منبع دسترسی داشته باشد.عملیات هستند صبر کن() تلاش برای بدست آوردن سمافور و سیگنال () سمافور را با بازگرداندن مقدار آن به 1 آزاد می کند و به طور بالقوه یک فرآیند یا رشته انتظار را رفع انسداد می کند.
2) شمارش سمافور:می تواند هر عدد صحیح غیر منفی باشد. دسترسی به یک منبع منبع را مدیریت می کند که در آن چندین نمونه در دسترس است. به عنوان مثال، اگر یک منبع منبع دارای 5 منبع یکسان باشد، سمافور را می توان به 5 مقداردهی اولیه کرد.صبر کن() – زمانی که یک فرآیند یا رشته نیاز به دسترسی به یک منبع داشته باشد، این عملیات را روی سمافور انجام می دهد.سیگنال () – هنگامی که یک فرآیند یا نخ با استفاده از یک منبع به پایان رسید، این عملیات را روی سمافور انجام می دهد.
مسئله فیلسوفان غذاخوری
پنج فیلسوف دور یک میز نشسته اند که هر کدام یک چنگال در سمت چپ و راست خود دارند. فیلسوف برای خوردن به هر دو چنگال نیاز دارد. چالش این است که پروتکلی طراحی کنیم که از بن بست جلوگیری کند (جایی که هیچ فیلسوفی نمی تواند غذا بخورد زیرا همه آنها منتظر چنگال دیگر هستند) و تضمین می کند که هر فیلسوف در نهایت فرصتی برای غذا خوردن پیدا می کند.
semaphore waiter = 1;
semaphore forks[5] = {1, 1, 1, 1, 1}; // Each fork is available
procedure philosopher(i):
while true:
think();
wait(waiter); // Request permission to pick up forks
wait(forks[i]); // Try to acquire left fork
wait(forks[(i+1) % 5]); // Try to acquire right fork
signal(waiter); // Release the waiter
eat();
signal(forks[i]); // Release left fork
signal(forks[(i+1) % 5]); // Release right fork
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
هر فیلسوفی باید قبل از برداشتن هر دو چنگال از پیشخدمت اجازه بگیرد. گارسون فقط در صورتی اجازه می دهد که چنگال را بدست آورید که هر دو چنگال موجود باشد. فیلسوفان چنگال ها را رها می کنند و پس از اتمام غذا به پیشخدمت علامت می دهند تا اطمینان حاصل کنند که فقط یک فیلسوف می تواند در هر بار چنگال ها را بردارد و از بن بست جلوگیری کند. این رویکرد از انتظار نامحدود جلوگیری می کند و دسترسی منصفانه به منابع مشترک را تضمین می کند.
مشکل تولیدکننده-مصرف کننده
مشکل خوانندگان-نویسندگان
مشکل آرایشگر خواب
زمانی اتفاق میافتد که مجموعهای از رشتهها یا فرآیندها در حالتی هستند که هر رشته در انتظار منبعی است که توسط رشته دیگری نگهداری میشود و وضعیتی را ایجاد میکند که هیچ یک از آنها نمیتوانند ادامه دهند.
شرایط لازم برای بن بست
طرد متقابل: حداقل یک منبع باید در حالت غیرقابل اشتراک گذاری نگه داشته شود، به این معنی که تنها یک رشته می تواند در یک زمان از منبع استفاده کند. اگر رشته دیگری همان منبع را درخواست کند، باید منتظر بماند تا منبع منتشر شود.
نگه دارید و منتظر بمانید: یک رشته باید حداقل یک منبع را نگه دارد در حالی که منتظر به دست آوردن منابع اضافی است که توسط موضوعات دیگر نگهداری می شود.
بدون پیشدستی: منابع را نمی توان به زور از یک رشته برداشت کرد. آنها فقط می توانند به طور داوطلبانه توسط نخ نگهدارنده آنها آزاد شوند.
انتظار دایره ای: باید یک زنجیره دایره ای از thread ها وجود داشته باشد که در آن هر نخ منتظر منبعی باشد که توسط رشته بعدی در زنجیره نگهداری می شود.
نمودار تخصیص منابع
پیشگیری از بن بست
طرد متقابل: برای منابع غیرقابل اشتراک قابل اجتناب نیست.نگه دارید و منتظر بمانید: می توان با درخواست همه منابع به طور همزمان یا آزاد کردن همه منابع نگهداری شده قبل از درخواست منابع جدید مدیریت کرد.بدون پیشدستی: میتوان با اجازه دادن به پیشدستی منابع به آن پرداخت، اگرچه این امر برای منابع خاصی پیچیده است.انتظار دایره ای: می توان با اعمال نظم یا سلسله مراتب منابع از آن جلوگیری کرد.
اجتناب از بن بست
الگوریتم بانکداربا ارزیابی دقیق درخواستهای تخصیص منابع، تضمین میکند که سیستم در حالت امن باقی میماند و از بنبست جلوگیری میکند.
تشخیص بن بست
این یک مشکل در سیستمهای بلادرنگ و چندوظیفهای است که در آن یک وظیفه با اولویت پایینتر، منبع مورد نیاز یک کار با اولویت بالاتر را در خود نگه میدارد، و باعث میشود که وظایف با اولویت بالاتر به طور غیرمستقیم توسط کارهای با اولویت پایینتر پیشی گرفته شود.
ارث بری
این تکنیکی است که برای کاهش وارونگی اولویت با بالا بردن موقت اولویت یک کار با اولویت پایینتر که منبع مورد نیاز یک کار با اولویت بالاتر را نگه میدارد، استفاده میشود. این تضمین می کند که کار با اولویت بالاتر توسط سایر وظایف به تاخیر نیفتد و به حفظ پاسخگویی سیستم کمک می کند.
نشت حافظه
زمانی اتفاق میافتد که یک برنامه حافظه را تخصیص میدهد اما پس از استفاده آن را آزاد نمیکند و باعث میشود که حافظه اشغال شده و برای سایر فرآیندها در دسترس نباشد. این می تواند منجر به کاهش عملکرد سیستم و در نهایت از کار افتادن سیستم با اتمام حافظه موجود شود.
تخصیص حافظه پیوسته
این یک روش مدیریت حافظه است که در آن هر فرآیند یک بلوک پیوسته از حافظه را اشغال می کند. این بدان معنی است که تمام حافظه مورد نیاز یک فرآیند در یک بخش واحد و پیوسته از حافظه فیزیکی تخصیص داده می شود.
فشرده سازی
این فرآیند مرتب سازی مجدد محتویات حافظه برای تجمیع حافظه آزاد در یک بلوک مجزا است. این به کاهش تکه تکه شدن خارجی با ایجاد بلوکهای بزرگتر حافظه آزاد که میتواند فرآیندها یا دادههای جدید را در خود جای دهد، کمک میکند.
صفحه بندی
این یک تکنیک مدیریت حافظه است که فضای آدرس فرآیند را به بلوک هایی با اندازه ثابت به نام صفحات و حافظه فیزیکی را به بلوک هایی با همان اندازه به نام فریم تقسیم می کند. این امکان تخصیص حافظه غیر پیوسته را فراهم می کند، به این معنی که فرآیندها نیازی به بارگذاری در یک بلوک پیوسته از حافظه فیزیکی ندارند.
مثال:رشته مرجع صفحه: 7، 0، 1، 2، 0، 3، 0، 4، 2، 3، 0، 3تعداد قاب: 3
الگوریتم جایگزینی صفحه
First-In-First-Out (FIFO)صفحات به ترتیبی که به آنها ارجاع داده می شود اضافه می شوند و هنگامی که یک خطای صفحه رخ می دهد، قدیمی ترین صفحه حذف می شود (مهم نیست که اخیراً کم و بیش به آن دسترسی داشته باشید)
کمترین استفاده اخیر (LRU)حداقل صفحه ای که اخیراً استفاده شده است در صورت خطای صفحه حذف می شود.
جایگزینی صفحه بهینهصفحه ای را که در آینده برای طولانی ترین زمان استفاده نمی شود جایگزین کنید.
ساعت (فرصت دوم)صفحات در یک صف دایره ای مرتب شده اند و هر صفحه دارای یک بیت مرجع است. اگر خطای صفحه رخ دهد، بیت مرجع را بررسی می کند. اگر 1 باشد، به صفحه شانس دوم می دهد (بیت را روی 0 قرار می دهد) و به صفحه بعدی می رود.
کمترین استفاده (LFU)صفحه را با کمترین تعداد دسترسی جایگزین کنید.
مشکلاتFIFO: ناهنجاری بلادیLRU: حسابداری پیچیدهجایگزینی صفحه بهینه: بدون دانش آینده غیر عملی استساعت (فرصت دوم): ناکارآمدی با استراتژی بیت مرجع ضعیف تنظیم شده استLFU: با تغییر الگوهای دسترسی بی اثر است
صفحه بندی تقاضا
این یک تکنیک مدیریت حافظه است که در آن صفحات تنها زمانی در حافظه فیزیکی بارگذاری می شوند که واقعاً مورد نیاز باشند. این بدان معنی است که یک صفحه در حافظه بارگذاری نمی شود تا زمانی که CPU سعی کند به آن دسترسی پیدا کند و باعث خطای صفحه می شود.
تقسیم بندی
این حافظه را بر اساس تقسیمات منطقی یک فرآیند به بخش هایی مانند کد، داده و پشته تقسیم می کند. هر بخش می تواند به طور مستقل رشد کند و در حوزه های مختلف حافظه فیزیکی تخصیص یابد.
به استفاده ناکارآمد از حافظه اشاره دارد که می تواند در نتیجه تخصیص و آزادسازی حافظه در یک سیستم رخ دهد. این شامل تجزیه حافظه به بلوک های کوچکتر و غیر پیوسته در طول زمان است.
انواع تکه تکه شدن
تکه تکه شدن داخلیزمانی اتفاق میافتد که به یک فرآیند بیش از آنچه واقعاً نیاز دارد حافظه اختصاص داده شود و فضای بلااستفاده در پارتیشن اختصاص داده شده باقی بماند.
تکه تکه شدن خارجیاین به شرایطی اشاره دارد که در آن حافظه آزاد در طول زمان به بلوکهای کوچک و غیر پیوسته تقسیم میشود و تخصیص یک بلوک بزرگ به هم پیوسته از حافظه را دشوار میکند، حتی اگر کل حافظه آزاد کافی باشد.
این اتفاق زمانی رخ می دهد که فرآیندها بارگیری و از حافظه حذف می شوند و حفره هایی با اندازه های مختلف در حافظه پراکنده می شوند. با گذشت زمان، این حفره ها می توانند برای برآوردن درخواست های جدید حافظه بسیار کوچک شوند، حتی اگر کل حافظه آزاد کافی باشد.
کوبیدن
زمانی اتفاق میافتد که سیستم عامل بیشتر وقت خود را صرف مبادله صفحات درون و خارج از حافظه فیزیکی به جای اجرای فرآیندها میکند. این فعالیت پیجینگ بیش از حد منجر به عملیات ورودی/خروجی دیسک بسیار بالا و استفاده ضعیف از CPU می شود.
پیری
این تکنیکی است که در سیستم عامل ها، به ویژه در زمینه مدیریت حافظه و الگوریتم های جایگزینی صفحه، برای جلوگیری از تاخیر نامحدود یا گرسنگی فرآیندها استفاده می شود. افزایش سن کمک می کند تا اطمینان حاصل شود که تمام فرآیندها در نهایت فرصتی برای اجرا پیدا می کنند، حتی اگر برای مدت طولانی منتظر مانده باشند.
دسترسی مستقیم به حافظه (DMA)
این یک فناوری است که کارایی سیستم را با اجازه دادن به دستگاه های جانبی برای دسترسی مستقیم به حافظه اصلی و دور زدن CPU افزایش می دهد. این به ویژه برای انتقال داده های بزرگ مفید است، زیرا بار کاری CPU را کاهش می دهد و روند را سرعت می بخشد.
دریچه گاز حرارتی
این مکانیزمی است که در رایانه ها و دستگاه های الکترونیکی برای جلوگیری از گرمای بیش از حد و اطمینان از عملکرد پایدار زمانی که دمای سیستم از یک آستانه خاص فراتر می رود استفاده می شود. این فرآیند شامل کاهش خودکار عملکرد CPU، GPU یا سایر اجزا برای کاهش دما و جلوگیری از آسیب احتمالی است.
این یک فناوری است که برای افزایش عملکرد و قابلیت اطمینان سیستم های ذخیره سازی داده ها با ترکیب چندین هارد درایو فیزیکی در یک واحد منطقی استفاده می شود.
RAID 0 (Striping):
این داده ها را به طور مساوی در چندین دیسک بدون افزونگی تقسیم می کند.
RAID 1 (Mirroring):
داده های مشابه را روی دو یا چند دیسک کپی می کند.
RAID 5 (Striping with Parity):
داده ها و برابری (اطلاعات بررسی خطا) را در تمام دیسک ها توزیع می کند.
RAID 6 (Striping with Double Parity)
این شبیه به RAID 5 است اما با یک لایه برابری اضافی، به دو دیسک اجازه می دهد بدون از دست دادن داده ها از کار بیفتند.
این اجازه می دهد تا فرآیندها بزرگتر از حافظه فیزیکی باشند. برای اجرا نیازی نیست که برنامه ها به طور کامل در RAM قرار بگیرند، زیرا می توان بخش هایی از برنامه را در صورت نیاز بارگیری و تخلیه کرد.
این یک کش تخصصی است که در سیستم های حافظه مجازی برای سرعت بخشیدن به ترجمه آدرس های مجازی به آدرس های فیزیکی استفاده می شود.
متصل بمانید!اگر از این پست لذت بردید، فراموش نکنید که من را در رسانه های اجتماعی برای به روز رسانی و اطلاعات بیشتر دنبال کنید:
توییتر: بزرگاوگانساناینستاگرام: بزرگانلینکدین: بزرگان
سیستم عامل نرم افزاری است که سخت افزار کامپیوتر را مدیریت می کند. یک سیستم کامپیوتری را می توان به چهار جزء تقسیم کرد: سخت افزار، سیستم عامل، برنامه های کاربردی، و الف کاربر.
را سخت افزار – واحد پردازش مرکزی (CPU)، حافظه، و دستگاه های ورودی/خروجی (I/O) – منابع محاسباتی اساسی را برای سیستم فراهم می کند.
را سیستم عامل سخت افزار را کنترل می کند و استفاده از آن را در بین برنامه های کاربردی مختلف برای کاربران مختلف هماهنگ می کند.
سیستم عامل (OS) به عنوان مدیر منابع کامپیوتر عمل می کند
از آنجایی که استفاده از سخت افزار خالی به تنهایی آسان نیست، برنامه های کاربردی توسعه یافته اند. این برنامه ها به عملیات مشترک خاصی نیاز دارند، مانند عملیات کنترل دستگاه های ورودی/خروجی.
سپس کارکردهای مشترک کنترل و تخصیص منابع در یک نرم افزار جمع می شوند: سیستم عامل.
این جزء اصلی یک سیستم عامل است. کنترل کاملی بر هر چیزی که در سیستم اتفاق می افتد دارد. سخت افزار، منابع سیستم و اجرای برنامه ها را مدیریت می کند.
هسته یکپارچه
این یک فرآیند بزرگ است که به طور کامل در یک فضای آدرس واحد اجرا می شود. به دلیل ارتباط مستقیم بین اجزا، عملکرد بالایی را ارائه می دهد. طراحی آنها ساده تر است.
مثال ها: لینوکس، نسخه های اولیه یونیکس.
میکروکرنل
با انتقال بیشتر خدمات سیستم عامل، مانند درایورهای دستگاه و سیستم های فایل، به فضای کاربر، مقدار کد در حال اجرا در حالت هسته را به حداقل می رساند. خود هسته فقط وظایف اساسی مانند ارتباطات بین فرآیندی (IPC) و تعامل سخت افزاری سطح پایین را انجام می دهد.
ماژولار بودن بیشتر و نگهداری آسان تر از آنجایی که سرویس ها از هسته جدا شده اند.
مثال: MINIX، QNX، L4
هسته ترکیبی
این جنبههای معماری یکپارچه و میکروکرنل را ترکیب میکند. هدف آن ارائه عملکرد یک هسته یکپارچه در حالی که مقداری ماژولار بودن را با اجازه دادن به خدمات خاصی برای اجرا در فضای کاربر حفظ می کند.
مثال: Windows NT، macOS
مسئولیت ها
مدیریت فرآیند
مدیریت حافظه
مدیریت دستگاه
مدیریت فایل سیستم
تماس های سیستمی:
نمای کاربر
قانون مور
در دهه 1960، گوردون مور، یکی از بنیانگذاران اینتل، پیش بینی کرد که تعداد ترانزیستورهای یک مدار مجتمع تقریباً هر 18 ماه دو برابر می شود که منجر به افزایش تصاعدی در قدرت محاسباتی و کاهش هزینه هر ترانزیستور می شود.
اجزای سیستم عامل
هسته:
برنامه های سیستم:
برنامه های سیستم ابزارها و ابزارهایی هستند که به کاربران در تعامل با سیستم عامل و مدیریت منابع سیستم کمک می کنند، اما بخشی از هسته نیستند.
مثال CLI، ابزارهای مدیریت فایل (به عنوان مثال، ls، cp)، و ابزارهای پیکربندی سیستم.
برنامه های کاربردی:
برنامه های کاربردی برای کاربران نهایی برای انجام وظایف خاص طراحی شده اند
مثال مایکروسافت ورد، گوگل کروم
سازمان کامپیوتری – سیستمی
CPU (واحد پردازش مرکزی):
دستورالعمل ها را اجرا می کند و داده ها را پردازش می کند. این جزء اصلی مسئول محاسبات و مدیریت وظایف است.
WMIC (خط فرمان ابزار مدیریت ویندوز) یک ابزار خط فرمان در ویندوز است که راهی برای پرس و جو و مدیریت اطلاعات سیستم و داده های پیکربندی ارائه می دهد.
wmic cpu get name, maxclockspeed, numberofcores,numberoflogicalprocessors,threadcount,systemname
کنترل کننده های دستگاه:
این یک جزء سخت افزاری است که عملکرد نوع خاصی از دستگاه های جانبی را مدیریت و کنترل می کند (به عنوان مثال، درایوهای دیسک، پورت های USB، کارت های گرافیک). به عنوان یک واسطه بین CPU و دستگاه جانبی عمل می کند.
wmic path Win32_PnPEntity get Name, DeviceID
*درایورهای دستگاه: *
این یک جزء نرم افزاری است که به سیستم عامل و برنامه های کاربردی راهی برای تعامل با یک دستگاه سخت افزاری از طریق یک رابط استاندارد ارائه می دهد. دستورات کلی از سیستم عامل را به عملیات خاص دستگاه که توسط کنترل کننده دستگاه درک می شود ترجمه می کند.
driverquery //list all the installed drivers
wmic driver get name, description
*کنترل کننده حافظه: *
دسترسی به حافظه سیستم (RAM) را مدیریت می کند و تضمین می کند که CPU و کنترل کننده های مختلف دستگاه می توانند به طور منظم و هماهنگ به حافظه دسترسی داشته باشند.
اتوبوس
این یک سیستم ارتباطی است که اجزای مختلف را در یک کامپیوتر از جمله CPU، حافظه و کنترلکنندههای دستگاه به هم متصل میکند.
قطع می کند
اینها سیگنال هایی هستند که به CPU ارسال می شوند تا آن را در مورد رویدادهایی که نیاز به توجه فوری دارند، آگاه کنند.
کارکردن:
1) هنگامی که یک دستگاه نیاز به توجه دارد، کنترل کننده دستگاه یک سیگنال وقفه را به CPU ارسال می کند، معمولاً از طریق گذرگاه سیستم.
2) با دریافت وقفه، CPU وظیفه فعلی خود را متوقف می کند و اجرا را به یک مکان ثابت در حافظه که روال سرویس وقفه (ISR) در آن قرار دارد، منتقل می کند.
3) ISR رویدادی را که باعث وقفه شده است اجرا و مدیریت می کند. پس از تکمیل ISR، CPU به حالت قبلی باز می گردد و محاسبات قطع شده را از سر می گیرد.
مدیریت وقفه:
برای مدیریت وقفه ها از جدول اشاره گرها (بردار وقفه) استفاده می شود. این جدول آدرس های روتین های مختلف ISR را ذخیره می کند. هر ورودی در جدول مربوط به یک شماره درخواست وقفه است.
انواع حافظه
حافظه اصلی (RAM): (فرار)
برای ذخیره برنامه ها و داده هایی که به طور فعال/مستقیما توسط CPU استفاده می شود استفاده می شود.
برنامه بوت استرپ:
این برنامه اولیه ای است که هنگام روشن شدن رایانه اجرا می شود و سیستم عامل را در RAM بارگذاری می کند. از آنجایی که RAM فرار است، در حافظه غیر فرار ذخیره می شود.
سلسله مراتب ذخیره سازی
ذخیره سازی اولیه/حافظه فیزیکی (فرار):
ثبت می کند
حافظه کش
حافظه اصلی (RAM)
ذخیره سازی ثانویه (غیر فرار):
هارد دیسک (HDD) (ذخیره سازی مکانیکی)
درایوهای حالت جامد (SSD) (ذخیرهسازی الکتریکی)
دیسک های نوری و نوارهای مغناطیسی
حافظه کش
در CPU یا نزدیک به آن یکپارچه شده است. این یک فضای ذخیره سازی کوچک و پرسرعت است که در داخل CPU یا بین CPU و حافظه اصلی قرار دارد. برای کاهش تأخیر و بهبود عملکرد، کپیهایی از دادههایی که اغلب به آنها دسترسی دارند را از حافظه اصلی ذخیره میکند. این به طور معمول شامل چندین سطح (L1، L2، و گاهی اوقات L3) است که هر سطح بزرگتر اما کندتر از سطح قبلی است.
این یک مکان ذخیره سازی کوچک و سریع در یک CPU است که برای نگهداری موقت داده ها در طول پردازش استفاده می شود. آنها را می توان در یک چرخه ساعت دسترسی داشت. رجیسترهای تعبیه شده در هر هسته CPU معمولاً برای دسترسی بسیار سریع و اغلب در یک چرخه ساعت CPU طراحی شده اند.
انواع رجیستر
رجیسترهای همه منظوره (GPR):
این رجیسترها برای انواع عملیات استفاده می شوند و می توانند داده ها، آدرس ها یا نتایج میانی را در خود نگه دارند.
ثبت های ویژه:
برنامه شمارنده (PC): آدرس دستور بعدی را که باید اجرا شود را نگه می دارد. این به CPU کمک می کند تا جریان دستورالعمل ها را پیگیری کند.
Instruction Register (IR): شامل دستور فعلی در حال اجرا است.
Stack Pointer (SP): به بالای فعلی پشته اشاره می کند که برای مدیریت فراخوانی تابع و متغیرهای محلی استفاده می شود.
نشانگر پایه (BP): برای اشاره به پایه قاب پشته استفاده می شود که به دسترسی به پارامترهای تابع و متغیرهای محلی کمک می کند.
ثبت وضعیت / ثبت پرچم: حاوی پرچم هایی است که اطلاعاتی در مورد وضعیت CPU ارائه می دهد (به عنوان مثال، حمل، صفر، پرچم های سرریز).
ثبت فهرست:
برای ذخیره نمایه ها برای دسترسی به آرایه و جدول استفاده می شود. آنها اغلب در حالت های آدرس دهی برای محاسبه موثر آدرس استفاده می شوند.
حافظه با دسترسی تصادفی (RAM)
این یک نوع حافظه فرار است که توسط CPU برای ذخیره داده هایی که به طور فعال در حال استفاده یا پردازش هستند استفاده می شود و دسترسی سریع به این داده ها را فراهم می کند.
انواع رم:
DRAM (رم پویا)
هر بیت داده را در یک خازن جداگانه در یک مدار مجتمع ذخیره می کند. از آنجایی که خازن ها شارژ نشت می کنند، داده های ذخیره شده باید به طور دوره ای به روز شوند. هزینه کمتر و کندتر از SRAM است.
SRAM (رم استاتیک)
از فلیپ فلاپها برای ذخیره هر بیت داده استفاده میکند، که مانند DRAM نیازی به رفرش ندارد.
مثال حافظه کش
رام (حافظه فقط خواندنی)
این یک حافظه غیر فرار است که برای ذخیره سیستم عامل و نرم افزار سیستم استفاده می شود که نیازی به تغییر مکرر ندارد.
انواع رام:
PROM (رام قابل برنامه ریزی)
می توان آن را یک بار پس از ساخت برنامه ریزی کرد و به طور دائم ذخیره می شود. فرآیند برنامه نویسی با استفاده از تجهیزات ویژه انجام می شود.
EPROM (رام قابل برنامه ریزی قابل پاک شدن)
با قرار گرفتن در معرض اشعه ماوراء بنفش (UV) پاک می شود و سپس دوباره برنامه ریزی می شود.
مثال در سیستم هایی استفاده می شود که گاهی اوقات به روز رسانی سیستم عامل ضروری است.
EEPROM (رام قابل برنامه ریزی با قابلیت پاک شدن الکتریکی)
می توان آن را با استفاده از شارژ الکتریکی پاک کرد و دوباره برنامه ریزی کرد، بدون نیاز به نور UV.
مثال برای ذخیره مقادیر کمی از داده ها استفاده می شود که ممکن است نیاز به به روز رسانی دوره ای داشته باشند، مانند تنظیمات بایوس یا داده های پیکربندی.
هارد دیسک (HDD)
این یک نوع ذخیره سازی غیر فرار است که به دلیل قطعات متحرک مکانیکی کندتر از SSD است و ظرفیت ذخیره سازی بالاتری را ارائه می دهد.
مثال معمولاً برای ذخیره مقادیر زیادی داده از جمله سیستم عامل ها، برنامه ها و فایل های کاربر استفاده می شود
درایوهای حالت جامد (SSD)
این یک نوع ذخیره سازی غیر فرار است که سریعتر از HDD است و ظرفیت ذخیره سازی کمتری را ارائه می دهد
مثال برای ذخیره سازی داده ها در جایی که سرعت بسیار مهم است، مانند کارهای محاسباتی با کارایی بالا، بازی ها و کارهایی که نیاز به دسترسی به داده های با سرعت بالا دارند، استفاده می شود.
wmic diskdrive get model,serialNumber,size,mediaType
یک نخ است کوچکترین واحد اجرا در یک فرآیند این یک دنباله دستورالعمل سبک و مستقل است که می تواند همزمان با رشته های دیگر در همان فرآیند اجرا شود.
اجزای موضوع:
شمارنده برنامه: دستور بعدی را که باید اجرا شود را پیگیری می کند.
ثبت نام ها: داده ها و آدرس های میانی را در حین اجرا نگه دارید.
پشته: فراخوانی توابع، متغیرهای محلی و آدرسهای برگشتی خاص رشته را مدیریت میکند.
شناسه موضوع: به طور منحصر به فرد موضوع را در فرآیند شناسایی می کند.
شرایط
چندبرنامهنویسی – چندبرنامهنویسی به عنوان آماده نگه داشتن چندین برنامه در حافظه اصلی به طور همزمان برای اجرا شناخته میشود.
چند پردازش – کامپیوتری که همزمان از بیش از یک CPU استفاده می کند.
چندوظیفه ای – چندوظیفه ای چیزی نیست جز چندبرنامه نویسی با الگوریتم زمان بندی دورگرد.
Multithreading گسترش چندوظیفه ای است.
این یک فناوری است که به چندین نمونه مجازی مانند ماشین های مجازی (VM) اجازه می دهد تا روی یک ماشین فیزیکی واحد اجرا شوند.
انواع مجازی سازی
مجازی سازی کامل:
محیط مجازی کاملی را ایجاد می کند که از سیستم میزبان جدا شده است. به نظر می رسد هر ماشین مجازی (VM) سیستم عامل و سخت افزار کامل خود را دارد. سیستم عامل مهمان نمی داند که در یک محیط مجازی اجرا می شود.
مجازی سازی:
سیستم عامل مهمان برای آگاهی از محیط مجازی. این به سیستم عامل مهمان اجازه می دهد تا مستقیماً با هایپروایزر ارتباط برقرار کند و برخی از سربارهای مرتبط با مجازی سازی کامل را دور بزند.
هر فرآیند در فضای حافظه اختصاص داده شده خود عمل می کند و از سایر فرآیندها محافظت می شود و سیستم عامل، دو مکانیسم کلیدی استفاده می شود: ثبات های پایه و حد.
ثبت پایه
این کوچکترین آدرس حافظه فیزیکی قانونی را که یک فرآیند می تواند به آن دسترسی داشته باشد، در خود جای داده است.
ثبت محدود
اندازه محدوده حافظه ای که فرآیند می تواند به آن دسترسی داشته باشد را مشخص می کند.
فضای آدرس منطقی
آدرسی که توسط CPU در حین اجرای برنامه ایجاد می شود. این آدرسی است که برنامه از آن استفاده می کند و آدرس مجازی محسوب می شود
فضای آدرس فیزیکی
آدرس واقعی در حافظه فیزیکی (RAM) که در آن داده ها یا دستورالعمل ها ذخیره می شوند. این آدرسی است که توسط واحد حافظه مشاهده می شود.
واحد مدیریت حافظه (MMU): جزء سخت افزاری که مسئول ترجمه آدرس های منطقی (مجازی) به آدرس های فیزیکی است.
فرآیند زامبی
این فرآیندی است که اجرا را به پایان رسانده است اما هنوز یک ورودی در جدول پردازش دارد. این فرآیندها اغلب بی ضرر هستند اما می توانند منابع سیستم را انباشته و هدر دهند.
اولین خدمت، اولین خدمت (FCFS)
فرآیندها به ترتیبی که وارد میشوند اجرا میشوند و هر فرآیند تا تکمیل بدون پیشپرداخت اجرا میشود.
مزایا:
معایب:
فرآیندها ممکن است متوسط زمان انتظار ضعیف و اثر کاروان را تجربه کنند، اگر یک فرآیند طولانی، فرآیندهای کوتاهتر را به تاخیر بیندازد. علاوه بر این، در سیستمهای پرمشغله، در صورتی که فرآیندهای پیوسته، CPU را با کارهای طولانی مشغول کنند، ممکن است فرآیندها دچار گرسنگی شوند.
کوتاهترین شغل بعدی (SJN) / کوتاهترین شغل اول (SJF)
این فرآیندها را با کوتاهترین زمان پشت سر هم زمانبندی می کند. این شامل دو تغییر است: غیر پیشگیرانه، جایی که یک فرآیند پس از شروع به اتمام می رسد، و Preemptive (اول کوتاهترین زمان باقی مانده – SRTF)، که در آن CPU می تواند با یک فرآیند جدید با زمان باقیمانده کمتری از پیش گرفته شود.
معایب:
نیاز به دانستن یا پیشبینی زمان انفجار دارد، که اغلب غیرعملی است، و در صورت رسیدن مداوم فرآیندهای کوتاهتر، میتواند منجر به گرسنگی فرآیندهای طولانیتر شود.
راند رابین (RR)
به هر فرآیند یک برش زمان ثابت یا کوانتومی برای اجرا اختصاص می دهد. اگر فرآیندی در بازه زمانی خود کامل نشود، از قبل انتخاب میشود و به انتهای صف منتقل میشود و سپس CPU به پردازش بعدی در صف داده میشود.
مزایا:
بدون گرسنگی
معایب:
تغییر مکرر زمینه می تواند عملکرد را کاهش دهد اگر برش زمانی خیلی کوتاه باشد، و اگر برش زمانی خیلی طولانی باشد، عملکرد کلی ممکن است کاهش یابد.
برنامه ریزی اولویت
CPU را به فرآیند با بالاترین اولویت اختصاص می دهد. اولویت ها می توانند ثابت یا پویا باشند و زمان بندی می تواند باشد پیشگیرانه، جایی که فرآیندهای با اولویت بالاتر می توانند از فرآیندهای پایین تر جلوگیری کنند، یا غیر پیشگیرانه، جایی که یک فرآیند پس از شروع کامل می شود.
معایب:
فرآیندهای با اولویت پایین تر، گرسنگی را تجربه می کنند
صف چند سطحی (MLQ)
فرآیندها را بر اساس معیارهایی مانند اولویت یا نوع به صفهای مختلف تقسیم میکند و هر صف از الگوریتم زمانبندی خاص خود استفاده میکند. CPU بر اساس خط مشی زمانبندی صف مربوطه تخصیص داده می شود.
صف بازخورد چند سطحی (MLFQ)
این به صورت پویا صف های فرآیند را بر اساس رفتار و استفاده از CPU تنظیم می کند و فرآیندها را بین صف ها برای بهینه سازی عملکرد جابجا می کند. به عنوان مثال، فرآیندهای فشرده CPU ممکن است به صفهای با اولویت پایینتر تنزل داده شوند، در حالی که میتوان آنهایی را که تقاضای کمتری دارند ارتقا داد.
این اثری است که در آن فرآیندهای کوتاهتر در انتظار یک فرآیند طولانی که در حال حاضر در حال اجرا است، گیر میکنند. از آنجایی که فرآیند طولانی، CPU را برای یک دوره طولانی اشغال می کند، تمام فرآیندهای کوتاهتر در صف پشت آن، زمان انتظار را افزایش می دهند.
تغییر متن
این شامل ذخیره وضعیت یک فرآیند در حال اجرا و بارگیری وضعیت یک فرآیند دیگر است که به CPU اجازه می دهد چندین فرآیند را به طور موثر مدیریت کند و چند وظیفه را فعال کند. در طول سوئیچ زمینه، وضعیت فرآیند در حال اجرا در یک ذخیره می شود بلوک کنترل فرآیند (PCB) یا بلوک کنترل وظیفه (TCB).
این بخشی از کد است که به یک منبع مشترک دسترسی دارد و نباید توسط بیش از یک رشته یا فرآیند در یک زمان اجرا شود تا از ناهماهنگی یا خرابی داده ها جلوگیری شود. مکانیسمهای همگامسازی، مانند mutexes، سمافورها یا قفلها، برای مدیریت دسترسی به بخش حیاتی و اجتناب از مسائلی مانند شرایط مسابقه استفاده میشوند.
این یک همگام سازی اولیه است که برای کنترل دسترسی به یک منبع مشترک در برنامه نویسی همزمان استفاده می شود. این تضمین می کند که تنها یک رشته یا فرآیند می تواند در یک زمان به بخش مهم کد یا منبع مشترک دسترسی داشته باشد.
قفل: یک نخ یا فرآیند باید قبل از ورود به بخش بحرانی، mutex را با قفل کردن آن به دست آورد. اگر mutex قبلاً توسط رشته دیگری قفل شده باشد، رشته درخواست کننده تا زمانی که mutex در دسترس نباشد مسدود می شود.
باز کردن قفل: پس از تکمیل عملیات خود بر روی منبع مشترک، رشته mutex را باز میکند و به رشتههای دیگر اجازه میدهد آن را بدست آورند و به بخش بحرانی دسترسی پیدا کنند.
این یک ابزار متغیر/انتزاعی نوع داده/همگامسازی است که راهی را برای فرآیندها یا رشتهها فراهم میکند تا به یکدیگر در مورد در دسترس بودن منابع یا پیشرفت کارها سیگنال دهند.
انواع سمافورها
1) سمافور باینری (Mutex):
این می تواند 0 یا 1 باشد. این امر محرومیت متقابل را تضمین می کند به این معنی که فقط یک فرآیند یا رشته می تواند در یک زمان به بخش مهمی از کد یا منبع دسترسی داشته باشد.
عملیات هستند صبر کن() تلاش برای بدست آوردن سمافور و سیگنال () سمافور را با بازگرداندن مقدار آن به 1 آزاد می کند و به طور بالقوه یک فرآیند یا رشته انتظار را رفع انسداد می کند.
2) شمارش سمافور:
می تواند هر عدد صحیح غیر منفی باشد. دسترسی به یک منبع منبع را مدیریت می کند که در آن چندین نمونه در دسترس است. به عنوان مثال، اگر یک منبع منبع دارای 5 منبع یکسان باشد، سمافور را می توان به 5 مقداردهی اولیه کرد.
صبر کن() – زمانی که یک فرآیند یا رشته نیاز به دسترسی به یک منبع داشته باشد، این عملیات را روی سمافور انجام می دهد.
سیگنال () – هنگامی که یک فرآیند یا نخ با استفاده از یک منبع به پایان رسید، این عملیات را روی سمافور انجام می دهد.
مسئله فیلسوفان غذاخوری
پنج فیلسوف دور یک میز نشسته اند که هر کدام یک چنگال در سمت چپ و راست خود دارند. فیلسوف برای خوردن به هر دو چنگال نیاز دارد. چالش این است که پروتکلی طراحی کنیم که از بن بست جلوگیری کند (جایی که هیچ فیلسوفی نمی تواند غذا بخورد زیرا همه آنها منتظر چنگال دیگر هستند) و تضمین می کند که هر فیلسوف در نهایت فرصتی برای غذا خوردن پیدا می کند.
semaphore waiter = 1;
semaphore forks[5] = {1, 1, 1, 1, 1}; // Each fork is available
procedure philosopher(i):
while true:
think();
wait(waiter); // Request permission to pick up forks
wait(forks[i]); // Try to acquire left fork
wait(forks[(i+1) % 5]); // Try to acquire right fork
signal(waiter); // Release the waiter
eat();
signal(forks[i]); // Release left fork
signal(forks[(i+1) % 5]); // Release right fork
هر فیلسوفی باید قبل از برداشتن هر دو چنگال از پیشخدمت اجازه بگیرد. گارسون فقط در صورتی اجازه می دهد که چنگال را بدست آورید که هر دو چنگال موجود باشد. فیلسوفان چنگال ها را رها می کنند و پس از اتمام غذا به پیشخدمت علامت می دهند تا اطمینان حاصل کنند که فقط یک فیلسوف می تواند در هر بار چنگال ها را بردارد و از بن بست جلوگیری کند. این رویکرد از انتظار نامحدود جلوگیری می کند و دسترسی منصفانه به منابع مشترک را تضمین می کند.
مشکل تولیدکننده-مصرف کننده
مشکل خوانندگان-نویسندگان
مشکل آرایشگر خواب
زمانی اتفاق میافتد که مجموعهای از رشتهها یا فرآیندها در حالتی هستند که هر رشته در انتظار منبعی است که توسط رشته دیگری نگهداری میشود و وضعیتی را ایجاد میکند که هیچ یک از آنها نمیتوانند ادامه دهند.
شرایط لازم برای بن بست
طرد متقابل: حداقل یک منبع باید در حالت غیرقابل اشتراک گذاری نگه داشته شود، به این معنی که تنها یک رشته می تواند در یک زمان از منبع استفاده کند. اگر رشته دیگری همان منبع را درخواست کند، باید منتظر بماند تا منبع منتشر شود.
نگه دارید و منتظر بمانید: یک رشته باید حداقل یک منبع را نگه دارد در حالی که منتظر به دست آوردن منابع اضافی است که توسط موضوعات دیگر نگهداری می شود.
بدون پیشدستی: منابع را نمی توان به زور از یک رشته برداشت کرد. آنها فقط می توانند به طور داوطلبانه توسط نخ نگهدارنده آنها آزاد شوند.
انتظار دایره ای: باید یک زنجیره دایره ای از thread ها وجود داشته باشد که در آن هر نخ منتظر منبعی باشد که توسط رشته بعدی در زنجیره نگهداری می شود.
نمودار تخصیص منابع
پیشگیری از بن بست
طرد متقابل: برای منابع غیرقابل اشتراک قابل اجتناب نیست.
نگه دارید و منتظر بمانید: می توان با درخواست همه منابع به طور همزمان یا آزاد کردن همه منابع نگهداری شده قبل از درخواست منابع جدید مدیریت کرد.
بدون پیشدستی: میتوان با اجازه دادن به پیشدستی منابع به آن پرداخت، اگرچه این امر برای منابع خاصی پیچیده است.
انتظار دایره ای: می توان با اعمال نظم یا سلسله مراتب منابع از آن جلوگیری کرد.
اجتناب از بن بست
الگوریتم بانکدار
با ارزیابی دقیق درخواستهای تخصیص منابع، تضمین میکند که سیستم در حالت امن باقی میماند و از بنبست جلوگیری میکند.
تشخیص بن بست
این یک مشکل در سیستمهای بلادرنگ و چندوظیفهای است که در آن یک وظیفه با اولویت پایینتر، منبع مورد نیاز یک کار با اولویت بالاتر را در خود نگه میدارد، و باعث میشود که وظایف با اولویت بالاتر به طور غیرمستقیم توسط کارهای با اولویت پایینتر پیشی گرفته شود.
ارث بری
این تکنیکی است که برای کاهش وارونگی اولویت با بالا بردن موقت اولویت یک کار با اولویت پایینتر که منبع مورد نیاز یک کار با اولویت بالاتر را نگه میدارد، استفاده میشود. این تضمین می کند که کار با اولویت بالاتر توسط سایر وظایف به تاخیر نیفتد و به حفظ پاسخگویی سیستم کمک می کند.
نشت حافظه
زمانی اتفاق میافتد که یک برنامه حافظه را تخصیص میدهد اما پس از استفاده آن را آزاد نمیکند و باعث میشود که حافظه اشغال شده و برای سایر فرآیندها در دسترس نباشد. این می تواند منجر به کاهش عملکرد سیستم و در نهایت از کار افتادن سیستم با اتمام حافظه موجود شود.
تخصیص حافظه پیوسته
این یک روش مدیریت حافظه است که در آن هر فرآیند یک بلوک پیوسته از حافظه را اشغال می کند. این بدان معنی است که تمام حافظه مورد نیاز یک فرآیند در یک بخش واحد و پیوسته از حافظه فیزیکی تخصیص داده می شود.
فشرده سازی
این فرآیند مرتب سازی مجدد محتویات حافظه برای تجمیع حافظه آزاد در یک بلوک مجزا است. این به کاهش تکه تکه شدن خارجی با ایجاد بلوکهای بزرگتر حافظه آزاد که میتواند فرآیندها یا دادههای جدید را در خود جای دهد، کمک میکند.
صفحه بندی
این یک تکنیک مدیریت حافظه است که فضای آدرس فرآیند را به بلوک هایی با اندازه ثابت به نام صفحات و حافظه فیزیکی را به بلوک هایی با همان اندازه به نام فریم تقسیم می کند. این امکان تخصیص حافظه غیر پیوسته را فراهم می کند، به این معنی که فرآیندها نیازی به بارگذاری در یک بلوک پیوسته از حافظه فیزیکی ندارند.
مثال:
رشته مرجع صفحه: 7، 0، 1، 2، 0، 3، 0، 4، 2، 3، 0، 3
تعداد قاب: 3
الگوریتم جایگزینی صفحه
First-In-First-Out (FIFO)
صفحات به ترتیبی که به آنها ارجاع داده می شود اضافه می شوند و هنگامی که یک خطای صفحه رخ می دهد، قدیمی ترین صفحه حذف می شود (مهم نیست که اخیراً کم و بیش به آن دسترسی داشته باشید)
کمترین استفاده اخیر (LRU)
حداقل صفحه ای که اخیراً استفاده شده است در صورت خطای صفحه حذف می شود.
جایگزینی صفحه بهینه
صفحه ای را که در آینده برای طولانی ترین زمان استفاده نمی شود جایگزین کنید.
ساعت (فرصت دوم)
صفحات در یک صف دایره ای مرتب شده اند و هر صفحه دارای یک بیت مرجع است. اگر خطای صفحه رخ دهد، بیت مرجع را بررسی می کند. اگر 1 باشد، به صفحه شانس دوم می دهد (بیت را روی 0 قرار می دهد) و به صفحه بعدی می رود.
کمترین استفاده (LFU)
صفحه را با کمترین تعداد دسترسی جایگزین کنید.
مشکلات
FIFO: ناهنجاری بلادی
LRU: حسابداری پیچیده
جایگزینی صفحه بهینه: بدون دانش آینده غیر عملی است
ساعت (فرصت دوم): ناکارآمدی با استراتژی بیت مرجع ضعیف تنظیم شده است
LFU: با تغییر الگوهای دسترسی بی اثر است
صفحه بندی تقاضا
این یک تکنیک مدیریت حافظه است که در آن صفحات تنها زمانی در حافظه فیزیکی بارگذاری می شوند که واقعاً مورد نیاز باشند. این بدان معنی است که یک صفحه در حافظه بارگذاری نمی شود تا زمانی که CPU سعی کند به آن دسترسی پیدا کند و باعث خطای صفحه می شود.
تقسیم بندی
این حافظه را بر اساس تقسیمات منطقی یک فرآیند به بخش هایی مانند کد، داده و پشته تقسیم می کند. هر بخش می تواند به طور مستقل رشد کند و در حوزه های مختلف حافظه فیزیکی تخصیص یابد.
به استفاده ناکارآمد از حافظه اشاره دارد که می تواند در نتیجه تخصیص و آزادسازی حافظه در یک سیستم رخ دهد. این شامل تجزیه حافظه به بلوک های کوچکتر و غیر پیوسته در طول زمان است.
انواع تکه تکه شدن
تکه تکه شدن داخلی
زمانی اتفاق میافتد که به یک فرآیند بیش از آنچه واقعاً نیاز دارد حافظه اختصاص داده شود و فضای بلااستفاده در پارتیشن اختصاص داده شده باقی بماند.
تکه تکه شدن خارجی
این به شرایطی اشاره دارد که در آن حافظه آزاد در طول زمان به بلوکهای کوچک و غیر پیوسته تقسیم میشود و تخصیص یک بلوک بزرگ به هم پیوسته از حافظه را دشوار میکند، حتی اگر کل حافظه آزاد کافی باشد.
این اتفاق زمانی رخ می دهد که فرآیندها بارگیری و از حافظه حذف می شوند و حفره هایی با اندازه های مختلف در حافظه پراکنده می شوند. با گذشت زمان، این حفره ها می توانند برای برآوردن درخواست های جدید حافظه بسیار کوچک شوند، حتی اگر کل حافظه آزاد کافی باشد.
کوبیدن
زمانی اتفاق میافتد که سیستم عامل بیشتر وقت خود را صرف مبادله صفحات درون و خارج از حافظه فیزیکی به جای اجرای فرآیندها میکند. این فعالیت پیجینگ بیش از حد منجر به عملیات ورودی/خروجی دیسک بسیار بالا و استفاده ضعیف از CPU می شود.
پیری
این تکنیکی است که در سیستم عامل ها، به ویژه در زمینه مدیریت حافظه و الگوریتم های جایگزینی صفحه، برای جلوگیری از تاخیر نامحدود یا گرسنگی فرآیندها استفاده می شود. افزایش سن کمک می کند تا اطمینان حاصل شود که تمام فرآیندها در نهایت فرصتی برای اجرا پیدا می کنند، حتی اگر برای مدت طولانی منتظر مانده باشند.
دسترسی مستقیم به حافظه (DMA)
این یک فناوری است که کارایی سیستم را با اجازه دادن به دستگاه های جانبی برای دسترسی مستقیم به حافظه اصلی و دور زدن CPU افزایش می دهد. این به ویژه برای انتقال داده های بزرگ مفید است، زیرا بار کاری CPU را کاهش می دهد و روند را سرعت می بخشد.
دریچه گاز حرارتی
این مکانیزمی است که در رایانه ها و دستگاه های الکترونیکی برای جلوگیری از گرمای بیش از حد و اطمینان از عملکرد پایدار زمانی که دمای سیستم از یک آستانه خاص فراتر می رود استفاده می شود. این فرآیند شامل کاهش خودکار عملکرد CPU، GPU یا سایر اجزا برای کاهش دما و جلوگیری از آسیب احتمالی است.
این یک فناوری است که برای افزایش عملکرد و قابلیت اطمینان سیستم های ذخیره سازی داده ها با ترکیب چندین هارد درایو فیزیکی در یک واحد منطقی استفاده می شود.
RAID 0 (Striping):
این داده ها را به طور مساوی در چندین دیسک بدون افزونگی تقسیم می کند.
RAID 1 (Mirroring):
داده های مشابه را روی دو یا چند دیسک کپی می کند.
RAID 5 (Striping with Parity):
داده ها و برابری (اطلاعات بررسی خطا) را در تمام دیسک ها توزیع می کند.
RAID 6 (Striping with Double Parity)
این شبیه به RAID 5 است اما با یک لایه برابری اضافی، به دو دیسک اجازه می دهد بدون از دست دادن داده ها از کار بیفتند.
این اجازه می دهد تا فرآیندها بزرگتر از حافظه فیزیکی باشند. برای اجرا نیازی نیست که برنامه ها به طور کامل در RAM قرار بگیرند، زیرا می توان بخش هایی از برنامه را در صورت نیاز بارگیری و تخلیه کرد.
این یک کش تخصصی است که در سیستم های حافظه مجازی برای سرعت بخشیدن به ترجمه آدرس های مجازی به آدرس های فیزیکی استفاده می شود.
متصل بمانید!
اگر از این پست لذت بردید، فراموش نکنید که من را در رسانه های اجتماعی برای به روز رسانی و اطلاعات بیشتر دنبال کنید:
توییتر: بزرگاوگانسان
اینستاگرام: بزرگان
لینکدین: بزرگان