انجمن‌های فارسی اوبونتو

کمک و پشتیبانی => برنامه‌سازی => نویسنده: arezoo7272 در 23 مهر 1393، 09:11 ب‌ظ

عنوان: پروزه سیستم عامل
ارسال شده توسط: arezoo7272 در 23 مهر 1393، 09:11 ب‌ظ
با سلام من یه پروزه سیستم عامل دارم متنشو براتون میزارم میخواستم ببینم کسی میتونه کمکم کنه که از کجا باید شروع کنم
 
  ( ﻣﻬﺮ 27 ﺗﻤﺮﻳﻦ ﺷﻤﺎره ﻳﻚ ﺳﻴﺴﺘﻢ ﻋﺎﻣﻞ) ﻣﻬﻠﺖ ﻳﻜﺸﻨﺒﻪ
ﻣﻨﺘﻈﺮ ﮔﺮﻓﺘﻦ ﺧﻂ  ، در ﻣﺤﻴﻂ ﻟﻴﻨﻮﻛﺲ ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﭘﺲ از اﺟﺮا c ﺑﻪ زﺑﺎن MyShell ﺑﺮﻧﺎﻣﻪ ﺳﺎده اي ﺑﻪ ﻧﺎم
دﺳﺘﻮر از ﻃﺮف ﻛﺎرﺑﺮ ﺑﺎﺷﺪ .ﻛﺎرﺑﺮ ﺳﻪ دﺳﺘﻮر ﻣﻴﺘﻮاﻧﺪ وارد ﻛﻨﺪ  :
 :ﺑﺮﻧﺎﻣﻪ start - 1 در زﻳﺮ ﺗﻮﺿﻴﺢ داده ﺷﺪه اﺳﺖ ( و forktree اﺟﺮا ﻣﻴﻜﻨﺪ) ﻧﺤﻮه ﻛﺎرﻛﺮد forktree اي را ﺑﻪ ﻧﺎم
