PDA

View Full Version : طراحی سیستم عامل



BitMap
جمعه 25 فروردین 1385, 05:19 صبح
چگونه کرنل را بار کنم
البته بصورت فایل

و

چگونه فایل اجرایی را اجرا کنم(در سیستم عملم)

Delphi Skyline
جمعه 25 فروردین 1385, 11:05 صبح
میتونید اونو به صورت BootDisk در بیارید . مثل menute OS

BitMap
جمعه 25 فروردین 1385, 11:25 صبح
عزیزم می دونم
می خواهم پس قرار گرفتن در حافظه کرنل را بار کنم
یعنی:
BootSector.Bin --------------> 07C00h
بعدش بوت سکتور کرنل را خوانده در حافظه قرار بده بعد هم
کنترل اجرا را به اون بده

ok

aakh1361
جمعه 25 فروردین 1385, 22:12 عصر
شما به این ادرس مراجه کن
http://www.persiasecure.com/OS/
در قسمت مقالات مقاله چگونگی ساخت bootloader که توانایی خواندن fat12 را دارد مترجم رو مطالعه کنید
اگر مشکلی بود در خدمتم

BitMap
دوشنبه 28 فروردین 1385, 04:33 صبح
مرسی
3 تا سوال دارم
1-آن سگمنت هایی که اول برنامه تنظیم می کنیم برای اجرای bootstrap است
یا برنامه ای که قرار است بار کند
2-چرای برای خواندن جدول fat و Directory root آن را باید به حافضه بار کرد
3-آیا همینگونه می توانم برنامه های اجرایی سیستم عاملم را اجرا کنم

aakh1361
دوشنبه 28 فروردین 1385, 17:13 عصر
1 - سگمنت نیست افست هست و برای اجرای bootstrap است برنامه ای که قرار است بار کند رو خود بایوس اتوماتیک اجرا می کنه و کارش خوندن bootstrap و اوردن اون به ادرس 7C00 و اجرای اون است پس باید برنامه ما ادرس داخلیش با ادرسی که بایوس bootstrap رو به اونجا می بره یکی باشه که یرنامه دچار فرو پاشی نشه

2 -در واقع FAT یک برنامه مدیرت فایل هست که در هسته اجرا میشه و به شما اجازه میده اطلاعاتتون رو به صورت فایل ذخیره کنید این برنامه مدیریت فایل (FAT) در ویندوز تعریف شده اما وقتی شما سیستم عامل می نویسید باید برای استفاده از اطلاعاتتون که در داریوی ذخیره کردید و به صورت FAT هست باید برای اینکار دوباره برنامه مدیریت فایل FAT رو از اول بنویسید یعنی شما وقتی دارید سیستم عامل می نویسید شما هیچ یک از امکاناتی که در ویندوز وجود داره رو نمی تونید استفاده کنید و باید خودتون این امکانات رو برای کرنل فراهم کنید


3 - نه برنامه شما نباید از وقفه ها و امکانات سیستم عاملی که ازش استفاده می کنید (روش برنامه نویسی می کنید) استفاده بکنه ! و برنامه Exe شما هیچ وقت در بوت سکتور اجرا نمیشه و این فرمت Exe برای سیستم عاملی که دارید ازش استفاده می کنید (ویندوز)تعریف شده اما وقتی شما دارید سیستم عامل می نویسید این فرمت شناخته شده نیست و باید برای اینکار تو هسته سیستم عاملتون این فرمت رو تعریف کنید

BitMap
سه شنبه 29 فروردین 1385, 04:45 صبح
1-منظور من:

cli
xor ax, ax ; initialize all the necessary
mov ds, ax ; registers.
mov es, ax
mov ss, ax
mov sp, 0xFFFF ; Stack..
sti
2-؟
3-منظورم به روش بایوس بود بار کردن کد در حافظه و پرش به ابتدای کد
چرا در بعضی کدها
org 7c00
است ولی در بعضی دیگر
org 0
آیا در حالت دوم برنامه قادر به اجرا شدن هست.
لطفا در مورد جست و جوی فایل بعد از بار کدن FAT وRootDirectory توضیح دهید.
مقاله ای که aakh1369 معرفی کردند را خواندم ولی در این مورد زیاد توضیح نداده بودند.


================================================== ===========
[BITS 16] ; the bios starts out in 16-bit real mode
[ORG 0] ; Data offset = 0

start:
mov ax,0x7c0 ; BIOS puts us at 0:07C00h, so set DS accordinly
mov ds,ax ; Therefore, we don't have to add 07C00h to all our data

cli ; clear interrupts while we setup a stack
mov ax,0x9000 ; this seems to be the typical place for a stack
mov ss,ax
mov sp,0xffff ; let's use the whole segment. Why not? We can :)
sti ; put our interrupts back on

jmp $

times 510-($-$$) db 0
dw 0xAA55

================================================== ===========
و این کد
================================================== ===========

[BITS 16]
[ORG 0x7C00]

start:
cli
xor ax, ax ; initialize all the necessary
mov ds, ax ; registers.
mov es, ax
mov ss, ax
mov sp, 0xFFFF ; Stack..
sti

jmp $

times 510-($-$$) db 0
dw 0xAA55
================================================== ===========

aakh1361
سه شنبه 29 فروردین 1385, 22:41 عصر
-منظور من:

cli
xor ax, ax ; initialize all the necessary
mov ds, ax ; registers.
mov es, ax
mov ss, ax
mov sp, 0xFFFF ; Stack..
sti
برای bootstrap است



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


چرا در بعضی کدها
org 7c00
است ولی در بعضی دیگر
org 0
آیا در حالت دوم برنامه قادر به اجرا شدن هست
خیر
برنامه به عنوان بوت سکتور نمی تونه اجرا بشه




[ORG 0] ; Data offset = 0


[ORG 0x7C00] ; Data offset = 0x7C00



mov ax,0x7c0

mov ax,0x7c00
مثل اینکه اشتباه تایپی کردن

در نوشتن بوت سکتور تمام سگمنت های باید در یک ادرس باشند حالا اگر CS در یک ادرس نبود مشکلی نیست ولی بقیه سگمنتها باید یکی باشه

BitMap
چهارشنبه 30 فروردین 1385, 04:36 صبح
مرسی
در مورد جست جو در FAT
من آن بخش را می خواهم که پس از یافتن اولین کلاستر فایل شروع می وشود
چرا کلاستر در 3 ضرب و بر دو تقسیم می شه(FAT12) و زوج و فرد ب.دن به چه دردی می خوره؟

aakh1361
چهارشنبه 30 فروردین 1385, 14:01 عصر
در این مورد فعلا اطلاعاتی ندارم (تا چند وقت دیگه روش کار می کنم)

BitMap
پنج شنبه 31 فروردین 1385, 04:29 صبح
شرمنده یه مقدار در مورد a20 و فوایدش توضیح بده
چرا به وسیله ی پورت کیبورد فعالش می کنن؟

aakh1361
جمعه 01 اردیبهشت 1385, 00:01 صبح
چون تا a20 فعال نشه حتی اگر به حالت محافظت شده رفته باشی باز هم نمی تونی به بیش از 1 مگابایت دسترسی داشته باشی در واقع فعال کردن a20 قابلیت ادرسی دهی بیشتر از 1مگابایت رو به CPU می ده

BitMap
جمعه 01 اردیبهشت 1385, 06:03 صبح
ممنون
GDT و LDT و توصیفگر را یه توضیح کوچولو بدی خیلی ممنون میشم
(مقاله زیاد خواندم-برای persian OS-را هم خوانده ام ولی زیاد نفهمیدم)

aakh1361
شنبه 02 اردیبهشت 1385, 00:05 صبح
ممنون
GDT و LDT و توصیفگر را یه توضیح کوچولو بدی خیلی ممنون میشم
(مقاله زیاد خواندم-برای persian OS-را هم خوانده ام ولی زیاد نفهمیدم)

سلام
شما سوال تون رو اونجا مطرح کردید ؟

