🎧 New: AI-Generated Podcasts Turn your study notes into engaging audio conversations. Learn more

split_5572076435966801098.pdf

Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...

Full Transcript

‫ﻫﻴﻜﻠﺔ ﻧﻈﻢ ﺍﻟﺘﺸﻐﻴﻞ‬ ‫‪Operating System Structures‬‬ ‫ﺇﻥ ﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ ﻫﻮ ﺍﻷﺳﺎﺱ ﺍﳌﺘﺤﻜﻢ ﰲ ﺗﺼﺮﻓﺎﺕ ﺃﺟﻬﺰﺓ ﺍﳊﺎﺳﺐ ﺍﻵﱄ ‪ ,‬ﻓﻬﻮ ﻳﻘﻮﻡ ﺑﺘﻮﻓﲑ ﺍﻟﺒﻴﺌﺔ ﺍﳌﻨﺎﺳﺒﺔ‬ ‫ﻟﺘﻨﻔﻴﺬ ﻭﺗﺸﻐﻴﻞ ﺍﻟﱪﺍﻣﺞ‪ ,‬ﺃﻱ ﺃﻧﻨﺎ ﻟﻦ ﻧﺴﺘﻄﻴﻊ ﺍﻟﻌﻤﻞ ﻭ ﺗﺸﻐﻴﻞ ﺍﻟﱪﺍﻣﺞ ﻋﻠﻰ ﺃﺟﻬﺰﺗﻨﺎ ﺑﺪﻭﻥ ﺗﻮﺍﺟﺪ ﻧﻈﺎﻡ‬...

