ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ಗಳಲ್ಲಿ ಪ್ರೊಸೆಸ್ ನಿರ್ವಹಣೆಯ ಮೂಲಭೂತ ಪರಿಕಲ್ಪನೆಗಳನ್ನು ಅನ್ವೇಷಿಸಿ, ಇದರಲ್ಲಿ ಪ್ರೊಸೆಸ್ ಸ್ಥಿತಿಗಳು, ಶೆಡ್ಯೂಲಿಂಗ್ ಅಲ್ಗಾರಿದಮ್ಗಳು, ಅಂತರ-ಪ್ರೊಸೆಸ್ ಸಂವಹನ ಮತ್ತು ಡೆಡ್ಲಾಕ್ ನಿರ್ವಹಣೆ ಸೇರಿವೆ. ಡೆವಲಪರ್ಗಳು ಮತ್ತು ಸಿಸ್ಟಮ್ ನಿರ್ವಾಹಕರಿಗೆ ಅತ್ಯಗತ್ಯ.
ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ಗಳು: ಪ್ರೊಸೆಸ್ ನಿರ್ವಹಣೆಗೆ ಒಂದು ಸಮಗ್ರ ಮಾರ್ಗದರ್ಶಿ
ಪ್ರೊಸೆಸ್ ನಿರ್ವಹಣೆಯು ಯಾವುದೇ ಆಧುನಿಕ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ನ ಒಂದು ಮೂಲಭೂತ ಅಂಶವಾಗಿದೆ. ಇದು ಪ್ರೊಸೆಸ್ಗಳ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯನ್ನು ನಿರ್ವಹಿಸುವುದು, ಸಂಪನ್ಮೂಲಗಳನ್ನು ಹಂಚಿಕೆ ಮಾಡುವುದು ಮತ್ತು ಸುಗಮ ಮಲ್ಟಿಟಾಸ್ಕಿಂಗ್ ಅನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳುವುದನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ. ಈ ಮಾರ್ಗದರ್ಶಿಯು ಪ್ರೊಸೆಸ್ ನಿರ್ವಹಣೆಯ ಪರಿಕಲ್ಪನೆಗಳು, ತಂತ್ರಗಳು ಮತ್ತು ಸವಾಲುಗಳ ವಿವರವಾದ ಅವಲೋಕನವನ್ನು ನೀಡುತ್ತದೆ. ಇದನ್ನು ವಿದ್ಯಾರ್ಥಿಗಳು, ಡೆವಲಪರ್ಗಳು, ಸಿಸ್ಟಮ್ ನಿರ್ವಾಹಕರು ಮತ್ತು ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ಗಳು ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಆಸಕ್ತಿ ಹೊಂದಿರುವ ಯಾರಿಗಾದರೂ ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ.
ಪ್ರೊಸೆಸ್ ಎಂದರೇನು?
ಮೂಲಭೂತವಾಗಿ, ಪ್ರೊಸೆಸ್ ಎನ್ನುವುದು ಕಾರ್ಯಗತಗೊಳ್ಳುತ್ತಿರುವ ಪ್ರೋಗ್ರಾಂನ ಒಂದು ನಿದರ್ಶನವಾಗಿದೆ. ಇದು ಕೇವಲ ಪ್ರೋಗ್ರಾಂನ ಕೋಡ್ಗಿಂತ ಹೆಚ್ಚಾಗಿರುತ್ತದೆ; ಇದು ಪ್ರೋಗ್ರಾಂ ಕೌಂಟರ್, ರಿಜಿಸ್ಟರ್ಗಳು ಮತ್ತು ವೇರಿಯಬಲ್ಗಳ ಪ್ರಸ್ತುತ ಮೌಲ್ಯಗಳನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ. ಪ್ರತಿಯೊಂದು ಪ್ರೊಸೆಸ್ ತನ್ನದೇ ಆದ ಮೆಮೊರಿ ಸ್ಥಳವನ್ನು ಹೊಂದಿರುತ್ತದೆ, ಇದು ಇತರ ಪ್ರೊಸೆಸ್ಗಳೊಂದಿಗೆ ನೇರವಾಗಿ ಹಸ್ತಕ್ಷೇಪ ಮಾಡುವುದನ್ನು ತಡೆಯುತ್ತದೆ.
ಒಂದು ಪ್ರೋಗ್ರಾಂ ಅನ್ನು ಪಾಕವಿಧಾನವೆಂದೂ ಮತ್ತು ಪ್ರೊಸೆಸ್ ಅನ್ನು ನಿಜವಾಗಿ ಖಾದ್ಯವನ್ನು ಅಡುಗೆ ಮಾಡುವ ಕ್ರಿಯೆಯೆಂದೂ ಭಾವಿಸಿ. ನೀವು ಒಂದೇ ಪ್ರೋಗ್ರಾಂ ಅನ್ನು ಏಕಕಾಲದಲ್ಲಿ ಚಾಲನೆ ಮಾಡುವ ಅನೇಕ ಪ್ರೊಸೆಸ್ಗಳನ್ನು ಹೊಂದಬಹುದು (ಉದಾಹರಣೆಗೆ, ಟೆಕ್ಸ್ಟ್ ಎಡಿಟರ್ನ ಅನೇಕ ನಿದರ್ಶನಗಳು), ಪ್ರತಿಯೊಂದೂ ತನ್ನದೇ ಆದ ಡೇಟಾ ಮತ್ತು ಸ್ಥಿತಿಯನ್ನು ಹೊಂದಿರುತ್ತದೆ.
ಪ್ರೊಸೆಸ್ನ ಪ್ರಮುಖ ಘಟಕಗಳು:
- ಪ್ರೋಗ್ರಾಂ ಕೋಡ್ (ಟೆಕ್ಸ್ಟ್ ವಿಭಾಗ): ಕಾರ್ಯಗತಗೊಳಿಸಬೇಕಾದ ಸೂಚನೆಗಳು.
- ಡೇಟಾ ವಿಭಾಗ: ಗ್ಲೋಬಲ್ ವೇರಿಯಬಲ್ಗಳು ಮತ್ತು ಡೈನಾಮಿಕ್ ಆಗಿ ಹಂಚಿಕೆ ಮಾಡಲಾದ ಮೆಮೊರಿ.
- ಸ್ಟಾಕ್: ಫಂಕ್ಷನ್ ಕಾಲ್ಗಳು, ಲೋಕಲ್ ವೇರಿಯಬಲ್ಗಳು ಮತ್ತು ರಿಟರ್ನ್ ವಿಳಾಸಗಳಿಗಾಗಿ ಬಳಸಲಾಗುತ್ತದೆ.
- ಹೀಪ್: ರನ್ಟೈಮ್ ಸಮಯದಲ್ಲಿ ಡೈನಾಮಿಕ್ ಆಗಿ ಹಂಚಿಕೆ ಮಾಡಲಾದ ಮೆಮೊರಿ.
- ಪ್ರೊಸೆಸ್ ಕಂಟ್ರೋಲ್ ಬ್ಲಾಕ್ (PCB): ಪ್ರತಿಯೊಂದು ಪ್ರೊಸೆಸ್ಗಾಗಿ OS ನಿರ್ವಹಿಸುವ ಡೇಟಾ ರಚನೆ. ಇದರಲ್ಲಿ ಪ್ರೊಸೆಸ್ ಐಡಿ, ಸ್ಥಿತಿ, ಪ್ರೋಗ್ರಾಂ ಕೌಂಟರ್ ಮತ್ತು ರಿಜಿಸ್ಟರ್ ಮೌಲ್ಯಗಳಂತಹ ಮಾಹಿತಿಯಿರುತ್ತದೆ.
ಪ್ರೊಸೆಸ್ ಸ್ಥಿತಿಗಳು
ಒಂದು ಪ್ರೊಸೆಸ್ ತನ್ನ ಜೀವಿತಾವಧಿಯಲ್ಲಿ ವಿವಿಧ ಸ್ಥಿತಿಗಳ ಮೂಲಕ ಹಾದುಹೋಗುತ್ತದೆ. ಪ್ರೊಸೆಸ್ ನಿರ್ವಹಣೆಯನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಈ ಸ್ಥಿತಿಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಬಹಳ ಮುಖ್ಯ.
- ಹೊಸ (New): ಪ್ರೊಸೆಸ್ ಅನ್ನು ರಚಿಸಲಾಗುತ್ತಿದೆ.
- ಸಿದ್ಧ (Ready): ಪ್ರೊಸೆಸ್ ಅನ್ನು ಪ್ರೊಸೆಸರ್ಗೆ ನಿಯೋಜಿಸಲು ಕಾಯುತ್ತಿದೆ.
- ಚಾಲನೆಯಲ್ಲಿದೆ (Running): ಸೂಚನೆಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲಾಗುತ್ತಿದೆ.
- ಕಾಯುವಿಕೆ (Waiting/Blocked): ಪ್ರೊಸೆಸ್ ಯಾವುದಾದರೂ ಘಟನೆ ಸಂಭವಿಸಲು ಕಾಯುತ್ತಿದೆ (ಉದಾಹರಣೆಗೆ, I/O ಪೂರ್ಣಗೊಳ್ಳುವುದು ಅಥವಾ ಸಿಗ್ನಲ್ ಸ್ವೀಕರಿಸುವುದು).
- ಮುಕ್ತಾಯಗೊಂಡಿದೆ (Terminated): ಪ್ರೊಸೆಸ್ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯನ್ನು ಮುಗಿಸಿದೆ.
ಈ ಸ್ಥಿತಿಗಳು ಪ್ರೊಸೆಸ್ನ ಜೀವನಚಕ್ರವನ್ನು ಪ್ರತಿನಿಧಿಸುತ್ತವೆ, ಮತ್ತು ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ ಅವುಗಳ ನಡುವಿನ ಪರಿವರ್ತನೆಗಳನ್ನು ನಿರ್ವಹಿಸಲು ಜವಾಬ್ದಾರವಾಗಿರುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ಒಂದು ಪ್ರೊಸೆಸ್ಗೆ ಡಿಸ್ಕ್ನಿಂದ ಡೇಟಾವನ್ನು ಓದಬೇಕಾದಾಗ, ಅದು ಚಾಲನೆಯಲ್ಲಿರುವ ಸ್ಥಿತಿಯಿಂದ ಕಾಯುವ ಸ್ಥಿತಿಗೆ ಪರಿವರ್ತನೆಗೊಳ್ಳುತ್ತದೆ ಮತ್ತು I/O ಕಾರ್ಯಾಚರಣೆ ಪೂರ್ಣಗೊಳ್ಳುವವರೆಗೆ ಕಾಯುತ್ತದೆ. ನಂತರ, ಅದು ಮತ್ತೆ ಚಾಲನೆಗೊಳ್ಳಲು ತನ್ನ ಸರದಿಗಾಗಿ ಕಾಯುತ್ತಾ ಸಿದ್ಧ ಸ್ಥಿತಿಗೆ ಮರಳುತ್ತದೆ.
ಪ್ರೊಸೆಸ್ ಕಂಟ್ರೋಲ್ ಬ್ಲಾಕ್ (PCB)
PCB ಎನ್ನುವುದು ಒಂದು ಡೇಟಾ ರಚನೆಯಾಗಿದ್ದು, ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ಗೆ ಪ್ರೊಸೆಸ್ ಅನ್ನು ನಿರ್ವಹಿಸಲು ಬೇಕಾದ ಎಲ್ಲಾ ಮಾಹಿತಿಯನ್ನು ಹೊಂದಿರುತ್ತದೆ. ಇದು ಪ್ರೊಸೆಸ್ನ ರೆಸ್ಯೂಮ್ನಂತೆ, OS ಗೆ ಅದನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಲು ಬೇಕಾದ ಎಲ್ಲವನ್ನೂ ಹಿಡಿದಿಟ್ಟುಕೊಳ್ಳುತ್ತದೆ.
PCB ಯ ಸಾಮಾನ್ಯ ವಿಷಯಗಳು:
- ಪ್ರೊಸೆಸ್ ಐಡಿ (PID): ಪ್ರೊಸೆಸ್ಗೆ ಒಂದು ಅನನ್ಯ ಗುರುತಿನ ಸಂಖ್ಯೆ.
- ಪ್ರೊಸೆಸ್ ಸ್ಥಿತಿ: ಪ್ರೊಸೆಸ್ನ ಪ್ರಸ್ತುತ ಸ್ಥಿತಿ (ಉದಾ., ಸಿದ್ಧ, ಚಾಲನೆಯಲ್ಲಿದೆ, ಕಾಯುವಿಕೆ).
- ಪ್ರೋಗ್ರಾಂ ಕೌಂಟರ್ (PC): ಕಾರ್ಯಗತಗೊಳಿಸಬೇಕಾದ ಮುಂದಿನ ಸೂಚನೆಯ ವಿಳಾಸ.
- ಸಿಪಿಯು ರಿಜಿಸ್ಟರ್ಗಳು: ಸಿಪಿಯು ರಿಜಿಸ್ಟರ್ಗಳ ವಿಷಯಗಳು (ಅಕ್ಯುಮ್ಯುಲೇಟರ್ಗಳು, ಇಂಡೆಕ್ಸ್ ರಿಜಿಸ್ಟರ್ಗಳು, ಸ್ಟಾಕ್ ಪಾಯಿಂಟರ್ಗಳು, ಸಾಮಾನ್ಯ-ಉದ್ದೇಶದ ರಿಜಿಸ್ಟರ್ಗಳು, ಮತ್ತು ಯಾವುದೇ ಕಂಡೀಷನ್-ಕೋಡ್ ಮಾಹಿತಿ).
- ಮೆಮೊರಿ ನಿರ್ವಹಣಾ ಮಾಹಿತಿ: ಪ್ರೊಸೆಸ್ಗೆ ಹಂಚಿಕೆ ಮಾಡಲಾದ ಮೆಮೊರಿಯ ಬಗ್ಗೆ ಮಾಹಿತಿ, ಉದಾಹರಣೆಗೆ ಬೇಸ್ ಮತ್ತು ಲಿಮಿಟ್ ರಿಜಿಸ್ಟರ್ಗಳು, ಪೇಜ್ ಟೇಬಲ್ಗಳು, ಅಥವಾ ಸೆಗ್ಮೆಂಟ್ ಟೇಬಲ್ಗಳು.
- ಲೆಕ್ಕಪತ್ರ ಮಾಹಿತಿ: ಬಳಸಿದ ಸಿಪಿಯು ಸಮಯ, ಸಮಯ ಮಿತಿಗಳು, ಖಾತೆ ಸಂಖ್ಯೆಗಳು, ಬಳಸಿದ ಮೆಮೊರಿ ಪ್ರಮಾಣ ಇತ್ಯಾದಿ.
- I/O ಸ್ಥಿತಿ ಮಾಹಿತಿ: ಪ್ರೊಸೆಸ್ಗೆ ಹಂಚಿಕೆ ಮಾಡಲಾದ I/O ಸಾಧನಗಳು, ತೆರೆದ ಫೈಲ್ಗಳ ಪಟ್ಟಿ, ಇತ್ಯಾದಿ.
ಪ್ರೊಸೆಸ್ ಶೆಡ್ಯೂಲಿಂಗ್
ಪ್ರೊಸೆಸ್ ಶೆಡ್ಯೂಲಿಂಗ್ ಎನ್ನುವುದು ಸಿದ್ಧ ಕ್ಯೂನಲ್ಲಿರುವ ಯಾವ ಪ್ರೊಸೆಸ್ಗೆ ಸಿಪಿಯು ಹಂಚಿಕೆ ಮಾಡಬೇಕೆಂದು ನಿರ್ಧರಿಸುವ ಚಟುವಟಿಕೆಯಾಗಿದೆ. ಶೆಡ್ಯೂಲಿಂಗ್ನ ಗುರಿ ಸಿಪಿಯು ಬಳಕೆಯನ್ನು ಗರಿಷ್ಠಗೊಳಿಸುವುದು, ಸರದಿ ಸಮಯವನ್ನು ಕಡಿಮೆ ಮಾಡುವುದು, ಅಥವಾ ಪ್ರೊಸೆಸ್ಗಳ ನಡುವೆ ನ್ಯಾಯಯುತತೆಯನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳುವುದು ಮುಂತಾದ ಕೆಲವು ಮಾನದಂಡಗಳ ಪ್ರಕಾರ ಸಿಸ್ಟಮ್ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಉತ್ತಮಗೊಳಿಸುವುದಾಗಿದೆ.
ಶೆಡ್ಯೂಲಿಂಗ್ ಕ್ಯೂಗಳು
OS ಪ್ರೊಸೆಸ್ಗಳನ್ನು ನಿರ್ವಹಿಸಲು ಕ್ಯೂಗಳನ್ನು ಬಳಸುತ್ತದೆ. ಸಾಮಾನ್ಯ ಕ್ಯೂಗಳು ಸೇರಿವೆ:
- ಜಾಬ್ ಕ್ಯೂ: ಸಿಸ್ಟಮ್ನಲ್ಲಿರುವ ಎಲ್ಲಾ ಪ್ರೊಸೆಸ್ಗಳನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ.
- ರೆಡಿ ಕ್ಯೂ: ಕಾರ್ಯಗತಗೊಳಿಸಲು ಸಿದ್ಧವಾಗಿರುವ ಮತ್ತು ಸಿಪಿಯುಗಾಗಿ ಕಾಯುತ್ತಿರುವ ಎಲ್ಲಾ ಪ್ರೊಸೆಸ್ಗಳನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ.
- ಡಿವೈಸ್ ಕ್ಯೂಗಳು: ಪ್ರತಿಯೊಂದು I/O ಸಾಧನಕ್ಕಾಗಿ ಒಂದು ಕ್ಯೂ, ಆ ಸಾಧನಕ್ಕಾಗಿ ಕಾಯುತ್ತಿರುವ ಪ್ರೊಸೆಸ್ಗಳನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ.
ಶೆಡ್ಯೂಲರ್ಗಳು
ಶೆಡ್ಯೂಲರ್ಗಳು ಸಿಸ್ಟಮ್ ಸಾಫ್ಟ್ವೇರ್ ಮಾಡ್ಯೂಲ್ಗಳಾಗಿದ್ದು, ಚಾಲನೆ ಮಾಡಲು ಮುಂದಿನ ಪ್ರೊಸೆಸ್ ಅನ್ನು ಆಯ್ಕೆ ಮಾಡುತ್ತವೆ. ಎರಡು ಮುಖ್ಯ ವಿಧದ ಶೆಡ್ಯೂಲರ್ಗಳಿವೆ:
- ದೀರ್ಘಾವಧಿಯ ಶೆಡ್ಯೂಲರ್ (ಜಾಬ್ ಶೆಡ್ಯೂಲರ್): ಜಾಬ್ ಕ್ಯೂನಿಂದ ಪ್ರೊಸೆಸ್ಗಳನ್ನು ಆಯ್ಕೆಮಾಡಿ ಮತ್ತು ಕಾರ್ಯಗತಗೊಳಿಸಲು ಅವುಗಳನ್ನು ಮೆಮೊರಿಗೆ ಲೋಡ್ ಮಾಡುತ್ತದೆ. ಇದು ಮಲ್ಟಿಪ್ರೋಗ್ರಾಮಿಂಗ್ನ ಮಟ್ಟವನ್ನು (ಮೆಮೊರಿಯಲ್ಲಿರುವ ಪ್ರೊಸೆಸ್ಗಳ ಸಂಖ್ಯೆ) ನಿಯಂತ್ರಿಸುತ್ತದೆ. ಇದು ಅಲ್ಪಾವಧಿಯ ಶೆಡ್ಯೂಲರ್ಗಿಂತ ಕಡಿಮೆ ಬಾರಿ ಚಲಿಸುತ್ತದೆ.
- ಅಲ್ಪಾವಧಿಯ ಶೆಡ್ಯೂಲರ್ (ಸಿಪಿಯು ಶೆಡ್ಯೂಲರ್): ರೆಡಿ ಕ್ಯೂನಿಂದ ಒಂದು ಪ್ರೊಸೆಸ್ ಅನ್ನು ಆಯ್ಕೆಮಾಡಿ ಮತ್ತು ಅದಕ್ಕೆ ಸಿಪಿಯು ಅನ್ನು ಹಂಚಿಕೆ ಮಾಡುತ್ತದೆ. ಇದು ಬಹಳ ಆಗಾಗ್ಗೆ ಚಲಿಸುತ್ತದೆ, ಆದ್ದರಿಂದ ಇದು ವೇಗವಾಗಿರಬೇಕು.
ಕೆಲವು ಸಿಸ್ಟಮ್ಗಳಲ್ಲಿ, ಮಧ್ಯಮ-ಅವಧಿಯ ಶೆಡ್ಯೂಲರ್ ಕೂಡ ಇರುತ್ತದೆ, ಇದು ಮಲ್ಟಿಪ್ರೋಗ್ರಾಮಿಂಗ್ನ ಮಟ್ಟವನ್ನು ಕಡಿಮೆ ಮಾಡಲು ಪ್ರೊಸೆಸ್ಗಳನ್ನು ಮೆಮೊರಿಯಿಂದ (ಡಿಸ್ಕ್ಗೆ) ಮತ್ತು ಮತ್ತೆ ಮೆಮೊರಿಗೆ ಸ್ವಾಪ್ ಮಾಡುತ್ತದೆ. ಇದನ್ನು ಸ್ವಾಪಿಂಗ್ ಎಂದೂ ಕರೆಯುತ್ತಾರೆ.
ಶೆಡ್ಯೂಲಿಂಗ್ ಅಲ್ಗಾರಿದಮ್ಗಳು
ಅನೇಕ ಶೆಡ್ಯೂಲಿಂಗ್ ಅಲ್ಗಾರಿದಮ್ಗಳು ಅಸ್ತಿತ್ವದಲ್ಲಿವೆ, ಪ್ರತಿಯೊಂದಕ್ಕೂ ತನ್ನದೇ ಆದ ಸಾಮರ್ಥ್ಯ ಮತ್ತು ದೌರ್ಬಲ್ಯಗಳಿವೆ. ಅಲ್ಗಾರಿದಮ್ನ ಆಯ್ಕೆಯು ಸಿಸ್ಟಮ್ನ ನಿರ್ದಿಷ್ಟ ಗುರಿಗಳ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿರುತ್ತದೆ. ಕೆಲವು ಸಾಮಾನ್ಯ ಅಲ್ಗಾರಿದಮ್ಗಳು ಇಲ್ಲಿವೆ:
- ಫಸ್ಟ್-ಕಮ್, ಫಸ್ಟ್-ಸರ್ವ್ಡ್ (FCFS): ಪ್ರೊಸೆಸ್ಗಳು ಬಂದ ಕ್ರಮದಲ್ಲಿ ಕಾರ್ಯಗತಗೊಳ್ಳುತ್ತವೆ. ಕಾರ್ಯಗತಗೊಳಿಸಲು ಸರಳ ಆದರೆ ದೀರ್ಘ ಪ್ರೊಸೆಸ್ ಮೊದಲು ಬಂದರೆ ಚಿಕ್ಕ ಪ್ರೊಸೆಸ್ಗಳಿಗೆ ದೀರ್ಘ ಕಾಯುವ ಸಮಯಕ್ಕೆ ಕಾರಣವಾಗಬಹುದು (ಕಾನ್ವಾಯ್ ಪರಿಣಾಮ).
- ಶಾರ್ಟೆಸ್ಟ್ ಜಾಬ್ ಫಸ್ಟ್ (SJF): ಕಡಿಮೆ ಕಾರ್ಯಗತಗೊಳಿಸುವ ಸಮಯವನ್ನು ಹೊಂದಿರುವ ಪ್ರೊಸೆಸ್ಗಳು ಮೊದಲು ಕಾರ್ಯಗತಗೊಳ್ಳುತ್ತವೆ. ಸರಾಸರಿ ಕಾಯುವ ಸಮಯವನ್ನು ಕಡಿಮೆ ಮಾಡುವ ದೃಷ್ಟಿಯಿಂದ ಅತ್ಯುತ್ತಮ, ಆದರೆ ಮುಂಚಿತವಾಗಿ ಕಾರ್ಯಗತಗೊಳಿಸುವ ಸಮಯವನ್ನು ತಿಳಿದುಕೊಳ್ಳುವ ಅಗತ್ಯವಿರುತ್ತದೆ, ಇದು ಸಾಮಾನ್ಯವಾಗಿ ಸಾಧ್ಯವಿಲ್ಲ.
- ಪ್ರಿಯಾರಿಟಿ ಶೆಡ್ಯೂಲಿಂಗ್: ಪ್ರತಿಯೊಂದು ಪ್ರೊಸೆಸ್ಗೆ ಒಂದು ಪ್ರಿಯಾರಿಟಿಯನ್ನು ನಿಗದಿಪಡಿಸಲಾಗುತ್ತದೆ, ಮತ್ತು ಅತಿ ಹೆಚ್ಚು ಪ್ರಿಯಾರಿಟಿ ಹೊಂದಿರುವ ಪ್ರೊಸೆಸ್ ಮೊದಲು ಕಾರ್ಯಗತಗೊಳ್ಳುತ್ತದೆ. ಕಡಿಮೆ-ಪ್ರಿಯಾರಿಟಿ ಪ್ರೊಸೆಸ್ಗಳು ನಿರಂತರವಾಗಿ ಹೆಚ್ಚಿನ-ಪ್ರಿಯಾರಿಟಿ ಪ್ರೊಸೆಸ್ಗಳಿಂದ ತಡೆಹಿಡಿಯಲ್ಪಟ್ಟರೆ ಸ್ಟಾರ್ವೇಷನ್ಗೆ ಕಾರಣವಾಗಬಹುದು.
- ರೌಂಡ್ ರಾಬಿನ್ (RR): ಪ್ರತಿಯೊಂದು ಪ್ರೊಸೆಸ್ಗೆ ಕಾರ್ಯಗತಗೊಳಿಸಲು ಒಂದು ನಿಗದಿತ ಸಮಯದ ತುಣುಕು (ಕ್ವಾಂಟಮ್) ನೀಡಲಾಗುತ್ತದೆ. ಪ್ರೊಸೆಸ್ ಆ ಸಮಯದೊಳಗೆ ಪೂರ್ಣಗೊಳ್ಳದಿದ್ದರೆ, ಅದನ್ನು ರೆಡಿ ಕ್ಯೂನ ಹಿಂಭಾಗಕ್ಕೆ ಸರಿಸಲಾಗುತ್ತದೆ. ನ್ಯಾಯಯುತ ಮತ್ತು ಸ್ಟಾರ್ವೇಷನ್ ಅನ್ನು ತಡೆಯುತ್ತದೆ, ಆದರೆ ಸಮಯದ ತುಣುಕು ತುಂಬಾ ಚಿಕ್ಕದಾಗಿದ್ದರೆ ಸಂದರ್ಭ ಬದಲಾವಣೆಯ ಓವರ್ಹೆಡ್ ದಕ್ಷತೆಯನ್ನು ಕಡಿಮೆ ಮಾಡಬಹುದು.
- ಮಲ್ಟಿಲೆವೆಲ್ ಕ್ಯೂ ಶೆಡ್ಯೂಲಿಂಗ್: ರೆಡಿ ಕ್ಯೂ ಅನ್ನು ಅನೇಕ ಕ್ಯೂಗಳಾಗಿ ವಿಭಜಿಸಲಾಗುತ್ತದೆ, ಪ್ರತಿಯೊಂದಕ್ಕೂ ತನ್ನದೇ ಆದ ಶೆಡ್ಯೂಲಿಂಗ್ ಅಲ್ಗಾರಿದಮ್ ಇರುತ್ತದೆ. ಪ್ರೊಸೆಸ್ಗಳನ್ನು ಅವುಗಳ ಗುಣಲಕ್ಷಣಗಳ ಆಧಾರದ ಮೇಲೆ ಕ್ಯೂಗಳಿಗೆ ನಿಗದಿಪಡಿಸಲಾಗುತ್ತದೆ (ಉದಾ., ಇಂಟರಾಕ್ಟಿವ್ vs. ಬ್ಯಾಚ್).
- ಮಲ್ಟಿಲೆವೆಲ್ ಫೀಡ್ಬ್ಯಾಕ್ ಕ್ಯೂ ಶೆಡ್ಯೂಲಿಂಗ್: ಪ್ರೊಸೆಸ್ಗಳು ವಿಭಿನ್ನ ಕ್ಯೂಗಳ ನಡುವೆ ಚಲಿಸಬಹುದು. ಇದು ಶೆಡ್ಯೂಲರ್ಗೆ ಪ್ರೊಸೆಸ್ಗಳ ನಡವಳಿಕೆಯ ಆಧಾರದ ಮೇಲೆ ಅವುಗಳ ಪ್ರಿಯಾರಿಟಿಯನ್ನು ಡೈನಾಮಿಕ್ ಆಗಿ ಹೊಂದಿಸಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ.
ಉದಾಹರಣೆ: ಮೂರು ಪ್ರೊಸೆಸ್ಗಳನ್ನು ಪರಿಗಣಿಸಿ, 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): ಪೈಪ್ಗಳಂತೆಯೇ ಆದರೆ ಸಂಬಂಧವಿಲ್ಲದ ಪ್ರೊಸೆಸ್ಗಳ ನಡುವಿನ ಸಂವಹನಕ್ಕಾಗಿ ಬಳಸಬಹುದು.
- ಮೆಸೇಜ್ ಕ್ಯೂಗಳು: ಪ್ರೊಸೆಸ್ಗಳು ಕ್ಯೂಗೆ ಮತ್ತು ಕ್ಯೂನಿಂದ ಸಂದೇಶಗಳನ್ನು ಕಳುಹಿಸಬಹುದು ಮತ್ತು ಸ್ವೀಕರಿಸಬಹುದು. ಅಸಿಂಕ್ರೊನಸ್ ಸಂವಹನವನ್ನು ಒದಗಿಸುತ್ತದೆ.
- ಸಾಕೆಟ್ಸ್: ಒಂದೇ ಯಂತ್ರದಲ್ಲಿ ಅಥವಾ ನೆಟ್ವರ್ಕ್ನಾದ್ಯಂತ ಪ್ರೊಸೆಸ್ಗಳ ನಡುವಿನ ಸಂವಹನಕ್ಕಾಗಿ ಒಂದು ಬಹುಮುಖ ಯಾಂತ್ರಿಕತೆ. ಕ್ಲೈಂಟ್-ಸರ್ವರ್ ಅಪ್ಲಿಕೇಶನ್ಗಳು ಮತ್ತು ವಿತರಿಸಿದ ಸಿಸ್ಟಮ್ಗಳಿಗೆ ಬಳಸಲಾಗುತ್ತದೆ.
- ಸಿಗ್ನಲ್ಸ್: ಒಂದು ಪ್ರೊಸೆಸ್ಗೆ ಘಟನೆಯನ್ನು ತಿಳಿಸಲು ಕಳುಹಿಸಬಹುದಾದ ಸಾಫ್ಟ್ವೇರ್ ಇಂಟರಪ್ಟ್ (ಉದಾ., ಮುಕ್ತಾಯ ವಿನಂತಿ, ದೋಷ ಸ್ಥಿತಿ).
ಉದಾಹರಣೆ: ಒಂದು ವೆಬ್ ಸರ್ವರ್ ಏಕಕಾಲದಲ್ಲಿ ಬರುವ ವಿನಂತಿಗಳನ್ನು ನಿರ್ವಹಿಸಲು ಅನೇಕ ಪ್ರೊಸೆಸ್ಗಳನ್ನು ಬಳಸಬಹುದು. ಪ್ರತಿಯೊಂದು ಪ್ರೊಸೆಸ್ ಒಂದೇ ವಿನಂತಿಯನ್ನು ನಿಭಾಯಿಸಬಹುದು, ಮತ್ತು ಸರ್ವರ್ನ ಸ್ಥಿತಿಯ ಬಗ್ಗೆ ಡೇಟಾವನ್ನು ಹಂಚಿಕೊಳ್ಳಲು ಪ್ರೊಸೆಸ್ಗಳು ಶೇರ್ಡ್ ಮೆಮೊರಿ ಅಥವಾ ಮೆಸೇಜ್ ಪಾಸಿಂಗ್ ಬಳಸಿ ಸಂವಹನ ನಡೆಸಬಹುದು.
ಸಿಂಕ್ರೊನೈಸೇಶನ್
ಅನೇಕ ಪ್ರೊಸೆಸ್ಗಳು ಹಂಚಿಕೆಯ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಪ್ರವೇಶಿಸಿದಾಗ, ಡೇಟಾ ಭ್ರಷ್ಟಾಚಾರ ಮತ್ತು ರೇಸ್ ಕಂಡೀಷನ್ಗಳನ್ನು ತಡೆಯಲು ಸಿಂಕ್ರೊನೈಸೇಶನ್ ಅನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳುವುದು ಬಹಳ ಮುಖ್ಯ. ಸಿಂಕ್ರೊನೈಸೇಶನ್ ಯಾಂತ್ರಿಕತೆಗಳು ಪ್ರೊಸೆಸ್ಗಳ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯನ್ನು ಸಂಯೋಜಿಸಲು ಮತ್ತು ಹಂಚಿಕೆಯ ಡೇಟಾವನ್ನು ರಕ್ಷಿಸಲು ಮಾರ್ಗಗಳನ್ನು ಒದಗಿಸುತ್ತವೆ.
ಸಾಮಾನ್ಯ ಸಿಂಕ್ರೊನೈಸೇಶನ್ ತಂತ್ರಗಳು:
- ಮ್ಯೂಟೆಕ್ಸ್ ಲಾಕ್ಸ್: ಕೋಡ್ನ ನಿರ್ಣಾಯಕ ವಿಭಾಗವನ್ನು ರಕ್ಷಿಸಲು ಬಳಸಬಹುದಾದ ಬೈನರಿ ಸೆಮಾಫೋರ್. ಒಂದು ಸಮಯದಲ್ಲಿ ಕೇವಲ ಒಂದು ಪ್ರೊಸೆಸ್ ಮಾತ್ರ ಮ್ಯೂಟೆಕ್ಸ್ ಲಾಕ್ ಅನ್ನು ಹಿಡಿದಿಟ್ಟುಕೊಳ್ಳಬಹುದು.
- ಸೆಮಾಫೋರ್ಸ್: ಸೀಮಿತ ಸಂಖ್ಯೆಯ ಸಂಪನ್ಮೂಲಗಳಿಗೆ ಪ್ರವೇಶವನ್ನು ನಿಯಂತ್ರಿಸಲು ಬಳಸಬಹುದಾದ ಮ್ಯೂಟೆಕ್ಸ್ ಲಾಕ್ಗಳ ಸಾಮಾನ್ಯೀಕರಣ.
- ಮಾನಿಟರ್ಸ್: ಹಂಚಿಕೆಯ ಡೇಟಾ ಮತ್ತು ಅದರ ಮೇಲೆ ಮಾಡಬಹುದಾದ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ಒಳಗೊಂಡಿರುವ ಉನ್ನತ ಮಟ್ಟದ ಸಿಂಕ್ರೊನೈಸೇಶನ್ ರಚನೆ. ಮ್ಯೂಚುಯಲ್ ಎಕ್ಸ್ಕ್ಲೂಶನ್ ಮತ್ತು ಕಾಯುವಿಕೆ ಮತ್ತು ಸಿಗ್ನಲಿಂಗ್ಗಾಗಿ ಕಂಡೀಷನ್ ವೇರಿಯಬಲ್ಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ.
- ಕಂಡೀಷನ್ ವೇರಿಯಬಲ್ಸ್: ಮಾನಿಟರ್ಗಳೊಳಗೆ ಪ್ರೊಸೆಸ್ಗಳು ನಿರ್ದಿಷ್ಟ ಸ್ಥಿತಿಯು ನಿಜವಾಗಲು ಕಾಯಲು ಅನುವು ಮಾಡಿಕೊಡಲು ಬಳಸಲಾಗುತ್ತದೆ.
- ಸ್ಪಿನ್ಲಾಕ್ಸ್: ಒಂದು ರೀತಿಯ ಲಾಕ್, ಅಲ್ಲಿ ಒಂದು ಪ್ರೊಸೆಸ್ ಲಾಕ್ ಲಭ್ಯವಿದೆಯೇ ಎಂದು ಪದೇ ಪದೇ ಪರಿಶೀಲಿಸುತ್ತದೆ. ಚಿಕ್ಕ ನಿರ್ಣಾಯಕ ವಿಭಾಗಗಳಿಗೆ ಸಮರ್ಥವಾಗಿರಬಹುದು, ಆದರೆ ಲಾಕ್ ದೀರ್ಘಕಾಲ ಹಿಡಿದಿದ್ದರೆ ಸಿಪಿಯು ಸಮಯವನ್ನು ವ್ಯರ್ಥ ಮಾಡುತ್ತದೆ.
ಉದಾಹರಣೆ: ಅನೇಕ ಪ್ರೊಸೆಸ್ಗಳಿಂದ ಹೆಚ್ಚಿಸಲ್ಪಡುವ ಹಂಚಿಕೆಯ ಕೌಂಟರ್ ಅನ್ನು ಪರಿಗಣಿಸಿ. ಸಿಂಕ್ರೊನೈಸೇಶನ್ ಇಲ್ಲದೆ, ಅನೇಕ ಪ್ರೊಸೆಸ್ಗಳು ಕೌಂಟರ್ನ ಮೌಲ್ಯವನ್ನು ಓದಿ, ಅದನ್ನು ಹೆಚ್ಚಿಸಿ, ಮತ್ತು ಅದನ್ನು ಮತ್ತೆ ಬರೆಯಬಹುದು, ಇದು ತಪ್ಪಾದ ಫಲಿತಾಂಶಗಳಿಗೆ ಕಾರಣವಾಗುತ್ತದೆ. ಹೆಚ್ಚಿಸುವ ಕಾರ್ಯಾಚರಣೆಯನ್ನು ರಕ್ಷಿಸಲು ಮ್ಯೂಟೆಕ್ಸ್ ಲಾಕ್ ಅನ್ನು ಬಳಸುವುದು ಒಂದು ಸಮಯದಲ್ಲಿ ಕೇವಲ ಒಂದು ಪ್ರೊಸೆಸ್ ಮಾತ್ರ ಕೌಂಟರ್ ಅನ್ನು ಪ್ರವೇಶಿಸಬಹುದೆಂದು ಖಚಿತಪಡಿಸುತ್ತದೆ, ರೇಸ್ ಕಂಡೀಷನ್ಗಳನ್ನು ತಡೆಯುತ್ತದೆ.
ಡೆಡ್ಲಾಕ್
ಡೆಡ್ಲಾಕ್ ಎನ್ನುವುದು ಎರಡು ಅಥವಾ ಹೆಚ್ಚು ಪ್ರೊಸೆಸ್ಗಳು ಅನಿರ್ದಿಷ್ಟವಾಗಿ ನಿರ್ಬಂಧಿಸಲ್ಪಟ್ಟಾಗ ಸಂಭವಿಸುತ್ತದೆ, ಪ್ರತಿಯೊಂದೂ ಇನ್ನೊಂದರಿಂದ ಹಿಡಿದಿರುವ ಸಂಪನ್ಮೂಲಕ್ಕಾಗಿ ಕಾಯುತ್ತಿರುತ್ತದೆ. ಇದು ಸಿಸ್ಟಮ್ ಅನ್ನು ಸ್ಥಗಿತಗೊಳಿಸಬಹುದಾದ ಗಂಭೀರ ಸಮಸ್ಯೆಯಾಗಿದೆ.
ಡೆಡ್ಲಾಕ್ಗಾಗಿನ ಷರತ್ತುಗಳು:
ಡೆಡ್ಲಾಕ್ ಸಂಭವಿಸಲು ನಾಲ್ಕು ಷರತ್ತುಗಳು ಏಕಕಾಲದಲ್ಲಿ ಪೂರೈಸಲ್ಪಡಬೇಕು (ಕಾಫ್ಮನ್ ಷರತ್ತುಗಳು):
- ಮ್ಯೂಚುಯಲ್ ಎಕ್ಸ್ಕ್ಲೂಶನ್: ಕನಿಷ್ಠ ಒಂದು ಸಂಪನ್ಮೂಲವನ್ನು ಹಂಚಿಕೊಳ್ಳಲಾಗದ ರೀತಿಯಲ್ಲಿ ಹಿಡಿದಿರಬೇಕು; ಅಂದರೆ, ಒಂದು ಸಮಯದಲ್ಲಿ ಕೇವಲ ಒಂದು ಪ್ರೊಸೆಸ್ ಮಾತ್ರ ಸಂಪನ್ಮೂಲವನ್ನು ಬಳಸಬಹುದು.
- ಹೋಲ್ಡ್ ಮತ್ತು ವೇಟ್: ಒಂದು ಪ್ರೊಸೆಸ್ ಕನಿಷ್ಠ ಒಂದು ಸಂಪನ್ಮೂಲವನ್ನು ಹಿಡಿದಿರಬೇಕು ಮತ್ತು ಪ್ರಸ್ತುತ ಇತರ ಪ್ರೊಸೆಸ್ಗಳಿಂದ ಹಿಡಿದಿರುವ ಹೆಚ್ಚುವರಿ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಪಡೆಯಲು ಕಾಯುತ್ತಿರಬೇಕು.
- ನೋ ಪ್ರಿಂಪ್ಷನ್: ಸಂಪನ್ಮೂಲಗಳನ್ನು ಒಂದು ಪ್ರೊಸೆಸ್ನಿಂದ ಬಲವಂತವಾಗಿ ತೆಗೆದುಹಾಕಲಾಗುವುದಿಲ್ಲ; ಸಂಪನ್ಮೂಲವನ್ನು ಅದನ್ನು ಹಿಡಿದಿರುವ ಪ್ರೊಸೆಸ್ನಿಂದ ಸ್ವಯಂಪ್ರೇರಿತವಾಗಿ ಮಾತ್ರ ಬಿಡುಗಡೆ ಮಾಡಬಹುದು.
- ಸರ್ಕ್ಯುಲರ್ ವೇಟ್: ಕಾಯುತ್ತಿರುವ ಪ್ರೊಸೆಸ್ಗಳ ಒಂದು ಸೆಟ್ {P0, P1, ..., Pn} ಅಸ್ತಿತ್ವದಲ್ಲಿರಬೇಕು, ಅಂದರೆ P0, P1 ಹಿಡಿದಿರುವ ಸಂಪನ್ಮೂಲಕ್ಕಾಗಿ ಕಾಯುತ್ತಿರುತ್ತದೆ, P1, P2 ಹಿಡಿದಿರುವ ಸಂಪನ್ಮೂಲಕ್ಕಾಗಿ ಕಾಯುತ್ತಿರುತ್ತದೆ, ..., Pn-1, Pn ಹಿಡಿದಿರುವ ಸಂಪನ್ಮೂಲಕ್ಕಾಗಿ ಕಾಯುತ್ತಿರುತ್ತದೆ, ಮತ್ತು Pn, P0 ಹಿಡಿದಿರುವ ಸಂಪನ್ಮೂಲಕ್ಕಾಗಿ ಕಾಯುತ್ತಿರುತ್ತದೆ.
ಡೆಡ್ಲಾಕ್ ನಿರ್ವಹಣಾ ತಂತ್ರಗಳು:
ಡೆಡ್ಲಾಕ್ಗಳನ್ನು ನಿಭಾಯಿಸಲು ಹಲವಾರು ವಿಧಾನಗಳಿವೆ:
- ಡೆಡ್ಲಾಕ್ ತಡೆಗಟ್ಟುವಿಕೆ: ಕಾಫ್ಮನ್ ಷರತ್ತುಗಳಲ್ಲಿ ಕನಿಷ್ಠ ಒಂದಾದರೂ ಪೂರೈಸದಂತೆ ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ. ಉದಾಹರಣೆಗೆ, ಪ್ರೊಸೆಸ್ಗಳು ಎಲ್ಲಾ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಒಂದೇ ಬಾರಿಗೆ ವಿನಂತಿಸಬೇಕೆಂದು ಅಥವಾ ಸಂಪನ್ಮೂಲಗಳ ಪ್ರಿಂಪ್ಷನ್ಗೆ ಅನುಮತಿಸುವುದು.
- ಡೆಡ್ಲಾಕ್ ತಪ್ಪಿಸುವಿಕೆ: ಡೆಡ್ಲಾಕ್ ಸ್ಥಿತಿಯನ್ನು ಪ್ರವೇಶಿಸುವುದನ್ನು ತಪ್ಪಿಸಲು ಸಂಪನ್ಮೂಲ ಹಂಚಿಕೆಯ ಬಗ್ಗೆ ಮಾಹಿತಿಯನ್ನು ಬಳಸಿ. ಬ್ಯಾಂಕರ್ಸ್ ಅಲ್ಗಾರಿದಮ್ ಒಂದು ಸಾಮಾನ್ಯ ಉದಾಹರಣೆಯಾಗಿದೆ.
- ಡೆಡ್ಲಾಕ್ ಪತ್ತೆ ಮತ್ತು ಚೇತರಿಕೆ: ಡೆಡ್ಲಾಕ್ಗಳು ಸಂಭವಿಸಲು ಅನುಮತಿಸಿ, ನಂತರ ಅವುಗಳನ್ನು ಪತ್ತೆಹಚ್ಚಿ ಮತ್ತು ಚೇತರಿಸಿಕೊಳ್ಳಿ. ಚೇತರಿಕೆಯು ಪ್ರೊಸೆಸ್ಗಳನ್ನು ಮುಕ್ತಾಯಗೊಳಿಸುವುದು ಅಥವಾ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಪ್ರಿಂಪ್ಷನ್ ಮಾಡುವುದನ್ನು ಒಳಗೊಂಡಿರಬಹುದು.
- ಡೆಡ್ಲಾಕ್ ನಿರ್ಲಕ್ಷ್ಯ: ಸಮಸ್ಯೆಯನ್ನು ನಿರ್ಲಕ್ಷಿಸಿ ಮತ್ತು ಅದು ಸಂಭವಿಸುವುದಿಲ್ಲ ಎಂದು ಭಾವಿಸುವುದು. ವಿಂಡೋಸ್ ಮತ್ತು ಲಿನಕ್ಸ್ ಸೇರಿದಂತೆ ಹೆಚ್ಚಿನ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ಗಳು ಈ ವಿಧಾನವನ್ನು ಅನುಸರಿಸುತ್ತವೆ, ಏಕೆಂದರೆ ಡೆಡ್ಲಾಕ್ ತಡೆಗಟ್ಟುವಿಕೆ ಮತ್ತು ತಪ್ಪಿಸುವಿಕೆ ದುಬಾರಿಯಾಗಬಹುದು.
ಉದಾಹರಣೆ: ಎರಡು ಪ್ರೊಸೆಸ್ಗಳು, P1 ಮತ್ತು P2, ಮತ್ತು ಎರಡು ಸಂಪನ್ಮೂಲಗಳು, R1 ಮತ್ತು R2 ಅನ್ನು ಪರಿಗಣಿಸಿ. P1, R1 ಅನ್ನು ಹಿಡಿದಿದೆ ಮತ್ತು R2 ಗಾಗಿ ಕಾಯುತ್ತಿದೆ, ಆದರೆ P2, R2 ಅನ್ನು ಹಿಡಿದಿದೆ ಮತ್ತು R1 ಗಾಗಿ ಕಾಯುತ್ತಿದೆ. ಇದು ಒಂದು ಸರ್ಕ್ಯುಲರ್ ವೇಟ್ ಅನ್ನು ಸೃಷ್ಟಿಸುತ್ತದೆ, ಇದು ಡೆಡ್ಲಾಕ್ಗೆ ಕಾರಣವಾಗುತ್ತದೆ. ಈ ಡೆಡ್ಲಾಕ್ ಅನ್ನು ತಡೆಯುವ ಒಂದು ಮಾರ್ಗವೆಂದರೆ, ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯನ್ನು ಪ್ರಾರಂಭಿಸುವ ಮೊದಲು ಪ್ರೊಸೆಸ್ಗಳು ಎಲ್ಲಾ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಒಂದೇ ಬಾರಿಗೆ ವಿನಂತಿಸಬೇಕೆಂದು ಒತ್ತಾಯಿಸುವುದು.
ನೈಜ-ಪ್ರಪಂಚದ ಉದಾಹರಣೆಗಳು
ಪ್ರೊಸೆಸ್ ನಿರ್ವಹಣೆಯ ಪರಿಕಲ್ಪನೆಗಳು ವಿಶ್ವಾದ್ಯಂತ ವಿವಿಧ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ಗಳಲ್ಲಿ ಬಳಸಲ್ಪಡುತ್ತವೆ:
- ಲಿನಕ್ಸ್: ಕಂಪ್ಲೀಟ್ಲಿ ಫೇರ್ ಶೆಡ್ಯೂಲರ್ (CFS) ಎಂಬ ಅತ್ಯಾಧುನಿಕ ಶೆಡ್ಯೂಲಿಂಗ್ ಅಲ್ಗಾರಿದಮ್ ಅನ್ನು ಬಳಸುತ್ತದೆ, ಇದು ಎಲ್ಲಾ ಪ್ರೊಸೆಸ್ಗಳಿಗೆ ನ್ಯಾಯಯುತ ಸಿಪಿಯು ಹಂಚಿಕೆಯನ್ನು ಒದಗಿಸುವ ಗುರಿಯನ್ನು ಹೊಂದಿದೆ.
- ವಿಂಡೋಸ್: ಅನೇಕ ಪ್ರಿಯಾರಿಟಿ ಮಟ್ಟಗಳೊಂದಿಗೆ ಪ್ರಿಯಾರಿಟಿ-ಆಧಾರಿತ ಶೆಡ್ಯೂಲಿಂಗ್ ಅಲ್ಗಾರಿದಮ್ ಅನ್ನು ಬಳಸುತ್ತದೆ.
- ಮ್ಯಾಕ್ಓಎಸ್: ಪ್ರಿಯಾರಿಟಿ-ಆಧಾರಿತ ಶೆಡ್ಯೂಲಿಂಗ್ ಅನ್ನು ಟೈಮ್-ಸ್ಲೈಸಿಂಗ್ನೊಂದಿಗೆ ಸಂಯೋಜಿಸುವ ಹೈಬ್ರಿಡ್ ವಿಧಾನವನ್ನು ಬಳಸುತ್ತದೆ.
- ಆಂಡ್ರಾಯ್ಡ್: ಲಿನಕ್ಸ್ ಕರ್ನಲ್ ಮೇಲೆ ನಿರ್ಮಿಸಲಾಗಿದೆ, ಇದು ಮೊಬೈಲ್ ಸಾಧನಗಳಿಗೆ ಹೊಂದುವಂತೆ ಇದೇ ರೀತಿಯ ಪ್ರೊಸೆಸ್ ನಿರ್ವಹಣಾ ತಂತ್ರಗಳನ್ನು ಬಳಸುತ್ತದೆ.
- ರಿಯಲ್-ಟೈಮ್ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ಸ್ (RTOS): ಎಂಬೆಡೆಡ್ ಸಿಸ್ಟಮ್ಸ್ ಮತ್ತು ನಿರ್ಣಾಯಕ ಅಪ್ಲಿಕೇಶನ್ಗಳಲ್ಲಿ ಬಳಸಲಾಗುತ್ತದೆ, ಇವುಗಳು ಸಾಮಾನ್ಯವಾಗಿ ಕಾರ್ಯಗಳ ಸಮಯೋಚಿತ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯನ್ನು ಖಾತರಿಪಡಿಸುವ ವಿಶೇಷ ಶೆಡ್ಯೂಲಿಂಗ್ ಅಲ್ಗಾರಿದಮ್ಗಳನ್ನು ಬಳಸುತ್ತವೆ. ಉದಾಹರಣೆಗಳಲ್ಲಿ VxWorks ಮತ್ತು FreeRTOS ಸೇರಿವೆ.
ತೀರ್ಮಾನ
ಪ್ರೊಸೆಸ್ ನಿರ್ವಹಣೆಯು ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ಗಳ ಒಂದು ನಿರ್ಣಾಯಕ ಅಂಶವಾಗಿದ್ದು, ಇದು ಮಲ್ಟಿಟಾಸ್ಕಿಂಗ್, ಸಂಪನ್ಮೂಲ ಹಂಚಿಕೆ ಮತ್ತು ಸಮರ್ಥ ಸಿಸ್ಟಮ್ ಬಳಕೆಯನ್ನು ಸಾಧ್ಯವಾಗಿಸುತ್ತದೆ. ಈ ಮಾರ್ಗದರ್ಶಿಯಲ್ಲಿ ಚರ್ಚಿಸಲಾದ ಪರಿಕಲ್ಪನೆಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವ, ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸುವ ಅಥವಾ ಸಿಸ್ಟಮ್ಗಳನ್ನು ನಿರ್ವಹಿಸುವ ಯಾರಿಗಾದರೂ ಅತ್ಯಗತ್ಯ. ಪ್ರೊಸೆಸ್ ಸ್ಥಿತಿಗಳು, ಶೆಡ್ಯೂಲಿಂಗ್ ಅಲ್ಗಾರಿದಮ್ಗಳು, ಅಂತರ-ಪ್ರೊಸೆಸ್ ಸಂವಹನ ಮತ್ತು ಡೆಡ್ಲಾಕ್ ನಿರ್ವಹಣೆಯನ್ನು ಕರಗತ ಮಾಡಿಕೊಳ್ಳುವ ಮೂಲಕ, ನೀವು ಹೆಚ್ಚು ದೃಢವಾದ, ಸಮರ್ಥ ಮತ್ತು ವಿಶ್ವಾಸಾರ್ಹ ಸಾಫ್ಟ್ವೇರ್ ಸಿಸ್ಟಮ್ಗಳನ್ನು ನಿರ್ಮಿಸಬಹುದು. ವಿಭಿನ್ನ ವಿಧಾನಗಳ ನಡುವಿನ ವಿನಿಮಯಗಳನ್ನು ಪರಿಗಣಿಸಲು ಮತ್ತು ನಿಮ್ಮ ನಿರ್ದಿಷ್ಟ ಅಗತ್ಯಗಳಿಗೆ ಉತ್ತಮವಾಗಿ ಸರಿಹೊಂದುವ ತಂತ್ರಗಳನ್ನು ಆಯ್ಕೆ ಮಾಡಲು ಮರೆಯದಿರಿ.
ಹೆಚ್ಚಿನ ಕಲಿಕೆ
ಪ್ರೊಸೆಸ್ ನಿರ್ವಹಣೆಯ ಬಗ್ಗೆ ನಿಮ್ಮ ತಿಳುವಳಿಕೆಯನ್ನು ಇನ್ನಷ್ಟು ಆಳವಾಗಿಸಲು, ಈ ಕೆಳಗಿನ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಅನ್ವೇಷಿಸುವುದನ್ನು ಪರಿಗಣಿಸಿ:
- ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ ಕಾನ್ಸೆಪ್ಟ್ಸ್, ಅಬ್ರಹಾಂ ಸಿಲ್ಬರ್ಸ್ಕಾಟ್ಜ್, ಪೀಟರ್ ಬೇರ್ ಗಾಲ್ವಿನ್, ಮತ್ತು ಗ್ರೆಗ್ ಗಾಗ್ನೆ ಅವರಿಂದ
- ಮಾಡರ್ನ್ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ಸ್, ಆಂಡ್ರ್ಯೂ ಎಸ್. ಟ್ಯಾನೆನ್ಬಾಮ್ ಅವರಿಂದ
- Coursera, edX, ಮತ್ತು Udacity ನಂತಹ ವೇದಿಕೆಗಳಿಂದ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ಗಳ ಕುರಿತಾದ ಆನ್ಲೈನ್ ಕೋರ್ಸ್ಗಳು ಮತ್ತು ಟ್ಯುಟೋರಿಯಲ್ಗಳು.
- ನಿಮ್ಮ ಆಯ್ಕೆಯ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ನ ದಸ್ತಾವೇಜನ್ನು (ಉದಾ., ಲಿನಕ್ಸ್ ಮ್ಯಾನ್ ಪೇಜ್ಗಳು, ವಿಂಡೋಸ್ API ದಸ್ತಾವೇಜನ್ನು).