KR20130066900A - 연성 실시간 운영체제의 실시간성 확보방법 - Google Patents

연성 실시간 운영체제의 실시간성 확보방법 Download PDF

Info

Publication number
KR20130066900A
KR20130066900A KR1020110133658A KR20110133658A KR20130066900A KR 20130066900 A KR20130066900 A KR 20130066900A KR 1020110133658 A KR1020110133658 A KR 1020110133658A KR 20110133658 A KR20110133658 A KR 20110133658A KR 20130066900 A KR20130066900 A KR 20130066900A
Authority
KR
South Korea
Prior art keywords
core
thread
work thread
work
task
Prior art date
Application number
KR1020110133658A
Other languages
English (en)
Other versions
KR101901587B1 (ko
Inventor
이희국
김윤수
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020110133658A priority Critical patent/KR101901587B1/ko
Priority to US13/712,198 priority patent/US9229765B2/en
Priority to JP2012272714A priority patent/JP6296678B2/ja
Publication of KR20130066900A publication Critical patent/KR20130066900A/ko
Application granted granted Critical
Publication of KR101901587B1 publication Critical patent/KR101901587B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

멀티코어 플랫폼에서 스레드가 수행되는 코어를 변경하면서 스레드가 수행되도록 하여 연성 실시간 운영체제의 실시간성을 확보하는 방법을 제공한다. 멀티코어 플랫폼에서 연성 실시간 운영체제의 실시간성 확보방법은 작업 스레드를 우선순위로 결정하는 단계, 작업 스레드를 수행하는 단계, 작업 스레드가 수행될 코어를 결정하는 단계, 작업 스레드가 수행될 코어가 결정되면, 결정된 코어로 작업 스레드를 이동시키는 단계를 포함한다.

Description

연성 실시간 운영체제의 실시간성 확보방법{Method to guarantee real time for soft real time operating system}
멀티코어 또는 매니코어가 사용되는 모바일 디바이스, 멀티미디어 디바이스, 홈 디바이스 등의 임베디드 시스템에서 사용하는 소프트웨어 프레임웍에 관한 것이다.
실시간 운영체제(Real time operating system, RTOS)란, 실시간 응용 프로그램의 요청을 고려한 운영체제이다.
실시간 운영체제는 응용 프로그램의 개발자나 프로그래머가 계산한 실행 타이밍이나 실행시간에 응용 프로그램을 실행시킨다.
실시간 운영체제는 경성(hard) 실시간 운영체제와 연성(soft) 실시간 운영체제로 나눌 수 있는데, 연성 실시간 운영체제는 윈도우나 리눅스 같은 general purpose OS의 라이브러리와 프로그램들을 사용 가능하다는 장점이 있지만, 경성 실시간 운영체제에 비해 지터가 많은 단점이 있다.
연성 실시간 운영체제에서 경성 실시간 운영체제만큼의 실시간성의 확보를 위해서는 지터(jitter)를 감소시키는 것이 중요하다.
본 발명의 일 측면은 멀티코어 플랫폼에서 스레드가 수행되는 코어를 변경하면서 스레드가 수행되도록 하여 연성 실시간 운영체제의 실시간성을 확보하는 방법을 제공한다.
본 발명의 일 측면에 따른 연성 실시간 운영체제의 실시간성 확보방법은멀티코어 플랫폼에서 연성 실시간 운영체제의 실시간성 확보방법에 있어서, 작업 스레드(thread)를 우선순위로 결정하는 단계; 상기 작업 스레드를 수행하는 단계; 상기 작업 스레드가 수행될 코어를 결정하는 단계; 상기 작업 스레드가 수행될 코어가 결정되면, 결정된 코어로 상기 작업 스레드를 이동시키는 단계;를 포함하는 것을 특징으로 한다.  
또한, 상기 작업 스레드를 이동시키면, 작업 스레드의 수행주기가 도래할 때까지 기다리는 단계; 상기 작업 스레드의 수행주기가 도래하면 상기 이동된 코어에서 상기 작업 스레드를 수행하는 단계;를 더 포함할 수 있다.
또한, 상기 작업 스레드의 수행주기가 도래할 때까지 기다리는 것은 스피닝(spinning)으로 구성되거나 스피닝과 슬립(sleep)의 조합으로 구성될 수 있다.
또한, 상기 작업 스레드를 수행하는 단계는, 미리 정해진 상기 작업 스레드의 수행주기가 시작되면 상기 작업 스레드를 수행하는 것을 포함할 수 있다.
또한, 상기 작업 스레드가 수행될 코어를 결정하는 단계는, 미리 정해진 작업 스레드 배치방법에 따라 다음 주기의 작업 스레드가 수행될 코어를 결정하는 것을 포함할 수 있다.
본 발명의 일 측면은 연성 실시간 운영체제의 실시간성 확보방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공한다.
본 발명의 일 측면에 의한 연성 실시간 운영체제의 실시간성 확보장치는 멀티코어 플랫폼에서 연성 실시간 운영체제의 실시간성 확보장치에 있어서, 수행 중인 우선순위의 작업 스레드를 미리 정해진 작업 스레드 배치방법에 따라 전송하는 제1코어; 및 상기 제1코어에서 전송된 작업 스레드를 수신하고, 상기 작업 스레드의 수행주기가 도래하면 상기 작업 스레드를 수행하는 제2코어를 포함하는 것을 특징으로 한다.
또한, 상기 제2코어는 스피닝 또는, 스피닝과 슬립의 조합을 통해 상기 작업 스레드의 수행주기가 도래했는지 결정할 수 있다.
또한, 상기 제1코어는 상기 작업 스레드를 상기 제2코어로 전송하면, 다른 스레드를 수행할 수 있다.
또한, 상기 제2코어는 제1코어에서 전송된 작업 스레드를 수행하고, 미리 정해진 작업 스레드 배치방법에 따라 다음 주기의 작업 스레드가 수행될 코어를 결정할 수 있다.
도 1 및 도 2는 멀티코어 플랫폼의 구성도이다.
도 3 및 도 4는 멀티코어 플랫폼에서의 태스크 이동을 나타낸 도면이다.
도 5는 본 발명의 일 실시예에 따른 로컬 메모리의 구조를 나타낸 도면이다.
도 6은 본 발명의 일 실시예에 따른 멀티코어 플랫폼에서 태스크의 이동을 나타낸 도면이다.
도 7 및 도 8은 실시간 운영체제의 작업수행구조를 나타낸 도면이다.
도 9 및 도 10은 본 발명의 일 실시예에 따른 연성 실시간 운영체제가 멀티코어 플랫폼에서 실시간성을 확보하기 위한 작업수행구조를 나타낸 도면이다.
이하 본 발명을 도면을 참조하여 구체적으로 설명한다.
멀티코어 플랫폼에서 멀티태스킹(multi-tasking)을 수행하기 위하여 운영체제는 수행하고자 하는 태스크들 각각을 각각의 코어에 할당하고 각각의 태스크의 우선 순위에 따라 각각의 태스크를 스케줄링한다.
이때, 태스크가 다수의 코어 중 어느 코어에서 수행될지를 결정하고, 각 태스크를 해당 코어에 할당하는 방법은 크게 정적인(static) 방법과 동적인(dynamic) 방법으로 나누어 볼 수 있고, 멀티 코어 시스템에서의 태스크의 이동에 대해서 좀 더 상세히 알아보면 다음과 같다.
우선, 코어 간의 태스크 이동을 위해서는 태스크가 수행되던 상태를 나타내는 정보를 이전 코어에서 다음에 수행될 코어로 모두 이동시켜야 한다. 이러한 상태 정보에는 태스크가 사용하던 코어의 레지스터 파일(register file) 정보뿐만 아니라, 태스크가 사용하던 메모리의 내용도 함께 포함된다.
일반적으로, 멀티 코어 플랫폼에서는 캐쉬(cache)이외에 코어 별로 스크래치패드 메모리(SPM: ScratchPad Memory)와 같은 로컬 메모리(local memory)가 사용된다.
스크래치패드 메모리는 캐쉬처럼 하드웨어에 의해 일관성(consistency)이 유지되지 않기 때문에 응용 프로그램이나 운영체제에서 소프트웨어적으로 필요한 데이터를 DRAM이나 다른 메모리로부터 가지고 와야 한다. 스크래치패드 메모리는 하드웨어 구성에 따라 수백KB를 차지하므로, 메모리의 내용을 이동시키는 비용을 줄이는 것이 중요하다.
이러한 메모리의 내용에 대한 이동을 위해서, 기존 방법에서는 전체 복사(total copy), 선행 복사(pre-copy), 디맨드 페이지(demand page) 방법 등이 제안되었다. 여기서, 전체 복사는 태스크의 수행을 일시적으로 중단하고 로컬 메모리의 내용 등을 포함한 모든 정보를 이동시킨 후, 새로운 코어에서 태스크의 수행을 속행(resume)하는 방법이다.
한편, 선행 복사는 로컬 메모리의 페이지 수정이 일정 수준 이하로 내려갈 때까지 태스크 수행과 로컬 메모리의 내용 이동을 병행하다가 일정 수준 이하가 되면 태스크의 수행을 중단하고, 나머지를 이동시키는 방법이다.
마지막으로, 디멘드 페이지는 가상 메모리의 디맨드 페이징(demand paging) 방법을 사용하여 태스크를 바로 이동시킨 후 필요한 메모리 내용을 페이지 폴트(page fault)가 발생할 때마다 복사해 오는 방법이다.
이러한 종래의 메모리 내용에 대한 이동은 주로 분산 시스템에서 빠른 태스크 이동을 위해 제안되었다. 그 밖에도, 멀티코어 플랫폼에서 스케줄링에 따라 수행될 태스크의 데이터를 미리 로딩하는 방법을 사용하여, 이와 같은 로딩에 의해 태스크 수행이 멈추는 시간을 줄이는 방법이 제안되었다.
전체 복사(total copy), 선행 복사(pre-copy), 디멘드 페이지(demand page) 방법은 주로 실 시간성이 요구되지 않는 분산 시스템에서 사용되는 방법으로 멀티코어 플랫폼에는 적합하지 않다.
특히, 전체 복사 방법은 태스크가 사용하는 로컬 메모리의 내용 전체를 복사하는 동안 태스크의 수행이 멈춰 있어야 하므로 태스크 수행이 오래 동안 중단된다.
또한, 선행 복사 방법은 동일한 로컬 메모리의 내용에 대한 복사가 여러 번 일어날 수 있으므로 메모리 복사에 의한 오버헤드가 크다. 특히, 멀티코어 플랫폼에서는 태스크에 대한 데이터를 로컬 메모리의 입력 버퍼에 저장한 후 이것을 처리하여 출력 버퍼에 저장하는 작업을 반복하는데, 이 데이터에 대한 고려가 없이 메모리의 내용 전체를 복사함에 따라 불필요한 데이터의 이동이 발생하게 된다. 또한, 디멘드 페이지 방법은 가상 메모리 하드웨어가 제공되어야 하는데, 임베디드 시스템에서는 많은 경우 이를 제공하지 않고 있어 사용되기 어렵다.
한편, 멀티코어 플랫폼에서 스케줄링에 따라 수행될 태스크 데이터를 미리 로딩하는 방법은 주로 태스크가 새로 로딩될 때 로딩 시간을 이전 태스크의 수행시간과 중첩(overlap)시켜 성능을 향상시키는 방법으로 태스크의 수행 중에 태스크 중단 없이 태스크를 이동시키는 것과는 상이하다.
도 1은 멀티코어/매니코어 플랫폼의 구성도이다.
도 1을 참조하면, 본 실시예가 적용되는 멀티코어/매니코어 플랫폼은 제 1 코어(11), 제 1 스크래치패드 메모리(12), 제 2 코어(21), 제 2스크래치패드 메모리(22), 제 3 코어(31), 제 3 스크래치패드 메모리(32), ..., 제 N 코어(41), 제 N 스크래치 패드 메모리(42), DRAM(5), DMA(Direct Memory Access)(6), H/W 모듈(7) 및 통신 네트워크(8)로 구성된다.
도 1에 도시된 각 코어는 특정 태스크를 수행한다. 코어들은 동종의(homogeneous) 코어들로 구성될 수도 있고, CPU(Central Processing unit), DSP(Digital signal processor), 재구성 가능한 프로세서(Reconfigurable Processor, RP) 등의 이종의(heterogeneous) 코어들로 구성될 수 있다.
또한, 각 코어는 스크래치패드 메모리와 같은 로컬 메모리를 가지고 있으며, 여기에 태스크 수행에 필요한 코드들과 데이터가 저장된다. 즉, 각 코어는 태스크의 코드들과 데이터를 DRAM(5)으로부터 로컬 메모리에 복사한 후, 이것에 기초하여 태스크를 수행한다.
각 코어는 DRAM(5)에 비해 로컬 메모리에 보다 빨리 접근할 수 있기 때문에 태스크를 빠르게 수행할 수 있다. 어떤 코어에서 다른 코어로 태스크를 이동시키기 위해서는 로컬 메모리의 내용 등을 포함한 태스크의 현재 수행 상태를 새로운 코어로 옮겨야 한다.
H/W 모듈(7)은 멀티코어/매니코어 플랫폼 특유의 기능을 지원한다. 멀티코어/매니코어 플랫폼이 동영상 재생 장치라면, H/W 모듈(7)은 동영상 코덱 모듈이 될 수 있다. 또한, 통신 네트워크(8)는 도 1에 도시된 구성 요소들을 연결하며, 버스의 형태로 구현될 수 있다.
도 2는 도 1에 도시된 멀티코어/매니코어 플랫폼 중 코어들이 매쉬(mesh) 형태로 연결된 구조의 예시도이다.
도2에 도시된 매쉬 형태 이외에도 멀티코어/매니코어 플랫폼의 코어들은 다양한 연결 방식을 가질 수 있다.
도 2를 참조하면, 코어들간의 연결 방식에 따라 코어들간의 통신 속도는 다르게 나타날 수 있음을 알 수 있다. 즉, 서로 가까운 곳에 배치된 코어들간의 통신이 멀리 배치된 코어간의 통신보다 더 빠르다. 따라서, 각 코어에 태스크들을 배치할 때에도 태스크들간의 통신 양에 따라 그 배치를 다르게 해야 한다. 이를 적용하면, 시스템의 로드나 응용의 조합에 따라 태스크의 배치가 성능에 영향을 주는 것을 알 수 있다. 따라서, 최적의 성능을 보일 수 있도록 시스템을 구성하기 위해서는 태스크들의 배치를 코어들의 배치 환경에 맞게 변화시켜야 한다.
도 3 및 도 4는 일반적인 멀티 코어 시스템에서의 태스크 이동 모습을 도시한 도면이다. 도 3 및 도 4에 도시된 바와 같이, 일반적으로 제 1 코어(110)로부터 제 2 코어(210)로 태스크를 이동시키기 위해서는, 제 1 코어(110)는 태스크의 수행을 일단 중단하고, 로컬 메모리(120)의 내용 등을 포함한 태스크의 현재 수행 상태를 나타내는 정보를 모두 제 2 코어(210)로 옮긴 후에 제 2 코어(210)에서 태스크 수행을 속행한다.
이때, 로컬 메모리는 하드웨어 구성에 따라 수백 KB가 되므로 그 내용이 이동되는 동안 태스크 수행이 중단되게 된다.
도 5는 로컬 메모리의 구조에 대한 예시도이다.
도 5에는 하나의 태스크가 하나의 로컬 메모리를 모두 사용하고 있지만, 다수의 태스크가 하나의 로컬 메모리를 나누어 사용할 수도 있도록 구성하는 것도 가능하다.
도 5를 참조하면, 태스크가 사용하는 로컬 메모리는 태스크의 코드들이 저장되는 영역, 읽기 전용 데이터(Read Only data)가 저장되는 영역, 읽기 쓰기 데이터(Read Write data)가 저장되는 영역, 입력(input) 버퍼 및 출력(output) 버퍼로 구성된다. 이와 같은 영역들은 로컬 메모리의 논리적 맵에 해당한다.
태스크는 일련의 명령어들(instruction)의 집합이다. 태스크의 코드들은 이 명령어들을 나타낸다.
태스크의 읽기 전용 데이터는 코어에 의한 태스크 수행에 필요한 데이터 중 태스크 수행에 의해 변경되지 않는 데이터를 말한다. 태스크의 읽기 쓰기 데이터는 코어에 의한 태스크 수행에 필요한 데이터 중 태스크 수행에 의해 변경되는 데이터를 말한다.
입력 버퍼에는 태스크에 대해 입력되는 데이터가 저장된다. 출력 버퍼에는 태스크 수행에 따라 입력 버퍼에 저장된 데이터가 처리된 후, 그 처리 결과가 저장된다.
로컬 메모리에 관련된 태스크의 수행 동작을 살펴보면, 코어는 태스크의 수행과정에 필요한 데이터를 입력 버퍼로부터 읽어서, 이것을 처리한 후 그 결과를 출력 버퍼에 저장한다.
이때, 태스크의 상태 변화는 읽기 쓰기 데이터의 형태로 로컬 메모리에 저장된다. 태스크의 코드들과 읽기 전용 데이터는 태스크의 수행에 따라 그 값이 변경되지 않기 때문에 태스크의 수행과 무관하게 어떤 코어에서 다른 코어로 이동시킬 수 있다.
그리고, 입력 버퍼와 출력 버퍼의 데이터는 현재 이것을 처리할 코어에 의해 접근될 수 있으면 된다. 이와 같이, 로컬 메모리에 저장된 데이터를 그 데이터의 속성에 따라 이동시키기 위해서는 같은 속성의 데이터들이 도 5와 같이 연속적으로 모여 있는 것이 좋지만, 반드시 연속되어 있을 필요는 없음을 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 이해할 수 있다.
도 6은 본 발명의 실시예에 따른 멀티 코어 플랫폼에서 태스크 이동을 나타낸 도면이다. 도 6을 참조하면, 본 실시예에서는 상기된 내용에 착안하여 태스크 수행에도 변하지 않는 코드와 읽기 전용 데이터를 태스크 수행과 함께 중첩시켜서 미리 이동시키고 태스크 수행에 따라 변하는 읽기 쓰기 데이터를 이동시킬 때만 태스크 수행을 일시적으로 중단시켜서 태스크 수행이 중단되는 구간을 최소화한다. 이때, 태스크 수행에 따라 처리될 입력 데이터는 새로운 코어의 로컬 메모리로 전달되도록 설정하고, 현재 코어에서는 남아 있는 입출력 데이터만 처리하도록 한다. 따라서, 태스크 이동 중간에 일시적으로 현재 코어 및 새로운 코어에서 태스크가 동시에 수행되게 된다. 현재 코어에 남아있는 입출력 데이터의 처리가 종료되면, 태스크 이동이 완전히 종료되고 태스크가 사용하던 현재 코어의 로컬 메모리는 다른 태스크가 사용할 수 있다.
도 6에 도시된 실시예를 도 1에 도시된 멀티코어/매니코어 플랫폼에 적용하여, 본 실시예의 동작을 설명하면 다음과 같다. 태스크는 제 1 코어(11)로부터 제 2 코어(21)로 이동한다고 가정한다.
제 1 코어(11)는 현재 수행 중인 태스크의 코드들 및 읽기 전용 데이터를 제 2 코어(21)로 전송하고, 이 전송의 동작과 중첩시켜 태스크의 코드들, 읽기 전용 데이터, 읽기 쓰기 데이터 등에 기초하여 이 태스크에 대해 이미 입력된 데이터를 처리함으로써 태스크를 수행한다.
제 1 코어(11)는 이 태스크에 대해 이미 입력된 데이터에 대한 처리가 완료되면 태스크의 수행을 중단하고, 태스크들의 읽기 쓰기 데이터를 제 2 코어(21)로 전송한다. 제 2 코어(21)는 제 1 코어(11)로부터 전송된 코드들, 읽기 전용 데이터, 읽기 쓰기 데이터 등에 기초하여 태스크에 대해 입력될 데이터를 처리함으로써 중단된 태스크의 수행을 속행한다.
이상 멀티코어 플랫폼에서 태스크의 이동방법을 설명하였고, 이하 이러한 멀티코어 플랫폼에서 연성 실시간 운영체제가 실시간성을 확보할 수 있는 방법에 대해 설명한다.
도 7은 일반적인 운영체제 또는 연성 실시간 운영체제의 작업수행 구조를 나타낸 도면이고, 도 8는 도 1의 작업수행 구조에 따라 작업이 이루어지는 것을 나타낸 도면이다.
일반적으로, 응용 프로그램 레벨에서 실시간성을 지키기 위해서 사용하는 방법은 실시간으로 수행되어야 할 스레드(thread)의 우선순위를 최상위로 설정하고, 시스템의 락업(lock-up)을 방지하기 위해 중간에 슬립(sleep)구간을 넣는 것이다.
이렇게 할 경우, 실시간으로 수행되어야 할 스레드는 백그라운드에서 동작하는 프로그램에 영향을 받지 않게 되고, 운영체제는 슬립구간에서 실시간으로 수행되지 않아도 되는 다른 스레드를 수행함으로써 시스템 락업을 방지할 수 있다.
연성 실시간 운영체제의 경우, 도 1에 도시된 것과 같은 구조로 어플리케이션을 제작할 경우, 슬립 구간에서 다른 스레드가 점유하거나 운영체제의 스케줄링 문제로 예정된 슬립 구간보다 늦게 슬립이 해제되는 문제가 발생한다.
즉, 슬립 구간이 길어져서 실시간성이 지켜지지 않는 경우가 발생하는 것이다. 이를 해결하기 위해 슬립 구간을 제거하거나, 스피닝(spinning)을 이용할 경우, 시스템 락업이 발생할 수 있다.
도 9는 본 발명의 일 실시예에 따른 연성 실시간 운영체제의 작업수행 구조를 나타낸 도면이고, 도 10은 도 9의 작업수행 구조에 따라 작업이 이루어지는 것을 나타낸 도면이다.
본 발명의 일 실시예에 따른 연성 실시간 운영체제의 실시간성 확보방법은 멀티코어 중 어느 하나의 코어(이하 제1코어라고 함)에서 실시간으로 수행되어야 할 스레드의 우선순위를 최고순위로 설정한다.
실시간으로 수행되어야 할 스레드의 우선순위가 최고순위로 설정되면, 제1코어에서 해당 스레드가 수행된다.
스레드가 수행되면, 다음 주기의 스레드가 수행될 코어를 결정하고 결정된 코어(이하 제2코어라고 함)로 스레드를 이동시킨다. 여기서 스레드의 이동에는 전술한 멀티코어 플랫폼에서 태스크를 이동시키는 방법이 사용될 수 있다. 그리고 스레드를 이동시킬 코어를 결정하는 규칙은 코어를 주기별로 재배치하거나 시간대 별로 재배치하는 규칙이 사용될 수 있고, 코어 로드별로 재배치하거니 이벤트별로 재배치하는 규칙이 사용될 수도 있다.
스레드가 이동될 제2코어에서는 스레드가 이동되기 전에 실행되고 있던 다른 스레드의 수행을 멈추고 다음 주기가 도래할 때까지 기다리는 웨이팅(waiting) 구간을 가진다.
웨이팅 구간은 다음 주기의 도래를 지속적으로 확인하기 위해 스피닝으로 이루어지거나 슬립과 스피닝의 조합으로 이루어질 수 도 있다.
웨이팅 구간을 가지는 제2코어로 제1코어의 스레드가 이동되고, 스레드가 수행되어야 할 다음 주기가 도래하면, 웨이팅 구간이 종료되고 제2코어에서 스레드가 다시 수행된다. 도면상에서는 주기를 1초로 도시하였으나 이에 한정되는 것은 아니다.
이와 같은 구조는 웨이팅 구간에 슬립을 단독으로 사용하지 않고, 스피닝을 사용하거나 스피닝과 슬립을 조합하여 사용함으로써 코어의 점유를 다른 스레드에 빼앗기는 가능성을 제거할 수 있다.
또한, 슬립구간을 두는 것이 아니라, 전술한 규칙에 따라 CPU 코어를 옮겨 다니면서 수행함으로 모든 코어에 다른 스레드들이 점유할 수 있는 시간을 할당할 수 있게 되어 즉, 특정 코어를 완전히 점유하지 않게 되므로 시스템 락업이 발생하는 것을 막을 수 있다.

Claims (10)

  1. 멀티코어 플랫폼에서 연성 실시간 운영체제(Soft Real Time Operating System)의 실시간성 확보방법에 있어서,
    작업 스레드(thread)를 우선순위로 결정하는 단계;
    상기 작업 스레드를 수행하는 단계;
    상기 작업 스레드가 수행될 코어를 결정하는 단계;
    상기 작업 스레드가 수행될 코어가 결정되면, 결정된 코어로 상기 작업 스레드를 이동시키는 단계;를 포함하는 방법.  
  2. 제1항에 있어서,
    상기 작업 스레드를 이동시키면,
    작업 스레드의 수행주기가 도래할 때까지 기다리는 단계;
    상기 작업 스레드의 수행주기가 도래하면 상기 이동된 코어에서 상기 작업 스레드를 수행하는 단계;를 더 포함하는 방법.
  3. 제2항에 있어서,
    상기 작업 스레드의 수행주기가 도래할 때까지 기다리는 것은 스피닝(spinning)으로 구성되거나 스피닝과 슬립(sleep)의 조합으로 구성되는 방법.
  4. 제1항에 있어서,   
    상기 작업 스레드를 수행하는 단계는,
    미리 정해진 상기 작업 스레드의 수행주기가 시작되면 상기 작업 스레드를 수행하는 것을 포함하는 방법.
  5. 제1항에 있어서,
    상기 작업 스레드가 수행될 코어를 결정하는 단계는,
    미리 정해진 작업 스레드 배치방법에 따라 다음 주기의 작업 스레드가 수행될 코어를 결정하는 것을 포함하는 방법.
  6. 제1항 내지 제5항 중 어느 한 항의 방법을 컴퓨터에서 실행시키기 위한프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
  7. 멀티코어 플랫폼에서 연성 실시간 운영체제(Soft Real Time Operating System)의 실시간성 확보장치에 있어서,
    수행 중인 우선순위의 작업 스레드를 미리 정해진 작업 스레드 배치방법에 따라 전송하는 제1코어; 및
    상기 제1코어에서 전송된 작업 스레드를 수신하고, 상기 작업 스레드의 수행주기가 도래하면 상기 작업 스레드를 수행하는 제2코어를 포함하는 장치.
  8. 제7항에 있어서,
    상기 제2코어는 스피닝 또는, 스피닝과 슬립의 조합을 통해 상기 작업 스레드의 수행주기가 도래했는지 결정하는 장치.
  9. 제7항에 있어서,
    상기 제1코어는 상기 작업 스레드를 상기 제2코어로 전송하면, 다른 스레드를 수행하는 장치.
  10. 제7항에 있어서,
    상기 제2코어는 제1코어에서 전송된 작업 스레드를 수행하고, 미리 정해진 작업 스레드 배치방법에 따라 다음 주기의 작업 스레드가 수행될 코어를 결정하는 장치.
KR1020110133658A 2011-12-13 2011-12-13 연성 실시간 운영체제의 실시간성을 확보하는 방법 및 장치 KR101901587B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020110133658A KR101901587B1 (ko) 2011-12-13 2011-12-13 연성 실시간 운영체제의 실시간성을 확보하는 방법 및 장치
US13/712,198 US9229765B2 (en) 2011-12-13 2012-12-12 Guarantee real time processing of soft real-time operating system by instructing core to enter a waiting period prior to transferring a high priority task
JP2012272714A JP6296678B2 (ja) 2011-12-13 2012-12-13 ソフトリアルタイムオペレーティングシステムの実時間性を確保する方法及び装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110133658A KR101901587B1 (ko) 2011-12-13 2011-12-13 연성 실시간 운영체제의 실시간성을 확보하는 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20130066900A true KR20130066900A (ko) 2013-06-21
KR101901587B1 KR101901587B1 (ko) 2018-10-01

Family

ID=48573289

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110133658A KR101901587B1 (ko) 2011-12-13 2011-12-13 연성 실시간 운영체제의 실시간성을 확보하는 방법 및 장치

Country Status (3)

Country Link
US (1) US9229765B2 (ko)
JP (1) JP6296678B2 (ko)
KR (1) KR101901587B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10296381B2 (en) 2016-03-04 2019-05-21 Agency For Defense Development Method and system for analyzing task group schedulability for hard real-time scheduling
KR20220085366A (ko) * 2020-12-15 2022-06-22 현대오토에버 주식회사 차량용 제어기 및 그것의 운영체제 스케쥴링 방법

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6087662B2 (ja) * 2013-02-28 2017-03-01 株式会社東芝 制御装置、制御プログラム及び情報処理システム
JP6287923B2 (ja) 2015-03-26 2018-03-07 コニカミノルタ株式会社 マルチコアプロセッサーにタスクを実行させる、装置、プログラム、およびプログラムを記録した記録媒体、ならびに方法
JP6464982B2 (ja) * 2015-10-07 2019-02-06 株式会社デンソー 並列化方法、並列化ツール、車載装置
US10140131B2 (en) 2016-08-11 2018-11-27 International Business Machines Corporation Shielding real-time workloads from OS jitter due to expedited grace periods
CN109522101B (zh) * 2017-09-20 2023-11-14 三星电子株式会社 用于调度多个操作系统任务的方法、系统和/或装置
CN111381945B (zh) * 2018-12-29 2024-02-09 华为技术有限公司 任务迁移方法及电子设备
US11570176B2 (en) 2021-01-28 2023-01-31 Bank Of America Corporation System and method for prioritization of text requests in a queue based on contextual and temporal vector analysis

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2597401A (en) 1999-12-22 2001-07-03 Ubicom, Inc. System and method for instruction level multithreading in an embedded processor using zero-time context switching
US6874076B2 (en) * 2002-09-30 2005-03-29 International Business Machines Corporation Method, system, and computer program product for migrating data from one real page to another
JP3964821B2 (ja) * 2003-04-21 2007-08-22 株式会社東芝 プロセッサ、キャッシュシステム及びキャッシュメモリ
JP4433782B2 (ja) 2003-12-17 2010-03-17 株式会社日立製作所 情報処理装置及びオペレーティングシステム
GB0519981D0 (en) 2005-09-30 2005-11-09 Ignios Ltd Scheduling in a multicore architecture
JP5235870B2 (ja) * 2007-04-09 2013-07-10 パナソニック株式会社 マルチプロセッサ制御装置、その制御方法および集積回路
US7886172B2 (en) * 2007-08-27 2011-02-08 International Business Machines Corporation Method of virtualization and OS-level thermal management and multithreaded processor with virtualization and OS-level thermal management
US20090089792A1 (en) * 2007-09-27 2009-04-02 Sun Microsystems, Inc. Method and system for managing thermal asymmetries in a multi-core processor
KR101366075B1 (ko) * 2007-12-20 2014-02-21 삼성전자주식회사 멀티코어 플랫폼에서의 태스크 이동 방법 및 장치
US8219994B2 (en) * 2008-10-23 2012-07-10 Globalfoundries Inc. Work balancing scheduler for processor cores and methods thereof
JP2010205046A (ja) * 2009-03-04 2010-09-16 Toyota Motor Corp 情報処理装置
KR101697937B1 (ko) * 2010-01-08 2017-02-01 삼성전자주식회사 멀티프로세서 시스템에서 동적 태스크 마이그레이션을 위한 방법 및 시스템

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10296381B2 (en) 2016-03-04 2019-05-21 Agency For Defense Development Method and system for analyzing task group schedulability for hard real-time scheduling
KR20220085366A (ko) * 2020-12-15 2022-06-22 현대오토에버 주식회사 차량용 제어기 및 그것의 운영체제 스케쥴링 방법

Also Published As

Publication number Publication date
US9229765B2 (en) 2016-01-05
JP2013125549A (ja) 2013-06-24
KR101901587B1 (ko) 2018-10-01
US20130152100A1 (en) 2013-06-13
JP6296678B2 (ja) 2018-03-20

Similar Documents

Publication Publication Date Title
KR101366075B1 (ko) 멀티코어 플랫폼에서의 태스크 이동 방법 및 장치
KR20130066900A (ko) 연성 실시간 운영체제의 실시간성 확보방법
Amert et al. GPU scheduling on the NVIDIA TX2: Hidden details revealed
EP3039540B1 (en) Virtual machine monitor configured to support latency sensitive virtual machines
Xu et al. Cache-aware compositional analysis of real-time multicore virtualization platforms
EP3425502A1 (en) Task scheduling method and device
KR101834195B1 (ko) 다중코어 시스템 및 로드 밸런싱 방법
US9632842B2 (en) Exclusive access control method prohibiting attempt to access a shared resource based on average number of attempts and predetermined threshold
US9417920B2 (en) Method and apparatus for dynamic resource partition in simultaneous multi-thread microprocessor
JP2005284749A (ja) 並列処理コンピュータ
De Oliveira et al. Timing analysis of the PREEMPT RT Linux kernel
CN112416546A (zh) 多任务调度方法、电子装置和计算机存储介质
WO2005048009A2 (en) Method and system for multithreaded processing using errands
US7225443B2 (en) Stack usage in computer-related operating systems
Pazzaglia et al. Optimizing inter-core communications under the LET paradigm using DMA engines
KR102003721B1 (ko) Gpu 커널 트랜잭션화 방법 및 컴퓨팅 장치
US8424013B1 (en) Methods and systems for handling interrupts across software instances and context switching between instances having interrupt service routine registered to handle the interrupt
Kim et al. Mixed-criticality on multicore (MC2): A status report
US10360652B2 (en) Wavefront resource virtualization
GB2489278A (en) Scheduling graphics processor tasks in parallel with corresponding cache coherency operations based on data dependencies
WO2019188177A1 (ja) 情報処理装置
JP2007122337A (ja) 演算装置
US8533696B1 (en) Methods and systems for allocating hardware resources to instances of software images
KR102575773B1 (ko) 대칭적 인터페이스를 이용하여 외부 서비스 요청 처리가 가능한 프로세서
JP7196439B2 (ja) 仮想化環境におけるデバイスへのアクセス方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant