º»¹®/³»¿ë
+ Scheduler::FindNextToRun()
▪ read »óÅ¿¡ ÀÖ´Â threadÀ» ¼±ÅÃÇϰí ÀÌ thread¸¦ returnÇÑ´Ù.
▪ FindNextToRun()ÇÔ¼ö´Â ´Ü¼øÈ÷ ready listÀÇ ¾Õ¿¡ ÀÖ´Â thread¸¦ returnÇÑ´Ù.
▪ codeºÐ¼®
- ASSERT()ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¿©¼ (kernel->interrupt->getLevel() == IntOff) °¡ trueÀÏ °æ¿ì
Áï, interrupt°¡ disableÇÏ°Ô µÇ¾úÀ» °æ¿ì °è¼Ó ½ÇÇàÇÑ´Ù.
- ready list¿¡ thread°¡ ¾ø´Ù¸é NULLÀ» returnÇÑ´Ù.
- ready list¿¡ thread°¡ Á¸ÀçÇÑ´Ù¸é readyList->RemoveFront()ÀÇ return°ªÀ» returnÇÑ´Ù.
+ SynchList::RemoveFront()
▪ lock->Acquire()ÇÔ¼ö¸¦ È£ÃâÇÏ¿©¼ listÀÇ mutual exclusive access¸¦ ½Ç½ÃÇÑ´Ù.
▪ ready list°¡ ºñ¿ö ÀÖÁö ¾ÊÀ» ¶§±îÁö ±â´Ù¸°´Ù.
▪ listÀÇ Á¦ÀÏ ¾ÕÀÇ itemÀ» ÃëÇØ¼ itemº¯¼ö¿¡ ÀúÀåÇÑ´Ù.
▪ lock->Release()ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù.
▪ item¸¦ returnÇÑ´Ù.
+ Scheduler::Run(Thread *nextThread, bool finishing)
▪ current thread¸¦ suspendÇÏ°í »õ·Î¿î thread¸¦ switchÇÏ´Â ÀÛ¾÷À» ÇÑ´Ù.
&¡¦(»ý·«)
¼ö¸¦ ÀÌ¿ëÇÏ¿©¼ (kernel->interrupt->getLevel() == IntOff) °¡ trueÀÏ °æ¿ì
Áï, interrupt°¡ disableÇÏ°Ô µÇ¾úÀ» °æ¿ì °è¼Ó ½ÇÇàÇÑ´Ù.
- DEBUG()ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¿© ÀûÀýÇÑ ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÑ´Ù.
- CheckToBeDestroyed()ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù.