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

تنظيم فريق لكتابة نواة نظام تشغيل جديد

رائج
بدأه OuahabiX في 19 يوليو 2009 · 59 رد · 9,242 مشاهدة · في هندسة البرمجيات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم أوّلا و ثانياً أرجو أن يأخذ الموضوع بعين الإعتبار.

رأيت أنّ الموضوع طرح كذا مرّة في المنتدى و غير هذا المنتدى و لكن للأسف لم يجد أي تجاوب و ذلك لأسباب معيّنة.

و سأبدأ أوّلا بنصح كلّ مثبّط أن يهتمّ بشؤون أخرى تعود عليه بالنّفع خيرا له من تضييع وقته في إبعاد الكثير من النّاس, فالأصل السعي من أجل تحقيق أي أمر فيه خير لا السعي لوأده قبل ميلاده.

ثانيا, أريد من المبرمجين أن يفكّروا بجديّة من دون عاطفة, فيتحمّس اليوم و ينسحب غدا.

ثالثاً, كتابة نظام تشغيل ليس بالأمر السّهل و قد يأخذ حتى سنين طويلة, فمثلا نظام رياكت-أوس إنطلق من منتصف التسعينات أو قبلها و لم يحقق نجاحا إلا بعد 2005, توجد أنظمة أخرى بدأ صوتها يذيع في الأرجاء بعد تضاعف عدد مطوّريها مثل كاليبري-أوس, مونيوت-أوس, فاموس, سكاي-أوس...إلخ

رابعا, إن لم يكتب للمشروع بالنجاح فسيخلف عند أعضاء الفريق كمّ هائل من المعلومات و التجارب البرمجية التي ستفيدهم في المستقبل كثيراً, فالأمر مكلّل بالنجاح في كلى الحالتين.

خامسا, بدأت في البحث عن تأسيس فريق منذ مدة حين كنت أناقش بعض الإخوة على موقع آخر و تطرّقنا إلى هذا الأمر, فأوّل تجربة خضتها في هذا المجال كانت في فترة الثانوية و لم أتمكن من الوصول إلى أي شيء غير أني استوسعت في التعلم و لله الحمد.

بعدها بسنتين انطلقت من جديد كهاوي و توصّلت إلى كتابة نظام صغير جدا يحتوي على "شل" و يعمل في وضع "ريل-مود", في الوقت الرّاهن أنا أعد بعض المقالات عن كتابة نواة جديدة و لحد الآن اكتمل منها 5 بفضل الله, نشرت 2 منها و 3 في المراجعة و قريبا سأنشر الثالث, للإضطلاع على المقالين السابقين من هنا ( كتبتهما بالإنجليزيّة و إن كان هناك تواصل سأترجم للعربية )

المقدمة : http://iblog.ouahabix.org/2009/05/22/writi...kernel-for-fun/

البوت-لودر : http://iblog.ouahabix.org/2009/06/13/writi...t-1-bootloader/

إنشاء قرص بوتابل : http://iblog.ouahabix.org/2009/06/15/writi...ootable-cd-rom/

المقالة القادمة ستكون بإذن الله عن تفعيل سطر العنونة 20, و المقالتين اللاحقتين ستكونان عن تحميل ملف صغير ليطبق و هو بادئة النواة, و المقالة الأخرى ستكون عن جداول :

GDT/LDT/IDT

-------

المهم ما أبحث عنه في الإخوة الأكارم ليس أن يكونوا ملمّين بمثل هذه الأمور و لكن أبحث عن من يستطيع الإلتزام لمدة طويلة و لديه الرغبة في التّعلم و على الأقل يكون سريع الفهم و التّشرب للأفكار الجديدة و لديه نظرة مسبقة عن لغة السي أو طريقة التعامل مع المتغيرات و البوينترز و الستراكتشرز, و باقي الأمور سيتعلمها مع الوقت بإذن الله.

لهذا المشروع عذّة أهداف و منها:

