PDA

View Full Version : اولین کرنل من!



prpe26
پنج شنبه 11 آبان 1391, 14:57 عصر
با سلام.

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

لینک دانلود:

http://uplod.ir/y829yfkxa6bk/velsa.zip.htm

خب روش استفاده :

۱- نصب qemu-system :


sudo apt-get install qemu-system

۲- اجرای کرنل:


qemu-system-i386 -fda velsa.iso

یا :


qemu-system-i386 -fda velsa.flp

کرنل ۱۶ بیت هست و در زبان اسمبلی نوشته شده. محیط توسعه هم دبیان لینوکس بود. همچنین من این رو منطبق با مستندات MikeOS نوشتم و دوست دارم توسعش بدم.

prpe26
پنج شنبه 11 آبان 1391, 15:37 عصر
دوستان محترم دنبال توسعه و تبدیل کرنل به یک سیستم عامل هستم. نیاز دارم تا یک Application Userland خوب براش پیدا کنم. هرچیزی غیر از GNU (چون احتمالا نمونه تجاری و کدبسته هم خواهد داشت).

prpe26
یک شنبه 14 آبان 1391, 15:03 عصر
در ضمن :
١- كرنل در لينوكس نوشته ؛ كامپايل و تست شده
٢- حتما بعنوان فلاپي ديسك به مجازي ساز معرفي كنيد.

pswin.pooya
دوشنبه 15 آبان 1391, 23:43 عصر
سلام
اگر از روي مستندات mike os نوشتي. مطمئنا كرنل شما 32 بيت هست و نه 16. البته بايد بگم كه آموزشهاي مايك با يه كرنل واقعي خيلي فاصله و ناقص. من يكبار پيش هم به دوستان گفتم كه روي آموزشهاي نت تكيه نكنيد. ( و دليل هاي اونها رو هم شمردم). يكي از دوستان هم اصرار كرد و بعد از اينكه يه مقدار سعي كرد از جريان آموزش منحرف شه يه تغييرات كوچولو بده شكست خورد.

من خود هم روز اول با همين آموزشها شروع كردم. اما خيلي زود متوجه شدم كه اشتباهات زيادي وجود داره. اومدم اونها رو حل كنم كه باعث شد يه بار ديگه كل سيستم عاملم رو از اول بنويسم. الان هم به كد سيستم عامل من نگاه كنيد مي تونيد يه قسمتهايي از كد مايك و يا بقيه رو بينيد كه صراحتا توي كد به نويسنده اشاره كردم.

يه نمونه باز از اشكالات استفاده نكردن آمورشها از LDT (local descriptor table( هست. بعد از يه مدت خيلي راحت متوجه ميشيد كه GDT جوبگو نيست و بايد به هر فرايند توصيف كننده خودش رو بديد. اما به خاطر ديزاين اشتباه مجبور هستيد به اول بر گرديد و ...

prpe26
جمعه 26 آبان 1391, 00:55 صبح
بله من هم با کمی تغییر شکست خورد کارم :)

تنها دلیلی که از مستندات مایک استفاده کردم ساده و قابل فهم بودنش بود (به نسبت کتاب OS Design And Implementation) .

pswin.pooya
جمعه 26 آبان 1391, 13:11 عصر
من توی قسمت آموزش نوشتن سیستم عامل به یکسری از مطالبی که باید اونها رو قبل از نوشتن هسته بخونید اشاره کردم. متاسفانه قبل از نوشتن هسته باید در مورد تمامی علوم کامپیوتری حداقل اطلاعات متوسط داشته باشید. (درسهایی که توی دوره کارشناسی اراپه میشه). در حقیقت زمانی که مدرک کارشناسی رو دارن به شما می دن یعنی اینکه شما علم کافی برای طراحی سیستم های کامپیوتری رو دارید (یعنی یک مهندس هستید) و تحصیلات تکمیلی به منظور این هست که شما یه محقق علوم کامپیوتری بشید.

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


تنها دلیلی که از مستندات مایک استفاده کردم ساده و قابل فهم بودنش بود (به نسبت کتاب OS Design And Implementation) .
این مستندات فوقالعاده هستن و بدون اونها شروع یک کار اشتباه هست اما در کنار اونها بهتره کتابهای زیر رو مطالعه کنی:


مرتبط به زبان برنامه نویسی (توی این مورد کتاب x86 disassembly و gnu gcc complete reference رو پیشنهاد میکنم)
کتاب مرتبط با سخت افزار ( کتاب The Intel microprocessors نوشته barry b.bery رو پیشنهاد می کنم)
زبان اسمبلی ( در ابتدا کتاب PC assembly که به صورت pdf روی نت هست و بعد کتاب Protected mode software architecture رو پیشنهاد میکنم. و البته اگر تونستید کتابهای دیگه)
و در نهایت محیط توسعه‌ ( اگر لینوکس هست کتاب the Linux interface برای برنامه نویسی و فهم مفاهیم اولیه لینوکس و POSIX . و برای هسته لینوکس هم کتاب Linux kernel 3rd , و یا Linux kernel development 3th رو پیشنهاد می کنم. البته تسلط برنامه نویس روی خط فرمان و برنامه های لینوکسی هم یه بحث جدا هست که باعث قدرت هرچه بیشتر اون میشه. فهم هسته لینوکس هم می تونه توی یه دیزاین بهتر و ایده پیدا کردن نسبت به موضوع شما رو راهنمایی کنه)

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

prpe26
جمعه 26 آبان 1391, 14:38 عصر
ممنون آقا پویا :).

البته فعلا دبیرستانی هستم و خب تا کارشناسی راه زیادی رو در پیش دارم. در حال حاضر تمرکزم روی برنامه نویسی POSIX هست و با دو تن از دوستانم در حال طراحی و نوشتن یک شل یونیکس به نام EasyShell هستیم که برای کاربران تازه کار لینوکس / BSD / مک بتونه مفید واقع بشه. (در حقیقت در حال حاضر به فکر توسعه کرنل نیستیم و فقط به شل و ابزارهای جانبی فکر میکنیم) .

pswin.pooya
جمعه 26 آبان 1391, 22:39 عصر
البته فعلا دبیرستانی هستم و خب تا کارشناسی راه زیادی رو در پیش دارم. در حال حاضر تمرکزم روی برنامه نویسی POSIX هست و با دو تن از دوستانم در حال طراحی و نوشتن یک شل یونیکس به نام EasyShell هستیم که برای کاربران تازه کار لینوکس / BSD / مک بتونه مفید واقع بشه. (در حقیقت در حال حاضر به فکر توسعه کرنل نیستیم و فقط به شل و ابزارهای جانبی فکر میکنیم) .
اگر توي اين بازه سني اينقدر تونستي ئيشرفت كني واقعا عالي هست. و اگر ادامه بدي به جاهاي خوبي ميرسي.

نوشتن شل عاليه. اما بهتره يه ايده خوب براش داشته باشي و تسلط كافي به POSIX. اون كتاب the linux interface بهترين كتابي هست كه تا حالا من براي يادگيري POSIX ديدم. حتما بخونش

prpe26
جمعه 26 آبان 1391, 23:26 عصر
اگر توي اين بازه سني اينقدر تونستي ئيشرفت كني واقعا عالي هست. و اگر ادامه بدي به جاهاي خوبي ميرسي.

نوشتن شل عاليه. اما بهتره يه ايده خوب براش داشته باشي و تسلط كافي به POSIX. اون كتاب the linux interface بهترين كتابي هست كه تا حالا من براي يادگيري POSIX ديدم. حتما بخونش

البته کمی در مورد شلی که داریم روش کار میکنیم بخوام توضیح بدم به این شکل هست که کلا با دایرکتوری ها کار نداره (کلا cd توش معنی نمیده :لبخند: ) و کاربران تازه کار رو با دستورات پایه ای و عمیق یک سیستم یونیکس بیس آشنا میکنه. بعد از اون کاربران رو سوق میدیم به سمت Bash و Sh و هر شلی که خودشون دوست دارند (تقریبا توزیع لینوکس ما هم همینه.).

یا یک مدیر بسته یا بهتر بگم رابط کاربری متنی مدیر بسته که داریم مینویسیم که با دستورات یکسان در تمام Unix Variant ها مثل توزیع های لینوکس و BSD بتونه کار کنه و به این شکل کاربر نهایی ترسی از ترمینال نداشته باشه :لبخندساده:

e.shahidi
شنبه 02 دی 1391, 22:06 عصر
سلام مرسی از بابت لینک دانلود،می خواستم بدونم این کرنل در توزیع های دیگه کار نمی کنه؟ راستی می تونید یکم راج به سورسش توضیح بدید و این که چه قابلیت هایی داره؟

prpe26
یک شنبه 03 دی 1391, 20:07 عصر
این یه مثال ساده از یه سیستم عامل ساده در اسمبلی هست. قرار نیست جایگزین لینوکس یا هر کرنل دیگری بشه :چشمک:

aakh1361
یک شنبه 10 دی 1391, 18:25 عصر
برای یک نو جوان کار بزرگی تونستی انجام بدی همین که می تونی از این کدها سر در بیاری

همون طور که دوستمون گفت این کرنل شما 16 بیتی هست
1 - این کرنلت چیکار میکنه ؟ چه توابعی داره ؟
2 - با چه زبونی نوشتی ؟
2 - سورس کدت رو هم مایل بودی در دسترس قرار بده یک نگاه بهش بندازیم

aakh1361
یک شنبه 10 دی 1391, 18:45 عصر
چرا هجمش اینقدر کمه 466 byte !!!
چرا وقتی هم دانلود میشه برنامه های فشرده ساز نمیشناسند فایل رو با اینکه پسوندش زیپ هست ؟

prpe26
یک شنبه 10 دی 1391, 18:47 عصر
برای یک نو جوان کار بزرگی تونستی انجام بدی همین که می تونی از این کدها سر در بیاری

همون طور که دوستمون گفت این کرنل شما 16 بیتی هست
1 - این کرنلت چیکار میکنه ؟ چه توابعی داره ؟
2 - با چه زبونی نوشتی ؟
2 - سورس کدت رو هم مایل بودی در دسترس قرار بده یک نگاه بهش بندازیم

1- کار خاصی بلد نیست! در واقع مثال Hello world هست فقط :لبخند:

۲- اسمبلی (سینتکس های اینتل)

۳- mikeos.berlios.de

این آدرس سورسهای این کرنل رو داره :لبخند: یه جورایی برای درک عملکرد یک کرنل ، کدهای هسته (فقط هسته) مایک رو بازنویسی کردم.

prpe26
یک شنبه 10 دی 1391, 18:59 عصر
چرا هجمش اینقدر کمه 466 byte !!!
چرا وقتی هم دانلود میشه برنامه های فشرده ساز نمیشناسند فایل رو با اینکه پسوندش زیپ هست ؟

جمعا ۱۳ خط کد هست :).

فکر کنم بخاطر نوع فشرده سازی من دراوردی خودم بوده

IamOverlord
پنج شنبه 14 دی 1391, 01:25 صبح
اگه دوست داری با هم همکاری کنیم...
من هم یه مدتیه می خوام یه کاری تو مایه ی همین MikeOS و KolibriOS و ... بکنم. ولی یه نفره خیلی حال می خواد!

prpe26
پنج شنبه 14 دی 1391, 10:08 صبح
اگه دوست داری با هم همکاری کنیم...
من هم یه مدتیه می خوام یه کاری تو مایه ی همین MikeOS و KolibriOS و ... بکنم. ولی یه نفره خیلی حال می خواد!

سلام. خوشحال میشم :) ولی فعلا دوست دارم در زمینه شبه یونیکس کار کنم. به همین دلیل دارم کتاب تننباوم رو هم میخونم :) .

pswin.pooya
پنج شنبه 14 دی 1391, 11:05 صبح
سلام. خوشحال میشم :) ولی فعلا دوست دارم در زمینه شبه یونیکس کار کنم. به همین دلیل دارم کتاب تننباوم رو هم میخونم :) .
سعي كن كتاب مينيكس و زبان اصليش رو بخوني. من هم يه ترجمه فارسي دارم و هم يه انگليسي. با اينكه هر دو اونها يه كتاب هستن. اما انگليسيش خيلي بهتره. ويرايش انگليسي كتاب رو ميتوني بصورت آفست بيرون پيداش كني.

prpe26
پنج شنبه 14 دی 1391, 13:29 عصر
سعي كن كتاب مينيكس و زبان اصليش رو بخوني. من هم يه ترجمه فارسي دارم و هم يه انگليسي. با اينكه هر دو اونها يه كتاب هستن. اما انگليسيش خيلي بهتره. ويرايش انگليسي كتاب رو ميتوني بصورت آفست بيرون پيداش كني.

ممنون. انگلیسیش رو دانلود کردم. البته اول فارسیش رو میخونم . اینطوری فهم انگلیسیش هم راحت تر میشه