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

عدة اسئلة عن "Synchronization , و ,signals " ?

مغلق
بدأه n3rd في 18 مارس 2007 · 7 رد · 1,087 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

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

# ممكن عدة روابط لدروس عن " مواضيع السينكرونايزيشن Synchronization "؟

# ماهو الـsignals ؟ وهل توجد هناك روابط لها(عربية\إنجليزية)؟ وكيف أقدر أستفيد منها في برامجي؟

# ماهو الفرق بين المعامل الأول ,والمعامل الثاني...هنا (في جميع المجالات) ؟؟

كود

void data(char *data, int byte);

مشكورين أخواني ***

#2

just google it!

#3
اقتباس
just google it

Just Do It :D

أتمنى إني ألاقي ردود تساعدني شوي

لإني مانزلت الموضوع إلا وأنا عندي كم مستند وحاولت أفهم منهم ولكن لا بد من مساعدة من إخواني العرب :)

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

فقط .. مو لازم تشرح كل شي عن signals ولكن على الأقل عطني 3 سطور من عندك أو من معلوماتك(أو أي شخص) لكي أمسك طرف الخيط :)

والسلام خير ختام

#4

أجابة؟ :(

#5

السلام عليكم

# ماهو الفرق بين المعامل الأول ,والمعامل الثاني...هنا (في جميع المجالات) ؟؟

كود

كود

void data(char *data, int byte);

ساجاوبك على هذا السوال ؟

انت هنا تعرف دالة من النوع الخالي اي لاتعود باي متغير وتاخذ معملين :

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

الثاني تعرف متغير من النوع الرقمي هو byte اي ستحجز في الذاكره " تختلف الاجهزة ولكن الغالب ستحجز المتغير وسيكون اما 2 بايت او 4 بايت "

وساعطيك مثال على ذلك لكي تفهم البرنامج:

#include <iostream.h>





void data(char *data, int byte);

int main()
{
	int x = 5;
	char  y = 'K';
	char * Data = &y;

	data(Data,x);


	return 0;

}


void data(char *data, int byte)
{
	cout << "\n data = " << *data << "\n byte = " << byte << "\n\n";

}

اللهم علمنا ما ينفعنا وأنفعنا بما علمتنا أنك أنت العليم الحكيم

سبحان الله وبحمده سبحان الله العظيم

لاحول ولاقوة الا بالله( كنز من كنوز الجنة ).

#6

لا يزال هناك سؤالين

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

أتمنى الإجابة العاجلة :(

ومشكور أخوي السهم الناري

ولكن بقي سؤالين وبإنتظار الأجابة

سلام

#7

مازلت أنتظر :(

#8

بسم الله الرحمن الرحيم

اخوي انا اسف على التأخير...

طيب بس ممكن توضح لي وش الفكرة الي وصلت لها ؟

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

تخيل عندك 2 Processes واذا انت تعرف خوارزميات الـ CPU تقريبا راح تحصل انها تعتمد على Quantum time يعني لكل بروسيس وقت بسيط ومعين وبعدها يحول الى بروسيس ثاني طيب؟

المشكلة وين ؟ تخيل ان هالـ 2 processes شغالين ويفتحون ويقرون ويكتبون على ملف اسمه dat.txt طيب اذا انت تعاملت مع الـ Files راح تعرف ان فيه شي اسمه offset واذا ما تعرف تعرف اكيد الـ notepad :)

تخيل ان الاول قاعد يكتب وخلص وقته المحدد لكنه ما بعد خلص

وجاء الـ process الثاني وكان مؤشره ما تغير تخيل هالشكل هذا

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

هذا الي كتبه الـ prcoess الاول وصار مؤشره عند آخر A

لكن الـ process الثاني ما يدري هو فاتح الملف والمؤشر بأول الملف وراح كتب اخونا في الله

BBBBBBBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAAAAAAA

شفت المشكلة !!!!!!!

كتب على الي كتبه البروسيس الاول !

وهذي هي المصيبة وهنا تحتاج ما يسمى بالـ Synchronization او التزامن انك تفهم وتخلي كل بروسيس يتشارك مع بروسيس ثاني بأي Source يتعامل معه بشكل خاص !

طيب كيف نسوي التزامن هذا وكيف نخلي الprocesses يتزامنون هنا تختلف من OS الى آخر

والـ signals هي الي تستعمل لأعلام الـ processes انه يوقف او يشتغل او يوقف غيره ويقول لهم انا قاعد اشتغل على Critical Section او Source مشترك

وهي Interrupt الـ CPU ويدخل فيها شي يسمى Mutual Exclusion

وطبعا تخيل مدى صعوبة هالمشكلة اذا كان عندك اكثر من CPU !!!

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

ارجوا اني وضحت لك الأمر :)

هذا الموضوع مغلق.

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