سیستم عامل کوثر

سیستم عامل فارسی کوثر

سیستم عامل کوثر

سیستم عامل فارسی کوثر

سیستم عامل کوثر

سیستم عامل کوثر یک سیستم عامل فارسی بر پایه معماری X86 می باشد. هدف این سیستم عامل تا اطلاع ثانوی آزمایشی / آموزشی می باشد. این سیستم عامل بر پایه هیچ سیستم عامل دیگری مانند لینوکس و ... نمی باشد و از ابتدا توسط توسعه دهندگان آن نوشته شده است.
ما از علاقمندان به برنامه نویسی و طراحی سیستم در همکاری و توسعه این سیستم عامل استقبال می کنیم. نیازی نیست که شما برنامه نویسی و یا ... خبره باشید. حتی با دانش کم هم می توان به ما کمک کرد.
امید است بعد از مراحل آموزشی به مرحله بهره برداری از یک سیستم عامل کاملا بومی برسیم.
emadrezvani@chmail.ir

آخرین نظرات
نویسندگان

هسته (بخش اول)

سید امیر محمد حسن لی | دوشنبه, ۱۶ تیر ۱۳۹۳، ۰۱:۴۳ ق.ظ

سلام

توی این پست من ابتدا یک توضیح کلی رو در مورد هسته یا همون کرنل ارائه میکنم، بعد از این معرفی اولیه و در پست های آتی سعی میکنم به بحث های طراحی ، تاریخچه و ... اون بپردازم. سعی من در ابتدا این هست که یک سری سوال هایی رو در مورد موضوع مورد بحث اعلام میکنم و بعد اقدام به پاسخ گویی به اونها میکنم و تلاشم بر این هست که این روند رو تا انتها پیش بگیرم، اگر دوستان پیشنهاد و یا انتقادی هم داشتند من ازشون استقبال میکنم.

******************

اولین سوال هایی که هنگام مواجه با کلمه ی «کرنل» توی ذهن ما شکل میگیره، این هست که میخوایم بدونیم که کرنل چی هست؟ برای چی کاربرد داره
، چه لزومی به وجودش هست و ... این ها سوال های اساسی هستند که دونستن جواب اونها خالی از لطف نیست.

در جواب این سوال که ماهیت وجودی کرنل چی هست باید گفت که کرنل یا همون هسته، یک برنامه ای هست که یک سری وظایفی رو برای اون تعریف کردن به عنوان اصلی ترین وظیفه میشه از پاسخ دادن به درخواست دیگر نرم افزار ها نام برد. در واقع هسته، به دلیل داشتن تسلط کامل بر سخت افزار سیستم، وظیفه داره به شکل کنترل شده ای، نیاز هایی که برنامه ها دارن مثل اختصاص دادن حافظه، پردازش و ... رو برآورده کنه.

kernel(1)

یک هسته بخش های متعددی داره که اگر بخوایم مهمترین های اونها رو نام ببریم، میشه به مدیریت حافظه، مدیریت سخت افزار ها و مدیریت درخواست ها اشاره کرد که در ادامه به معرفی این بخش ها میپردازم:

در بخش مدیریت حافظه، هسته وظیفه داره به روشی امن و مدیریت شده، حافظه ی مورد نیاز برای برنامه های مختلف رو در اختیار اونها قرار بده، برای این کار، روش های مختلفی وجود داره که برای اطلاعات بیشتر در این ضمینه میتونید به پست های جناب آقای نظریان مراجعه کنید، ایشون به طور تخصصی در این ضمینه پست هایی رو منتشر کردن که به خوبی فرایند اختصاص حافظه و روش های اون رو توضیح دادن، به همین خاطر من در این ضمینه توضیحات دیگه ای رو ارائه نمیکنم.

در بخش مدیریت سخت افزار ها، خوب همونطور که احتمالا همه بر این موضوع واقف هستند، برای اینکه بشه از برنامه ها بهترین استفاده رو کرد، این برنامه ها نیاز به متصل شدن به سخت افزار ها و دستگاه های جانبی(مثل بلند گو، پرینتر و ...) دارن، تمامی این سخت افزار ها و دستگاه های جانبی به وسیله ی هسته یا همون کرنل مدیریت میشن که خود کرنل هم به وسیله ی درایور های این وسایل با اونها ارتباط برقرار میکنه.

درایور ها یک سری برنامه هایی هستند که در واقع به هسته ی سیستم عامل، شیوه ی برقراری ارتباط با این قطعه از سخت افزار رو توضیح میدن و به اون میگن به چه صورت میتونه این قسمت از سخت افزار رو کنترل کنه و درخواست هایی رو که بقیه ی برنامه ها از طریق کرنل به اون ارائه میدن رو به درخواست های قابل فهم و اجرا توسط اون قطعه تبدیل میکنه. این درایور ها در قسمت های زیادی مثل: کارت صدا، کارت گرافیک، اسکنر، پرینتر، مودم، کارت شبکه و ... کاربرد دارن.

به عنوان مثال: وقتی یک برنامه ای از کرنل درخواست نشان داده شدن چیزی رو روی صفحه ی مانیتور میکنه، کرنل این درخواست رو به درایور مربوط به اون قسمت از سخت افزار ارجاع میده، و سپس اون درایور بعد از اینکه دستور رو به دستور قابل فهم توسط اون سخت افزار تبدیل کرد اون رو به سخت افزار ارسال میکنه و مثلا میگه این پیکسل رو روشن کن و یا خاموش کن.

هر کرنلی باید لیستی از وسائلی رو که در دسترسش هست رو در اختیار داشته باشه تا در صورت لزوم و درخواست نرم افزاری بتونه به سرعت به اون درخواست رسیدگی کنه و واکنش لازم رو انجام بده، برای به وجود آوردن این لیست روش های مختلفی وجود داره اما روشی که بیشترین استفاده رو در کرنل های موجود داشته روشplug and play هست. توی این روش کرنل یک جست و جویی رو روی بخش های مختلف سیستم مثل PCI  و USB
برای پیدا کردن دستگاه های متصل به سیستم انجام میده که حاصل اون لیستی هست که نمایانگر سخت افزار ها و دستگاه های جانبی ذر دسترس هست.


در بخش آخر یعنی بخش مدیریت درخواست ها، ابتدا یک توضیحی رو در رابطه با درخواست ها میدم، درخواست ها یا همون system calls امکاناتی هست که یک نرم افزار نیاز داره و به طور معمول اجازه ی استفاده از اونها رو نداره و برای استفاده از اونها به ناچار مجبور به گرفتن اجازه ی دسترسی از کرنل هست، برای مثال: به دلیل حفظ امنیت سیستم، یک برنامه اجازه ی دسترسی مستقیم به ورودی ها و خروجی ها رو نداره، بنابراین اگر بخواد از امکان دریافت ورودی و ارسال خروجی بهره مند بشه، باید درخواست خودش رو به کرنل بفرسته و از طریق کرنل از این امکان استفاده کنه.

درواقع نقش کرنل یا هسته، دادن اجازه ی دسترسی به برنامه های مختلف با توجه به درخواست هایی هست که از اونها دریافت میکنه، مثلا اگر از یک برنامه درخواست دسترسی به حافظه رو داشته باشه، کرنل با تغییر دادن سطح دسترسی اون این امکان رو به اون برنامه میده.

البته به دلیل لزوم وجود امنیت بالا در بحث هسته ی سیستم عامل، در اکثر سیستم عامل ها، برنامه ها به صورت مستقیم به هسته دسترسی ندارند که روش های مختلف دسترسی به هسته رو در پست بعد توضیح خواهم داد. هرچند این روش ها میتونن در سیستم عامل های مختلف اشکال مختلفی رو داشته باشن.

~^~^~^~^~^~^~^~^~

با آرزوی موفقیت روز افزون.

تیم سیستم عامل کوثر.

  • سید امیر محمد حسن لی