BitMap
شنبه 02 اردیبهشت 1385, 04:22 صبح
حالا یخواهم شما جواب بدی اشکالی داره؟

BitMap
شنبه 02 اردیبهشت 1385, 04:25 صبح
ببینید من الان می وانم برای حالت حقیقی os را بنویسم
تنها مشکلم مفاهیم pmode است.مثل GDT,LDT,توصیفگرهاوA20
اگه شما خوبی کنید و راهنمایی کنید مطمئن باشید خدا هم یه جوری
کمکتون می کنه.
اگه یه سایت کامل هم دادای هم ممنون می شم

aakh1361
یک شنبه 03 اردیبهشت 1385, 00:51 صبح
ببینید من الان می وانم برای حالت حقیقی os را بنویسم
تنها مشکلم مفاهیم pmode است.مثل GDT,LDT,توصیفگرهاوA20
اگه شما خوبی کنید و راهنمایی کنید مطمئن باشید خدا هم یه جوری
کمکتون می کنه.
اگه یه سایت کامل هم دادای هم ممنون می شم
عزیزم شما اگر سولات تون رو اونجا (گروه Persian Os) مطرح کنید حتما جواب های سوالات شما رو به طور کامل می دهند

در ضمن اگر برای حالات حقیقی (Real Mode) برنامه نویسی می کنی به مفاهیم که گفتی نیازی نداری چون اینها که گفتی در حالات محافظت شده (32 بیتی) کاربرد دارند
موفق باشی

BitMap
یک شنبه 03 اردیبهشت 1385, 04:45 صبح
ییخشید
ایمیل باید بدم به گروه
راستی چرا خود شما جواب نمی دید
اینقدر که گفتید از گروه بپرس می تونستید یه جاش
یه توضیح کامل بدید . اگه گروه می تونست خوب توضیح بده
از مقالاتش می شد فهمید
گرچه از مقاله ای که لمه به کلمه ترجمه شده(بدون درک) انتظار بشتری نمی ره

mehrzad007
دوشنبه 04 اردیبهشت 1385, 22:21 عصر
osdever.net
برو اینجا هر چی بخوایی با مثال هست !

netspc
دوشنبه 18 اردیبهشت 1385, 11:10 صبح
سلام خدمت همگی
من netspc هستم دوست love coder
امیدوارم بتونیم به دوستان کمکی کرده باشیم
در مورد سوالات اساسی :
فقط در گروه جواب داده میشه به این دلیل که این سوالات جنبه عمومی دارد و باید آرشیو شود برای استفاده دیگران

netspc
دوشنبه 18 اردیبهشت 1385, 11:17 صبح
سلام بیت مپ فکر کنم در رابطه با LDT و GDT توضیح داده شده است.
دلیلی که میبینی نزدیک به 1 ماه هست که مقاله ای ندادیم بعلت رفتن من به هندوستان و نوشتن یک کتاب میباشد. والا چندین مقاله آماده که خود لاو و مستر زحمتش رو کشیدند آماده هست و بزودی بر روی سایت قرار میگیرد.
درضمن بهتر نیست عوض اشکالات بنی اسرائیلی گرفتن کمک کنید ;)

netspc
دوشنبه 18 اردیبهشت 1385, 11:18 صبح
راستی لاو بهتر نبود این تاپ رو توی قسمت سیستم عامل میذاشتی؟؟؟

aakh1361
دوشنبه 18 اردیبهشت 1385, 11:29 صبح
راستی لاو بهتر نبود این تاپ رو توی قسمت سیستم عامل میذاشتی؟؟؟
قصد این کار رو داشتم اما فراموشش کردم !

aakh1361
دوشنبه 18 اردیبهشت 1385, 11:30 صبح
در ضمن به سایت برنامه نویسی خوش امدی نت جان

netspc
دوشنبه 18 اردیبهشت 1385, 13:03 عصر
راستی توی امضا بنویس که سوالات عمومی فقط در گروه جواب داده میشه که دیگه از اینجور درگیریها پیش نیاد :)