工學碩士學位請求論文 실시간프로세스의최악응답시간 Predicting RT Process s Worst Case Response Time 2008 年 2 月 指導敎授崔源益 이論文을碩士學位請求論文으로提出함 仁荷大學校大學院 情報通信工學科 李東植

Size: px
Start display at page:

Download "工學碩士學位請求論文 실시간프로세스의최악응답시간 Predicting RT Process s Worst Case Response Time 2008 年 2 月 指導敎授崔源益 이論文을碩士學位請求論文으로提出함 仁荷大學校大學院 情報通信工學科 李東植"

Transcription

1 工學碩士學位請求論文 실시간프로세스의최악응답시간예측 Predicting RT Process s Worst Case Response Time 2008 年 2 月 仁荷大學校大學院 情報通信工學科 李東植

2 工學碩士學位請求論文 실시간프로세스의최악응답시간 Predicting RT Process s Worst Case Response Time 2008 年 2 月 指導敎授崔源益 이論文을碩士學位請求論文으로提出함 仁荷大學校大學院 情報通信工學科 李東植

3 이論文을李東植의碩士學位論文으로認定함 年 2 月日 主審 副審 委員 印 印 印

4 요 약 범용운영체제로개발된리눅스는전세계의많은개발자들에의해발전해왔다. 그리고리눅스를실시간시스템에서도사용할수있도록스케줄러의수정, 선점형커널의지원등각종지연시간을줄이기위한연구가활발히진행되고있다. 리눅스는선점형커널의지원으로커널모드에서우선순위가높은프로세스에의한선점이가능해졌지만여전히커널과디바이스드라이버의일부분에서는선점을금지시킨다. 리눅스를경성실시간시스템에서활용하기위해서는스케줄링가능성분석을위해실행시간에대한정보가필수적으로요구된다. 그러나프로세스의실행시간은실행시점과실행환경에따라가변적이기때문에정확한실행시간을알아내기어렵다. 게다가리눅스에서는실시간성을요구하지않는프로세스도커널모드에서선점을금지시킬수있다. 보다정확한실행시간을분석하기위해서는해당시스템에서작동될모든프로세스에의해서발생되어질수있는커널모드에서의선점금지시간에대한자세한분석을통해실시간프로세스의최악응답시간을예측하는것이매우중요하다. 본논문에서는커널모드에서선점이금지되는시간을측정해주는모듈을구현하였고실험을통해프로세스별로커널모드에서선점금지시간을측정하였다. 그리고이를바탕으로실시간프로세스의최악응답시간을보다정확히예측할수있음을보였다. i

5 Abstract Linux, a general-purpose operating systems, has been developed by many developers. For Real time Linux system, various improvements on scheduler correction and research on, preemptive kernel to reduce the time delay are actively underway. By supporting preemption in kernel mode, high priority process can be preempted by the kernel and device drivers, but Linux still has many part of the preemption disabling region. In order to analyze scheduling possibilities for hard real-time Linux systems, execution time information is essential. However, because of execution environment and time of execution, it is difficult to determine the exact process s execution time. Moreover, non real-time process also can disable preemption in kernel mode. In order to analyze the execution time accurately, therefore, it is very important to analyze in detail preemption disabling time of all processes which will be operated from corresponding system. This analysis will help to predict the worst case response time of real-time process. In this paper, we present the kernel module for the preemption disabling time analysis in kernel mode and show experimental results for worst case response time analysis. The results shows that real-time process s worst case response time can be predicted more accurately. ii

6 목 차 제 1 장서론... 1 제 2 장관련연구 실시간시스템 태스크의특성 실시간스케줄링알고리즘 리눅스 리눅스스케줄러 Preemptive Kernel realtime-preempt Patch 최악응답시간예측 최악응답시간예측도구들...16 제 3 장실시간프로세스의최악응답시간예측 리눅스와기존예측도구들의제한 선점금지시간분석모듈구조 수정된커널코드 선점금지시간분석모듈구현...23 제 4 장실험및분석 실험환경 실험및분석...27 제 5 장결론및향후연구 참고문헌 iii

7 제 1 장서론 리누스토발즈에의해서범용운영체제로개발된리눅스는소스가공개되어있고무료로누구나사용이가능하며재배포가가능하다는장점으로전세계의많은사람들에게환영을받고있다. 이러한리눅스는임베디드뿐만아니라엔터프라이즈분야에도다양하게사용되고발전해왔다. 그리고최근들어리눅스를실시간시스템에서도활용하기위한연구도활발히진행되어선점형커널의지원및커널을자세하게분석하고수정해지연시간을줄임으로써실시간성능을매우높혔다. 그러나아직까지리눅스는연성실시간성만지원한다.[1][2] 경성실시간운영체제로의활용하기에현재의리눅스에서가장문제가되는부분은커널과디바이스드라이버에서선점을금지하는영역이다. 리눅스커널 2.4에서는커널모드에서는완전히선점이금지되었었지만리눅스커널 2.6에서부터는선점형커널을지원함으로써프로세스가커널모드에서작동될때우선순위가높은프로세스에의한선점이가능하게하였다. 그러나여전히일부영역에서는선점을금지시킨다.[2] 이러한리눅스를경성실시간시스템에서활용하기위해서는스케줄링가능성분석을위해실행될모든프로세스의실행시간에대한정보가필수적으로요구된다. 그러나프로세스의실행시간은실행시점과실행환경에따라가변적이기때문에정확한실행시간을알아내기어렵다.[7] 게다가리눅스에서는실시간성을요구하지않는프로세스도커널모드에서선점을금지시킬수있으므로보다정확한실행시간을알아내기위해서는실행흐름에따른실행시간분석도필요하지만해당시스템에서작동될모든 1

8 프로세스에의해서발생되어질수있는커널모드에서의선점금지시간에 대한자세한분석을통해실시간프로세스의최악응답시간을예측하는것이 더욱중요하다. 이에본논문은리눅스를실시간시스템으로활용하고자할때리눅스상에서프로세스가커널모드에서작동될때선점을금지시키는지연시간들을측정을도와주기위한모듈의구조를제안하고구현한후실험을통해리눅스를실시간시스템으로활용할때실시간프로세스의최악응답시간을예측할수있도록하고자한다. 본논문의구성은다음과같다. 제2장에서는관련연구들을소개한다. 우선실시간시스템에대해서알아보고, 그다음으로실시간운영체제로의리눅스커널에대해서알아보며, 마지막으로리눅스에서실시간프로세스의응답시간을분석하기위한도구들에대해알아본다. 제 3장에서는리눅스와기존도구들의문제점을알아보고커널모드에서선점금지시간분석모듈의구조를제시하고구현한다. 제 4장에서는실험을통해서결과를측정하고분석함으로써리눅스에서실시간프로세스의최악응답시간을예측함을보인다. 마지막제 5장에서는결론및향후연구방향에대해설명하고끝을맺는다. 2

9 제 2 장관련연구 2.1 실시간시스템 실시간운영체제는마감시간이라는제약을허용하는정도에따라서경성실시간운영체제와연성실시간시스템으로구분된다. 경성실시간시스템은정해진마감시간안에반드시수행결과를도출해야하며, 그렇지못한경우는심각한결함으로간주한다. 예를들면, 핵발전소제어, 공정제어, 항공기제어, 무기체계등을관리하기위한시스템을사용된다. 한편연성실시간시스템은마감시간을최대한맞추려고하지만시간을어겼을때경성실시간시스템에서처럼치명적이지않고마감시간을넘겨서수행을마쳤더라도계산의결과가어느정도의미를가지는시스템을말한다. 예를들면, 온라인트랜잭션시스템, 멀티미디어스트리밍시스템등은연성실시간시스템의응용분야라고할수있다. [6] 이와같은실시간시스템은마감시간을만족시키기위해서고속의계산이필요하기는하지만, 고속의계산이실시간시스템의요구조건을만족시키는것은아니다. 고속의계산은시스템의평균응답시간을줄여줄수있지만실시간시스템에서요구되는예측성을보장해주지는못한다. 현재대부분의실시간시스템은점점복잡해지고있기때문에경성과연성이혼합되어구성하는추세이다. 실시간시스템에서는주어진태스크들이모두마감시간을만족할수있는지의여부를판단하는것이매우중요하다. 이것을스케줄링가능성검사라고하며해당시스템에서모든태스크들이마감시간을만족시키면서수행이가능한가를간단한수식을이용하여판단가능한분석적방법을많이사용한 3

10 다.[6] 태스크의특성 실시간시스템에서는일반적으로크게 3가지형태로태스크를구분한다. 먼저주기적 (periodic) 태스크와우발적 (sporadic) 태스크그리고비주기적 (aperiodic) 태스크이다.[6] 실시간태스크는주기적으로수행되는특성을갖는경우가많다. 주기적태스크는특정한시간주기를가지고있으며, 각주기마다마감시간을가지고있는태스크이다. 예를들면핵발전소에서온도센서로부터주기적으로온도를입력받아서입력받은정보를주기적으로모니터로출력하는일을하는태스크를말한다. 우발적태스크는특정한외부이벤트에의해서비주기적으로실행되지만주어진마감시간을반드시만족시켜야하는태스크이며, 비주기적태스크는우발적태스크와같이비주기적으로실행되지만마감시간을가지지않는태스크를말한다. 또한태스크들은마감시간을어겼을때결과의심각성에따라 critical 태스크와 non-critical 태스크로나눌수도있으며, 수행중에우선순위가높은태스크가도착했을때 CPU를양보하는지의여부에따라선점 (Preemptive) 태스크와비선점 (Non-Preemptive) 태스크로나눌수도있다 실시간스케줄링알고리즘 일반적으로범용운영체제의스케줄러는가장기본적인운영체제의기능중 의하나로써 CPU 활용도의극대화, 평균대기시간의최소화그리고 throughput 의극대화를목표로한다. 그러나실시간시스템에서의스케줄러는 4

11 CPU 활용도의극대화나 throughput의극대화를목표로하는것이아니라어떤이벤트에대한처리시간을위한예측성과실시간성을요구하는태스크에대한마감시간의보장을목표로한다. 이러한실시간시스템을위한실시간스케줄링알고리즘은정적우선순위스케줄링 (Static Priority Scheduling) 알고리즘과동적우선순위스케줄링 (Dynamic Priority Scheduling) 알고리즘으로분류된다. 정적우선순위스케줄링알고리즘은태스크의우선순위가한번정해지면수행되는동안우선순위가변하지않는스케줄링알고리즘을의미하며, 동적우선순위스케줄링알고리즘은실행되는동안태스크의우선순위가변할수있음을의미한다. 먼저정적우선순위스케줄링알고리즘은보통태스크생성시우선순위를지정하며생성되며태스크의수행중에우선순위는바뀌지않는다. 정적우선순위방식을사용하는스케줄링알고리즘은 RM(Rate Monotonic) 방식과 DM(Deadline Monotonic) 방식이있다. RM방식은태스크의주기가짧을수록높은우선순위를할당하여우선순위가높은순서대로태스크를선택해서수행하는방식으로 ucos-ii와 RTLinux등에사용되며, DM방식은태스크의마감시간이짧을수록높은우선순위를할당하며우선순위가높은태스크를선택하는방식이다. 그리고동적우선순위스케줄링알고리즘은정적우선순위스케줄링알고리즘과달리태스크가수행되는동안에언제든지태스크의우선순위가바뀌는것이가능한스케줄링알고리즘이다. 동적우선순위방식을사용하는스케줄링알고리즘은 EDF(Earliest Deadline First) 방식과 TDS(Time Driven Scheduler) 방식, LLF(Least Laxity First) 방식, SRT(Shortest Remainin Time) 방식이있다. EDF방식은가장짧은마감시간을가진태스크에가장높은우선 5

12 순위를부여하고새로운태스크가도착할때마다우선순위를조정함으로써태스크들이마감시간을지킬수있도록하며, TDS방식은 EDF와같이마감시간을기준으로스케줄링하는것은같으나과부하발생시비중이낮은태스크를제거함으로써과부하상태에대한처리를한다. LLF방식은마감시간까지남아있는 processing time이가장여유가없는태스크의우선순위를높여주는방식으로마감시간을지킬수있도록한다. SRT방식은비선점방식인 SJF(Shortest Job First) 방식을선점형태로바꾸어높은것이며새로운태스크가들어오면현재수행중인태스크와남은 CPU 요구시간을비교하여더짧은 CPU 시간을가진태스크를수행하는방식이다.[6] 실시간운영체제의특성 최근의운영체제들은여러가지효율적인알고리즘을적용하여 CPU 활용의극대화, 평균대기시간의최소화, throughput의극대화등을통해서컴퓨터의성능을향상시켰다. 그러나실시간운영체제에서의성능은단지평균실행시간성능이나 throughput 성능으로측정되지않는다. 범용운영체제의전체적인성능을향상시키는데많은도움이될지라도실시간운영체제에서는많은문제점을나타낼수도있다. 실시간운영체제에서는결정성, 응답성, 사용자제어, 신뢰성이요구된다. 결정성이란명확하게정의된시간안에특정동작을수행하는것을의미한다. 경성실시간시스템에서는내적, 외적요인에관계없이항상일정한시간내에수행이완료되어야하므로결정성은실시간시스템에서매우중요한요소이다. 그리고응답성은어떠한이벤트에대해서가능한한빨리응답하는능력을말한다. 예를들어입출력인터럽트와같은비동기적인이벤트에대해서즉각 6

13 적인응답은실시간운영체제의중요한요소이다. 사용자제어는사용자에의해서운영체제의제어가가능함을의미한다. 범용운영체제는시간을분할해서모든태스크들에게공평한 CPU할당을통해서 throughput의극대화를목적으로하기때문에실시간서비스를제공하기에는제한적이다. 실시간운영체제에서는사용자가태스크들의우선순위를정하는것뿐만아니라시스템의스케줄링방식, 페이징의사용, 프로세스간의스와핑등모든영역에서시스템을제어하는것이가능해야함을의미한다. 마지막으로신뢰성은장시간동안시스템이오류없이계속동작할수있는것을의미한다. 실시간운영체제는가상의환경에서작동되는것이아니라실세계의환경에서작동되므로실시간시스템의오류는막대한금전적손실이나인간의생명을위협할수도있으므로실행에대한신뢰성역시매우중요한요소이다. 2.2 리눅스 1991년핀란드헬싱키대학의학생인리누스토발즈 (Linus Benedict Torvalds) 는자신의 IBM호환 386 PC를제대로활용하는운영체제를찾고있었다. 그당시사용할수있었던미닉스는교육용으로만들어진것이였기때문에기능이매우제한되었으며, 하드웨어의성능을제대로이용하지못했다. 이에리누스는 IBM호환 PC에서사용할수있는유닉스호환운영체제를만들기로하고개발을시작했다. 리누스토발즈는자신인작업한최초의 0.01 커널을인터넷을통해공개하였고자신의이름을본따 Linux라고이름을붙였다. 리눅스는모든사람이자유롭게복사하고사용할수있으며, 마음대로소스를수정하여재배포할수있는 GPL(Gnu Public License) 의라이센스를따랐다. 소스가공개되어있었기때문에관심이있는사람들은누구나잘못된부분은수정할수있었으며, 부족한기능들을직접구현할수있었다. 그리고전 7

14 세계의많은개발자들은 IBM 호환 386 PC 에서만이아니라알파 (Alpha) 나스 팍 (SPARC), 모토롤라 (Motorola), 암 (ARM), 밉스 (MIPS) 등다양한아키텍처에 서도리눅스를사용할수있도록작업해오고있다.[1] 이렇게빠르게발전해온리눅스는많은개발자들에의해서기존의커널을일부수정하는작업을통해임베디드시스템에적용되어사용되고있을뿐만아니라실시간시스템에적용하기위해서스케줄러의수정및선점형커널의지원등각종지연시간을줄임으로써실시간운영체제로활용하기위해많은노력을기울이고있다.[2] 리눅스스케줄러 실시간운영체제의스케줄러는항상상수시간안에스케줄링을보장해주어야한다. 리눅스커널 2.4에서의스케줄링알고리즘은시기 (epoch) 단위로 CPU 시간을나누어동작한다. 모든프로세스는시기가시작할때우선순위에기반해서타임퀀텀을할당받아실행한다. 우선순위는 1에서 140까지부여되며 1 에서 99까지는실시간프로세스를위한우선순위에해당하며 100부터 140까지는우선순위는일반프로세스에해당한다. 기본타임퀀텀은 task_struct 자료구조의멤버중의하나인 counter 필드에기록된다. 프로세스의디폴트타임슬라이스는 10tick으로써약 100ms정도이다. 스케줄러로부터 CPU를할당받은프로세스는 10ms마다 1tick씩자신이소유한타임슬라이스를소비하면서실행된다. 타임슬라이스를모두소비한프로세스는다른프로세스에의해선점되며, 실행가능한다른프로세스로대체된다. 시기는실행가능한모든프로세스가타임슬라이스를모두소비했을때스케줄러는모든프로세스의타임슬라이스를다시계산하고새로운시기를시작한다.[1] 이때모든프로세 8

15 스에대한타임슬라이스의재계산은실시간운영체제에적합하지않다. 그리고리눅스커널 2.4의스케줄러에해당하는 schedule() 함수는 current 프로세스를당장블록시켜야할경우에직접적으로호출되는되기도하며, current의 need_resched 필드값을 1로설정하여커널모드에서유저모드로되돌아가기전에 need_resched 필드값에대한검사를통해서우회적으로호출되기도한다. schedule() 함수가호출되면 [ 그림.2-1] 에서와같이실행큐리스트에있는모든프로세스에대한 goodness를평가함으로써수행할프로세스를선택하게된다. 그러나이러한스케줄러구현은프로세스의갯수가늘어나면스케줄링을위해서필요한시간도늘어난다. 즉, O(n) 의시간이필요하다는말이며, n은프로세스의갯수를뜻한다. 이러한스케줄러구현상의문제점역시프로세스의개수에상관없이항상상수 (constant) 시간안에스케줄링을보장해주지못하며실시간운영체제에는적합하지않았다. [ 그림. 2-1] 리눅스커널 2.4 스케줄러 9

16 리눅스커널 2.6에서는 Ingo Molnar가개발한일명 O(1) 스케줄러를사용한다. 이새로운스케줄러는글로벌동기화와재계산루프를제거하여 SMP 효율성뿐만아니라항상상수시간안에스케줄링을보장해준다. 이스케줄러는타임슬라이스재계산으로인한문제를해결하기위해서 [ 그림.2-2] 의구조를가지는두개의우선순위배열을사용한다. 이두배열은포인터를통해서액세스되며 active array와 expired array로구분된다. active array는타임슬라이스가남아있고실행가능프로세스리스트을가지고있으며, expired array는 [ 그림.2-3] 과같이타임슬라이스가모두소비된프로세스가 active array에서제거되면서타임슬라이스재계산된프로세스리스트를가지고있다. 모든 active array의프로세스들이타임슬라이스를소비해 active array의 nr_active값이 0이되면, [ 그림.2-4] 과같이두배열을액세스하기위한포인터값은서로바뀌어 expired array는 active array, active array는 expired array가된다. 리눅스커널 2.6의스케줄러는이러한과정을수행함으로써리눅스커널 2.4의스케줄러가모든프로세스의타임슬라이스를계산하는일을 active array와 expired array를스위칭하는일로대체했다. [ 그림. 2-2] 리눅스커널 2.6 의 prio_array 구조체 10

17 nr_active : 3 => 2 active P1 timeslice 100ms P2 timeslice 100ms P3 timeslice 0ms expired P4 timeslice 150ms P3 timeslice 200ms Recalculate timeslice [ 그림. 2-3] 타임슬라이스재계산과정 [ 그림. 2-4] active array 와 expired array 의스위칭과정 그리고리눅스커널 2.4의스케줄러처럼루프를돌면서모든프로세스에대해서 goodness를평가해다음에실행할프로세스를선택하는것이아니라 [ 그림.2.5] 에서처럼 sched_find_first_bit() 함수를이용해서 active array의 bitmap의첫번째로설정된 bit값을검색해서설정되어있는 bit값의위치를인덱스로 queue 배열에서해당위치의값이가리키는프로세스를선택한다. Bitmap의크기 140bit로고정되어있으므로리눅스커널 2.4에서처럼프로세 11

18 스갯수에실행시간이영향을받지않고예측가능한시간안에스케줄링이처 리될수있다. [ 그림. 2-5] 리눅스커널 2.6 스케줄러 Preemptive Kernel 리눅스커널 2.4에서는프로세스가시스템콜을요청하거나인터럽트예외가발생하여커널모드에진입한경우프로세스가자발적으로 CPU를반납하거나커널모드에서빠져나오지않는이상커널모드에있는프로세스는선점되지않는다. 따라서커널모드에있는동안인터럽트가발생하여이를처리한결 12

19 과실시간프로세스또는현재프로세스보다더높은우선순위를가진프로세스가실행이가능해진경우라도스케줄링은커널모드에서유저모드로돌아가는시점에만일어나므로현재프로세스가커널모드에서작업을마칠때까지기다려야만한다. 이러한특징은실시간성을요구하는프로세스가마감시간을보장하지못하게할수도있으므로리눅스를실시간운영체제가되기위해서는커널모드에서선점이가능해야만한다. [ 그림. 2-6] 비선점형커널과선점형커널의비교 오픈커뮤니티에서시작된리눅스커널의선점지원노력은리눅스커널 2.5.4에서공식으로채택되었고커널 2.6부터는컴파일시옵션으로선택할수있게되었다. 이로인해리눅스는어느시점에서든지커널모드에서실행되고있는프로세스가선점으로부터보호되어야하는부분을 locking을하지않고 13

20 스케줄링이안전하기만하다면커널모드에서선점이가능해졌다. 이러한커널영역의보호는선점카운터를이용해서보호하는데 preempt_disable() 함수는선점카운터를증가시키고 preempt_enable() 은선점카운터를감소시킨다. preempt_disable() 함수는여러번호출될수도있으며, n번 preempt_enable() 함수가호출돼선점카운터가다시 0이되면커널모드에서의선점은가능해진다. 그러면우선순위가높은프로세스가실행이필요하게된경우커널모드에서 preempt_schedule() 함수를호출하여우선순위가높은프로세스가커널모드에서선점하도록해준다.[2] realtime-preempt Patch 리눅스의 O(1) 스케줄러와 Preemptive Kernel 지원은기존리눅스의실시간성능을높였다. 그러나여전히리눅스커널의많은부분에서잠금이발생하므로실시간운영체제로활용되기에는부족한점을가지고있다. Ingo Molnar에의해관리되고있는 realtime_preempt 패치는부족한점을보완하기위해서기존의커널을분석하여긴 locking latency를가지는구간을찾아내수정하고새로운선점포인트를추가해우선순위가높은프로세스를위한선점타이밍을앞당김으로써우선순위가높은프로세스가실행될수있는시간을앞당겼다. 그리고 [ 표.2-1] 과같이커널의스핀락코드를 mutex로대체함으로써 lock을사용지지않는프로세스가실행할기회를빼앗는것을없애고 spinlock 요청영역의전역적 locking을지역화시켰다. 게다가추가적으로인터럽트처리에서도 [ 그림.2-7] 에서처럼기존의인터럽트처리와달리타이머인터럽트를제외한다른인터럽트처리들을커널쓰레드화시키고각각의인터럽트쓰레드에우선순위와 SCHED_FIFO 스케줄링정책을할당함으로써인터 14

21 럽트처리가끝날때까지선점을금지시키지않음으로써리눅스의예측가능성 을높였다. [ 표. 2-1] CONFIG_PREEMPT 와 CONFIG_PREEMPT_RT 비교 [ 그림. 2-7] 기존인터럽트처리과정과인터럽트쓰레드화의비교 2.3 최악응답시간예측 리눅스를실시간시스템으로활용하기위해많은수정을거쳐서실시간성 능을높였지만완벽한경성실시간성을가지지는못하고있다. 그러므로리눅 15

22 스를실시간운영체제로활용하기위해서는해당시스템에서작동하는리눅스커널의성능에대한분석뿐만아니라유저레벨에서실행되는모든프로세스에서의실행시간에대한철저한분석을통해스케줄링이가능한가를알아보기위해서는보다정확한응답시간에대한분석이요구된다 최악응답시간예측도구들 리눅스를실시간시스템에서활용하기위해서유저레벨에서리눅스의실시간성능을평가하는도구들은주로해당프로세스에대한응답에대한지연시간을측정에목적을둔다. 실시간성을요구하는프로세스를수행하여응답에대한지연시간을분석함으로써실시간시스템으로활용이가능한가를판단한다. Realfeel은 mlockall() 시스템콜을이용해서프로세스의페이징을금지시키고스케줄링정책과우선순위를지정한후 /dev/rtc를이용해서주기적인인터럽트를발생시키고 /dev/rtc에대해서 read() 시스템콜에대한처리시간을측정함으로써실시간프로세스의응답시간을평가한다.[3] 그리고 cyclictest의경우는우선순위가다른여러개의쓰레드를생성해서소프트웨어타이머를이용해서주기적으로시그널을발생시켜시그널에대한응답속도를측정하거나 nanosleep() 을이용해서해당쓰레드가깨어나는데걸리는시간을측정하여리눅스커널에서의서비스처리속도와응답시간을바탕으로해당실시간프로세스의최악응답시간을예측한다. [4] 16

23 User Process read() User Level Analyzer read() sys_read() Virtual File System(VFS) vfs_read() Ext2 ext2_read() Device Driver DISK [ 그림. 2-8] 일반적인응답시간분석도구작동방식의예 17

24 제 3 장실시간프로세스의최악응답시간예측 3.1 리눅스와기존예측도구들의제한제 2장에서분석한최악응답시간예측도구들은해당시스템의실시간프로세스의응답시간측정을위해서실행되면해당프로세스가실행하는도중에리눅스의페이징폴트로발생할수있는지연시간을해결하기위해서 mlock() 또는 mlockall() 시스템콜을이용해서시스템콜을호출한프로세스에대해서페이징을금지시켜항상물리메모리상에상주시키고 sched_setscheduler() 함수를이용해서프로세스에실시간프로세스를위한우선순위를할당하고실시간프로세스를위해서스케줄링방식을바꾼다음커널과유저프로세스사이에서프로세스가응답하는데걸리는지연시간들을계속해서메모리에기록해둠으로써실시간프로세스의응답시간측정을수행한다. 그러나이러한방법은커널내부에서지연되는시간까지자세히분석하는것이아니라유저레벨에서프로세스의응답시간을분석하는것일뿐이다. 그러므로이러한분석도구들은하나의실시간프로세스에대해서만응답시간분석이가능하며여러개의프로세스가동작하는경우에대해서는다른프로세스가해당프로세스에게미치는영향들은분석이어렵다. 그리고 realtime-preempt 패치가적용되고선점형커널로컴파일된리눅스가동작하고있는시스템에서는사용자프로세스가어떤커널의서비스를요청하는경우해당프로세스가커널모드에서완전히선점을금지하는것이아닌커널코드의일부분에서만금지된다. 그러므로우선순위가낮은프로세스인경우, 우선순위가높은프로세스에게미치는영향은커널모드에서의선점금지시간이므로이러한다른프로세스에게미치는영향을분석할수가없다. 게다가시스템에서실행될모든프로세스들을동시에 18

25 실행되는환경을만들어서수행되어야하지만이러한실행상황을만드는것은매우어렵다. 그러므로보다체계적인방법을통해서실시간프로세스의최악응답시간을예측하기위해서는커널모드에서선점이금지되는시간을정확하게측정해줄도구가필요하다. 3.2 선점금지시간분석모듈구조실시간프로세스의최악응답시간을보다정확하게예측하기위해서는커널모드에서선점금지시간을측정하고저장하는오버헤드를가능한한최대한줄일수있는구조를가져야한다 수정된커널코드리눅스커널 2.4에서는프로세스가 CPU를스스로포기하지않는이상커널모드에서는현재실행되고있는프로세스보다우선순위가높은프로세스가선점하는것이불가능했다. 그러나리눅스커널 2.5에서부터커널모드에서의선점지원에대한연구가진행되어리눅스커널 2.6에서는커널선점패치가포함되어커널모드에서우선순위가높은프로세스를위해선점이가능하게되었다. 그리고커널선점패치와더불어 Robert Love의 Low-Latency 패치등실시간성능향상을위해서여러패치가합쳐진 Ingo Molnar의 realtime-preempt 패치는기본리눅스커널 2.6의부족한실시간성능을좀더보완해실시간운영체제로의리눅스실시간성능을상당히높혔다.[2] 물론앞에서도언급했듯이현재에도커널코드의모든부분이선점이가능하다는것은아니다. 여전히 realtime-preempt 패치가적용된커널코드의특정중요한섹션은선점에대비해서잠긴다. 이러한잠금은 CPU당 19

26 데이터구조와상태가선점으로부터항상언제나보호되어야하는것을확실히해두고있다. 리눅스커널 2.6에서는커널모드에서우선순위가낮은프로세스가수행할때우선순위가높은프로세스에의해서선점으로부터보호되어야영역은선점카운터를이용해보호하며선점카운터는 [ 그림. 3-1] 에있는 preempt_disable(), preempt_enable() 그리고 preempt_enable_no_resched() 함수들에의해서증가하거나감소한다. #define preempt_disable() \ do { \ inc_preempt_count(); \ barrier(); \ } while (0) #define preempt_enable() \ do { \ preempt_enable_no_resched(); \ barrier(); \ preempt_check_resched(); \ } while (0) #define preempt_enable_no_resched() \ do { \ barrier(); \ dec_preempt_count(); \ } while (0) [ 그림. 3-1] 커널모드에서선점금지를위한함수들 preempt_disable() 함수는여러번호출이가능하며호출될때마다 preempt_count를증가시켜낮은우선순위의프로세스가커널모드에서우선순위가높은다른프로세스에의해서선점되는것을금지시킨다. preempt_enable() 은호출될때마다 preempt_count를감소시키며 20

27 preempt_count가 0이되면비로소커널영역에서높은우선순위의프로세스가낮은우선순위의프로세스를중지시키고 CPU를선점하는것이가능해진다.[2] 그러므로 preempt_disable() 함수와호출될때 preempt_count값이 0이아닌경우현재시간을저장하고나중에 preempt_enable_no_resched() 함수가호출되기전에 preempt_count값을확인해서다시 0이되었을때현재시간을측정한다면이두시간의차이를이용해서커널내부에서선점이금지된시간을알수가있다. 그래서커널모드에서선점을금지시키는시작부분과선점이가능하게하는부분인 preempt_disable() 함수와 preempt_enable_no_resched() 함수를 [ 그림.3-2] 와같이커널코드를수정함으로써선점금지시간을분석할수있도록하였다. [ 그림. 3-2] 수정된선점금지를위한함수들 추가된두개의함수는모듈의로깅함수를호출함으로써해당프로세스에 의한선점금지시간에대한정보를저장한다. 그러나리눅스에서커널은 21

28 모듈이로드되었을때지정된 open(), read(), write() 와같은시스템콜을통한몇개의함수만호출이가능할뿐그이외의함수들은모듈내부에서만참조가가능하다.[5] 그러므로커널에의해서모듈의함수가호출될수가없으므로선점금지시간을측정하고저장하는오버헤드를줄이기위해서이러한함수들을통하지않고커널에서직접한번에모듈의특정함수를호출할수있도록하기위해서 [ 그림.3-3] 와같이 NULL 값을가진함수포인터를선언하고 EXPORT_SYMBOL() 을이용해모듈에서이함수포인터를참조할수있도록하고함수포인터를이용해서함수포인터값이 NULL인지아닌지만을검사함으로써커널에서모듈이로드되었는지를판단하게하여모듈의함수를호출하도록커널을일부수정하였다. [ 그림. 3-3] 커널에서모듈함수를참조하기위해추가된함수들 22

29 3.2.2 선점금지시간분석모듈구현 선점금지시간분석모듈에서는로깅여부판단을위해서두가지의 검사를수행해야한다. 먼저최대한빠르게로깅을프로세스가맞는지 아닌지검사를수행하고 preempt_count값이 0인지아닌지검사한다. 이두가지검사를모두만족하는경우만로깅을수행한다. 모듈에서이러한두가지검사를최대한오버헤드를줄이면서수행한후두개의조건을만족한다면 preempt_disable_logging_fn() 함수에서호출된모듈의함수는현재시간을측정해서저장하고 preempt_enable_logging_fn() 함수에서호출된모듈의함수는현재시간을측정후선점이금지되었던시간과두시간의차이를저장해둠으로써커널모드에서해당프로세스에의해서선점이금지된시간정보들을응답시간분석에이용할수있도록한다. 이러한작동흐름을알고리즘으로표현하면 [ 그림.3-4] 와 [ 그림.3-5] 와같다. [ 그림. 3-4] 선점금지시전반적인수행과정 23

30 [ 그림. 3-5] 선점가능시전반적인수행과정 커널내부에서프로세스별로선점이금지되는시간을보다정확하게측정하기위해서는실행에따른오버헤드가최대한적어야한다. 커널모듈에서현재시간을측정하는오버헤드를제외하고최대한오버헤드를줄이기위한방법중첫번째로모듈은 [ 그림.3-6] 에서처럼프로세스의선점이금지되는시간을기록해둘 log_task 구조체에대한포인터배열을미리리눅스에서실행가능한프로세스개수사이즈만큼미리선언해놓고모듈이로드될때 NULL값으로초기화시켜놓고이배열을이용해서로깅할프로세스인지아닌지판별한다. 판별방법은 [ 그림.3-7] 과같이유저프로세스의 pid에해당하는위치의배열의값이 NULL이면선점금지시간정보를저장할 log_task 구조체가할당되지않았으므로로깅할프로세스가아님을나타내고 NULL값이아니면선점금지시간정보를저장할 log_task 구조체가있다는것을의미하므로로깅할프로세스로판단하고로깅을수행한다. 24

31 [ 그림. 3-6] 프로세스별로깅정보를저장할 log_task 구조체 struct log_task *logging_task[] n log_task last XXX log_task n last [ 그림. 3-7] 로깅할프로세스판단과정 커널은사용자프로세스에의해서로깅에대한요청이있으면커널내부에선점금지된시간을저장하기위해서동적으로메모리를할당하고동적으로할당된메모리의주소를배열의해당위치에저장함으로써곧바로로깅을수행할수있도록한다. 그리고두번째로선점이금지된시간에대한정보를저장할때도유저프로세스에대한로깅요청이들어오면모듈은 log_task 구조체를동적으로할당하고정수배열을먼저모든값을 0으로초기화후 preempt_disable() 함수가호출되어 preempt_count값이 0일때시간정보를저장할 last 멤버값을초기화한다. 그리고다시 preempt_enable_no_resched() 함수가호출되었을때 preempt_count값이 25

32 0이되면다시현재시간을측정하고선점이금지된시간을저장할때는 log_task 구조체의 last값과현재시간의차를 delay 배열의인덱스로사용해서해당위치의값을 1 증가시킴으로써시간에대한정보를단한번에찾아서저장함으로써실행에대한오버헤드를줄인다. log_task 0 n idx = current_time - last X X X update last log_task[idx] + 1 calculate idx [ 그림. 3-9] 해당프로세스로인한선점금지시간기록과정 26

33 제 4 장실험및실험결과 4.1 실험환경본논문에서제안한프로세스별선점금지시간분석모듈은리눅스커널 버전에 Ingo Molnar의 realtime-preempt 패치를적용된시스템에서 gcc 버전을이용하여구현되었다. 실험에사용된컴퓨터의시스템사양은 Intel x86기반의 Pentium IV 1.5GHz, 256MB PC를사용하였고, 커널에영향을주지않고보다정확한시간측정을위해커널의 do_gettimeofday() 함수를이용하지않고타임스탬프값을읽어직접계산하도록구현하였다. 본실험에서는사용자프로세스에서실험데이터를직접읽어들여서출력하도록고려하였으나커널내에존재하는데이터를사용자프로세스로옮기는과정에발생하는선점금지로발생하는재귀적인로깅으로인한문제와사용자프로세스로옮길때발생하는지연시간데이터를없애기위해서로깅중지요청시에커널메시지로출력되도록하였다. 이메시지는리눅스명령어 dmesg로확인이가능하며해당프로세스이름과 pid로써구분이가능하도록하였다. 4.2 실험및실험결과실시간시스템에서는실시간프로세스만수행되는것이아니라실시간성을요구하지않는프로세스도수행된다. 이러한상황에서실시간프로세스는다른모든프로세스에의해서지연될수있다. 그리고실시간프로세스는우선순위가낮은다른모든프로세스들중에커널모드에서의선점금지시간이가장긴시간만큼지연된다. 그러므로자세한분석을위해실험은총 2가지과정으로구분해실험을수행했다. 첫번째는과정은 4개의 Non-RT 프로세스 27

34 가수행될때발생하는커널에서의선점금지시간을측정하는실험이며, 두번째과정은실시간프로세스와일반프로세스가동시에수행될때여러가지상황에서일반프로세스에의한선점금지로인해서발생하는실시간프로세스의응답지연시간을측정하고첫번째실험결과와비교분석하였다. 모의실험에서사용된실시간프로세스는 realfeel과같이 /dev/rtc를이용해주기적으로인터럽트를발생시키고이에대한처리를수행하는응답시간을측정하는프로세스이며, Non-RT 프로세스는실시간성을요구하지는않지만시스템콜을호출하여커널모드에서선점을금지시키는서로다른종류의프로세스들이다. < 과정 1> [ 표.4-1] 는 4 개의 Non-RT 프로세스들을단독으로실행시키고해당프로세 스에의해커널모드에서선점이금지되는시간을측정한결과이다. [ 표.4-1 ] 4 개의 Non-RT 프로세스의선점금지시간 < 과정 2> [ 표.4-2] 은실시간프로세스와일반프로세스를동시에실행시키고, 여러가 28

35 지상황에서실시간프로세스의응답지연시간의변화를예측해보았고실제 로실시간프로세스의최대응답지연시간을측정한결과이다. [ 그림. 4-2]RT 프로세스의최악응답지연시간의변화 결과에서보면실시간프로세스와일반프로세스가동시에실행되는경우실시간프로세스의응답지연시간은예측변화량보다조금크다는것을알수있다. 이것은태스크스케줄링시간이추가되었기때문이며태스크스케줄링으로인한지연시간역시조금씩다른이유는리눅스의 O(1) 스케줄러가항상고정된시간에스케줄링을보장해주는것이아니라최대스케줄링시간을보장을해주기때문이다. 그러나스케줄링시간을제외한다면본논문에서구현한모듈을이용해일반프로세스에의해서선점이금지되는시간분석함으로써상당히정확히실시간프로세스의응답지연을예측할수있음을볼수있다. 29

36 제 5 장결론및향후연구 리눅스를임베디드환경에서뿐만아니라엔터프라이즈급환경에서도실시간운영체제로활용하기위한실시간운영체제로써의예측성과정확성을높이기위한연구가활발히진행되었고많은부분에있어서엄청난개선을이뤘다. 그러나여전히리눅스의커널모드일부분에서는우선순위가높은프로세스에의한선점이이루어지지않으므로완벽한예측을할수가없다. 게다가여러개의프로세스가동시에작동하는경우에는더더욱예측이어렵다. 이러한리눅스를실시간시스템으로활용하기위해서는스케줄링가능성을알아보기위해모든프로세스의실행시간에대한정확한분석이필요하다. 그러나프로세스의실행시간에대한정확한분석또한매우어려우며실시간성을요구하지않는프로세스에의해서도실시간프로세스가지연될수있으므로모든프로세스에의해발생하는커널모드에서선점금지시간에대한정확한분석을통해실시간프로세스의최악응답시간예측이필요하다. 본논문에서는리눅스를실시간시스템으로활용하고자할때이러한문제점을해결하고자유저레벨에서프로세스별로수행도중에해당프로세스에의해서커널모드에서선점이금지되는시간을분석해주는모듈을구현하였다. 또한, 실험을통하여프로세스별커널모드에서의선점금지시간측정을통하여리눅스를실시간시스템으로활용하기위한실시간프로세스의최악응답지연시간을예측할수있음을보였다. 그러나본논문에서제안한프로세스별선점금지시간분석모듈은보완해야할점을가지고있다. 제안한모듈은해당프로세스에대해서커널모드에서선점금지시간을분석해주지만해당프로세스가 fork() 또는 exec() 와같은시스템콜을사용해서새로운프로세스를생성하는경우새롭게생성된프 30

37 로세스에대해서는분석을해주지못하므로응답시간에대한예측하는데제약이된다. 이를보완하기위해서는향후 fork() 와 exec() 와같은시스템콜을수정하여부모프로세스가생성한자식프로세스들에대한분석도해주도록수정하거나부모프로세스의로깅여부를판단하여로깅을수행하는방식의구현도고려되어야한다. 31

38 참고문헌 [1] Linus Tovalds, [2] Ingo Molnar, RT Patch, [3] Mark Hahn. [4] Thomas Gleixner. [5] 유영창저, 리눅스디바이스드라이버. 한빛미디어 [6] Qing Li Caroline Yao 저, 전동환성원호역. RTOS 를이용한실시간 임베디드시스템디자인 [7] 박현희, 최명수, 양승민, 최용훈, 임형택, XScale 프로세서기반의임베디드소프트웨어를위한최악실행시간분석도구의구현 한국정보처리학회정보처리학회논문지 A, Vol 12, No. 5,

<4D F736F F F696E74202D C465F4B6F F6E662DB8AEB4AABDBABFA1BCADC0C7BDC7BDC3B0A3C1F6BFF8>

<4D F736F F F696E74202D C465F4B6F F6E662DB8AEB4AABDBABFA1BCADC0C7BDC7BDC3B0A3C1F6BFF8> Korea Tech Conference 2005 년 5 월 14 일, 서울 2005 년 5 월 14 일 CE Linux Forum Korea Tech Conference 1 리눅스에서의실시간지원 정영준 / 임용관 2005 년 5 월 14 일 CE Linux Forum Korea Tech Conference 2 1. 개요 2. 스케줄러 목차 I. 고정스케줄링시간지원

More information

<4D F736F F F696E74202D20322DBDC7BDC3B0A320BFEEBFB5C3BCC1A6>

<4D F736F F F696E74202D20322DBDC7BDC3B0A320BFEEBFB5C3BCC1A6> 컴퓨터시스템구성 2. 실시간운영체제 1 2 운영체제의주요기능 프로세스관리 (Process management) 메모리관리 (Memory management) 인터럽트핸들링 (Interrupt handling) 예외처리 (Exception handling) 프로세스동기화 (Process synchronization) 프로세스스케쥴링 (Process scheduling)

More information

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 System call table and linkage v Ref. http://www.ibm.com/developerworks/linux/library/l-system-calls/ - 2 - Young-Jin Kim SYSCALL_DEFINE 함수

More information

Chapter #01 Subject

Chapter #01  Subject Device Driver March 24, 2004 Kim, ki-hyeon 목차 1. 인터럽트처리복습 1. 인터럽트복습 입력검출방법 인터럽트방식, 폴링 (polling) 방식 인터럽트서비스등록함수 ( 커널에등록 ) int request_irq(unsigned int irq, void(*handler)(int,void*,struct pt_regs*), unsigned

More information

(2002).hwp

(2002).hwp 工學碩士學位論文 광대역육각형평판모노폴안테나 A Wideband Hexagonal Plate Monopole Antenna 忠北大學校大學院 電波工學科電波通信工學專攻 李相吉 2006 年 2 月 工學碩士學位論文 광대역육각형평판모노폴안테나 A Wideband Hexagonal Plate Monopole Antenna 指導敎授 安炳哲 電波工學科電波通信工學專攻 李相吉

More information

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할 저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할수없습니다. 변경금지. 귀하는이저작물을개작, 변형또는가공할수없습니다. 귀하는, 이저작물의재이용이나배포의경우,

More information

ESP1ºÎ-04

ESP1ºÎ-04 Chapter 04 4.1..,..,.,.,.,. RTOS(Real-Time Operating System)., RTOS.. VxWorks(www.windriver.com), psos(www.windriver.com), VRTX(www.mento. com), QNX(www.qnx.com), OSE(www.ose.com), Nucleus(www.atinudclus.

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 System Software Experiment 1 Lecture 5 - Array Spring 2019 Hwansoo Han (hhan@skku.edu) Advanced Research on Compilers and Systems, ARCS LAB Sungkyunkwan University http://arcs.skku.edu/ 1 배열 (Array) 동일한타입의데이터가여러개저장되어있는저장장소

More information

커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서

커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서 커알못의 커널 탐방기 2015.12 이 세상의 모든 커알못을 위해서 개정 이력 버전/릴리스 0.1 작성일자 2015년 11월 30일 개요 최초 작성 0.2 2015년 12월 1일 보고서 구성 순서 변경 0.3 2015년 12월 3일 오탈자 수정 및 글자 교정 1.0 2015년 12월 7일 내용 추가 1.1 2015년 12월 10일 POC 코드 삽입 및 코드

More information

<C1A4BAB8C3B3B8AE5FB1E2BBE75FC7CAB1E25F E687770>

<C1A4BAB8C3B3B8AE5FB1E2BBE75FC7CAB1E25F E687770> 2.4 스케줄링 (1) 스케줄링의개요스케줄링은프로세스가생성되어실행될때필요한시스템의여러자원을해당프로세스에할당하는작업을의미 1) 작업스케줄링 (Job Scheduling) 1 어떤프로세스가시스템의자원을차지할수있는지를결정하여준비상태큐로보내는작업을의미 2 작업스케줄러 (Job Scheduler) 에의해수행 2) 프로세서스케줄링 (Processor Scheduling)

More information

학습목표 ü 01_ 소개 ü 02_ 스케줄링수준 ü 03_ 선점형 / 비선점형스케줄링 ü 04_ 우선순위 ü 05_ 스케줄링목적 ü 06_ 스케줄링기준 ü 07_ 스케줄링알고리즘 ü 08_ 데드라인스케줄링 ü 09_ 실시간스케줄링 ü 10_ 자바스레드스케줄링 2/23

학습목표 ü 01_ 소개 ü 02_ 스케줄링수준 ü 03_ 선점형 / 비선점형스케줄링 ü 04_ 우선순위 ü 05_ 스케줄링목적 ü 06_ 스케줄링기준 ü 07_ 스케줄링알고리즘 ü 08_ 데드라인스케줄링 ü 09_ 실시간스케줄링 ü 10_ 자바스레드스케줄링 2/23 Ch08_ 프로세서스케줄링 운영체제론 학습목표 ü 01_ 소개 ü 02_ 스케줄링수준 ü 03_ 선점형 / 비선점형스케줄링 ü 04_ 우선순위 ü 05_ 스케줄링목적 ü 06_ 스케줄링기준 ü 07_ 스케줄링알고리즘 ü 08_ 데드라인스케줄링 ü 09_ 실시간스케줄링 ü 10_ 자바스레드스케줄링 2/23 01_ 소개 o 프로세서스케줄링정책 주어진시간에시스템이실행할프로세스를선택하는작업

More information

- 코드로읽는리눅스디바이스드라이버 강남용

- 코드로읽는리눅스디바이스드라이버 강남용 - 코드로읽는리눅스디바이스드라이버 - 2011.1.3 강남용 (nykang@ssu.ac.kr) 커널스레드 스레드란? 스레드종류 도우미인터페이스 연결리스트 해시리스트 작업큐 통지연쇄 완료인터페이스 kthread 도우미 오류처리지원 ( 원시코드살펴보기 ) 2 스레드란? - 하나의프로그램내에서실행되는함수를의미 - 일반적인프로세서의경우는한순간에하나의함수만실행되지만,

More information

KEY 디바이스 드라이버

KEY 디바이스 드라이버 KEY 디바이스드라이버 임베디드시스템소프트웨어 I (http://et.smu.ac.kr et.smu.ac.kr) 차례 GPIO 및 Control Registers KEY 하드웨어구성 KEY Driver 프로그램 key-driver.c 시험응용프로그램 key-app.c KEY 디바이스드라이버 11-2 GPIO(General-Purpose Purpose I/O)

More information

리눅스 프로세스 관리

리눅스 프로세스 관리 프로세스 (Process) Process 프로그램이나명령어를실행하면메모리에적재되어실제로실행되고있는상태를의미 이러한프로세스들은프로세스가시작하면서할당받는프로세스식별번호인 PID(Process ID), 해당프로세스를실행한부모프로세스를나타내는 PPID(Parent Process ID), UID 와 GID 정보를통해해당프로세스가어느사용자에속해있는지, 프로세스가파일에대해갖는권한및프로세스가실행된터미널,

More information

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할 저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할수없습니다. 변경금지. 귀하는이저작물을개작, 변형또는가공할수없습니다. 귀하는, 이저작물의재이용이나배포의경우,

More information

슬라이드 1

슬라이드 1 -Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역

More information

Microsoft PowerPoint - chap01-C언어개요.pptx

Microsoft PowerPoint - chap01-C언어개요.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 프로그래밍의 기본 개념을

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Text-LCD Device Control - Device driver Jo, Heeseung M3 모듈에장착되어있는 Tedxt LCD 장치를제어하는 App 을개발 TextLCD 는영문자와숫자일본어, 특수문자를표현하는데사용되는디바이스 HBE-SM5-S4210 의 TextLCD 는 16 문자 *2 라인을 Display 할수있으며, 이 TextLCD 를제어하기위하여

More information

임베디드시스템설계강의자료 6 system call 1/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

임베디드시스템설계강의자료 6 system call 1/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 임베디드시스템설계강의자료 6 system call 1/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 시스템호출개요 리눅스에서는사용자공간과커널공간을구분 사용자프로그램은사용자모드, 운영체제는커널모드에서수행 커널공간에대한접근은커널 ( 특권, priviledged) 모드에서가능 컴퓨팅자원 (CPU, memory, I/O 등 ) 을안전하게보호 커널수행을안전하게유지

More information

Microsoft Word doc

Microsoft Word doc 工學碩士學位請求論文 인터럽트지연시간의감소를통한 BrickOS 의실시간성강화에관한연구 A Study on Enhancement of BrickOS s Real ealtime Cha hara racteristic by Reducing Interrupt Latency 2007 年 2 月 仁荷大學校大學院 情報通信工學科 河正大 工學碩士學位論文 인터럽트지연시간의감소를통한

More information

저작자표시 - 비영리 - 동일조건변경허락 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 이차적저작물을작성할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비

저작자표시 - 비영리 - 동일조건변경허락 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 이차적저작물을작성할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비 저작자표시 - 비영리 - 동일조건변경허락 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 이차적저작물을작성할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할수없습니다. 동일조건변경허락. 귀하가이저작물을개작, 변형또는가공했을경우에는,

More information

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770> 연습문제해답 5 4 3 2 1 0 함수의반환값 =15 5 4 3 2 1 0 함수의반환값 =95 10 7 4 1-2 함수의반환값 =3 1 2 3 4 5 연습문제해답 1. C 언어에서의배열에대하여다음중맞는것은? (1) 3차원이상의배열은불가능하다. (2) 배열의이름은포인터와같은역할을한다. (3) 배열의인덱스는 1에서부터시작한다. (4) 선언한다음, 실행도중에배열의크기를변경하는것이가능하다.

More information

Microsoft PowerPoint - chap10-함수의활용.pptx

Microsoft PowerPoint - chap10-함수의활용.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 중 값에 의한 전달 방법과

More information

05(533-537) CPLV12-04.hwp

05(533-537) CPLV12-04.hwp 모바일 OS 환경의 사용자 반응성 향상 기법 533 모바일 OS 환경의 사용자 반응성 향상 기법 (Enhancing Interactivity in Mobile Operating Systems) 배선욱 김정한 (Sunwook Bae) 엄영익 (Young Ik Eom) (Junghan Kim) 요 약 사용자 반응성은 컴퓨팅 시스템에서 가장 중요 한 요소 중에 하나이고,

More information

운영체제

운영체제 2017 운영체제 CHAPTER 02 프로세스와스레드관리 SEOKRAE KIM 내용 I. 프로세스와스레드관리... 1 1. 개요... 1 1) 중앙처리장치 (CPU)... 1 2) 중앙처리장치스케줄링... 1 2. 프로세스관리... 1 1) 프로세스의정의... 1 3. 프로세스구성요소... 2 4. 프로세스의상태... 2 1) 실행상태 (running)...

More information

Lab 3. 실습문제 (Single linked list)_해답.hwp

Lab 3. 실습문제 (Single linked list)_해답.hwp Lab 3. Singly-linked list 의구현 실험실습일시 : 2009. 3. 30. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 5. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Singly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Singly-linked list의각함수를구현한다.

More information

Microsoft PowerPoint - chap06-1Array.ppt

Microsoft PowerPoint - chap06-1Array.ppt 2010-1 학기프로그래밍입문 (1) chapter 06-1 참고자료 배열 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 배열의선언과사용 같은형태의자료형이많이필요할때배열을사용하면효과적이다. 배열의선언 배열의사용 배열과반복문 배열의초기화 유연성있게배열다루기 한빛미디어

More information

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Function) 1. 함수의개념 입력에대해적절한출력을발생시켜주는것 내가 ( 프로그래머 ) 작성한명령문을연산, 처리, 실행해주는부분 ( 모듈 ) 자체적으로실행되지않으며,

More information

사용자수준의스레드 : 사용자의라이브러리에의해운영, 속도는빠르나, 구현이복잡하다. 커널수준의스레드 : 운영체제커널에의해운영, 속도는느리나, 구현이단순하다. 스케줄링 (Scheduling) 1) 스케줄링의정의 프로세스가생성되어실행될때필요한시스템의여러자원을해당프로세스에게할당

사용자수준의스레드 : 사용자의라이브러리에의해운영, 속도는빠르나, 구현이복잡하다. 커널수준의스레드 : 운영체제커널에의해운영, 속도는느리나, 구현이단순하다. 스케줄링 (Scheduling) 1) 스케줄링의정의 프로세스가생성되어실행될때필요한시스템의여러자원을해당프로세스에게할당 프로세스 (Process) 1) 프로세스의개념 프로세서에의해처리되어지는사용자프로그램및시스템프로그램을의미한다. 현재실행중인프로그램이며 Job(=Task) 이라고도한다. PCB를가지는프로그램으로비동기적인행위를일으키는주체이며실제주기억장치에저장된프로그램이다. 운영체제가관리하는실행단위이며프로시저 ( 프로그램내의하위프로그램 ) 가활동중인것을의미한다. 2) 프로세스의상태전이과정

More information

<4D F736F F F696E74202D20BBE7BABB202D204F DC7C1B7CEBCBCBDBA20BDBAC4C9C1D9B8B528BAF1BCB1C1A12CBCB1C1A1292E707074>

<4D F736F F F696E74202D20BBE7BABB202D204F DC7C1B7CEBCBCBDBA20BDBAC4C9C1D9B8B528BAF1BCB1C1A12CBCB1C1A1292E707074> . 프로세스스케줄링 (= CPU 스케줄링 ) [ 출제빈도 상 ] - 정의 : 컴퓨터시스템의성능을높이기위해그사용순서를결정하기위한정책 - 목적 ( 성능평가 ) : 처리율증가, CPU 이용률증가, 우선순위제도, 오버헤드 ( 부하 ) 최소화, 응답시간 / 반환시간 / 최소화, 균형있는자원의사용, 무한연기회피. 프로세스스케줄링기법 ) 비선점스케줄링 (Non Preemptive)

More information

7 프로시저가활동중인것 8 실행중인프로시저의제어궤적 9 CPU가할당되는실체 운영체제가관리하는최소단위작업 (2) 프로세스상태전이도 (3) 주요프로세스상태 1 준비 (Read) 상태 : 실행하기위해준비하고있는상태 2 실행 (Run) 상태 :