أن يكتب بأيادي مسلمة 100% و ليس شرط عربية, و أن لا يكون مقلدا لغيره بل يكون جديدا و عندي له بعض الأفكار الأساسية, أن يبقى خفيفا و صغير الحجم, و أن يكون مكتوب ليعمل في وضع "بروتكتد-مود", قابل للعمل على الهندستين 32-64 بت, و أن تكون نواته "مايكرو-كرنل" كنواة "ماك-أوس" و ليست "مونوليثيك-كرنل" كويندوز و لينكس, أن يستخدم فاسم كلغة أسمبلاي مفتوحة المصدر و الجي-سي-سي كمصرف للغة السي و أن لا تكتب النواة بلغة السي++ نهائيا من أجل الحرص على السرعة و التقليل من المعلومات الضائعة في الأوبجكتس و غيرها.

أعلم أن الكلام سهل جدا و لكن التطبيق أصعب.

من أهم ما يجب التركيز عليه ألا وهو:

Memory Management

و شيء آخر ليصحح ما يحدث في ويندوز و هو تصحيح طريقة تثبيت/إزالة البرامج و هو مشكل أغلبه يحدث على ستوى الريجيستري.

و أن تتطرق العقول المبدعة إلى الوصول لنظام ملفات جديدة يقارب بين الأن-تي-أف-أس و الـ الإكستــ4.

من بين المتطلبات أيضا هو إجادة اللغة الإنجليزية لأنه إذا حاولنا القيام بالترجمة في هذا الوقت فسنتحول من مبرمجين إلى مترجمين مما يصيب الكثير بالملل, و لكن ممكن أن نبحث عن تشكيل فريق مترجمين أيضا, يوجد لدي الكتب و الروابط المفيدة و سأقدّمها عندما يحين الوقت.

بعد تشكيل الفريق, يمكن لكل عضو أن يختار مجاله أو تخصصه أو ما يرغب في العمل عليه و التعلم عنه, بعدها يعطى كل عضو عضوية للدخول إلى جهة المناقشة و تحميل الكتب و ما يلزم, و الهدف هو بقاء أفكار المشروع داخل حيز الأعضاء فقط في البداية و السبب بسيط, لكي لا نراها مجسدة من طرف الآخرين بينما نبقى نحن في طور التعلم, فأساس البرمجة هو الظفر بالفكرة و ليس تحقيقها, بل التحقيق يأتي كنتيجة لعصر بنيات الأفكار.

فهل يوجد هنا من يرغب بالإنضمام؟

يرجى من كل عضو أن يذكر تخصصه الراهن و ما يتقنه من لغات.

الموضوع ليس حصرا في هذا المنتدى و من أراد نشره فليتفضل مأجوراًُ, و السلام عليكم و رحمة الله.

أخوكم

أبــــــــوبـــــــكر

#2

والله انا سعيد بجد انى بشوف ناس بتفكر بالطريقه دى وباين من كلامك ان انت بدأت ووصلت لفكره عامه عن الموضوع

وانا نفسى اشترك فى مشروع ضخم زى ده بس من كلامك ان انتوا هتشتغلوا بلغة السى

وانا لا افقه شئ فى هذه اللغه ولكن عندى خبره فى لغات اخرى مثل c#,vb

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

تم تعديل هذه المشاركة بواسطة ashraf hamdy في 19 يوليو 2009 في 18:16

#3

المشروع سيبقى في الهواء ما لم يبدار احد و يبدأه

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

#4

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

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

name : mohamedyosry

#5

أخى راجع هذا الرابط حتى تستفيد من أراء الأخرين

/index.php?showtopic=199473

 وممّا زادنـــي شرفــاً وتيهــاً   **  وكدت بأخمصي أطأ الثريّا

دخولي تحت قولك يا عبادي  **   وأن صيّرت أحمد لي نبيّـاً

#6

حيّاكما الله و بارك فيكما.

سأبدللإجابة عن الشّطر الثّاني, أنا بدأت في الإشتغال بهذ الأمر و أدركت أنّه يستحيل علي أن أكمله وحدي هذا من ناحية, و من ناحية أخرى أرى أن كل مبرمج لديه ذوق برمجي خاص و نكهة خاصة تجدها في الشفرات التي يكتبها و لذلك أتمنى أن تمتزج معا لنخرج بشيء يرضي الجميع.