در ﺿﻤﻦ، ﻣﻨﺘﻈﺮ درﻳﺎﻓﺖ دﺳﺘﻮر دﻳﮕﺮ از ﻃﺮف ﻛﺎرﺑﺮ ﻣﻴﺸﻮد  .
  . را در ﺻﻮرت در ﺣﺎل اﺟﺮا ﺑﻮدن ﺑﻪ ﺻﻮرت آﺑﺸﺎري ﺗﻤﺎم ﻣﻴﻜﻨﺪ forktree :ﺑﺮﻧﺎﻣﺔ terminate - 2
 ﺧﺎرج ﺷﺪه و ﺑﻪ ﻛﻨﺴﻮل اﺻﻠﻲ ﺳﻴﺴﺘﻢ ﻋﺎﻣﻞ ﺑﺎز ﻣﻲ MyShell :از ﺑﺮﻧﺎﻣﻪ exit - 3 ﮔﺮدد) در اﻳﻦ ﺣﺎﻟﺖ ﻧﻴﺎزي ﺑﻪ
 ﺗﺒﺪﻳﻞ ﺑﻪ ﭘﺮاﺳﺲ ﻳﺘﻴﻢ ﻣﻲ forktree ﻧﻴﺴﺖ  - --در اﻳﻦ ﺣﺎﻟﺖ اﺻﻄﻼﺣﺎ forktreeاﺗﻤﺎم ﺑﺮﻧﺎﻣﻪ  ﺷﻮد  .(
 اﺟﺮا ﺷﻮد، ﻛﺎرﺑﺮ ﻧﺒﺎﻳﺪ terminate را زده ﺑﺎﺷﺪ، ﺗﺎ ﻗﺒﻞ از آﻧﻜﻪ دﺳﺘﻮر start در ﺻﻮرﺗﻴﻜﻪ ﻛﺎرﺑﺮ ﻳﻜﺒﺎر دﺳﺘﻮر
  . ﺑﺎﺷﺪ و ﺑﺎﻳﺪ ﭘﻴﻐﺎم ﺧﻄﺎﻳﻲ ﺑﻪ ﻛﺎرﺑﺮ ﻧﺸﺎن داده ﺷﻮد startﻗﺎدر ﺑﻪ اﺟﺮاي ﻣﺠﺪد دﺳﺘﻮر
 ﺑﻪ اﻳﻦ ﺷﻜﻞ ﻋﻤﻞ ﻣﻲ forktreeﺑﺮﻧﺎﻣﻪ  ﻛﻨﺪ :ﺑﻌﺪ از اﺟﺮا، ﻳﻚ ﺟﻤﻠﻪ ﭼﺎپ ﻣﻲ ﻛﻨﺪ و ﺳﭙﺲ دو ﭘﺮاﺳﺲ ﻣﺸﺎﺑﻪ
 (اﻳﺠﺎد ﻣﻲ fork دﻳﮕﺮ )از ﻃﺮﻳﻖ اﺟﺮاي ﺗﺎﺑﻊ  ﻛﻨﺪ و در اﻧﺘﻬﺎ ﺑﻪ ﺣﺎﻟﺖ اﻧﺘﻈﺎر ﻣﻲ رود )ﺑﺮاي رﻓﺘﻦ ﺑﻪ ﺣﺎﻟﺖ اﻧﺘﻈﺎر
 اﺳﺘﻔﺎده ﻛﻨﻴﺪ .(ﭘﺮاﺳﺴﻬﺎي ﺟﺪﻳﺪ اﻳﺠﺎد ﺷﺪه ﻧﻴﺰ ﻫﻤﻴﻦ ﻛﺎر را اﻧﺠﺎم ﻣﻲ wait ﻣ ﻲﺗﻮاﻧﻴﺪ از ﺗﺎﺑﻊ ﺳﻴﺴﺘﻤﻲ  دﻫﻨﺪ،
ﻳﻌﻨﻲ ﻫﺮ ﻛﺪام دو ﭘﺮاﺳﺲ ﻣﺸﺎﺑﻪ ﺟﺪﻳﺪ اﻳﺠﺎد ﻣﻲ ﻛﻨﻨﺪ و اﻳﻨﻜﺎر ﺗﺎ ﺳﻪ ﺳﻄﺢ اداﻣﻪ ﻣﻲ ﻳﺎﺑﺪ )ﻳﻌﻨﻲ در اﻧﺘﻬﺎ، ﻫﻔﺖ
 ﺧﻮاﻫﻴﻢ داﺷﺖ .(ﺟﻤﻠﻪ forktreeﭘﺮاﺳﺲ از ﺟﻨﺲ  در اﺑﺘﺪاي اﺟﺮا ﭼﺎپ ﻣﻴﻜﻨﺪ forktree  اي ﻛﻪ ﻫﺮ ﭘﺮاﺳﺲ
  : (و ﺷﻤﺎره ﺳﻄﺢ )از 1 ﺗﺎ 3 (ﻣﻴﺒﺎﺷﺪ، ﻣﺜﻼ ﺟﻤﻠﺔ زﻳﺮ pid)ﺷﺎﻣﻞ ﺷﻤﺎره ﭘﺮاﺳﺲ
A new forktree created! ProcessID: 112034 --- Process Level:2
 ﻣ ﻲﺗﻮان ﻛﻤﻚ ﮔﺮﻓﺖ .در ﻫﻨﮕﺎم درﻳﺎﻓﺖ دﺳﺘﻮر getpid ﺑﺮاي ﮔﺮﻓﺘﻦ ﺷﻤﺎره ﭘﺮاﺳﺲ ﻓﻌﻠﻲ از ﺗﺎﺑﻊ ﺳﻴﺴﺘﻤﻲ
 را ﻣﺘﻮﻗﻒ و forktree ﺑﺎﻳﺪ ﺑﻪ ﻧﺤﻮي ﺗﻤﺎﻣﻲ ﻫﻔﺖ ﭘﺮاﺳﺲ اﻳﺠﺎد ﺷﺪه از ﺑﺮﻧﺎﻣﻪ MyShell، ﺑﺮﻧﺎﻣﺔ terminate
 ﻧﻤﺎﻳﺪ .ﺑﺮاي اﺗﻤﺎم ﻳﻚ ﭘﺮاﺳﺲ ﻣﻲ killﻳﺎ اﺻﻄﻼﺣﺎ  اﺳﺘﻔﺎده ﻛﻨﻴﺪ ﻛﻪ اﻟﺒﺘﻪ ﻳﻜﻲ از kill ﺗﻮاﻧﻴﺪ از ﺗﺎﺑﻊ ﺳﻴﺴﺘﻤﻲ
، ﺑﺎﻳﺪ دﻗﻴﻘﺎ terminate ورودﻳﻬﺎي اﻳﻦ ﺗﺎﺑﻊ ﺷﻤﺎرة ﭘﺮاﺳﺴ ﻲ اﺳﺖ ﻛﻪ ﺑﺎﻳﺪ ﻣﺘﻮﻗﻒ ﺷﻮد .ﺑﺮاي ﭘﻴﺎده ﺳﺎزي دﺳﺘﻮر
 ﻣﺮﺑﻮط ﺑﻪ ﭘﺮاﺳﺴﻬﺎي واﻟﺪ و ﻓﺮزﻧﺪ ﭼﮕﻮﻧﻪ ﻣﻲ forktree ﺑﺪاﻧﻴﺪ درﺧﺖ ﺑﺎﺷﺪ ﻛﻪ ﺑﺮاي اﺳﺘﺨﺮاج اﻳﻦ درﺧﺖ و
ﺷﻤﺎرة ﭘﺮاﺳﺴﻬﺎ از ﻫﺮ ﺗﺎﺑﻊ و دﺳﺘﻮري ﻣﻲ ﺗﻮاﻧﻴﺪ اﺳﺘﻔﺎده ﻛﻨﻴﺪ .ﺟﺰﺋﻴﺎت ﻣﺮﺑﻮط ﺑﻪ ﻫﺮﻳﻚ از ﺗﻮاﺑﻊ ﺳﻴﺴﺘﻤﻲ و ﻧﺤﻮة
اﺳﺘﺨﺮاج درﺧﺖ را در اﻳﻨﺘﺮﻧﺖ ﺟﺴﺘﺠﻮ و ﻣﻄﺎﻟﻌﻪ ﻛﻨﻴﺪ  .
عنوان: پاسخ : پروزه سیستم عامل
ارسال شده توسط: محمد فدوی در 23 مهر 1393، 11:59 ب‌ظ
من که اصلا دانش تولید سیستم‌عامل رو ندارم ولی پیشنهاد می‌کنم شمام چنین سؤالاتی رو به این روش مطرح نکنید.
پروژه رو شروع کنید و در مورد جزئیاتش بیاید اینجا (یا هر انجمن دیگه‌ای) سؤال بپرسید تا کسایی که میخوان راهنماییتون کنن بدونن دقیقا در چه مورد میخوان حرف بزنن.

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