<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=LIB_3</id>
	<title>LIB 3 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=LIB_3"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=LIB_3&amp;action=history"/>
	<updated>2026-05-14T18:43:21Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=LIB_3&amp;diff=83362&amp;oldid=prev</id>
		<title>Maintenance script: Repair MoniWiki formatting after migration</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=LIB_3&amp;diff=83362&amp;oldid=prev"/>
		<updated>2026-03-26T14:01:39Z</updated>

		<summary type="html">&lt;p&gt;Repair MoniWiki formatting after migration&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 14:01, 26 March 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;이제는 스케줄링을 담당하는 소스를 살펴 보겠다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;이제는 스케줄링을 담당하는 소스를 살펴 보겠다.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br /&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;우선 내가 만든 프로그램에서 스케줄링을 담당하는 큐는 대략  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;우선 내가 만든 프로그램에서 스케줄링을 담당하는 큐는 대략  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;WAIT 와 SUSPEND 그리고 FREE 큐로 나누어 질 수 있다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;WAIT 와 SUSPEND 그리고 FREE 큐로 나누어 질 수 있다.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;WAIT은 실행 가능하지만 멈춰 진 태스크를 위한 큐&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;WAIT은 실행 가능하지만 멈춰 진 태스크를 위한 큐&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;SUSPEND는 인터럽트를 대기하던가? 아님 뭔가를 기다리기 위해 실행이 중지된 상태? 자원이겠찌?&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;SUSPEND는 인터럽트를 대기하던가? 아님 뭔가를 기다리기 위해 실행이 중지된 상태? 자원이겠찌?&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;그리고 FREE 큐는 메모리상에 존재하지만 죽은 태스크를 담아 놓은 큐.....쯔쯔쯔 불쌍도 해라.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;그리고 FREE 큐는 메모리상에 존재하지만 죽은 태스크를 담아 놓은 큐.....쯔쯔쯔 불쌍도 해라.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br /&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;음..이렇게 나누어지고 WAIT큐의 0번째 태스크가 지금 실행 중인 태스크를 지칭한다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;음..이렇게 나누어지고 WAIT큐의 0번째 태스크가 지금 실행 중인 태스크를 지칭한다.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br /&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;음..여하튼 이렇게 말했으니 그럼 소스를 설명해 볼까?&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;음..여하튼 이렇게 말했으니 그럼 소스를 설명해 볼까?&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  #if !defined(LIB_SCHE_CPP)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  #if !defined(LIB_SCHE_CPP)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l12&quot;&gt;Line 12:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 12:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  /* Init The Scheduler List&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  /* Init The Scheduler List&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  */&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  */&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;이 함수는 스케쥴링을 위한 준비 과정 TCB들을 다 초기화 해 준다.. 겁이 많아서 그냥 다 초기화 해줬다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;이 함수는 스케쥴링을 위한 준비 과정 TCB들을 다 초기화 해 준다.. 겁이 많아서 그냥 다 초기화 해줬다.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br /&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;그리고 나서 지금의 가장 높은 태스크를 스타트 TCB로 지칭해 준다.초기화 끝&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;그리고 나서 지금의 가장 높은 태스크를 스타트 TCB로 지칭해 준다.초기화 끝&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br /&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  void LIB_Init_Schedu(){&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  void LIB_Init_Schedu(){&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  	for (int count = 0;count&amp;amp;lt;LIB_MAX_HEAP;count++) {&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  	for (int count = 0;count&amp;amp;lt;LIB_MAX_HEAP;count++) {&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l239&quot;&gt;Line 239:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 239:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  }&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  }&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  #endif	LIB_SCHE_CPP&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  #endif	LIB_SCHE_CPP&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;음..내가 교수도 아니고 스케쥴링이 오에스에서 가장 중요할 것이다.. 그럼에도 불구하고 허접하다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;음..내가 교수도 아니고 스케쥴링이 오에스에서 가장 중요할 것이다.. 그럼에도 불구하고 허접하다.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br /&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;사실 내가 만든 것과 U_C_OS 와의 실행 속도 차이는 무지하게 크다. 이유는 소스를 보면 알 것이다..&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;사실 내가 만든 것과 U_C_OS 와의 실행 속도 차이는 무지하게 크다. 이유는 소스를 보면 알 것이다..&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br /&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;여하튼..하지만..그래도 내 소스가 더 보기 쉽지 않나?? ㅋㅋㅋㅋㅋ  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;여하튼..하지만..그래도 내 소스가 더 보기 쉽지 않나?? ㅋㅋㅋㅋㅋ &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br /&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;실행속도가 차이는 나지만 그래도 나름대로의 방식으로 만들려고 노력했다..그래서&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;실행속도가 차이는 나지만 그래도 나름대로의 방식으로 만들려고 노력했다..그래서&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br /&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;이모양 이꼴인 오에스가 되었지만............&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;이모양 이꼴인 오에스가 되었지만............&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br /&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;----&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;----&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[REAL_LIBOS]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[REAL_LIBOS]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=LIB_3&amp;diff=34053&amp;oldid=prev</id>
		<title>imported&gt;Unknown at 05:23, 7 February 2021</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=LIB_3&amp;diff=34053&amp;oldid=prev"/>
		<updated>2021-02-07T05:23:37Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;이제는 스케줄링을 담당하는 소스를 살펴 보겠다.&lt;br /&gt;
우선 내가 만든 프로그램에서 스케줄링을 담당하는 큐는 대략 &lt;br /&gt;
WAIT 와 SUSPEND 그리고 FREE 큐로 나누어 질 수 있다.&lt;br /&gt;
WAIT은 실행 가능하지만 멈춰 진 태스크를 위한 큐&lt;br /&gt;
SUSPEND는 인터럽트를 대기하던가? 아님 뭔가를 기다리기 위해 실행이 중지된 상태? 자원이겠찌?&lt;br /&gt;
그리고 FREE 큐는 메모리상에 존재하지만 죽은 태스크를 담아 놓은 큐.....쯔쯔쯔 불쌍도 해라.&lt;br /&gt;
음..이렇게 나누어지고 WAIT큐의 0번째 태스크가 지금 실행 중인 태스크를 지칭한다.&lt;br /&gt;
음..여하튼 이렇게 말했으니 그럼 소스를 설명해 볼까?&lt;br /&gt;
 #if !defined(LIB_SCHE_CPP)&lt;br /&gt;
 #define	LIB_SCHE_CPP&lt;br /&gt;
 &lt;br /&gt;
 /* Init The Scheduler List&lt;br /&gt;
 */&lt;br /&gt;
이 함수는 스케쥴링을 위한 준비 과정 TCB들을 다 초기화 해 준다.. 겁이 많아서 그냥 다 초기화 해줬다.&lt;br /&gt;
그리고 나서 지금의 가장 높은 태스크를 스타트 TCB로 지칭해 준다.초기화 끝&lt;br /&gt;
 void LIB_Init_Schedu(){&lt;br /&gt;
 	for (int count = 0;count&amp;amp;lt;LIB_MAX_HEAP;count++) {&lt;br /&gt;
 		pSuspend_heap[count] = NULL;&lt;br /&gt;
 		pReady_heap[count] = NULL;&lt;br /&gt;
 		pFreeTCB[count] = &amp;amp;amp;TCB[count];&lt;br /&gt;
 		TCB[count].priority = NULL;&lt;br /&gt;
 		TCB[count].StackSeg = NULL;&lt;br /&gt;
 		TCB[count].StackOff = NULL;&lt;br /&gt;
 		TCB[count].NextEvent = NULL;&lt;br /&gt;
 	}&lt;br /&gt;
 	LIB_INT_COUNT = 0;&lt;br /&gt;
 	High_Task = &amp;amp;amp;START_TCB;&lt;br /&gt;
 	ready_tcb_ptr = 0;&lt;br /&gt;
 	suspend_tcb_ptr = 0;&lt;br /&gt;
 	free_tcb_ptr = LIB_MAX_HEAP;&lt;br /&gt;
 }&lt;br /&gt;
여기서는 FREE 큐중에서 쓸 수 있는 큐가 있나 알아본다?? 이건 왜 했찌???&lt;br /&gt;
 /* Get Free TCB&lt;br /&gt;
 */&lt;br /&gt;
 LIB_TCB* LIB_free_TCB() {&lt;br /&gt;
 	LIB_TCB *Temp;&lt;br /&gt;
 	free_tcb_ptr--;&lt;br /&gt;
 	Temp = pFreeTCB[free_tcb_ptr];&lt;br /&gt;
 	pFreeTCB[free_tcb_ptr] = NULL;&lt;br /&gt;
 	return Temp;&lt;br /&gt;
 }&lt;br /&gt;
여기서는 MAIN에서 본 듯 태스크를 만들어 주는 함수&lt;br /&gt;
 /* Create The Task&lt;br /&gt;
 */&lt;br /&gt;
 void LIB_create_task (char *task_name,int priority,void (*task)(void),INT16U * Stack)&lt;br /&gt;
 {&lt;br /&gt;
 	// Init The Stack&lt;br /&gt;
 &lt;br /&gt;
 	LIB_STACK_INIT(task,Stack);  &amp;amp;lt;-------- 스택을 초기화 해준다.....&lt;br /&gt;
 &lt;br /&gt;
 	if ( priority &amp;amp;lt; LIB_MIN_PRIORITY || priority &amp;amp;gt; LIB_MAX_PRIORITY ) return;   &amp;amp;lt;--------- 우선순위가 지랄 같으면 그냥 끝낸다.&lt;br /&gt;
 &lt;br /&gt;
 	// Insert Prio Queue;&lt;br /&gt;
 	pReady_heap[ready_tcb_ptr] = LIB_free_TCB();&lt;br /&gt;
 &lt;br /&gt;
 	// Init the TCB by argument   &amp;amp;lt;----- 함수에서 얻은 변수들로...  초기화...ok???&lt;br /&gt;
 	pReady_heap[ready_tcb_ptr]-&amp;amp;gt;Task_Name = task_name;&lt;br /&gt;
 	pReady_heap[ready_tcb_ptr]-&amp;amp;gt;delay = 0;&lt;br /&gt;
 	pReady_heap[ready_tcb_ptr]-&amp;amp;gt;priority = priority;&lt;br /&gt;
 	pReady_heap[ready_tcb_ptr]-&amp;amp;gt;StackSeg = (INT16U)FP_SEG(Stack);&lt;br /&gt;
 	pReady_heap[ready_tcb_ptr]-&amp;amp;gt;StackOff = INT16U(Stack) - 28;&lt;br /&gt;
 	pReady_heap[ready_tcb_ptr]-&amp;amp;gt;Stack = Stack;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
          /// 여기서 부터는 우선순위 큐를 쓴다.... 열라 간단했는 데...&lt;br /&gt;
          &amp;amp;lt;----- 사실상 우선순위 큐가 몇백번 돈 뒤에도 그 큐의 상태를 유지하는 것이 좀 어려웠다..&lt;br /&gt;
          쉽게 말해 손으로 태스팅 할 때 큐에 태스크를 넣었다 빼면 되는 거 같지만 컴퓨터가 컨텍스트 스위칭을 위해 &lt;br /&gt;
          몇백번 큐에 넣었다 뺐따 할때는 크크 갑자기 뻗는 상황이 재현....&lt;br /&gt;
          -------&amp;amp;gt;&lt;br /&gt;
 	int temp_count = ready_tcb_ptr;&lt;br /&gt;
 	LIB_TCB *Temp_TCB;&lt;br /&gt;
 	ready_tcb_ptr++;&lt;br /&gt;
 	while (1) {&lt;br /&gt;
 		if ( pReady_heap[temp_count]-&amp;amp;gt;priority &amp;amp;gt; pReady_heap[tree_parent(temp_count)]-&amp;amp;gt;priority ){&lt;br /&gt;
 			Temp_TCB = pReady_heap[temp_count];&lt;br /&gt;
 			pReady_heap[temp_count] = pReady_heap[tree_parent(temp_count)];&lt;br /&gt;
 			pReady_heap[tree_parent(temp_count)] = Temp_TCB;&lt;br /&gt;
 			temp_count = tree_parent(temp_count);&lt;br /&gt;
 		}&lt;br /&gt;
 		else {&lt;br /&gt;
 			break;&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
SUSPEND 된 TASK 들을 다시 살려주는 고마운 펑션&lt;br /&gt;
 /* Resume task&lt;br /&gt;
 */&lt;br /&gt;
 void LIB_resume_task(INT16U priority ){&lt;br /&gt;
 	if ( priority == 0 ) return;&lt;br /&gt;
 	LIB_ENTER_CRITICAL();&lt;br /&gt;
 	int temp;&lt;br /&gt;
 	for ( int i = 0; i&amp;amp;lt;= suspend_tcb_ptr ; i++ ) {&lt;br /&gt;
 		if ( pSuspend_heap[i]-&amp;amp;gt;priority == priority ) {&lt;br /&gt;
 			pReady_heap[ready_tcb_ptr] = pSuspend_heap[i];&lt;br /&gt;
 			pSuspend_heap[i] = pSuspend_heap[suspend_tcb_ptr];&lt;br /&gt;
 			pSuspend_heap[suspend_tcb_ptr] = NULL;&lt;br /&gt;
 			suspend_tcb_ptr--;&lt;br /&gt;
 			temp = ready_tcb_ptr;&lt;br /&gt;
 			goto EX_LOOP1;&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 	LIB_VRAM_STRING(0,15,&amp;quot;CAUTION !!!&amp;quot;,0x07);&lt;br /&gt;
 	return;&lt;br /&gt;
 EX_LOOP1:&lt;br /&gt;
 	LIB_TCB *temp_tcb;&lt;br /&gt;
 &lt;br /&gt;
 	while (1) {&lt;br /&gt;
 		if ( pReady_heap[temp]-&amp;amp;gt;priority &amp;amp;gt; pReady_heap[tree_parent(temp)]-&amp;amp;gt;priority ) {&lt;br /&gt;
 			temp_tcb = pReady_heap[tree_parent(temp)];&lt;br /&gt;
 			pReady_heap[tree_parent(temp)] = pReady_heap[temp];&lt;br /&gt;
 			pReady_heap[temp] = temp_tcb;&lt;br /&gt;
 			temp = tree_parent(temp);&lt;br /&gt;
 		}&lt;br /&gt;
 		else break;&lt;br /&gt;
 	}&lt;br /&gt;
 	ready_tcb_ptr++;&lt;br /&gt;
 	LIB_EXIT_CRITICAL();&lt;br /&gt;
 	LIB_context_sw();&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
/// 태스크 서스팬드 하기......넌 이제 좀 쉬어라...&lt;br /&gt;
SUSPEND 큐에 넣어주고&lt;br /&gt;
WAIT 큐에서 빼준다...... 쯔쯔쯔&lt;br /&gt;
 /* Wait task&lt;br /&gt;
 */&lt;br /&gt;
 &lt;br /&gt;
 void LIB_suspend_task(INT16U priority){&lt;br /&gt;
 	LIB_ENTER_CRITICAL();&lt;br /&gt;
 	int temp;&lt;br /&gt;
 	for(int i = 0 ; i &amp;amp;lt;= ready_tcb_ptr ; i++ ) {&lt;br /&gt;
 		if ( pReady_heap[i]-&amp;amp;gt;priority == priority ){&lt;br /&gt;
 			// ready -&amp;amp;gt; suspend&lt;br /&gt;
 			pSuspend_heap[++suspend_tcb_ptr] = pReady_heap[i];&lt;br /&gt;
 			// ready queue sort&lt;br /&gt;
 			pReady_heap[i] = pReady_heap[ready_tcb_ptr-1];&lt;br /&gt;
 			pReady_heap[ready_tcb_ptr-1] = NULL;&lt;br /&gt;
 			temp = i;&lt;br /&gt;
 			ready_tcb_ptr--;&lt;br /&gt;
 			goto EX_LOOP;&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 	LIB_VRAM_STRING(0,15,&amp;quot;CAUTION !!!&amp;quot;,0x07);&lt;br /&gt;
 	return;&lt;br /&gt;
 EX_LOOP:&lt;br /&gt;
 	LIB_TCB *temp_tcb;&lt;br /&gt;
 	while (1) {&lt;br /&gt;
 		if ( pReady_heap[tree_left(temp)]-&amp;amp;gt;priority &amp;amp;gt; pReady_heap[temp]-&amp;amp;gt;priority ) {&lt;br /&gt;
 			temp_tcb = pReady_heap[tree_left(temp)];&lt;br /&gt;
 			pReady_heap[tree_left(temp)] = pReady_heap[temp];&lt;br /&gt;
 			pReady_heap[temp] = temp_tcb;&lt;br /&gt;
 			temp = tree_left(temp);&lt;br /&gt;
 		}&lt;br /&gt;
 		else if ( pReady_heap[tree_right(temp)]-&amp;amp;gt;priority &amp;amp;gt; pReady_heap[temp]-&amp;amp;gt;priority ) {&lt;br /&gt;
 			temp_tcb = pReady_heap[tree_right(temp)];&lt;br /&gt;
 			pReady_heap[tree_right(temp)] = pReady_heap[temp];&lt;br /&gt;
 			pReady_heap[temp] = temp_tcb;&lt;br /&gt;
 			temp = tree_right(temp);&lt;br /&gt;
 		}&lt;br /&gt;
 		else break;&lt;br /&gt;
 	}&lt;br /&gt;
 	LIB_EXIT_CRITICAL();&lt;br /&gt;
 	LIB_context_sw();&lt;br /&gt;
 }&lt;br /&gt;
죽은 태스크들은 FREE큐로 가거라...왜냐 죽었잖아...&lt;br /&gt;
실행을 중지시키기 위해서는 FREE큐에 태스크를 넣어준다.....&lt;br /&gt;
 /* Delete the Task&lt;br /&gt;
 */&lt;br /&gt;
 int LIB_del_task(LIB_TCB *task){&lt;br /&gt;
 	int temp_count;&lt;br /&gt;
 	LIB_TCB *Temp_TCB;&lt;br /&gt;
 	for ( int i = 0; i &amp;amp;lt; LIB_MAX_HEAP ; i++ ){&lt;br /&gt;
 		if ( pReady_heap[i] == task ) {&lt;br /&gt;
 			free_tcb_ptr++;&lt;br /&gt;
 			pFreeTCB[free_tcb_ptr] = pReady_heap[i];&lt;br /&gt;
 			pReady_heap[i] = pReady_heap[ready_tcb_ptr];&lt;br /&gt;
 			pReady_heap[ready_tcb_ptr] = NULL;&lt;br /&gt;
 			temp_count = i;&lt;br /&gt;
 			ready_tcb_ptr--;&lt;br /&gt;
 				while (1) {&lt;br /&gt;
 					if ( pReady_heap[tree_left(temp_count)] != NULL) {&lt;br /&gt;
 						if ( pReady_heap[tree_left(temp_count)]-&amp;amp;gt;priority &amp;amp;gt; pReady_heap[temp_count]-&amp;amp;gt;priority ){&lt;br /&gt;
 							Temp_TCB = pReady_heap[temp_count];&lt;br /&gt;
 							pReady_heap[temp_count] = pReady_heap[tree_left(temp_count)];&lt;br /&gt;
 							pReady_heap[tree_left(temp_count)] = Temp_TCB;&lt;br /&gt;
 							temp_count = tree_left(temp_count);&lt;br /&gt;
 						}&lt;br /&gt;
 						else break;&lt;br /&gt;
 					}&lt;br /&gt;
 					else break;&lt;br /&gt;
 				}&lt;br /&gt;
 		}&lt;br /&gt;
 		if ( pSuspend_heap[i] == task) {&lt;br /&gt;
 			free_tcb_ptr++;&lt;br /&gt;
 			pFreeTCB[free_tcb_ptr] =  pSuspend_heap[i];&lt;br /&gt;
 			pSuspend_heap[i] = pSuspend_heap[suspend_tcb_ptr];&lt;br /&gt;
 			pSuspend_heap[suspend_tcb_ptr] = NULL;&lt;br /&gt;
 			suspend_tcb_ptr--;&lt;br /&gt;
 			return success;&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 	LIB_Schedul();&lt;br /&gt;
 	return fail;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 /* Resume task&lt;br /&gt;
 */&lt;br /&gt;
 void LIB_resume_list(INT16U priority ){&lt;br /&gt;
 	int temp;&lt;br /&gt;
 	for ( int i = 0; i&amp;amp;lt;= suspend_tcb_ptr ; i++ ) {&lt;br /&gt;
 		if ( pSuspend_heap[i]-&amp;amp;gt;priority == priority ) {&lt;br /&gt;
 			pReady_heap[ready_tcb_ptr] = pSuspend_heap[i];&lt;br /&gt;
 			pSuspend_heap[i] = pSuspend_heap[suspend_tcb_ptr];&lt;br /&gt;
 			pSuspend_heap[suspend_tcb_ptr] = NULL;&lt;br /&gt;
 			suspend_tcb_ptr--;&lt;br /&gt;
 			temp = ready_tcb_ptr;&lt;br /&gt;
 			goto EX_LOOP1;&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 	return;&lt;br /&gt;
 EX_LOOP1:&lt;br /&gt;
 	LIB_TCB *temp_tcb;&lt;br /&gt;
 &lt;br /&gt;
 	while (1) {&lt;br /&gt;
 		if ( pReady_heap[temp]-&amp;amp;gt;priority &amp;amp;gt; pReady_heap[tree_parent(temp)]-&amp;amp;gt;priority ) {&lt;br /&gt;
 			temp_tcb = pReady_heap[tree_parent(temp)];&lt;br /&gt;
 			pReady_heap[tree_parent(temp)] = pReady_heap[temp];&lt;br /&gt;
 			pReady_heap[temp] = temp_tcb;&lt;br /&gt;
 		}&lt;br /&gt;
 		else break;&lt;br /&gt;
 	}&lt;br /&gt;
 	ready_tcb_ptr++;&lt;br /&gt;
 }&lt;br /&gt;
가장 우선순위가 높은 걸 찾아준다...&lt;br /&gt;
 /* Find Ready Task &amp;amp;amp; Run the Task&lt;br /&gt;
 */&lt;br /&gt;
 void LIB_Schedul()&lt;br /&gt;
 {&lt;br /&gt;
 	High_Task = pReady_heap[0];&lt;br /&gt;
 }&lt;br /&gt;
 #endif	LIB_SCHE_CPP&lt;br /&gt;
음..내가 교수도 아니고 스케쥴링이 오에스에서 가장 중요할 것이다.. 그럼에도 불구하고 허접하다.&lt;br /&gt;
사실 내가 만든 것과 U_C_OS 와의 실행 속도 차이는 무지하게 크다. 이유는 소스를 보면 알 것이다..&lt;br /&gt;
여하튼..하지만..그래도 내 소스가 더 보기 쉽지 않나?? ㅋㅋㅋㅋㅋ &lt;br /&gt;
실행속도가 차이는 나지만 그래도 나름대로의 방식으로 만들려고 노력했다..그래서&lt;br /&gt;
이모양 이꼴인 오에스가 되었지만............&lt;br /&gt;
----&lt;br /&gt;
[[REAL_LIBOS]]&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;Unknown</name></author>
	</entry>
</feed>