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

نام تاپیک: نوشتن سیستم عامل کوچک

  1. #1

    نوشتن سیستم عامل کوچک

    اگه بخوایم یک سیستم عامل کوچک بنویسیم .چطور باید برنامه مون رو با زبان c کامپایل کنیم که به حالت باینری در بیاد؟

  2. #2

    نقل قول: نوشتن سیستم عامل کوچک

    https://github.com/cfenollosa/os-tutorial این بهتون کمکی میکنه؟

  3. #3

    نقل قول: نوشتن سیستم عامل کوچک

    نقل قول نوشته شده توسط Mah-ra مشاهده تاپیک
    اگه بخوایم یک سیستم عامل کوچک بنویسیم .چطور باید برنامه مون رو با زبان c کامپایل کنیم که به حالت باینری در بیاد؟
    کتابخانه های زبان C بر اساس سرویس ها و امکاناتی که سیستم عامل در اختیارشون میذاره طراحی شدن و بدون اونها اجرا شدنی نیستن، به همین جهت خروجی کامپایلر هم عموما نمیتونه مناسب اینکار باشه.
    در برخی جاها مجبور می شوید با Inline Assembly که برخی کامپایلر ها پشتیبانی اش می کنند روتین های متعارف C مثلا برای نمایش متن یا دریافت کلید رو با سرویس های BIOS جایگزین کنید تا در یک سیستم عامل مستقل قابل اجرا باشن.
    مخصوصا فایل اجرایی exe بحاطر ساختارش مناسب استفاده در یک سیسنم عامل مستقل نیست. چون فایل exe برای اجرا شدن به سیستم فایل، سیستم مدیریت حافظه و ... احتیاج داره که اونها رو شما نساختید.

    در درجه اول بهتره یک سیستم عامل مستقل و واقعی نسازید. یعنی یک سیستم عامل مجازی بسازید، سیستم عامل تون وابسته به امکانات سیستم عامل واقعی ویندوز یا داس یا ... باشه و فقط تحت اونها اجرا شدنی باشه.
    اینطوری بخش عمده ای از حجم کار تون کم میشه و میتوانید روی کلیات سیستم عامل دلخواه تون تمرکز کنید، نه جزئیات فنی.
    اما اگر واقعا بخواهید یک سیستم عامل مستقل بسازید، برخی کامپایلر های قدیمی ++C / C تحت DOS مخصوصا قدیمی تر ها از مدل حافظه Tiny پشتیبانی می کنند که خروجی فایل شون com است، نه exe
    فایل com ساختار خیلی خیلی ساده ای داره و تقریبا هر بایتی که ازش بردارید رو میشه حتی در بخش بوت سیستم درج کرد.

    اصولا برای برنامه نویسی که میخواد دستورات زبان ماشین رو از داخل فایل اجرایی استخراج کنه فایل com مناسب ئه، نه exe. و در نظر بگیرید کامپایلر C بصورت عادی انتظار نداره که شما باهاش سیستم عامل طراحی کنید و کدی که هیچگونه وابستگی به سیستم عامل نداشته باشه تولید نمی کنه، برخی روتین هایی که در اینجور فایل ها می بینید، دارند از سرویس های سیستم عامل (مثلا DOS) استفاده می کنند و اگر بخواهید به عنوان کد یک سیستم عامل مستقل ازشون استفاده کنید اجرا شدنی نیستند.
    بهتره فقط زمانی سراغ نوشتن یک سیستم عامل مستقل و واقعی برید که برای طراحی دونه دونه اجزاء سیستم عامل زمان کافی و ایده و تخصص داشته باشید.

  4. #4

    نقل قول: نوشتن سیستم عامل کوچک

    ممنون از پاسخ.
    یعنی نمیشه کامپایلر ها مثلا gcc یا openwatcom رو جوری تنظیم کرد که کد مستقل از سیستم عامل تولید کنه البته بدون استفاده از کتابخانه های c

  5. #5

    نقل قول: نوشتن سیستم عامل کوچک

    نقل قول نوشته شده توسط the king مشاهده تاپیک
    کتابخانه های زبان C بر اساس سرویس ها و امکاناتی که سیستم عامل در اختیارشون میذاره طراحی شدن و بدون اونها اجرا شدنی نیستن، به همین جهت خروجی کامپایلر هم عموما نمیتونه مناسب اینکار باشه.
    در برخی جاها مجبور می شوید با Inline Assembly که برخی کامپایلر ها پشتیبانی اش می کنند روتین های متعارف C مثلا برای نمایش متن یا دریافت کلید رو با سرویس های BIOS جایگزین کنید تا در یک سیستم عامل مستقل قابل اجرا باشن.
    مخصوصا فایل اجرایی exe بحاطر ساختارش مناسب استفاده در یک سیسنم عامل مستقل نیست. چون فایل exe برای اجرا شدن به سیستم فایل، سیستم مدیریت حافظه و ... احتیاج داره که اونها رو شما نساختید.

    در درجه اول بهتره یک سیستم عامل مستقل و واقعی نسازید. یعنی یک سیستم عامل مجازی بسازید، سیستم عامل تون وابسته به امکانات سیستم عامل واقعی ویندوز یا داس یا ... باشه و فقط تحت اونها اجرا شدنی باشه.
    اینطوری بخش عمده ای از حجم کار تون کم میشه و میتوانید روی کلیات سیستم عامل دلخواه تون تمرکز کنید، نه جزئیات فنی.
    اما اگر واقعا بخواهید یک سیستم عامل مستقل بسازید، برخی کامپایلر های قدیمی ++C / C تحت DOS مخصوصا قدیمی تر ها از مدل حافظه Tiny پشتیبانی می کنند که خروجی فایل شون com است، نه exe
    فایل com ساختار خیلی خیلی ساده ای داره و تقریبا هر بایتی که ازش بردارید رو میشه حتی در بخش بوت سیستم درج کرد.

    اصولا برای برنامه نویسی که میخواد دستورات زبان ماشین رو از داخل فایل اجرایی استخراج کنه فایل com مناسب ئه، نه exe. و در نظر بگیرید کامپایلر C بصورت عادی انتظار نداره که شما باهاش سیستم عامل طراحی کنید و کدی که هیچگونه وابستگی به سیستم عامل نداشته باشه تولید نمی کنه، برخی روتین هایی که در اینجور فایل ها می بینید، دارند از سرویس های سیستم عامل (مثلا DOS) استفاده می کنند و اگر بخواهید به عنوان کد یک سیستم عامل مستقل ازشون استفاده کنید اجرا شدنی نیستند.
    بهتره فقط زمانی سراغ نوشتن یک سیستم عامل مستقل و واقعی برید که برای طراحی دونه دونه اجزاء سیستم عامل زمان کافی و ایده و تخصص داشته باشید.
    البته من یک سوال دیگم داشتم اینکه چگونه از سخت افزار مثلا کارت گرافیک در اسمبلی در حالت protected mode استفاده کرد .
    مثلا به جای استفاده از صفحه نمایش در حالت 80*25 از حالت hd استفاده کرد در سیستم عاملی که می خوایم بنویسیم

  6. #6

    نقل قول: نوشتن سیستم عامل کوچک

    نقل قول نوشته شده توسط Mah-ra مشاهده تاپیک
    ممنون از پاسخ.
    یعنی نمیشه کامپایلر ها مثلا gcc یا openwatcom رو جوری تنظیم کرد که کد مستقل از سیستم عامل تولید کنه البته بدون استفاده از کتابخانه های c
    چیزی در این مورد جایی ندیدم که خروجی کامپایلر C کد های زبان ماشین پردازنده های خانواده خاصی مثل x86 باشه ولی مستقل از سیستم عامل باشه.

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

    نقل قول نوشته شده توسط Mah-ra مشاهده تاپیک
    البته من یک سوال دیگم داشتم اینکه چگونه از سخت افزار مثلا کارت گرافیک در اسمبلی در حالت protected mode استفاده کرد .
    مثلا به جای استفاده از صفحه نمایش در حالت 80*25 از حالت hd استفاده کرد در سیستم عاملی که می خوایم بنویسیم
    از VESA BIOS Extension استفاده خواهید کرد، از protected mode بخوبی پشتیبانی می کنه. اینم مستنداتش :
    VESA BIOS Extension 3.0

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

  1. پاسخ: 1
    آخرین پست: دوشنبه 09 مرداد 1391, 12:09 عصر
  2. سوال: هسته سیستم عامل و سیستم عامل و سیستم عامل نویسی
    نوشته شده توسط mehdy.programmer در بخش توسعه‌ی هسته‌ی سیستم عامل
    پاسخ: 3
    آخرین پست: پنج شنبه 15 تیر 1391, 18:57 عصر
  3. پاسخ: 1
    آخرین پست: پنج شنبه 24 فروردین 1391, 23:37 عصر
  4. پاسخ: 10
    آخرین پست: شنبه 05 فروردین 1391, 11:37 صبح

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

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