OS-HW4.pdf

‫ﻢ یﻋﺎ ﻞ‬
‫ﮫﺎر‪١٣٨٧‬‬
‫ﺗﻤﺮﻳﻦ ﻓﺼﻞ ‪4‬‬
‫ﺗﺎرﻳﺦ ﺗﺤﻮﻳﻞ‪ :‬ﭘﻴﺶ از ﻧﻴﻤﻪ ﺷﺐ ﭼﻬﺎرﺷﻨﺒﻪ ‪1387/3/1‬‬
‫ﻧﻜﺎت ﻗﺎﺑﻞ ﺗﻮﺟﻪ‬
‫‪ .1‬ﺗﻤﺮﻳﻦﻫﺎ ﺑﺎﻳﺪ اﻧﻔﺮادي اﻧﺠﺎم ﺷﻮد‪ .‬‬
‫‪ .2‬دﻳﺮﻛﺮد ‪ %25‬ﻧﻤﺮهي ﻣﻨﻔﻲ دارد و ﺑﻪ ازاي ﻫﺮ روز ‪ %5‬اﺿﺎﻓﻪ ﺧﻮاﻫﺪ ﺷﺪ‪ .‬ﭘﺲ از ﻳﻚ ﻫﻔﺘﻪ ﻧﻤﺮهاي ﺗﻌﻠﻖ‬
‫ﻧﺨﻮاﻫﺪ ﮔﺮﻓﺖ‪ .‬‬
‫‪ .3‬ﺗﻤﺎرﻳﻦ ﺑﺎﻳﺪ ﺑﻪ آدرس ‪ ceos87@gmail.com‬ﻓﺮﺳﺘﺎده ﺷﻮد‪ ،‬و ﻳﺎ ﺑﻪ ﺻﻮرت دﺳﺘﻲ ﺗﺤﻮﻳﻞ ﺷﻮد‪.‬‬
‫رﻋﺎﻳﺖ ﻗﺎﻟﺐ زﻳﺮ ﺑﺮاي ‪ e‐mail‬اﻟﺰاﻣﻲ اﺳﺖ‪ :‬‬
‫• ﻋﻨﻮان ﻣﻴﻞ‪ OS‐HW4‐StdNumber :‬‬
‫• ﺗﻨﻬﺎ‪ ‬ﻧﺎم‪ ‬و‪ ‬ﻧﺎم‪ ‬ﺧﺎﻧﻮادﮔﻲ‪ ‬و‪ ‬ﺷﻤﺎره‪ ‬داﻧﺸﺠﻮﻳﻲ‪ ‬در‪ ‬ﻣﺘﻦ‪ ‬ﻧﺎﻣﻪ ذﻛﺮ ﺷﻮد‪ .‬‬
‫• ﻓﺎﻳﻞﻫﺎ ﺑﻪ ﺻﻮرت ‪ pdf‬ﻳﺎ ‪ doc‬و ﺑﺎ ﻧﺎم ‪ OS‐HW4‐StdNumber‬ﭘﻴﻮﺳﺖ ﺷﻮد‪ .‬‬
‫‪ .1‬اﻟﻒ‪ .‬در ﭼﻪ ﺷﺮاﻳﻄﻲ ﻳﻚ راه ﺣﻞ ﭼﻨﺪرﻳﺴﻤﺎﻧﻲ ‪ 1‬ﻛﺎرآﻳﻲ ﺑﻬﺘﺮي ﻧﺴﺒﺖ ﺑﻪ ﻳﻚ راه ﺣﻞ ﺗﻚرﻳﺴﻤﺎﻧﻲ ﺑﺮ‬
‫روي ﻳﻚ ﺳﻴﺴﺘﻢ ﺗﻚ ﭘﺮدازﻧﺪه ﺧﻮاﻫﺪ داﺷﺖ؟ ‪ ‬‬
‫ب‪ .‬ﻓﺮض ﻛﻨﻴﺪ ﺳﻴﺴﺘﻤﻲ دوﭘﺮدازﻧﺪهاي در اﺧﺘﻴﺎر دارﻳﻢ‪ .‬در ﻣﻮرد ﻛﺎرآﻳﻲ اﻟﮕﻮرﻳﺘﻢﻫﺎي ﺑﺎزﮔﺸﺘﻲ‬
‫)‪ (Recursive‬ﻛﻪ ﺑﻪ ﺻﻮرت ﭼﻨﺪرﻳﺴﻤﺎﻧﻲ ﭘﻴﺎدهﺳﺎزي ﺷﻮﻧﺪ ﺑﺤﺚ ﻛﻨﻴﺪ‪ .‬ﺷﺮاﻳﻂ ﺳﺨﺖ اﻓﺰاري ﻫﻤﭽﻮن‬
‫زﻣﺎن دﺳﺘﺮﺳﻲ ﺑﻪ ﺣﺎﻓﻈﻪ‪ ،‬داﺷﺘﻦ ﺣﺎﻓﻈﻪﻫﺎي ﻧﻬﺎن ﺟﺪا و ﻧﻴﺰ ﻧﻮع ﭘﻴﺎدهﺳﺎزي و اﻟﮕﻮرﻳﺘﻢ را در ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ‪.‬‬
‫‪ .2‬ﺧﺮوﺟﻲ ﺑﺮﻧﺎﻣﻪي ﺷﻜﻞ ‪ 4.11‬از ﻛﺘﺎب در ﺧﻄﻮط ‪ C‬و ‪ P‬ﺑﺮﻧﺎﻣﻪ ﭼﻴﺴﺖ؟‬
‫‪ .3‬اﻟﮕﻮرﻳﺘﻢ ‪ Quicksort‬را ﺑﻪ ﺻﻮرت ﭼﻨﺪرﻳﺴﻤﺎﻧﻲ آن ﻃﻮر ﻛﻪ در زﻳﺮ آﻣﺪه ﭘﻴﺎدهﺳﺎزي ﻛﻨﻴﺪ و ﺑﻪ‬
‫ﭘﺮﺳﺶﻫﺎﻳﻲ ﻛﻪ در اداﻣﻪي آن ﻣﻲآﻳﺪ ﭘﺎﺳﺦ دﻫﻴﺪ‪ .‬ﺑﺮﻧﺎﻣﻪي ﺧﻮد را ﻧﻴﺰ ﺑﻨﻮﻳﺴﻴﺪ‪.‬‬
‫روش‪ :‬ﭘﺲ از ﻳﻚ ﺑﺎر ﻗﺴﻤﺖ ‪ 2‬ﻛﺮدن اﻋﺪاد‪ ،‬ﻫﺮ ﻧﻴﻤﻪ را در ﻳﻚ رﻳﺴﻤﺎن ‪ 3‬ﺑﺎ اﻟﮕﻮرﻳﺘﻢ ‪Quicksort‬‬
‫ﺗﻚرﻳﺴﻤﺎﻧﻲ ﻣﺮﺗﺐ ﻛﻨﻴﺪ‪ .‬ﺑﺮاي ﻳﺎدآوري اﻟﮕﻮرﻳﺘﻢ ‪ Quicksort‬ﺑﻪ ﻛﺘﺎب ‪Introduction to ‬‬
‫‪ Algorithms‬ﻓﺼﻞ ‪ 7‬رﺟﻮع ﻛﻨﻴﺪ‪ .‬از ﺗﺎﺑﻊ‪ qsort4 ‬ﺑﺮاي ‪ Quicksort‬ﺗﻚرﻳﺴﻤﺎﻧﻲ ﻣﻲﺗﻮاﻧﻴﺪ اﺳﺘﻔﺎده‬
‫ﻛﻨﻴﺪ‪ .‬‬
‫اﻟﻒ‪ -‬در ﺻﻮرﺗﻲ ﻛﻪ ﻳﻚ ﻛﺎﻣﭙﻴﻮﺗﺮ ﺑﺎ ﭘﺮدازﻧﺪهي دوﻫﺴﺘﻪاي در اﺧﺘﻴﺎر دارﻳﺪ ﻣﻴﺰان اﻓﺰاﻳﺶ ﺳﺮﻋﺖ ‪ 5‬را ﺑﺮ‬
‫ﻃﺒﻖ ﻓﺮﻣﻮل زﻳﺮ ﻫﻨﮕﺎﻣﻲ ﻛﻪ ﭘﺲ از اوﻟﻴﻦ ﺑﺎر ﻗﺴﻤﺖ ﻛﺮدن‪ ،‬آراﻳﻪ ﺗﻘﺮﻳﺒﺎ دو ﻧﻴﻢ ﻣﺴﺎوي ﻣﻲﺷﻮد‪ ،‬از ﻃﺮﻳﻖ‬
‫آزﻣﺎﻳﺶ ﻣﺤﺎﺳﺒﻪ ﻛﻨﻴﺪ‪.‬‬
‫‪6‬‬
‫‪tboth halfs in samethread‬‬
‫‪teach half in a separatethread‬‬
‫= ‪speedup‬‬
‫ب‪ -‬دﻻﻳﻠﻲ را ﻛﻪ ﺑﺎﻋﺚ ﻣﻲﺷﻮد ﻣﻴﺰان اﻓﺰاﻳﺶ ﺳﺮﻋﺖ ﻛﻮﭼﻚﺗﺮ از ‪ 2‬ﺑﺎﺷﺪ ذﻛﺮ ﻛﻨﻴﺪ‪.‬‬
‫‪ ‬‬
‫‪1‬‬
‫‪ multithread‬‬
‫‪ partition ‬‬
‫‪3‬‬
‫‪ thread ‬‬
‫‪4‬‬
‫‪ Remember to include stdlib.h ‬‬
‫‪5‬‬
‫‪ Speedup ‬‬
‫‪6‬‬
‫‪ This part has no points. ‬‬
‫‪2‬‬