7 프로시저가활동중인것 8 실행중인프로시저의제어궤적 9 CPU가할당되는실체 운영체제가관리하는최소단위작업 (2) 프로세스상태전이도 (3) 주요프로세스상태 1 준비 (Read) 상태 : 실행하기위해준비하고있는상태 2 실행 (Run) 상태 : 3 신뢰도 (Reliability) 작업의결과를얼마나정확하고믿을수있는가의요인 4 이용가능도 (Availability) 시스템의전체운영시간중에서실제가동하여사용중인시간의비율 ( 오류없이작동된시간의비율 ) (2) 다중프로그래밍에서의시간 (Time) 대기시간 기다림 A 작업 B 작업 A 작업 B 작업 A 작업 요청시간응답시간실행시간 반환시간 1 응답시간 (Response

More information

Frama-C/JESSIS 사용법 소개

Frama-C/JESSIS 사용법 소개 Frama-C 프로그램검증시스템소개 박종현 @ POSTECH PL Frama-C? C 프로그램대상정적분석도구 플러그인구조 JESSIE Wp Aorai Frama-C 커널 2 ROSAEC 2011 동계워크샵 @ 통영 JESSIE? Frama-C 연역검증플러그인 프로그램분석 검증조건추출 증명 Hoare 논리에기초한프로그램검증도구 사용법 $ frama-c jessie

More information

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 (   ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각 JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.

More information

슬라이드 1

슬라이드 1 마이크로컨트롤러 2 (MicroController2) 2 강 ATmega128 의 external interrupt 이귀형교수님 학습목표 interrupt 란무엇인가? 기본개념을알아본다. interrupt 중에서가장사용하기쉬운 external interrupt 의사용방법을학습한다. 1. Interrupt 는왜필요할까? 함수동작을추가하여실행시키려면? //***

More information

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft PowerPoint - chap06-2pointer.ppt 2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 공개 SW 솔루션설치 & 활용가이드 시스템 SW > 가상화 제대로배워보자 How to Use Open Source Software Open Source Software Installation & Application Guide CONTENTS 1. 개요 2. 기능요약 3. 실행환경 4. 설치및실행 5. 기능소개 6. 활용예제 7. FAQ 8. 용어정리 - 3-1.

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Install Linux Jo, Heeseung Download Programs Download VMWare player http://www.vmware.com/products/player/playerproevaluation.html Download Ubuntu iso file http://cslab.jbnu.ac.kr/_down/ubuntu-16.04.2-desktopamd64.iso

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 KeyPad Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 에는 16 개의 Tack Switch 를사용하여 4 행 4 열의 Keypad 가장착 4x4 Keypad 2 KeyPad 를제어하기위하여 FPGA 내부에 KeyPad controller 가구현 KeyPad controller 16bit 로구성된

More information

구리 전해도금 후 열처리에 따른 미세구조의 변화와 관련된 Electromigration 신뢰성에 관한 연구

구리 전해도금 후 열처리에 따른 미세구조의 변화와 관련된 Electromigration 신뢰성에 관한 연구 工學碩士學位論文 Electromigration-resistance related microstructural change with rapid thermal annealing of electroplated copper films 2005 年 2 月 仁荷大學校大學院 金屬工學科 朴賢皒 - 1 - 工學碩士學位論文 Electromigration-resistance related

More information

08 KRS R1.hwp

08 KRS R1.hwp 292 Journal of Korea Robotics Society (2012) 7(4):292-298 http://dx.doi.org/10.7746/jkros.2012.7.4.292 ISSN: 1975-6291 / eissn: 2287-3961 실시간임베디드리눅스에서다양한주기적타스크의실시간메커니즘성능분석 On Benchmarking of Real-time

More information

Microsoft PowerPoint - Introduction.pptx

Microsoft PowerPoint - Introduction.pptx Introduction to Embedded Linux 임베디드시스템 정의 어떤특정한기능을위해 Microprocessor/Microcontroller 가내장된시스템 특징 제한된하드웨어자원 ( 최소한의필요한자원 ) Processor, RAM, Flash memory, interfaces 경량의 OS 및 Real-Time OS 사용 WinCE, Vxworks,

More information

제11장 프로세스와 쓰레드

제11장 프로세스와 쓰레드 제9장자바쓰레드 9.1 Thread 기초 (1/5) 프로그램 명령어들의연속 (a sequence of instruction) 프로세스 / Thread 실행중인프로그램 (program in execution) 프로세스생성과실행을위한함수들 자바 Thread 2 9.1 Thread 기초 (2/5) 프로세스단위작업의문제점 프로세스생성시오버헤드 컨텍스트스위치오버헤드

More information

C# Programming Guide - Types

C# Programming Guide - Types C# Programming Guide - Types 최도경 lifeisforu@wemade.com 이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx Types, Variables, and Values C# 은 type 에민감한언어이다. 모든

More information

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx #include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 INSTALL LINUX Jo, Heeseung DOWNLOAD PROGRAMS Download VMWare player http://www.vmware.com/products/player/playerproevaluation.html Download Ubuntu iso file http://ubuntu.com - server, 64bit version http://cslab.jbnu.ac.kr/_down/ubuntu-18.04.2-live-serveramd64.iso

More information

Chap 6: Graphs

Chap 6: Graphs 그래프표현법 인접행렬 (Adjacency Matrix) 인접리스트 (Adjacency List) 인접다중리스트 (Adjacency Multilist) 6 장. 그래프 (Page ) 인접행렬 (Adjacency Matrix) n 개의 vertex 를갖는그래프 G 의인접행렬의구성 A[n][n] (u, v) E(G) 이면, A[u][v] = Otherwise, A[u][v]

More information

LIDAR 데이터와 디지털 항공영상을 이용한 건물의 자동추출에 관한 연구

LIDAR 데이터와 디지털 항공영상을 이용한 건물의 자동추출에 관한 연구 A Study on Automatic Extraction of Buildings Using LIDAR with Aerial CCD Image 2005 年 2 月 仁荷大學校大學院 地理情報工學科 ( 地理情報專攻 ) 鄭宰旭 工學碩士學位請求論文 A Study on Automatic Extraction of Buildings Using LIDAR with Aerial

More information

슬라이드 1

슬라이드 1 Recursion SANGJI University KO Kwangman () 1. 개요 재귀 (recursion) 의정의, 순환 정의하고있는개념자체에대한정의내부에자기자신이포함되어있는경우를의미 알고리즘이나함수가수행도중에자기자신을다시호출하여문제를해결하는기법 정의자체가순환적으로되어있는경우에적합한방법 예제 ) 팩토리얼값구하기 피보나치수열 이항계수 하노이의탑 이진탐색

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Install Linux Jo, Heeseung Download Programs On the class web page 2 가상머신 (Virtual Machine) 의소개 지금쓰는 Windows 를그대로사용하면서도여러대의리눅스서버를운영하는효과를내는프로그램 1 대의 PC 에서추가로 3 개의가상머신을구동한화면 3 Virtual Machines Host computer

More information

Microsoft PowerPoint - chap06-5 [호환 모드]

Microsoft PowerPoint - chap06-5 [호환 모드] 2011-1 학기프로그래밍입문 (1) chapter 06-5 참고자료 변수의영역과데이터의전달 박종혁 Tel: 970-6702 Email: jhpark1@seoultech.ac.kr h k 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- ehanbit.net 자동변수 지금까지하나의함수안에서선언한변수는자동변수이다. 사용범위는하나의함수내부이다. 생존기간은함수가호출되어실행되는동안이다.

More information

6주차.key

6주차.key 6, Process concept A program in execution Program code PCB (process control block) Program counter, registers, etc. Stack Heap Data section => global variable Process in memory Process state New Running

More information

1장. 유닉스 시스템 프로그래밍 개요

1장.  유닉스 시스템 프로그래밍 개요 Unix 프로그래밍및실습 7 장. 시그널 - 과제보충 응용과제 1 부모프로세스는반복해서메뉴를출력하고사용자로부터주문을받아자식프로세스에게주문내용을알린다. (SIGUSR1) ( 일단주문을받으면음식이완료되기전까지 SIGUSR1 을제외한다른시그널은모두무시 ) timer 자식프로세스는주문을받으면조리를시작한다. ( 일단조리를시작하면음식이완성되기전까지 SIGALARM 을제외한다른시그널은모두무시

More information

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures 단일연결리스트 (Singly Linked List) 신찬수 연결리스트 (linked list)? tail 서울부산수원용인 null item next 구조체복습 struct name_card { char name[20]; int date; } struct name_card a; // 구조체변수 a 선언 a.name 또는 a.date // 구조체 a의멤버접근 struct

More information

Microsoft Word - FunctionCall

Microsoft Word - FunctionCall Function all Mechanism /* Simple Program */ #define get_int() IN KEYOARD #define put_int(val) LD A val \ OUT MONITOR int add_two(int a, int b) { int tmp; tmp = a+b; return tmp; } local auto variable stack

More information

Lab 4. 실습문제 (Circular singly linked list)_해답.hwp

Lab 4. 실습문제 (Circular singly linked list)_해답.hwp Lab 4. Circular singly-linked list 의구현 실험실습일시 : 2009. 4. 6. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 12. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Circular Singly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Circular

More information

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 Eclipse (IDE) JDK Android SDK with ADT IDE: Integrated Development Environment JDK: Java Development Kit (Java SDK) ADT: Android Development Tools 2 JDK 설치 Eclipse

More information

슬라이드 1

슬라이드 1 CHAP 2: 순환 (Recursion) 순환 (recursion) 이란? 알고리즘이나함수가수행도중에자기자신을다시호출하여문제를해결하는기법 정의자체가순환적으로 되어있는경우에적합한방법 순환 (recursion) 의예 팩토리얼값구하기 피보나치수열 1 n! n*( n 1)! fib( n) 0 1 fib( n 2) n n 0 ` 1 fib( n 1) if n 0 if

More information

Microsoft PowerPoint - Lecture_Note_7.ppt [Compatibility Mode]

Microsoft PowerPoint - Lecture_Note_7.ppt [Compatibility Mode] Unix Process Department of Computer Engineering Kyung Hee University. Choong Seon Hong 1 유닉스기반다중서버구현방법 클라이언트들이동시에접속할수있는서버 서비스를동시에처리할수있는서버프로세스생성을통한멀티태스킹 (Multitasking) 서버의구현 select 함수에의한멀티플렉싱 (Multiplexing)

More information

untitled

untitled 시스템소프트웨어 : 운영체제, 컴파일러, 어셈블러, 링커, 로더, 프로그래밍도구등 소프트웨어 응용소프트웨어 : 워드프로세서, 스프레드쉬트, 그래픽프로그램, 미디어재생기등 1 n ( x + x +... + ) 1 2 x n 00001111 10111111 01000101 11111000 00001111 10111111 01001101 11111000

More information

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D> 리눅스 오류처리하기 2007. 11. 28 안효창 라이브러리함수의오류번호얻기 errno 변수기능오류번호를저장한다. 기본형 extern int errno; 헤더파일 라이브러리함수호출에실패했을때함수예 정수값을반환하는함수 -1 반환 open 함수 포인터를반환하는함수 NULL 반환 fopen 함수 2 유닉스 / 리눅스 라이브러리함수의오류번호얻기 19-1

More information

Microsoft PowerPoint - CSharp-10-예외처리

Microsoft PowerPoint - CSharp-10-예외처리 10 장. 예외처리 예외처리개념 예외처리구문 사용자정의예외클래스와예외전파 순천향대학교컴퓨터학부이상정 1 예외처리개념 순천향대학교컴퓨터학부이상정 2 예외처리 오류 컴파일타임오류 (Compile-Time Error) 구문오류이기때문에컴파일러의구문오류메시지에의해쉽게교정 런타임오류 (Run-Time Error) 디버깅의절차를거치지않으면잡기어려운심각한오류 시스템에심각한문제를줄수도있다.

More information

2017 년 6 월한국소프트웨어감정평가학회논문지제 13 권제 1 호 Abstract

2017 년 6 월한국소프트웨어감정평가학회논문지제 13 권제 1 호 Abstract 2017 년 6 월한국소프트웨어감정평가학회논문지제 13 권제 1 호 Abstract - 31 - 소스코드유사도측정도구의성능에관한비교연구 1. 서론 1) Revulytics, Top 20 Countries for Software Piracy and Licence Misuse (2017), March 21, 2017. www.revulytics.com/blog/top-20-countries-software

More information

DBPIA-NURIMEDIA

DBPIA-NURIMEDIA 게스트운영체제의실시간성지원을위한타이머하이퍼콜 게스트운영체제의실시간성지원을위한타이머하이퍼콜 박미리 홍철호 유시환 유혁 가상화환경에서는여러개의게스트운영체제가자원을공유하고있는데특히 는시간분할방식에의해분배된다 따라서각가상머신은모든물리시간을점유하지못하고 이는 를점유하지못한시간에동작해야하는태스크실행이보장되지못하는결과를야기시킨다 이와같은응답성의저하는기존의서버가상화에서치명적인문제가되지않으나임베디드시스템에서동작하는실시간태스크측면에서는중요하게다루어져야하는요구사항이된다

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 BOOTLOADER Jo, Heeseung 부트로더컴파일 부트로더소스복사및압축해제 부트로더소스는웹페이지에서다운로드 /working 디렉터리로이동한후, wget으로다운로드 이후작업은모두 /working 디렉터리에서진행 root@ubuntu:# cp /media/sm5-linux-111031/source/platform/uboot-s4210.tar.bz2 /working

More information

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher( 실행할페이지.jsp); 다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp"); dispatcher.forward(request, response); - 위의예에서와같이 RequestDispatcher

More information

RVC Robot Vaccum Cleaner

RVC Robot Vaccum Cleaner RVC Robot Vacuum 200810048 정재근 200811445 이성현 200811414 김연준 200812423 김준식 Statement of purpose Robot Vacuum (RVC) - An RVC automatically cleans and mops household surface. - It goes straight forward while

More information

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100 2015-1 프로그래밍언어 9. 연결형리스트, Stack, Queue 2015 년 5 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) 연결리스트 (Linked List) 연결리스트연산 Stack

More information

API 매뉴얼

API 매뉴얼 PCI-DIO12 API Programming (Rev 1.0) Windows, Windows2000, Windows NT and Windows XP are trademarks of Microsoft. We acknowledge that the trademarks or service names of all other organizations mentioned

More information

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A634C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A634C0CFC2F72E BC8A3C8AF20B8F0B5E55D> 뻔뻔한 AVR 프로그래밍 The 4 th Lecture 유명환 ( yoo@netplug.co.kr) 1 시간 (Time) 에대한정의 INDEX 2 왜타이머 (Timer) 와카운터 (Counter) 인가? 3 ATmega128 타이머 / 카운터동작구조 4 ATmega128 타이머 / 카운터관련레지스터 5 뻔뻔한노하우 : 레지스터비트설정방법 6 ATmega128

More information

chap 5: Trees

chap 5: Trees 5. Threaded Binary Tree 기본개념 n 개의노드를갖는이진트리에는 2n 개의링크가존재 2n 개의링크중에 n + 1 개의링크값은 null Null 링크를다른노드에대한포인터로대체 Threads Thread 의이용 ptr left_child = NULL 일경우, ptr left_child 를 ptr 의 inorder predecessor 를가리키도록변경

More information

Chapter 4. LISTS

Chapter 4. LISTS C 언어에서리스트구현 리스트의생성 struct node { int data; struct node *link; ; struct node *ptr = NULL; ptr = (struct node *) malloc(sizeof(struct node)); Self-referential structure NULL: defined in stdio.h(k&r C) or

More information

C++ Programming

C++ Programming C++ Programming 예외처리 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 예외처리 2 예외처리 예외처리 C++ 의예외처리 예외클래스와객체 3 예외처리 예외를처리하지않는프로그램 int main() int a, b; cout > a >> b; cout

More information

Microsoft PowerPoint - o5.pptx

Microsoft PowerPoint - o5.pptx 5 장. CPU 스케줄링 1 목표 multiprogramming 운영체제의기반인 CPU 스케줄링소개 다양한 CPU 스케줄링알고리즘 CPU 스케줄링알고리즘선택을위한평가기준 스케줄링알고리즘사례 2 5.1 기본개념 multiprogramming 의목적 CPU 이용률최대화 CPU-I/O Burst Cycle 프로세스실행은 CPU 실행과 I/O 대기의사이클로구성됨 CPU

More information

11장 포인터

11장 포인터 Dynamic Memory and Linked List 1 동적할당메모리의개념 프로그램이메모리를할당받는방법 정적 (static) 동적 (dynamic) 정적메모리할당 프로그램이시작되기전에미리정해진크기의메모리를할당받는것 메모리의크기는프로그램이시작하기전에결정 int i, j; int buffer[80]; char name[] = data structure"; 처음에결정된크기보다더큰입력이들어온다면처리하지못함

More information

지난시간에... 우리는 kernel compile을위하여 cross compile 환경을구축했음. UBUNTU 12.04에서 arm-2009q3를사용하여 간단한 c source를빌드함. 한번은 intel CPU를위한 gcc로, 한번은 ARM CPU를위한 gcc로. AR

지난시간에... 우리는 kernel compile을위하여 cross compile 환경을구축했음. UBUNTU 12.04에서 arm-2009q3를사용하여 간단한 c source를빌드함. 한번은 intel CPU를위한 gcc로, 한번은 ARM CPU를위한 gcc로. AR Configure Kernel Build Environment And kernel & root file system Build 2018-09-27 VLSI Design Lab 1 지난시간에... 우리는 kernel compile을위하여 cross compile 환경을구축했음. UBUNTU 12.04에서 arm-2009q3를사용하여 간단한 c source를빌드함.

More information

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - ch07 - 포인터 pm0415 2015-1 프로그래밍언어 7. 포인터 (Pointer), 동적메모리할당 2015 년 4 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) Outline 포인터 (pointer) 란? 간접참조연산자

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 7-Segment Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 의 M3 Module 에는 6 자리를가지는 7-Segment 모듈이아래그림처럼실장 6 Digit 7-Segment 2 6-Digit 7-Segment LED controller 16비트로구성된 2개의레지스터에의해제어 SEG_Sel_Reg(Segment

More information

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD>

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD> 2006 년 2 학기윈도우게임프로그래밍 제 8 강프레임속도의조절 이대현 한국산업기술대학교 오늘의학습내용 프레임속도의조절 30fps 맞추기 스프라이트프레임속도의조절 프레임속도 (Frame Rate) 프레임속도란? 얼마나빨리프레임 ( 일반적으로하나의완성된화면 ) 을만들어낼수있는지를나타내는척도 일반적으로초당프레임출력횟수를많이사용한다. FPS(Frame Per Sec)

More information

Microsoft PowerPoint - o5.pptx

Microsoft PowerPoint - o5.pptx 목표 5 장. CPU 스케줄링 multiprogramming 운영체제의기반인 CPU 스케줄링소개 다양한 CPU 스케줄링알고리즘 CPU 스케줄링알고리즘선택을위한평가기준 스케줄링알고리즘사례 1 2 5.1 기본개념 CPU-burst 시간의분포도 multiprogramming 의목적 CPU 이용률최대화 exponential ( e - x ) or hyperexponential

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 7-SEGMENT DEVICE CONTROL - DEVICE DRIVER Jo, Heeseung 디바이스드라이버구현 : 7-SEGMENT HBE-SM5-S4210 의 M3 Module 에는 6 자리를가지는 7-Segment 모듈이아래그림처럼실장 6 Digit 7-Segment 2 디바이스드라이버구현 : 7-SEGMENT 6-Digit 7-Segment LED

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 7-Segment Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 의 M3 Module 에는 6 자리를가지는 7-Segment 모듈이아래그림처럼실장 6 Digit 7-Segment 2 6-Digit 7-Segment LED Controller 16비트로구성된 2개의레지스터에의해제어 SEG_Sel_Reg(Segment

More information

歯3이화진

歯3이화진 http://www.kbc.go.kr/ Abstract Terrestrial Broadcasters Strategies in the Age of Digital Broadcasting Wha-Jin Lee The purpose of this research is firstly to investigate the

More information

JAVA PROGRAMMING 실습 09. 예외처리

JAVA PROGRAMMING 실습 09. 예외처리 2015 학년도 2 학기 예외? 프로그램실행중에발생하는예기치않은사건 예외가발생하는경우 정수를 0으로나누는경우 배열의크기보다큰인덱스로배열의원소를접근하는경우 파일의마지막부분에서데이터를읽으려고하는경우 예외처리 프로그램에문제를발생시키지않고프로그램을실행할수있게적절한조치를취하는것 자바는예외처리기를이용하여예외처리를할수있는기법제공 자바는예외를객체로취급!! 나뉨수를입력하시오

More information

슬라이드 1

슬라이드 1 프로세스 (Process) (1) Chapter #5 Process 정의 Process 구조 Process Context Process Scheduling 강의목차 Unix System Programming 2 Program( 프로그램 ) Process 정의 (1) 기계어명령어와데이터를모아놓은실행파일 C 언어등프로그램언어로작성된소스파일을컴파일링하여생성 COFF(Common

More information

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning C Programming Practice (II) Contents 배열 문자와문자열 구조체 포인터와메모리관리 구조체 2/17 배열 (Array) (1/2) 배열 동일한자료형을가지고있으며같은이름으로참조되는변수들의집합 배열의크기는반드시상수이어야한다. type var_name[size]; 예 ) int myarray[5] 배열의원소는원소의번호를 0 부터시작하는색인을사용

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Verilog: Finite State Machines CSED311 Lab03 Joonsung Kim, joonsung90@postech.ac.kr Finite State Machines Digital system design 시간에배운것과같습니다. Moore / Mealy machines Verilog 를이용해서어떻게구현할까? 2 Finite State

More information

adfasdfasfdasfasfadf

adfasdfasfdasfasfadf C 4.5 Source code Pt.3 ISL / 강한솔 2019-04-10 Index Tree structure Build.h Tree.h St-thresh.h 2 Tree structure *Concpets : Node, Branch, Leaf, Subtree, Attribute, Attribute Value, Class Play, Don't Play.

More information

<3235B0AD20BCF6BFADC0C720B1D8C7D120C2FC20B0C5C1FE20322E687770>

<3235B0AD20BCF6BFADC0C720B1D8C7D120C2FC20B0C5C1FE20322E687770> 25 강. 수열의극한참거짓 2 두수열 { }, {b n } 의극한에대한 < 보기 > 의설명중옳은것을모두고르면? Ⅰ. < b n 이고 lim = 이면 lim b n =이다. Ⅱ. 두수열 { }, {b n } 이수렴할때 < b n 이면 lim < lim b n 이다. Ⅲ. lim b n =0이면 lim =0또는 lim b n =0이다. Ⅰ 2Ⅱ 3Ⅲ 4Ⅰ,Ⅱ 5Ⅰ,Ⅲ

More information

Visual Basic 반복문

Visual Basic 반복문 학습목표 반복문 For Next문, For Each Next문 Do Loop문, While End While문 구구단작성기로익히는반복문 2 5.1 반복문 5.2 구구단작성기로익히는반복문 3 반복문 주어진조건이만족하는동안또는주어진조건이만족할때까지일정구간의실행문을반복하기위해사용 For Next For Each Next Do Loop While Wend 4 For

More information

슬라이드 1

슬라이드 1 / 유닉스시스템개요 / 파일 / 프로세스 01 File Descriptor file file descriptor file type unix 에서의파일은단지바이트들의나열임 operating system 은파일에어떤포맷도부과하지않음 파일의내용은바이트단위로주소를줄수있음 file descriptor 는 0 이나양수임 file 은 open 이나 creat 로 file

More information

UI TASK & KEY EVENT

UI TASK & KEY EVENT 2007. 2. 5 PLATFORM TEAM 정용학 차례 CONTAINER & WIDGET SPECIAL WIDGET 질의응답및토의 2 Container LCD에보여지는화면한개 1개이상의 Widget을가짐 3 Container 초기화과정 ui_init UMP_F_CONTAINERMGR_Initialize UMP_H_CONTAINERMGR_Initialize

More information

Microsoft PowerPoint - 03-Development-Environment-2.ppt

Microsoft PowerPoint - 03-Development-Environment-2.ppt 개발환경 2 임베디드시스템소프트웨어 I 차례 부트로더의기능, 컴파일방법 커널의기능, 컴파일방법 파일시스템의기능, 생성방법 Host-KIT 네트워크연결방법 (Bootp, TFTP, NFS) 개발환경 2 2 부트로더의기능 하드웨어초기화 CPU clock, Memory Timing, Interrupt, UART, GPIO 등을초기화 커널로드 커널이미지를 flash

More information

Microsoft PowerPoint - 03.OS.pptx

Microsoft PowerPoint - 03.OS.pptx 운영체제 Company Logo @ 2010 년 2 학기컴퓨터의개념및실습서울대학교통계학과 (http://dcom10.ez.ro) 시스템소프트웨어 소프트웨어 = 시스템소프트웨어 + 응용소프트웨어 시스템소프트웨어 사용자 ( 또는응용소프트웨어 ) 가컴퓨터시스템을용이하게활용하도록지원함 운영체제, 컴파일러, 시스템도구등 운영체제 (Operating System) 하드웨어와응용프로그램사이의인터페이스역할을담당하는시스템소프트웨어

More information

Microsoft PowerPoint - o4.pptx

Microsoft PowerPoint - o4.pptx 목표 쓰레드 (thread) 개념소개 Thread API Multithreaded 프로그래밍관련이슈 4 장. 쓰레드 2 4.1 개요 쓰레드 쓰레드 (Thread ) CPU 이용의기본실행단위 단일쓰레드 (Single threaded) Processes 전통적인프로세스 한개의실행단위로구성 다중쓰레드 (Multithreaded) Process 여러개의실행쓰레드를갖는프로세스

More information

UI TASK & KEY EVENT

UI TASK & KEY EVENT T9 & AUTOMATA 2007. 3. 23 PLATFORM TEAM 정용학 차례 T9 개요 새로운언어 (LDB) 추가 T9 주요구조체 / 주요함수 Automata 개요 Automata 주요함수 추후세미나계획 질의응답및토의 T9 ( 2 / 30 ) T9 개요 일반적으로 cat 이라는단어를쓸려면... 기존모드 (multitap) 2,2,2, 2,8 ( 총 6번의입력

More information

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조 - Part2- 제 2 장다차원배열이란무엇인가 학습목차 2.1 다차원배열이란 2. 2 2 차원배열의주소와값의참조 2.1 다차원배열이란 2.1 다차원배열이란 (1/14) 다차원배열 : 2 차원이상의배열을의미 1 차원배열과다차원배열의비교 1 차원배열 int array [12] 행 2 차원배열 int array [4][3] 행 열 3 차원배열 int array [2][2][3]

More information

Adobe Flash 취약점 분석 (CVE-2012-0754)

Adobe Flash 취약점 분석 (CVE-2012-0754) 기술문서 14. 08. 13. 작성 GNU C library dynamic linker $ORIGIN expansion Vulnerability Author : E-Mail : 윤지환 131ackcon@gmail.com Abstract 2010 년 Tavis Ormandy 에 의해 발견된 취약점으로써 정확한 명칭은 GNU C library dynamic linker

More information

Microsoft PowerPoint - additional01.ppt [호환 모드]

Microsoft PowerPoint - additional01.ppt [호환 모드] 1.C 기반의 C++ part 1 함수 오버로딩 (overloading) 디폴트매개변수 (default parameter) 인-라인함수 (in-line function) 이름공간 (namespace) Jong Hyuk Park 함수 Jong Hyuk Park 함수오버로딩 (overloading) 함수오버로딩 (function overloading) C++ 언어에서는같은이름을가진여러개의함수를정의가능

More information

[Brochure] KOR_TunA

[Brochure] KOR_TunA LG CNS LG CNS APM (TunA) LG CNS APM (TunA) 어플리케이션의 성능 개선을 위한 직관적이고 심플한 APM 솔루션 APM 이란? Application Performance Management 란? 사용자 관점 그리고 비즈니스 관점에서 실제 서비스되고 있는 어플리케이션의 성능 관리 체계입니다. 이를 위해서는 신속한 장애 지점 파악 /

More information

JVM 메모리구조

JVM 메모리구조 조명이정도면괜찮조! 주제 JVM 메모리구조 설미라자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조장. 최지성자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조원 이용열자료조사, 자료작성, PPT 작성, 보고서작성. 이윤경 자료조사, 자료작성, PPT작성, 보고서작성. 이수은 자료조사, 자료작성, PPT작성, 보고서작성. 발표일 2013. 05.

More information