مجال أنظمة التّشغيل مجال جميل جدا بالرغم من أنه يتطلب الكثير من العمل على المستوى الدنيوي للآلة و أساسه نظري أكثر منه تطبيقي, و أعتقد أنه أفضل و أطول مسار لطلب علم تكنولوجي, ناهيك عن دراسة عدة هندسات مثل السبارك و الميبس و البي-بي-سي و غيرها, بل في الهندسة الواحدة قد نجد البيغ-إندين و السمال-إنديان, المهم لا علينا, ما قمت به من عمل إضطررت إلى إعادته مرتين, مرة حين قررت كتابة النواة بالأسمبلاي فقط و بدا لي سهل في البداية لكن بعد ذلك بدأ في استهلاك وقتي أكثر من اللازم و كان متعب و مشتت التركيز و يمكنك أن تتخيل محاولة فهم ما كتبته قبل شهر في الأسمبلاي خاصة إن نسيت أن تكثر من الشروحات.

و من ناحية ثانية كان كتابة الدرايفر للهاردوير غير ثابت بحيث أني لم أضع منهجية متبعة فكان كل جزأ يختلف عن طريقة كتابة درايفر الجزأ الآخر و السبب راجع إلى عدم التأكد من الطريقة الأنجع و الأصوب, و الآن بدأت أقتصر على الأسمبلاي في الضرورة فقط و البقية أكتبها بلغة السي.

ما أقوم به الآن أعتبره جزء من المشوار التعليمي و لكن ما أريد أن نقوم به هو مجهود جماعي و فكر متنوع يظهر الأفضل و الأسرع فقط بحيث يكون إحترافي نوعا ما.

مشكور على المرور.

بالنسبة للموقع فلا عليك أنا حاجز موقعين بإذن الله.

------------

الآن للإجابة على الشطر الأول أبدأ بشكر الأخ أولا على تواصله.

سأقول لك أخي أنك إذا كنت متقن للغتين السابقتين فأعتقد أنك ستتعلم السي بسرعة, فبمجرد معرفة لأنواع البيانات و طريقة تفكير الآلة سيتبقى عليك التطرق إلى قائمة الأوامر الجديدة و طريقة عملها.

صدقني أخي الحبيب أن بناية نظام تشغيل هو أمر نظري أكثر مما تتوقع و بمجرد فهمك لجزأ ما ستتعجب من بداية فهمك لتلك الأسطر الباردة الخالية من أي معنى و التي تقوم في نفس الوقت بتهيئة المناخ المناسب لنظام التشغيل, خذ مثلا هذا الجزأ:


// We use the attribute 'packed' to tell GCC not to change
// any of the alignment in the structure.
struct gdt_entry_struct
{
u16int limit_low; // The lower 16 bits of the limit.
u16int base_low; // The lower 16 bits of the base.
u8int base_middle; // The next 8 bits of the base.
u8int access; // Access flags, determine what ring this segment can be used in.
u8int granularity;
u8int base_high; // The last 8 bits of the base.
} __attribute__((packed));
typedef struct gdt_entry_struct gdt_entry_t;
// This structure contains the value of one GDT entry.


{
u16int limit; // The upper 16 bits of all selector limits.
u32int base; // The address of the first gdt_entry_t struct.
}
__attribute__((packed));
typedef struct gdt_ptr_struct gdt_ptr_t;

// Initialisation function is publicly accessible.
void init_descriptor_tables();
struct gdt_ptr_struct


// descriptor_tables.c - Initialises the GDT and IDT, and defines the
// default ISR and IRQ handler.
// Based on code from Bran's kernel development tutorials.
// Rewritten for JamesM's kernel development tutorials.
//

#include "common.h"
#include "descriptor_tables.h"

// Lets us access our ASM functions from our C code.
extern void gdt_flush(u32int);

// Internal function prototypes.
static void init_gdt();
static void gdt_set_gate(s32int,u32int,u32int,u8int,u8int);

gdt_entry_t gdt_entries[5];
gdt_ptr_t gdt_ptr;
idt_entry_t idt_entries[256];
idt_ptr_t idt_ptr;
//


{
// Initialise the global descriptor table.
init_gdt();
}

static void init_gdt()
{
gdt_ptr.limit = (sizeof(gdt_entry_t) * 5) - 1;
gdt_ptr.base = (u32int)&gdt_entries;

gdt_set_gate(0, 0, 0, 0, 0); // Null segment
gdt_set_gate(1, 0, 0xFFFFFFFF, 0x9A, 0xCF); // Code segment
gdt_set_gate(2, 0, 0xFFFFFFFF, 0x92, 0xCF); // Data segment
gdt_set_gate(3, 0, 0xFFFFFFFF, 0xFA, 0xCF); // User mode code segment
gdt_set_gate(4, 0, 0xFFFFFFFF, 0xF2, 0xCF); // User mode data segment

gdt_flush((u32int)&gdt_ptr);
}

// Set the value of one GDT entry.
static void gdt_set_gate(s32int num, u32int base, u32int limit, u8int access, u8int gran)
{
gdt_entries[num].base_low = (base & 0xFFFF);
gdt_entries[num].base_middle = (base >> 16) & 0xFF;
gdt_entries[num].base_high = (base >> 24) & 0xFF;

gdt_entries[num].limit_low = (limit & 0xFFFF);
gdt_entries[num].granularity = (limit >> 16) & 0x0F;

gdt_entries[num].granularity |= gran & 0xF0;
gdt_entries[num].access = access;
}
void init_descriptor_tables()



gdt_flush:
mov eax, [esp+4] ; Get the pointer to the GDT, passed as a parameter.
lgdt [eax] ; Load the new GDT pointer

mov ax, 0x10 ; 0x10 is the offset in the GDT to our data segment
mov ds, ax ; Load all data segment selectors
mov es, ax
mov fs, ax
mov gs, ax
mov ss, ax
jmp 0x08:.flush ; 0x08 is the offset to our code segment: Far jump!
.flush:
ret
[GLOBAL gdt_flush]   ; Allows the C code to call gdt_flush().

ما هو انطباعك عن الشفرة السابقة أخي؟

سأقول لك إنطباعي الأولي:

أحسست و كأني أقرأ لغة أهل المريخ و الله, و ذلك لأني لم أعلم من الأساس ماذا يحاول المبرمج أن يفعل و لكن بعد قرائتي للشرح في خلال 20 دقيقة بالضبط ضحكت على نفسي أكثر من ساعة من دون ذكر ذلك الشعور الغريب و الجميل, لذلك إن كنت تريد الإلتحاق فمرحبا بك و سأحاول توجيهك لتعلم لغة السي, فما يسهل عليك الأمر أنك تحتاج إلى المبادئ+عقل مبدع لأنك لست بحاجة للإلمام بمكتبات أي نظام أو تعلم "آبي" أي واجهة.

جزيت خيراً.

#7

لا أريد أن أن أضعف من عزيمتكم و لكن المشروع صعب جدا و يستوجب الكثير الكثير من التضحيات و الكثير من الإستثمار في الوقت و المال و المادة الرمادية. لقد بدأت الفكرة في عام 2002 و استمررت حتى وصلت إلى التهيئة الكاملة للحاسوب مع درايفر للفلوبي ديسك و الكيبورد و الكونسول و برنامج بسيط ينتظر تعليمات من المستخدم و ينفدها. بدون دكر المراحل من تشغيل البوت سكتور من طرف بيوس إلى تسيير الذاكرة وتهيئة الكثير من الهاردوير...

و لكن عندما بدأت التفكير في الكم الكبير من الدرايفرز الذي يتوجب علي تطويرها و صعوبة الحصول على الكتب التقنية للهاردوير كـ القرص الصلب, البطاقة الأم و بعض التقنيات ك أكبي و تسريع الكرافيكس الهاردوير وغيرها ثم غلاء الأنترنت ومصاريف طباعة دوكيمنتاشن في تلك الوقت قبل ظهور أدسل و انتقالي للعمل في مناطق نائية تم ترك المشروع للأسف.

ما أنصحكم به هو عكس ما تريدون فعله ألا و هو البدء بتطوير بيئة gui تشتغل على كل نظم التشغيل الحالية و من تم الإنتقال لتطوير نوات لنظام التشغيل و من هنا لن تكون الفكرة في خطر أنها تخرج لهاردوير أصبح obsolete و يكون من السهل الربط بين gui و نوات نظام التشغيل.

بالتوفيق...

#8

أعتذر عن الأخطاء الإملائية فأنا أكتب من لابتوب لا توجد به أحرف عربية و عندما عدت لأصحح يظهر لي الخطأ التالي:

يوجد خطأ في استخدامك للأكواد , ربما استخدمت الأوسمة بطريقة غير صحيح

-----------

أخي أيبكس أنا دونت ما بدى لي و يمكن للبقية أن يدلون بدلائهم, لدي فكرة بسيطة جدا و لكنها جديدة و لذلك تحتاج الكتابة من جديد + كتابة النواة من جديد ليس بمضيعة للوقت فقد تم ذلك في مايكروسوفت مرتين إن لم يكن أكثر و حدث في رياكت-أوس مؤخرا, و أعتقد أنهم قاموا بذلك من جديد في نظام فيستا بسبب عدم مقدرتهم لإصدار نسخة إكس-بي 64بت كاملة لعجزهم عن تصدير مجموعة من دوال النواة و هو المشكل الذي اختفى في فيستا و ما والاه و لك أن تقرأ عن ذلك, الدافع الرئيس هو ظهور هندسات جديدة تحاصرها مفاهيم النواة القديمة فتقيدها بمحدودياتها.

---------

أخي عمر مع كل احتراماتي الموضوع غير محفز و لكن أنصح بقراءة مواضيع منتدى "فلات-أسمبلر" و "أوس-دف" حيث تجد أبناء 16 سنة قد بنوا أنظمة تشغيل فردية و يحظون بالدعم الكامل و المتواصل هناك و حيث تجد مصمم "دكس-أوس" لترى مقالاته قبل و بعد نجاح نظامه و اعتباره منطلق لمن رغب في التعلم منه, و أتمنى ان نحظى بنفس المستوى من التجاوب هنا.

#9

مشكور أخي محمد و لكن أختلف معك تماما, أولا ال"غي" هو آخر شيء يتم التفكير فيه, بل سكاي-أوس سينتقل الآن إلى "غنوم", نفس الشيء قامت به "صان" في "أوبن-صولاريس" و تحولت إلى الغنوم.

الدرايفرز أقسام و ما يجب التركيرز عليه هو أقسام ال OEM القياسية.

يبدو أن ما كتبته كان Real Mode OS و ليس Protected Mode OS أليس كذلك؟

#10

Protected mode os و مقارنتك بميكروسوفت مقارنة غير منصفة لأن مايكروسوفت هي مايكروسوفت بقدراتها الإستثمارية و دكاترتها و مهندسيها... هذا لا يعني أنني استصغر من شأننا و لكن لنكن واقعيين ونعرف مقدراتنا و الهدف الذي نسعى إليه و آمل ألا يكون النجوم من أول وهلة.

المرجو قبل الدخول في استعراض كود تسيير gdt و idt و ldt أن تضع مميزات نظام التشغيل الذي تسعى إليه و التقنيات التي لا يستطيع الإشتغال بدونها و عند تحقيق الهدف نمر إلى إغناء النظام بتقنيات أخرى.

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

راجع سيرة linux وكيف كان المايسترو لينوس تورفالدس يسير كل شيء.

#11

أخي محمد راجع ما كتبت سابقا فلعلك ترى ما لم ترى؟

أنا لم أقارن بيننا و بين مايكروسوفت يا حبيب لعلك تقرأ ما بين الأسطر.

Now plz allow me to write in English this, just to clear the foggy climate here.

You're asking me to develop a GUI interface then look back to the GDT,LDT,IDT, is that right, let me tell you for the thousand time you're wrong.....???

How could you jump to a Protected Mode if you don't initialize the GDT and IDT first, this is if you really know how the boot sequence does work.

Let's say we have a 2 stages bootloader, so we have now a boot strapper that will redirect the control to where we want, the BootLoader will be first loaded at the usual Linear Address 0x7c00 then we would place our code somewhere else and jump to it, at this stage we're going to load our main Kernel that will decide either it's a Real Mode OS or a Protected Mode OS.

To do the above you need to redefine your interruptions table, your Global Descriptor Table and you're Local Descriptor Table and start driving your Kernel smoothly, unless you want to fly on the Real Mode Platform using the BIOS Ints without knowing that and I can't see why you want to use this if you're not after creating an embedded System, then where is the benefit.

The GUI interface will work via the Sys-Calls and the Kernel APIs, so developing one before having an OS standardization then you're wasting your time for nothing or you like heavy jokes.

my idea although I wasn't intending to explain it more, is to have 3 working Kernels at the same time, the main one will work on the Ring-0 Level, the 2nd and the 3rd will work on the Ring-1 Level and the Drivers and Systems Services will work at the Ring-2 level while the norm is that Ring-1 and Ring-2 are unusable in most of our nowadays OSes, the other applications should remain at the Ring-3 level like the other Systems.

The idea of bringing 3 Kernels working at the same time brings a new kind of challenges, the main ones are the Memory Management, and the Cross-Platform Drivers but not like what you had said, it's another concept I hope to share with others interested.

Bro, you need to be creative and optimistic in your views, just be positive.

I wish that you make a review about Linus Torvalds life and Richard Stallman's by the way.

If you want more technical details then plz go ahead and ask what you want and let me help you understand this steamy and fantasy platform.

---------------

I want to add something, the whole idea is after creating 1 Micro-kernel and 2 Monolithic-Kernels, I hope you get what I'm aiming to do.

تم تعديل هذه المشاركة بواسطة OuahabiX في 19 يوليو 2009 في 22:42

#12

أنا آسف لتسببي في الخروج عن الموضوع الأساسي. كل متمنياتي لكم بالتوفيق في هذا المشروع و الذي أراه بالشكل التالي :

- البوت سكتور : الذي سيقوم بتحميل محمل المرحلة الأولى.

- محمل المرحلة الأولى : سيقوم بتهيئة الهاردويرA20, IRC, IRQs, etc. ومسير الذاكرة و في الأخير سيقوم بتحميل محمل المرحلة الثانية.

- محمل المرحلة الثانية : سيقوم بتهيئة البيئة سوفتوار و تحميل و تشغيل درايفرزالأساسية لتشغيل النواة وفي الأخير تحميل النواة.

- النواة : ستقوم بتهيئة النظام سوفتوار و باقي الهاردوار و تقوم بتحميل مسير الكرافيكس و النوافد و غيرها.

هذا ملخص لما يجب أن تتم تهيئته و الإتفاق على جزئيات كل منه.

أتمنى لكم النجاح والله ولي التوفيق.

#13

جزيت خيرا أخي, لقد ذكرت A20 في أول مشاركة كتبتها و أسميتها سطر العنونة 20 و أصنفها مع البوت سترابر و لا أعتبرها خارجة عنه, أما الآي أر كيو فيأتي بعد ضبط الجي دي تي, و أما الدرايفرز فأريد تنبيهك إلى أنك تعتمد خطوات المونوليثك كرنل و أنا أتكلم عن المايكروكرنل و لذلك ذكرتها من الأول و هذا هو الفارق الرئيس.

أما مسير الجرافيكس فلدي فكرة جديدة و لا أعتقد أنها ستأتي بالترتيب الذي ذكرته.

مشكور على مشاركتك و مرورك.

#14

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

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

بوت سكترو

لودر

نواة صغيرة (ميكروكيرنك )

ثانيا

تخصيص النظام بشكل كبير لماذا لاننا نريد اظهار النظام في خلال اشهر قصيرة ومن ثم نبدء بتطويره حتى لو احتجنا لاعادة بناءه ولكن يجب اطلاق نسخة منه حتى يظهر للعيان باننا فعلا نعمل ونريد من يشترك معنا

ثالثا

لا نحتاج مبدئيا الى جرافيك فيكفي الشاشات السوداء والاوامر وخير مثال شيل لينكس

رابعا

تحديد نوع نظام الملفات الذي سنبرمجه ووضع مخطط هيكلي لهذا (file sysytem) ووضع مسما لنظام الملفات

خامسا

يجب وضع اسم للمشروع قبل انطلاقه اصلا ويمكن تغييره مستقيلا اذا حدث طارئ

سادسا

