ઓપરેટિંગ સિસ્ટમમાં પ્રોસેસ મેનેજમેન્ટના મુખ્ય ખ્યાલો, જેમ કે પ્રોસેસ સ્ટેટ્સ, શેડ્યુલિંગ અલ્ગોરિધમ્સ, ઇન્ટર-પ્રોસેસ કમ્યુનિકેશન અને ડેડલોક હેન્ડલિંગનું અન્વેષણ કરો. ડેવલપર્સ અને સિસ્ટમ એડમિનિસ્ટ્રેટર્સ માટે આવશ્યક.
ઓપરેટિંગ સિસ્ટમ્સ: પ્રોસેસ મેનેજમેન્ટ માટેની એક વ્યાપક માર્ગદર્શિકા
પ્રોસેસ મેનેજમેન્ટ એ કોઈપણ આધુનિક ઓપરેટિંગ સિસ્ટમનું મૂળભૂત પાસું છે. તેમાં પ્રોસેસના એક્ઝેક્યુશનનું સંચાલન, સંસાધનોની ફાળવણી અને સરળ મલ્ટિટાસ્કિંગની ખાતરી કરવાનો સમાવેશ થાય છે. આ માર્ગદર્શિકા પ્રોસેસ મેનેજમેન્ટના ખ્યાલો, તકનીકો અને પડકારોની વિગતવાર ઝાંખી પૂરી પાડે છે. તે વિદ્યાર્થીઓ, ડેવલપર્સ, સિસ્ટમ એડમિનિસ્ટ્રેટર્સ અને ઓપરેટિંગ સિસ્ટમ્સ કેવી રીતે કાર્ય કરે છે તે સમજવામાં રસ ધરાવનાર કોઈપણ માટે બનાવવામાં આવી છે.
પ્રોસેસ શું છે?
મૂળભૂત રીતે, પ્રોસેસ એ એક્ઝેક્યુશનમાં રહેલા પ્રોગ્રામનું એક ઉદાહરણ છે. તે ફક્ત પ્રોગ્રામના કોડ કરતાં વધુ છે; તેમાં પ્રોગ્રામ કાઉન્ટર, રજિસ્ટર અને વેરિયેબલ્સના વર્તમાન મૂલ્યોનો સમાવેશ થાય છે. દરેક પ્રોસેસની પોતાની મેમરી સ્પેસ હોય છે, જે તેને અન્ય પ્રોસેસમાં સીધી દખલગીરી કરતા અટકાવે છે.
એક પ્રોગ્રામને રેસીપી તરીકે અને પ્રોસેસને વાસ્તવમાં વાનગી રાંધવાની ક્રિયા તરીકે વિચારો. તમે એક જ પ્રોગ્રામ ચલાવતી બહુવિધ પ્રોસેસ એક સાથે રાખી શકો છો (દા.ત., ટેક્સ્ટ એડિટરના બહુવિધ ઇન્સ્ટન્સ), દરેક તેના પોતાના ડેટા અને સ્ટેટ સાથે.
પ્રોસેસના મુખ્ય ઘટકો:
- પ્રોગ્રામ કોડ (ટેક્સ્ટ સેક્શન): એક્ઝેક્યુટ થવાની સૂચનાઓ.
- ડેટા સેક્શન: ગ્લોબલ વેરિયેબલ્સ અને ડાયનેમિકલી એલોકેટેડ મેમરી.
- સ્ટેક: ફંક્શન કોલ્સ, લોકલ વેરિયેબલ્સ અને રિટર્ન એડ્રેસ માટે વપરાય છે.
- હીપ: રનટાઇમ દરમિયાન ડાયનેમિકલી એલોકેટેડ મેમરી.
- પ્રોસેસ કંટ્રોલ બ્લોક (PCB): OS દ્વારા દરેક પ્રોસેસ માટે જાળવવામાં આવતું ડેટા સ્ટ્રક્ચર, જેમાં પ્રોસેસ ID, સ્ટેટ, પ્રોગ્રામ કાઉન્ટર અને રજિસ્ટર વેલ્યુ જેવી માહિતી હોય છે.
પ્રોસેસ સ્ટેટ્સ
એક પ્રોસેસ તેના જીવનકાળ દરમિયાન વિવિધ સ્ટેટ્સમાંથી પસાર થાય છે. પ્રોસેસ મેનેજમેન્ટને સમજવા માટે આ સ્ટેટ્સને સમજવું નિર્ણાયક છે.
- નવી (New): પ્રોસેસ બનાવવામાં આવી રહી છે.
- તૈયાર (Ready): પ્રોસેસને પ્રોસેસરને સોંપવામાં આવે તેની રાહ જોઈ રહી છે.
- ચાલી રહી છે (Running): સૂચનાઓ એક્ઝેક્યુટ થઈ રહી છે.
- પ્રતીક્ષામાં (Waiting/Blocked): પ્રોસેસ કોઈ ઘટના બનવાની રાહ જોઈ રહી છે (દા.ત., I/O પૂર્ણ થવું અથવા સિગ્નલ પ્રાપ્ત કરવું).
- સમાપ્ત (Terminated): પ્રોસેસનું એક્ઝેક્યુશન પૂર્ણ થઈ ગયું છે.
આ સ્ટેટ્સ પ્રોસેસના જીવનચક્રનું પ્રતિનિધિત્વ કરે છે, અને ઓપરેટિંગ સિસ્ટમ તેમની વચ્ચેના સંક્રમણોનું સંચાલન કરવા માટે જવાબદાર છે. ઉદાહરણ તરીકે, જ્યારે કોઈ પ્રોસેસને ડિસ્કમાંથી ડેટા વાંચવાની જરૂર હોય, ત્યારે તે રનિંગ સ્ટેટમાંથી વેઇટિંગ સ્ટેટમાં સંક્રમણ કરે છે જ્યાં સુધી I/O ઓપરેશન પૂર્ણ ન થાય. પછી, તે ફરીથી રેડી સ્ટેટમાં સંક્રમણ કરે છે, ફરીથી ચાલવા માટે તેના વારાની રાહ જુએ છે.
પ્રોસેસ કંટ્રોલ બ્લોક (PCB)
PCB એ એક ડેટા સ્ટ્રક્ચર છે જેમાં ઓપરેટિંગ સિસ્ટમને પ્રોસેસનું સંચાલન કરવા માટે જરૂરી બધી માહિતી હોય છે. તે પ્રોસેસના રેઝ્યૂમે જેવું છે, જેમાં OS ને તેનો ટ્રેક રાખવા માટે જે જાણવાની જરૂર છે તે બધું જ હોય છે.
PCB ની સામાન્ય સામગ્રી:
- પ્રોસેસ ID (PID): પ્રોસેસ માટે એક અનન્ય ઓળખકર્તા.
- પ્રોસેસ સ્ટેટ: પ્રોસેસની વર્તમાન સ્થિતિ (દા.ત., રેડી, રનિંગ, વેઇટિંગ).
- પ્રોગ્રામ કાઉન્ટર (PC): એક્ઝેક્યુટ થનારી આગલી સૂચનાનું સરનામું.
- CPU રજિસ્ટર્સ: CPU રજિસ્ટર્સની સામગ્રી (એક્યુમ્યુલેટર્સ, ઇન્ડેક્સ રજિસ્ટર્સ, સ્ટેક પોઇન્ટર્સ, જનરલ-પર્પઝ રજિસ્ટર્સ, અને કોઈપણ કન્ડિશન-કોડ માહિતી).
- મેમરી મેનેજમેન્ટ માહિતી: પ્રોસેસને ફાળવેલ મેમરી વિશેની માહિતી, જેમ કે બેઝ અને લિમિટ રજિસ્ટર્સ, પેજ ટેબલ્સ, અથવા સેગમેન્ટ ટેબલ્સ.
- એકાઉન્ટિંગ માહિતી: વપરાયેલ CPU સમય, સમય મર્યાદા, એકાઉન્ટ નંબર્સ, વપરાયેલ મેમરીનો જથ્થો, વગેરે.
- I/O સ્ટેટસ માહિતી: પ્રોસેસને ફાળવેલ I/O ઉપકરણો, ખુલ્લી ફાઇલોની સૂચિ, વગેરે.
પ્રોસેસ શેડ્યુલિંગ
પ્રોસેસ શેડ્યુલિંગ એ નક્કી કરવાની પ્રવૃત્તિ છે કે રેડી કતારમાં કઈ પ્રોસેસને CPU ફાળવવામાં આવવું જોઈએ. શેડ્યુલિંગનો ધ્યેય અમુક માપદંડો અનુસાર સિસ્ટમ પ્રદર્શનને શ્રેષ્ઠ બનાવવાનો છે, જેમ કે CPU નો મહત્તમ ઉપયોગ, ટર્નઅરાઉન્ડ સમય ઘટાડવો, અથવા પ્રોસેસ વચ્ચે ન્યાયીપણાની ખાતરી કરવી.
શેડ્યુલિંગ કતાર
OS પ્રોસેસનું સંચાલન કરવા માટે કતારનો ઉપયોગ કરે છે. સામાન્ય કતારોમાં શામેલ છે:
- જોબ કતાર: સિસ્ટમમાંની તમામ પ્રોસેસ ધરાવે છે.
- રેડી કતાર: એક્ઝેક્યુટ થવા માટે તૈયાર અને CPU ની રાહ જોઈ રહેલી તમામ પ્રોસેસ ધરાવે છે.
- ડિવાઇસ કતાર: દરેક I/O ઉપકરણ માટે એક, તે ઉપકરણની રાહ જોઈ રહેલી પ્રોસેસ ધરાવતી કતારોનો સમૂહ.
શેડ્યુલર્સ
શેડ્યુલર્સ એ સિસ્ટમ સોફ્ટવેર મોડ્યુલ્સ છે જે ચલાવવા માટે આગલી પ્રોસેસ પસંદ કરે છે. શેડ્યુલરના બે મુખ્ય પ્રકાર છે:
- લોંગ-ટર્મ શેડ્યુલર (જોબ શેડ્યુલર): જોબ કતારમાંથી પ્રોસેસ પસંદ કરે છે અને તેમને એક્ઝેક્યુશન માટે મેમરીમાં લોડ કરે છે. તે મલ્ટિપ્રોગ્રામિંગની ડિગ્રી (મેમરીમાં પ્રોસેસની સંખ્યા) ને નિયંત્રિત કરે છે. તે શોર્ટ-ટર્મ શેડ્યુલર કરતાં ઓછી વાર ચાલે છે.
- શોર્ટ-ટર્મ શેડ્યુલર (CPU શેડ્યુલર): રેડી કતારમાંથી પ્રોસેસ પસંદ કરે છે અને તેને CPU ફાળવે છે. તે ખૂબ જ વારંવાર ચાલે છે, તેથી તે ઝડપી હોવું આવશ્યક છે.
કેટલીક સિસ્ટમ્સમાં, મિડિયમ-ટર્મ શેડ્યુલર પણ હોય છે, જે મલ્ટિપ્રોગ્રામિંગની ડિગ્રી ઘટાડવા માટે પ્રોસેસને મેમરીમાંથી (ડિસ્કમાં) અને પાછી સ્વેપ કરે છે. આને સ્વેપિંગ પણ કહેવાય છે.
શેડ્યુલિંગ અલ્ગોરિધમ્સ
અસંખ્ય શેડ્યુલિંગ અલ્ગોરિધમ્સ અસ્તિત્વમાં છે, દરેક તેની પોતાની શક્તિઓ અને નબળાઈઓ સાથે. અલ્ગોરિધમની પસંદગી સિસ્ટમના ચોક્કસ લક્ષ્યો પર આધાર રાખે છે. અહીં કેટલાક સામાન્ય અલ્ગોરિધમ્સ છે:
- ફર્સ્ટ-કમ, ફર્સ્ટ-સર્વ્ડ (FCFS): પ્રોસેસ જે ક્રમમાં આવે છે તે ક્રમમાં એક્ઝેક્યુટ થાય છે. અમલીકરણ માટે સરળ છે પરંતુ જો લાંબી પ્રોસેસ પ્રથમ આવે તો ટૂંકી પ્રોસેસ માટે લાંબી પ્રતીક્ષા સમય તરફ દોરી શકે છે (કોન્વોય ઇફેક્ટ).
- શોર્ટેસ્ટ જોબ ફર્સ્ટ (SJF): સૌથી ટૂંકા એક્ઝેક્યુશન સમયવાળી પ્રોસેસ પ્રથમ એક્ઝેક્યુટ થાય છે. સરેરાશ પ્રતીક્ષા સમય ઘટાડવાના સંદર્ભમાં શ્રેષ્ઠ છે, પરંતુ એક્ઝેક્યુશન સમય અગાઉથી જાણવાની જરૂર છે, જે ઘણીવાર શક્ય નથી.
- પ્રાયોરિટી શેડ્યુલિંગ: દરેક પ્રોસેસને પ્રાધાન્યતા સોંપવામાં આવે છે, અને સૌથી વધુ પ્રાધાન્યતાવાળી પ્રોસેસ પ્રથમ એક્ઝેક્યુટ થાય છે. જો ઓછી-પ્રાધાન્યતાવાળી પ્રોસેસને ઉચ્ચ-પ્રાધાન્યતાવાળી પ્રોસેસ દ્વારા સતત પ્રિએમ્પ્ટ કરવામાં આવે તો ભૂખમરો તરફ દોરી શકે છે.
- રાઉન્ડ રોબિન (RR): દરેક પ્રોસેસને એક્ઝેક્યુટ કરવા માટે એક નિશ્ચિત સમય સ્લાઇસ (ક્વોન્ટમ) આપવામાં આવે છે. જો પ્રોસેસ સમય સ્લાઇસમાં પૂર્ણ ન થાય, તો તેને રેડી કતારની પાછળ ખસેડવામાં આવે છે. ન્યાયી છે અને ભૂખમરો અટકાવે છે, પરંતુ જો સમય સ્લાઇસ ખૂબ નાનો હોય તો કોન્ટેક્સ્ટ સ્વિચિંગ ઓવરહેડ કાર્યક્ષમતા ઘટાડી શકે છે.
- મલ્ટિલેવલ ક્યુ શેડ્યુલિંગ: રેડી કતારને બહુવિધ કતારોમાં વિભાજીત કરવામાં આવે છે, દરેક તેના પોતાના શેડ્યુલિંગ અલ્ગોરિધમ સાથે. પ્રોસેસને તેમની મિલકતોના આધારે કતારોમાં સોંપવામાં આવે છે (દા.ત., ઇન્ટરેક્ટિવ વિ. બેચ).
- મલ્ટિલેવલ ફીડબેક ક્યુ શેડ્યુલિંગ: પ્રોસેસ વિવિધ કતારો વચ્ચે ખસી શકે છે. આ શેડ્યુલરને પ્રોસેસના વર્તનના આધારે તેમની પ્રાધાન્યતાને ગતિશીલ રીતે સમાયોજિત કરવાની મંજૂરી આપે છે.
ઉદાહરણ: ત્રણ પ્રોસેસ, P1, P2 અને P3 નો વિચાર કરો, જેમનો બર્સ્ટ ટાઈમ (એક્ઝેક્યુશન ટાઈમ) અનુક્રમે 24, 3 અને 3 મિલિસેકન્ડ છે. જો તેઓ P1, P2, P3 ના ક્રમમાં આવે છે, તો FCFS શેડ્યુલિંગના પરિણામે P1 પ્રથમ ચાલશે, પછી P2, પછી P3. સરેરાશ પ્રતીક્ષા સમય (0 + 24 + 27) / 3 = 17 મિલિસેકન્ડ હશે. જો કે, જો આપણે SJF નો ઉપયોગ કર્યો હોત, તો પ્રોસેસ P2, P3, P1 ના ક્રમમાં એક્ઝેક્યુટ થશે, અને સરેરાશ પ્રતીક્ષા સમય (0 + 3 + 6) / 3 = 3 મિલિસેકન્ડ હશે – એક નોંધપાત્ર સુધારો!
ઇન્ટર-પ્રોસેસ કમ્યુનિકેશન (IPC)
ઇન્ટર-પ્રોસેસ કમ્યુનિકેશન (IPC) પ્રોસેસને એકબીજા સાથે વાતચીત અને સિંક્રનાઇઝ કરવાની મંજૂરી આપે છે. બહુવિધ પ્રોસેસ સાથે મળીને કામ કરતી જટિલ એપ્લિકેશનો બનાવવા માટે આ જરૂરી છે.
સામાન્ય IPC મિકેનિઝમ્સ:
- શેર્ડ મેમરી: પ્રોસેસ મેમરીના એક પ્રદેશને શેર કરે છે, જે તેમને સીધા ડેટાને એક્સેસ અને સંશોધિત કરવાની મંજૂરી આપે છે. રેસ કન્ડિશન ટાળવા માટે સાવચેતીપૂર્વક સિંક્રનાઇઝેશનની જરૂર છે.
- મેસેજ પાસિંગ: પ્રોસેસ એકબીજાને સંદેશા મોકલીને વાતચીત કરે છે. શેર્ડ મેમરી કરતાં વધુ સારી આઇસોલેશન પૂરી પાડે છે પરંતુ ધીમી હોઈ શકે છે.
- પાઇપ્સ: બે પ્રોસેસ વચ્ચે એક-દિશિય કમ્યુનિકેશન ચેનલ. સામાન્ય રીતે સંબંધિત પ્રોસેસ (દા.ત., પેરેન્ટ અને ચાઇલ્ડ) વચ્ચેના સંચાર માટે વપરાય છે.
- નેમ્ડ પાઇપ્સ (FIFOs): પાઇપ્સ જેવું જ છે પરંતુ અસંબંધિત પ્રોસેસ વચ્ચેના સંચાર માટે વાપરી શકાય છે.
- મેસેજ ક્યુઝ: પ્રોસેસ ક્યુમાંથી સંદેશા મોકલી અને પ્રાપ્ત કરી શકે છે. એસિંક્રોનસ કમ્યુનિકેશન પૂરું પાડે છે.
- સોકેટ્સ: સમાન મશીન પર અથવા નેટવર્ક પર પ્રોસેસ વચ્ચેના સંચાર માટે એક બહુમુખી મિકેનિઝમ. ક્લાયંટ-સર્વર એપ્લિકેશનો અને ડિસ્ટ્રિબ્યુટેડ સિસ્ટમ્સ માટે વપરાય છે.
- સિગ્નલ્સ: એક સોફ્ટવેર ઇન્ટરપ્ટ જે કોઈ ઘટનાની જાણ કરવા માટે પ્રોસેસને મોકલી શકાય છે (દા.ત., સમાપ્તિ વિનંતી, ભૂલની સ્થિતિ).
ઉદાહરણ: વેબ સર્વર આવનારી વિનંતીઓને એક સાથે હેન્ડલ કરવા માટે બહુવિધ પ્રોસેસનો ઉપયોગ કરી શકે છે. દરેક પ્રોસેસ એક જ વિનંતીને હેન્ડલ કરી શકે છે, અને પ્રોસેસ સર્વરની સ્થિતિ વિશે ડેટા શેર કરવા માટે શેર્ડ મેમરી અથવા મેસેજ પાસિંગનો ઉપયોગ કરીને વાતચીત કરી શકે છે.
સિંક્રોનાઇઝેશન
જ્યારે બહુવિધ પ્રોસેસ શેર્ડ સંસાધનોને એક્સેસ કરે છે, ત્યારે ડેટા કરપ્શન અને રેસ કન્ડિશનને રોકવા માટે સિંક્રોનાઇઝેશન સુનિશ્ચિત કરવું નિર્ણાયક છે. સિંક્રોનાઇઝેશન મિકેનિઝમ્સ પ્રોસેસના એક્ઝેક્યુશનનું સંકલન કરવા અને શેર્ડ ડેટાને સુરક્ષિત કરવાના માર્ગો પૂરા પાડે છે.
સામાન્ય સિંક્રોનાઇઝેશન તકનીકો:
- મ્યુટેક્સ લોક્સ: એક બાઈનરી સેમાફોર જે કોડના ક્રિટિકલ સેક્શનને સુરક્ષિત કરવા માટે વાપરી શકાય છે. એક સમયે ફક્ત એક જ પ્રોસેસ મ્યુટેક્સ લોકને પકડી શકે છે.
- સેમાફોર્સ: મ્યુટેક્સ લોક્સનું સામાન્યીકરણ જે મર્યાદિત સંખ્યામાં સંસાધનોના એક્સેસને નિયંત્રિત કરવા માટે વાપરી શકાય છે.
- મોનિટર્સ: એક ઉચ્ચ-સ્તરીય સિંક્રોનાઇઝેશન કન્સ્ટ્રક્ટ જે શેર્ડ ડેટા અને તેના પર કરી શકાતી કામગીરીને સમાવે છે. પ્રતીક્ષા અને સિગ્નલિંગ માટે મ્યુચ્યુઅલ એક્સક્લુઝન અને કન્ડિશન વેરિયેબલ્સ પ્રદાન કરે છે.
- કન્ડિશન વેરિયેબલ્સ: પ્રોસેસને ચોક્કસ શરત સાચી થવાની રાહ જોવાની મંજૂરી આપવા માટે મોનિટર્સમાં વપરાય છે.
- સ્પિનલોક્સ: એક પ્રકારનો લોક જ્યાં પ્રોસેસ વારંવાર તપાસે છે કે લોક ઉપલબ્ધ છે કે નહીં. ટૂંકા ક્રિટિકલ સેક્શન માટે કાર્યક્ષમ હોઈ શકે છે, પરંતુ જો લોક લાંબા સમય સુધી પકડવામાં આવે તો CPU સમય બગાડે છે.
ઉદાહરણ: એક શેર્ડ કાઉન્ટરનો વિચાર કરો જે બહુવિધ પ્રોસેસ દ્વારા વધારવામાં આવે છે. સિંક્રોનાઇઝેશન વિના, બહુવિધ પ્રોસેસ કાઉન્ટરનું મૂલ્ય વાંચી શકે છે, તેને વધારી શકે છે, અને તેને પાછું લખી શકે છે, જે ખોટા પરિણામો તરફ દોરી જાય છે. ઇન્ક્રીમેન્ટ ઓપરેશનને સુરક્ષિત કરવા માટે મ્યુટેક્સ લોકનો ઉપયોગ એ સુનિશ્ચિત કરે છે કે એક સમયે ફક્ત એક જ પ્રોસેસ કાઉન્ટરને એક્સેસ કરી શકે છે, જે રેસ કન્ડિશનને અટકાવે છે.
ડેડલોક
ડેડલોક ત્યારે થાય છે જ્યારે બે કે તેથી વધુ પ્રોસેસ અનિશ્ચિત સમય માટે અવરોધિત થઈ જાય છે, દરેક બીજા દ્વારા રાખવામાં આવેલા સંસાધનની રાહ જોતી હોય છે. તે એક ગંભીર સમસ્યા છે જે સિસ્ટમને અટકાવી શકે છે.
ડેડલોક માટેની શરતો:
ડેડલોક થવા માટે ચાર શરતો એક સાથે પૂરી થવી જોઈએ (કોફમેન શરતો):
- મ્યુચ્યુઅલ એક્સક્લુઝન: ઓછામાં ઓછું એક સંસાધન નોન-શેરેબલ મોડમાં રાખવું આવશ્યક છે; એટલે કે, એક સમયે ફક્ત એક જ પ્રોસેસ સંસાધનનો ઉપયોગ કરી શકે છે.
- હોલ્ડ એન્ડ વેઇટ: પ્રોસેસ ઓછામાં ઓછું એક સંસાધન પકડી રાખતી હોવી જોઈએ અને વધારાના સંસાધનો મેળવવાની રાહ જોતી હોવી જોઈએ જે હાલમાં અન્ય પ્રોસેસ દ્વારા રાખવામાં આવ્યા છે.
- નો પ્રિએમ્પ્શન: સંસાધનોને પ્રોસેસ પાસેથી બળજબરીથી લઈ શકાતા નથી; સંસાધન ફક્ત તે પ્રોસેસ દ્વારા સ્વેચ્છાએ મુક્ત કરી શકાય છે જે તેને પકડી રહી છે.
- સર્ક્યુલર વેઇટ: રાહ જોતી પ્રોસેસનો એક સમૂહ {P0, P1, ..., Pn} અસ્તિત્વમાં હોવો જોઈએ જેમ કે P0 P1 દ્વારા રાખવામાં આવેલા સંસાધનની રાહ જોઈ રહ્યું છે, P1 P2 દ્વારા રાખવામાં આવેલા સંસાધનની રાહ જોઈ રહ્યું છે, ..., Pn-1 Pn દ્વારા રાખવામાં આવેલા સંસાધનની રાહ જોઈ રહ્યું છે, અને Pn P0 દ્વારા રાખવામાં આવેલા સંસાધનની રાહ જોઈ રહ્યું છે.
ડેડલોક હેન્ડલિંગ તકનીકો:
ડેડલોકને હેન્ડલ કરવા માટે ઘણા અભિગમો છે:
- ડેડલોક પ્રિવેન્શન: ખાતરી કરો કે કોફમેન શરતોમાંથી ઓછામાં ઓછી એક શરત પૂરી ન થાય. ઉદાહરણ તરીકે, પ્રોસેસને એક જ સમયે તમામ સંસાધનોની વિનંતી કરવાની જરૂર પડે અથવા સંસાધનોના પ્રિએમ્પ્શનની મંજૂરી આપવી.
- ડેડલોક અવોઇડન્સ: ડેડલોક સ્થિતિમાં પ્રવેશવાનું ટાળવા માટે સંસાધન ફાળવણી વિશેની માહિતીનો ઉપયોગ કરો. બેન્કરનો અલ્ગોરિધમ એક સામાન્ય ઉદાહરણ છે.
- ડેડલોક ડિટેક્શન અને રિકવરી: ડેડલોક થવા દો, પછી તેમને શોધો અને પુનઃપ્રાપ્ત કરો. પુનઃપ્રાપ્તિમાં પ્રોસેસને સમાપ્ત કરવી અથવા સંસાધનોને પ્રિએમ્પ્ટ કરવાનો સમાવેશ થઈ શકે છે.
- ડેડલોક ઇગ્નોરન્સ: સમસ્યાને અવગણો અને આશા રાખો કે તે ન થાય. આ વિન્ડોઝ અને લિનક્સ સહિત મોટાભાગની ઓપરેટિંગ સિસ્ટમ્સ દ્વારા લેવામાં આવેલો અભિગમ છે, કારણ કે ડેડલોક પ્રિવેન્શન અને અવોઇડન્સ ખર્ચાળ હોઈ શકે છે.
ઉદાહરણ: બે પ્રોસેસ, P1 અને P2, અને બે સંસાધનો, R1 અને R2 નો વિચાર કરો. P1 R1 ધરાવે છે અને R2 ની રાહ જોઈ રહ્યું છે, જ્યારે P2 R2 ધરાવે છે અને R1 ની રાહ જોઈ રહ્યું છે. આ એક સર્ક્યુલર વેઇટ બનાવે છે, જે ડેડલોક તરફ દોરી જાય છે. આ ડેડલોકને રોકવાનો એક માર્ગ એ હશે કે પ્રોસેસને એક્ઝેક્યુશન શરૂ કરતા પહેલા એક જ સમયે તમામ સંસાધનોની વિનંતી કરવાની જરૂર પડે.
વાસ્તવિક-દુનિયાના ઉદાહરણો
પ્રોસેસ મેનેજમેન્ટના ખ્યાલો વિશ્વભરની વિવિધ ઓપરેટિંગ સિસ્ટમ્સમાં વપરાય છે:
- લિનક્સ: કમ્પ્લીટલી ફેર શેડ્યુલર (CFS) નામના એક અત્યાધુનિક શેડ્યુલિંગ અલ્ગોરિધમનો ઉપયોગ કરે છે, જેનો ઉદ્દેશ્ય તમામ પ્રોસેસને ન્યાયી CPU ફાળવણી પૂરી પાડવાનો છે.
- વિન્ડોઝ: બહુવિધ પ્રાધાન્યતા સ્તરો સાથે પ્રાધાન્યતા-આધારિત શેડ્યુલિંગ અલ્ગોરિધમનો ઉપયોગ કરે છે.
- macOS: એક હાઇબ્રિડ અભિગમનો ઉપયોગ કરે છે જે પ્રાધાન્યતા-આધારિત શેડ્યુલિંગને ટાઇમ-સ્લાઇસિંગ સાથે જોડે છે.
- એન્ડ્રોઇડ: લિનક્સ કર્નલ પર બનેલ, તે સમાન પ્રોસેસ મેનેજમેન્ટ તકનીકોનો ઉપયોગ કરે છે, જે મોબાઇલ ઉપકરણો માટે ઓપ્ટિમાઇઝ કરેલ છે.
- રિયલ-ટાઇમ ઓપરેટિંગ સિસ્ટમ્સ (RTOS): એમ્બેડેડ સિસ્ટમ્સ અને ક્રિટિકલ એપ્લિકેશન્સમાં વપરાય છે, ઘણીવાર વિશિષ્ટ શેડ્યુલિંગ અલ્ગોરિધમ્સનો ઉપયોગ કરે છે જે કાર્યોના સમયસર એક્ઝેક્યુશનની ખાતરી આપે છે. ઉદાહરણોમાં VxWorks અને FreeRTOS શામેલ છે.
નિષ્કર્ષ
પ્રોસેસ મેનેજમેન્ટ એ ઓપરેટિંગ સિસ્ટમ્સનું એક નિર્ણાયક પાસું છે જે મલ્ટિટાસ્કિંગ, સંસાધન વહેંચણી અને કાર્યક્ષમ સિસ્ટમ ઉપયોગને સક્ષમ કરે છે. આ માર્ગદર્શિકામાં ચર્ચા કરાયેલા ખ્યાલોને સમજવું ઓપરેટિંગ સિસ્ટમ્સ સાથે કામ કરનાર, એપ્લિકેશનો વિકસાવનાર અથવા સિસ્ટમ્સનું સંચાલન કરનાર કોઈપણ માટે જરૂરી છે. પ્રોસેસ સ્ટેટ્સ, શેડ્યુલિંગ અલ્ગોરિધમ્સ, ઇન્ટર-પ્રોસેસ કમ્યુનિકેશન અને ડેડલોક હેન્ડલિંગમાં નિપુણતા મેળવીને, તમે વધુ મજબૂત, કાર્યક્ષમ અને વિશ્વસનીય સોફ્ટવેર સિસ્ટમ્સ બનાવી શકો છો. વિવિધ અભિગમો વચ્ચેના ટ્રેડ-ઓફ્સને ધ્યાનમાં રાખવાનું યાદ રાખો અને તમારી ચોક્કસ જરૂરિયાતોને શ્રેષ્ઠ રીતે બંધબેસતી તકનીકો પસંદ કરો.
વધુ શીખવા માટે
પ્રોસેસ મેનેજમેન્ટની તમારી સમજને વધુ ઊંડી બનાવવા માટે, નીચેના સંસાધનોનું અન્વેષણ કરવાનું વિચારો:
- ઓપરેટિંગ સિસ્ટમ કોન્સેપ્ટ્સ - અબ્રાહમ સિલ્બરશેટ્ઝ, પીટર બેર ગેલ્વિન અને ગ્રેગ ગેગ્ને દ્વારા
- મોર્ડન ઓપરેટિંગ સિસ્ટમ્સ - એન્ડ્રુ એસ. ટેનનબૌમ દ્વારા
- કોર્સેરા, edX, અને યુડાસિટી જેવા પ્લેટફોર્મ પરથી ઓપરેટિંગ સિસ્ટમ્સ પરના ઓનલાઈન અભ્યાસક્રમો અને ટ્યુટોરિયલ્સ.
- તમારી પસંદગીની ઓપરેટિંગ સિસ્ટમ માટેના દસ્તાવેજો (દા.ત., લિનક્સ મેન પેજીસ, વિન્ડોઝ API દસ્તાવેજીકરણ).