نظرات  (۶)

  • مازیار نظریان
  • سلام و خسته نباشید
    این تصویر یک مشکلی داره ، اونم اینه که برنامه های کاربردی به طور مستقیم با هسته ارتباط ندارند ارتباط آنها از طریق utilityها انجام می شود. اینها نرم افزار های سودمندی هستند که به عنوان برنامه های سیستمی شناخته می شوند و هدف آنها توسعه برنامه های کاربردی است پس بهترین انتخاب اینه که برنامه های کاربردی با هسته از طریق این برنامه های سودمند (همان فراخوان های سیستمی) ارتباط برقرار کنند. این برنامه ها ابزارهای تولید برنامه های کاربردی هستند.
    با تشکر
  • عماد رضوانی
  • سلام. هدف سید امیر معرفی هسته و انواع اون هست. و اینکه در سیستم عامل های مختلف از چه نوع معماری هایی استفاده شده است. و نهایتا به یک جمع بندی و دانش طراحی هسته هم برسیم. البته هسته مفهومی انتزاعی داره و با خیلی اجزای دیگه در تماس هست و هسته رو اجزای اون تشکل میدن.
    اگه منابع و مراجع پست هم بزارید خیلی بهتره.
  • مازیار نظریان
  • سلام آقای رضوانی
    کاملاً حرفت درست است و من به مطلب ایشان ایراد نگرفتم و با تصویر حرف داشتم ولی هسته با برنامه های کاربردی مستقیماً ارتباط نداره چون ما یک مفهومی به نام فراخوان های سیستمی داریم. تولید برنامه های کاربردی از طریق نرم افزارهای سیستمی مانند IDE ، اشکال زداها و غیره تولید میشه. و تازه نرم افزارهای سیستمی داخل هسته نیست خارج از هسته هستند.
    فراخوان های سیستمی از طریق یک لایه ای که ما بین برنامه کاربردی و هسته است با هسته ارتباط برقرار می کنه.و اون لایه معمولاً در حالت کاربر (فضای کاربر) قرار داره.
    البته این کل هسته را تشکیل نمی دهد بلکه یک معماری سیستم عامل است.وقتی صحبت از معماری سیستم عامل می شود هسته با عوامل خارجی از پایین ترین سخت افزار تا بالاترین برنامه کاربردی از طریق لایه ها و در سطح بالا از طریق بعضی از نرم افزارهای سیستمی ارتباط برقرار می کند.
    البته این تصویر میتونه یک دید کلی به سیستم باشه.
    با تشکر
  • عماد رضوانی
  • و البته من هم چنین برداشتی کردم که یک دید کلی هست و بهتره آقا سید امیر هم بیشتر کلی بحث کنه تا جزیی.
  • سید امیر محمد حسن لی
  • سلام
    خب همونطور هم که خودتون گفتید این یک تصویر کلی بود تا فقط یک مقدار بتونه اون لایه های ارتباطی و ترتیب اونها رو به خواننده القا کنه. در مورد اینکه برنامه ها به طور مستقیم با هسته ارتباط ندارن هم حرف شما کاملا درست هست. به این موضوع در انتهای مطلب هم اشاره کردم. system call ها یا همون فراخوان های سیستمی به خودی خود نمیتونن با هسته ارتباط برقرار کنن و برای برقراری این ارتباط روش های مختلفی وجود داره مثل برقراری یک سیستم queue و یا مشخص کردن آدرس هایی برای redirect کردن درخواست ها و ... که در این روش ها برای حفظ امنیت هسته و موارد مختلف دیگه ای در نظر گرفته شدن.
    انشالله همونطور که گفتم در پست بعدی به این موضوع هم میپردازم.

  • مازیار نظریان
  • سلام
    خوب داخل تصویر می تونه به جای هسته از کلمه سیستم عامل استفاده بشه. چون تصویر می خواد به خواننده جزئیات رو بگه.
    System callها داخل سیستم عامل هایی مانند ویندوز SDK هستند و API محسوب می شوند از این رو IDEها ، اشکال زداها ، کامپایلرها ، و غیره ... از طریق همین API ها ، برنامه کاربردی تولید می کنند.
    داخل سیستم عامل های مدرن معماری کمی متفاوت شده است.
    بحث برقراری ارتباط و روش های امنیتی برای system callها کاملا جداست.مسلماً یک سیستم باید امینت ارتباطات با لایه های خارجی رو برقرار کنه.
    مدل های هسته تاثیر زیادی روی معماری سیستم عامل دارند ، چون معماری ها بیان می کنند که چگونه مولفه های خارجی با هسته ارتباط دارند.

    ارسال نظر

    ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
    شما میتوانید از این تگهای html استفاده کنید:
    <b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
    تجدید کد امنیتی