os-ca2.pdf

‫ﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ‬
‫داﻧﺸﮕ‬
‫داﻧﺸﻜﺪﺪه ﻣﻬﻨﺪﺳﻲ ﻛﺎﻣﭙﻴﻮﺗﺮ‬
‫‪ ‬‬
‫ﺳﺳﻴﺴﺘﻤﻬﺎي ﻋﻋﺎﻣﻞ‬
‫ﺑﻬﺎر ‪13387‬‬
‫ﺗﻤﺮﻳﻦ‬
‫ﻛﺎﻣﭙﻴﻮﺗﺮي ﺷﻤﺎره ‪2‬‬
‫ي‬
‫ﺗﺎرﻳﺦ ﺗﺤﻮﻳﻳﻞ‪ :‬ﭘﻴﺶ از ﻧﻴﻤﻪ ﺷﺷﺐ ﻳﻜﺸﻨﻨﺒﻪ‪87/2/29 ‬‬
‫ر‬
‫ﻧﻜﺎت ﻗﺎﺑﻞ ﺗﻮﺟﻪ‬
‫ت‬
‫ﻗﺒﻠﻲ اﻧﺠﺎم ﺷﻮد‪.‬‬
‫دو ﻧﻔﺮه و ﺑﺎ ﻫﻤﺎﺎن ﺗﺮﻛﻴﺐ ﻲ‬
‫‪ .1‬ﺗﻤﺮﻳﻦ در ﮔﺮوه ﻫﺎي و‬
‫ﻧﻮﺷﺘﻪ ﺷﻮﻧﺪ‪.‬‬
‫ﺑﻪ زﺑﺎن ‪ C/C++‬و در ﻣﺤﻴﻂ ﻟﻴﻨﻮﻛﺲ ﺘﻪ‬
‫‪ .2‬ﺑﺮﻧﺎﻣﻪ ﻫﺎ ﻪ‬
‫‪ .3‬در ﺳﺎﺧﺖ ﺑﺮﻧﺎﻣﻪ از ‪ Makeffile‬اﺳﺘﻔﺎدده ﻛﻨﻴﺪ‪ .‬‬
‫ﺷﻤﺎ را ﺗﻮﺿﻴﺢ دﻫﻫﺪ‪،‬‬
‫ﻣﻔﻴﺪ ﺑﺮﻧﺎﻣﻪ ي ﺎ‬
‫اي( ﻛﻪ ﺑﻪ ﻃﻮر ﻣﺨﺘﺼﺮ و ﺪ‬
‫‪ .4‬ﻳﻚ ﻣﺴﺘﻨﺪ‪) pdf ‬ﺣﺪاﻛﺜﺜﺮ ‪ 5‬ﺻﻔﺤﻪ ي‬
‫ﻫﻤﺮاه آن ارﺳﺎل ﻛﻨﻴﺪ‪.‬‬
‫‪ Comment .5‬ﮔﺬاري ﻣﻨﻨﺎﺳﺐ ﺑﺮﻧﺎﻣﻪ ﺗﺎ ‪ %10‬ﻧﻤﺮه ي ﻣﺜﺒﺖ دارد‪ .‬‬
‫ﻛﻨﻴﺪ‪ :‬‬
‫ﺻﻮرت ﻳﻚ ﻓﺎﻳﻞ ‪ zip‬ﺷﺪه و ﻓﻘﻂ ﺷﺎﻣﻞ اﻳﻦ ﻣﻮارد ارﺳﺎل ﺪ‬
‫ت‬
‫‪ .6‬ﺗﻤﺮﻳﻦ ﺧﻮﻮد را ﺑﻪ‬
‫ﻓﺎﺎﻳﻞ ﻫﺎي ‪ .cpp‬و ‪ .h‬و ‪ makeffile‬ﺑﺮﻧﺎﻣﻪ ﺑﻪ ﻫﻤﺮاه ﻣﺴﺘﻨﻨﺪ آن‪.‬‬
‫ازاي ﻫﺮ روز اﺿﺎﺎﻓﻲ ‪ %5‬دﻳﮕﺮ‬
‫‪ %25 .7‬ﻧﻤﺮه ﺗﻤﺮﻳﻨﺎﺗﻲ ﻛﻪ دﻳﺮ ﻓﺮﺳﺘﺎده ﺷﺷﻮﻧﺪ ﻛﺴﺮ ﺧﻮااﻫﺪ ﺷﺪ‪ .‬ﺑﻪ ي‬
‫ﺷﻮد‪ .‬‬
‫ﺗﻤﺮﻳﻨﻲ ﺗﺤﻮﻳﻞ ﮔﺮﻓﺘﻪ ﻧﻤﻲ ﺷﻮ‬
‫ﻛﺴﺮ ﻣﻲ ﺷﺷﻮد و ﺑﻌﺪ از ﻳﻚ ﻫﻔﺘﻪ ﻫﻢ ﺗﻤ‬
‫‪ .8‬ﺳﻮاﻻت و ﺗﻤﺮﻳﻦ ﺧﻮد ررا ﺑﻪ آدرس اﻳﻤﻤﻴﻞ درس‪@gmail.com :‬‬
‫@‪ ceos87‬و ددر ﻗﺎﻟﺐ زﻳﺮ‬
‫ارﺳﺎل ﻧﻤﺎﺋﻴﻴﺪ‪ :‬‬
‫• ﻋﻨﻮان ﻧﺎﻣﻪ‪ OS‐CA2 :‬‬
‫اﺿﺎﻓﻲ( ‪ ‬‬
‫• ﻣﺘﻦ ﻧﺎﻣﻪ‪ :‬ﻧﻧﺎم و ﻧﺎم ﺧﺎﻧﻮاددﮔﻲ و ﺷﻤﺎره داﻧﺸﺠﻮﻳﻲ اﻓﺮاد )ﺑﺪون ﻫﻴﭻ ﺗﻮﺿﻴﺢ ﻲ‬
‫‪fam‬‬
‫‪mily1_fam‬‬
‫• ﭘﻴﻮﺳﺖ‪ :‬ﻓﺎﺎﻳﻞ ‪mily2.zip‬‬
‫ﻫﺪف ﺗﻤﺮﻳﻦ‪:‬‬
‫آﺷﻨﺎﻳﻲ ﺑﺎ رﻳﺴﻤﺎن ﻫﺎي اﺟﺮاﻳﻲ و زﻣﺎﻧﺒﻨﺪي ‪ cpu‬‬
‫ﺻﻮرت ﺗﻤﺮﻳﻦ‪:‬‬
‫در اﻳﻦ ﺗﻤﺮﻳﻦ ﺷﻤﺎ ﺑﺎﻳﺪ ﺳﻨﺎرﻳﻮي ﺗﻮﺿﻴﺢ داده ﺷﺪه در زﻳﺮ را ﭘﻴﺎده ﺳﺎزي ﻛﻨﻴﺪ‪:‬‬
‫ﻳﻚ ﻓﺮآﻳﻨﺪ‪ (Process) ‬ﺳﺮوﻳﺲ دﻫﻨﺪه‪ (Server) ‬وﺟﻮد دارد ﻛﻪ ﺑﻪ ﻫﺮ ﺳﺮوﻳﺲ ﮔﻴﺮﻧﺪه‪ (Client) ‬ﻳﻚ‬
‫رﻳﺴﻤﺎن‪ (Thread) ‬اﺧﺘﺼﺎص ﻣﻲ دﻫﺪ ﺗﺎ ﺑﻪ آن ﭘﺎﺳﺦ دﻫﺪ؛‬
‫در اﺑﺘﺪا ﻛﻼﻳﻨﺖ ﻫﺎ ﺑﺎ اﺳﺘﻔﺎده از ﻳﻚ ارﺗﺒﺎط‪ TCP ‬ﺑﻪ ﺳﺮور ﻣﺘّﺼﻞ ﻣﻲ ﺷﻮد؛ در ﺻﻮرﺗﻴﻜﻪ ﻫﺮ دو ﺑﺮ روي ﻳﻚ‬
‫ﻣﺎﺷﻴﻦ ﺑﺎﺷﻨﺪ‪ ،‬ﺳﺮور ﺑﻪ ﻃﻮر ﺗﺼﺎدﻓﻲ ﻣﻜﺎﻧﻴﺰم ارﺗﺒﺎﻃﻲ را ﺑﻪ روش ﺣﺎﻓﻈﻪ ي ﻣﺸﺘﺮك ‪(Shared Memory) ‬‬
‫ﺗﻐﻴﻴﺮ ﻣﻲ دﻫﺪ‪.‬‬
‫ﻛﻼﻳﻨﺖ ﻫﺎ ﻣﻲ ﺗﻮاﻧﻨﺪ ﺑﺮﻧﺎﻣﻪ ﻫﺎي دﻳﮕﺮي را ﺑﺮ روي ﻣﺎﺷﻴﻦ ﺳﺮور اﺟﺮا ﻛﻨﻨﺪ‪.‬‬
‫رﻳﺴﻤﺎن اﺧﺘﺼﺎص داده ﺷﺪه ﺑﻪ ﻫﺮ ﻛﻼﻳﻨﺖ‪ ،‬ﻳﻚ ﻓﺮاﻳﻨﺪ ﺑﺮاي اﺟﺮاي ﺑﺮﻧﺎﻣﻪ ﻣﻮرد ﻧﻈﺮ درﺳﺖ ﻣﻲ ﻛﻨﺪ؛ اﻳﻦ رﻳﺴﻤﺎن‬
‫وروديِ اﺳﺘﺎﻧﺪارد‪ ‬ﻓﺮاﻳﻨﺪ ﻣﻮرد ﻧﻈﺮ را از ﻛﻼﻳﻨﺖ ﮔﺮﻓﺘﻪ و ﺧﺮوﺟﻲِ اﺳﺘﺎﻧﺪارد‪ ‬آن را ﺑﺮاي ﻛﻼﻳﻨﺖ ﺑﺎز ﻣﻴﮕﺮداﻧﺪ‪.‬‬
‫)اﻳﻦ ﻛﺎر ﺑﺎ اﺳﻨﻔﺎده از دﺳﺘﻮرات ‪ pipe() ‬و)(‪ dup2‬اﻧﺠﺎم ﻣﻴﺸﻮد(‬
‫ﻣﻄﺎﻟﻌﻪ ي ﻓﺼﻞ ‪ 5‬از ﻛﺘﺎب ‪ Advanced‐Linux‐Programming‬ﺑﺮاي ﻓﻬﻢ ﻧﺤﻮه ي ﭘﻴﺎده ﺳﺎزي اﻳﻦ ﺳﻨﺎرﻳﻮ و‬
‫ﭘﺎﺳﺨﮕﻮﻳﻲ ﺑﻪ ﺳﻮاﻻت اﺣﺘﻤﺎﻟﻲ ﺷﻤﺎ ﺑﺴﻴﺎر ﻣﻔﻴﺪ ﺧﻮاﻫﺪ ﺑﻮد‪.‬‬