باسلام خدمت دوستان، وکیلی هستم. با سری آموزش¬های سیستم عامل در خدمتتون هستم.
سیستم¬عامل واسط بین کاربر و سخت افزار است. برای شناخت سیستم عامل و نحوه کارکرد آن نیاز به شناخت مفاهیم سیستم عامل، فرآیندها و زمانبندی پردازنده، کنترل همروندی، انحصار متقابل، مدیریت سخت افزار و .. می باشد که در این آموزش ها به صورت دقیق به تمامی این مسائل پرداخته می شود.
برای ساخت هر برنامه کاربردی و اجرای درست آن بر روی سیستم عامل موردنظر، دانستن ویژگی های سیستم عامل بسیار ضروری و تاثیر گذار می باشد. هیچ گاه نمی توان بدون اطلاع از عملکرد سیستم عامل برنامه کاربردی ایجاد کرد و انتظار داشت که بدون نقص و بهینه اجرا شود.
بنابراین هدف از این آموزش آشنایی با مفاهیم سیستم عامل، نحوه کارد آن و شیوه مدیریت سخت افزار توسط سیستم عامل می باشد.
سیستم¬عامل واسط بین کاربر و سخت افزار است. برای شناخت سیستم عامل و نحوه کارکرد آن نیاز به شناخت مفاهیم سیستم عامل، فرآیندها و زمانبندی پردازنده، کنترل همروندی، انحصار متقابل، مدیریت سخت افزار و .. می باشد که در این آموزش ها به صورت دقیق به تمامی این مسائل پرداخته می شود.
برای ساخت هر برنامه کاربردی و اجرای درست آن بر روی سیستم عامل موردنظر، دانستن ویژگی های سیستم عامل بسیار ضروری و تاثیر گذار می باشد. هیچ گاه نمی توان بدون اطلاع از عملکرد سیستم عامل برنامه کاربردی ایجاد کرد و انتظار داشت که بدون نقص و بهینه اجرا شود.
بنابراین هدف از این آموزش آشنایی با مفاهیم سیستم عامل، نحوه کارد آن و شیوه مدیریت سخت افزار توسط سیستم عامل می باشد.
برای درک بهتر عملکرد سیستم عامل آشنایی با سازمان و معماری کامپیوتر لازم است که در این قسمت از آموزش به مرور معماری کامپیوتر می پردازیم.
یک کامپیوتر در حالت کلی شامل چهار جزء اصلی می باشد:
پردازنده: انجام پردازش داده ها و کنترل عملکرد تمامی اجزا
حافظه اصلی: ذخیره موقت برنامه ها، داده ها و پشته ها به منظور دسترسی سریع
دستگاه های ورودی خروجی: تبادل داده بین محیط خارجی و کامپیوتر
گذرگاه: واسط ارتباطی بین اجزای کامپیوتر
یک کامپیوتر در حالت کلی شامل چهار جزء اصلی می باشد:
پردازنده: انجام پردازش داده ها و کنترل عملکرد تمامی اجزا
حافظه اصلی: ذخیره موقت برنامه ها، داده ها و پشته ها به منظور دسترسی سریع
دستگاه های ورودی خروجی: تبادل داده بین محیط خارجی و کامپیوتر
گذرگاه: واسط ارتباطی بین اجزای کامپیوتر
پردازنده:
پردازنده برای اجرای هر دستورالعمل از حافظه اصلی نیاز به سه مرحله دارد:
1. واکشی : خواندن دستورالعمل از حافظه
2. رمزگشایی : تفسیر دستورالعمل برای اجرا
3. اجرا : کنترل روند اجرای دستورالعمل
پردازنده ها همیشه این سه گام را انجام می دهند و هیچ گاه بی کار نمی مانند و در حالتی که کاری برای انجام ندارند یک حلقه انتظار را اجرا می کنند.
برنامه ها در کامپیوتر در دو مد انجام می شوند: مد هسته ومد کاربر. سیستم عامل در مد هسته انجام می شود و اختیار تام برای کنترل و دسترسی به تمامی بخش های کامپیوتر را دارا می باشد.
پردازنده برای اجرای هر دستورالعمل از حافظه اصلی نیاز به سه مرحله دارد:
1. واکشی : خواندن دستورالعمل از حافظه
2. رمزگشایی : تفسیر دستورالعمل برای اجرا
3. اجرا : کنترل روند اجرای دستورالعمل
پردازنده ها همیشه این سه گام را انجام می دهند و هیچ گاه بی کار نمی مانند و در حالتی که کاری برای انجام ندارند یک حلقه انتظار را اجرا می کنند.
برنامه ها در کامپیوتر در دو مد انجام می شوند: مد هسته ومد کاربر. سیستم عامل در مد هسته انجام می شود و اختیار تام برای کنترل و دسترسی به تمامی بخش های کامپیوتر را دارا می باشد.
حافظه:
حافظه امروزی دارای سلسله مراتب متعددی می باشند اصلی ترین آنها به ترتیب زیر است:
1. رجیسترهای پردازنده
2. حافظه نهان داخلی
3. حافظه نهان خارجی
4. حافظه اصلی
5. حافظه نهان دیسک
6. دیسک ها
7. رسانه های ذخیره سازی انبوه
که از بالا به پایین با کاهش قیمت هر بیت، کاهش سرعت دسترسی توسط پردازنده، افزایش ماندگاری، افزایش حجم فیزیکی رو به رو هستیم.
حافظه امروزی دارای سلسله مراتب متعددی می باشند اصلی ترین آنها به ترتیب زیر است:
1. رجیسترهای پردازنده
2. حافظه نهان داخلی
3. حافظه نهان خارجی
4. حافظه اصلی
5. حافظه نهان دیسک
6. دیسک ها
7. رسانه های ذخیره سازی انبوه
که از بالا به پایین با کاهش قیمت هر بیت، کاهش سرعت دسترسی توسط پردازنده، افزایش ماندگاری، افزایش حجم فیزیکی رو به رو هستیم.
حافظه اصلی و رجیسترهای پردازنده تنها حافظه هایی هستند که مستقیما توسط برنامه نویسان و کامپایلرها اداره می شوند و دستورالعمل های درون برنامه ها ، آدرس حافظه و رجیسترها را به عنوان آرگومان می پذیرند.
حافظه نهان همان گونه که از نامش پیداست از دید برنامه نویسان پنهان بوده مستقیما توسط پردازنده و کنترل کننده حافظه نهان مورد استفاده قرار می گیرد.
حافظه نهان همان گونه که از نامش پیداست از دید برنامه نویسان پنهان بوده مستقیما توسط پردازنده و کنترل کننده حافظه نهان مورد استفاده قرار می گیرد.
ورودی خروجی:
به طور کلی دستگاه های ورودی خروجی به دو دسته دستگاه های بلوکی و دستگاه های کاراکتری تقسیم می شوند. دستگها بلوکی وسیله ای است که اطلاعات را در بلوک هایی با اندازه معین خیره می کند که هرکدام با آدرس خودشان مشخص می شوند. ویژگی اساسی دستگاه های بلوکی این است که خواندن و نوشتن هر بلوک به صورت مجا انجام می شود اصلی ترین دستگاه های بلوکی دیسک ها هستند. دستگاه های کاراکتری یک جریان از کاراکترها را بدون توجه به هیچ ساختاری دریافت یا تحویل می دهند بنابراین قابلیت جستجو و آدرس دهی در آنها وجود ندارد مانند چاپگرها ماوس ها و ...
البته بعضی از دستگاه ها در این دو دسته قرار نمی گیرند مانند ساعت سیستم که نه شامل بلوک آدرس دهی است نه جریان کاراکتری بلکه در بازه های زمانی از پیش تعیین شده سبب ایجاد وقفه می شود.
به طور کلی دستگاه های ورودی خروجی به دو دسته دستگاه های بلوکی و دستگاه های کاراکتری تقسیم می شوند. دستگها بلوکی وسیله ای است که اطلاعات را در بلوک هایی با اندازه معین خیره می کند که هرکدام با آدرس خودشان مشخص می شوند. ویژگی اساسی دستگاه های بلوکی این است که خواندن و نوشتن هر بلوک به صورت مجا انجام می شود اصلی ترین دستگاه های بلوکی دیسک ها هستند. دستگاه های کاراکتری یک جریان از کاراکترها را بدون توجه به هیچ ساختاری دریافت یا تحویل می دهند بنابراین قابلیت جستجو و آدرس دهی در آنها وجود ندارد مانند چاپگرها ماوس ها و ...
البته بعضی از دستگاه ها در این دو دسته قرار نمی گیرند مانند ساعت سیستم که نه شامل بلوک آدرس دهی است نه جریان کاراکتری بلکه در بازه های زمانی از پیش تعیین شده سبب ایجاد وقفه می شود.
انتقال اطلاعات بین سیستم و دستگاه های ورودی خروجی به دو صورت همگام (سنکرون) و غیر همگام( آسنکرون) انجام می گیرد
همگام: در این روش هنگامی که برنامه کاربر درخواست انقال اطلاعات دارد فرآیند کاربر بلوک شده و انتقال صورت می گیرد پس از تکمیل انتقال اطلاعات، کنترل به برنامه کاربر برمیگردد برنامه کاربر فعال شده و به پردازش ادامه می دهد.
غیر همگام: در این حالت سیستم عامل بعد از دریافت درخواست انتقال اطلاعات و صدور فرمان منتظر انجام درخواست نمی شود و به انجام مابقی دستورات رسیدگی می کند. در این حالت پردازنده برای مدیریت ورودی خروجی سه راه پیش رو دارد :
برنامه سازی شده : در این حالت پردازنده در یک حلقه انتظار می چرخد و در بازه های زمانی تعیین شده ورودی خروجی را چک می کند تا زمانی که ورودی خروجی مورد نظر رخ دهد.
مبتنی بر وقفه : پردازنده به انجام پردازش های دیگر مشغول می شود و در صورت اتمام فرآیند ورودی خروجی وقفه ای به سیستم عامل فرستاده می شود که سیستم عامل به ادامه پردازش فرآیند منتظر می پردازد
(دسترسی مستقیم به حافظه) : در این حالت پردازنده ورود و خروج اطلاعات را ب کنترل کننده DMA واگذار می کند و خود به انجام سایر پردازش ها مشغول میشود.
برنامه سازی شده : در این حالت پردازنده در یک حلقه انتظار می چرخد و در بازه های زمانی تعیین شده ورودی خروجی را چک می کند تا زمانی که ورودی خروجی مورد نظر رخ دهد.
مبتنی بر وقفه : پردازنده به انجام پردازش های دیگر مشغول می شود و در صورت اتمام فرآیند ورودی خروجی وقفه ای به سیستم عامل فرستاده می شود که سیستم عامل به ادامه پردازش فرآیند منتظر می پردازد
(دسترسی مستقیم به حافظه) : در این حالت پردازنده ورود و خروج اطلاعات را ب کنترل کننده DMA واگذار می کند و خود به انجام سایر پردازش ها مشغول میشود.
در این سه روش I/O برنامه سازی شده کل زمان پردازنده را به خود اختصاص می دهد. در I/O مبتنی بر وقفه پردازنده بخد از انجام هر دستورالعمل بیت وقفه را چک می کند و در حالت DMA پردازنده فقط یک بار در ابتدا و یک بار در انتها درگیر عملیات ورودی خروجی میشود
در اینجا مفاهیم پایه معماری کامپیوتر که برای جلسات آینده مورد نیاز بود تشریح شد، در جلسه آینده به معرفی سیستم عامل ، تاریخچه سیستم عامل، معرفی مفاهیم اساسی سیستم عامل می پردازیم. با تشکر از توجه شما.
@AMCSUI
با نامِ خـــ♡ـــداےِ مهربان و لطیف
مےچینم هفت سینِ امسال را ؛
❤️✨ 1- سایہ پدر و مادر برسرتاڹ
❤️✨ 2- سلامتے در جسم وجانتان
❤️✨ 3- سرسبزے در خانہهایتان
❤️✨ 4- سخاوت در دلهایتان
❤️✨ 5-سرنوشتِ زیبا در تقدیرتان
❤️✨ 6- سبدِ سنبل در نگاهتان
❤️✨ 7-سیبِ لبخند بر لبهایتان
💝 پیشاپیش سالِ نو مبارڪ 💝
🌹✨ با بهتریڹ آرزوها ✨🌹
@AMCSUI
با نامِ خـــ♡ـــداےِ مهربان و لطیف
مےچینم هفت سینِ امسال را ؛
❤️✨ 1- سایہ پدر و مادر برسرتاڹ
❤️✨ 2- سلامتے در جسم وجانتان
❤️✨ 3- سرسبزے در خانہهایتان
❤️✨ 4- سخاوت در دلهایتان
❤️✨ 5-سرنوشتِ زیبا در تقدیرتان
❤️✨ 6- سبدِ سنبل در نگاهتان
❤️✨ 7-سیبِ لبخند بر لبهایتان
💝 پیشاپیش سالِ نو مبارڪ 💝
🌹✨ با بهتریڹ آرزوها ✨🌹
@AMCSUI
سلام دوستان
درخشانی هستم با جلسه دوم از آموزش کیوت(کیوتی).
قبل از شروع جا داره از طرف اسب جناب کیوت از همه دوستانی که به ایشان ابراز محبت فرمودند تشکر کنم!
اگه یادتون باشه جلسه قبل مقدماتی رو از چیستی کیوت گفتیم. اینکه Qt چیست و به چه دردی میخوره. همچنین سرفصلهای دورهمون رو تعیین کردیم.
امروز فصل 1 رو با هم استارت میزنیم. موافقید؟ آمادهاید؟
پس...
فصل اول: «مقدمات لازم برای فهم کیوت»
کیوت از همان ابتدای بوجود آمدنش قصدش این بود که کار برنامهنویسها و توسعه دهندهها رو در سه حوزهی زیر تسهیل کنه و علاوه بر اون قدرت مانور خیره کنندهای هم به اونها بده؛
ا) ظاهر گرافیکی عالی و خیره کننده (QtQuick) و نیز کارهای گرافیکی آسانتر(OpenGL و ...)
ب) بالابردن بازدهی و توان مانور توسعهدهنده(ترکیب JS + QML + CSS + HTML + XML + CPP)؛ بدین شیوه که شما به راحتی میتوانید مثل برنامههای تحت وب، برنامههاتون رو به دو بخش تقسیم کنید. یک بخش ظاهری یا UI که با QML و JavaScript طراحی میشه و یک بخش پشتی یا Backend که بخش پردازشی اصلی برنامه تون هست و با CPP پیاده سازی میشه. این بدین معنیه که تیم طراحی به راحتی روی زیبایی برنامه متمرکز میشن و تیم Backend روی پایداری و امنیت و قدرت برنامه.
ج) قابلیت چندسکویی؛ تقریبا امروز شما میتوانید برای هر پلتفرم و سیستم عاملی برنامه ی کیوتیتون رو پورت کنید و براش خروجی بگیرید. سیستم عاملهایی چون:
Linux
Windows
MacOSx
Android
iOS
و...
جالبیش هم اینجاست که اولا: برنامهتون روی همهی سیستمعامل ها به یک صورت کار میکنه و ثانیا: ظاهرا برنامهتون روی هر پلتفرمی خودش رو بصورت Native درمیاره. یعنی مثلا روی اندروید ظاهر برنامه تون شبیه برنامههای اندرویدیه و روی لینوکس شبیه برنامههای لینوکسی و روی ویندوز شبیه برنامههای ویندوزی و ...!!
یک کد واحد، n تا خروجی حسابی!
د) اپن سورس بودن؛ و شما تمام(قسمت اعظم) اینها رو میتونید بصورت رایگان و سورسباز داشته باشید. حتی میتونید کیوت خاص خودتون رو داشته باشید!
درخشانی هستم با جلسه دوم از آموزش کیوت(کیوتی).
قبل از شروع جا داره از طرف اسب جناب کیوت از همه دوستانی که به ایشان ابراز محبت فرمودند تشکر کنم!
اگه یادتون باشه جلسه قبل مقدماتی رو از چیستی کیوت گفتیم. اینکه Qt چیست و به چه دردی میخوره. همچنین سرفصلهای دورهمون رو تعیین کردیم.
امروز فصل 1 رو با هم استارت میزنیم. موافقید؟ آمادهاید؟
پس...
فصل اول: «مقدمات لازم برای فهم کیوت»
کیوت از همان ابتدای بوجود آمدنش قصدش این بود که کار برنامهنویسها و توسعه دهندهها رو در سه حوزهی زیر تسهیل کنه و علاوه بر اون قدرت مانور خیره کنندهای هم به اونها بده؛
ا) ظاهر گرافیکی عالی و خیره کننده (QtQuick) و نیز کارهای گرافیکی آسانتر(OpenGL و ...)
ب) بالابردن بازدهی و توان مانور توسعهدهنده(ترکیب JS + QML + CSS + HTML + XML + CPP)؛ بدین شیوه که شما به راحتی میتوانید مثل برنامههای تحت وب، برنامههاتون رو به دو بخش تقسیم کنید. یک بخش ظاهری یا UI که با QML و JavaScript طراحی میشه و یک بخش پشتی یا Backend که بخش پردازشی اصلی برنامه تون هست و با CPP پیاده سازی میشه. این بدین معنیه که تیم طراحی به راحتی روی زیبایی برنامه متمرکز میشن و تیم Backend روی پایداری و امنیت و قدرت برنامه.
ج) قابلیت چندسکویی؛ تقریبا امروز شما میتوانید برای هر پلتفرم و سیستم عاملی برنامه ی کیوتیتون رو پورت کنید و براش خروجی بگیرید. سیستم عاملهایی چون:
Linux
Windows
MacOSx
Android
iOS
و...
جالبیش هم اینجاست که اولا: برنامهتون روی همهی سیستمعامل ها به یک صورت کار میکنه و ثانیا: ظاهرا برنامهتون روی هر پلتفرمی خودش رو بصورت Native درمیاره. یعنی مثلا روی اندروید ظاهر برنامه تون شبیه برنامههای اندرویدیه و روی لینوکس شبیه برنامههای لینوکسی و روی ویندوز شبیه برنامههای ویندوزی و ...!!
یک کد واحد، n تا خروجی حسابی!
د) اپن سورس بودن؛ و شما تمام(قسمت اعظم) اینها رو میتونید بصورت رایگان و سورسباز داشته باشید. حتی میتونید کیوت خاص خودتون رو داشته باشید!
ه) قابلیت ساخت برنامههای چند زبانه: یعنی شما بتونید برنامههای بسازید که با کمترین تغییری توی کدهاتون هر وقت لازم بود بتونید زبانهای دیگری رو نیز بهش اضافه کنید.
دل و رودهی کیوت:
خب وقتشه که یه نگاه دقیقتر و عمقیتر به این موجود شیرین بیندازیم!
کیوت هم مثل اکثر فریمورکها از دو بخش اصلی تشکیل شده:
یک) بخش پایه – یا اصطلاحا Essentials
دو) بخش ماژولّها و افرودنیها(یه چیزی مثل فلفل و زردچوبه!) – یا Add-on modules
بخش پایه شامل قابلیتّهای اصلیای هست که کیوتی ارائه میده.
مثل چی؟ مثل قابلیتهای:
-هسته: شامل کار با Threading و Container ها و سیستم رویدادها و سیستم فایل و ...
-کار با کنسول
-کنترلّهای GUI
-QtQuick
-کار با شبکه
-کار با SQL
-Unit Test
-کار با WebKit
-و...
(تصویر ۱ لیست کامل تری از اجزای بخش Essential را نمایش میدهد. هر چند تعداد واقعی این پایهها بیشتر از اینهاست . منبع: ویکیپدیا)
بخش افزودنیّها شامل کلاسهایی است که قدرت هسته و پایهی کیوتی رو توسعه میدهند. کلاسّهایی مثل:
-کار با بلوتوث
-کار با NFC
-کار با OpenGL
-کار با ActiveX
-کار با سنسورها
-کار با پورتّهای سریال
-کار با سوکتهای وب
-کار با XML
-و...
(تصویر ۲ لیست کاملتری رو از افزودنیّهای کیوت ارائه میده. هر چند تعداد واقعی این افزودنیها بیشتر از اینهاست. منبع: ویکیپدیا)
خب وقتشه که یه نگاه دقیقتر و عمقیتر به این موجود شیرین بیندازیم!
کیوت هم مثل اکثر فریمورکها از دو بخش اصلی تشکیل شده:
یک) بخش پایه – یا اصطلاحا Essentials
دو) بخش ماژولّها و افرودنیها(یه چیزی مثل فلفل و زردچوبه!) – یا Add-on modules
بخش پایه شامل قابلیتّهای اصلیای هست که کیوتی ارائه میده.
مثل چی؟ مثل قابلیتهای:
-هسته: شامل کار با Threading و Container ها و سیستم رویدادها و سیستم فایل و ...
-کار با کنسول
-کنترلّهای GUI
-QtQuick
-کار با شبکه
-کار با SQL
-Unit Test
-کار با WebKit
-و...
(تصویر ۱ لیست کامل تری از اجزای بخش Essential را نمایش میدهد. هر چند تعداد واقعی این پایهها بیشتر از اینهاست . منبع: ویکیپدیا)
بخش افزودنیّها شامل کلاسهایی است که قدرت هسته و پایهی کیوتی رو توسعه میدهند. کلاسّهایی مثل:
-کار با بلوتوث
-کار با NFC
-کار با OpenGL
-کار با ActiveX
-کار با سنسورها
-کار با پورتّهای سریال
-کار با سوکتهای وب
-کار با XML
-و...
(تصویر ۲ لیست کاملتری رو از افزودنیّهای کیوت ارائه میده. هر چند تعداد واقعی این افزودنیها بیشتر از اینهاست. منبع: ویکیپدیا)