تحديد المشتركين الفعليين ووضع اسمائم وايميلاتهم وحتى ارقام الهواتف حتى يكون المشروع جدي جدا مبدئيا اعتقد ان حوالي 10 - 20 مبرمج عدد كافي جدا لكي لا تتشت الجهود وحتى يكون هناك عمل فعلي

سابعا

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

ثامنا الاقسام مثلا

قسم النواة

قسم لغة سي

قسم لغة اسمبلي

قسم نظام الملفات

قسم الشيل

قسم البوت سكتور واللودر

وهذا مثال

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

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

تم تعديل هذه المشاركة بواسطة good programmer في 20 يوليو 2009 في 01:32

learn assembly it is fast small and you will be Professional programmer

#15

تنسيق أفكار جيد و ممتاز

في الوقت الراهن لدي البوت سكتر و قادر على تحميل أي ملف "بنري", صمم ليعمل على "Fat12" و لكن كتابته ليتوافق مع "Fat32" أمر بسيط و لكن مايكروسوفت لديها حق الملكية الفكرية لهذا النظام و يجب دفع المال مقابل كل نسخة تصدر منه لذلك ليست فكرة سديدة لتخطيط طويل المدى هذا من ناحية و من ناحية أخرى الفات-12 لا يستطيع حتى بلوغ 2 جيغابايت, الفات32 يقبل اﻷسماء الطويلة و اليونيكود, الإكستـــ4 ممتاز و فكرة تصميم كل شيء على أنه ملفات رائعة و لكن إيجاد توافق بين الإثنين هو ما أسعى إليه بحيث تكون المسارات قابلة للنوعين:

c:\System\Shell.exe

./etc/bin/file.so

و هذا أمر أعتقد أن صاحب صول-أوس وصل إليه و يمكن أن نتعلم منه. و يمكننا الإستعانة بـ NTFS-3G و Ext4.

و أما بالنسبة للملفات التطبيقية فيجب أن نسعى إلى أن يتقبل معظمها مثل: PE, MZ, COFF...etc

الإسم جاهز و سأطلعك عليه.

بالنسبة للأعضاء فـ 3 أو 4 كافيين جدا في هذه المرحلة إن التزمنا جميعا.

أمهلني 3 أيام إن شاء الله و سيكون المنتدى جاهز و مغلق للأعضاء فقط و نقبل الطلبات من هذا المنتدى و يجب أن يطلب ذلك هنا.

فكرة البوت لودر أخي إن أمكننا أن نبدأ منها و نسعى إلى جعله يتوافق مع Chain Loading حتى يكون قادر على تحميل الأنظمة الأخرى مع أن هذه الخطوة يجب أن تكون متأخرة.

يجب علينا وضع تقويم لكل خطوة و مرحلة لنسعى لتحقيقها.

متشرف بمعرفتك أخي و أتمنى أن نبقى على تواصل.

#16

اهلا اخي بالنسبة لعدد الاعضاء فقد قلت باننا نحتاج 10 -20 فقط لاني رايتك تعرض العمل للعيان وقد اعتقدت بانك تريد جيش كبير اما ما تقوله 4 مبرمجين فهذا ممتاز

بالنسبة لنظام (sol _os) فهو نظام ممتاز وقد درست به القليل وهو مبني على اسمبلي وفكرته ممتازة وامس اصدر مبرمجه نسخة جديدة ومطورة لذلك انا اشد على ايديكم بهذا النظام الجميل

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

وثانيا يجب وضع المشروع تحت رخصة المصادر المفتوحة بعد فترة من برمجته

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

و نحن بانتظارك اخي العزيز

learn assembly it is fast small and you will be Professional programmer

#17

سأراسلك على الخاص أخي.

#18

اهلا بك

learn assembly it is fast small and you will be Professional programmer

#19

السلام عليكم

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

أحببت أن أشارك معكم و أن تقبلوني في فريقكم

خلفيتي في أنظمة التشغيل لابأس بها من ناحية كيف تشتغل (لأن نظامنا دراسي في جامعة يعلمنا كيف تشتغل أنظمة التشغيل و ليس كيف نبني أنظمة التشغيل )

حمدلله أسمبلي و السي قبل حوالي سنتين كنت ابرمج بهما

حاليا أعمل على الجافا و php و c#

من ناحية الخبرة تناقشت فبل حوالي ثلاثة أشهر مع أستاذ أنظمة التشغيل حول بناء نظام التشغيل من الصفر فنصحني بكتاب

Operating Systems: Design And Implementation

ل andrew tanenbaum

وانا في إنتظار هل نستطيع ان نبدأ

#20

جميل منك الإنضمام أخي محمد و أرسلت لك على الخاص و إن شاء الله يكتب لنا التوفيق.

#21

السلام عليكم

شكر أخي OuahabiX على قبولي بينكم

رابط الكتاب Operating Systems Design and Implementation

http://ifile.it/3w6gydn/0131429388.rar

وهذا الكتاب يستخدم نظام minix في تصميم نظام التشغيل

#22

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

ولكن بعد التجميع يبج ان يكون هناك اجتماع ودراسة للموضوع ومعرفة كل شخص وما يعرفه من علوم وما يحتاج لدراسته حتى يستطيع الاستمرار معنا

learn assembly it is fast small and you will be Professional programmer

#23

لدي بعض أفكار حول خطوات تطوير نظام التشغيل

علينا أن نقوم

دراسة نظام minix جيدا و نفصله و نتعمق فيه و نفهمه

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

ثم نقوم بكتاية كود نواة نظام تشغيل من جديد بستعمال عقولنا

على فكرة نظام مينيكس طورة أندروا لطلبة لكي يتعلمو كيفية تطوير نظام تشغيل والنسخة 3 لهذا النظام فيها حولي 23000 سطر برمجي

بحيث أن ليونس تروفلز طور نظام لينيكس من هذا النظام

أرجو من أخوة المشتركين أن لا يلقى موضوعنا حتفه و أن يرى النور مثل الكثير من هذه الموضيع التي في هذه المنتدى

تم تعديل هذه المشاركة بواسطة mohammeding في 20 يوليو 2009 في 23:02

#24

عمرك اطول من عمري اخ محمد فعلا كنت قد زرت موقع مينكس اليوم وقد وجدته فعلا نظام رائع

ولكن ماذا حدث معك اخ ابو بكر اين ذهبت لا ارى اي تفاعل لك مع الموضوع منذ ظهر اليوم

learn assembly it is fast small and you will be Professional programmer

#25

و عليكم السلام إخوتي, إضطررت إلى القيام ببعض الأمور و تفاجأت أن إسم النطاق الذي اتفقنا عليه حجز في نفس الوقت الذي تواصلنا فيه مما أزعجني نوعا ما, و أرى أن آخر رد كتبته لم يرسل جيدا.

لا بأس إن شاء الله, كنت في طور البحث عن سكريبت لإدارة المشاريع و لم أستقر على واحد لذلك أريد رأيكم هل نتبنى طريقة "ويكي" لتوثيق أمورنا و التواصل داخليا, أم نستخدم مدونة أم نستعمل منتدى؟

أنا الآن أقوم بتجهيز الموقع و سيكون جاهز بعد بضعة ساعات بإذن الله.

دراسة نظام تشغيل آخر فكرة ممتازة و لكن أن نحذو حذوه أمر مشين و قد نمر بما يمر به من أخطاء التصميم, و أرى و الله أعلم أن ندرس نظام أو نظامين, نقارن بينهم و نكتب شيئا جديدا و أفضل, سأبدأ في كتابة شرح بسيط للـ GDT/IDT/LDT , و سأذكر ما يلزمنا فقد أتممت كتابة بعض الجداول الأساسية و لكن النظام يحتاج إلى مجموع 256 مدخل, يعني سأشرح كيف ننشئها و يتكفل كل واحد منا بكتابة 80 مدخل كانطلاقة للعمل الجماعي.

إعتمدت سابقا مزج بين السي و الفاسم و أرى أنه علينا محاولة كتابة الكل بالفاسم الآن, و بمجرد عرض مثال واحد ما يتبقى علينا إلا أن نحذو حذوه.

سنبقى على اتّصال يا إخوة و سأعود جديد.

تم تعديل هذه المشاركة بواسطة OuahabiX في 21 يوليو 2009 في 01:26

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…