نمایش نتایج 1 تا 9 از 9

نام تاپیک: استفاده توابع استاندارد c در ایجاد هسته سیستم

  1. #1
    کاربر جدید آواتار aksiya
    تاریخ عضویت
    مرداد 1395
    محل زندگی
    مشهد
    پست
    18

    Post استفاده توابع استاندارد c در ایجاد هسته سیستم

    با سلام و عرض خسته نباشید....
    می خواستم یک سوال در مورد توسعه هسته سیستم عامل بپرسم.
    چرا نباید در ایجاد هسته سیستم عامل از توابع استاندارد c مثل stdio.h و math.h استفاده کرد؟
    تو یکی از تاپیک ها مدیر تالار pswin به این موضوع اشاره داشتند که برای بنده سوال شد.
    همچنین بنده کد های arax-os رو تا حدودی برسی کردم که در پوشه lib توابع تعریف شده بودند.
    با تشکر....

  2. #2

    نقل قول: استفاده توابع استاندارد c در ایجاد هسته سیستم

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

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

  3. #3
    کاربر جدید آواتار aksiya
    تاریخ عضویت
    مرداد 1395
    محل زندگی
    مشهد
    پست
    18

    نقل قول: استفاده توابع استاندارد c در ایجاد هسته سیستم

    مواردی که توضیح دادید رو متوجه شدم اما سوالی که برایم پیش آمد این است که پس نقش کامپایلر هایی مثل gcc و clang که در سیستم عامل های مختلف کار می کنند چه می باشد؟
    و سوال دیگر بنده در مورد arax-os این است که شما توابعی که در پوشه lib ایجاد کردید رو از طریق هدر و برنامه c تعریف کردید؟یا از طریق دستورات اسمبلی ورودی و خروجی رو دریافت می کند؟

  4. #4
    کاربر جدید آواتار aksiya
    تاریخ عضویت
    مرداد 1395
    محل زندگی
    مشهد
    پست
    18

    نقل قول: استفاده توابع استاندارد c در ایجاد هسته سیستم

    یعنی کسی نیست من رو راهنمایی کند که چگونه تابعی مثل stdio.h بنویسم که مانند دستورات آن ورودی و خروجی دریافت کند؟

  5. #5
    کاربر جدید
    تاریخ عضویت
    دی 1390
    محل زندگی
    واترلو
    پست
    4

    نقل قول: استفاده توابع استاندارد c در ایجاد هسته سیستم

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

    ۱. برنامه ها برای استفاده از خدمات سیستم عامل از system call ها استفاده می کنند. اکثر توابع کتابخانه استاندارد نیز از system call ها استفاده می کنند. به عنوان مثال تابع printf در مرحله ای سیستم کال sys_write را فراخوانی می کند تا سیستم عامل رشته مورد نظر را در خروجی استاندارد بنویسد. وظیفه کامپایلر تا جایی است که عملگر مخصوص فراخوانی سیستم کال را در فایل اجرایی شما ایجاد کند. هنگامی که سیستم کال اجرا شد، بقیه کار وظیفه سیستم عامل است.
    ۲. سیستم عامل سیستم کال ها را با شماره می شناسد، نه با اسم. مثلا شماره سیستم کال sys_write در لینوکس ۴ است. ممکن است دو سیستم عامل مختلف برای یک سیستم کال شماره های متفاوتی انتخاب کنند، که در این صورت کد کامپایل شده برای یک سیستم عامل در سیستم عامل دیگر کار نخواهد کرد.
    ۳. سیستم عامل ها از قراردادهای مختلفی برای پاس کردن آرگومان های سیستم کال ها و همچنین دریافت مقدار بازگشتی سیستم کال استفاده می کنند. که در این صورت نیز کد کامپیال شده برای یک سیستم عامل در سیستم عامل دیگر کار نخواهد کرد.

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

    -----
    Hadi Moshayedi
    https://github.com/pykello/
    https://www.linkedin.com/in/hadi-moshayedi-337198b5

  6. #6

    نقل قول: استفاده توابع استاندارد c در ایجاد هسته سیستم

    ۲. سیستم عامل سیستم کال ها را با شماره می شناسد، نه با اسم. مثلا شماره سیستم کال sys_write در لینوکس ۴ است.
    همیشه اینطور نیست نسبت به نوع سیستم عامل نحوه فراخوانی "فراخوانهای سیستمی" (sys call) ها فرق می کنه. بعضی ها از messaging استفاده می کنند. برخی دیگه از وقفه ها و برخی دیگه حتی مستقیم آدرسها رو صدا می زنن. این کاملا وابسته به رویکرد سیستم عامل و نیازهایی که باید حلش کنه هست.

  7. #7
    کاربر جدید آواتار aksiya
    تاریخ عضویت
    مرداد 1395
    محل زندگی
    مشهد
    پست
    18

    نقل قول: استفاده توابع استاندارد c در ایجاد هسته سیستم

    من الان شروع به نوشتن کرنل کردم و فایل بوت لودر آماده است . مشکلی که دارم این است که می خوام از توابع و کتابخانه های minix3 برای توسعه هسته استفاده کنم و نمی دونم چگونه باید system call اون رو فراخوانی کنم.در ضمن اگه بخوایم از وقفه ها استفاده کنیم باید همه این توابع از نو نوشته شود یعنی از طریق برنامه نویسی اسمبلی این وقفه ها رو ایجاد کنیم.چند تا سوال هم از pswin داشتم اینکه هسته آراکس
    به صورت ریز هسته نوشته شده یا یکپارچه؟و فایلMakefile شامل چه اطلاعاتی است می شود خواهش کنم در مورد این فایل توضیح دهید؟
    با تشکر....

  8. #8

    نقل قول: استفاده توابع استاندارد c در ایجاد هسته سیستم

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

    https://barnamenevis.org/showthread.p...A7%D9%85%D9%84

  9. #9
    کاربر جدید آواتار aksiya
    تاریخ عضویت
    مرداد 1395
    محل زندگی
    مشهد
    پست
    18

    نقل قول: استفاده توابع استاندارد c در ایجاد هسته سیستم

    ممنون مقاله شما رو قبلا برسی و مطالعه کرده بودم و یک سری پیش زمینه از توسعه سیستم عامل ها دارم.در ضمن می دانم توسعه سیستم عامل کار آسانی نیست با تمام این مسائل من می خواهم ادامه دهم و اصلا برایم مهم نیست چه قدر طول بکشد .در ضمن به اسمبلی و زبان c آشنایی دارم . همچنین کتاب کامپیوتر ها x86 پنتیوم را مطالعه کردم.البته هنوز اول راه هستم شاید چند سال طول بکشد تا بتوانم به سطح دانش شما در این زمینه برسم.با تشکر....

تاپیک های مشابه

  1. استفاده از توابع Ufl Vb در کریستال ریپورت
    نوشته شده توسط vahidehrafati در بخش گزارش سازی با Crystal Report
    پاسخ: 2
    آخرین پست: جمعه 18 بهمن 1387, 14:23 عصر
  2. سوال در مورد هسته سیستم لینوکس
    نوشته شده توسط AriaGlobal در بخش توسعه‌ی لینوکس و نرم افزارهای آزاد
    پاسخ: 2
    آخرین پست: سه شنبه 26 آذر 1387, 23:19 عصر
  3. راهنمایی کوچیک درباره استفاده توابع , متغییرهای برنامه در محیط Fast Report
    نوشته شده توسط peym4ns در بخش ابزارهای گزارش سازی در دلفی
    پاسخ: 1
    آخرین پست: پنج شنبه 23 اسفند 1386, 17:03 عصر
  4. پاسخ: 8
    آخرین پست: پنج شنبه 21 دی 1385, 14:20 عصر
  5. استفاده توابع ویژوال بیسک در کریستال ریپورت
    نوشته شده توسط Payam_Programing در بخش گزارش سازی با Crystal Report
    پاسخ: 2
    آخرین پست: شنبه 09 آبان 1383, 23:04 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •