الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

دورة تصميم انظمة التشغيل

بدأه MohamedIBrahim في 16 مارس 2011 · 24 رد · 11,876 مشاهدة · في هندسة البرمجيات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمه الله وبركاته

اخباركم يا شباب الفريق اتمنى يكون الجميع بخير بما انى لدى وقت فراغ هذه الايام فقررت الاسهام باحدى الدورات

وهى دورة بسيطة لانشاء نظام تشغيل بسيط يكون نواة تعريفية للحلم العربى بعمل نظام تشغيل وان شاء الله بيكون كل اسبوع درسين

وارجو من الادارة الاعتراف بالدورة رسميا

الدرس الاول :

فى هذه الدورة سوف نتعرف كيفية بناء نظام التشغيل من الصفر ان شاء الله

ولتسهيل الدورة وجعلها مقدمة فقط سيكون نظام التشغيل خاصتنا mini ويطبع فقط جملة Arabic Dream of An Opreating System

الشئ الاول الذى علينا التفكير فيه عند تصميم نظام تشغيل هو نظام الاقلاع المسمى البيوس

لان CPU يقلع ويتم تحميله فى الوضع 16 BIT

لنستطيع عمل boot sector سوف نحتاج الى استخدام assembler وlinker من bin86 package

هناك طبعا اشياء اخرى وافضل

لكن فى هذه الدورة سنستخدم هذه الادوات السهلة

1- Boot sector (boot.s)

انا لن اقوم بكتابة كل السورس للملف لكى تتعرف اكثر على الملف وحتى لا يحدث كسل ولكى اسهل فهم الفكرة العامة فانا لست بصدد عمل نظام التشغيل الكامل الان

فى البداية علينا القيام بتعريف الثوابت العامة



START_TRACK = 0 - The track, we start reading from.

START_SECTOR = 2 - The sector, we will start reading the OS from

SYSSIZE = 10 - The size in sectors (1 sector = 512 byte)

FLOPPY_ID = 0 -The ID of the drive (0 - is first, 1 is second)

HEADS = 2 - Number of heads

SECTORS = 18 - Number of sectors for a floppy ( 18 for 1.44 Mb)
START_HEAD = 0 - The device head, we will be using.

التعليقات بالانجليزى لاننى لم اكتب فى حياتى تعليق بالعربى + فى مجال انظمة التشغيل هناك مصطلحات لا اعرف كيف اترجمها الى العربية وبما ان الدورة اساسا موجهة للمحترفين سيكون من المفترض ان يكونوا يجيدون الانجيليزية بمستوى متوسط على الاقل

نرجع الى موضوعنا

أثناء الاقلاع سيحدث ما يلى

BIOS loader سيقوم بقراءة الsector الاول من الFloppy ويضعه فى العنوان 0000:0x7c00 ويقوم بنقل التحكم اليه

سوف نقوم بالحصول عليه فى البداية يجب علينا ان نقوم بتحريك Lower الى العنوان 0000:0x600

ومن ثم نستكمل

وكل ما سنحتاجه بالفعل هو اقلاع النواة ل sector 2-12 على الtrack الاول من الفلوبى (floppy) الى العنوان 0x100:0000

لكى نقوم بالانتقال الى الوضع المحمى ويتم القفز الى بداية النواة (first rows of the kernel.) وبسبب هذا ستحتاج الى القليل من الثوابت الاخرى



INITSEG = 0x600 - Here we will move it

SYSSEG = 0x100 - Our kernel will go here

DATA_ARB = 0x92 - The definer of data segment for descriptor

CODE_ARB = 0x9A - The definer of code segment for descriptor
BOOTSEG = 0x7c00 - We will put the booting BIOS sector here

اولا نحتاج الى تحريك انفسنا الى المكان المناسب



xor ax,ax

mov ss,ax

mov sp, #BOOTSEG

mov si, sp

mov ds, ax

mov es, ax

sti

cld

move di, #INITSEG

mov cx, #0x100

repnz

movsw

jmpi go, #0 ; jump into new place of the boot sector , mark "go"

Now we have to configure data segments (es,ds)

go:

mov ax, #0xF0

mov ss,ax

mov sp, ax
0xF0:0xF0=0xFF0

mov ax, #0x60 ;we'll set data segments in 0x60

mov ds,ax

mov es,ax
cli

فى النهاية سيكون بمقدورنا الان عمل رسالة مخرجية لاننا نمتلك BIOS

نستطيع استخدام الفنكشن 0x13 من القطاع 0x10 نستطيع ايضا تجاهله والكتابة مباشرة الى Video memory

لكننا نمتلك فقط المساحة المسموح بها للبيوس هى 512 bytes وهى ليست ابدا بالمساحة الكبيرة وسوف نقوم الاعتماد على شئ اخر

mov cx,#18

mov bp,#boot_msg

call write_message

الفنكشن write_message تبدو هكذا



push bx

push ax

push cx

push dx

push cx

mov ah, #0x03; read the current cursor position, so that we don't output the message anywhere.

xor bh,bh

int 0x10

pop cx

mov bx,#0x0007 ; parameters of outputted symbols: videopage 0, attribute 7 (black and grey)

mov ax,#0x1301 ; outputting prompt and moving cursor

int 0x10

pop dx

pop cx

pop ax

pop bx

ret
write_message:

والرسالة هكذا



.byte 13,10
.ascii "Booting Arabic Dream of An Opreating System..."
.byte 0
boot_msg:

هذا افضل بكثير من كتابة Helloworld

وهكذا قد امتلكنا ال Loader الخاص بنظامنا والى هنا ايضا ينتهى الدرس الاول

والى اللقاء فى درس جديد وارج وان يكون وقتها قد تم الاعتراف بالدورة رسميا من الادارة

والسلام عليكم ورحمه الله وبركاته

9

GoodBye

#2

قد سألنى احد اصدقائى عندما اخبرته بنيتى عن عمل الدورة

عن لماذا معظم الدورات والدروس الاجنبية وكل الدروس والمراجع العربية الناد تواجدها بالاساس

تتكلم عن انظمة التشغيل فى الوضع console او الوضع النصى ولماذا لا نتطرق الى جرافيكس او API للنظام

وقد قال لى ارجو ان تكون دورتك تتكلم فى جزء منها عن ذلك

وافترض ان منكم من سيٍقول هذا عاجلا ام اجلا

اولا انا معرفتى بAPI ليست بقدر الوضع النصى نظرا لانى الحمد لله لدى مراجع وكتب ومعلومات كبيرة

لكن اخذت دورة اونلاين تتكلم عن هذا والحمد لله اصبحت لدى خبرة فيه لذا فى مرحلة متقدمة من الدورة سأتكلم عن 256-Color VGA Programming in C

وتحياتى لكم

5

GoodBye

#3

ملحوظة اثناء تصميم نظم التشغيل لا يمكننا ابدا استخدام مكتبات لغات البرمجة

حتى مكتبات لغة C++/C

ليه الرخامة دى يا محمد ؟

لآن ببساطة المكتبات دى بتبقى موجودة فى نظام التشغيل لما تكون بتبرمج تطبيق على Windows /Linux/mac الخ .........

أنما انت تصمم نظام تشغيل :)

وبكل سهولة وبرد اعصاب اقولها لك

انت من يجب ان يقوم بعمل هذه المكتبات فيما بعد :cool:

3

GoodBye

#4

بارك الله فيك اخي محمد والله وحده يعلم كم كنت منتظرا لهده الدورة و إن شاء الله ساكون من الاوائل المتابعين لهده الدورة و انا متحمس لها جدا و لكن الا تعتقد انه كان يجب عليك ان تبدا هده الدورة بما نحتاج اليه اولا . :wacko: :sad: و ما هي النواة التي سوف نستخدمها هل هي linux kernel مثلا :huh: و شكرا .

تم تعديل هذه المشاركة بواسطة nickelodeon في 16 مارس 2011 في 15:01

منتداى الخاص : منتدى البرمجة و تطوير المواقع و المنتديات , هندسة البرمجيات و خوارزمياتها ... :

nick.mam9.com

و واحد اخر للاعلان المجاني , اعلن معنا عن مواقعك او منتدياتك او مشاريعك من دون تسجيل :

google-pub.mam9.com

#5

شكرا لك أخي محمد على هذا المجهود الطيب و هذا الموضوع الهائل

و ندعو الله ان يوفقك في ما فيه الخير للجميع

1
#6
nickelodeon كتب:

