HTML5-fondations_[www.ketabesabz.com].pdf
2.2 MB
آموزش طراحی وب با html 5
@de_coder
@de_coder
BUILD YOUR OWN OS
قسمت اول : سیستم عامل
سیستمعامل یک نرم افزار سیستمی است که وظایف متعددی را بر عهده دارد. سیستمعامل در وهلهی اول به عنوان پلی بین سختافزار و نرمافزار عمل می کند و به شما امکان کنترل سخت افزار را می دهد. سیستمعامل همچنین بستری را برای اجرای برنامه هافراهم می کند و خدمات لازم را در اختیارشان قرار می دهد. به طور کلی سیستمعامل مجموعهای از هسته و برنامههای متعدد است که هر برنامه برای تحقق هدفی خاص طراحی شده است . این برنامهها از طریق واسطهای کاربردی یا فراخوانی سیستمی به خدمات سیستمعامل دسترسی دارند. سیستمعامل علاوه بر پاسخ به نیازهای کاربر یا نرمافزارها ، وظیفه مدیریت منابع و حافظه ذخیره سازی را نیز بر عهده دارد و این امکان را فراهم می کند که در زمان لازم داده ها و فضاهای ذخیرهسازی را به اشتراک بگذارد. سیستم عامل ها همچنین وظیفهی حفظ امنیت را نیز بر عهده دارند.
اما از آنجایی که هدف از تمام این توضیحات این است که شما را در مسیر نوشتن سیستمعامل شخصیتان قرار دهیم سعی بر این است که عمدهی مطالب به سیستمعاملهای متن باز اختصاص داده شود.
به طور کلی شناخته شدهترین سیستمعاملهای متن باز سیستمعاملهای یونیکس و شبه-یونیکس هستند که به تفاوت آنها در مطالب گذشته پرداخته شده است. به طور کلی سیستم عامل های متن باز از یک هسته (KERNEL) و مجموعه ای از برنامهها تشکیل(USERLAND) شده است. این نرمافزارها که بخش عمده ای از یک سیستمعامل را تشکیل می دهند وظیفه برقراری ارتباط با سختافزار به طور مستقیم یا استفاده از سختافزار به طور غیر مستقیم را برای پاسخ به نیازهای کاربر دارند. اما برای دسترسی به سختافزار نیاز به استفاده از دستورات سطح پائین در کد نویسی خود داریم و برای هر برنامهای که نوشته می شود این دستورات باید مجددا تکرار شوند. در این جا است که وجود یک هسته اهمیت پیدا می کند تا نیاز برنامهها برای دسترسی به سختافزار و انتقال اطلاعات را مرتفع سازد
هستهها (Kernels)و مجموعههای(Userland) فروانی وجود دارد که ترکیب هر یک از آنها با یکدیگر سیستمعاملهای متفاوتی را ایجاد می کند که به آنها در قسمت های بعد می پردازیم.
#parsa
#OS
#BUILD_YOUR_OWN_OS
@de_coder
قسمت اول : سیستم عامل
سیستمعامل یک نرم افزار سیستمی است که وظایف متعددی را بر عهده دارد. سیستمعامل در وهلهی اول به عنوان پلی بین سختافزار و نرمافزار عمل می کند و به شما امکان کنترل سخت افزار را می دهد. سیستمعامل همچنین بستری را برای اجرای برنامه هافراهم می کند و خدمات لازم را در اختیارشان قرار می دهد. به طور کلی سیستمعامل مجموعهای از هسته و برنامههای متعدد است که هر برنامه برای تحقق هدفی خاص طراحی شده است . این برنامهها از طریق واسطهای کاربردی یا فراخوانی سیستمی به خدمات سیستمعامل دسترسی دارند. سیستمعامل علاوه بر پاسخ به نیازهای کاربر یا نرمافزارها ، وظیفه مدیریت منابع و حافظه ذخیره سازی را نیز بر عهده دارد و این امکان را فراهم می کند که در زمان لازم داده ها و فضاهای ذخیرهسازی را به اشتراک بگذارد. سیستم عامل ها همچنین وظیفهی حفظ امنیت را نیز بر عهده دارند.
اما از آنجایی که هدف از تمام این توضیحات این است که شما را در مسیر نوشتن سیستمعامل شخصیتان قرار دهیم سعی بر این است که عمدهی مطالب به سیستمعاملهای متن باز اختصاص داده شود.
به طور کلی شناخته شدهترین سیستمعاملهای متن باز سیستمعاملهای یونیکس و شبه-یونیکس هستند که به تفاوت آنها در مطالب گذشته پرداخته شده است. به طور کلی سیستم عامل های متن باز از یک هسته (KERNEL) و مجموعه ای از برنامهها تشکیل(USERLAND) شده است. این نرمافزارها که بخش عمده ای از یک سیستمعامل را تشکیل می دهند وظیفه برقراری ارتباط با سختافزار به طور مستقیم یا استفاده از سختافزار به طور غیر مستقیم را برای پاسخ به نیازهای کاربر دارند. اما برای دسترسی به سختافزار نیاز به استفاده از دستورات سطح پائین در کد نویسی خود داریم و برای هر برنامهای که نوشته می شود این دستورات باید مجددا تکرار شوند. در این جا است که وجود یک هسته اهمیت پیدا می کند تا نیاز برنامهها برای دسترسی به سختافزار و انتقال اطلاعات را مرتفع سازد
هستهها (Kernels)و مجموعههای(Userland) فروانی وجود دارد که ترکیب هر یک از آنها با یکدیگر سیستمعاملهای متفاوتی را ایجاد می کند که به آنها در قسمت های بعد می پردازیم.
#parsa
#OS
#BUILD_YOUR_OWN_OS
@de_coder
همان طور که در عکس بالا مشاهده می کنید میتوان ضرایب مثلث خیام پاسکال را با استفاده از " ترکیب" به دست آورد و همانطور که مشاهده می کنید فرمول ترکیب k از n در انتهای برگه نوشته شده
حال اگر ما بتوانیم رابطه ی بین این فرمول و سطر هر مثلث را به دست آوریم به پاسخ رسیده ایم
این رابطه در برنامه داخل متدی به نامcombination کد نویسی شده است
که در آن factorialX همان !n نوشته شده در برگه است
و factorialY همان !k است
و factorialX_Y همان !n-k است
باز هم برای بهتر متوجه شدن یک بار این برنامه را خودتان با مثال های کوچک trace کنید
اما دلیل اینکه عدد بزرگ وارد می کنید و ضرایب در خط های انتهایی منفی می شوند این است که چون آن اعداد از scope یا همان بازه ی تعریف شده ی long بزرگ تر هستند این مشکل پیش می آید و برای رفع این مشکل باید نوع داده ساختار را عوض کنید
متد print هم برای این گذاشته شده که موقع چاپ اعادا با ارقام متفاوت قالب جدول که یک مثلث می باشد بهم نریزد
@de_coder
حال اگر ما بتوانیم رابطه ی بین این فرمول و سطر هر مثلث را به دست آوریم به پاسخ رسیده ایم
این رابطه در برنامه داخل متدی به نامcombination کد نویسی شده است
که در آن factorialX همان !n نوشته شده در برگه است
و factorialY همان !k است
و factorialX_Y همان !n-k است
باز هم برای بهتر متوجه شدن یک بار این برنامه را خودتان با مثال های کوچک trace کنید
اما دلیل اینکه عدد بزرگ وارد می کنید و ضرایب در خط های انتهایی منفی می شوند این است که چون آن اعداد از scope یا همان بازه ی تعریف شده ی long بزرگ تر هستند این مشکل پیش می آید و برای رفع این مشکل باید نوع داده ساختار را عوض کنید
متد print هم برای این گذاشته شده که موقع چاپ اعادا با ارقام متفاوت قالب جدول که یک مثلث می باشد بهم نریزد
@de_coder