#kernel #1
آموزش کرنل 😃
بیایم اول در مورد کرنل و تسک های کرنل حرف بزنیم و ی سری مباحثو بدونیم😃
این جناب کرنل قصه ی ما درواقع یه لایه ی intermediary بین سخت افزار و نرم افزار هست
اگه یه نگاه به دیکشنری بندازیم نوشته ک intermediary یعنی یه فرد یا یه چیزی ک سعی میکنه بین دو تا چیز دیگه ارتباطی راه بندازه یا کمک رسانی کنه
کرنل هم دقیقا همونطور ک گفتم لایه ی ارتباطی بین سخت افزارو نرم افزار هست
درواقع هدفش اینه که درخواست های اپلیکیشن های مارو به سخت افزار انتقال بده و مثل یه درایور سطح پایین کارش اینه ک دیوایس های داخلی و خارجی سیستم رو ادرس دهی کنه و دسترسی به کامپوننت های سیستم رو آسون😧
بابا این توضیحا چیه دیگ😐 کار این عکس پایینی رو میکنه 👇
@uselinux
آموزش کرنل 😃
بیایم اول در مورد کرنل و تسک های کرنل حرف بزنیم و ی سری مباحثو بدونیم😃
این جناب کرنل قصه ی ما درواقع یه لایه ی intermediary بین سخت افزار و نرم افزار هست
اگه یه نگاه به دیکشنری بندازیم نوشته ک intermediary یعنی یه فرد یا یه چیزی ک سعی میکنه بین دو تا چیز دیگه ارتباطی راه بندازه یا کمک رسانی کنه
کرنل هم دقیقا همونطور ک گفتم لایه ی ارتباطی بین سخت افزارو نرم افزار هست
درواقع هدفش اینه که درخواست های اپلیکیشن های مارو به سخت افزار انتقال بده و مثل یه درایور سطح پایین کارش اینه ک دیوایس های داخلی و خارجی سیستم رو ادرس دهی کنه و دسترسی به کامپوننت های سیستم رو آسون😧
بابا این توضیحا چیه دیگ😐 کار این عکس پایینی رو میکنه 👇
@uselinux
#kernel #2
این کرنل عینهو یه دستگاه ارتقا یافته ی باهوش میمونه😕
تو دید اپلیکیشن اگه بگیریمش مثل یه کامپیوتر سطح بالاس
مثلا وقتی میاد یه هارد دیسک رو ادرس دهی میکنه باید تصمیم بگیره ک کدوم مسیر رو واسه کپی اطلاعات از دیسک به مموری انتخاب کنه و بعدش کجارو واسه قرار گیری دیتا تو مموری انتخاب کنه و بعد بیاد کدوم دستورارو بفرسته تو دیسک با کدوم مسیر انتخابی و کلی مبحث دیگه 😐
اینکه اپلیکیشن بیاد با سخت افزار ارتباط برقرار کنه همش ی سری کامنده که میفرسته به کرنل ... این کرنله ک کلی دردسر میکشه و کلی جزییات رو میگذرونه تا این کارو انجام بده
@uselinux
حالا اگه بیایم به کرنل به عنوان یه مدیر ریسورس یا منابع سیستممون وقتی که کلی برنامه همزمان در حال اجرا هستند نگا کنیم میبینیم ک داره کلی چیزا رو مثل زمان بندی سی پیو و کانکشن اینترنت و فضای دیسک و اینارو بین این پروسس ها تقسیم بندی میکنه😃
از ی ورم میشه مثل یه لایبرری بهش نگاه کرد🤔 ی لایبرری که کلی دستورات مرتبط به سیستم برامون اماده کرده
این system call ها همونجور ک از اسمشون پیداست واسه ارسال درخواست ب کامپیوتر استفاده میشه این درخواستا توسط یه سری کتابخونه ی استاندارد C بوجود اومدن ها😃 البته اینکه C هست توفیقی ب حال منو شمایی که C بلد نیستیم نداره چون صرفا ی سری فانکشن ها داره که با هرچیزی میتونی صداشون کنی و ازشون استفاده کنی
بهتر بگم دیگ کلاا یه سری api قشنگ قشنگ واسه این کارا داره 😃
@uselinux
این کرنل عینهو یه دستگاه ارتقا یافته ی باهوش میمونه😕
تو دید اپلیکیشن اگه بگیریمش مثل یه کامپیوتر سطح بالاس
مثلا وقتی میاد یه هارد دیسک رو ادرس دهی میکنه باید تصمیم بگیره ک کدوم مسیر رو واسه کپی اطلاعات از دیسک به مموری انتخاب کنه و بعدش کجارو واسه قرار گیری دیتا تو مموری انتخاب کنه و بعد بیاد کدوم دستورارو بفرسته تو دیسک با کدوم مسیر انتخابی و کلی مبحث دیگه 😐
اینکه اپلیکیشن بیاد با سخت افزار ارتباط برقرار کنه همش ی سری کامنده که میفرسته به کرنل ... این کرنله ک کلی دردسر میکشه و کلی جزییات رو میگذرونه تا این کارو انجام بده
@uselinux
حالا اگه بیایم به کرنل به عنوان یه مدیر ریسورس یا منابع سیستممون وقتی که کلی برنامه همزمان در حال اجرا هستند نگا کنیم میبینیم ک داره کلی چیزا رو مثل زمان بندی سی پیو و کانکشن اینترنت و فضای دیسک و اینارو بین این پروسس ها تقسیم بندی میکنه😃
از ی ورم میشه مثل یه لایبرری بهش نگاه کرد🤔 ی لایبرری که کلی دستورات مرتبط به سیستم برامون اماده کرده
این system call ها همونجور ک از اسمشون پیداست واسه ارسال درخواست ب کامپیوتر استفاده میشه این درخواستا توسط یه سری کتابخونه ی استاندارد C بوجود اومدن ها😃 البته اینکه C هست توفیقی ب حال منو شمایی که C بلد نیستیم نداره چون صرفا ی سری فانکشن ها داره که با هرچیزی میتونی صداشون کنی و ازشون استفاده کنی
بهتر بگم دیگ کلاا یه سری api قشنگ قشنگ واسه این کارا داره 😃
@uselinux
#kernel #3
استراتژی های پیاده سازی 😧
آیی ملت😃 ما دو تا الگو یا همون پارادایم اصلی واسه پیاده سازی سیستم عامل ها داریم
اولیاش microkernel ها هستند و دومیاش monolithic kernel ها هستند
📌 microkernels
تو اینا فقط اون فانکشن های ابتدایی مستقیما تو کرنل اصلی قرار گرفته (میکرو کرنل رو میگم )
بقیه فانکشن ها واگذار شدن به پروسس های خود مختاری که با کرنل اصلی توسط یه سری اینترفیس های مشخص در ارتباطند مثل فایل های سیستمی و مدیریت مموری 😃
البته اینم بگم اون فانکشنای ابتدایی ک مدیریت مموری رو بر عهده دارن تو میکروکرنل هستند ولی باقی که واسه هندل سطح سیستم کال استفاده میشه تو سرور های خارجی اند.
البته ممکنه یکم گیج شده باشید تو این قسمت که منظور از سرور های خارجی چیه و غیره ...
ببینید اون سیستم عاملایی که کرنل میکرو دارن مثل nt و ویندوز و Mach یا gnu hurd فرایند های مختلف رو تو سرور های جداگانه که درون فضای آدرس (address space) مجزا قرار دارند اجرا می کنند ولی اون فانکشنا و فرایند های ابتدایی داخل خود میکرو کرنله
این پروسس هارم ک گفتیم با یه سری پیام با هم ارتباط برقرار میکنند
به این معماری بخاطر این پیاما معماری server client هم میگن 😃
📌 monolithics
تو سیستم عامل های با کرنل monolithic مثل لینوکس و BSD .. تمام سرویس ها و فرایند های موجود مربوط به کرنل مثلا ماژول های کرنل یا اکثر devices driver ها و مموری منیجمنت و فایل های سیستمی همشون تو یه جا پک شدن و داخل یک فضای آدرس (address space) با نام فضای کرنل (Kernel Space) اجرا می شن و برنامه های کاربر درون یک فضای آدرس (address space) دیگر با نام فضای کاربر (user space) اجرا میشه😃
اینا هردو نسبت به هم مزایایی دارند که تو پست های بعدی در موردشون حرف میزنیم
@uselinux
استراتژی های پیاده سازی 😧
آیی ملت😃 ما دو تا الگو یا همون پارادایم اصلی واسه پیاده سازی سیستم عامل ها داریم
اولیاش microkernel ها هستند و دومیاش monolithic kernel ها هستند
📌 microkernels
تو اینا فقط اون فانکشن های ابتدایی مستقیما تو کرنل اصلی قرار گرفته (میکرو کرنل رو میگم )
بقیه فانکشن ها واگذار شدن به پروسس های خود مختاری که با کرنل اصلی توسط یه سری اینترفیس های مشخص در ارتباطند مثل فایل های سیستمی و مدیریت مموری 😃
البته اینم بگم اون فانکشنای ابتدایی ک مدیریت مموری رو بر عهده دارن تو میکروکرنل هستند ولی باقی که واسه هندل سطح سیستم کال استفاده میشه تو سرور های خارجی اند.
البته ممکنه یکم گیج شده باشید تو این قسمت که منظور از سرور های خارجی چیه و غیره ...
ببینید اون سیستم عاملایی که کرنل میکرو دارن مثل nt و ویندوز و Mach یا gnu hurd فرایند های مختلف رو تو سرور های جداگانه که درون فضای آدرس (address space) مجزا قرار دارند اجرا می کنند ولی اون فانکشنا و فرایند های ابتدایی داخل خود میکرو کرنله
این پروسس هارم ک گفتیم با یه سری پیام با هم ارتباط برقرار میکنند
به این معماری بخاطر این پیاما معماری server client هم میگن 😃
📌 monolithics
تو سیستم عامل های با کرنل monolithic مثل لینوکس و BSD .. تمام سرویس ها و فرایند های موجود مربوط به کرنل مثلا ماژول های کرنل یا اکثر devices driver ها و مموری منیجمنت و فایل های سیستمی همشون تو یه جا پک شدن و داخل یک فضای آدرس (address space) با نام فضای کرنل (Kernel Space) اجرا می شن و برنامه های کاربر درون یک فضای آدرس (address space) دیگر با نام فضای کاربر (user space) اجرا میشه😃
اینا هردو نسبت به هم مزایایی دارند که تو پست های بعدی در موردشون حرف میزنیم
@uselinux
#kernel #6 #fun
داستان یک ازدواج
Processes , Task switching , Scheduling
کلا اپلیکیشن ها و سرور ها و برنامه هایی که کلا تو یونیکس اجرا میشن به عنوان یه پروسس هستن 😃 هر کدوم از این پروسس ها هم یک فضای آدرس مموری تو CPU دارند .
این فضای آدرس های پروسس های مختلف کلا از هم مستقل هستند و خبری از هم دیگه ندارند یعنی هر پروسس ای هر مشکلی داشت انگار تنها پروسس تو سیستمه و از این لحاظ رو بقیه تاثیری نداره
حالا این اقای پروسس گاهی لازم داره با یه خانم پروسس دیگه ارتباط برقرار کنه و یه سری بگو مگو ها داشته باشه 😃 ولی چون خجالتیه باید مکانیسم های کرنل رو واسط قرار بده تا حرفاشو به خانم پروسسه انتقال بده 💘👫
@uselinux
لینوکس یه سیستم مولتی تسکینگ هست😃 یعنی هرچی پروسس تو سیستمه و داره اجرا میشه رو همزمان اجرا میکنه
عین اینه بجای یه CPU هزار تا ازش داشته باشیو هرکدوم جداگونه کار کنند
این کرنله که گفتم واسط هست با یه فاصله ی زمانی خیلی کم رو این پروسس ها سوییچ میشه تا اون حس همزمانی رو ایجاد کنه و عاشقو به معشوق برسونه😃
ولی همیشه یه سری مشکلات هست همه جا که مادر و پدر عروس و داماد باید بیان کمک😃
کار مادر عروس به کمک پدر داماد کارشون ( کرنل به کمک CPU) task switching هست:
هر پروسس باید توهم بزنه که منابع CPU (پول برای زندگی مشترک☹️) همیشه وجود داره .
@uselinux
واسه این کار این والدین میان و اقای داماد رو هیپنوتیزم میکنن یعنی وضعیت نهایی کارای پروسس را همونطوری نگه میدارند و به حالت idle میبره بعد میرن به خانم پروسس میرسن و باز همین کارو تکرار میکنن
در واقع منابع CPU رو این مدلی تنظیم میکنن 😃 خلو چلشون میکنن تا حقوق هفته ی بعدشون برسه کم خرجی کنند و حس بی پولی نکنن وقتیم ک هفته ی بعد منابع CPU میاد از اون حالتی که عروس و دامادو ذخیره کردن دوباره استارت میزنن تا این زوج هیچی متوجه نمیشن😃
به این کار خبیث و باهوشانه میگن task switching .
این وسط کرنل جونمون که بنیاد حمایت از تولید مثل دستشه باید به مدت زمان هیپنوتیزم خسروها و شیرین های داستانمون که تو کشور لینوکس هستند رسیدگی کنه یعنی تصمیم میگیره که cpu time روی پروسس ها چقدر باشه
یعنی واسه والدین زوج هایی که همزمان میخوان ازدواج کنند یه تایم میده که بعد اون تایم باید هیپنوتیزم شن😃
واسه زوجایی که خیلی عاشقن و تو داستان اهمیت زیادی دارند زمان زیاد و بلعکس زمان کم اختصاص میده .
به این عمل scheduling میگویند 😃
@uselinux
داستان یک ازدواج
Processes , Task switching , Scheduling
کلا اپلیکیشن ها و سرور ها و برنامه هایی که کلا تو یونیکس اجرا میشن به عنوان یه پروسس هستن 😃 هر کدوم از این پروسس ها هم یک فضای آدرس مموری تو CPU دارند .
این فضای آدرس های پروسس های مختلف کلا از هم مستقل هستند و خبری از هم دیگه ندارند یعنی هر پروسس ای هر مشکلی داشت انگار تنها پروسس تو سیستمه و از این لحاظ رو بقیه تاثیری نداره
حالا این اقای پروسس گاهی لازم داره با یه خانم پروسس دیگه ارتباط برقرار کنه و یه سری بگو مگو ها داشته باشه 😃 ولی چون خجالتیه باید مکانیسم های کرنل رو واسط قرار بده تا حرفاشو به خانم پروسسه انتقال بده 💘👫
@uselinux
لینوکس یه سیستم مولتی تسکینگ هست😃 یعنی هرچی پروسس تو سیستمه و داره اجرا میشه رو همزمان اجرا میکنه
عین اینه بجای یه CPU هزار تا ازش داشته باشیو هرکدوم جداگونه کار کنند
این کرنله که گفتم واسط هست با یه فاصله ی زمانی خیلی کم رو این پروسس ها سوییچ میشه تا اون حس همزمانی رو ایجاد کنه و عاشقو به معشوق برسونه😃
ولی همیشه یه سری مشکلات هست همه جا که مادر و پدر عروس و داماد باید بیان کمک😃
کار مادر عروس به کمک پدر داماد کارشون ( کرنل به کمک CPU) task switching هست:
هر پروسس باید توهم بزنه که منابع CPU (پول برای زندگی مشترک☹️) همیشه وجود داره .
@uselinux
واسه این کار این والدین میان و اقای داماد رو هیپنوتیزم میکنن یعنی وضعیت نهایی کارای پروسس را همونطوری نگه میدارند و به حالت idle میبره بعد میرن به خانم پروسس میرسن و باز همین کارو تکرار میکنن
در واقع منابع CPU رو این مدلی تنظیم میکنن 😃 خلو چلشون میکنن تا حقوق هفته ی بعدشون برسه کم خرجی کنند و حس بی پولی نکنن وقتیم ک هفته ی بعد منابع CPU میاد از اون حالتی که عروس و دامادو ذخیره کردن دوباره استارت میزنن تا این زوج هیچی متوجه نمیشن😃
به این کار خبیث و باهوشانه میگن task switching .
این وسط کرنل جونمون که بنیاد حمایت از تولید مثل دستشه باید به مدت زمان هیپنوتیزم خسروها و شیرین های داستانمون که تو کشور لینوکس هستند رسیدگی کنه یعنی تصمیم میگیره که cpu time روی پروسس ها چقدر باشه
یعنی واسه والدین زوج هایی که همزمان میخوان ازدواج کنند یه تایم میده که بعد اون تایم باید هیپنوتیزم شن😃
واسه زوجایی که خیلی عاشقن و تو داستان اهمیت زیادی دارند زمان زیاد و بلعکس زمان کم اختصاص میده .
به این عمل scheduling میگویند 😃
@uselinux