بارك الله فيك اخي محمد والله وحده يعلم كم كنت منتظرا لهده الدورة و إن شاء الله ساكون من الاوائل المتابعين لهده الدورة و انا متحمس لها جدا و لكن الا تعتقد انه كان يجب عليك ان تبدا هده الدورة بما نحتاج اليه اولا . :wacko: :sad: و ما هي النواة التي سوف نستخدمها هل هي linux kernel مثلا :huh: و شكرا .

اهلا اخى الحبيب

نحن فى الدورة نقوم ببناء النظام من الصفر اى سنطور النواة الخاصة بنا

ولن نحتاج اشياء كثيرة ومعظم الاشياء وضعتها فى الموضوع اكتب نظام التشغيل الخاص بك

وفى حالة استخدامنا لاى ادوات او اشياء ساقوم بوضعها ومجانا ان شاء الله

وان شاء الله تستفيد من الدورة

kaizuku كتب:

شكرا لك أخي محمد على هذا المجهود الطيب و هذا الموضوع الهائل

و ندعو الله ان يوفقك في ما فيه الخير للجميع

العفوا اخى الحبيب وجزاك الله خيرا على تشجعيك ومروك الجميل

GoodBye

#7

شكرا لك اخي و لكن اريد معرفة اين ساضع الاكواد :wacko: هل في النوت باد :unsure: و باي امتداد سوف احفظها :mellow: هل ساحفظ الملف باسم boot.s , السؤال هو باي برنامج سوف اكتب الكود و هل سنقوم بكتابة التعليقات مع الكود ايضا ؟ كما ارجو في المرة القادمة ان تقوم بشرح الكود لانني مبتدا في هدا المجال و ان كانت هده الدورة موجهة اساسا للمحترفين :unsure: و جزاك الله الف خير و جعله الله في ميزان حسناتك . :happy:

تم تعديل هذه المشاركة بواسطة nickelodeon في 16 مارس 2011 في 20:59

منتداى الخاص : منتدى البرمجة و تطوير المواقع و المنتديات , هندسة البرمجيات و خوارزمياتها ... :

nick.mam9.com

و واحد اخر للاعلان المجاني , اعلن معنا عن مواقعك او منتدياتك او مشاريعك من دون تسجيل :

google-pub.mam9.com

#8
nickelodeon كتب:

شكرا لك اخي و لكن اريد معرفة اين ساضع الاكواد :wacko: هل في النوت باد :unsure: و باي امتداد سوف احفظها :mellow: هل ساحفظ الملف باسم boot.s , السؤال هو باي برنامج سوف اكتب الكود و هل سنقوم بكتابة التعليقات مع الكود ايضا ؟ كما ارجو في المرة القادمة ان تقوم بشرح الكود لانني مبتدا في هدا المجال و ان كانت هده الدورة موجهة اساسا للمحترفين :unsure: و جزاك الله الف خير و جعله الله في ميزان حسناتك . :happy:

ان شاء الله اخى

1

GoodBye

#9

وأنا من متابعينك أخي الكريم

ولكن سؤال

هل يتوجب علي أن أتعلم إسمبلي وأكون فيه بمستوى متقدم حتى أستطيع المتابعة

وأين سنضع الكود؟

الله أكبر الله أكبر الله أكبر لآ إله إلا الله الله أكبر الله أكبر ولله الحمد

#10
KV2010 كتب:

وأنا من متابعينك أخي الكريم

ولكن سؤال

هل يتوجب علي أن أتعلم إسمبلي وأكون فيه بمستوى متقدم حتى أستطيع المتابعة

وأين سنضع الكود؟

المفترض اساسا ان يكون لديكك خبرة بالاسمبلى

اخى الحبيب تابع الشرح

معظم الدورة اقوم مثلا بعمل Boot.s ,Krenal.c

يمكنك استخدام اى محرك كتابة مثل الNotpad فى الويندوز

GoodBye

#11

ياه الله أكبر

بارك الله بك

ان شاء الله حتابع الدورة مع اني نسيت لاسمبلي تماما

بس ححاول

شكرا يا بطل

إذا نظــرتَ نيـوب اللـّيـثِ بـارزةً         فـلا تظــنَنَ أَنَّ اللـّيـــثَ يبْتسـِـــمُ


 


 


رسم المخططات البيانية بواسطة الجافا


 


كتاب تحليل وتصميم نظم المعلومات


#12
vector_ever كتب:

ياه الله أكبر

بارك الله بك

ان شاء الله حتابع الدورة مع اني نسيت لاسمبلي تماما

بس ححاول

شكرا يا بطل

العفوا اخى الحبيب وان شاء الله تستفيد من الدورة

GoodBye

#13

الله يحفظك يا غالي اشكرك جدا :clapping:

#14
اناكوندا كتب:

الله يحفظك يا غالي اشكرك جدا :clapping:

على الرحب والسعة اخى الحبيب

GoodBye

#15

عاوز اسئل عن لغة البرمجة اللي مكتوب بيها الكود ؟؟ وهل هي الاسيمبلي ؟؟ وكيف يمكن تعلمها ؟؟

وهل يكفي الاسمبلي فقط لصنع نظام تشغيل كامل

#16
Mohammed Mah كتب:

وهل هي الاسيمبلي ؟؟

نعم هى الاسمبلي

Mohammed Mah كتب:

وكيف يمكن تعلمها ؟؟

راجع هذا الرابط

/index.php?showtopic=51802

وتابع دورة الاخ الكريم Z3r0n3

/index.php?showforum=313

Mohammed Mah كتب:

وهل يكفي الاسمبلي فقط لصنع نظام تشغيل كامل

نعم تكفي لكنها تحتاج الى مهارة وخبرة عالية

بالاضافة الى مجهود اكثر

ولا ينصح بذلك

GoodBye

#17

بارك الله فيك أخي محمد،و إن شاء الله يجعلها في ميزان حسناتك.

نحن بصدد القيام بعملية برمجة نظام تشغيل عربي خالص،و كنا محتاجين هذه الدورة فعلا،إن كان بإمكانك الإنضمام لنا سنكون شاكرين لك

دعوة، برمجة نظام تشغيل الحاسب

تم تعديل هذه المشاركة بواسطة Pr ChaOS في 14 مارس 2012 في 19:12

أضخم دورة تعليم إختبار الإختراق في العالم العربي


هاكركاديمي


نصلح ما أفسده المخربون

#18

ارجو ان تقبلوني عضوة جديدة

#19

نعم اخي محمد عدم امكانية استخدام اي من المكتبات المعروفه نوعا ما يصدمك للمره الاولى ولكن ما يريحك هو انه توجد implementations جاهزة يمكنك تنزيلها وبذلك لن تعيد اختراع العجله

موضوع رائع وكما عهدتك فانت مثابر

تحياتي

1

No intellectual battle was ever won through retreat
You do not watch Gintama? Dude, you are missing a lot!


صورةmsrgb1485.gif ocajavase7programmerclr.gif

#20

ربنا يحفظك اخى محمد وجزاك الله كل خير على ما تقدمه

تم تعديل هذه المشاركة بواسطة skysat77 في 4 يوليو 2012 في 16:07

#21

شكرااااااااااااااا

جزاك الله خيرا

#22

مرحبا انا مشتركة جديدة واتمنى يا اخي محمد ان تساعدني في مشروع التخرج ...فمشروعي هو(design and implementation translation system) فهل هذا المشروع هو تصميم نضام تشغيل (مشرفة البحث فقط قالت لي انه حول انظمة التشغيل ولم اعرف ما هو قصدها)أرجو المساعدة :cry:

#23
zahraa@ كتب:

مرحبا انا مشتركة جديدة واتمنى يا اخي محمد ان تساعدني في مشروع التخرج ...فمشروعي هو(design and implementation translation system) فهل هذا المشروع هو تصميم نضام تشغيل (مشرفة البحث فقط قالت لي انه حول انظمة التشغيل ولم اعرف ما هو قصدها)أرجو المساعدة :cry:

أختنا زهرة، هذا الموضوع لا علاقة له بموضوع تخرجك، فهذا عن كيفية تطوير نظم التشغيل (هذه بداية بسيطة جدا) أما مشروع تخرجك فهو تصميم وانجاز نظام ترجمة وليس نظام تشغيل. أي تطبيق أو برنامج هدفه الترجمة، لكن عليك معرفة متطلبات المشروع وإلى أي مدى تكون مميزاته المقصودة، وهل المقصود ترجمة اللغات؟ أم ماذا بالضبط.

1

" إن الله كتب الإحسان على كل شيء"

::

الإرادة ... تحقق السيادة.

#24

اشكرك اخي محمد كثيراً على هذه المعلومات  :ty:

وان شاء الله سأستفسر أكثر من مشرفة البحث ربنا يحفضك ان شاء الله .

#25

بارك الله فيك على الموضوع

مواضيع مشابهة