2023. 3. 25. 18:46ãCS/CS ì€í°ë
íëì ë€ìŽì PCì 컎íší ì±ë¥ìŽ ìŠê°íê³ , ìŽì ë°ëŒ ëìì ì¬ë¬ íë¡ê·žëšì ëì ì¬ì©íë ìŒìŽ ìŠë€.
ìŽì첎ì ì ì¥ììë ëìë€ë°ì ìŒë¡ ì¬ì©ëê³ ìë íë¡ìžì€ë€ì ëíŽ,
ë¹ë¡ CPU ìœìŽê° íëëŒì í ë²ì íëì íë¡ìžì€ ë§ì ì€íìí¬ ì ìë ìí©ìŒì§ëŒë,
ì¬ì©ìë¡ íì¬êž 몚ë íë¡ìžì€ë€ìŽ ë³ë ¬ì ìŒë¡ ì€íëê³ ìë€ë ì°©ê°ì ë¶ë¬ìŒìŒí¬ ì ììŽìŒ íë€.
ë§ìœ PC륌 íµíŽ ìì ì ë€ìŒë©Žì ì¹ìíì íë ìí©ìì,
ìì ì í늬ìŒìŽì ìŽ ì€íëë ëì ê²ìì°œì íìŽíìŽ ìëë€ë©Ž ìŽë ìŽì첎ì ì ìí ì ì ëë¡ ìííê³ ìì§ ìì ê²ìŽë€.
ìŽë¥Œ ìíŽ, ìŽì첎ì ë CPU륌 í ë¹í ìì ë€ì ëí ì€ìŒì€ë§ì ìííë€.
ëšìí ì€ìŒì€ë§ì ìíìí€ë ëšê³ë¥Œ ëìŽ, ìŽë¥Œ ì ìíí ì ììŽìŒ íë€.
ì€ìŒì€ë§ì íê° í목
ê·žë ë€ë©Ž ìŽë»ê² ì€ìŒì€ë§ì íŽìŒ ìŽë¥Œ ì ìííë€ê³ í ì ììê¹?
ìŽë€ ì€ìŒì€ë§ êž°ë²ë€ìŽ ì¡Žì¬íëì§ ìì볎Ʞì ìì,
ì€ìŒì€ë§ìì íì©ëë ë€ìí íê° í목ì ëí ìŽíŽê° íìíë€.
ëíì ìž ì€ìŒì€ë§ì íê° í목ìë ë€ìì ììë€ìŽ ì¡Žì¬íë€.
- ë°í ìê°(turnaround time): í¹ì ìì ìŽ ìì 목ë¡ì ëì°©íê³ , íŽë¹ ìì ìŽ ìë£ë ëê¹ì§ ììë ìê°
- ê³µì ì±(fairness): í¹ì íë¡ìžì€ì ì¹ì°ì¹ì§ ìê³ ëªšë íë¡ìžì€ì ê³µì íê² CPUê° í ë¹ëëê°
- ìëµ ìê°(response time): í¹ì ìì ìŽ ìì 목ë¡ì ëì°©íê³ , íŽë¹ ìì ìŽ ì°©ìë ëê¹ì§ ììë ìê°
ê·ž ìžìë CPU ìŽì©ë¥ , ì€ë²í€ë ë±ìŽ ì¶ê°ë¡ ì¡Žì¬íë íŽë¹ êžììë ì 3ê°ì ëíŽìë§ ë€ë£šê³ ì íë€.
ì€ìŒì€ë§ êž°ë²ì ë¶ë¥ êž°ì€
ì€ìŒì€ë§ êž°ë²ë€ì ë€ìí ë¶ë¥ êž°ì€ì ê°ëë€. ê°ëší ìŽë¥Œ 뚌ì ìê°í ë€ ì€ìŒì€ë§ êž°ë²ìë ìŽë€ ê²ë€ìŽ ì¡Žì¬íëì§ ìê°íê² ë€.
ì ì í vs ë¹ì ì í
ì ì ìŽëŒë ë§ì ì믞ë,
ìŽë¯ž CPU륌 í ë¹ë°ì ì¬ì©íê³ ìë í¹ì ìì ì ëíŽ ìŽì첎ì ê° CPUì ì ìŽê¶ì ê°ì žì¬ ì ìëì§ì ëíŽììŽë€.
ë°ëŒì ë¹ì ì íì ë°ëë¡ íë² CPUì ìì ìŽ í ë¹ëë©Ž íŽë¹ ìì ìŽ ëë ëê¹ì§ CPUì ì ìŽê¶ì ìŽì첎ì ê° ëë €ë°ì ì ìë 겜ì°ë¥Œ ë§íë€.
ì ì vs ëì
ì¬êž°ì ì ì 곌 ëì ìŽëŒë ë§ì ëìì ê° íë¡ìžì€ì ì°ì ìì륌 ì믞íë€.
ìŠ ì ì ë°©ìììë íë² ê²°ì ë íë¡ìžì€ì ì°ì ììê° ë³ê²œëì§ ìë ê²ìŽê³ ,
ë°ëë¡ ëì ë°©ìììë íë² ê²°ì ë íë¡ìžì€ì ì°ì ììë ìŽí ë³ê²œë ì ìë€.
ëšìŒ ëêž°ìŽ(queue) vs ë€ì€ ëêž°ìŽ
ìŽë ë§ ê·žëë¡ íë¡ìžì€ë€ì ëêž°ìŽìŽ íëìžì§ ìëë©Ž ì¬ë¬ ê°ìžì§ì ëí ì¬ë¶ìŽë€.
ì€ìŒì€ë§ êž°ë²ì ì¢ ë¥
ì€ìŒì€ë§ êž°ë²ìë ë€ìì êž°ë²ë€ìŽ ì¡Žì¬íë€.
- FCFS ì€ìŒì€ë§
- SJF ì€ìŒì€ë§
- STCF ì€ìŒì€ë§
- RR ì€ìŒì€ë§
- MLFQ ì€ìŒì€ë§
- CFS ì€ìŒì€ë§
FCFS ì€ìŒì€ë§(FIFO)
First Come First Servedì ìœìë¡, ì믞 ê·žëë¡ ëšŒì ë€ìŽìš ìì ììëë¡ ìì ì ìíìí€ë ê²ì ë§íë€.
íŽë¹ ë°©ìì 뚌ì ë€ìŽìš ìì ìŽ ëë ëê¹ì§ ë€ë¥ž ìì ì ììíì§ ìë ë¹ì ì í ì€ìŒì€ë§ìŽê³ ,
íë¡ìžì€ ê° ì°ì ììê° ë³íì§ ìë ì ì ì€ìŒì€ë§ìŽë©°, ëšìŒ ëêž°ìŽ ì€ìŒì€ë§ìŽë€.
뚌ì ë€ìŽìš ìì ì ìµì°ì ìŒë¡ ìííë ê²ì ìŒí볎Ʞìë íë¹íŽ 볎ìŽê³ ê³µì ì±ì ìž¡ë©Žììë 묞ì ê° ììŽ ë³ŽìŽì§ë§,
ë§ìœ 뚌ì ë€ìŽìš ìì ìŽ ë€ë¥ž ìì ì ë¹íŽ 곌ëíê² ë©ì¹ê° í° ê²œì° ë¬žì ê° ë ì ìë€.
CPU ì€ìŒì€ë§ì êŽì ìì ê³µì ì±ìŽë ê²°êµ ëªšë íë¡ìžì€ë€ìŽ ë¹ì·í ìì€ìŒë¡ CPU륌 ì¬ì©í ì ìë ê²ìŽêž° ë묞ì,
뚌ì ë€ìŽìš ìì ìŽ ë€ë¥ž ìì ì ë¹íŽ ë©ì¹ì ì°šìŽê° ì¡Žì¬íë€ë©Ž ë€ì ë€ìŽìš ìì ì CPU륌 ê±°ì í ë¹ë°ì§ 못í ìë ìë€.
ìŽë¬í ìí©ì Convoy EffectëŒê³ íëë°
íŽë¹ ìí©ììë ë°í ìê°ê³Œ ìëµ ìê°ì ìž¡ë©Žììë ì±ë¥ì 볎ì¥íêž°ê° ìŽë µë€.
ë°ëŒì íŽë¹ ë°©ìì ëšìíê³ êµ¬ííêž° ìœë€ë ì¥ì ìŽ ìììë ì ì¬ì©ëì§ ìë ë°©ììŽë€.
SJF ì€ìŒì€ë§
Shortest Job Firstì ìœìë¡, ë§ ê·žëë¡ ê°ì¥ 짧ì ìì ì 뚌ì ìííë ê²ì ì믞íë€.
íŽë¹ ë°©ìì ëšìŒ ëêž°ìŽë¡ 구íëë€.
ëí íŽë¹ ë°©ìì ìŒë°ì ìŒë¡ ë¹ì ì íìŒë¡ 구íëë©°,
íë¡ìžì€ì ì°ì ììê° ê° íë¡ìžì€ì CPU ì¬ì© ìê°(CPU burst time)ì ëí ììž¡ì¹ë¡ ê²°ì ëë ëì ì€ìŒì€ë§ êž°ë²ìŽë€.
SJF ì€ìŒì€ë§ì 몚ë ìì ìŽ ëìì ëêž°ìŽì ë€ìŽì€ë ìí©ììë ìëµ ìê°, ê³µì ì±ì íê° êž°ì€ ì ìµì ì êž°ë²ìŽì§ë§,
íì€ì ìí©ì ê·žë ì§ ìë€.
ë°ëŒì 뚌ì ë©ì¹ê° í° ìì ìŽ ë€ìŽìš ë€ì, ìì°šì ìŒë¡ 짧ì ìì ìŽ ë€ìŽìšë€ë©Ž
FCFS ì€ìŒì€ë§ìì ë°ìíë Convoy Effectê° ëìŒíê² ë°ìíë€.
ëí ê° ìì ì CPU burst timeì ì ííê² ììž¡í ì ìë€ë 묞ì ì ë ì¡Žì¬íë€.
STCF ì€ìŒì€ë§
Shortest Time-to-Completion Firstì ìœìë¡,
íì¬ ëêž°ìŽì ì¡Žì¬íë ìì ë€ ì€ ìë£ê¹ì§ ìì¬ ìê°ìŽ ê°ì¥ 짧ì ìì ì ì°ì ìŒë¡ ìíìíšë€.
íŽë¹ ë°©ìì ìíŽìë í¹ì íë¡ìžì€ê° ì€íëë ìì€ìë ìžì ë ì§ ìì¬ ìê°ìŽ ê°ì¥ 짧ì ìì ìŒë¡ ë첎ë ì ììŽìŒ íêž° ë묞ì
ì ì ë°©ìì ì€ìŒì€ë§ìŒë¡ 구ííŽìŒ íë€.
ëí ìì ì ì°ì ììê° ì€ìê°ìŒë¡ ë³ê²œë ì ìë ëì ì€ìŒì€ë§ìŽë©Žì ëšìŒ ëêž°ìŽì ê°ë ì€ìŒì€ë§ìŽë€.
íŽë¹ ë°©ìì SJF ì€ìŒì€ë§ê³Œ ë¬ëŠ¬, 몚ë ìì ìŽ ëìì ëêž°ìŽì í¬íšëì§ ìëëŒë,
ë°í ìê°ê³Œ ê³µì ì± ë§ì ê³ ë €íì ëë ì ë§ íë¥í ë°©ììŽë€.
íì§ë§ ìëµ ìê°ì ê³ ë €íì ëë ìŽìŒêž°ê° ë¬ëŒì§ë€.
ìì¬ ìê°ìŽ ìëì ìŒë¡ ꞎ ìì ë€ì CPU륌 ì ì íêž° ìíŽìë ì€ë ëêž° ìê°ì ê°ì žìŒ íê³ ,
ìŽë ìŽë¯ž ììì ìžêží 몚ë ì€ìŒì€ë§ ë°©ìììë ëìŒíê² ë°ìíë 묞ì ìŽë€.
ë°ëŒì ìëµ ìê° êŽì ììë ìŽë¯ž ìê°ë ì€ìŒì€ë§ ë°©ìë€ì 몚ë ì¢ì ë°©ìì ìëë€.
RR ì€ìŒì€ë§
Round-Robinì ìœìë¡,
íŽë¹ ë°©ìì ì¬ì ì íì íí ê°ìŽëŒê³ ë¶ëŠ¬ë ìê° ê°ì ì€ì í í 몚ë ëêž°ìŽ ëŽ íë¡ìžì€ë€ì ëíŽ
íì íí ë§íŒì©ë§ CPU륌 ì ì íê² íë ë°©ìì ì¬ì©íë€.
ëêž°ìŽ ëŽ ì¡Žì¬íë 몚ë ìì ë€ìŽ íì ê¶í ê°ë§íŒ í ë²ì© ìíëê³ ëë©Ž,
ììì ìžêží 곌ì ì ê³ìíŽì ìííë€.
ìì ê°ìŽ ëìíë íŽë¹ ë°©ìì í¹ì±ì ì ì íìŽë©° ì ì ìŽê³ , ëšìŒ ëêž°ìŽ ì€ìŒì€ë§ìŽë€.
íŽë¹ ë°©ìì ê³µì ì±ì ìž¡ë©Žìì 볎ìì ë ì ë§ íë¥í ë°©ììŽë€.
ëí ìëµ ìê°ì ìž¡ë©Žììë, ììì ìŽë¯ž ìžêží ì€ìŒì€ë§ ë°©ìë€ì ë¹íŽ íšì¬ ëì ë°©ììŽë€.
ë€ë§, ë°í ìê°ì ìž¡ë©Žìì 볎ìì ëë ê±°ì ìµì ìŽë€.
ìŒë°ì ìŒë¡ ê³µì ì±ì ì°ì ìíë ë°©ìììë ë°í ìê°ê³Œ ê°ì íê° ì²ëë ëìê² ëì¬ ìë°ì ìêž° ë묞ì ë°ìíë ë¹ì°í 결곌ìŽë€.
íŽë¹ ë°©ìì ëí íì íí ê°ì ìŽë»ê² ì€ì íëëì ë°ëŒì ì±ë¥ìŽ ë¬ëŒì§ë€.
ë§ìœ íì íí ê°ì ìëì ìŒë¡ ìê² ê°ì žê°ë€ë©Ž, íê· ìëµ ìê°ì ëì± ì¢ìì§ ê²ìŽë€.
ë€ë§ íì íí ê°ìŽ ë묎 ììì§ê² ëë©Ž, ìœí ì€íž ì€ìì¹ìŽ ë묎 ì죌 ë°ìíì¬ ì±ë¥ ì ì¢ì§ 못í 결곌륌 ì»ì ì ìë€.
ë°ëŒì ëŒìŽëë¡ë¹ ë°©ìììë íŽë¹ trade-off륌 ê³ ë €íì¬ ì ì í íì íí ê°ì ì€ì íë ê²ìŽ ì€ìíë€.
íŽë¹ ë°©ìì ìì ìžêžíë¯ìŽ ë°í ìê°ì ìž¡ë©Žìì 귞늬 ì¢ì§ 못í ì€ìŒì€ë§ ë°©ììŽì§ë§, ì€ì ë¡ë ë§ìŽ ì°ìŽë ë°©ììŽë€.
ê·ž ìŽì ë¡ë,
íëì 컎íší°ìì ìëµ ìê°ì ê°ì¥ 첎ê°ìŽ ìëë ì±ë¥ ì§í ì€ íëëŒë ì 곌
ë§ ê·žëë¡ ìëì ìŒë¡ ë°í ìê°ìŽ ì ì¢ì ê²ìŽì§ 컎íší êž°ì ì ë°ì ìŒë¡ ì ëì ìŒë¡ë ê·ž ì°šìŽê° 믞믞íë€ë ì ìŽ ìë€.
MLFQ ì€ìŒì€ë§
Multi-level Feedback Queueì ìœìë¡,
íŽë¹ ë°©ìì ê° ìì ì CPU burst timeì ììž¡íêž° ìŽë µë€ë íê³ ììì ìëµ ìê°ê³Œ ë°í ìê°ì ìµì ííêž° ìíŽ ë±ì¥í ë°©ììŽë€.
ìŽëŠìì ì ì ìë¯ìŽ, ë€ì€ ëêž°ìŽì ì¬ì©íë ë°©ììžë° ìŽë ê° ëêž°ìŽì íëì ì°ì ìì륌 ì믞íë€.
ìŠ, ì°ì ìì ë³ë¡ ëêž°ìŽìŽ ì¡Žì¬íë ê²ìŽë€.
ìŽ ë ì°ì ììë ì ì ìŒë¡ ì íŽì ž ìë ê²ìŽ ìë,
ì²ì ìì ìŽ ë€ìŽìì ëë ëì ì°ì ìì륌 ê°ê³ ìë€ê° ì€íìŽ ëšì ë°ëŒ ì ì°š ì°ì ììê° ë®ìì§ë ë°©ìì ì±ííë€.
íŽë¹ ë°©ìì ë€ìì ê·ì¹ì ë°ëŒ ì€ìŒì€ë§ì ìííë€.
- ì°ì ììê° ê°ì¥ ëì íì ì¡Žì¬íë ìì ë¶í° ì€í
- í¹ì íì ì¬ë¬ ê°ì ìì ìŽ ì¡Žì¬íë€ë©Ž, ìŽë RR ë°©ììŒë¡ ì€ìŒì€ë§
- ìë¡ìŽ ìì ìŽ ë€ìŽì€ë©Ž ìŽë¥Œ ì°ì ììê° ê°ì¥ ëì íì ë°°ì¹
- í¹ì ìì ìŽ íì íí ì 몚ë ìì§íì§ ëª»í ì± CPU륌 ë°íí 겜ì°ì êž°ì¡Ž íì ê·žëë¡ ëê³ , íì íí ì 몚ë ìì§í 겜ì°ìë íëšê³ ë®ì íë¡ ìŽë
- ì¬ì ì ì€ì íŽë êž°ê°ìŽ ì§ë ê²œì° ëªšë íì ìì ì ìµìì íë¡ ìŽë(Aging)
ìŽë¥Œ íµíŽ MLFQë ì°ì ìì륌 ê³ ë €íë©Žìë ìì ë€ì ìëµ, ë°í ìê°ì ìµì ííë€.
ëí ë®ì ì°ì ììì ìì ë€ìŽ êž°ì ìíì ë¹ ì§ë ê²ì ê³ ë €íì¬ Aging êž°ë²ì ì¶ê°ì ìŒë¡ ì ì©íì¬ ìŽë¥Œ íŽê²°íë€.
íŽë¹ ë°©ìì ì ì í, ëì , ë€ì€ ëêž°ìŽ ì€ìŒì€ë§ìŒë¡ 볌 ì ìë€.
íŽë¹ ë°©ìì 구íì ëìŽëê° ìë ë°©ììŽì§ë§
ì€ìê°ìŒë¡ ìëµì ìííŽìŒíë ëíí ìì (ex. í€ë³Žë ì ë ¥)ì ëíŽ ëìì§ ìì ì±ë¥ì 볎ìŽê³ ,
ë©ì¹ê° í° ìì ë€ìŽ ì§ìì ìŒë¡ CPU륌 í ë¹ë°ì ì ìê² íë€ë ì ìì
ë§ì ìŽì첎ì ìì ì±ííë ë°©ììŽë€. í¹í, Windows ìŽì첎ì ìì ìŽë¥Œ Ʞ볞 ì€ìŒì€ë¬ë¡ ì¬ì©íë€.
CFS ì€ìŒì€ë§
Completely Fair Schedulerì ìœìë¡, ìŽëŠìì ì ì ìë¯ìŽ íŽë¹ ì€ìŒì€ë§ ë°©ìì ê³µì ì±ì ìµì°ì 목íë¡ ì¡ëë€.
ìŽë¥Œ ìíŽ íŽë¹ ë°©ìììë sched_latencyì min_granularityëŒë ë ë³ì륌 뚌ì ì€ì íë€.
ìŒë°ì ìŒë¡ ë ê°ì ê°ê° 48msì 6ms륌 ê°êž° ë묞ì ìŽë¥Œ êž°ì€ìŒë¡ ì€ëª íê² ë€.
ì¬êž°ìì sched_latencyë íì¬ ëêž°ìŽì ì¡Žì¬íë 몚ë ìì ë€ìŽ ê³µì íë íëì ì¬ìŽíŽ 죌ꞰìŽë€.
ë§ìœ ëêž°ìŽ ëŽ íë¡ìžì€ê° 4ê° ì¡Žì¬íë€ë©Ž, 48ms륌 4ë¡ ëë ê°ê° 12msì© í ë¹ë°ëë€.
ìŽì ê° ìì ì 12msì© ìííê² ëê³ , ê° ìì ìŽ ê°ë vruntimeìŽëŒë ë³ìì ì€í ìê°ì ìë ììŒë¡ ìëíë€.
ìŽ ë ë€ì ìíí ìì ì vruntimeìŽ ê°ì¥ ìì ìì ì ì ííê² ëë€.
ë§ìœ ëêž°ìŽ ëŽ íë¡ìžì€ê° êµì¥í ë§ì ìí©ììë, ê° ìì ìŽ í ë¹ ë°ë ìê°ìŽ êµì¥í 짧ì ê²ìŽë€. ëí 컚í ì€íž ì€ìì¹ìŽ ë ì죌 ë°ìíì¬ ì±ë¥ ì 묞ì ê° ë°ìí ì ìë€.
ìŽë¥Œ ìíŽ ì¡Žì¬íë ê²ìŽ min_granularity ê°ìžë°, ê° ìì ì í ë¹ëë ìê°ìŽ íŽë¹ ê°ë³Žë€ ììì§ëëŒë ì€ìŒì€ë¬ë 묎조걎 min_granularity ê° ë§íŒì ìì ì ìíìíšë€.
CFSê° ê³µì ì±ì ìµì°ì 목íë¡ ì¡êž°ë íë, ê·žë ë€ê³ ì±ë¥ìŽ ê·žë ê² ëìì§ë§ì ìë€.
CFS ë°©ìììë ì±ë¥ì ìíŽ ìì ë€ì Red-Black ížëŠ¬ë¥Œ íµíŽ êŽëŠ¬íëë°, ìŽë¥Œ íµíŽ ì°ê²° 늬ì€ížë¡ ìì ë€ì êŽëŠ¬íë ë€ë¥ž ë°©ì곌 ë¹êµíì¬ íŽë¹ ë¶ìŒìì ë ëì ì±ë¥ì ì»ì ì ììë€. í¹í ì°ê²° 늬ì€íž ë°©ìì ë¹íŽ, íì¥ì±ìŽ ë ë°ìŽëë€.
CFSë ìì ê°ì í¹ì§ë€ì íµíŽ íì¥ì±ê³Œ ì±ë¥ì ìŽëì ë 볎ì¥í ì ììê³ , ìŽì 늬ë ì€ìì Ʞ볞 ì€ì ìŒë¡ ì°ìŽë ì€ìŒì€ë¬ìŽë€.
(nice ì¡°ì ì íµí íë¡ìžì€ ê° í ë¹ ìê° ê°ì€ì¹ ì¡°ì ì êžìŽ ë묎 êžžìŽì§ íì ë€ë£šì§ ìê² ë€.)
ì°žì¡°
OSTEP(Operating System Three Easy Pieces), 2015 - Remzi H. Arpaci-Dusseau, Andrea C. Arpaci-Dusseau
'CS > CS ì€í°ë' 칎í ê³ ëŠ¬ì ë€ë¥ž êž
Race Condition (0) | 2023.03.30 |
---|---|
Mutex & Semaphore (0) | 2023.03.26 |
IPC(Interprocess Communication) (0) | 2023.03.19 |
íë¡ìžì€ ì ìŽ ëžë¡(PCB) (1) | 2023.03.18 |
System Call(ìì€í ìœ) (0) | 2023.03.11 |