‫ﻫﻴﻜﻠﺔ ﻧﻈﻢ ﺍﻟﺘﺸﻐﻴﻞ‬ ‫‪Operating System Structures‬‬ ‫ﺇﻥ ﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ ﻫﻮ ﺍﻷﺳﺎﺱ ﺍﳌﺘﺤﻜﻢ ﰲ ﺗﺼﺮﻓﺎﺕ ﺃﺟﻬﺰﺓ ﺍﳊﺎﺳﺐ ﺍﻵﱄ ‪ ,‬ﻓﻬﻮ ﻳﻘﻮﻡ ﺑﺘﻮﻓﲑ ﺍﻟﺒﻴﺌﺔ ﺍﳌﻨﺎﺳﺒﺔ‬ ‫ﻟﺘﻨﻔﻴﺬ ﻭﺗﺸﻐﻴﻞ ﺍﻟﱪﺍﻣﺞ‪ ,‬ﺃﻱ ﺃﻧﻨﺎ ﻟﻦ ﻧﺴﺘﻄﻴﻊ ﺍﻟﻌﻤﻞ ﻭ ﺗﺸﻐﻴﻞ ﺍﻟﱪﺍﻣﺞ ﻋﻠﻰ ﺃﺟﻬﺰﺗﻨﺎ ﺑﺪﻭﻥ ﺗﻮﺍﺟﺪ ﻧﻈﺎﻡ‬ ‫ﺗﺸﻐﻴﻞ ﰲ ﺍﳉﻬﺎﺯ ﻳﺘﺤﻜﻢ ﰲ ﺍﻟﻌﻤﻠﻴﺎﺕ ﺍﳌﺨﺘﻠﻔﺔ‪.‬‬ ‫ﺗ‪‬ﻮﻓﹼﺮ ﻧﻈﻢ ﺍﻟﺘﺸﻐﻴﻞ ﻟﻠﻤﺴﺘﺨﺪﻣﲔ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﳋﺪﻣﺎﺕ ﺍﻟﱵ ﺳﻨﺘﻄﺮﻕ ﺇﻟﻴﻬﺎ ﰲ ﻫﺬﺍ ﺍﻟﻔﺼﻞ‪.‬ﻛﻤﺎ ﺳﻨﺘﺤﺪﺙ‬ ‫ﻋﻦ ﻋﺪﺩ ﻣﻦ ﺍﳌﻔﺎﻫﻴﻢ ﺍﳌﻬﻤﺔ ﻋﻦ ﻧﻈﻢ ﺍﻟﺘﺸﻐﻴﻞ ﻭ ﺗﺮﻛﻴﺒﻬﺎ‪ ,‬ﻭﻃﺮﻕ ﺗﻔﺎﻋﻠﻬﺎ ﻣﻊ ﺍﳌﺴﺘﺨﺪﻣﲔ‪.‬‬ ‫ﺃﻫﺪﺍﻑ ﻫﺬﺍ ﺍﻟﻔﺼﻞ‪:‬‬ ‫ ﺍﻟﺘﻌﺮﻑ ﻋﻠﻰ ﺍﳋﺪﻣﺎﺕ ﺍﻟﱵ ﺗﻮﻓﺮﻫﺎ ﻧﻈﻢ ﺍﻟﺘﺸﻐﻴﻞ ﺍﳌﺨﺘﻠﻔﺔ ﳌﺴﺘﺨﺪﻣﻴﻬﺎ‪.‬‬ ‫ ﺍﻟﺘﻌﺮﻑ ﻋﻠﻰ ﺍﻟﻮﺍﺟﻬﺎﺕ ﺍﻟﱵ ﻳﺘﻢ ﻣﻦ ﺧﻼﳍﺎ ﺍﻟﺘﻔﺎﻋﻞ ﺑﲔ ﺍﳌﺴﺘﺨﺪﻡ ﻭﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ‪.‬‬ ‫ ﻣﻌﺮﻓﺔ ﻃﺮﻕ ﺍﻻﺗﺼﺎﻝ ﺑﲔ ﺃﺟﺰﺍﺀ ﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ‪.‬‬ ‫ ﻣﻌﺮﻓﺔ ﺍﻟﻄﺮﻕ ﺍﳌﺨﺘﻠﻔﺔ ﻟﺒﻨﺎﺀ ﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ‪.‬‬ ‫ ﻛﺬﻟﻚ ﺍﻟﺘﻌﺮﻑ ﻋﻠﻰ ﺑﻌﺾ ﺍﳌﻔﺎﻫﻴﻢ ﺍﳌﻬﻤﺔ ﻣﺜﻞ ﺍﻵﻻﺕ ﺍﻻﻓﺘﺮﺍﺿﻴﺔ ﻭ ﺗﻨﺸﺌﺔ ﺍﻟﻨﻈﺎﻡ‪.‬‬ ‫ﰎ ﲨﻊ ﻫﺬﺍ ﺍﻟﻔﺼﻞ ﺑﻮﺍﺳﻄﺔ ﻗﻄﺮﺍﻟﻨﺪﻯ ﻋﺒﺪﺍﻟﺮﲪﻦ ﺍﻟﺴﻤﺎﻋﻴﻞ )‪([email protected]‬‬ ‫ﺍﳋﺮﻳﻄﺔ ﺍﻟﺬﻫﻨﻴﺔ ﻟﻠﻔﺼﻞ‪:‬‬ ‫ﺃﻭ ﹰﻻ‪ :‬ﺧﺪﻣﺎﺕ ﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ‪(Operating System Services)2‬‬ ‫ﻳﻮﻓﺮ ﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ ﺧﺪﻣﺎﺕ ﻣﻌﻴﻨﺔ ﻟﻠﱪﺍﻣﺞ ﺍﻟﱵ ﻳﻘﻮﻡ ﺑﺘﻨﻔﻴﺬﻫﺎ ﻛﻤﺎ ﻳﻮﻓﺮ ﺧﺪﻣﺎﺕ ﳌﺴﺘﺨﺪﻣﻲ ﻫﺬﻩ ﺍﻟﱪﺍﻣﺞ‪،‬‬ ‫ﻭﺑﺎﻟﻄﺒﻊ ﻓﺈﻥ ﺗﻮﻓﲑ ﻫﺬﻩ ﺍﳋﺪﻣﺎﺕ ﳜﺘﻠﻒ ﻣﻦ ﻧﻈﺎﻡ ﺗﺸﻐﻴﻞ ﺇﱃ ﺁﺧﺮ ﻭﻟﻜﻨﻬﺎ ﺗﺮﺗﺒﻂ ﰲ ﺑﻌﺾ ﺍﻷﻭﺟﻪ‪.‬‬ ‫ﻭﺳﻮﻑ ﻧﺘﻄﺮﻕ ﰲ ﻣﻮﺿﻮﻋﻨﺎ ﻫﺬﺍ ‪‬ﻤﻮﻋﺔ ﻣﻦ ﺗﻠﻚ ﺍﳋﺪﻣﺎﺕ ﺍﻟﱵ ﻳﻮﻓﺮﻫﺎ ﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ‪.‬‬ ‫ﺃﻭ ﹰﻻ‪ :‬ﺧﺪﻣﺎﺕ ﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ ﺍﻟﱵ ﺗﺴﺎﻋﺪ ﺍﳌﺴﺘﺨﺪﻡ ﺑﺸﻜﻞ ﻣﺒﺎﺷﺮ ‪:‬‬ ‫‪ -1‬ﻭﺍﺟﻬــﺔ ﺍﳌﺴﺘﺨـﺪﻡ)‪:(User Interface‬‬ ‫ﲨﻴﻊ ﺃﻧﻈﻤﺔ ﺍﻟﺘﺸﻐﻴﻞ ﲢﺘﻮﻱ ﻋﻠﻰ ﻭﺍﺟﻬﺔ ﻟﻠﻤﺴﺘﺨﺪﻡ ﻭﺗﺄﺧﺬ ﻫﺬﻩ ﺍﻟﻮﺍﺟﻬﺔ ﺃﻛﺜﺮ ﻣﻦ ﺷﻜﻞ‪ ,‬ﻭﻣﻦ ﺃﺷﻜﺎﻝ‬ ‫ﻭﺍﺟﻬﺔ ﺍﳌﺴﺘﺨﺪﻡ‪:‬‬ ‫‪ ( Command Line Interface-CLI).1‬ﺃﻱ ﺍﻟﻮﺍﺟﻬﺔ ﺍﻟﻨﺼﻴﺔ‪.‬‬ ‫‪ ( Graphical User Interface-GUI).2‬ﺃﻱ ﺍﻟﻮﺍﺟﻬﺔ ﺍﻟﺮﺳﻮﻣﻴﺔ‪ ،‬ﻭﻫﻲ ﺍﻷﻛﺜﺮ ﺷﻴﻮﻋﹰﺎ‬ ‫ﻭﺍﺳﺘﺨﺪﺍﻣﹰﺎ‪.‬‬ ‫ﻭﺍﳉﺪﻳﺮ ﺑﺎﻟﺬﻛﺮ ﺃﻥ ﺑﻌﺾ ﺍﻷﻧﻈﻤﺔ ﻣﺰﻭﺩﺓ ﺑﺎﺛﻨﲔ ﺃﻭ ﺛﻼﺛﺔ ﻣﻦ ﺍﻟﻮﺍﺟﻬﺎﺕ ﺍﳌﺨﺘﻠﻔﺔ‪.‬‬ ‫‪ -2‬ﺗﻨﻔﻴﺬ ﺍﻟﱪﺍﻣــﺞ)‪:( Program Execution‬‬ ‫ﳚﺐ ﺃﻥ ﻳﻜﻮﻥ ﻟﻨﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ ﻗﺪﺭﺓ ﻛﺎﻓﻴﺔ ﻟﺘﺤﻤﻴﻞ ﺍﻟﱪﺍﻣﺞ ﰲ ﺍﻟﺬﺍﻛﺮﺓ ﻭﺗﻨﻔﻴﺬ ﺗﻠﻚ ﺍﻟﱪﺍﻣﺞ‪ ,‬ﻭﳚﺐ ﺃﻳﻀﹰﺎ ﺃﻥ‬ ‫ﻳﻜﻮﻥ ﻣﺆﻫﻼ ﻻﺧﺘﺘﺎﻡ ﺍﻟﺘﻄﺒﻴﻖ ﺑﻄﺮﻳﻘﺔ ﺇﻣﺎ ﻋﺎﺩﻳﺔ ﺃﻭ ﻏﲑ ﻋﺎﺩﻳﺔ ‪-‬ﻋﻨﺪ ﻭﺟﻮﺩ ﺑﻌﺾ ﺍﻷﺧﻄﺎﺀ‪.-‬‬ ‫‪ -3‬ﻋﻤﻠﻴﺎﺕ ﺍﻹﺩﺧﺎﻝ ﻭﺍﻹﺧﺮﺍﺝ ) ‪:(I/O Operations‬‬ ‫ﺇﻥ ﺃﻱ ﺑﺮﻧﺎﻣﺞ ﻳﺘﻢ ﺗﻄﺒﻴﻘﻪ ﻗﺪ ﻳﻜﻮﻥ ﲝﺎﺟﺔ ﺇﱃ ﻋﻤﻠﻴﺎﺕ ﺇﺩﺧﺎﻝ ﻭﺇﺧﺮﺍﺝ ﲝﻴﺚ ﻳﻘﻮﻡ ﺑﻄﻠﺐ ﻣﻠﻒ ﻣﻌﲔ ﺃﻭ‬ ‫ﺃﺟﻬﺰﺓ ﺍﻹﺩﺧﺎﻝ ﻭﺍﻹﺧﺮﺍﺝ‪.‬‬ ‫‪ 2‬إاد‪()S :‬ر ا&‪(OPQ‬ﻥ‪ ,M‬إی‪(X‬ن ا&‪W‬ه‪U‬اﻥ‪ ,M‬ﺱ‪ ["X‬ا&‪W")Z‬ان‬ ‫ﳚﺐ ﺃﻥ ﻳﻜﻮﻥ ﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ ﻫﻮ ﺍﻟﻮﺳﻴﻠﺔ ﻟﻠﻘﻴﺎﻡ ﺑﺎﻹﺩﺧﺎﻝ ﻭﺍﻹﺧﺮﺍﺝ ﻭﺫﻟﻚ ﻷﻥ ﺍﳌﺴﺘﺨﺪﻡ ﻻ ﻳﺴﺘﻄﻴﻊ ﻋﺎﺩﺓ‬ ‫ﺃﻥ ﻳﺘﺤﻜﻢ ﺑﺎﳌﺪﺧﻼﺕ ﻭﺍﳌﺨﺮﺟﺎﺕ ﻣﺒﺎﺷﺮﺓ ﻭﺫﻟﻚ ﳊﻤﺎﻳﺘﻬﺎ ﻭﺯﻳﺎﺩﺓ ﺍﻟﻔﻌﺎﻟﻴﺔ‪.‬‬ ‫‪ -4‬ﺗﺸﻜﻴﻞ ﻧﻈـﺎﻡ ﺍﳌﻠﻔـﺎﺕ)‪:(File System Manipulation‬‬ ‫ﻟﻨﻈﺎﻡ ﺍﳌﻠﻔﺎﺕ ﺍﻫﺘﻤﺎﻡ ﺧﺎﺹ ﰲ ﻧﻈﻢ ﺍﻟﺘﺸﻐﻴﻞ‪.‬ﻭﺫﻟﻚ ﻷﻥ ﺍﻟﱪﺍﻣﺞ ﺗﻘﻮﻡ ﺑﻌﻤﻠﻴﺎﺕ ﻛﺜﲑﺓ ﻋﻠﻰ ﺍﳌﻠﻔﺎﺕ‬ ‫ﻛﻘﺮﺍﺀﺓ ﻭﻛﺘﺎﺑﺔ ﺍﳌﻠﻔﺎﺕ‪ ,‬ﻭﺗﻜﻮﻳﻦ ﻭﺣﺬﻑ ﻫﺬﻩ ﺍﳌﻠﻔﺎﺕ ﻭﺍﻷﺩﻟﺔ ﻣﻦ ﺧﻼﻝ ﺍﲰﻬﺎ ﺃﻭ ﺍﻟﺒﺤﺚ ﻋﻦ ﻣﻠﻒ‬ ‫ﻣﻌﲔ‪ ,‬ﻭﻏﲑﻫﺎ ﺍﻟﻜﺜﲑ ﻣﻦ ﺍﻟﻌﻤﻠﻴﺎﺕ ﺍﻟﱵ ﺗﺘﻢ ﻋﻠﻰ ﺍﳌﻠﻔﺎﺕ ﻭﺍﻷﺩﻟﺔ‪.‬‬ ‫‪ -5‬ﺍﻻﺗﺼﺎﻻﺕ )‪:(communications‬‬ ‫ﻗﺪ ﲢﺘﺎﺝ ﺍﻟﻌﻠﻤﻴﺎﺕ ﰲ ﺑﻌﺾ ﺍﳊﺎﻻﺕ ﻟﻼﺗﺼﺎﻝ ﻣﻊ ﺑﻌﻀﻬﺎ ﺍﻟﺒﻌﺾ ﻟﺘﺒﺎﺩﻝ ﺍﳌﻌﻠﻮﻣﺎﺕ ﻭﺍﻟﺒﻴﺎﻧﺎﺕ ﻭﻣﺸﺎﺭﻛﺘﻬﺎ‬ ‫ﻓﻴﻤﺎ ﺑﻴﻨﻬﺎ‪.‬ﻭﻫﺬﺍ ﺍﻻﺗﺼﺎﻝ ﻗﺪ ﻳﻜﻮﻥ ﻋﻠﻰ ﻧﻔﺲ ﺍﳊﺎﺳﻮﺏ ﺃﻭ ﻋﻠﻰ ﺣﺎﺳﺒﺎﺕ ﳐﺘﻠﻔﺔ ﻋﱪ ﺷﺒﻜﺔ‪.‬ﻭﻫﺬﻩ‬ ‫ﺍﳌﺸﺎﺭﻛﺔ ﺗﺘﻢ ﺑﻄﺮﻳﻘﺘﲔ ﳘﺎ ‪ :‬ﺍﻟﺬﺍﻛﺮﺓ ﺍﳌﺸﺘﺮﻛﺔ ) ‪ ( shared memory‬ﺃﻭ ﻋﻦ ﻃﺮﻳﻖ ﺍﻟﺮﺳﺎﺋﻞ‬ ‫ﺍﻟﻌﺎﺑﺮﺓ )‪. (message passing‬‬ ‫‪ -6‬ﻛﺸﻒ ﺍﳋﻄﺄ)‪:(Error Detection‬‬ ‫ﺇﻥ ﺧﻄﺄ ﻭﺍﺣﺪ ﻣﻦ ﺟﺰﺀ ﻣﻦ ﺍﻟﻨﻈﺎﻡ ﻗﺪ ﻳﺴﺒﺐ ﻋﻄﻞ ﻛﺎﻣﻞ ﰲ ﺍﻟﻨﻈﺎﻡ! ﻟﺘﻔﺎﺩﻱ ﻣﺜﻞ ﻫﺬﻩ ﺍﳌﺸﻜﻠﺔ ﻳﻘﻮﻡ ﻧﻈﺎﻡ‬ ‫ﺍﻟﺘﺸﻐﻴﻞ ﲟﺮﺍﻗﺒﺔ ﺍﻟﻨﻈﺎﻡ ﺑﺸﻜﻞ ﻣﺴﺘﻤﺮ ﻻﻛﺘﺸﺎﻑ ﺍﻷﺧﻄﺎﺀ ﺍﻟﱵ ﻗﺪ ﲢﺪﺙ ﻭﻳﻘﻮﻡ ﺑﺎﻹﺟﺮﺍﺀﺍﺕ ﺍﳌﻨﺎﺳﺒﺔ‬ ‫ﻟﺘﺼﺤﻴﺤﻬﺎ ﻋﻨﺪ ﺣﺪﻭﺛﻬﺎ‪.‬‬ ‫ﺛﺎﻧﻴﺎ‪ :‬ﳎﻤﻮﻋﺔ ﺃﺧﺮﻯ ﻣﻦ ﺧﺪﻣﺎﺕ ﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ ﻣﻮﺟﻮﺩﺓ ﻟﻀﻤﺎﻥ ﻛﻔﺎﺀﺓ ﺗﺸﻐﻴﻞ ﺍﻟﻨﻈﺎﻡ ﻋﱪ ﺗﻘﺎﺳﻢ‬ ‫ﺍﳌﻮﺍﺭﺩ)‪:(resource sharing‬‬ ‫‪ -1‬ﲣﺼﻴﺺ ﺍﳌﻮﺍﺭﺩ )‪: (Resource allocation‬‬ ‫ﺇﺫﺍ ﻭ‪‬ﺟﺪ ﻟﺪﻳﻨﺎ ﺃﻛﺜﺮ ﻣﻦ ﻣﺴﺘﺨﺪﻡ ‪ ،‬ﺃﻭ ﺃﻛﺜﺮ ﻣﻦ ﻋﻤﻞ ﻳﺘﻢ ﺗﻨﻔﻴﺬﻩ ﺑﻨﻔﺲ ﺍﻟﻮﻗﺖ ‪ ،‬ﳚﺐ ﺃﻥ ﻳﺘﻢ ﲣﺼﻴﺺ‬ ‫ﺍﳌﻮﺍﺭﺩ ﻟﻜ ٍﻞ ﻣﻨﻬﻢ ‪ ،‬ﻭﺗﻮﺟﺪ ﻋﺪﺓ ﺃﻧﻮﺍﻉ ﻣﻦ ﺍﳌﻮﺍﺭﺩ ‪ ,‬ﺑﻌﻀﻬﺎ ﲢﺘﺎﺝ ﺇﱃ ﲣﺼﻴﺺ ﻛﻮﺩ ﺧﺎﺹ ﻣﺜﻞ ‪ :‬ﺍﻟﺬﺍﻛﺮﺓ‬ ‫ﺍﻟﺮﺋﻴﺴﻴﺔ ﻭﲣﺰﻳﻦ ﺍﳌﻠﻔﺎﺕ ‪ ،‬ﻭﺃﺧﺮﻯ ﻛﺄﺟﻬﺰﺓ ﺍﻹﺩﺧﺎﻝ ﻭﺍﻹﺧﺮﺍﺝ ﺗﺘﻄﻠﺐ ﻛﻮﺩ ﻋﺎﻡ‪.‬‬ ‫‪ -2‬ﺍﶈﺎﺳﺒﺔ )‪: (Accounting‬‬ ‫ﺗﺴﺘﺨﺪﻡ ﻫﺬﻩ ﺍﳋﺪﻣﺔ ﻣﻦ ﺃﺟﻞ ﺗﺘﺒﻊ ﺍﳌﺴﺘﺨﺪﻣﲔ ‪ ،‬ﻭﻣﻌﺮﻓﺔ ﺃﻧﻮﺍﻉ ﺍﳌﻮﺍﺭﺩ ﺍﳌﺴﺘﺨﺪﻣﺔ ﻣﻦ ﻗﺒﻞ ﻛﻞ ﻣﺴﺘﺨﺪﻡ ‪.‬‬ ‫‪ -3‬ﺍﳊﻤﺎﻳﺔ ﻭﺍﻷﻣﻦ )‪: (Protection and security‬‬ ‫ﺍﻷﺷﺨﺎﺹ ﺍﻟﺬﻳﻦ ﳝﺘﻠﻜﻮﻥ ﻣﻌﻠﻮﻣﺎﺕ ﰲ ﺃﺟﻬﺰﺓ ﻣﻮﺻﻮﻟﺔ ﺑﺸﺒﻜﺔ ﺃﻭ ﰲ ﺟﻬﺎﺯ ﻳﺴﺘﺨﺪﻣﻪ ﻋﺪﺩ ﻣﻦ‬ ‫ﺍﳌﺴﺘﺨﺪﻣﲔ‪ ،‬ﻳﺮﻳﺪﻭﻥ ﺿﻤﺎﻥ ﲪﺎﻳﺔ ﺍﳌﻌﻠﻮﻣﺎﺕ ‪ ،‬ﻭﻋﺪﻡ ﺗﺪﺍﺧﻞ ﺍﻟﻌﻤﻠﻴﺎﺕ ﺍﻟﱵ ﺗﺘﻢ ﺑﻨﻔﺲ ﺍﻟﻮﻗﺖ ﻣﻊ ﺑﻌﻀﻬﺎ‬ ‫ﺍﻟﺒﻌﺾ ‪.‬‬ ‫ﺍﳌﺼﺎﺩﺭ‪:‬‬ ‫ ‬ ‫‪Operating system Concepts (Seventh Edition): Abraham Silberschatz,Peter Baer‬‬ ‫‪Galvin,Greg Gagne‬‬ ‫ ‬ ‫‪http://www.personal.kent.edu/~rmuhamma/OpSystems/Myos/sysService.htm‬‬ ‫ﺛﺎﻧﻴﹰﺎ‪ :‬ﻭﺍﺟﻬﺔ ﻣﺴﺘﺨﺪﻡ ﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ‪(User Operating System Interface)3‬‬ ‫ﻭﺍﺟﻬﺔ ﻣﺴﺘﺨﺪﻡ ﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ ﻫﻲ ﺍﻟﻮﺍﺟﻬﺔ ﺍﳌﺮﺋﻴﺔ ﳌﺴﺘﺨﺪﻣﻲ ﺍﻟﻨﻈﺎﻡ‪.‬ﻭﻫﻲ ﻋﺒﺎﺭﺓ ﻗﺸﺮﺓ ) ‪ (shell‬ﺃﻭ‬ ‫ﻏﻼﻑ ﻟﻨﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ‪.‬ﻭﻫﻲ ﺑﺮﻧﺎﻣﺞ ﻳﻌﻤﻞ ﰲ ﺍﻟﻄﺒﻘﺔ ﺍﻟﻌﻠﻴﺎ ﻣﻦ ﺍﻟﻨﻈﺎﻡ ﻭﻳﺘﻴﺢ ﻟﻠﻤﺴﺘﺨﺪﻣﲔ ﺇﺻﺪﺍﺭ ﺍﻷﻭﺍﻣﺮ‬ ‫ﺇﻟﻴﻪ‪.‬‬ ‫ﻓﺎﻟﻘﺸﺮﺓ ﻟﻴﺴﺖ ﺳﻮﻯ ﺑﺮﻧﺎﻣﺞ ﺧﺪﻣﺔ ﻹﺩﺧﺎﻝ ﺍﻷﻭﺍﻣﺮ ﻭﺍﻟﻮﺻﻮﻝ ﺇﱃ ﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ‪ ,‬ﺃﻱ ﺃ‪‬ﺎ ﰲ ﺃﻏﻠﺐ‬ ‫ﺍﻷﺣﻴﺎﻥ ﻻ ﲤﺜﻞ ﺟﺰﺀﹰﺍ ﻣﻦ ﺟﻮﻫﺮ ﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ‪.‬‬ ‫ﻳﻮﺟﺪ ﻟﻨﻈﺎﻡ ﻳﻮﻧﻴﻜﺲ ﻋﺪﺩ ﻣﻦ ﺍﻟﻘﺸﺮﻳﺎﺕ ‪ ،‬ﻣﺜﻞ ‪ ،Bourne,Bash‬ﻭ‪ ، Korn‬ﻭ‪ ،C‬ﻭ ‪Bourne‬‬ ‫‪.Again‬ﻭﻣﺴﺘﺨﺪﻣﻮ ﻳﻮﻧﻴﻜﺲ ﻳﻔﻀﻠﻮﻥ ﺍﻟﻘﺸﺮﻳﺔ ﺍﻟﱵ ﳜﺘﺎﺭﻭ‪‬ﺎ‪ ،‬ﻓﻴﺴﺘﻐﻠﻮﻥ ﺇﻣﻜﺎﻧﻴﺎ‪‬ﺎ ﺍﻟﻜﺎﻣﻨﺔ‪ ،‬ﻭﻳﻀﺒﻄﻮ‪‬ﺎ‬ ‫ﻟﺘﺼﺒﺢ ﻣﻨﺎﺳﺒﺔ ﻟﺒﻴﺌﺎﺕ ﻋﻤﻠﻬﻢ‪ ،‬ﻭﻳﻨﺸﺌﻮﻥ ﺍﻷﲰﺎﺀ ﺍﳌﺴﺘﻌﺎﺭﺓ ﻟﻸﻭﺍﻣﺮ ﺍﻟﱵ ﻳﺴﺘﺨﺪﻣﻮ‪‬ﺎ ﺑﻜﺜﺮﺓ‪ ،‬ﻭﻳﻜﺘﺒﻮﻥ ﺑﺮﺍﻣﺞ‬ ‫ﻟﺘﻨﻔﻴﺬ ﺑﻌﺾ ﺃﻭﺍﻣﺮ ﺍﻟﻨﻈﺎﻡ ﺗﻠﻘﺎﺋﻴﹰﺎ‪.‬‬ ‫ﻣﻦ ﻣﻬﺎﻡ ﻭﺍﺟﻬﺔ ﺍﳌﺴﺘﺨﺪﻡ‪:‬‬ ‫ ﺗﺰﻭﺩ ﺍﳌﺴﺘﺨﺪﻣﲔ ﺑﻮﺍﺟﻬﺔ ﻳﺘﻢ ﺍﻟﺘﻌﺎﻣﻞ ﻣﻦ ﺧﻼﳍﺎ‪.‬‬ ‫ ﲤﻜﻦ ﻣﻦ ﺍﻟﻮﺻﻮﻝ ﺇﱃ ﺧﺪﻣﺎﺕ ﺍﻟﻨﻮﺍﺓ) ‪.(kernel‬‬ ‫ ﲤﻜﻦ ﻣﻦ ﺗﺸﻐﻴﻞ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﺃﻭ ﺍﻟﱪﺍﻣﺞ‪.‬‬ ‫ ‪.‬ﺇﻣﻜﺎﻧﻴﺔ ﺍﺳﺘﻌﺮﺍﺽ ﳏﺘﻮﻳﺎﺕ ﺍﻷﺩﻟﺔ ﻣﻦ ﺧﻼﳍﺎ‪.‬‬ ‫ﻭﻫﻨﺎﻙ ﻋﺪﺓ ﺃﻧﻮﺍﻉ ﻭﺃﺷﻜﺎﻝ ﻣﻦ ﻭﺍﺟﻬﺎﺕ ﺍﳌﺴﺘﺨﺪﻡ‪ ,‬ﻣﻨﻬﺎ ‪:‬‬ ‫ﺃﻭ ﹰﻻ‪ :‬ﻭﺍﺟﻬﺔ ﺍﻷﻭﺍﻣﺮ ﺍﻟﻨﺼﻴﺔ )‪:(Command Line Interface-CLI‬‬ ‫ﻭﺍﺟﻬﺔ ﺍﻷﻭﺍﻣﺮ ﺍﻟﻨﺼﻴﺔ ﻫﻲ ﻃﺮﻳﻘﺔ ﻳﺘﻢ ﻓﻴﻬﺎ ﺗﻔﺎﻋﻞ ﺍﳌﺴﺘﺨﺪﻡ ﻣﻊ ﺍﻟﱪﺍﻣﺞ ﺃﻭ ﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﻷﻭﺍﻣﺮ‬ ‫ﺍﳋﻄﻴﺔ ﲝﻴﺚ ﻳﺴﺘﺠﻴﺐ ﺍﳌﺴﺘﺨﺪﻡ ﻣﻊ ﺭﺳﺎﺋﻞ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ ﺍﻟﺘﻮﺟﻴﻬﻴﺔ ﻣﻦ ﺧﻼﻝ ﻃﺒﺎﻋﺔ ﺍﻷﻭﺍﻣﺮ ﻭﻣﻦ ﰒ ﻳﺘﻠﻘﻰ‬ ‫ﺍﳌﺴﺘﺨﺪﻡ ﺇﺟﺎﺑﺔ ﻣﻦ ﺍﻟﻨﻈﺎﻡ‪.‬ﻭﻳﺴﺘﺨﺪﻣﻬﺎ ﻋﺎﺩﺓ ﺍﳌﱪﳎﻮﻥ ﻭﻣﺪﺭﺍﺀ ﺍﻷﻧﻈﻤﺔ ﻭﺍﻷﺷﺨﺎﺹ ﺫﻭﻱ ﺍﳋﱪﺓ ﺍﻟﺘﻘﻨﻴﺔ‪.‬‬ ‫‪3‬إاد‪ :‬ﺏ‪ Uh(i‬ا&‪cZ‬ی‪ ،UO‬أﻥ‪(f‬ل ا&‪cd‬ا‪UOm ،Mn‬ا&)ى ‪ $‬ا&‪U‬ﺡ‪ !X‬ا&‪o"(X%‬‬ ‫ﲢﺘﺎﺝ ﻫﺬﻩ ﺍﻟﻮﺍﺟﻬﺔ ﺇﱃ ﻣﺘﺮﺟﻢ ﻳﺴﻤﻰ ‪ , command line interpreter‬ﻭﻫﻮ ﺑﺮﻧﺎﻣﺞ ﻳﻘﺮﺃ ﺍﻷﻭﺍﻣﺮ‬ ‫ﺍﳋﻄﻴﺔ ﺍﳌﺪﺧﻠﺔ ﻣﻦ ﺍﳌﺴﺘﺨﺪﻡ ﻭﻳﺘﺮﲨﻬﺎ ﰲ ﺳﻴﺎﻕ ﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ ﺃﻭ ﻟﻐﺔ ﺍﻟﱪﳎﺔ ﺍﳌﺴﺘﺨﺪﻣﺔ‪.‬‬ ‫ﻣﻦ ﺃﻣﺜﻠﺔ ﻫﺬﻩ ﺍﻟﻮﺍﺟﻬﺔ‪:‬‬ ‫‪ MS-DOS command line interface‬ﻭﻫﻲ ﺍﳌﺴﺘﺨﺪﻣﺔ ﰲ ﻧﻈﺎﻡ ﺍﻟﻮﻳﻨﺪﻭﺯ‪.‬‬ ‫ﺛﺎﻧﻴﹰﺎ‪ :‬ﻭﺍﺟﻬﺔ ﺍﳌﺴﺘﺨﺪﻡ ﺍﻟﺮﺳﻮﻣﻴﺔ ) ‪:( Graphical User Interface- GUI‬‬ ‫ﻭﺍﺟﻬﺔ ﺍﳌﺴﺘﺨﺪﻡ ﺍﻟﺮﺳﻮﻣﻴﺔ ﺗﺆﻣﻦ ﺍﻟﺘﻔﺎﻋﻞ ﻣﻊ ﺍﳊﺎﺳﺐ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺃﻏﺮﺍﺽ ﻭ ﺻﻮﺭ ﺭﺳﻮﻣﻴﺔ –ﺃﻳﻘﻮﻧﺎﺕ‪-‬‬ ‫ﻭﻫﻲ ﻏﺎﻟﺒﹰﺎ ﺗﺘﻜﻮﻥ ﻣﻦ ﻋﻨﺎﺻﺮ ﲢﻜﻢ‪.‬ﺇﺿﺎﻓﺔ ﺇﱃ ﻧﺼﻮﺹ ﺗﻮﺟﻪ ﺍﳌﺴﺘﺨﺪﻡ ﻻﺳﺘﺨﺪﺍﻡ ﺃﺣﺪﺍﺙ ﳐﺼﺼﺔ ﻣﺜﻞ‬ ‫ﻧﻘﺮ ﺍﻟﻔﺄﺭﺓ‪ ,‬ﺃﻭ ﺗﻮﺟﻬﻪ ﺇﱃ ﺇﺩﺧﺎﻝ ﻧﺼﻮﺹ ﻟﻴﻘﻮﻡ ﺍﳊﺎﺳﺐ ﲟﺎ ﻳﺮﻳﺪﻩ ﺍﳌﺴﺘﺨﺪﻡ ‪.‬ﲨﻴﻊ ﺍﻷﻓﻌﺎﻝ ﻭ ﺍﳌﻬﺎﻡ ﺍﻟﱵ‬ ‫ﳝﻜﻦ ﻟﻠﺤﺎﺳﺐ ﺗﻨﻔﻴﺬﻫﺎ ﺗﺘﻢ ﻋﻦ ﻃﺮﻳﻖ ﺍﻟﺘﻄﺒﻴﻖ ﺍﳌﺒﺎﺷﺮ ﻷﺣﺪﺍﺙ ﻋﻠﻰ ﺍﻟﻌﻨﺎﺻﺮ ﺍﻟﺮﺳﻮﻣﻴﺔ )ﻋﻨﺎﺻﺮ ﺍﻟﺘﺤﻜﻢ(‪.‬‬ ‫ﺃﻛﺜﺮ ﺍﳌﺴﺘﺨﺪﻣﲔ ﺍﻟﻴﻮﻡ ﻳﻔﻀﻠﻮﻥ ﺍﻟﻮﺍﺟﻬﺔ ﺍﻟﺮﺳﻮﻣﻴﺔ ﻋﻠﻰ ﻭﺍﺟﻬﺔ ﺍﻷﻭﺍﻣﺮ ﺍﳋﻄﻴﺔ ‪،‬ﻛﻤﺎ ﺃﻥ ﺃﻏﻠﺐ ﺃﻧﻈﻤﺔ‬ ‫ﺍﻟﺘﺸﻐﻴﻞ ﺍﻟﻴﻮﻡ ﺗﻮﻓﺮ ﻛﻼ ﺍﻟﻮﺍﺟﻬﺘﲔ ﻟﻠﻤﺴﺘﺨﺪﻡ‪.‬‬ ‫ﻭﻣﻦ ﺍﻷﻣﺜﻠﺔ ﻋﻠﻰ ﺍﻷﻧﻮﺍﻉ ﺍﻷﺧﺮﻯ ﻟﻮﺍﺟﻬﺔ ﺍﳌﺴﺘﺨﺪﻡ‪:‬‬ ‫ﺍﻟﻮﺍﺟﻬﺔ ﺍﻟﺮﺳﻮﻣﻴﺔ ﺍﻟﻘﺎﺑﻠﺔ ﻟﻠﺘﻜﺒﲑ ) ‪:(ZUI - zoomable user interface‬‬ ‫ﻫﻲ ﻧﻮﻉ ﻣﻦ ﺃﻧﻮﺍﻉ ﺍﻟﻮﺍﺟﻬﺎﺕ ﺍﻟﺮﺳﻮﻣﻴﺔ ‪ ,‬ﻭﻟﻜﻨﻬﺎ ﲣﺘﻠﻒ ﻋﻦ ﺍﻟﻮﺍﺟﻬﺔ ﺍﻟﻌﺎﺩﻳﺔ ﰲ ﺃ‪‬ﺎ ﻻ ﺗﺴﺘﺨﺪﻡ ﺍﻟﻨﻮﺍﻓﺬ‪,‬‬ ‫ﺣﻴﺚ ﺃﻥ ﺍﻟﻌﻨﺎﺻﺮ ﺗﻈﻬﺮ ﻋﻠﻰ ﺳﻄﺢ ﺍﳌﻜﺘﺐ‪ ,‬ﻭﺇﺫﺍ ﰎ ﺍﺧﺘﻴﺎﺭ ﺍﻟﻌﻨﺼﺮ ﻓﺈﻧﻪ ﺑﺪ ﹰﻻ ﻣﻦ ﺃﻥ ﻳ‪‬ﻔﺘﺢ ﰲ ﻧﺎﻓﺬﺓ ﻓﺈﻧﻪ ﻳﺘﻢ‬ ‫ﺗﻜﺒﲑﻩ ﺇﱃ ﺍﳌﺴﺘﻮﻯ ﺍﳌﻄﻠﻮﺏ ﻭﺍﻟﻌﻤﻞ ﻋﻠﻴﻪ‪ ,‬ﻭﻋﻨﺪ ﺍﻻﻧﺘﻬﺎﺀ ﻳﺘﻢ ﺗﺼﻐﲑﻩ ﻋﻠﻰ ﺳﻄﺢ ﺍﳌﻜﺘﺐ ‪.‬ﻫﻨﺎﻙ ﻋﺪﺓ‬ ‫ﺗﻄﺒﻴﻘﺎﺕ ﺗﺴﺘﺨﺪﻡ ﻫﺬﺍ ﺍﻟﻨﻮﻉ ﻣﻨﻬﺎ‪iPhone ,Google Maps , Google Earth :‬‬ ‫ﺍﳌﺼﺎﺩﺭ‪:‬‬ Operating system Concepts (Seventh Edition): Abraham Silberschatz,Peter Baer Galvin,Greg Gagne http://ar.wikipedia.org/wiki http://en.wikipedia.org/wiki http://www.opendirectorysite.info ‫ﺍﳌﻮﺳﻮﻋﺔ ﺍﻟﻌﺮﺑﻴﺔ ﻟﻠﻜﻤﺒﻴﻮﺗﺮ ﻭﺍﻻﻧﺘﺮﻧﺖ‬ ‫ﺍﻟﻌﺮﺑﻴﺔ ﻣﻮﺍﻗﻊ ﺍﻟﻜﺘﺐ‬ http://en.wikipedia.org/wiki/ZUI ‫‪4‬‬ ‫ﺛﺎﻟﺜﹰﺎ‪ :‬ﻧﺪﺍﺀﺍﺕ ﺍﻟﻨﻈﺎﻡ)‪( System Calls‬‬ ‫ﺗﻌﺮﻳﻔﻬﺎ‪:‬‬ ‫ﻧﺪﺍﺀﺍﺕ ﺍﻟﻨﻈﺎﻡ ﻫﻲ ﻣﻴﻜﺎﻧﻴﻜﻴﺔ ﺗﺴﺘﺨﺪﻣﻬﺎ ﺑﺮﺍﻣﺞ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﻟﻠﺤﺼﻮﻝ ﻋﻠﻰ ﺧﺪﻣﺔ ﻳﻘﻮﻡ ‪‬ﺎ ﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ‪.‬ﺃﻭ‬ ‫ﻫﻲ ﺍﻟﻄﺮﻳﻘﺔ ﺍﻟﱵ ﻳﺴﺘﺨﺪﻣﻬﺎ )ﻋﻤﻠﻴﺔ ﺍﳌﺴﺘﺨﺪﻡ( ﻟﻴﺴﺄﻝ ﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ ﻟﻔﻌﻞ ﺷﻲﺀ ﻣﻌﲔ‪.‬‬ ‫ﻣﱴ ﲢﺪﺙ ؟‬ ‫ﲢﺪﺙ ﻧﺪﺍﺀﺍﺕ ﺍﻟﻨﻈﺎﻡ ﰲ ﻭﻗﺖ ﻣﻌﺎﳉﺔ ﺑﺮﺍﻣﺞ ﺍﻟﺘﺸﻐﻴﻞ ﰲ ﺍﻟﺬﺍﻛﺮﺓ ﺣﻴﺚ ﲢﺘﺎﺝ ﺇﱃ ﺧﺪﻣﺎﺕ ﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ‪,‬‬ ‫ﻣﺜﻞ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻷﺟﻬﺰﺓ ﺍﳌﻠﺤﻘﺔ ﺑﺎﻟﻨﻈﺎﻡ ﻛﺒﻄﺎﻗﺔ ﺍﻟﺸﺒﻜﺔ ﺃﻭ ﺑﻄﺎﻗﺔ ﺍﻟﺼﻮﺕ ﺃﻭ ﺑﻄﺎﻗﺔ ﺍﻟﺮﺳﻮﻣﺎﺕ ﺃﻭ ﰲ‬ ‫ﺍﻻﺗﺼﺎﻻﺕ ﺑﲔ ﺍﻟﱪﺍﻣﺞ ﺍﻟﺘﻄﺒﻴﻘﻴﺔ‪.‬‬ ‫ﻋﻨﺪﻣﺎ ﺗ‪‬ﺴﺘﺨﺪﻡ ﻧﺪﺍﺀﺍﺕ ﺍﻟﻨﻈﺎﻡ‪ ,‬ﻓﺈﻧﻪ ﺑﺒﺴﺎﻃﺔ ﻳﺘﻢ ﲢﺪﻳﺪ ﺍﺳﻢ ﺍﻟﺪﺍﻟﺔ ﺍﳌﻄﻠﻮﺑﺔ ﻭﻣﻨﺎﺩﺍ‪‬ﺎ‪ ,‬ﻭﻟﻜﻦ ﻣﺎ ﺍﻟﻌﻤﻞ ﻋﻨﺪ‬ ‫ﺍﳊﺎﺟﺔ ﺇﱃ ﻣﻌﻠﻮﻣﺎﺕ ﺇﺿﺎﻓﻴﺔ؟ ﰲ ﻫﺬﻩ ﺍﳊﺎﻟﺔ ﻳﺘﻢ ﺇﺭﺳﺎﻝ ﻫﺬﻩ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﻹﺿﺎﻓﻴﺔ ﻋﻦ ﻃﺮﻳﻖ‬ ‫ﻣﻌﺎﻣﻼﺕ)‪.(parameters‬ﻭﻫﻨﺎﻙ ﻋﺪﺓ ﻃﺮﻕ ﺗﺴﺘﺨﺪﻡ ﻹﺭﺳﺎﻝ ﺍﳌﻌﺎﻣﻼﺕ ﻭﻫﻲ‪:‬‬ ‫‪.1‬ﺇﺭﺳﺎﻝ ﺍﳌﻌﺎﻣﻼﺕ ﺇﱃ ﺍﻟﻨﻈﺎﻡ ﻋﻦ ﻃﺮﻳﻖ ﻭﺿﻌﻬﺎ ﰲ ﺃﺣﺪ ﺍﳌﺴﺠﻼﺕ)‪.(register‬ﻫﺬﻩ ﺍﻟﻄﺮﻳﻘﺔ‬ ‫ﺳﺮﻳﻌﺔ ﻭﻟﻜﻨﻬﺎ ‪‬ﺗﻔﻀﻞ ﻓﻘﻂ ﻋﻨﺪﻣﺎ ﻳﻜﻮﻥ ﻟﺪﻳﻨﺎ ﻋﺪﺩ ﻗﻠﻴﻞ ﻣﻦ ﺍﳌﻌﺎﻣﻼﺕ ﻭﺫﻟﻚ ﻷﻧﻪ ﻫﻨﺎﻙ ﻋﺪﺩ‬ ‫ﳏﺪﻭﺩ ﻣﻦ ﺍﳌﺴﺠﻼﺕ ﺩﺍﺧﻞ ﺍﳌﻌﺎﰿ‪.‬‬ ‫‪.2‬ﺍﺳﺘﺨﺪﺍﻡ ﺗﺮﻛﻴﺐ ﺑﻴﺎﻧﺎﺕ ﻣﻦ ﻧﻮﻉ ‪ , stack‬ﲝﻴﺚ ﻳﻘﻮﻡ ﺍﻟﱪﻧﺎﻣﺞ ﺑﺪﻓﻊ ﺍﳌﻌﺎﻣﻼﺕ ﺩﺍﺧﻠﻬﺎ ﻭﻣﻦ ﰒ‬ ‫ﻳﻘﻮﻡ ﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ ﺑﺎﺳﺘﺨﺮﺍﺟﻬﺎ‪.‬ﻫﺬﻩ ﺍﻟﻄﺮﻳﻘﺔ ﻻ ﲢﺪﺩﻧﺎ ﰲ ﻛﻤﻴﺔ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﳌﺨﺰﻧﺔ‪.‬‬ ‫‪.3‬ﲣﺰﻳﻦ ﺍﳌﻌﺎﻣﻼﺕ ﰲ ﻣﻜﺎﻥ ﳏﺪﺩ ﰲ ﺍﻟﺬﺍﻛﺮﺓ)‪ (block‬ﺃﻭ ﺗﻮﺿﻊ ﰲ ﺟﺪﻭﻝ ﰲ ﺍﻟﺬﺍﻛﺮﺓ)‪,(table‬‬ ‫ﰒ ﺑﻌﺪ ﺫﻟﻚ ﻳﻮﺿﻊ ﻋﻨﻮﺍﻥ ﺍﳌﻜﺎﻥ ﺃﻭ ﺍﳉﺪﻭﻝ ﰲ ﻣﺴﺠﻞ)‪ (register‬ﻭﳝﺮﺭ ﻫﺬﺍ ﺍﻟﻌﻨﻮﺍﻥ ﺇﱃ ﻧﻈﺎﻡ‬ ‫ﺍﻟﺘﺸﻐﻴﻞ‪.‬ﻧﺴﺘﻄﻴﻊ ﺍﻟﻘﻮﻝ ﺃﻥ ﻫﺬﻩ ﺍﻟﻄﺮﻳﻘﺔ ﺗﻌﺘﱪ ﻣﻦ ﺃﻓﻀﻞ ﺍﻟﻄﺮﻕ ﺍﻟﺜﻼﺙ ﻭﺫﻟﻚ ﻷ‪‬ﺎ ﻻ ﲢﺪﺩﻧﺎ ﰲ‬ ‫ﻛﻤﻴﺔ ﺍﳌﻌﻠﻮﻣﺎﺕ ﺍﳌﺨﺰﻧﺔ ‪ ,‬ﺑﺎﻹﺿﺎﻓﺔ ﺇﱃ ﺃﻥ ﺍﻟﻨﻈﺎﻡ ﻳﺴﺘﻄﻴﻊ ﺍﻟﻮﺻﻮﻝ ﺇﱃ ﺃﻱ ﻣﻌﻠﻮﻣﺔ ﺑﺴﻬﻮﻟﺔ ﻋﻠﻰ‬ ‫‪4‬إاد‪ s)S :‬ا&‪U$‬ی‪ ،v‬ﺥی‪ [u‬أﺥ‪ UOm ،M*U‬ا&)ى ‪$‬ا&‪U‬ﺡ‪ !X‬ا&‪ ،o"(X%‬ﻥ‪ s#‬ا&‪("O‬ش‪ ،‬ﻥ‪c‬ف ا&‪("f%‬ﻥ‪M‬‬ ‫ﻋﻜﺲ ﺍﻟﻄﺮﻳﻘﺔ ﺍﻟﺴﺎﺑﻘﺔ‪ ,‬ﺣﻴﺚ ﺇﺫﺍ ﺃﺭﺍﺩ ﺍﻟﻨﻈﺎﻡ ﻣﻌﻠﻮﻣﺔ ﰲ ﺃﺳﻔﻞ ﺍﻟـ‪ stack‬ﻓﺴﻮﻑ ﻳﻀﻄﺮ‬ ‫ﻹﺧﺮﺍﺝ ﲨﻴﻊ ﺍﳌﻌﻠﻮﻣﺎﺕ ﺍﻟﱵ ﺗﻘﻊ ﻓﻮﻗﻬﺎ!‬ ‫ﳝﻜﻦ ﺗﺼﻨﻴﻒ ﻧﺪﺍﺀﺍﺕ ﺍﻟﻨﻈﺎﻡ ﺇﱃ ﻫﺬﻩ ﺍﻷﻧﻮﺍﻉ‪:‬‬ ‫‪.1‬ﺃﻋﻤﺎﻝ ﺍﳌﻠﻔﺎﺕ‪ :‬ﺧﻠﻖ ‪ /‬ﺣﺬﻑ‪ /‬ﻓﺘﺢ ﻣﻠﻒ ‪ ،‬ﻗﺮﺍﺀﺓ ‪ /‬ﻛﺘﺎﺑﺔ‬ ‫‪.2‬ﺇﺩﺍﺭﺓ ﺍﻷﺟﻬﺰﺓ ‪ :‬ﻃﻠﺐ ‪ /‬ﲢﺮﻳﺮ ‪ ،‬ﻗﺮﺍﺀﺓ ‪ /‬ﻛﺘﺎﺑﺔ‬ ‫‪.3‬ﺻﻴﺎﻧﺔ ﺍﳌﻌﻠﻮﻣﺎﺕ ‪ :‬ﻃﻠﺐ ‪/‬ﺃﺧﺬ ﺍﳌﻌﻠﻮﻣﺎﺕ ‪ ،‬ﻣﻌﺮﻓﺔ ﺍﻟﻮﻗﺖ ﻭ ﺍﻟﺘﺎﺭﻳﺦ ﻭﻋﻤﻠﻴﺔ ﺍﳊﺼﻮﻝ ﻋﻠﻰ‬ ‫ﺍﳌﻌﻠﻮﻣﺎﺕ‬ ‫‪.4‬ﺍﻟﺘﻮﺍﺻﻞ ‪ :‬ﺧﻠﻖ ‪ /‬ﺣﺬﻑ ﺍﻟﺮﻭﺍﺑﻂ ‪ ،‬ﻭﺇﺭﺳﺎﻝ ‪ /‬ﺍﺳﺘﻘﺒﺎﻝ ﺍﻟﺮﺳﺎﺋﻞ‬ ‫‪.5‬ﺍﻟﺘﺤﻜﻢ ﰲ ﺍﻟﻌﻤﻠﻴﺎﺕ‪.‬‬ ‫ﺍﻷﻭﺍﻣﺮ ﺍﻟﱪﳎﻴﺔ )‪: application program interface(API‬‬ ‫ﻟﻜﻞ ﻧﻈﺎﻡ ﺗﺸﻐﻴﻞ ﳎﻤﻮﻋﺔ ﻣﻦ ﺍﻷﻭﺍﻣﺮ ﺍﻟﱪﳎﻴﺔ)‪ ,(API's‬ﺍﻟﱵ ﺗﻘﻮﻡ ﲟﻨﺎﺩﺍﺓ ﻧﺪﺍﺀﺍﺕ ﺍﻟﻨﻈﺎﻡ ) ‪system‬‬ ‫ﻼ ﻋﻨﺪ ﻋﻤﻞ ﺍﻷﻣﺮ‬ ‫)‪ (kernel mode‬ﰒ ﺗﻨﺘﻘﻞ ﺇﱃ ﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ‪.‬ﻓﻤﺜ ﹰ‬ ‫‪ (call‬ﰲ ﻗﻠﺐ ﺍﻟﻨﻈﺎﻡ‬ ‫ﺍﻟﱪﳎﻲ –)(‪ -open‬ﻓﺈﻧﻪ ﻳﺴﺘﺪﻋﻲ ﻧﺪﺍﺀ ﺍﻟﻨﻈﺎﻡ ﳍﺬﺍ ﺍﻷﻣﺮ‪:‬‬ ‫) ‪. (open () >>>>>open system call‬‬ ‫ﻭﻟﻴﺲ ﻣﻦ ﺍﻟﻀﺮﻭﺭﻱ ﺃﻥ ﻳﻌﺎﺩِﻝ ﺍﻷﻣﺮ ﺍﻟﱪﳎﻲ ﺍﻟﻮﺍﺣﺪ ﻧﺪﺍﺀ ﻭﺍﺣﺪ ﻟﻠﻨﻈﺎﻡ! ﻓﻘﺪ ﻳﺘﻄﻠﺐ ﺍﳌﺌﺎﺕ ﻣﻦ ﻧﺪﺍﺀﺍﺕ‬ ‫ﺍﻟﻨﻈﺎﻡ‪.‬‬ ‫ﺍﻟﺼﻮﺭﺓ ﺍﻟﺘﺎﻟﻴﺔ ﺗﻮﺿﺢ ﻟﻨﺎ ﺍﳌﻔﻬﻮﻡ ﺍﻟﻌﺎﻡ ﻟﻌﻼﻗﺔ ﺍﻷﻭﺍﻣﺮ ﺍﻟﱪﳎﻴﺔ ﻣﻊ ﻧﺪﺍﺀﺍﺕ ﺍﻟﻨﻈﺎﻡ‪:‬‬ ‫ﻣﻦ ﺃﻛﺜﺮ ﺃﻧﻮﺍﻉ ﺍﻷﻭﺍﻣﺮ ﺍﻟﱪﳎﻴﺔ ﺷﻴﻮﻋﹰﺎ‪:‬‬ ‫‪ Win32 API.1‬ﺍﻟﱵ ﺗﺴﺘﺨﺪﻡ ﰲ ﻧﻈﺎﻡ ﺍﻟﻮﻳﻨﺪﻭﺯ‬ ‫‪ POSIX API.2‬ﺍﻟﱵ ﺗﺴﺘﺨﺪﻡ ﰲ ﺃﻧﻈﻤﺔ ‪ UNIX‬ﻭ ‪ Linux‬ﻭ ‪Mac OS X‬‬ ‫‪ JAVA API.3‬ﺍﳌﺴﺘﺨﺪﻣﺔ ﰲ ﺍﻵﻟﺔ ﺍﻟﻮﳘﻴﺔ ﻟﻠﻐﺔ ﺍﳉﺎﻓﺎ‪.‬‬ ‫ﺇﻥ ﻣﻦ ﺍﳉﺪﻳﺮ ﺑﺎﻟﺬﻛﺮ ﺃﻧﻪ ‪‬ﻳ ﹶﻔﻀ‪‬ﻞ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻷﻭﺍﻣﺮ ﺍﻟﱪﳎﻴﺔ ﺑﺪ ﹰﻻ ﻣﻦ ﻧﺪﺍﺀﺍﺕ ﺍﻟﻨﻈﺎﻡ‪ ,‬ﻭﺫﻟﻚ ﻟﻸﺳﺒﺎﺏ‬ ‫ﺍﻟﺘﺎﻟﻴﺔ‪:‬‬ ‫‪.1‬ﻗﺎﺑﻠﻴﺔ ﺍﻟﻨﻘﻞ)‪ (Portability‬ﰲ ﺍﻷﻭﺍﻣﺮ ﺍﻟﱪﳎﻴﺔ‪.‬‬ ‫ﻓﻤﺜﻼ‪ :‬ﻋﻨﺪ ﻛﺘﺎﺑﺔ ﺑﺮﻧﺎﻣﺞ ﺑﻠﻐﺔ ﺍﳉﺎﻓﺎ ﻓﺈﻧﻨﺎ ﻧﺴﺘﻄﻴﻊ ﺗﺸﻐﻴﻠﻪ ﰲ ﺃﻱ ﻧﻈﺎﻡ ﺗﺸﻐﻴﻞ ﻣﺜﻞ‬ ‫‪ Windows‬ﻭ‪Linux‬ﻭ‪ Mac‬ﺑﺪﻭﻥ ﺃﻱ ﺗﻐﻴﲑ ﰲ ﺃﻭﺍﻣﺮ ﻧﺪﺍﺀ ﺍﻟﻨﻈﺎﻡ‪.‬‬ ‫ﻼ ﻭﺗﻌﻘﻴﺪﹰﺍ ﻭﻳﺼﻌﺐ ﺍﻟﺘﻌﺎﻣﻞ ﻣﻌﻬﺎ ﻭﲣﺘﻠﻒ ﻣﻦ ﻧﻈﺎﻡ ﻟﻨﻈﺎﻡ‪ ,‬ﺑﻴﻨﻤﺎ‬‫‪.2‬ﺃﻭﺍﻣﺮ ﺍﺳﺘﺪﻋﺎﺀ ﺍﻟﻨﻈﺎﻡ ﺃﻛﺜﺮ ﺗﻔﺼﻴ ﹰ‬ ‫ﺍﻷﻭﺍﻣﺮ ﺍﻟﱪﳎﻴﺔ ﺃﺳﻬﻞ ﻭﺃﻗﻞ ﺗﻌﻘﻴﺪﹰﺍ‪.‬‬ ‫ﺍﻵﻥ ﻧﻌﻮﺩ ﺇﱃ ﻛﻴﻔﻴﺔ ﺗﻨﻔﻴﺬ ﻧﺪﺍﺀﺍﺕ ﺍﻟﻨﻈﺎﻡ ﺩﺍﺧﻞ ﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ )‪system calls‬‬ ‫‪:(implementation of‬‬ ‫ﻳﺘﻢ ﺭﺑﻂ ﺍﻷﻣﺮ ﺍﻟﱪﳎﻲ )‪ (API‬ﺑﺮﻗﻢ )‪ (index‬ﻭﻫﺬﺍ ﺍﻟﺮﻗﻢ ﻳ‪‬ﺮﺑﻂ ﺑﺄﻣﺮ ﻧﺪﺍﺀ ﺍﻟﻨﻈﺎﻡ ‪ ,‬ﻭﺗﻠﻚ ﺍﻷﺭﻗﺎﻡ ﺗﻜﻮﻥ‬ ‫ﻣﺪﻭﻧﺔ ﰲ ﺟﺪﻭﻝ ﻳﺴﻤﻰ ﺟﺪﻭﻝ ﺍﻟﻨﻈﺎﻡ)‪ , (system table‬ﻭﻟﻜﻞ ﻧﺪﺍﺀ ﻟﻠﻨﻈﺎﻡ ﺭﻗﻢ )‪. (index‬‬ ‫ﺍﻟﺸﻜﻞ ﺍﻟﺘﺎﱄ ﻳﻮﺿﺢ ﺟﺪﻭﻝ ﺍﻟﻨﻈﺎﻡ ﺣﻴﺚ ﻧﻼﺣﻆ ﻓﻴﻪ ﻛﻞ ﺃﻣﺮ ﻧﻈﺎﻡ ﻣﺮﺗﺒﻂ ﺑﺮﻗﻢ)‪:(index‬‬ ‫ﻼ ﻋﻨﺪ ﻋﻤﻞ ﺍﻷﻣﺮ ﺍﻟﱪﳎﻲ –)(‪ , -open‬ﺳﻮﻑ ﻳﺘﻢ ﺍﻻﻧﺘﻘﺎﻝ ﻣﻦ ﺃﺳﻠﻮﺏ ﺍﳌﺴﺘﺨﺪﻡ ﺇﱃ ﺃﺳﻠﻮﺏ ﻟﺐ‬ ‫ﻣﺜ ﹰ‬ ‫ﺍﻟﻨﻈﺎﻡ‪ ,‬ﻭﺑﺎﻟﺘﺎﱄ ﻻﺑﺪ ﻣﻦ ﺍﺳﺘﺨﺪﺍﻡ ﻧﺪﺍﺀ ﺍﻟﻨﻈﺎﻡ ‪,‬ﻭﻳﺘﻢ ﺫﻟﻚ ﺑﻌﻤﻞ ﻣﻨﺎﺩﺍﺓ ﻟﻠﺮﻗﻢ ﺍﳌﺮﺗﺒﻂ ﺑﺎﻟﻨﺪﺍﺀ ﺍﻟﺬﻱ ﻳﺘﻢ‬ ‫ﺇﳚﺎﺩﻩ ﻣﻦ ﺧﻼﻝ ﺟﺪﻭﻝ ﺍﻟﻨﻈﺎﻡ )‪ (system table‬ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢ ﰲ ﺍﻟﺸﻜﻞ ﺍﻟﺘﺎﱄ‪:‬‬ ‫ﺍﳌﺼﺎﺩﺭ‪:‬‬ ‫ ‬ ‫‪Operating system Concepts (Seventh Edition): Abraham Silberschatz,Peter Baer‬‬ ‫‪Galvin,Greg Gagne‬‬ ‫ ‬ ‫‪http://en.wikipedia.org/wiki/System_call‬‬ ‫ ‬ ‫‪http://data.uta.edu/~ramesh/cse3320‬‬ ‫ ‬ ‫‪http://tiger.la.asu.edu/Quick_Ref/Linux_Syscall_quickref.pdf‬‬ ‫ ‬ ‫‪http://www.slideshare.net/guestd1b5cb/adding-a-system-call‬‬ ‫ﺭﺍﺑﻌﹰﺎ‪ :‬ﺑﺮﺍﻣﺞ ﺍﻟﻨﻈﺎﻡ‪(System Programs)5‬‬ ‫ﻫﻲ ﳎﻤﻮﻋﺔ ﺑﺮﺍﻣﺞ ﺗﻮﻓﺮ ﺑﻴﺌﺔ ﲣﺎﻃﺒﻴﺔ ﺑﲔ ﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ ﻭﺍﻟﱪﺍﻣﺞ ﺍﳌﻄ ‪‬ﻮﺭﺓ ﻣﻦ ﻗﺒﻞ ﺍﳌﺴﺘﺨﺪﻣﲔ ﻭﻣﻄﻮﺭﻱ‬ ‫ﺍﻟﱪﺍﻣﺞ‪ ,‬ﻭﺃﻛﺜﺮ ﺍﳌﺴﺘﺨﺪﻣﲔ ﻳﺘﻌﺎﻣﻠﻮﻥ ﻣﻊ ﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ ﻋﻦ ﻃﺮﻳﻖ ﺑﺮﺍﻣﺞ ﺍﻟﻨﻈﺎﻡ ﻭﻟﻴﺲ ﻋﻦ ﻃﺮﻳﻖ ﺍﻻﺗﺼﺎﻝ‬ ‫ﺍﳌﺒﺎﺷﺮ ﺑﻨﻈﻢ ﺍﻟﺘﺸﻐﻴﻞ‪.‬‬ ‫ﺃﻧﻮﺍﻉ ﺑﺮﺍﻣﺞ ﺍﻟﻨﻈﺎﻡ‪:‬‬ ‫ﺗﻘﺴﻢ ﺑﺮﺍﻣﺞ ﺍﻟﻨﻈﺎﻡ ﺇﱃ ﻋﺪﺓ ﺃﻗﺴﺎﻡ ﻭﻫﻲ‪:‬‬ ‫ ﺇﺩﺍﺭﺓ ﺍﳌﻠﻔﺎﺕ‪ :‬ﻭﻫﻲ ﺍﳌﺴﺌﻮﻟﺔ ﻋﻦ ﺧﻠﻖ‪ ,‬ﺣﺬﻑ‪ ,‬ﺇﻋﺎﺩﺓ ﺗﺴﻤﻴﺔ‪ ,‬ﻧﺴﺦ ﻭﻏﲑﻫﺎ ﻣﻦ ﺍﻟﻌﻤﻠﻴﺎﺕ ﻋﻠﻰ‬ ‫ﺍﳌﻠﻔﺎﺕ ﻭﺍﻷﺩﻟﺔ‪.‬‬ ‫ ﻣﻌﻠﻮﻣﺎﺕ ﺣﺎﻟﺔ ﺍﻟﻨﻈﺎﻡ‪ :‬ﻫﻲ ﺑﺮﺍﻣﺞ ﺗﺴﺄﻝ ﺍﻟﻨﻈﺎﻡ ﻋﻦ ﺍﻟﻮﻗﺖ‪ ,‬ﺍﻟﺘﺎﺭﻳﺦ‪ ,‬ﺣﺠﻢ ﺍﻟﺬﺍﻛﺮﺓ‪ ,‬ﻋﺪﺩ‬ ‫ﺍﳌﺴﺘﺨﺪﻣﲔ‪.‬‬ ‫ ﺗﻌﺪﻳﻞ ﺍﳌﻠﻔﺎﺕ‪ :‬ﻭﻫﻲ ﻋﺒﺎﺭﺓ ﻋﻦ ﳎﻤﻮﻋﺔ ﻣﻦ ﳏﺮﺭﺍﺕ ﺍﻟﻨﺼﻮﺹ ﻟﻌﻤﻞ ﺗﻐﲑﺍﺕ ﰲ ﳏﺘﻮﻳﺎﺕ ﺍﳌﻠﻔﺎﺕ‪.‬‬ ‫ ﺩﻋﻢ ﻣﻠﻔﺎﺕ ﺍﻟﱪﳎﺔ‪ :‬ﻭﻫﻲ ﺍﳌﺴﺌﻮﻟﺔ ﻋﻦ ﺍﻟﺘﺠﻤﻴﻊ ﰲ ﺑﺮﺍﻣﺞ ﻟﻐﺎﺕ ﺍﻟﱪﳎﺔ‪.‬‬ ‫ ﺗﻨﻔﻴﺬ ﻭﲢﻤﻴﻞ ﺍﻟﱪﺍﻣﺞ‪ :‬ﻭﻫﻲ ﺍﳌﺴﺌﻮﻟﺔ ﻋﻦ ﺗﻨﻔﻴﺬ ﺍﻟﱪﺍﻣﺞ ﺑﻌﺪ ﲢﻤﻴﻠﻬﺎ‪.‬‬ ‫ ﺍﻻﺗﺼﺎﻻﺕ‪ :‬ﻭﻫﻲ ﺍﳌﺴﺌﻮﻟﺔ ﻋﻦ ﺍﻟﺘﻮﺍﺻﻞ ﺑﲔ ﺍﻟﻌﻤﻠﻴﺎﺕ ﺃﻭ ﺑﲔ ﺍﳌﺴﺘﺨﺪﻣﲔ ﺃﻭ ﺑﲔ ﺃﺟﻬﺰﺓ ﺃﺧﺮﻯ‬ ‫ﳐﺘﻠﻔﺔ‪.‬‬ ‫ﺍﳌﺼﺪﺭ‪:‬‬ ‫ ‬ ‫‪Operating system Concepts (Seventh Edition): Abraham Silberschatz,Peter Baer‬‬ ‫‪Galvin,Greg Gagne‬‬ ‫‪5‬إاد‪ :‬أ‪ oS‬ا&|‪{"$‬‬ ‫‪6‬‬ ‫ﺧﺎﻣﺴﹰﺎ‪ :‬ﺗﺮﻛﻴﺐ ﻧﻈﻢ ﺍﻟﺘﺸﻐﻴﻞ)‪(Operating Systems Structure‬‬ ‫ﻫﻨﺎﻙ ﻋﺪﺓ ﻃﺮﻕ ﻟﺒﻨﺎﺀ ﻭﺗﺮﻛﻴﺐ ﻧﻈﻢ ﺍﻟﺘﺸﻐﻴﻞ ﻭ ﻫﻲ‪:‬‬ ‫‪.1‬ﺍﻟﺘﺮﻛﻴﺐ ﺍﻟﺒﺴﻴﻂ )‪: (Monolithic‬‬ ‫ﲝﻴﺚ ﻳﻜﻮﻥ ﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ ﰲ ﻣﺴﺘﻮﻯ ﻭﺍﺣﺪ ﺃﻭ ﰲ ﻣﺴﺘﻮﻳﲔ‪.‬‬ ‫ﺍﳌﻴﺰﺓ ﺍﻟﺮﺋﻴﺴﻴﺔ ‪ :‬ﺗﻜﻠﻔﺔ ﺍﻟﺘﻔﺎﻋﻼﺕ ﺍﻟﺪﺍﺧﻠﻴﺔ ﰲ ﺍﻟﻨﻈﺎﻡ ﺗﻜﻮﻥ ﻣﻨﺨﻔﻀﺔ ﻷ‪‬ﺎ ﲨﻴﻌﺎ ﺗﻘﻊ ﻋﻠﻰ ﻧﻔﺲ ﺍﳌﺴﺘﻮﻯ‪.‬‬ ‫ﺍﻟﻌﻴﻮﺏ‪:‬‬ ‫ ﺻﻌﻮﺑﺔ ﺍﻟﻔﻬﻢ ‪.‬‬ ‫ ﺻﻌﻮﺑﺔ ﺍﻟﺘﻌﺪﻳﻞ ‪.‬‬ ‫ ﺻﻌﻮﺑﺔ ﺍﻟﺼﻴﺎﻧﺔ ‪.‬‬ ‫ ﻏﲑ ﻣﻮﺛﻮﻕ ﻓﻴﻪ ‪.‬‬ ‫‪.2‬ﺗﺮﻛﻴﺐ ﺍﻟﻄﺒﻘﺎﺕ )‪: (Layered‬‬ ‫ﺃﻱ ﺃﻥ ﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ ﻣﻘﺴﻢ ﻟﻄﺒﻘﺎﺕ )ﻣﺴﺘﻮﻳﺎﺕ( ﲝﻴﺚ ﻳﻜﻮﻥ ﻛﻞ ﺟﺰﺀ ﻣﻦ ﺍﻟﻨﻈﺎﻡ ﰲ ﻃﺒﻘﺔ ﻣﺴﺘﻘﻠﺔ ‪ ،‬ﻭ‬ ‫ﲝﻴﺚ ﺃﻥ ﺍﻟﻄﺒﻘﺔ ‪ (layer 0) 0‬ﳐﺼﺼﺔ ﻟﻠﻌﺘﺎﺩ )‪ ، (Hardware‬ﻭﺍﻟﻄﺒﻘﺔ ﻥ )‪ (layer N‬ﳐﺼﺼﺔ‬ ‫ﻟﻮﺍﺟﻬﺔ ﺍﳌﺴﺘﺨﺪﻡ‪ ,‬ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢ ﰲ ﺍﻟﺸﻜﻞ ﺍﻟﺘﺎﱄ‪:‬‬ ‫‪6‬إاد‪ :‬ﺱ‪ ["X‬ا&‪W")Z‬ان‬ ‫ﺍﳌﻴﺰﺓ ﺍﻟﺮﺋﻴﺴﻴﺔ ‪ :‬ﻭﺟﻮﺩ ﺍﻟﻄﺒﻘﺎﺕ ﺃﺩ‪‬ﻯ ﺇﱃ ﺗﺴﻬﻴﻞ ﻋﻤﻠﻴﺔ ﺍﻟﺼﻴﺎﻧﺔ ‪.‬‬ ‫ﺍﻟﻌﻴﻮﺏ‪ :‬ﺍﳌﺸﻜﻠﺔ ﺗﻜﻤﻦ ﰲ ﻋﻤﻠﻴﺔ ﺗﺮﺗﻴﺐ ﺍﻟﻄﺒﻘﺎﺕ ‪ ،‬ﻓﻼ ﺗﻮﺟﺪ ﻟﺪﻳﻨﺎ ﻃﺮﻳﻘﺔ ﻭﺍﺿﺤﺔ ﻟﻠﺘﺮﺗﻴﺐ ‪.‬‬ ‫‪.3‬ﺗﺮﻛﻴﺐ ﺍﻟﻨﻮﺍﺓ ﺍﻟﺼﻐﲑﺓ ) ‪: (Microkernel‬‬ ‫ﺗﻜﻮﻥ ﻧﻮﺍﺓ ﺍﻟﻨﻈﺎﻡ ﰲ ﻫﺬﺍ ﺍﻟﺘﺮﻛﻴﺐ ﺻﻐﲑﺓ ﺟﺪﹰﺍ ‪ ،‬ﻭﻻ ﻳﻮﺿﻊ ﺑﺪﺍﺧﻠﻬﺎ ﺳﻮﻯ ﺍﻟﻮﻇﺎﺋﻒ ﺍﻷﺳﺎﺳﻴﺔ ‪.‬ﺃﻣﺎ‬ ‫ﺍﻟﻮﻇﺎﺋﻒ ﺍﻷﺧﺮﻯ ﻓﺘﻮﺿﻊ ﰲ ﻣﺴﺎﺣﺔ ﺍﳌﺴﺘﺨﺪﻡ ‪ ،‬ﻭﻳﻜﻮﻥ ﺍﻻﺗﺼﺎﻝ ﺑﲔ ﻣﺴﺎﺣﺔ ﺍﳌﺴﺘﺨﺪﻡ ﻭﺍﻟـﻨﻮﺍﺓ ﻋﻦ‬ ‫ﻃﺮﻳﻖ ﺍﻟـﺮﺳﺎﺋﻞ ﺍﻟﻌﺎﺑﺮﺓ )‪.(message passing‬‬ ‫ﺍﳌﻴﺰﺍﺕ ‪:‬‬ ‫ ﻣﻦ ﺍﻟﺴﻬﻞ ﺗﻮﺳﻴﻊ )ﲤﺪﻳﺪ( ﺍﻟﻨﻈﺎﻡ‪.‬‬ ‫ ﺍﻟﻨﻈﺎﻡ ﺃﻛﺜﺮ ﺛﻘﺔ ﻭ ﺃﻛﺜﺮ ﺃﻣﻨﹰﺎ‪.‬‬ ‫ﺍﻟﻌﻴﻮﺏ ‪:‬‬ ‫ﺍﻻﺗﺼﺎﻝ ﺑﲔ ﻣﺴﺎﺣﺔ ﺍﳌﺴﺘﺨﺪﻡ ﻭﻧﻮﺍﺓ ﺍﻟﻨﻈﺎﻡ ﻋﻤﻠﻴﺔ ﻣﻜﻠﻔﺔ‪.‬‬ ‫‪.4‬ﺗﺮﻛﻴﺐ ﺍﻟﻮﺣﺪﺍﺕ )‪: (Modules-based‬‬ ‫ﻣﻌﻈﻢ ﺃﻧﻈﻤﺔ ﺍﻟﺘﺸﻐﻴﻞ ﺍﳊﺪﻳﺜﺔ ﻣﺒﻨﻴﺔ ‪‬ﺬﻩ ﺍﻟﻄﺮﻳﻘﺔ ‪ ،‬ﺣﻴﺚ ﺗﻜﻮﻥ ﺍﻟﻨﻮﺍﺓ ﺍﻷﺳﺎﺳﻴﺔ ﰲ ﺍﳌﺮﻛﺰ ﻭﺑﻘﻴﺔ ﺍﻟﻮﻇﺎﺋﻒ‬ ‫ﺗﺘﻔﺮﻉ ﻣﻨﻬﺎ ‪ ،‬ﻭﻫﻲ ﻣﺸﺎ‪‬ﺔ ﻟﻠﻄﺒﻘﺎﺕ ﻭﻟﻜﻦ ﺃﻛﺜﺮ ﻣﺮﻭﻧﺔ ﻭﺃﻛﺜﺮ ﻛﻔﺎﺀﺓ‪.‬‬ : ‫ﺍﳌﺼﺪﺭ‬ Operating system Concepts (Seventh Edition): Abraham Silberschatz, Peter Baer Galvin, Greg Gagne ‫ﺳﺎﺩﺳﹰﺎ‪ :‬ﺍﻵﻻﺕ ﺍﻻﻓﺘﺮﺍﺿﻴﺔ ﺃﻭﺍﻟﺘﺨﻴﻠﻴﺔ)‪(Virtual Machines7‬‬ ‫ﻣﺎ ﻫﻲ ﺍﻵﻟﺔ ﺍﻻﻓﺘﺮﺍﺿﻴﺔ؟‬ ‫ﺍﻵﻟﺔ ﺍﻻﻓﺘﺮﺍﺿﻴﺔ ﻫﻲ ﻋﺒﺎﺭﺓ ﻋﻦ ﺑﺮﻧﺎﻣﺞ ﻳﺴﻤﺢ ﺑﺘﺸﻐﻴﻞ ﺃﻛﺜﺮ ﻣﻦ ﻧﻈﺎﻡ ﺗﺸﻐﻴﻞ ﲣﻴﻠﻲ ﺍﻓﺘﺮﺍﺿﻲ ﻋﻠﻰ ﺟﻬﺎﺯ‬ ‫ﺷﺨﺼﻲ ﻭﺍﺣﺪ‪.‬ﲝﻴﺚ ﳝﻜﻦ ﺗﺜﺒﻴﺖ ﺃﻛﺜﺮ ﻣﻦ ﻧﻈﺎﻡ ﺗﺸﻐﻴﻞ ﻋﻠﻰ ﻧﻔﺲ ﺍﳉﻬﺎﺯ ﻭﺍﻟﺘﻨﻘﻞ ﺑﲔ ﻫﺬﻩ ﺍﻷﻧﻈﻤﺔ ﺩﻭﻥ‬ ‫ﺍﳌﺴﺎﺱ ﺑﺎﻟﻨﻈﺎﻡ ﺍﳊﺎﱄ ﻭﺩﻭﻥ ﺧﺴﺎﺭﺓ ﻛﺒﲑﺓ ﰲ ﺍﻷﺩﺍﺀ‪.‬ﻭ ﺗﻌﻤﻞ ﺍﻵﻟﺔ ﺍﻻﻓﺘﺮﺍﺿﻴﺔ ﻛﺘﻄﺒﻴﻖ ﻋﻠﻰ ﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ‬ ‫ﺍﳌﻀﻴﻒ‪.‬‬ ‫ﺧﺼﺎﺋﺼﻬﺎ‪:‬‬ ‫ ﲤﻜﻦ ﻣﻦ ﺍﺳﺘﺨﺪﺍﻡ ﺃﻧﻈﻤﺔ ﺗﺸﻐﻴﻞ ﻣﺘﻌﺪﺩﺓ ﻋﻠﻰ ﺟﻬﺎﺯ ﻭﺍﺣﺪ ﻭﺍﻟﺘﻨﻘﻞ ﺑﻴﻨﻬﺎ ﺩﻭﻥ ﺍﳊﺎﺟﺔ ﻹﻋﺎﺩﺓ‬ ‫ﺗﺸﻐﻴﻠﻪ ‪.‬‬ ‫ ﲤﻜﻦ ﻣﻦ ﺗﺮﻛﻴﺐ ﺃﻧﻈﻤﺔ ﺗﺸﻐﻴﻞ ﻣﺘﻌﺪﺩﺓ ﺩﻭﻥ ﺗﻘﺴﻴﻢ ﺟﺪﻳﺪ ﻟﻠﻘﺮﺹ ﺍﻟﺼﻠﺐ‪.‬‬ ‫ ﺗﻮﻓﺮ ﺍﻻﺗﺼﺎﻝ ﺑﲔ ﺃﻧﻈﻤﺔ ﺗﺸﻐﻴﻞ ﻣﺘﻌﺪﺩﺓ ﻋﻠﻰ ﺟﻬﺎﺯ ﺷﺨﺼﻲ ﻭﺍﺣﺪ‪.‬‬ ‫ﻓﻮﺍﺋـﺪﻫﺎ‪:‬‬ ‫ ﺇﻣﻜﺎﻧﻴﺔ ﲡﺮﺑﺔ ﺃﻧﻈﻤﺔ ﺗﺸﻐﻴﻞ ﻣﺘﻌﺪﺩﺓ ﺑﺄﻗﻞ ﺍﻟﺘﻜﺎﻟﻴﻒ‪.‬‬ ‫ ﺇﻣﻜﺎﻧﻴﺔ ﺇﺟﺮﺍﺀ ﺗﻌﺪﻳﻼﺕ ﻭﲡﺎﺭﺏ ﻋﻠﻰ ﺍﻟﻨﻈﺎﻡ ﺍﻟﺘﺨﻴﻠﻲ ﲝﺮﻳﺔ ﻭﺫﻟﻚ ﻷﻥ ﺍﳌﻮﺍﺭﺩ ﺍﻟﱵ ﻳﺴﺘﺨﺪﻣﻬﺎ‬ ‫ﻣﻌﺰﻭﻟﺔ ﲤﺎﻣﹰﺎ ﻋﻦ ﻣﻮﺍﺭﺩ ﺍﻟﻨﻈﺎﻡ ﺍﻷﺳﺎﺳﻲ‪.‬‬ ‫ ﻳﺴﺎﻋﺪ ﻋﻠﻰ ﺗﻮﻓﲑ ﺑﻴﺌﺔ ﺑﺮﳎﻴﺔ ﺟﻴﺪﺓ ‪ ,‬ﳑﺎ ﻳﺘﻴﺢ ﳌﹸﻄﻮ‪‬ﺭﻱ ﺃﻧﻈﻤﺔ ﺍﻟﺘﺸﻐﻴﻞ ﺍﻟﻘﻴﺎﻡ ﺑﺎﻟﺘﺠﺎﺭﺏ ﻭﺍﻟﺒﺤﻮﺙ‬ ‫ﻋﻠﻰ ﺍﻵﻟﺔ ﺍﻟﻮﳘﻴﺔ ﺑﺪ ﹰﻻ ﻣﻦ ﺍﻟﻘﻴﺎﻡ ‪‬ﺎ ﻋﻠﻰ ﺍﻟﻨﻈﺎﻡ ﺍﻷﺳﺎﺳﻲ ﻭﺑﺎﻟﺘﺎﱄ ﻻ ﻳﺆﺛﺮ ﻋﻠﻰ ﺃﺩﺍﺀ ﻫﺬﺍ ﺍﻟﻨﻈﺎﻡ‪.‬‬ ‫ﻣﺜﺎﻝ ﻋﻠﻰ ﺍﻵﻻﺕ ﺍﻻﻓﺘﺮﺍﺿﻴﺔ‪:‬‬ ‫ﺁﻟﺔ ﺟﺎﻓﺎ ﺍﻟﻮﳘﻴﺔ )‪ ,(JAVA Virtual Machine‬ﺍﻟﱵ ﲤﻜﻦ ﻣﻠﻔﺎﺕ ﺍﳉﺎﻓﺎ ﻣﻦ ﺍﻟﻌﻤﻞ ﻋﻠﻰ ﲨﻴﻊ‬ ‫ﺃﻭ ﻣﻌﻈﻢ ﺃﻧﻈﻤﺔ ﺍﻟﺘﺸﻐﻴﻞ‪.‬‬ ‫‪7‬إاد‪ :‬ﺡ"‪ [X‬ﺡ~‪ ,MX‬ﻥ‪c‬ف ا&‪("f%‬ﻥ‪ ,M‬ﻥ‪c‬رة ا&‪&(Z‬ي‬ :‫ﺍﳌﺼﺎﺩﺭ‬ 1421/3/29 ‫ ﺑﺘﺎﺭﻳﺦ‬122 ‫ ﻃﺒﻴﺐ ﺍﻹﻧﺘﺮﻧﺖ ﺍﳊﻠﻘﺔ‬http://www.fantookh.com/ www.cis.nctu.edu.tw http://tarksiala.blogspot.com/2007/06/vmware-60.html ‫‪8‬‬ ‫ﺳﺎﺑﻌﺎً‪ :‬ﺗﻨﺸﺌﺔ ﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ)‪(Operating system generation‬‬ ‫ﻣﻦ ﺍﳌﻤﻜﻦ ﺗﺼﻤﻴﻢ ﻧﻈﺎﻡ ﺗﺸﻐﻴﻞ ﺃﻭ ﺑﺮﳎﺘﻪ ﺃﻭ ﺗﻨﻔﻴﺬﻩ ﺧﺼﻴﺼﹰﺎ ﳉﻬﺎﺯ ﻭﺍﺣﺪ ﰲ ﻣﻜﺎﻥ ﻭﺍﺣﺪ‪ ,‬ﻟﻜﻦ ﻧﻈﻢ‬ ‫ﺍﻟﺘﺸﻐﻴﻞ ﺑﺸﻜﻞ ﻋﺎﻡ ﻣﺼﻤﻤﺔ ﻟﻠﻌﻤﻞ ﻋﻠﻰ ﺃﻱ ﻧﻮﻉ ﻣﻦ ﺃﺟﻬﺰﺓ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ ﰲ ﺃﻱ ﻣﻜﺎﻥ ﻭﻣﺘﺼﻠﺔ ﻣﻊ ﺃﻱ ﻧﻮﻉ‬ ‫ﻣﻦ ﺍﻷﺟﻬﺰﺓ ﺍﻟﻄﺮﻓﻴﺔ‪.‬ﻟﺬﻟﻚ ﳚﺐ ﺗﺮﻛﻴﺐ ﺍﻟﻨﻈﺎﻡ ﻟﻜﻞ ﺟﻬﺎﺯ ﻋﻠﻰ ﺣﺪﺓ ‪ ,‬ﻭﻋﻤﻠﻴﺔ ﺍﻟﺘﺮﻛﻴﺐ ﻫﺬﻩ ﻳﻄﻠﻖ‬ ‫ﻋﻠﻴﻬﺎ )‪ (SYSTEM GENERATION‬ﺃﻱ "ﺗﻨﺸﺌﺔ ﺍﻟﻨﻈﺎﻡ"‪.‬‬ ‫ﰲ ﺍﻟﻌﺎﺩﺓ ﺗﻨﺘﺞ ﺍﻟﺸﺮﻛﺎﺕ ﻧﻈﻢ ﺍﻟﺘﺸﻐﻴﻞ ﻋﻠﻰ ﺃﻗﺮﺍﺹ ﻣﺪﳎﺔ )‪ ,(CD‬ﻭﻟﻜﻲ ﺗﺘﻢ ﻋﻤﻠﻴﺔ ﺗﺮﻛﻴﺐ ﺍﻟﻨﻈﺎﻡ‬ ‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ ﳚﺐ ﺍﺳﺘﺨﺪﺍﻡ ﺑﺮﻧﺎﻣﺞ ﻳﻄﻠﻖ ﻋﻠﻴﻪ ﺍﺳﻢ "‪ "SYSGEN‬ﺍﻟﺬﻱ ﻳﻘﻮﻡ ﺑﻘﺮﺍﺀﺓ ﺑﻴﺎﻧﺎﺕ‬ ‫ﺍﻟﺘﺮﻛﻴﺐ ﻣﻦ ﻣﻠﻒ ﻣﻌﲔ‪ ,‬ﺃﻭ ﻳﻘﻮﻡ ﺑﺘﻮﺟﻴﻪ ﺃﺳﺌﻠﺔ ﺇﱃ ﺍﻟﺸﺨﺺ ﺍﻟﺬﻱ ﻳﻘﻮﻡ ﺑﺘﺮﻛﻴﺐ ﺍﻟﻨﻈﺎﻡ ﺣﻮﻝ‬ ‫ﻣﻌﻠﻮﻣﺎﺕ ﲣﺺ ﺍﻟﻨﻈﺎﻡ ‪ ,‬ﻭﻣﻦ ﻫﺬﻩ ﺍﳌﻌﻠﻮﻣﺎﺕ ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﳌﺜﺎﻝ‪:‬‬ ‫ ﻧﻮﻉ ﺍﳌﻌﺎﰿ ﺍﳌﺴﺘﺨﺪﻡ‪ ,‬ﻭ ﰲ ﺣﺎﻟﺔ ﺗﻌﺪﺩ ﺍﳌﻌﺎﳉﺎﺕ ﳚﺐ ﻭﺻﻒ ﻛﻞ ﻣﻌﺎﰿ ﻋﻠﻰ ﺣﺪﺓ‪.‬‬ ‫ ﺣﺠﻢ ﺍﻟﺬﺍﻛﺮﺓ ﺍﳌﺘﻮﻓﺮﺓ‪.‬‬ ‫ ﺍﻷﺟﻬﺰﺓ ﺍﳌﺘﻮﺍﻓﺮﺓ‪ ,‬ﺣﻴﺚ ﳚﺐ ﲢﺪﻳﺪ ﺍﻟﻨﻮﻉ ﻭﺍﻟﻄﺮﺍﺯ ﻭﺃﻱ ﻣﻮﺍﺻﻔﺎﺕ ﺧﺎﺻﺔ‪.‬‬ ‫ ﺧﻴﺎﺭﺍﺕ ﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ ﺍﳌﺮﻏﻮﺑﺔ‪,‬ﻣﺜﻞ ﺍﺧﺘﻴﺎﺭ ﻃﺮﻳﻘﺔ ﺟﺪﻭﻟﺔ ﺍﳌﻌﺎﰿ‪,‬ﺃﻭ ﺍﻟﻌﺪﺩ ﺍﻷﻗﺼﻰ ﻣﻦ ﺍﻟﻌﻤﻠﻴﺎﺕ‪.‬‬ ‫ﺣﺎﳌﺎ ﻳﺘﻢ ﲢﺪﻳﺪ ﺍﳌﻌﻠﻮﻣﺎﺕ ﻓﺈﻧﻪ ﳝﻜﻦ ﺣﻔﻈﻬﺎ ﰲ ﺟﺪﺍﻭﻝ ﻭﲣﺰﻳﻨﻬﺎ‪ ,‬ﲝﻴﺚ ﻳﺘﻢ ﺍﺳﺘﺨﺪﺍﻣﻬﺎ ﻋﻨﺪ ﺗﺮﻛﻴﺐ‬ ‫ﺍﻟﻨﻈﺎﻡ ﻋﻠﻰ ﺃﺟﻬﺰﺓ ﺃﺧﺮﻯ‪ ,‬ﻭﺑﺎﻟﺘﺎﱄ ﺗﻮﻓﺮ ﻋﻠﻰ ﺍﳌﺴﺘﺨﺪﻡ ﻋﻨﺎﺀ ﺗﻜﺮﺍﺭ ﺇﺩﺧﺎﻝ ﲨﻴﻊ ﻫﺬﻩ ﺍﳌﻌﻠﻮﻣﺎﺕ ﻋﻠﻰ ﻛﻞ‬ ‫ﺟﻬﺎﺯ ﰲ ﻛﻞ ﻣﺮﺓ‪.‬‬ ‫ﺍﳌﺼﺪﺭ‪:‬‬ ‫‪ Operating system Concepts (Seventh Edition): Abraham‬‬ ‫‪Silberschatz, Peter Baer Galvin, Greg Gagne‬‬ ‫‪8‬إاد‪ :‬ﺱ‪ ["X‬ﺏ(‪cO‬ة‬ ‫ﺍﻟﻔﺼﻞ ﺍﻟﺜﺎﻟﺚ‪:‬‬ ‫ﺍﻟﻌﻤﻠﻴﺎﺕ‬ ‫ﺍﻟﻌﻤﻠﻴﺎﺕ‬ ‫‪Processes‬‬ ‫ﻣﻘﺪﻣﺔ‬ ‫ﰲ ﺑﺪﺍﻳﺎﺕ ﺍﳊﺎﺳﺐ ﻛﺎﻥ ﺍﻟﻨﻈﺎﻡ ﻳﺴﻤﺢ ﻟﱪﻧﺎﻣﺞ ﻭﺍﺣﺪ ﺃﻥ ﻳﻨﻔﺬ ﰲ ﻭﻗﺖ ﻣﻌﲔ‪.‬ﻭﻛﺎﻥ ﻫﺬﺍ ﺍﻟﱪﻧﺎﻣﺞ ﻳﺴﻴﻄﺮ‬ ‫ﺳﻴﻄﺮﺓ ﺗﺎﻣﺔ ﻋﻠﻰ ﺍﻟﻨﻈﺎﻡ‪.‬‬ ‫ﻭﻟﻜﻦ ﰲ ﺍﳊﺎﺳﺒﺎﺕ ﺍﳊﺎﻟﻴﺔ ﻳﺴﻤﺢ ﺍﻟﻨﻈﺎﻡ ﻷﻛﺜﺮ ﻣﻦ ﺑﺮﻧﺎﻣﺞ ﺃﻥ ﳛﻤ‪‬ﻞ ﺇﱃ ﺍﻟﺬﺍﻛﺮﺓ ﻭﺃﻥ ﻳﻨﻔﺬﻭﻥ ﰲ ﻧﻔﺲ‬ ‫ﺍﻟﻮﻗﺖ‪.‬ﻭﻫﺬﺍ ﺍﻟﺘﻄﻮﺭ ﻳﺘﻄﻠﺐ ﲢﻜﻢ ﺃﻛﱪ ﻭﺗﻘﺴﻴﻢ ﺍﻟﱪﺍﻣﺞ ﺍﳌﺨﺘﻠﻔﺔ ﺇﱃ ﺃﺟﺰﺍﺀ ﻣﺴﺘﻘﻠﺔ‪ ،‬ﻭﻫﺬﻩ ﺍﻻﺣﺘﻴﺎﺟﺎﺕ‬ ‫ﺃﻧﺘﺠﺖ ﻟﻨﺎ ﻣﺎ ﻳﺪﻋﻰ ﺑﺎﻟﻌﻤﻠﻴﺔ ‪ ،process‬ﻭﻫﻲ ﺍﻟﱪﻧﺎﻣﺞ ﰲ ﻣﺮﺣﻠﺔ ﺍﻟﺘﻨﻔﻴﺬ‪.‬ﻭﺍﻟﻌﻤﻠﻴﺔ ﻫﻲ ﻭﺣﺪﺓ ﺍﻟﻌﻤﻞ ﰲ‬ ‫ﺃﻧﻈﻤﺔ ﻣﺸﺎﺭﻛﺔ ﺍﻟﻮﻗﺖ ‪ time-sharing‬ﺍﳊﺪﻳﺜﺔ‪.‬‬ ‫ﻭﻛﻠﻤﺎ ﻛﺎﻥ ﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ ﻣﻌﻘﺪﺍﹰ‪ ،‬ﻛﻠﻤﺎ ﺗﻮﻗﻌﻨﺎ ﻣﻨﻪ ﻋﻤﻞ ﺃﻣﻮﺭﹰﺍ ﺃﻛﺜﺮ ﺑﺎﻟﻨﻴﺎﺑﺔ ﻋﻦ ﻣﺴﺘﺨﺪﻣﻴﻪ‪.‬ﻟﺬﺍ ﻳﺘﻜﻮﻥ‬ ‫ﺍﻟﻨﻈﺎﻡ ﻣﻦ ﳎﻤﻮﻋﺔ ﻣﻦ ﺍﻟﻌﻤﻠﻴﺎﺕ‪ :‬ﻋﻤﻠﻴﺎﺕ ﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ ﺗﻨﻔﺬ ﺷﻔﺮﺓ )‪ (code‬ﺍﻟﻨﻈﺎﻡ‪ ،‬ﻭﻋﻤﻠﻴﺎﺕ ﺍﳌﺴﺘﺨﺪﻡ‬ ‫ﺗﻨﻔﺬ ﺷﻔﺮﺓ ﺍﳌﺴﺘﺨﺪﻡ‪.‬ﻭﻣﻦ ﺍﳌﻤﻜﻦ ﺃﻥ ﺗﻌﻤﻞ ﻛﻞ ﻫﺬﻩ ﺍﻟﻌﻤﻠﻴﺎﺕ ﰲ ﻧﻔﺲ ﺍﻟﻮﻗﺖ‪ ،‬ﲜﻌﻞ ﻭﺣﺪﺓ ﺍﳌﻌﺎﳉﺔ‬ ‫ﺍﳌﺮﻛﺰﻳﺔ )‪ (CPU‬ﺗﻌﻤﻞ ﻋﻠﻴﻬﻢ ﺑﺘﻌﺪﺩ ‪.multiplexed‬ﺑﺘﺒﺪﻳﻞ ﻭﺣﺪﺓ ﺍﳌﻌﺎﳉﺔ ﺑﲔ ﺍﻟﻌﻤﻠﻴﺎﺕ‪ ،‬ﳝﻜﻦ ﺃﻥ‬ ‫ﳚﻌﻞ ﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ ﺍﳊﺎﺳﺐ ﺃﻛﺜﺮ ﺇﻧﺘﺎﺟﻴﻪ‪.‬‬ ‫ﻫﺬﻩ ﻛﺎﻧﺖ ﺑﺪﺍﻳﺔ ﺗﻌﺮﻳﻔﻴﺔ ﻋﻦ ﺍﻟﻌﻤﻠﻴﺎﺕ ﻛﺎﻥ ﺍﳌﺮﺟﻊ ﻓﻴﻬﺎ ﻛﺘﺎﺏ‪:‬‬ ‫‪Operating System Concepts: Silbreschatz, Galvin and Gagne, 7th‬‬ ‫‪ edition‬ﻭﻓﻴﻤﺎ ﻳﻠﻲ ﺷﺮﺡ ﻣﻔﺼﻞ ﻋﻦ ﺑﻌﺾ ﺍﳌﻮﺍﺿﻴﻊ ﺍﳌﺘﻌﻠﻘﺔ ﺑﺎﻟﻌﻤﻠﻴﺎﺕ ﰲ ﻧﻈﻢ ﺍﻟﺘﺸﻐﻴﻞ‪ ،‬ﰎ ﲨﻌﻬﺎ ﻣﻦ‬ ‫ﻭﻳﻜﻲ ‪ wiki‬ﻣﺎﺩﺓ ﻧﻈﻢ ﺍﻟﺘﺸﻐﻴﻞ‪:‬‬ ‫ ‬ ‫‪http://os1h.pbwiki.com/‬‬ ‫ ‬ ‫‪http://os2h.pbwiki.com/‬‬ ‫ ‬ ‫‪http://os3h.pbwiki.com/‬‬ ‫ ‬ ‫‪http://os2a.pbwiki.com/‬‬ ‫ﻭﺇﻋﺪﺍﺩﻫﺎ ﻭﺗﻨﺴﻴﻘﻬﺎ ﺑﻮﺍﺳﻄﺔ ﻫﻨﺪ ﺧﺎﻟﺪ ﺍﻟﺮﻭﻗﻲ )‪([email protected]‬‬ ‫ﺍﳋﺮﻳﻄﺔ ﺍﻟﺬﻫﻨﻴﺔ ﻟﻠﻔﺼﻞ‪:‬‬ ‫ﺃﻭ ﹰﻻ‪ :‬ﻣﻔﻬﻮﻡ ﺍﻟﻌﻤﻠﻴﺔ ‪Process Concept9‬‬ ‫ﺍﻟﻌﻤﻠﻴﺔ ﻫﻲ ﺗﻨﻔﻴﺬ ﺑﺮﻧﺎﻣﺞ ﻣﺘﺴﻠﺴﻞ‪ ،‬ﻭﻋﻤﻮﻣﺎ ﳛﺘﺎﺝ ﺗﻨﻔﻴﺬ ﺍﻟﻌﻤﻠﻴﺔ ﺇﱃ ﻋﺪﺓ ﻣﻮﺍﺭﺩ ﻣﻨﻬﺎ‪ :‬ﻭﻗﺖ ﻭﺣﺪﺓ ﺍﳌﻌﺎﳉﺔ‬ ‫ﺍﳌﺮﻛﺰﻳﺔ )‪ ,(CPU‬ﺍﻟﺬﺍﻛﺮﺓ‪ ،‬ﺍﳌﻠﻔﺎﺕ ﻭﺃﺟﻬﺰﺓ ﺍﻹﺩﺧﺎﻝ ﻭﺍﻹﺧﺮﺍﺝ‪.‬ﻭﻫﺬﻩ ﺍﳌﻮﺍﺭﺩ ﺗﻌﻄﻰ ﻟﻠﻤﻬﻤﺔ ﺇﻣﺎ ﻭﻗﺖ‬ ‫ﺇﻧﺸﺎﺀﻫﺎ ﺃﻭ ﻭﻗﺖ ﺗﻨﻔﻴﺬﻫﺎ‪.‬‬ ‫ﻭﺍﻟﻌﻤﻠﻴﺔ ﻋﺎﺩﺓ ﻫﻲ ﻭﺣﺪﺓ ﻋﻤﻞ ﻣﺘﻜﺎﻣﻠﺔ ﰲ ﺃﻏﻠﺐ ﺃﻧﻈﻤﺔ ﺍﻟﺘﺸﻐﻴﻞ )‪ ،(operating systems‬ﻭﻫﻲ ﺇﻣﺎ‬ ‫ﻋﻤﻠﻴﺎﺕ ﺧﺎﺻﺔ ﺑﺄﻧﻈﻤﺔ ﺍﻟﺘﺸﻐﻴﻞ ﻭﺗﻨﻔﺬ ﺑﺮﺍﻣﺞ ﺍﻟﺘﺸﻐﻴﻞ‪ ،‬ﺃﻭ ﻋﻤﻠﻴﺎﺕ ﺧﺎﺻﺔ ﺑﺎﳌﺴﺘﺨﺪﻣﲔ ﻭﺗﻨﻔﺬ ﺑﺮﺍﻣﺞ‬ ‫ﺍﳌﺴﺘﺨﺪﻣﲔ‪.‬ﻭﲨﻴﻊ ﻫﺬﻩ ﺍﻟﻌﻤﻠﻴﺎﺕ ﺗﻨﻔﺬ ﰲ ﻧﻔﺲ ﺍﻟﻮﻗﺖ‪.‬‬ ‫ﻭﺍﳌﺴﺆﻭﻝ ﻋﻦ ﺇﺩﺍﺭﺓ ﻫﺬﻩ ﺍﻟﻌﻤﻠﻴﺎﺕ ﻭﻛﻞ ﻣﺎ ﻳﺘﻌﻠﻖ ‪‬ﺎ ﻣﻦ ﺇﻧﺸﺎﺀ ﺃﻭ ﺇﻟﻐﺎﺀ ﻭﺟﺪﻭﻟﺔ ﻭﺁﻟﻴﺔ ﺗﺰﺍﻣﻦ ﻭﺍﺗﺼﺎﻻﺕ‬ ‫ﺍﻟﻌﻤﻠﻴﺎﺕ ﻫﻮ ﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ‪.‬‬ ‫‪10‬‬ ‫ﺍﻟﻌﻤﻠﻴﺔ ‪Process‬‬ ‫ﲢﺘﻮﻱ ﺍﻟﻌﻤﻠﻴﺎﺕ )ﻋﻠﻰ ﺍﻷﻗﻞ( ﻋﻠﻰ‪:‬‬ ‫‪ o‬ﻣﺴﺎﺣﻪ ﺍﻟﻌﻨﻮﻧﺔ )‪ (address space‬ﻫﻲ ﻣﺴﺎﺣﻪ ﳏﺠﻮﺯﺓ ﺑﺎﻟﺬﺍﻛﺮﺓ )ﲢﺘﻮﻱ ﻋﻠﻰ ﻣﻌﻠﻮﻣﺎﺕ‬ ‫ﺍﻟﻌﻤﻠﻴﺔ(‬ ‫‪ o‬ﺍﻟﻜﻮﺩ ﺍﳌﺴﺘﺨﺪﻡ ﰲ ﺍﻟﱪﻧﺎﻣﺞ ﺍﳌﺮﺍﺩ ﺗﻨﻔﻴﺬﻩ )‪.(program code‬‬ ‫‪ o‬ﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﳌﺨﺰﻧﺔ ﻟﻠﱪﻧﺎﻣﺞ ﺍﳌﺮﺍﺩ ﺗﻨﻔﻴﺬﻩ )‪.(program data‬‬ ‫‪ o‬ﻭﻣﺆﺷﺮ ﻟﻠﺘﻜﺪﻳﺲ )‪.(stack pointer‬‬ ‫‪ o‬ﻋﺪﺍﺩ ﻟﻠﱪﻧﺎﻣﺞ )‪) (program counter‬ﺣﻴﺚ ﺃﻥ ﺍﻟﱪﻧﺎﻣﺞ ﻳﺘﺄﻟﻒ ﻣﻦ ﻋﺪﺓ ﺳﻄﻮﺭ ﻭﻫﺬﺍ‬ ‫ﺍﻟﻌﺪﺍﺩ ﻳﻌﺪ ﻫﺬﻩ ﺍﻷﺳﻄﺮ(‪.‬‬ ‫‪ o‬ﺍﻟﺴﺠﻞ )‪ (register‬ﻭﻗﻴﻤﻪ‪.‬‬ ‫‪ o‬ﺍﻟﻜﻮﻣﺔ )‪ (heap‬ﻋﻤﻠﻴﻪ ﺗﻄﻮﻳﻖ ﺃﻭ ﲢﺪﻳﺪ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﻟﱵ ﺍﺳﺘﺨﺪﻣﻨﺎﻫﺎ ﰲ ﻫﺬﻩ ﺍﻟﻌﻤﻠﻴﺔ‪.‬‬ ‫‪ 9‬ﻥ‪ s#‬ا&‪("O‬ش‬ ‫ا&‪|X‬ر‪http://en.wikipedia.org/wiki/Process_%28computing%29 :‬‬ ‫‪ † 10‬ء ا&‪($d‬د‬ ‫ﺛﺎﻧﻴﹰﺎ‪ :‬ﺣﺎﻻﺕ ﺍﻟﻌﻤﻠﻴﺎﺕ ‪Processes State11‬‬ ‫ﻛﻞ ﻋﻤﻠﻴﻪ ﻣﻦ ﺍﻟﻌﻤﻠﻴﺎﺕ ﻻﺑﺪ ﺃﻥ ﲤﺮ ﺑﺄﻛﺜﺮ ﻣﻦ ﺣﺎﻟﻪ ﻭﻗﺖ ﺗﻨﻔﻴﺬﻫﺎ‪ ,‬ﻫﺬﻩ ﺍﳊﺎﻻﺕ ﺗﺪﻝ ﻋﻠﻰ ﻧﺸﺎﻃﻬﺎ ﰲ‬ ‫ﻫﺬﻩ ﺍﻟﻠﺤﻈﺔ‪.‬‬ ‫ﺍﳊﺎﻻﺕ ﺍﻟﱵ ﲤﺮ ‪‬ﺎ ﺃﻱ ﻋﻤﻠﻴﻪ ﻫﻲ‪:‬‬ ‫ﺍﻟﺘﺠﺪﻳﺪ )‪) (new‬ﺃﻭ ﺣﺎﻟﺔ ﱂ ﺗﺴﺘﺨﺪﻡ ﻣﻦ ﻗﺒﻞ ﺃﻭ ﺑﺎﻷﺻﺢ ﱂ ﻳ‪‬ﻔﻌ‪‬ﻞ ﺍﺳﺘﺨﺪﺍﻣﻬﺎ(‪:‬‬ ‫ﻭﻫﻲ ﻭﻗﺖ ﺗﻌﺮﻳﻒ ﺍﻟﻌﻤﻠﻴﺔ ﻭﻭﻗﺖ ﺍﻟﺴﻤﺎﺡ ﳍﺎ ﺑﺎﻟﺪﺧﻮﻝ ﺇﱃ ﻗﺎﺋﻤﻪ ﺍﻟﻌﻤﻠﻴﺎﺕ ﺍﳌﻮﺟﻮﺩﺓ ﰲ ﺍﻟﺬﺍﻛﺮﺓ‬ ‫ﺍﻟﺮﺋﻴﺴﻴﺔ ‪ RAM‬ﻭﻳﺘﻢ ﺫﻟﻚ ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ ﺍﻟﱪﻧﺎﻣﺞ ﺿﻐﻄﺔ ﻣﺰﺩﻭﺟﺔ ﻭﺑﺎﻟﺘﺎﱄ ﺗﻨﺘﻘﻞ ﻫﺬﻩ ﺍﳊﺎﻟﺔ ﻣﻦ‬ ‫ﺍﳊﺎﻟﺔ ﺍﳋﺎﻣﻠﺔ ﺇﱃ ﺣﺎﻟﻪ ﺃﺧﺮﻯ‪ ،‬ﻣﺜﻞ‪":‬ﺣﺎﻟﻪ ﺍﻟﺘﻨﺸﻴﻂ"‪.‬‬ ‫ﺍﻻﺳﺘﻌﺪﺍﺩ )‪:(ready‬‬ ‫ﻫﻲ ﺍﻟﻌﻤﻠﻴﺔ ﺍﳉﺎﻫﺰﺓ ﻟﻠﺘﻨﻔﻴﺬ ﻭﺍﻟﺪﺧﻮﻝ ﺇﱃ ﻭﺣﺪﺓ ﺍﳌﻌﺎﳉﺔ ﺍﳌﺮﻛﺰﻳﺔ‪ ، CPU‬ﻭﻟﻦ ﻳﺴﻤﺢ ﳍﺎ ﺑﺎﻟﺘﻨﻔﻴﺬ‬ ‫ﺑﺴﺒﺐ ﻭﺟﻮﺩ ﻋﻤﻠﻴﻪ ﺃﺧﺮﻯ ﺗﻨﻔﺬ ﰲ ﻧﻔﺲ ﺍﻟﻮﻗﺖ‪.‬‬ ‫ﺍﻟﺘﺸﻐﻴﻞ ﺃﻭ ﺍﻟﺘﻨﻔﻴﺬ )‪:(Running‬‬ ‫ﻫﻲ ﺣﺎﻟﺔ ﺍﻟﻌﻤﻠﻴﺎﺕ ﻭﺍﻷﻭﺍﻣﺮ ﻭﻗﺖ ﺍﻟﺘﻨﻔﻴﺬ ﰲ ﻭﺣﺪﺓ ﺍﳌﻌﺎﳉﺔ ﺍﳌﺮﻛﺰﻳﺔ‪. CPU‬‬ ‫ﺍﻻﻧﺘﻈﺎﺭ)‪:(waiting‬‬ ‫ﻫﻲ ﺣﺎﻟﺔ ﺍﻟﻌﻤﻠﻴﺔ ﻋﻨﺪ ﺍﻧﺘﻈﺎﺭ ﺣﺪﻭﺙ ﺃﻣﺮ ﻣﻌﲔ‪ ،‬ﻣﺜﻼ‪ :‬ﻳﻨﻈﺮ ﺇﺩﺧﺎﻝ ﺑﻴﺎﻧﺎﺕ ﻣﻦ ﺍﳌﺴﺘﺨﺪﻡ ﺃﻭ ﻋﻤﻠﻴﻪ‬ ‫ﻃﺒﺎﻋﺔ‪.‬‬ ‫ﺍﻻﻧﺘﻬﺎﺀ)‪:(terminated‬‬ ‫‪("X& 11‬ء ا&‪(u‬ﺱ‪U‬‬ ‫ا&‪Operating System Concepts: Silbreschatz, Galvin and Gagne, 7th edition :‡nUX‬‬ ‫ﻫﻲ ﺣﺎﻟﺔ ﺍﻟﻌﻤﻠﻴﺔ ﻋﻨﺪ ﺍﻻﻧﺘﻬﺎﺀ‪ ,‬ﻭﻫﻲ ﺇﻣﺎ ﺃﻥ ﺗﻜﻮﻥ ﺍﻟﻌﻤﻠﻴﺔ ﻗﺪ ﺍﻧﺘﻬﺖ ﺑﺸﻜﻞ ﺳﻠﻴﻢ ﺃﻭ ﺃﻧﻪ ﻗﺪ‬ ‫ﺣﺼﻞ ﳍﺎ ﺧﻄﺄ ﻣﻌﲔ ﺃﺩﻯ ﺇﱃ ﺇ‪‬ﺎﺀﻫﺎ‪.‬‬ ‫ﻭﻣﻦ ﻣﻔﻬﻮﻣﻨﺎ ﻟﻠﺤﺎﻻﺕ ﳝﻜﻦ ﺃﻥ ﻧﺴﺘﻨﺘﺞ ﻛﻢ ﻋﻤﻠﻴﺔ ﳝﻜﻦ ﺃﻥ ﺗﺘﻢ ﰲ ﻛﻞ ﺣﺎﻟﺔ‪.‬‬ ‫‪-‬ﰲ ﺣﺎﻟﺔ )ﺍﻻﺳﺘﻌﺪﺍﺩ(‪ :‬ﳝﻜﻦ ﺃﻥ ﺗﻮﺟﺪ ﺃﻛﺜﺮ ﻣﻦ ﻋﻤﻠﻴﺔ ﰲ ﺣﺎﻟﺔ ﺍﺳﺘﻌﺪﺍﺩ ﰲ ﻧﻔﺲ ﺍﻟﻮﻗﺖ‪ ،‬ﻭﻛﻞ ﻫﺬﻩ‬ ‫ﺍﻟﻌﻤﻠﻴﺎﺕ ﻣﺴﺘﻌﺪﺓ ﻟﻠﺘﻨﻔﻴﺬ ﰲ ﺃﻱ ﻭﻗﺖ‪.‬‬ ‫‪-‬ﰲ ﺣﺎﻟﺔ )ﺍﻟﺘﺸﻐﻴﻞ(‪ :‬ﻓﺈﻧﻪ ﰲ ﻭﻗﺖ ﻣﻌﲔ ﻳﺘﻢ ﺗﺸﻐﻴﻞ ﻋﻤﻠﻴﺔ ﻭﺍﺣﺪﺓ ﻋﻠﻰ ﻭﺣﺪﺓ ﺍﳌﻌﺎﳉﺔ ﺍﳌﺮﻛﺰﻳﺔ )‪،(CPU‬‬ ‫ﻭﻻ ﳝﻜﻦ ﺃﻥ ﻳﻜﻮﻥ ﻫﻨﺎﻙ ﺃﻛﺜﺮ ﻣﻦ ﻋﻤﻠﻴﺔ ﺗﻌﻤﻞ ﻋﻠﻰ ﻭﺣﺪﺓ ﺍﳌﻌﺎﳉﺔ ﺍﳌﺮﻛﺰﻳﺔ )‪ (CPU‬ﰲ ﻧﻔﺲ ﺍﻟﻮﻗﺖ‬ ‫)ﺃﻱ ﰲ ﺣﺎﻟﺔ ﺍﻟﺘﺸﻐﻴﻞ( ‪ ،‬ﻓﻘﻂ ﻋﻤﻠﻴﺔ ﻭﺍﺣﺪﺓ ﺗﻨﻔﺬ ﰲ ﻭﻗﺖ ﻭﺍﺣﺪ ﻭﻻ ﳝﻜﻦ ﺃﻥ ﻳﻨﻔﺬ ﺃﻛﺜﺮ ﻣﻦ ﺫﻟﻚ‪.‬‬ ‫‪-‬ﰲ ﺣﺎﻟﺔ )ﺍﻻﻧﺘﻈﺎﺭ(‪ :‬ﺗﺸﺒﻪ ﺣﺎﻟﺔ )ﺍﻻﺳﺘﻌﺪﺍﺩ( ﻣﻦ ﺍﳌﻤﻜﻦ ﺃﻥ ﺗﻜﻮﻥ ﻫﻨﺎﻙ ﺃﻛﺜﺮ ﻣﻦ ﻋﻤﻠﻴﺔ ﰲ ﺣﺎﻟﺔ ﺍﻧﺘﻈﺎﺭ‬ ‫ﳊﺪﺙ ﻣﻌﲔ ﺃﻳﹰﺎ ﻛﺎﻥ ﻫﺬﺍ ﺍﳊﺪﺙ ﰲ ﻧﻔﺲ ﺍﻟﻮﻗﺖ‪.‬‬ ‫‪12‬‬ ‫ﺣﺎﻻﺕ ﺍﻟﻌﻤﻠﻴﺎﺕ‬ ‫ﺷﺮﺡ ﻣﺒﺴﻂ ﻟﻠﺮﺳﻢ ﺍﳌﻮﺿﺢ ﺃﻋﻼﻩ‪:‬‬ ‫‪ !S 12‬ﺡ‪cQ‬ق &‪("X‬ء ا&‪(u‬ﺱ‪U‬‬ ‫ﺗﺒﺪﺃ ﺍﻟﻌﻤﻠﻴﺔ ﻣﻦ ﺣﺎﻟﻪ ﺍﻟﺘﺠﺪﻳﺪ ﻭﺫﻟﻚ ﺑﺎﻟﻀﻐﻂ ﻋﻠﻴﻬﺎ ﻣﻦ ﺟﻬﺎﺯ ﺍﳊﺎﺳﺐ ﻟﺪﻳﻚ ﰒ ﺗﻨﺘﻘﻞ‬ ‫ﺑﻌﺪ ﺫﻟﻚ ﺇﱃ ﺣﺎﻟﺔ )ﺍﻻﺳﺘﻌﺪﺍﺩ( ﻭﻫﺬﻩ ﺍﳊﺎﻟﺔ ﻳﺘﻢ ﺇﺿﺎﻓﺘﻬﺎ ﺇﱃ ﺍﳉﺪﻭﻟﺔ ﰲ )‪ (CPU‬ﻟﻴﺘﻢ‬ ‫ﺗﻨﻔﻴﺬﻫﺎ ﻋﻨﺪﻣﺎ ﳛﲔ ﺍﻟﻮﻗﺖ ﺍﳌﺨﺼﺺ ﳍﺎ‬ ‫ﺗﺒﺪﺃ ﺍﻟﻌﻤﻠﻴﺔ ﺑﺎﻟﺘﻨﻔﻴﺬ ﻭﺗﻨﺘﻘﻞ ﻣﻦ ﺣﺎﻟﺔ ﺇﱃ ﺣﺎﻟﺔ ﰲ ﺣﺎﻻﺕ ﻣﻌﻴﻨﺔ‪:‬‬ ‫‪ o‬ﺗﻨﺘﻘﻞ ﺇﱃ ﺣﺎﻟﺔ ﺍﻻﻧﺘﻬﺎﺀ)‪ (terminated‬ﻋﻨﺪﻣﺎ ﺗﻨﺘﻬﻲ ﺍﻟﻌﻤﻠﻴﺔ ﺑﺴﻼﻡ ﺑﺸﻜﻞ ﻛﺎﻣﻞ ﺃﻭ‬ ‫ﻋﻨﺪ ﺣﺪﻭﺙ ﺧﻄﺄ ﻣﻌﲔ ﺃﺩﻯ ﺇﱃ ﺃﻥ ﻳﻘﺮﺭ ﺍﻟﻨﻈﺎﻡ ﺇ‪‬ﺎﺀ ﺍﻟﻌﻤﻠﻴﺔ‬ ‫‪ o‬ﺗﻨﺘﻘﻞ ﺇﱃ ﺣﺎﻟﺔ ﺍﻻﺳﺘﻌﺪﺍﺩ )‪ (ready‬ﻋﻨﺪﻣﺎ ﻳﻨﺘﻬﻲ ﺍﻟﻮﻗﺖ ﺍﶈﺪﺩ ﳍﺬﻩ ﺍﻟﻌﻤﻠﻴﺔ ﻭﻻ ﲢﺘﺎﺝ‬ ‫ﺇﱃ ﺗﻨﻔﻴﺬ ﺣﺪﺙ ﻣﻌﲔ ﺳﻮﺍﺀ ﺇﺩﺧﺎﻝ ﺑﻴﺎﻧﺎﺕ ﺃﻭ ﻏﲑﻩ‬ ‫‪ o‬ﺗﻨﺘﻘﻞ ﺇﱃ ﺣﺎﻟﺔ ﺍﻻﻧﺘﻈﺎﺭ)‪ (waiting‬ﻋﻨﺪﻣﺎ ﺗﻜﻮﻥ ﺍﻟﻌﻤﻠﻴﺔ ﲤﺖ ﺑﺸﻜﻞ ﺟﺰﺋﻲ ﻭﻟﻜﻦ‬ ‫ﲢﺘﺎﺝ ﺇﱃ ﺣﺪﺙ ﻣﻌﲔ ﻳﻄﻠﺐ ﻣﻦ ﺍﳌﺴﺘﺨﺪﻡ ﺳﻮﺍﺀ ﺇﺩﺧﺎﻝ ﺃﻭ ﻃﺒﺎﻋﺔ ﺃﻭ ﺃﻭﺍﻣﺮ ﺃﺧﺮﻯ‬ ‫‪ o‬ﻋﻨﺪﻣﺎ ﺗﻜﻮﻥ ﺍﻟﻌﻤﻠﻴﺔ ﰲ ﺣﺎﻟﺔ ﺍﻻﻧﺘﻈﺎﺭ ﻭﺍﻧﺘﻬﻰ ﺍﳊﺪﺙ ﺍﳌﻄﻠﻮﺏ ﺗﻨﺘﻘﻞ ﻣﻦ ﺣﺎﻟﺘﻬﺎ ﺇﱃ ﺣﺎﻟﻪ‬ ‫ﺍﻻﺳﺘﻌﺪﺍﺩ‪ ،‬ﺇﺫﺍ ﺍﻧﺘﻬﻰ ﺍﳊﺪﺙ ﺑﺸﻜﻞ ﻛﺎﻣﻞ ﻓﻬﻲ ﺍﻵﻥ ﻣﺴﺘﻌﺪﺓ ﻟﻠﺘﻨﻔﻴﺬ‪.‬‬ ‫ﻛﺘﻠﺔ ﺍﻟﺴﻴﻄﺮﺓ ﻋﻠﻰ ﺍﻟﻌﻤﻠﻴﺔ ‪Process Control Block13‬‬ ‫ﻛﻞ ﻋﻤﻠﻴﺔ ﲤﺜﻞ ﰲ ﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ ﺑﻜﺘﻠﺔ ﺍﻟﺴﻴﻄﺮﺓ ﻋﻠﻰ ﺍﻟﻌﻤﻠﻴﺔ )‪ (Process Control Block‬ﻭﻳﺮﻣﺰ‬ ‫ﳍﺎ ﺑﺎﻟﺮﻣﺰ ‪ PCB‬ﻭﻫﻲ ﺗﺮﺍﻛﻴﺐ ﺑﻴﺎﻧﺎﺕ ﰲ ﻧﻮﺍﺓ ﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ ﲢﺘﻮﻱ ﻋﻠﻰ ﺍﳌﻌﻠﻮﻣﺎﺕ ﺍﻟﻼﺯﻣﺔ ﻹﺩﺍﺭﺓ ﻋﻤﻠﻴﺔ‬ ‫ﻣﻌﻴﻨﺔ‪ ,‬ﻭﳜﺘﻠﻒ ﺗﻨﻔﻴﺬﻫﺎ ﻣﻦ ﻧﻈﺎﻡ ﻵﺧﺮ‪ ,‬ﻭﻟﻜﻦ ﺑﺸﻜﻞ ﻋﺎﻡ ﺳﺘﺸﻤﻞ ﻣﺎ ﻳﻠﻲ ﺑﺸﻜﻞ ﻣﺒﺎﺷﺮ ﺃﻭ ﻏﲑ ﻣﺒﺎﺷﺮ ‪:‬‬ ‫‪ o‬ﺣﺎﻟﺔ ﺍﻟﻌﻤﻠﻴﺔ )‪ :(state‬ﳝﻜﻦ ﺃﻥ ﺗﻜﻮﻥ ﺟﺪﻳﺪﺓ‪ ,‬ﺟﺎﻫﺰﺓ‪ ,‬ﻗﻴﺪ ﺍﻟﺘﺸﻐﻴﻞ‪ ,‬ﰲ ﺣﺎﻟﺔ ﺍﻧﺘﻈﺎﺭ ﺃﻭ ﰎ‬ ‫ﺇﻳﻘﺎﻓﻬﺎ‪.‬‬ ‫‪ 13‬ه) ا&‪U"OX‬ي‬ ‫ا&‪Operating System Concepts: Silbreschatz, Galvin and Gagne, 7th edition :‡nUX‬‬ ‫‪http://en.wikipedia.org/wiki/Process_control_block‬‬ ‫‪ o‬ﻋﺪﺍﺩ ﺍﻟﱪﻧﺎﻣﺞ )‪ :(Program Counter‬ﻳﺸﲑ ﺍﻟﻌﺪﺍﺩ ﺇﱃ ﻋﻨﻮﺍﻥ ﺍﻷﻣﺮ ﺍﻟﻘﺎﺩﻡ ﺍﻟﺬﻱ‬ ‫ﺳﻴﻨﻔﺬ ﰲ ﻫﺬﻩ ﺍﻟﻌﻤﻠﻴﺔ‪.‬‬ ‫‪ o‬ﺳﺠﻼﺕ ﻭﺣﺪﺓ ﺍﳌﻌﺎﳉﺔ ﺍﳌﺮﻛﺰﻳﺔ )‪ :(Registers‬ﺗﺘﻔﺎﻭﺕ ﺍﻟﺴﺠﻼﺕ ﰲ ﺍﻟﻌﺪﺩ ﻭﺍﻟﻨﻮﻉ‬ ‫ﺍﻋﺘﻤﺎﺩﺍ ﻋﻠﻰ ﻫﻨﺪﺳﺔ ﺍﳊﺎﺳﻮﺏ‪ ,‬ﻭﲢﺘﻮﻱ ﻋﻠﻰ ﻣﺆﺷﺮﺍﺕ ﻟﻠﻜﻮﻣﺔ )ﻟﻠﻤﻜﺪ‪‬ﺱ( ‪(stack‬‬ ‫)‪ ,pointer‬ﺳﺠﻼﺕ ﺍﻟﻔﻬﺮﺳﺔ )‪ ،(index registers‬ﺳﺠﻼﺕ ﻣﺘﻌﺪﺩﺓ ﺍﻷﻏﺮﺍﺽ‬ ‫)‪ (general-purpose registers‬ﺑﺎﻹﺿﺎﻓﺔ ﺇﱃ ﺃﻱ ﻣﻌﻠﻮﻣﺎﺕ ﺷﺮﻃﻴﺔ ﰲ ﺍﻟﻜﻮﺩ‬ ‫)‪ ، (condition-code information‬ﻗﻴﻢ ﺍﻟﺴﺠﻼﺕ ﳚﺐ ﺃﻥ ﲢﻔﻆ ﻋﻨﺪ ﺣﺪﻭﺙ‬ ‫ﻣﻘﺎﻃﻌﺔ ﻟﻠﻌﻤﻠﻴﺔ‪ ,‬ﻛﻲ ﺗﺴﻤﺢ ﻟﻠﻌﻤﻠﻴﺔ ﺃﻥ ﺗﺴﺘﻤﺮ ﺑﺸﻜﻞ ﺻﺤﻴﺢ ﻋﻨﺪﻣﺎ ﻳﺘﻢ ﺗﺸﻐﻴﻠﻬﺎ ﻻﺣﻘﹰﺎ‪.‬‬ ‫‪ o‬ﻣﻌﻠﻮﻣﺎﺕ ﺟﺪﻭﻟﺔ ﻭﺣﺪﺓ ﺍﳌﻌﺎﳉﺔ ﺍﳌﺮﻛﺰﻳﺔ )‪:(CPU-scheduling information‬‬ ‫ﺗﺘﻀﻤﻦ ﺃﻭﻟﻮﻳﺔ ﺍﻟﻌﻤﻠﻴﺔ‪ ,‬ﻣﺆﺷﺮﺍﺕ ﻋﻠﻰ ﺻﻔﻮﻑ ﺍﳉﺪﻭﻟﺔ ﻭﺃﻱ ﻋﻮﺍﻣﻞ ﺧﺎﺻﺔ ﺑﺎﳉﺪﻭﻟﺔ‪.‬‬ ‫‪ o‬ﻣﻌﻠﻮﻣﺎﺕ ﺇﺩﺍﺭﺓ ﺍﻟﺬﺍﻛﺮﺓ )‪ :(memory-management information‬ﻭﻫﻲ‬ ‫ﲢﺘﻮﻱ ﻋﻠﻰ ﻣﻌﻠﻮﻣﺎﺕ ﻋﻦ ﻗﻴﻢ ﺳﺠﻼﺕ ﺍﻟﺒﺪﺍﻳﺔ )‪ (base‬ﻭﺍﻟﻨﻬﺎﻳﺔ )‪ ,(limit‬ﻭﺟﺪﺍﻭﻝ‬ ‫ﺍﻷﻗﺴﺎﻡ )‪ (segment table‬ﻭﺟﺪﺍﻭﻝ ﺍﻟﺼﻔﺤﺎﺕ )‪ (page table‬ﻭﺫﻟﻚ ﺍﻋﺘﻤﺎﺩﹰﺍ ﻋﻠﻰ‬ ‫ﻧﻈﺎﻡ ﺍﻟﺬﺍﻛﺮﺓ ﺍﳌﺴﺘﺨﺪﻡ ﻣﻦ ﻗﺒﻞ ﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ‪.‬‬ ‫‪ o‬ﺍﳌﻌﻠﻮﻣﺎﺕ ﺍﳊﺴﺎﺑﻴﺔ ﻟﻠﻌﻤﻠﻴﺔ )‪ :(Accounting information‬ﺗﺘﻀﻤﻦ ﻛﻤﻴﺔ ﻭﺣﺪﺓ‬ ‫ﺍﳌﻌﺎﳉﺔ ﺍﳌﺮﻛﺰﻳﺔ ﻭﺍﻟﻮﻗﺖ ﺍﳊﻘﻴﻘﻲ ﺍﻟﻠﺬﺍﻥ ﰎ ﺍﺳﺘﺨﺪﺍﻣﻬﻤﺎ ﻣﻦ ﻗﺒﻞ ﺍﻟﻌﻤﻠﻴﺔ‪.‬‬ ‫‪ o‬ﻣﻌﻠﻮﻣﺎﺕ ﻋﻦ ﺣﺎﻟﺔ ﺍﻹﺩﺧﺎﻝ ﻭﺍﻹﺧﺮﺍﺝ )‪ :(I/O state information‬ﺗﺘﻀﻤﻦ ﻗﺎﺋﻤﺔ‬ ‫ﺃﺟﻬﺰﺓ ﺍﻹﺩﺧﺎﻝ ﻭﺍﻹﺧﺮﺍﺝ ﺍﻟﱵ ﺧﺼﺼﺖ ﻟﻠﻌﻤﻠﻴﺔ‪ ,‬ﻗﺎﺋﻤﺔ ﺍﳌﻠﻔﺎﺕ ﺍﳌﻔﺘﻮﺣﺔ ﻭﺇﱃ ﺁﺧﺮﻩ‪.‬‬ ‫‪ o‬ﻣﺆﺷﺮ ﻋﻠﻰ ﺍﻟﻌﻤﻠﻴﺔ ﺍﻟﺘﺎﻟﻴﺔ ﺍﻟﱵ ﳚﺐ ﺗﻨﻔﻴﺬﻫﺎ‪ ،‬ﺃﻱ ﻣﺆﺷﺮ ﻋﻠﻰ ‪ PCB‬ﻟﻠﻌﻤﻠﻴﺔ ﺍﻟﺘﺎﻟﻴﺔ‪.‬‬ ‫ﺃﺛﻨﺎﺀ ﺍﻟﺘﺒﺪﻳﻞ ﺇﱃ ﻋﻤﻠﻴﺔ ﺃﺧﺮﻯ‪ ,‬ﻳﺘﻢ ﺇﻳﻘﺎﻑ ﺍﻟﻌﻤﻠﻴﺔ ﺍﳊﺎﻟﻴﺔ ﺃﻱ ﺍﻟﱵ ﺗﻜﻮﻥ ﻗﻴﺪ ﺍﻟﺘﺸﻐﻴﻞ ﻭﺗﺸﻐﻴﻞ ﺍﻟﻌﻤﻠﻴﺔ‬ ‫ﺍﻷﺧﺮﻯ‪.‬ﰲ ﻫﺬﻩ ﺍﳊﺎﻟﺔ ﳚﺐ ﺃﻥ ﺗﻌﻤﻞ ﺍﻟﻨﻮﺍﺓ ﻋﻠﻰ ﺇﻳﻘﺎﻑ ﺍﻟﻌﻤﻠﻴﺔ ﺍﳊﺎﻟﻴﺔ ﻭﺗﻌﻄﻲ ﻧﺴﺨﺔ ﻣﻦ ﻗﻴﻢ ﺍﻟﺴﺠﻼﺕ‬ ‫ﻟﻜﺘﻠﺔ ﺍﻟﺴﻴﻄﺮﺓ ﻋﻠﻰ ﺍﻟﻌﻤﻠﻴﺔ )‪ (PCB‬ﺍﳋﺎﺻﺔ ‪‬ﺬﻩ ﺍﻟﻌﻤﻠﻴﺔ‪ ,‬ﰒ ﲡﺪﺩ ﻗﻴﻢ ﺍﻟﺴﺠﻼﺕ ﺑﻘﻴﻢ ﻛﺘﻠﺔ ﺍﻟﺴﻴﻄﺮﺓ‬ ‫ﻋﻠﻰ ﺍﻟﻌﻤﻠﻴﺔ )‪ (PCB‬ﻟﻠﻌﻤﻠﻴﺔ ﺍﳉﺪﻳﺪﺓ‪.‬‬ ‫‪14‬‬ ‫ﻛﺘﻠﺔ ﺍﻟﺴﻴﻄﺮﺓ ﻋﻠﻰ ﺍﻟﻌﻤﻠﻴﺔ‬ ‫ﻣﻮﻗﻊ ﻛﺘﻠﺔ ﺍﻟﺴﻴﻄﺮﺓ ﻋﻠﻰ ﺍﻟﻌﻤﻠﻴﺔ )‪:(PCB‬‬ ‫ﲟﺎ ﺃﻥ ﻛﺘﻠﺔ ﺍﻟﺴﻴﻄﺮﺓ ﻋﻠﻰ ﺍﻟﻌﻤﻠﻴﺔ ﲢﻮﻱ ﻣﻌﻠﻮﻣﺎﺕ ﺣﺴﺎﺳﺔ ﻭﻣﻬﻤﺔ ﻓﺈ‪‬ﺎ ﳚﺐ ﺃﻥ ﺗﻮﺿﻊ ﰲ ﻣﻨﻄﻘﺔ ﺍﻟﺬﺍﻛﺮﺓ‬ ‫ﺍﶈﻤﻴﺔ ﻣﻦ ﻭﺻﻮﻝ ﺍﳌﺴﺘﺨﺪﻡ ﺍﻟﻌﺎﺩﻱ‪.‬‬ ‫ﰲ ﺑﻌﺾ ﺃﻧﻈﻤﺔ ﺍﻟﺘﺸﻐﻴﻞ ﻳﺘﻢ ﻭﺿﻌﻬﺎ ﰲ ﺑﺪﺍﻳﺔ ﻛﻮﻣﺔ ﺍﻟﻨﻮﺍﺓ )‪ (kernel stack‬ﻟﻠﻌﻤﻠﻴﺔ ﻷﻧﻪ ﻣﻮﻗﻊ ﳏﻤﻲ‬ ‫ﻭﻣﻨﺎﺳﺐ‪.‬‬ ‫‪15‬‬ ‫ﺛﺎﻟﺜﹰﺎ‪ :‬ﺟﺪﻭﻟﺔ ﺍﻟﻌﻤﻠﻴﺎﺕ ‪Process Scheduling‬‬ ‫‪www.ice.ntnu.edu.tw/~swanky/os/chap4.htm 14‬‬ ‫‪ 15‬ﻥ‪c‬ر‰ ا&‪ !%"PX‬ا&‪UX‬ا‪Operating System Concepts: Silbreschatz, Galvin and Gagne, 7th edition :‡n‬‬ ‫‪http://en.wikipedia.org/wiki/Scheduling‬‬ ‫ﻣﻦ ﺍﳌﻨﻄﻘﻲ ﺟﺪﺍ ﺃﻥ ﻳﻜﻮﻥ ﻫﻨﺎﻙ ﻃﺮﻳﻘﺔ ﳉﻤﻊ ﺍﳌﻬﺎﻡ ﰲ ﻣﻜﺎﻥ ﻭﺍﺣﺪ ﺑﺸﻜﻞ ﻣﻨﻈﻢ ﻭﻣﺮﺗﺐ ﻫﺬﺍ‬ ‫ﺍﳌﻜﺎﻥ ﻳﺴﻤﻰ ﺑﺎﻟﻄﺎﺑﻮﺭ )‪(queue‬‬ ‫ﻃﻮﺍﺑﲑ ﺍﳉﺪﻭﻟﺔ ‪:Scheduling Queues‬‬ ‫‪.1‬ﻃﺎﺑﻮﺭ ﺍﳌﻬﺎﻡ )‪ :(job queue‬ﻳﻮﺟﺪ ﻓﻴﻪ ﲨﻴﻊ ﺍﻟﻌﻤﻠﻴﺎﺕ ﺍﳌﻮﺟﻮﺩﺓ ﰲ ﺍﻟﻨﻈﺎﻡ‬ ‫‪.2‬ﺍﻟﻄﺎﺑﻮﺭ ﺍﳉﺎﻫﺰ )‪ :(ready queue‬ﺑﻪ ﲨﻴﻊ ﺍﳌﻬﺎﻡ ﺍﻟﱵ ﺗﻨﺘﻈﺮ ﺍﻟﺘﻨﻔﻴﺬ‬ ‫‪16‬‬ ‫‪.3‬ﻃﺎﺑﻮﺭ ﺍﳉﻬﺎﺯ )‪ :(device queue‬ﲨﻴﻊ ﺍﳌﻬﺎﻡ ﺍﻟﱵ ﺗﻨﺘﻈﺮ ﻣﺪﺧﻼﺕ ﺃﻭ ﳐﺮﺟﺎﺕ‪.‬‬ ‫ﺟﺪﻭﻟﺔ ﺍﻟﻌﻤﻠﻴﺎﺕ‪:‬‬ ‫ﻫﻲ ﻭﺿﻊ ﺧﻄﺔ ﻟﺘﺮﺗﻴﺐ ﺩﺧﻮﻝ ﺍﻟﻌﻤﻠﻴﺎﺕ ﻋﻠﻰ ﺍﳌﻌﺎﰿ ﲝﻴﺚ ﺗﺪﺧﻞ ﻋﻤﻠﻴﺔ ﻭﺍﺣﺪﻩ ﻛﻞ ﻣﺮﺓ ﻭﻧﺴﺘﻐﻞ ﻣﻌﻈﻢ‬ ‫ﻭﻗﺖ ﺍﳌﻌﺎﰿ ﻭ ﻳﻘﻮﻡ ) ﳎﺪﻭﻝ ﺍﻟﻌﻤﻠﻴﺎﺕ ( ﺑﺘﺮﺗﻴﺐ ﺩﺧﻮﻝ ﺍﻟﻌﻤﻠﻴﺎﺕ ﻋﻠﻰ ﺍﳌﻌﺎﰿ‬ ‫‪http://en.wikipedia.org/wiki/Scheduling_%28computing%29‬‬ ‫‪http://en.wikipedia.org/wiki/Ready_queue‬‬ ‫‪(* 16‬ی‪W‬ة ا&‪U"OX‬ي‬ ‫ا&‪Operating System Concepts: Silbreschatz, Galvin and Gagne, 7th edition :‡nUX‬‬ ‫‪17‬‬ ‫)‪(Scheduler‬‬ ‫ﺍ‪‬ﺪﻭﻝ‬ ‫ﺟﺪﻭﻟﺔ ﺍﻟﻄﻮﺍﺑﲑ‪:queue scheduling‬‬ ‫ﻋﻨﺪﻣﺎ ﺗﺪﺧﻞ ﻋﻤﻠﻴﺔ ﺇﱃ ﺍﻟﻨﻈﺎﻡ ﻓﺈ‪‬ﺎ ﺗﺪﺧﻞ ﰲ ﻃﺎﺑﻮﺭ ﺍﳌﻬﺎﻡ )‪ ( job queue‬ﺍﻟﺬﻱ ﳛﺘﻮﻱ ﲨﻴﻊ ﻋﻤﻠﻴﺎﺕ‬ ‫ﺍﻟﻨﻈﺎﻡ ﻭﻋﻨﺪﻣﺎ ﺗﺼﺒﺢ ﺍﻟﻌﻤﻠﻴﺔ ﺟﺎﻫﺰﺓ ﻭ ﺗﻨﺘﻈﺮ ﺍﻟﺘﻨﻔﻴﺬ ﻓﺈ‪‬ﺎ ﺗﻨﺘﻘﻞ ﺇﱃ ﺍﻟﻄﺎﺑﻮﺭ ﺍﳉﺎﻫﺰ)‪( ready queue‬‬ ‫ﺃﻣﺎ ﺇﺫﺍ ﻛﺎﻧﺖ ﺍﻟﻌﻤﻠﻴﺔ ﺗﻨﺘﻈﺮ ﻋﻤﻠﻴﺔ ﺇﺩﺧﺎﻝ ﺃﻭ ﺇﺧﺮﺍﺝ ﻣﺜﻞ ﺍﻟﺘﺤﻤﻴﻞ ﻣﻦ ﺍﻟﻘﺮﺹ ﺍﻟﺼﻠﺐ ﺃﻭ ﻛﺎﻧﺖ ﲣﺪﻡ‬ ‫ﺍﺗﺼﺎﻝ ﺍﻧﺘﺮﻧﺖ ﻓﺈ‪‬ﺎ ﺗﻨﺘﻘﻞ ﺇﱃ ﻃﺎﺑﻮﺭ ﺍﻹﺩﺧﺎﻝ ﻭﺍﻹﺧﺮﺍﺝ )‪(I/O queue‬‬ ‫‪17‬‬ ‫‪http://arstechnica.com/articles/paedia/cpu/hyperthreading.ars/4‬‬ ‫‪18‬‬ ‫ﺭﺳﻢ ﺗﻮﺿﻴﺤﻲ ﻟﻠﻄﻮﺍﺑﲑ ﻳﻮﺿﺢ ﺟﺪﻭﻟﺔ ﺍﻟﻌﻤﻠﻴﺎﺕ‬ ‫ﺃﻧﻮﺍﻉ ﺍﳉﺪﻭﻟﺔ ‪:scheduler‬‬ ‫ﺍﳉﺪﻭﻟﺔ ﻃﻮﻳﻠﺔ ﺍﳌﺪﻯ ‪:long-term scheduler‬‬ ‫ﻭ ﻫﻲ ﺍﻟﱵ ﺗﻘﺮﺭ ﺃﻱ ﺍﻟﻌﻤﻠﻴﺎﺕ ﺳﺘﺪﺧﻞ ﺇﱃ ﺍﻟﻄﺎﺑﻮﺭ ﺍﳉﺎﻫﺰ ﻭ ﺃﻳﻬﺎ ﲣﺮﺝ ﺃﻭ ﺗﺘﺄﺧﺮ‪ ،‬ﻭﻫﺬﻩ ﺍﳉﺪﻭﻟﺔ ﻟﻴﺴﺖ‬ ‫ﻣﻮﺟﻮﺩﺓ ﰲ ﺍﳊﺎﺳﺒﺎﺕ ﺍﳌﻜﺘﺒﻴﺔ ﻓﺎﻟﻌﻤﻠﻴﺎﺕ ﺗﺪﺧﻞ ﺇﱃ ﺍﳌﻌﺎﰿ ﺁﻟﻴﹰﺎ ﻭﻟﻜﻨﻬﺎ ﻣﻬﻤﺔ ﻟﻨﻈﺎﻡ ﺍﻟﻮﻗﺖ ﺍﳊﻘﻴﻘﻲ ) ‪real‬‬ ‫‪ (time system‬ﻭﺍﻻﻟﺘﺰﺍﻡ ﲟﻮﺍﻋﻴﺪ ﺍﻟﻌﻤﻠﻴﺎﺕ ﺍﻟﻨﻬﺎﺋﻴﺔ‪.‬‬ ‫ﺍﳉﺪﻭﻟﺔ ﻣﺘﻮﺳﻄﺔ ﺍﳌﺪﻯ ‪:medium term scheduler‬‬ ‫ﻫﺬﻩ ﺍﳉﺪﻭﻟﺔ ﻣﻮﺟﻮﺩﺓ ﰲ ﻛﻞ ﺍﻷﻧﻈﻤﺔ ﺫﺍﺕ ﺍﻟﺬﺍﻛﺮﺓ ﺍﻻﻓﺘﺮﺍﺿﻴﺔ )‪ ،(virtual memory‬ﻓﻬﻮ ﻳﻘﻮﻡ‬ ‫ﺑﻌﻤﻠﻴﺔ ﺍﻟﺘﺒﺪﻳﻞ ﺃﻱ ﺃﻧﻪ ﻳﺰﻳﻞ ﺍﻟﻌﻤﻠﻴﺎﺕ ﺑﺸﻜﻞ ﻣﺆﻗﺖ ﻣﻦ ﺍﻟﺬﺍﻛﺮﺓ ﺍﻟﺮﺋﻴﺴﻴﺔ ﺇﱃ ﺍﻟﺬﺍﻛﺮﺓ ﺍﻟﺜﺎﻧﻮﻳﺔ‬ ‫)‪ ،(secondary storage‬ﻭﺫﻟﻚ ﺣﺴﺐ ﺃﻭﻟﻮﻳﺔ ﺍﻟﻌﻤﻠﻴﺔ ﻭﻣﺎ ﲢﺘﺎﺟﻪ ﻣﻦ ﻣﺴﺎﺣﺔ ﻋﻠﻰ ﺍﻟﺬﺍﻛﺮﺓ‪.‬ﰲ‬ ‫ﻫﺬﻩ ﺍﻷﻳﺎﻡ ﻣﻌﻈﻢ ﺍﻷﻧﻈﻤﺔ ﺍﻟﱵ ﺗﺪﻋﻢ ﺍﻻﻧﺘﻘﺎﻝ ﻣﻦ ﺍﻟﻌﻨﻮﺍﻥ ﺍﻻﻓﺘﺮﺍﺿﻲ ﺇﱃ ﺍﻟﻌﻨﻮﺍﻥ ﺍﻟﺜﺎﻧﻮﻱ ﺑﺪﻝ ﺍﻟﺘﺒﺪﻳﻞ ﺑﲔ‬ ‫ﺍﳌﻠﻔﺎﺕ ﺗﻜﻮﻥ ﺍﳉﺪﻭﻟﺔ ﻣﺘﻮﺳﻄﺔ ﺍﳌﺪﻯ ﻓﻴﻬﺎ ﺗﺆﺩﻱ ﺩﻭﺭ ﺍﳉﺪﻭﻟﺔ ﻃﻮﻳﻠﺔ ﺍﳌﺪﻯ‪.‬‬ ‫ﺍﳉﺪﻭﻟﺔ ﻗﺼﲑﺓ ﺍﳌﺪﻯ ‪:short-term scheduler‬‬ ‫‪18‬‬ ‫‪www.cs.wayne.edu/~tom/guide/os.html‬‬ ‫ﺗﻘﺮﺭ ﺃﻱ ﺍﻟﻌﻤﻠﻴﺎﺕ ﺍﳉﺎﻫﺰﺓ ﺳﻴﺘﻢ ﻣﻌﺎﳉﺘﻬﺎ ﺑﻌﺪ ﺇﺷﺎﺭﺓ ﺍﳌﻘﺎﻃﻌﺔ ﺃﻭ ﺑﻌﺪ ﺍﺳﺘﺪﻋﺎﺀ ﺍﻟﻨﻈﺎﻡ‪.‬ﻭﻫﻲ ﺃﺳﺮﻉ ﻣﻦ‬ ‫ﺍﳉﺪﻭﻟﺔ ﺍﻟﻄﻮﻳﻠﺔ ﺃﻭ ﺍﳌﺘﻮﺳﻄﺔ ﺣﻴﺚ ﺗﺄﺧﺬ ﺍﻟﻘﺮﺍﺭﺍﺕ ﰲ ﻭﻗﺖ ﻗﺼﲑ ﺟﺪﹰﺍ‪ ،‬ﻭﳝﻜﻦ ﺃﻥ ﺗﻜﻮﻥ ﻗﺎﺩﺭﺓ ﻋﻠﻰ ﺇﺟﺒﺎﺭ‬ ‫ﺍﻟﻌﻤﻠﻴﺎﺕ ﻋﻠﻰ ﺍﳋﺮﻭﺝ ﻣﻦ ﺍﳌﻌﺎﰿ ﻭ ﺇﺩﺧﺎﻝ ﻋﻤﻠﻴﺎﺕ ﺃﺧﺮﻯ ﺃﻭ ﺗﺴﻤﺢ ﺑﺒﻘﺎﺀ ﺍﻟﻌﻤﻠﻴﺎﺕ ﰲ ﺍﳌﻌﺎﰿ ﺣﱴ‬ ‫ﺗﻨﺘﻬﻲ‪.‬‬ ‫ﺃﻧﻮﺍﻉ ﺍﻟﻌﻤﻠﻴﺎﺕ ‪:19Types Of Processes‬‬ ‫‪.1‬ﰲ ﻧﻄﺎﻕ ﻭﺣﺪﺓ ﺍﳌﻌﺎﳉﺔ ﺍﳌﺮﻛﺰﻳﺔ )‪(CPU bound process‬‬ ‫ﺗﻘﻀﻲ ﻫﺬﻩ ﺍﻟﻌﻤﻠﻴﺔ ﻣﻌﻈﻢ ﻭﻗﺘﻬﺎ ﰲ ﺍﻟﻮﺣﺪﺓ ﺍﳌﻌﺎﳉﺔ ﺍﳌﺮﻛﺰﻳﺔ )‪ ،(CPU‬ﻭﺗﻜﻮﻥ ﻓﺘﺮﺍﺕ ﻋﻤﻠﻬﺎ ﻋﻠﻰ ﻭﺣﺪﺓ‬ ‫ﺍﳌﻌﺎﳉﺔ ﺍﳌﺮﻛﺰﻳﺔ ﻃﻮﻳﻠﺔ )‪.(CPU burst‬‬ ‫‪.2‬ﰲ ﻧﻄﺎﻕ ﺍﻹﺩﺧﺎﻝ ﻭﺍﻹﺧﺮﺍﺝ )‪( I/O bound process‬‬ ‫ﺗﻘﻀﻲ ﻫﺬﻩ ﺍﻟﻌﻤﻠﻴﺔ ﻣﻌﻈﻢ ﻭﻗﺘﻬﺎ ﰲ ﺍﻹﺩﺧﺎﻝ ﻭﺍﻹﺧﺮﺍﺝ )‪ ،(I/O‬ﻭﺗﻜﻮﻥ ﻓﺘﺮﺍﺕ ﻋﻤﻠﻬﺎ ﰲ ﺍﻹﺩﺧﺎﻝ‬ ‫ﻭﺍﻹﺧﺮﺍﺝ ﻃﻮﻳﻠﺔ )‪.(I/O burst‬‬ ‫ﻣﻦ ﺍﳌﻬﻢ ﺟﺪﹰﺍ ﻟﻠﺠﺪﻭﻟﺔ ﻃﻮﻳﻠﺔ ﺍﳌﺪﺓ ﺃﻥ ﲣﺘﺎﺭ ﺧﻠﻴﻂ ﺟﻴﺪ ﻣﻦ ﺍﻟﻌﻤﻠﻴﺎﺕ ﰲ ﻧﻄﺎﻕ ﻭﺣﺪﺓ ﺍﳌﻌﺎﳉﺔ ﻭﺍﻟﻌﻤﻠﻴﺎﺕ‬ ‫ﰲ ﻧﻄﺎﻕ ﺍﻹﺩﺧﺎﻝ ﻭﺍﻹﺧﺮﺍﺝ‪ ،‬ﻷﻧﻪ ﻋﻨﺪﻣﺎ ﺗﻜﻮﻥ ﻛﻞ ﺍﻟﻌﻤﻠﻴﺎﺕ ﰲ ﻧﻄﺎﻕ ﺍﻹﺩﺧﺎﻝ ﻭﺍﻹﺧﺮﺍﺝ ﻓﺈﻥ ﺍﻟﻄﺎﺑﻮﺭ‬ ‫ﺍﳉﺎﻫﺰ)‪ (ready queue‬ﺳﻴﻜﻮﻥ ﺧﺎﻟﻴﹰﺎ ﺗﻘﺮﻳﺒﹰﺎ ﻣﻦ ﺃﻱ ﻋﻤﻠﻴﺔ‪ ،‬ﻭﻋﻨﺪﻫﺎ ﻟﻦ ﻳﻜﻮﻥ ﻟﺪﻯ ﺍﳉﺪﻭﻟﺔ ﻗﺼﲑﺓ‬ ‫ﺍﳌﺪﺓ ﻣﺎ ﺗﻔﻌﻠﻪ‪.‬ﻭﺑﺎﻟﻌﻜﺲ‪ ،‬ﻋﻨﺪﻣﺎ ﺗﻜﻮﻥ ﻛﻞ ﺍﻟﻌﻤﻠﻴﺎﺕ ﰲ ﻧﻄﺎﻕ ﻭﺣﺪﺓ ﺍﳌﻌﺎﳉﺔ‪ ،‬ﻓﺴﻮﻑ ﻳﺼﺒﺢ ﻃﺎﺑﻮﺭ‬ ‫ﺍﻹﺩﺧﺎﻝ ﻭﺍﻹﺧﺮﺍﺝ ﻓﺎﺭﻍ ﺩﺍﺋﻤﹰﺎ ﺗﻘﺮﻳﺒﹰﺎ‪ ،20‬ﻭﺳﻮﻑ ﺗﻜﻮﻥ ﺍﻷﺟﻬﺰﺓ ﻏﲑ ﻣﺴﺘﺨﺪﻣﺔ ﺑﺎﻟﺸﻜﻞ ﺍﳌﻄﻠﻮﺏ ﻭﻳﺼﺒﺢ‬ ‫ﺍﻟﻨﻈﺎﻡ ﻏﲑ ﻣﺘﻮﺍﺯﻥ‪.‬ﻟﺬﺍ ﻟﻜﻲ ﻳﻜﻮﻥ ﺍﻟﻨﻈﺎﻡ ﺫﻭ ﺃﺩﺍﺀ ﺃﻓﻀﻞ ﳚﺐ ﺃﻥ ﳝﺘﻠﻚ ﺧﻠﻴﻂ ﻣﻦ ﺍﻟﻌﻤﻠﻴﺎﺕ ﰲ ﻧﻄﺎﻕ‬ ‫ﺍﻹﺩﺧﺎﻝ ﻭﺍﻹﺧﺮﺍﺝ ﻭﺍﻟﻌﻤﻠﻴﺎﺕ ﰲ ﻧﻄﺎﻕ ﻭﺣﺪﺓ ﺍﳌﻌﺎﳉﺔ‬ ‫‪ّ S 19‬‬ ‫‪ M‬ا&‪M$"‹d‬‬ ‫ا&‪Operating System Concepts: Silbreschatz, Galvin and Gagne, 7th edition :‡nUX‬‬ ‫‪ 20‬ﺕ‪UQ‬ی‪– :(ً$‬ن ا&‪ (S) ["Xd‬ﺕ~‪c‬ن *‪ M‬ﻥ‪(O‬ق وﺡة ا&‪ً ”S [u&(dX‬‬ ‫“ *’ن ذ& ی‪ M)d‬م اﺡ‹‪c‬ا‪ s (#h‬أي أ‪ US‬إدﺥ(ل أو إﺥ‪U‬اج‪M&(‹&($* ،‬‬ ‫ی‪ ())~X‬أن ﻥ‪cQ‬ل أن (ﺏ‪c‬ر اœدﺥ(ل واœﺥ‪U‬اج ﺱ"|‪(* {$‬ر› ً( ﺕ‪ ،ً(S(X‬و&~! &! ی‪ ™šc‬ﺏ(&‪ o~i‬ا&‪cOX‬ب‪.‬‬ ‫‪21‬‬ ‫ﺗﺒﺪﻳﻞ ﺍﻟﻌﻤﻠﻴﺎﺕ )‪(context switching‬‬ ‫ﺗﺒﺪﻳﻞ ﺍﻟﻌﻤﻠﻴﺎﺕ‪ :‬ﻋﺒﺎﺭﺓ ﻋﻦ ﺗﺒﺪﻳﻞ ﺍﳌﻌﺎﰿ ﻣﻦ ﻋﻤﻠﻴﺔ ﺇﱃ ﺃﺧﺮﻯ ﺃﻭ ﻣﻦ ﺗﺸﻌﺐ ) ‪ (thread‬ﺇﱃ ﺁﺧﺮ‪.‬‬ ‫ﳎﺪﻭﻝ ﻭﺣﺪﺓ ﺍﳌﻌﺎﳉﺔ )‪ (CPU scheduler‬ﻫﻮ ﻣﻦ ﳛﺪﺩ ﻣﱴ ﻳﺘﻢ ﺗﻨﻔﻴﺬ ﻋﻤﻠﻴﻪ ﺍﻟﺘﺒﺪﻳﻞ ﺑﲔ ﻋﻤﻠﻴﺘﲔ‪.‬‬ ‫ﺍﻟﺒﻴﺌﺔ )‪ (context‬ﻳﺘﻢ ﺍﻟﺘﻌﺒﲑ ﻋﻨﻬﺎ ﰲ ﻛﺘﻠﺔ ﺍﻟﺴﻴﻄﺮﺓ ﻋﻠﻰ ﺍﻟﻌﻤﻠﻴﺔ ‪ PCB‬ﻟﻜﻞ ﻋﻤﻠﻴﺔ‪ ،‬ﻭ ﻳﺘﻀﻤﻦ ﺍﻟﻘﻴﻢ‬ ‫ﺍﳌﻮﺟﻮﺩﺓ ﰲ ﺳﺠﻼﺕ ﺍﳌﻌﺎﰿ )‪ ،(CPU registers‬ﺣﺎﻟﺔ ﺍﻟﻌﻤﻠﻴﺔ‪ ،‬ﻭﻣﻌﻠﻮﻣﺎﺕ ﺇﺩﺍﺭﺓ ﺍﻟﺬﺍﻛﺮﺓ‪.‬‬ ‫ﺗﺘﻢ ﺁﻟﻴﺔ ﺗﺒﺪﻳﻞ ﺍﻟﻌﻤﻠﻴﺎﺕ ﻣﻦ ﺧﻼﻝ ﻫﺬﻩ ﺍﳌﺮﺍﺣﻞ‪:‬‬ ‫‪.1‬ﺗﺄﺟﻴﻞ ﺇﻛﻤﺎﻝ ﻋﻤﻠﻴﺔ ﻣﻦ ﺍﻟﻌﻤﻠﻴﺎﺕ ﻭﺣﻔﻆ ﺣﺎﻟﺔ ﺍﳌﻌﺎﰿ ﳍﺬﻩ ﺍﻟﻌﻤﻠﻴﺔ ﰲ ﻣﻜﺎﻥ ﻣﺎ ﰲ ﺍﻟﺬﺍﻛﺮﺓ ﻭﺫﻟﻚ ﻋﻦ‬ ‫ﻼ‪.‬‬ ‫ﺣﺪﻭﺙ ﻗﻄﻊ )‪ (interrupt‬ﻣﺜ ﹰ‬ ‫‪.2‬ﺇﺭﺟﺎﻉ ﺃﻭ ﻭﺿﻊ ﺑﻴﺌﺔ )‪ (context‬ﻟﻠﻌﻤﻠﻴﺔ ﺍﻟﻼﺣﻘﺔ ﻣﻦ ﺍﻟﺬﺍﻛﺮﺓ ﻭﺣﻔﻈﻬﺎ ﰲ ﺳﺠﻼﺕ ﺍﳌﻌﺎﰿ‪.‬‬ ‫‪.3‬ﺍﻟﺮﺟﻮﻉ ﺇﱃ ﺍﳌﻜﺎﻥ ﺍﻟﺬﻱ ﻳﺆﺷﺮ ﻋﻠﻴﻪ ﻋﺪﺍﺩ ﺍﻟﱪﻧﺎﻣﺞ)ﻭﻫﻲ ﺍﻟﻌﻤﻠﻴﺔ ﺍﻟﱵ ﺣﺼﻞ ﻋﻨﺪﻫﺎ ﺍﻟﻘﻄﻊ‬ ‫)‪ (interrupt‬ﻭﺫﻟﻚ ﻹﻛﻤﺎﻝ ﺍﻟﻌﻤﻠﻴﺔ‪.‬‬ ‫‪22‬‬ ‫ﺧﻄﻮﺍﺕ ﺗﻨﻔﻴﺬ ﻋﻤﻠﻴﻪ ﺍﻟﺘﺒﺪﻳﻞ ﺑﲔ ﻋﻤﻠﻴﺘﲔ‪:‬‬ ‫‪.1‬ﻳﻨﺘﻘﻞ ﺍﳌﻌﺎﰿ ﺇﱃ ﺍﻟﻨﻤﻂ ﺍﳌﻤﻴﺰ )‪(privileged mode‬‬ ‫‪.2‬ﻧﺴﺦ ﳏﺘﻮﻯ ﺍﻟﺴﺠﻼﺕ )‪ (register‬ﻣﻦ ﺍﻟﻌﻤﻠﻴﺔ ﺍﻟﻘﺪﳝﺔ ﻭ ﲣﺰﻳﻨﻬﺎ ﰲ ﺟﺪﻭﻝ ﺍﻟﻌﻤﻠﻴﺔ‬ ‫‪.3‬ﲢﻤﻴﻞ ﻗﻴﻢ ﺍﻟﺴﺠﻼﺕ )‪ (register‬ﻣﻦ ﺟﺪﻭﻝ ﺍﻟﻌﻤﻠﻴﺔ ﺍﳉﺪﻳﺪﺓ‬ ‫‪.4‬ﻳﻌﻮﺩ ﺍﳌﻌﺎﰿ ﺇﱃ ﳕﻂ ﺍﳌﺴﺘﺨﺪﻡ )‪(user mode‬‬ ‫‪21‬‬ ‫إی‪(X‬ن ا&‪M&“$‬‬ ‫ا&‪http://www.linfo.org/context_switch.html :‡nUX‬‬ ‫‪ 22‬دی‪ vX‬ا&”(ﺏž‬ ‫ا&‪http://www2.cs.uregina.ca/~hamilton/courses/330/notes/processes/processes.html :‡nUX‬‬ ‫‪23‬‬ ‫ﺗﺒﺪﻳﻞ ﺍﻟﻌﻤﻠﻴﺎﺕ‬ ‫ﺍﻟﻌﻤﻠﻴﺎﺕ ﻋﻠﻰ ﺍﻟﻌﻤﻠﻴﺎﺕ ‪Operations on Processes‬‬ ‫ﺇﻧﺸﺎﺀ ﺍﻟﻌﻤﻠﻴﺎﺕ ‪Process Creations24‬‬ ‫ﻧﻈﺎﻡ ﺍﻟﻌﻤﻠﻴﺎﺕ ﻳﺴﻤﺢ ﺑﺈﻧﺸﺎﺀ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﻟﻌﻤﻠﻴﺎﺕ ﺍﳉﺪﻳﺪﺓ ﺑﻮﺍﺳﻄﺔ ﺍﺳﺘﺪﻋﺎﺀ ﺍﻟﻨﻈﺎﻡ )‪System Call‬‬ ‫( ﻃﻴﻠﺔ ﻓﺘﺮﺓ ﺍﻟﺘﻄﺒﻴﻖ ﳍﺬﻩ ﺍﻟﻌﻤﻠﻴﺔ‪ ،‬ﻭﳚﺐ ﺃﻥ ﻧﻌﻠﻢ ﺇﻧﺸﺎﺀ ﺍﻟﻌﻤﻠﻴﺔ ﻳﻄﻠﻖ ﻋﻠﻴﻬﺎ )‪( Parent Process‬‬ ‫ﻭﻫﺬﺍ ﻣﺎ ﻳﻘﺼﺪ ﺑﻪ ﺍﻷﺏ ﻟﻠﻌﻤﻠﻴﺔ‪ ،‬ﻭﺍﻟﻌﻤﻠﻴﺔ ﺍﳉﺪﻳﺪﺓ ﻳﻄﻠﻖ ﻋﻠﻴﻬﺎ )‪ ،(Child Process‬ﻭﻫﻮ ﺍﻻﺑﻦ ﺍﳌﻨﺸﺄ‬ ‫ﻣﻦ ﻗﺒﻞ ﺍﻟﻌﻤﻠﻴﺔ ﺍﻷﺏ‪.‬‬ ‫‪http://www.ice.ntnu.edu.tw/~swanky/os/chap4/CPU_Switch_From_Process_to_Process.png 23‬‬ ‫‪()S 24‬ر ا&‪(OPQ‬ﻥ‪M‬‬ ‫ا&‪Operating System Concepts: Silbreschatz, Galvin and Gagne, 7th edition :‡nUX‬‬ ‫ﻭﻛﻞ ﺗﻠﻚ ﺍﻟﻌﻠﻤﻴﺎﺕ ﺍﳉﺪﻳﺪﺓ )ﺍﻷﺑﻨﺎﺀ( ﻗﺪ ﺗﺴﺘﻄﻴﻊ ﺇﻧﺸﺎﺀ ﻋﻤﻠﻴﺎﺕ ﺟﺪﻳﺪﺓ ﺃﺧﺮﻯ ﻭﺑﺎﻹﻣﻜﺎﻥ ﲡﻤﻴﻌﻬﺎ‬ ‫ﺑﺎﻟﺸﻜﻞ ﺍﻟﺸﺠﺮﻱ ﻟﻠﻌﻤﻠﻴﺎﺕ‪ ،‬ﻗﺪ ﺗﻜﻮﻥ ﻫﻨﺎﻙ ﺃﺷﻴﺎﺀ ﻣﺸﺘﺮﻛﺔ ﺑﲔ ﺍﻷﺏ ﻭﺍﻻﺑﻦ ﺣﻴﺚ ﺃﻥ ﺍﻻﺑﻦ ﻗﺪ ﻳﻜﻮﻥ‬ ‫ﻧﺴﺨﻪ ﻃﺒﻖ ﺍﻷﺻﻞ ﻋﻦ ﺍﻷﺏ‪ ،‬ﺃﻭ ﻳﺸﺘﺮﻛﺎﻥ ﰲ ﺑﻌﺾ ﺍﳌﻮﺍﺭﺩ‪ ،‬ﺃﻭ ﺃﻥ ﻻ ﻳﻜﻮﻥ ﺑﻴﻨﻬﻤﺎ ﺃﻱ ﻣﻮﺍﺭﺩ ﻣﺸﺘﺮﻛﺔ‪.‬‬ ‫ﻭﰲ ﻭﻗﺖ ﺍﻟﺘﻨﻔﻴﺬ ﺇﻣﺎ ﺃﻥ ﻳﻨﻔﺬﺍ ﰲ ﻭﻗﺖ ﻣﺘﺰﺍﻣﻦ ﺃﻭ ﺃﻥ ﻳﻨﺘﻈﺮ ﺍﻷﺏ ﺣﱴ ﺗﻨﺘﻬﻲ ﻋﻤﻠﻴﺎﺕ ﺍﻟﺘﻄﺒﻴﻖ ﺍﳋﺎﺻﺔ‬ ‫ﺑﺎﻷﺑﻨﺎﺀ‪.‬‬ ‫ﻭﻳﻮﺟﺪ ﺃﻳﻀﺎ ﺍﺣﺘﻤﺎﻻﺕ ﳌﻜﺎﻥ ﻭﺟﻮﺩ ﺍﻟﻌﻤﻠﻴﺔ ﺍﳉﺪﻳﺪﺓ )ﺍﻻﺑﻦ( ‪-‬ﺍﻻﺑﻦ ﻋﻤﻠﻴﺔ ﻣﺰﺩﻭﺟﺔ ﻣﻦ ﺍﻟﻌﻤﻠﻴﺔ ﺍﻷﻡ‪-‬‬ ‫ﺍﻻﺑﻦ ﻟﻪ ﺑﺮﻧﺎﳎﻪ ﺍﳋﺎﺹ ﻭﻣﻜﺎﻥ ﺟﺪﻳﺪ ﻳﻮﺟﺪ ﺑﻪ‬ ‫ﻭﺍﻟﻜﺜﲑ ﻣﻦ ﺃﻧﻈﻤﺔ ﺍﻟﺘﺸﻐﻴﻞ ﲟﺎ ﰲ ﺫﻟﻚ ﺍﻟﻠﻴﻨﻜﺲ ﻭﺍﻟﻮﻳﻨﺪﻭﺯ ﺗﻘﻮﻡ ﺑﺘﻌﺮﻳﻒ ﺍﻟﻌﻤﻠﻴﺎﺕ ﺗﺒﻌﺎ ﳌﻌﺮﻑ ﺍﻟﻌﻤﻠﻴﺔ‬ ‫)‪ (Process Identifier‬ﺍﳋﺎﺹ ﺍﻟﺬﻱ ﻳﻈﻬﺮ ﻋﺎﺩﺓ ﻛﺮﻗﻢ ﺻﺤﻴﺢ‪.‬‬ ‫ﰲ ﻧﻈﺎﻡ ﺍﻟﻴﻨﻜﺲ ‪ ،‬ﻗﺎﺋﻤﺔ ﺍﻟﻌﻤﻠﻴﺎﺕ ﺗﺴﺘﻄﻴﻊ ﺃﻥ ﺗﻈﻬﺮ ﺑﻮﺍﺳﻄﺔ ﺍﻷﻣﺮ‪:‬‬ ‫‪Ps command‬‬ ‫ﺣﻴﺚ ﺃ‪‬ﺎ ﺗﻘﻮﻡ ﺑﻌﺮﺽ ﻛﺎﻓﺔ ﺍﳌﻌﻠﻮﻣﺎﺕ ﻟﻜﻞ ﺍﻟﻌﻤﻠﻴﺎﺕ ﺍﳌﻄﺒﻘﺔ ﰲ ﺍﻟﻨﻈﺎﻡ‪.‬‬ ‫ﻭﰲ ﻧﻈﺎﻡ ﺍﻟﻠﻴﻨﻜﺲ ﺃﻳﻀﺎ ﺩﺍﻟﺘﲔ )‪ (function‬ﰲ ﺍﺳﺘﺪﻋﺎﺀ ﺍﻟﻨﻈﺎﻡ ﺍﻷﻭﱃ ﻫﻲ ﻣﺎ ﻳﻄﻠﻖ ﻋﻠﻴﻬﺎ )(‪ fork‬ﺍﻟﱵ‬ ‫ﺗﻌﲏ ﺍﻧﻘﺴﺎﻡ ﻟﻠﻌﻤﻠﻴﺔ ﻭﺗﻜﻮﻳﻦ ﻋﻤﻠﻴﺔ ﺟﺪﻳﺪﺓ ﺣﻴﺚ ﺃ‪‬ﺎ ﺗﻘﻮﻡ ﲝﺠﺰ ﻣﻜﺎﻥ ﻭﺫﺍﻛﺮﺓ ﺟﺪﻳﺪﺓ ﻭﻋﻤﻞ ﻧﺴﺨﺔ ﻣﻦ‬ ‫ﺫﺍﻛﺮﺓ ﺍﻷﺏ‪.‬ﻋﻤﻠﻴﺔ ﺍﻻﻧﻘﺴﺎﻡ ﻫﺬﻩ ﺗﻨﻔﺬ ﻣﺮﺗﲔ ﰲ ﺍﻟﻨﻈﺎﻡ ﺃﺣﺪﺍﳘﺎ ﻟﻸﺏ ﻭﺍﻟﺜﺎﻧﻴﺔ ﻟﻼﺑﻦ‪ ،‬ﻭﺗﻘﻮﻡ ﺑﺈﺭﺟﺎﻉ ﺍﻟﺮﻗﻢ‬ ‫ﺍﳋﺎﺹ )‪ (PID‬ﺑﺎﻻﺑﻦ ﻭﺗﻌﻄﻴﻪ ﻟﻸﺏ ﻭﺗﻘﻮﻡ ﺑﺈﺭﺟﺎﻉ ﺍﻟﺮﻗﻢ ‪ 0‬ﻟﻼﺑﻦ‬ ‫ﻭﺍﻟﺪﺍﻟﺔ ﺍﻟﺜﺎﻧﻴﺔ ﻫﻲ ﺩﺍﻟﺔ ﺍﻟﺘﻄﺒﻴﻖ )(‪ exec‬ﻭﻫﻲ ﺍﻟﱵ ﺗﺴﺘﺨﺪﻡ ﺑﻌﺪ ﺩﺍﻟﺔ ﺍﻻﻧﻘﺴﺎﻡ ﺍﻟﺴﺎﺑﻘﺔ ﻻﺳﺘﺒﺪﺍﻝ ﺫﺍﻛﺮﺓ‬ ‫ﺍﻟﻌﻤﻠﻴﺔ ﺑﱪﻧﺎﻣﺞ ﺟﺪﻳﺪ ﺗﺘﺨﻠﺺ ﻣﻦ ﺍﳌﻜﺎﻥ ﺍﳊﺎﱄ ﻟﻠﻌﻤﻠﻴﺔ ﲢﻤﻴﻞ ﺑﺮﻧﺎﻣﺞ ﺟﺪﻳﺪ ﻟﻠﻌﻤﻠﻴﺔ ﺍﳉﺪﻳﺪﺓ‬ ‫‪25‬‬ ‫ﺇﻧﺸﺎﺀ ﺍﻟﻌﻤﻠﻴﺎﺕ‬ ‫ﻭﺍﳉﺪﻳﺮ ﺑﺎﻟﺬﻛﺮ ﺃﻥ ﺩﺍﻟﺔ ﺍﻟﺘﻄﺒﻴﻖ ﻻ ﺗﻘﻮﻡ ﲞﻠﻖ ﻋﻤﻠﻴﺔ ﺟﺪﻳﺪﺓ ﺣﻴﺚ ﺃ‪‬ﺎ ﺗﻌﻤﻞ ﻓﻘﻂ ﻋﻠﻰ ﺍﻟﻌﻤﻠﻴﺎﺕ ﺍﳊﺎﻟﻴﺔ‬ ‫ﺍﳌﻮﺟﻮﺩﺓ‪.‬‬ ‫‪26‬‬ ‫ﺇ‪‬ﺎﺀ ﺍﻟﻌﻤﻠﻴﺎﺕ ‪Process Termination‬‬ ‫ﺃﺳﺒﺎﺏ ﺇ‪‬ﺎﺀ ﺍﻟﻌﻤﻠﻴﺎﺕ‪:‬‬ ‫‪.1‬ﺍﳋﺮﻭﺝ ﺍﻟﻄﺒﻴﻌﻲ )‪ :( Normal Exist‬ﻭﺗﻜﻮﻥ ﺍﻟﻌﻤﻠﻴﺔ ﰲ ﻫﺬﻩ ﺍﳊﺎﻟﺔ ﻗﺪ ﺃ‪‬ﺖ ﻋﻤﻠﻬﺎ ﻭﰎ ﺇ‪‬ﺎﺀﻫﺎ‪.‬‬ ‫‪.2‬ﺍﳋﺮﻭﺝ ﺑﺴﺒﺐ ﺧﻄﺄ )‪ :( Error Exist‬ﰲ ﻫﺬﻩ ﺍﳊﺎﻟﺔ ﺗﻜﺘﺸﻒ ﺍﻟﻌﻤﻠﻴﺔ ﺧﻄﺄ ﻓﺎﺩﺡ ) ‪Fatal‬‬ ‫‪.(Error‬ﻣﺜﺎﻝ ﻋﻠﻰ ﺫﻟﻚ ﳏﺎﻭﻟﺔ ﺗﺄﻟﻴﻒ )‪ (compile‬ﻟﱪﻧﺎﻣﺞ ﻏﲑ ﻣﻮﺟﻮﺩ‪.‬‬ ‫‪.3‬ﺧﻄﺄ ﻓﺎﺩﺡ )‪ :(Fatal Error‬ﻭﻫﻨﺎ ﻳﻜﻮﻥ ﺇ‪‬ﺎﺀﻫﺎ ﻧﺎﺗﺞ ﻋﻦ ﺧﻄﺄ ﻗﺎﻣﺖ ﺑﻪ ﺍﻟﻌﻤﻠﻴﺔ‪ ،‬ﻣﺜﻞ‪ :‬ﺗﻨﻔﻴﺬﻫﺎ‬ ‫ﻷﻣﺮ ﻏﲑ ﻣﺴﻤﻮﺡ ﺑﻪ ﻛﺎﻟﻘﺴﻤﺔ ﻋﻠﻰ ﺻﻔﺮ ﺃﻭ ﺍﻹﺣﺎﻟﺔ ﺇﱃ ﻣﻜﺎﻥ ﻏﲑ ﻣﻮﺟﻮﺩ ﰲ ﺍﻟﺬﺍﻛﺮﺓ‪.‬‬ ‫‪.4‬ﻗﺘﻠﻬﺎ )‪ (kill‬ﺑﻮﺍﺳﻄﺔ ﻋﻤﻠﻴﺔ ﺃﺧﺮﻯ‪.‬‬ ‫ﺍﻻﺗﺼﺎﻝ ﺑﲔ ﺍﻟﻌﻤﻠﻴﺎﺕ ‪Interprocess communication (IPC)27‬‬ ‫ﻫﻨﺎﻙ ﺃﻧﻮﺍﻉ ﻟﻠﻌﻤﻠﻴـــﺎﺕ ﰲ ﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ ﺧﻼﻝ ﺗﻨﻔﻴﺬ ﺍﻟﻌﻤﻠﻴﺔ‪:‬‬ ‫‪http://www.freebsd.org/doc/en_US.ISO8859-1/books/design-44bsd/book.html 25‬‬ ‫‪"› 26‬اءا&‪(f‬ی‪W‬‬ ‫ا&‪http://www.personal.kent.edu/~rmuhamma/OpSystems/Myos/processOperate.htm:‡nUX‬‬ ‫‪27‬‬ ‫*(‪ [X‬ا&‪Uf‬ج‪ ,‬ﺱ‪ (u‬ا&رع ‪ ,‬ری‪ ¢‬ا&‪U‬ﺵ"ي‬ ‫‪Operating System Concepts: Silbreschatz, Galvin‬‬ ‫ا&‪and Gagne, 7th edition :‡nUX‬‬ ‫ﻋﻤﻠﻴﺔ ﻣﺴﺘﻘﻠﺔ )‪:(Independent‬‬ ‫ﻭﻫﻲ ﺍﻟﻌﻤﻠﻴﺔ ﺍﳌﺴﺘﻘﻠﺔ ﺍﻟﱵ ﻻ ﺗﺘﺄﺛﺮ ﺃﻭ ﺗﺄﺛﺮ ﰲ ﺗﻨﻔﻴﺬ ﻋﻤﻠﻴﺔ ﺃﺧﺮﻯ ﰲ ﺍﻟﻨﻈﺎﻡ ﻭﺇﳕﺎ ﺗﻌﻤﻞ ﻣﺴﺘﻘﻠﺔ ﺑﺬﺍ‪‬ﺎ‪.‬‬ ‫ﻋﻤﻠﻴﺔ ﻣﺘﻌﺎﻭﻧﺔ )‪:(Cooperating‬‬ ‫ﻭﻫﻲ ﺍﻟﻌﻤﻠﻴﺔ ﺍﳌﺘﻌﺎﻭﻧﺔ ﻭﺍﻟﱵ ﳝﻜﻦ ﺃﻥ ﺗﺄﺛﺮ ﺃﻭ ﺗﺘﺄﺛﺮ ﺑﺘﻨﻔﻴﺬ ﻋﻤﻠﻴﺔ ﺃﺧﺮﻯ ﰲ ﺍﻟﻨﻈﺎﻡ ﻭﻫﺬﻩ ﺍﻟﻌﻤﻠﻴﺔ ﺗﺴﺘﺨﺪﻡ‬ ‫ﻧﻮﻋﲔ ﻣﻦ ﺍﻻﺗﺼﺎﻝ ‪:IPC‬‬ ‫‪.1‬ﺗﺒﺎﺩﻝ ﺍﻟﺮﺳﺎﺋﻞ )‪:(Message passing‬‬ ‫ﺣﻴﺚ ﻳﺘﻢ ﺗﺒﺎﺩﻝ ﺍﻟﺮﺳﺎﺋﻞ ﺑﲔ ﺍﻟﻌﻤﻠﻴﺎﺕ ﻋﻦ ﻃﺮﻳﻖ ﺍﻻﺗﺼﺎﻝ ﻣﻊ ﺑﻌﻀﻬﺎ ﺩﻭﻥ ﻭﺟﻮﺩ ﻣﻜﺎﻥ ﻣﺸﺘﺮﻙ ﻟﺘﺨﺰﻳﻦ‬ ‫ﺐ ﺍﻟﻨﻈﺎﻡ )‪(Kernel‬‬ ‫ﺍﻟﺮﺳﺎﺋﻞ ﻭﻳﻜﻮﻥ ﺣﺠﻢ ﻫﺬﻩ ﺍﻟﺮﺳﺎﺋﻞ ﺛﺎﺑﺖ ﺃﻭ ﻣﺘﻐﲑ ﻭ ﲤﺮ ﻫﺬﻩ ﺍﻟﺮﺳﺎﺋﻞ ﻋﻠﻰ ﻟ ‪‬‬ ‫ﻭﲢﺘﺎﺝ ﺇﱃ ﺍﺗﺼﺎﻝ ﺑﲔ ﺍﻟﻌﻤﻠﻴﺎﺕ‪.‬‬ ‫‪.2‬ﺍﻟﺬﺍﻛﺮﺓ ﺍﳌﺸﺘﺮﻛﺔ)‪:(Shared memory‬‬ ‫ﺣﻴﺚ ﻳﻮﺟﺪ ﺑﲔ ﺍﻟﻌﻤﻠﻴﺎﺕ ﻣﻜﺎﻥ ﺫﺍﻛﺮﻩ ﻣﺸﺘﺮﻛﺔ ﻟﻜﻞ ﻣﻨﻬﻢ ﻭﻳﺘﻢ ﻭﺿﻊ ﺍﳌﻠﻔﺎﺕ ﺍﳌﺸﺘﺮﻛﺔ ﺑﺪﺍﺧﻠﻬﺎ‪.‬‬ ‫ﻼ‪ :‬ﺍﻟﻌﻤﻠﻴﺔ ﺃ ﺗﻨﺘﺞ ﺑﻴﺎﻧﺎﺕ ﻭﺍﻟﻌﻤﻠﻴﺔ ﺏ ﺗﺮﻳﺪ ﺃﻥ ﺗﻘﺮﺃ ﻫﺬﻩ ﺍﻟﺒﻴﺎﻧﺎﺕ ﻣﻦ ﺍﻟﻌﻤﻠﻴﺔ ﺃ ﻓﺈﻥ ﺍﻟﺬﺍﻛﺮﺓ ﺍﳌﺸﺘﺮﻛﺔ‬ ‫ﻣﺜ ﹰ‬ ‫ﺗﻘﻮﻡ ‪‬ﺬﻩ ﺍﳌﻬﻤﺔ ﻟﺘﺴﻬﻞ ﻋﻠﻰ ﺍﻟﻌﻤﻠﻴﺔ ﺏ ﺍﻟﻮﺻﻮﻝ ﻟﻠﻤﻌﻠﻮﻣﺎﺕ ﺍﻟﱵ ﺗﺮﻳﺪﻫﺎ ﻣﻦ ﺍﻟﻌﻤﻠﻴﺔ ﺃ ﻓﻬﺬﻩ ﺑﻴﺎﻧﺎﺕ‬ ‫ﻣﺸﺘﺮﻛﺔ ﳝﻜﻦ ﳉﻤﻴﻊ ﺍﻟﻌﻤﻠﻴﺎﺕ ﺍﻻﺳﺘﻔﺎﺩﺓ ﻣﻨﻬﺎ ﻋﻨﺪ ﻭﺿﻌﻬﺎ ﰲ ﺍﻟﺬﺍﻛﺮﺓ ﺍﳌﺸﺘﺮﻛﺔ‪.‬‬ ‫ﳑﻴﺰﺍﺕ ﺍﻟﻌﻤﻠﻴﺔ ﺍﳌﺘﻌﺎﻭﻧﺔ‪:‬‬ ‫ﺗﻘﺴﻴﻢ ﺍﳌﻌﻠﻮﻣﺎﺕ ﺃﻭ ﻣﺸﺎﺭﻛﺔ ﺍﳌﻠﻔﺎﺕ‪.‬‬ ‫ﺗﺴﺮﻳﻊ ﺍﳒﺎﺯ ﺍﻟﻌﻤﻠﻴﺎﺕ‪.‬‬ ‫ﺗﻘﺴﻴﻢ ﻧﻈﺎﻡ ﺍﳌﻬﺎﻡ ﺇﱃ ﻋﻤﻠﻴﺎﺕ ﻣﻨﻔﺼﻠﺔ‪.‬‬ ‫ﲤﻜﻦ ﺍﳌﺴﺘﺨﺪﻡ ﻣﻦ ﺍﻟﻌﻤﻞ ﻋﻠﻰ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﳌﻬﺎﻡ ﰲ ﻧﻔﺲ ﺍﻟﻮﻗﺖ‪.‬‬ ‫ﻧﻈﻢ ﺍﻟﺬﺍﻛﺮﺓ ﺍﳌﺸﺘﺮﻛﺔ ‪:Shared-Memory Systems‬‬ ‫)ﻫﻲ ﻋﺒﺎﺭﺓ ﻋﻦ ﻋﻤﻠﻴﺔ ﻣﺸﺎﺭﻛﺔ ﻟﻠﺬﺍﻛﺮﺓ ﺍﻻﻓﺘﺮﺍﺿﻴﺔ ﺑﲔ ﻋﻤﻠﻴﺘﲔ ﺃﻭ ﺃﻛﺜﺮ‪ ,‬ﺣﱴ ﻳﺘﻢ ﻧﻘﻞ ﻭﺗﺒﺎﺩﻝ ﺍﻟﺒﻴﺎﻧﺎﺕ‬ ‫‪28‬‬ ‫ﻭﺍﻻﺗﺼﺎﻝ ﺑﲔ ﻛﺎﻓﺔ ﺍﻟﻌﻤﻠﻴﺎﺕ‪(.‬‬ ‫ﺍﳌﺸﺎﻛﻞ ﺍﻟﱵ ﺗﻮﺍﺟﻪ ﺍﳌﺴﺘﺨﺪﻣﲔ ﻭﺍﳌﻨﺘﺠﲔ ﺑﺎﻟﻨﺴﺒﺔ ﻟﻠﺬﺍﻛﺮﺓ ﺍﳌﺸﺘﺮﻛﺔ‪:‬‬ ‫ﺍﳌﺨﺰﻥ ﺍﳌﺆﻗﺖ ﻏﲑ ﺍﶈﺪﻭﺩ )‪:(unbounded-buffer‬‬ ‫ﳝﻜﻦ ﻟﻠﻤﺴﺘﺨﺪﻡ ﺃﻥ ﻳﻘﻮﻡ ﺑﻌﻤﻠﻴﺎﺕ ﻏﲑ ﳏﺪﻭﺩﺓ ﻓﻬﻲ ﻏﲑ ﳏﺪﻭﺩﺓ ﺍﳊﺠﻢ‬ ‫ﺍﳌﺨﺰﻥ ﺍﳌﺆﻗﺖ ﺍﶈﺪﻭﺩ )‪:(bounded-buffer‬‬ ‫ﻳﻜﻮﻥ ﻫﻨﺎﻙ ﻣﺴﺎﺣﺔ ﻣﻌﻴﻨﺔ ﻟﻠﻌﻤﻠﻴﺎﺕ ﺑﻘﺪﺭ ﻣﺎ ﺗﻨﺘﺞ ﺍﻟﻌﻤﻠﻴﺔ ﺍﻷﻭﱃ ﻣﻦ ﻣﻌﻠﻮﻣﺎﺕ ﺑﻘﺪﺭ ﻣﺎ ﺗﺴﺘﻬﻠﻚ ﺍﻟﻌﻤﻠﻴﺔ‬ ‫ﺍﻟﺜﺎﻧﻴﺔ ﻣﻦ ﻫﺬﻩ ﺍﳌﻌﻠﻮﻣﺎﺕ ﻓﻬﻲ ﳏﺪﻭﺩﺓ ﺍﳊﺠﻢ‬ ‫‪29‬‬ ‫ﺛﺎﻧﻴﺎ‪ :‬ﺍﻟﺮﺳﺎﺋﻞ ﺍﻟﻌﺎﺑﺮﺓ )‪(massage- passing‬‬ ‫ﻭﻫﻲ ﻋﺒﺎﺭﺓ ﻋﻦ ﺭﺳﺎﺋﻞ ﺗﺘﻢ ﺑﲔ ﺍﻟﻌﻤﻠﻴﺎﺕ ﻟﺘﺒﺎﺩﻝ ﺍﻟﺒﻴﺎﻧﺎﺕ ﻟﻜﻦ ﻗﺒﻞ ﺃﻥ ﻳﺘﻢ ﺍﻹﺭﺳﺎﻝ ﳚﺐ ﺃﻥ ﻳﺘﻢ ﲢﺪﻳﺪ‬ ‫ﺍﳌﺮﺳﻞ ﻭﺍﳌﺴﺘﻘﺒﻞ ﻭﺃﻳﻀﺎ ﳚﺐ ﺃﻥ ﻳﻜﻮﻥ ﺑﲔ ﺍﳉﻬﺘﲔ ﺣﻠﻘﺔ ﺍﺗﺼﺎﻝ ﺣﱴ ﻳﺘﻢ ﺍﻟﺘﺒﺎﺩﻝ‪.‬‬ ‫ﻭﻫﻨﺎ ﺛﻼﺙ ﻃﺮﻕ ﻟﺘﻨﻔﻴﺬ ﻭﺻﻠﺔ ﺍﺗﺼﺎﻝ ﻣﻨﻄﻘﻴﺔ ﻭﻋﻤﻠﻴﺎﺕ ﺍﺭﺳﻞ)(‪/‬ﺍﺳﺘﻘﺒﻞ)(‪:‬‬ ‫‪.1‬ﺍﻻﺗﺼﺎﻝ ﺍﳌﺒﺎﺷﺮ ﺃﻭ ﻏﲑ ﺍﳌﺒﺎﺷﺮ‪.‬‬ ‫‪ 28‬اﺏ‹‪(#‬ل ا&‪M$"‹d‬‬ ‫ا&‪UX‬ا‪www.comms.scitech.susx.ac.uk/fft/computer/ipc.pdf :‡n‬‬ ‫‪www.1006.org/os2006/labtext07_en.doc‬‬ ‫‪http://www.alhasebat.com/vb/showthread.php?t=1878‬‬ ‫‪http://www.cs.unc.edu/~dewan/242/f97/notes/ipc/node9.html‬‬ ‫‪deneb.cs.kent.edu/~mikhail/classes/os.s00/L05ipcs.PDF‬‬ ‫‪ 29‬اﺏ‹‪(#‬ل ا&‪M$"‹d‬‬ ‫ا&‪UX‬ا‪www.comms.scitech.susx.ac.uk/fft/computer/ipc.pdf :‡n‬‬ ‫‪www.1006.org/os2006/labtext07_en.doc‬‬ ‫‪http://www.alhasebat.com/vb/showthread.php?t=1878‬‬ ‫‪http://www.cs.unc.edu/~dewan/242/f97/notes/ipc/node9.html‬‬ ‫‪deneb.cs.kent.edu/~mikhail/classes/os.s00/L05ipcs.PDF‬‬ ‫‪.2‬ﺍﻻﺗﺼﺎﻝ ﺍﳌﺘﺰﺍﻣﻦ ﺃﻭ ﻏﲑ ﺍﳌﺘﺰﺍﻣﻦ‪.‬‬ ‫‪.3‬ﺍﳌﺨﺰﻥ ﺍﳌﺆﻗﺖ )‪(buffer‬‬ ‫‪.1‬ﺍﻻﺗﺼﺎﻝ ﺍﳌﺒﺎﺷﺮ ﻭﻏﲑ ﺍﳌﺒﺎﺷﺮ‪:‬‬ ‫ﺍﳌﺒﺎﺷﺮ‪ :‬ﰲ ﻫﺬﺍ ﺍﻟﻨﻮﻉ ﻣﻦ ﺍﻻﺗﺼﺎﻝ ﳓﺘﺎﺝ ﺇﱃ ﻣﻌﺮﻓﺔ ﺍﳌﺮﺳﻞ ﻭﻣﻌﺮﻓﺔ ﺍﳌﺴﺘﻘﺒﻞ ﺃﻱ ﻣﻦ ﺍﻟﻀﺮﻭﺭﻱ ﺗﺴﻤﻴﺔ‬ ‫ﺍﳉﻬﺎﺕ ﺣﱴ ﻳﺘﻢ ﺍﻻﺗﺼﺎﻝ ﺑﻴﻨﻬﻢ ﻭﰲ ﻫﺬﺍ ﺍﻟﻨﻮﻉ ﻻ ﳓﺘﺎﺝ ﺇﱃ ﳐﺰﻥ ﻣﺆﻗﺖ ) ?

Use Quizgecko on...
Browser
Browser