Computer Assignment 3.pdf

‫ﺩﺭﺱ ﺳﻴﺴﺘﻢﻫﺎﯼ ﻋﺎﻣﻞ‬
‫)ﺩﻛﺘﺮ ﺟﻠﻴﻠﻲ(‬
‫ﺯﻣﺴﺘﺎﻥ ‪۱۳۸۶‬‬
‫ﺗﻤﺮﻳﻦ ﮐﺎﻣﭙﻴﻮﺗﺮﯼ ‪۳‬‬
‫ﺗﺎﺭﻳﺦ ﺗﺤﻮﻳﻞ ‪ :‬ﺷﻨﺒﻪ ‪۱۳۸۶/۱۱/۶‬‬
‫ﻧﮑﺎﺕ ﻗﺎﺑﻞ ﺗﻮﺟﻪ‬
‫‪ .۱‬ﺗﻤﺮﻳﻦﻫﺎﯼ ﮐﺎﻣﭙﻴﻮﺗﺮﯼ ﺑﺎﻳﺪ ﺩﺭ ﮔﺮﻭﻩﻫﺎﯼ ﺩﻭ ﻧﻔﺮﻩ ﺍﻧﺠﺎﻡ ﺷﻮﺩ‪.‬‬
‫‪ .۲‬ﺑﺮﻧﺎﻣﻪﻫﺎ ﺑﺎﻳﺪ ﺩﺭ ﻣﺤﻴﻂ ﻟﻴﻨﻮﮐﺲ ﻭ ﺑﺎ ﺯﺑﺎﻥ ‪ C/C++‬ﻧﻮﺷﺘﻪ ﺷﻮﻧﺪ‪.‬‬
‫‪ .۳‬ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ‪ Makefile‬ﺑﺮﺍﯼ ﺳﺎﺧﺖ ﺑﺮﻧﺎﻣﻪﻫﺎ ﺍﻟﺰﺍﻣﯽ ﺍﺳﺖ‪ .‬ﺍﻃﻼﻋﺎﺕ ﻣﺮﺑﻮﻁ ﺑﻪ ﻧﻮﺷﺘﻦ ‪ Makefile‬ﺩﺭ ﺑﺨﺶ‬
‫ﻣﻨﺎﺑﻊ ﻭﺏﺳﺎﻳﺖ ﺩﺭﺱ ﻣﻮﺟﻮﺩ ﺍﺳﺖ‪.‬‬
‫‪ .۴‬ﺗﻤﺎﺭﻳﻦ ﺑﺎﻳﺪ ﺗﺎ ﭘﺎﻳﺎﻥ ﻭﻗـﺖ ﺗﻌﻴـﻴﻦ ﺷـﺪﻩ‪ ،‬ﺑـﻪ ﺁﺩﺭﺱ ‪ [email protected]‬ﻓﺮﺳـﺘﺎﺩﻩ‬
‫ﺷﻮﻧﺪ‪.‬‬
‫‬
‫ﻋﻨﻮﺍﻥ ﻣﻴﻞ ‪CA3 :‬‬
‫‬
‫ﺫﮐﺮ ﻧﺎﻡ ﻭ ﻧﺎﻡ ﺧﺎﻧﻮﺍﺩﮔﯽ ﻭ ﺷﻤﺎﺭﻩ ﺩﺍﻧﺸﺠﻮﻳﻲ ﺩﺭ ﻣﺘﻦ ﻧﺎﻣﻪ ﺍﻟﺰﺍﻣﯽ ﺍﺳﺖ‪.‬‬
‫‬
‫ﻣﺘﻦ ﺑﺮﻧﺎﻣﻪ ﺑﻪ ﺻﻮﺭﺕ ‪ zip‬ﺷﺪﻩ ﻭ ﻓﺮﻣﺖ )‪ (family1_family2.zip‬ﭘﻴﻮﺳﺖ ﺷﻮﺩ‪.‬‬
‫‪ .۵‬ﺗﻨﻬــﺎ ﺩﺭ ﺻــﻮﺭﺕ ﺑــﺮﻭﺯ ﻣــﺸﻜﻞ ﺩﺭ ﻓﺮﺳــﺘﺎﺩﻥ ﺗﻤــﺎﺭﻳﻦ ﺑــﻪ ﺁﺩﺭﺱ ﻓــﻮﻕ‪ ،‬ﻣــﻲﺗﻮﺍﻧﻴــﺪ ﺁﻥ ﺭﺍ ﺑــﻪ ﺁﺩﺭﺱ‬
‫‪ [email protected]‬ﺑﻔﺮﺳﺘﻴﺪ‪.‬‬
‫‪CPU Scheduling‬‬
‫ﺩﺭ ﺍﻳﻦ ﺗﻤﺮﻳﻦ‪ ،‬ﺷﻤﺎ ﺑﺎﻳﺪ ﺑﺮﻧﺎﻣﻪﺍﻱ ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻳﻚ ﺯﻣﺎﻥﺑﻨﺪ ﭘﺮﺩﺍﺯﻧـﺪﻩ ﺑـﺎ ﺍﻟﮕـﻮﺭﻳﺘﻢ ‪ Round Robin‬ﺭﺍ ﺷـﺒﻴﻪﺳـﺎﺯﻱ‬
‫ﻛﻨﺪ‪ .‬ﺑﺮﻧﺎﻣﻪ ﺷﺎﻣﻞ ﺩﻭ ﻗﺴﻤﺖ ﻣﻲﺷﻮﺩ‪ :‬ﻗﺴﻤﺖ ﺍﻭﻝ ﻛﺎﺭﻫﺎﻱ ﺯﻣﺎﻥﺑﻨﺪﻱ ﻭ ﺍﺟﺮﺍﻱ ﭘﺮﺩﺍﺯﻩﻫـﺎ ﺭﺍ ﺍﻧﺠـﺎﻡ ﻣـﻲﺩﻫـﺪ ﻭ ﻗـﺴﻤﺖ‬
‫ﺩﻭﻡ‪ ،‬ﺑﻪ ﺩﺳﺘﻮﺭﺍﺕ ﻭﺭﻭﺩﻱ ﻛﺎﺭﺑﺮ ﭘﺎﺳﺦ ﻣﻲﺩﻫﺪ‪ .‬ﺍﻳﻦ ﺩﻭ ﻗـﺴﻤﺖ ﺑﺎﻳـﺪ ﺩﺭ ﺩﻭ ﺭﻳـﺴﻪﻱ )‪ (thread‬ﺟﺪﺍﮔﺎﻧـﻪ ﭘﻴـﺎﺩﻩﺳـﺎﺯﻱ‬
‫ﺷﻮﻧﺪ‪.‬‬
‫ﺩﺳﺘﻮﺭﺍﺕ‪:‬‬
‫ﺃ‪-‬‬
‫‪ - create‬ﺍﻳﻦ ﺩﺳﺘﻮﺭ‪ ،‬ﺑﺮﺍﻱ ﺍﺟﺮﺍﻱ ﭘﺮﺩﺍﺯﻩﻱ ﺟﺪﻳﺪ ﺑﻪ ﻛﺎﺭ ﻣﻲﺭﻭﺩ ﻭ ﻋﻤﻠﻜﺮﺩ ﺁﻥ ﺩﺭ ﻣﺜﺎﻝ ﺯﻳﺮ ﻧـﺸﺎﻥ‬
‫ﺩﺍﺩﻩ ﺷﺪﻩ ﺍﺳﺖ‪:‬‬
‫‪-١-‬‬
‫‪Example:‬‬
‫‪/>create procName‬‬
‫‪Please Enter Number of CPU and IO Bursts: 5‬‬
‫‪: 2‬‬
‫‪: 5‬‬
‫‪: 12‬‬
‫‪: 4‬‬
‫‪: 6‬‬
‫‪The Process Added by PID 1234‬‬
‫>‪/‬‬
‫ﺗﻮﺟﻪ ﺷﻮﺩ ﻛﻪ ﺗﻌﺪﺍﺩ ‪burst time‬ﻫﺎﺑﺎﻳﺴﺘﻲ ﻓﺮﺩ ﺑﺎﺷﺪ )ﭼﺮﺍ؟(‪ .‬ﺑﺮﺍﻱ ﺳﺎﺩﮔﻲ ﻣﻲﺗﻮﺍﻧﻴﺪ ﻣﺎﻛﺰﻳﻤﻢ ﺗﻌﺪﺍﺩ‬
‫‪burst time‬ﻫﺎ ﺭﺍ ﻣﻘﺪﺍﺭ ﺛﺎﺑﺘﻲ ﺩﺭ ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ‪.‬‬
‫ﺏ‪ - ps -‬ﻭﺿﻌﻴﺖ ﺟﺎﺭﻱ ﭘﺮﺩﺍﺯﻩﻫﺎ ﺭﺍ ﻧﺸﺎﻥ ﻣﻲﺩﻫﺪ‪.‬‬
‫‪Example:‬‬
‫‪/>kill 1234‬‬
‫‪Process procName Terminated.‬‬
‫‪/>ps‬‬
‫‪Name PID state‬‬
‫‪another1 1231 ready‬‬
‫‪another2 131 run‬‬
‫‪another2 121 wait‬‬
‫‪another4 231 ready‬‬
‫ﺕ‪ - kill -‬ﻳﻚ ﭘﺮﺩﺍﺯﻩ ﺭﺍ ﻣﺘﻮﻗﻒ ﻣﻲﻛﻨﺪ )ﺍﺯ ﺳﻴﺴﺘﻢ ﺣﺬﻑ ﻣﻲﻛﻨﺪ(‪.‬‬
‫ﺙ‪ - quit -‬ﺍﺯ ﺑﺮﻧﺎﻣﻪ ﺧﺎﺭﺝ ﻣﻲﺷﻮﺩ‪.‬‬
‫‪Example:‬‬
‫‪/>quit‬‬
‫‪CPU Idle = 10%‬‬
‫‪Average Waiting Time = 15.34‬‬
‫‪Average Response Time = 5.56‬‬
‫”‪You can see log file in “logFileAddr‬‬
‫‪:Log File‬‬
‫ﺑﺮﻧﺎﻣﻪ ﺑﺎﻳﺪ ﻳﻚ ﻓﺎﻳﻞ ‪ log‬ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ ﻛﻪ ﺭﺧﺪﺍﺩﻫﺎﻱ ﻣﻬﻢ ﺭﺍ ﺛﺒﺖ ﻧﻤﺎﻳﺪ‪ .‬ﻣﻮﺍﺭﺩﻱ ﻛﻪ ﺛﺒﺖ ﻣﻲﺷﻮﻧﺪ ﻋﺒﺎﺭﺗﻨﺪ ﺍﺯ‪ :‬ﺳﺎﺧﺘﻦ‬
‫ﭘﺮﺩﺍﺯﻩ‪ ،‬ﺗﻤﺎﻡ ﺷﺪﻥ ﭘﺮﺩﺍﺯﻩ ﺑﻪ ﺻﻮﺭﺕ ﻧﺮﻣﺎﻝ‪ ،‬ﻣﺘﻮﻗﻒ ﺷﺪﻥ ﭘﺮﺩﺍﺯﻩ ﺑﺎ ﺩﺳﺘﻮﺭ ‪ ،kill‬ﮔﺮﻓﺘﻦ ‪ .CPU‬ﺑﺮﺍﻱ ﻣﺜﺎﻝ ﻓﺮﺽ ﻛﻨﻴـﺪ‬
‫ﻛﻪ ﻛﺎﺭﺑﺮ ﺩﻭ ﭘﺮﺩﺍﺯﻩ ﺩﺭ ﺯﻣﺎﻥﻫﺎﻱ ‪ ۲‬ﻭ ‪ ۴‬ﺑﺴﺎﺯﺩ )ﺑﻪ ﺻﻮﺭﺕ ﺯﻳﺮ(‪:‬‬
‫‪-٢-‬‬
Example:
/>create p1
Please Enter Number of CPU and IO Bursts: 3
: 2
: 5
: 3
The Process Added by PID 100
/>create p1
Please Enter Number of CPU and IO Bursts: 3
: 1
: 3
: 1
The Process Added by PID 101
:‫ ﺑﻪ ﺻﻮﺭﺕ ﺯﻳﺮ ﺧﻮﺍﻫﺪ ﺑﻮﺩ‬log ‫ ﻓﺎﻳﻞ‬،‫ﺑﺮﺍﻱ ﻣﺜﺎﻝ ﻓﻮﻕ‬
Log File:
Time:
Event:
(time slice = 1)
-----------------------------------------------0:
CPU idle.
1:
CPU idle.
2:
p1 (100) added to system.
2:
p1 (100) gets the CPU.
3:
p1 (100) gets the CPU.
4:
p2 (101) added to system.
4:
p2 (101) gets the CPU.
5:
CPU idle.
6:
CPU idle.
7:
CPU idle.
8:
p2 (101) gets the CPU.
8:
p2 (101) terminated.
9:
p1 (100) gets the CPU.
10:
p1 (100) gets the CPU.
11:
p1 (100) gets the CPU.
11:
p1 (100) terminated.
12:
CPU idle.
13:
CPU idle.
‫ﻧﻜﺎﺕ ﭘﻴﺎﺩﻩﺳﺎﺯﻱ‬
.‫ ﺭﺍ ﺑﻪ ﺩﻗﺖ ﻣﻄﺎﻟﻌﻪ ﻓﺮﻣﺎﻳﻴﺪ‬Round-Robin ‫ ﺍﻟﮕﻮﺭﻳﺘﻢ ﺯﻣﺎﻥﺑﻨﺪﻱ‬،‫ﻗﺒﻞ ﺍﺯ ﻧﻮﺷﺘﻦ ﺑﺮﻧﺎﻣﻪ‬
•
‫ ﺑـﻪ‬.‫( ﻭ ﺯﻣﺎﻥ ﺁﻥ ﺑﻪ ﻋﻨﻮﺍﻥ ﻭﺭﻭﺩﻱ ﺑﺮﻧﺎﻣﻪﻱ ﺍﺻـﻠﻲ ﺩﺍﺩﻩ ﻣـﻲﺷـﻮﺩ‬time slice) ‫ﺗﻌﺪﺍﺩ ﻗﻄﻌﻪﻫﺎﻱ ﺯﻣﺎﻧﻲ‬
:‫ﻋﻨﻮﺍﻥ ﻣﺜﺎﻝ‬
•
#> ./progName 5 20
‫ ﻭﺍﺣﺪ ﺯﻣﺎﻧﻲ ﺍﺳـﺖ ﻭ ﻫـﺮ ﻭﺍﺣـﺪ ﺯﻣـﺎﻧﻲ‬۵ Round-Robin ‫ ﺍﻟﮕﻮﺭﻳﺘﻢ‬time slice ‫ﺑﺪﻳﻦ ﻣﻌﻨﺎﺳﺖ ﻛﻪ‬
.‫ ﺛﺎﻧﻴﻪ ﻃﻮﻝ ﻣﻲﻛﺸﺪ‬۲۰
‫ ﺩﺍﺭﻳـﻢ( ﻭ ﺍﮔـﺮ‬CPU ‫ ﺑﺎﺷﺪ )ﭼﻮﻥ ﺗﻨﻬﺎ ﻳﻚ‬running ‫ ﺗﻨﻬﺎ ﻳﻚ ﭘﺮﺩﺍﺯﻩ ﻣﻲﺗﻮﺍﻧﺪ ﺩﺭ ﺣﺎﻟﺖ‬،‫ﺩﺭ ﻫﺮ ﺯﻣﺎﻥ‬
.‫ ﺑﺎﺷﺪ‬ready ‫ ﻫﻴﭻ ﭘﺮﺩﺍﺯﻩﺍﻱ ﻧﺒﺎﻳﺪ ﺩﺭ ﺻﻒ‬،‫ ﻧﺒﺎﺷﺪ‬running ‫ﭘﺮﺩﺍﺯﻩﺍﻱ ﺩﺭ ﺣﺎﻟﺖ‬
-٣-
•