KR100676671B1 - 유저 쓰레드 관리 장치 및 그 방법 - Google Patents

유저 쓰레드 관리 장치 및 그 방법 Download PDF

Info

Publication number
KR100676671B1
KR100676671B1 KR1020040105078A KR20040105078A KR100676671B1 KR 100676671 B1 KR100676671 B1 KR 100676671B1 KR 1020040105078 A KR1020040105078 A KR 1020040105078A KR 20040105078 A KR20040105078 A KR 20040105078A KR 100676671 B1 KR100676671 B1 KR 100676671B1
Authority
KR
South Korea
Prior art keywords
task
user
user thread
thread
threads
Prior art date
Application number
KR1020040105078A
Other languages
English (en)
Other versions
KR20060066465A (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 KR1020040105078A priority Critical patent/KR100676671B1/ko
Publication of KR20060066465A publication Critical patent/KR20060066465A/ko
Application granted granted Critical
Publication of KR100676671B1 publication Critical patent/KR100676671B1/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
    • 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

Abstract

1. 청구범위에 기재된 발명이 속하는 기술분야
본 발명은, 유저 쓰레드 관리 장치 및 그 방법에 관한 것임.
2. 발명이 해결하려고 하는 기술적 과제
본 발명은, 휴대 단말 등에서 소수의 태스크, 즉 유저 쓰레드를 관리하기 위한 핸들러 태스크와 상기 핸들러 태스크의 제어에 따라 유저 쓰레드를 실행시키는 유저 쓰레드 태스크를 이용하여 다수의 유저 쓰레드를 실행시킴으로써, 기존에 태스크와 유저 쓰레드를 일대일 매핑시켜야 하는 문제점을 해결하여, 자원 활용도를 높이고 한정된 자원을 가진 휴대 단말에 효율적인 멀티태스킹 환경을 제공하기 위한, 유저 쓰레드 관리 장치 및 그 방법을 제공하는데 그 목적이 있음.
3. 발명의 해결 방법의 요지
본 발명은, 유저 쓰레드 관리 장치에 있어서, 호스트 운영체제의 제어에 따라 유저 쓰레드 태스크를 생성한 후 상기 생성한 유저 쓰레드 태스크에서 실행시킬 유저 태스크를 관리하며, 상기 호스트 운영체제의 우선순위 스케줄링에 따라 소정 간격으로 실행되어, 상기 유저 쓰레드 태스크에서 실행될 유저 쓰레드들 간의 문맥 교환(Context Switch)을 결정하여, 결정된 문맥 교환(Context Switch)에 따라 유저 쓰레드의 실행 정보를 변경하기 위한 핸들러 태스크; 및 상기 핸들러 태스크의 제어에 의하여 생성되며, 상기 호스트 운영체제의 스케줄링에 따라 실행되어 상기 변경된 유저 쓰레드 실행 정보를 바탕으로 다수의 유저 쓰레드 중 해당 유저 쓰레드를 실행시키기 위한 상기 유저 쓰레드 태스크를 포함함.
4. 발명의 중요한 용도
본 발명은 휴대 단말 등에 이용됨.
휴대 단말, 유저 쓰레드, 태스크, 운영체제, 멀티태스킹

Description

유저 쓰레드 관리 장치 및 그 방법{Apparatus and its method for managing user thread}
도 1은 종래 방법에 따른 유저 쓰레드 관리 장치의 일실시예 구성도,
도 2는 본 발명에 따른 유저 쓰레드 관리 장치의 일실시예 구성도,
도 3은 본 발명에 따른 유저 쓰레드 관리 방법에 대한 일실시예 설명도,
도 4는 본 발명에 따른 유저 쓰레드 관리 방법에 대한 일실시예 흐름도이다.
* 도면의 주요 부분에 대한 부호 설명
21 : 핸들러 태스크 22 : 유저 쓰레드 태스크
23 : 운영체제
본 발명은, 휴대 단말 등에서 응용 프로그램을 실행시키기 위하여 생성되는 유저 쓰레드를 관리하기 위한 장치 및 그 방법에 관한 것으로서, 더욱 상세하게는 휴대 단말 등에서 소수의 태스크, 즉 유저 쓰레드를 관리하기 위한 핸들러 태스크와 상기 핸들러 태스크의 제어에 따라 유저 쓰레드를 실행시키는 유저 쓰레드 태스크를 이용하여 다수의 유저 쓰레드를 실행시킴으로써, 기존에 태스크와 유저 쓰레드를 일대일 매핑시켜야 하는 문제점을 해결하여, 자원 활용도를 높이고 한정된 자원을 가진 휴대 단말에 효율적인 멀티태스킹 환경을 제공하기 위한, 유저 쓰레드 관리 장치 및 그 방법에 관한 것이다.
기존의 데스크탑 컴퓨팅 환경에서 유저 쓰레드(Thread)는 매우 일반적인 것이다. 여기서 유저 쓰레드(Thread)란 운영체제의 한 개 또는 여러 개의 커널 쓰레드의 동작 시간을 쪼개어서 라운드 로빈(Round-robin) 방식, 또는 우선순위 방식, 또는 그 이외의 스케줄링 알고리즘을 병행하여 여러 개의 사용자 코드가 마치 동시에 동작되는 것처럼 보이도록 하는 실행 방법을 말한다.
그런데, 이동통신단말기, 개인휴대통신단말기(PCS), 개인용디지털단말기(PDA), 스마트폰, 차세대이동통신단말기(IMT-2000), 무선랜 단말기 등과 같이 개인이 휴대하며 사용하는 휴대 단말은 운영체제의 동작 환경 및 운영체제 자체의 기능이 미약하기 때문에 유저 쓰레드(Thread)를 지원하기 위해서는 시스템 코딩이 필요하며, 많은 부분이 변경되어야 한다.
종래에 휴대 단말에서 유저 쓰레드(Thread)를 구현하는 방법은 도 1에 도시된 바와 같이 태스크와 유저 쓰레드(Thread)를 일대일로 매핑시켜서 구동시켰다. 즉, 도 1에 도시된 바와 같이, 단문메시징서비스(SMS : Short Messaging Service), 호 관리자(CM : Call Manager), 시스템 모니터링, 사용자 인터페이스 등을 담당하 는 태스크 이외에 사용자 응용 프로그램을 동작시키기 위해서는 태스크를 새롭게 생성하고, 상기 생성한 태스크에 실행 코드를 동작시키는 방식이다.
참고적으로 컴퓨터 프로그래밍에서 태스크(Task)란 운영체제가 제어하는 프로그램의 기본 단위를 말한다. 운영체제를 설계할 때 태스크를 어떻게 정의하느냐에 따라 단위 프로그램이란 전체 프로그램이 될 수도 있고, 또는 계속되는 프로그램의 호출이 될 수도 있다. 보통은 한 프로그램이 여러 개의 다른 유틸리티 프로그램에게 요구할 수 있기 때문에, 유틸리티 프로그램 또한 태스크(또는 서브 태스크)라고 간주할 수 있다. 오늘날 광범위하게 사용되는 대부분의 운영체제들이 멀티태스킹을 지원하는데, 이는 여러 개의 태스크를 동시에 실행하고, 교대로 컴퓨터의 자원을 사용할 수 있게 한다.
이에 비해, 멀티쓰레딩은 같은 프로그램 여러 개를 동시에 사용하도록 관리하는 것을 말한다. 요즘 대부분의 운영체제와 컴퓨터 프로그램 언어들이 멀티스레딩을 지원한다. 즉, 멀티쓰레딩(Multithreading)이란 프로그램이 다중 프로세서에서 병렬적으로 실행될 수 있도록 짜여진 것을 말한다. 멀티쓰레드 프로그램을 작성하는 것은 더 많은 시간과 기술을 필요로 하는데, 이것은 쓰레드 스케줄링 같은 추가적인 고려를 해야 하기 때문이다.
스케줄링은 쓰레드의 동기를 유지시켜주는 것이고, 모든 것이 순서대로 일어나고 있는지를 확인하는 작업이다. 컴퓨터 프로그래밍에서, 쓰레드는 다수의 사용자들을 동시에 처리할 수 있는 프로그램이 각각의 사용과 관련하여 가지고 있는 정보를 말한다. 프로그램의 관점에서 보면, 쓰레드는 한 명의 개별 사용자 또는 특정 한 서비스 요청을 서비스하는데 필요한 정보이다. 만약, 다수의 사용자들이 그 프로그램을 쓰고 있거나, 또는 다른 프로그램들로부터 동시에 요청이 발생하였을 때, 각각의 사용자나 프로그램들을 위하여 쓰레드가 만들어지고 유지된다. 즉, 쓰레드는 프로그램에게 현재 어떤 사용자가 서비스를 받고있는지를 파악하게 함으로써, 다른 사용자들을 위하여 재진입 해야할 것인지를 선택할 수 있도록 한다.
한편, 운영체제는 각 프로그램에게 실행 순서를 부여하는데, 각 프로그램은 자신의 순서가 돌아올 때까지 대기한다. 이 때, 각 프로그램은 운영체제에 의하여 일정량의 자원들이 관계되고 진행상황을 계속 알게되는 하나의 작업, 즉 태스크로 간주된다. 운영체제는 단말 내의 각 응용프로그램(스프레드시트, 워드 프로세서, 웹 브라우저 등)들을 각각 별도의 태스크로 관리하고, 사용자가 태스크 목록 내에서 그것들을 보거나 관리할 수 있도록 해준다. 만약, 임의의 프로그램이 파일을 읽거나 프린터를 통해 출력하는 등과 같은 입출력 요청을 개시했다면, 입출력 작업이 끝났을 때 그 프로그램이 원래의 장소로 정확히 재진입할 수 있도록 하나의 쓰레드가 만들어진다. 그 동안 그 프로그램을 동시에 이용하던 태스크들은 또다른 쓰레드들에서 유지되고 관리된다. 이처럼, 운영체제는 프로그램 프로세스 내에서 멀티스레딩을 허용함으로써, 그 시스템이 각 쓰레드를 위해 새로운 프로세스를 만드는데 생기는 추가부담을 줄일 수 있게 해준다.
그런데, 이러한 종래 방식은 운영체제의 자원을 활용한다는 측면에서 구현상의 편의와 이점이 있으나 유저 쓰레드에 따라서 일대일로 태스크를 생성하여야 하고, 유저 쓰레드 스케줄링을 운영체제에 일임함으로써, 유저 쓰레드 동작을 위한 부가적이거나 세부적인 기능을 구현하기가 어려운 문제점이 있었다.
본 발명은, 상기와 같은 문제점을 해결하기 위하여 제안된 것으로, 휴대 단말 등에서 소수의 태스크, 즉 유저 쓰레드를 관리하기 위한 핸들러 태스크와 상기 핸들러 태스크의 제어에 따라 유저 쓰레드를 실행시키는 유저 쓰레드 태스크를 이용하여 다수의 유저 쓰레드를 실행시킴으로써, 기존에 태스크와 유저 쓰레드를 일대일 매핑시켜야 하는 문제점을 해결하여, 자원 활용도를 높이고 한정된 자원을 가진 휴대 단말에 효율적인 멀티태스킹 환경을 제공하기 위한, 유저 쓰레드 관리 장치 및 그 방법을 제공하는데 그 목적이 있다.
본 발명의 다른 목적 및 장점들은 하기의 설명에 의해서 이해될 수 있으며, 본 발명의 실시예에 의해 보다 분명하게 알게 될 것이다. 또한, 본 발명의 목적 및 장점들은 특허 청구 범위에 나타낸 수단 및 그 조합에 의해 실현될 수 있음을 쉽게 알 수 있을 것이다.
상기의 목적을 달성하기 위한 본 발명은, 유저 쓰레드 관리 장치에 있어서, 호스트 운영체제의 제어에 따라 유저 쓰레드 태스크를 생성한 후 상기 생성한 유저 쓰레드 태스크에서 실행시킬 유저 태스크를 관리하며, 상기 호스트 운영체제의 우선순위 스케줄링에 따라 소정 간격으로 실행되어, 상기 유저 쓰레드 태스크에서 실행될 유저 쓰레드들 간의 문맥 교환(Context Switch)을 결정하여, 결정된 문맥 교환(Context Switch)에 따라 유저 쓰레드의 실행 정보를 변경하기 위한 핸들러 태스크; 및 상기 핸들러 태스크의 제어에 의하여 생성되며, 상기 호스트 운영체제의 스케줄링에 따라 실행되어 상기 변경된 유저 쓰레드 실행 정보를 바탕으로 다수의 유저 쓰레드 중 해당 유저 쓰레드를 실행시키기 위한 상기 유저 쓰레드 태스크를 포함한다.
한편, 본 발명은, 유저 쓰레드 관리 방법에 있어서, 응용 프로그램의 유저 쓰레드 생성 요청에 따라, 핸들러 태스크를 생성하는 핸들러 태스크 생성 단계; 상기 생성한 핸들러 태스크가 유저 쓰레드를 실행시키기 위한 유저 쓰레드 태스크를 생성하여 관리하는 유저 쓰레드 태스크 핸드링 단계; 상기 핸들러 태스크가 호스트 운영체제의 우선순위 스케줄링에 따라 소정 시간 간격으로 실행되어, 상기 유저 쓰레드 태스크에서 실행될 유저 쓰레드들 간의 문맥 교환(Context Switching)을 결정하여, 결정된 문맥 교환(Context Switch)에 따라 유저 쓰레드의 실행 정보를 변경시키는 문맥 교환 단계; 및 상기 유저 쓰레드가 상기 호스트 운영체제의 스케줄링에 따라 실행되어, 상기 변경된 유저 쓰레드 실행 정보를 바탕으로 다수의 유저 쓰레드 중 해당 유저 쓰레드를 실행시키는 유저 쓰레드 실행 단계를 포함한다.
상술한 목적, 특징 및 장점은 첨부된 도면과 관련한 다음의 상세한 설명을 통하여 보다 분명해 질 것이며, 그에 따라 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 것이다. 또한, 본 발명을 설명함에 있어서 본 발명과 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에 그 상세한 설명을 생략하기로 한다. 이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 일실시예를 상세히 설명하기로 한다.
도 2는 본 발명에 따른 유저 쓰레드 관리 장치의 일실시예 구성도이다.
도 2에 도시된 바와 같이, 본 발명에 따른 유저 쓰레드 관리 장치는, 운영체제(23)의 제어에 따라 유저 쓰레드 태스크(22)를 생성한 후 생성된 유저 쓰레드 태스크에서 실행시킬 유저 태스크를 리스트로 관리하며, 운영체제(23)의 제어(우선순위 스케줄링)에 따라 소정 간격으로 실행되어, 기설정된 스케줄링 알고리즘에 따라 유저 쓰레드의 문맥 교환(Context Switch)을 결정하고, 결정된 문맥 교환(Context Switch)에 따라 유저 쓰레드 태스크(22)에서 실행될 유저 쓰레드의 실행 정보를 변경하기 위한 핸들러 태스크(21), 핸들러 태스크(21)의 제어에 의하여 생성되며, 변경된 유저 쓰레드 실행 정보를 바탕으로 다수의 유저 쓰레드 중 해당 유저 쓰레드(실행 코드)를 실행시키기 위한 유저 쓰레드 태스크(22)를 포함한다.
상기 운영체제(OS : Operating System)(23)는 휴대 단말을 구성하는 중앙 처리 장치(CPU), 주기억 장치, 저장 장치, 각종 입출력 장치 등이 정상적으로 작동하도록 감시하고 제어하며, 응용 프로그램이 사용하는 CPU 시간, 주기억 공간, 디스크 기억 공간 등과 같은 하드웨어 자원을 할당하고 배분하는 기능, 응용 프로그램의 실행 순서와 우선순위를 스케줄링하는 태스크(task) 관리 기능 등과 같은 일반적인 운영체제의 기능을 수행한다.
특히, 본 발명에 따른 휴대 단말의 운영체제(OS)는 핸들러 태스크(21)와 유저 쓰레드 태스크(22)를 운영한다. 이때, 두 개의 태스크(핸들러 태스크(21), 유저 쓰레드 태스크(22))는 서로 다른 우선순위를 가지고 실행된다.
즉, 핸들러 태스크(21)는 실시간 운영체제(23)가 제공하는 타이머를 이용하여 타이머가 만료되는 시점마다 주기적으로 실행되며, 유저 쓰레드 태스크(22)보다 높은 우선순위를 가진다. 이처럼 핸들러 태스크(21)의 우선순위가 유저 쓰레드 태스크(22)의 우선순위보다 높기 때문에 실시간 운영체제(23)의 선점 특성으로 인하여 유저 쓰레드 태스크(22)가 동작 중인 상황에서도 핸들러 태스크(21)의 타이머가 만료되면 유저 쓰레드 태스크(22)의 중앙처리장치(CPU) 사용을 중지시켜 보다 높은 우선순위의 핸들러 태스크(21)가 실행되게 된다.
참고적으로, 하나의 태스크가 운영체제로부터 중앙처리장치(CPU)를 할당받은 경우에 자발적으로 반납할 때까지 강제적으로 중앙처리장치(CPU)의 제어권을 빼앗을 수 없는 멀티태스킹 방식을 비선점 멀티태스킹이라 하고, 이와 반대로 운영체제의 필요에 따라 중앙처리장치(CPU)의 제어권을 강제적으로 빼앗아 태스크가 실행될 수 있도록 태스크의 실행 순서를 결정하는 멀티태스킹 방식을 선점 멀티태스킹이라 한다.
이와 같이 두 태스크(핸들러 태스크(21)와 유저 쓰레드 태스크(22)) 간의 문맥 교환(Context switch)이 이루어지도록 하기 위해서 상기 운영체제(23)는 두 개의 태스크가 등록되어 동작하기 이전에 타이머 인터럽트 핸들러를 미리 등록시켜야 한다. 타이머 인터럽트 핸들러는 타이머 인터럽트가 발생할 때마다 실행되며, 현재 동작 중인 태스크들 간의 스케줄링을 담당한다.
한편, 실질적인 유저 쓰레드 간의 문맥 교환(Context switch)은 기존의 실시간 운영체제가 제공하는 태스크의 구조를 변경함으로써 이루어진다. 도 3을 참조하여 이를 보다 상세히 살펴보기로 한다.
앞에서도 설명한 바와 같이 호스트 운영체제(23)의 실행 단위는 태스크이며, 태스크 단위로 스케줄링이 이루어지게 되어 있다. 이때, 운영체제(23)가 태스크를 관리하기 위한 태스크 관리 블록(312)은 도 3에 도시된 바와 같이 링크드 리스트 형태로 관리되며, 호스트 운영체제가 태스크를 실행시킬 때마다 사용된다.
태스크 관리 블록(312)에는 태스크 스케줄링을 위한 스케줄링 정보와 태스크의 동작 상태를 저장하는 스택의 주소값(310)과 사용 중인 스택 영역을 가리키는 스택 포인터 값(311)을 가지고 있으며, 그 외에 호스트 운영체제(23)가 필요한 정보를 포함하고 있다.
본 발명에서 유저 쓰레드를 지원하기 위하여 유저 쓰레드 태스크(22)와 핸들러 태스크(21)를 생성하면, 상기 생성한 유저 쓰레드 태스크(22)와 핸들러 태스크(21)를 관리하기 위한 태스크 관리 블록(307,308)이 기존의 태스크 관리 블록(312)의 링크드 리스트에 추가된다.
한편, 유저 쓰레드의 실행 코드를 실행시키는 방법은 실시간 운영체제(23)가 관리하는 태스크 관리 블록에 유저 쓰레드의 실행에 필요한 정보를 할당함으로써 이루어진다. 즉, 호스트 운영체제(23)가 제공하는 태스크 초기화 루틴을 활용하여 기본적인 정보를 초기화하며, 태스크 관리 블록이 사용하는 정보 중에서 사용 중인 스택 포인터 값(305)과 스택 주소 값(306)을 유저 쓰레드 실행을 위한 정보로 변경함으로써, 유저 쓰레드를 실행시킨다.
즉, 도 3에 도시된 바와 같이 핸들러 태스크(21)는 유저 쓰레드 정보를 관리하는 배열(304), 즉 유저 쓰레드 리스트에 유저 쓰레드 마다의 스택 주소 값과 스택 포인터 값을 저장시켜 유지한다. 그리고, 문맥 교환(Context Switching)이 결정되면 유저 쓰레드 태스크(22)의 태스크 관리 블록(307)에 포함된 스택 주소 값(306)과 스택 포인터 값(305)을 실행시키려는 유저 쓰레드의 스택 주소 값과 스택 포인터 값으로 변경한다. 그러면, 다음번에 유저 쓰레드 태스크(22)가 호스트 운영체제(23)에 의하여 실행될 때는 변경된 스택 주소 값(306)과 스택 포인터 값(305)을 가지게 되므로 해당 유저 쓰레드가 실행될 수 있다.
여기서, "301"은 유저 쓰레드 정보를 저장하는 스택, "302"는 유저 쓰레드 관리 블록에서 쓰레드가 사용 중인 스택 위치를 가리키는 스택 포인터, "303"은 유저 쓰레드 관리 블록에서 사용 중인 스택을 가리키는 포인터, "304"는 유저 쓰레드가 사용하는 스택과 스택 포인터 정보를 모아놓은 유저 쓰레드 관리 블록 배열, "305"는 유저 쓰레드 태스크에서 실행 중인 유저 쓰레드의 스택에서 사용 중인 스택 위치를 가리키는 스택 포인터, "306"은 유저 쓰레드 태스크에서 실행 중인 유저 쓰레드가 사용 중인 스택을 가리키는 포인터, "307"은 유저 쓰레드 태스크의 태스크 관리 블록, "308"은 핸들러 태스크(21)의 태스크 관리 블록, "309"는 호스트 운영체제에서 관리하는 태스크가 사용하는 스택, "310"은 호스트 운영체제에서 관리하는 태스크가 사용하는 스택을 가리키는 포인터, "311"은 호스트 운영체제에서 관리하는 태스크가 사용하는 스택의 사용 위치를 가리키는 스택 포인터, 그리고 "312"는 호스트 운영체제에서 태스크 관리를 위하여 링크드 리스트 형태로 관리하는 태스크 관리 블록을 나타낸다.
도 4를 참조하여 본 발명의 전체적인 동작 과정에 대하여 좀 더 상세히 살펴 보기로 한다.
먼저, 유저 쓰레드 태스크(22)가 동작하고 있는 상태에서(401) 타이머 인터럽트가 발생하면(402) 태스크 간의 스케줄링 코드를 실행시키는 인터럽트 핸들러가 실행되어 태스크 스케줄러가 실행된다(403).
그 결과(스케줄링 결과), 핸들러 태스크(21)가 실행되면(404) 상기 핸들러 태스크(21)는 기설정된 스케줄링 알고리즘에 의해서 유저 쓰레드의 문맥 교환(Context Switch)을 결정하고, 상기 결정한 문맥 교환(Context Switch)에 따라 유저 쓰레드 태스크(22)의 태스크 관리 블록(307)을 변경하여, 유저 쓰레드 간에 문맥 교환이 일어나도록 한다(405).
이 때, 상기 핸들러 태스크(21)는 유저 쓰레드 태스크(22)가 관리하는 태스크 관리 블록(307)의 스택과 스택 포인터 값을 새롭게 동작시킬 유저 쓰레드의 스택과 스택 포인터 값으로 변경시킨다. 그러면, 상기 핸들러 태스크(21)가 다시 대기 상태로 돌아간 이후, 실시간 운영체제의 스케줄링 알고리즘에 의하여 상기 유저 쓰레드 태스크(22)가 실행될 때에는 새로운 유저 쓰레드가 실행되게 된다.
이하에서는 유저 쓰레드의 초기 구동과 생성, 그리고 삭제 과정에 대하여 보다 상세히 살펴보기로 한다.
유저 쓰레드의 최초 구동은 다음과 같은 과정에 의하여 이루어진다. 먼저, 운영체제(23)가 응용 프로그램으로부터 새로운 쓰레드의 생성을 요청받으면, 핸들러 태스크(21)를 우선적으로 생성한다. 그러면, 상기 생성한 핸들러 태스크는 유저 쓰레드 동작을 위한 초기화 작업을 마친 후, 유저 쓰레드 태스크(22)를 생성하여 해당 쓰레드 코드를 실행하도록 한다. 이 때, 상기 핸들러 태스크(21)로부터 상기 유저 쓰레드 태스크(22)로 실행이 직접 넘어가서는 안되며, 핸들러 태스크(21)가 스케줄링 작업을 모두 마친 후, 대기 상태로 천이할 때 유저 쓰레드 태스크(22)가 실행되어야 한다.
한편, 유저 쓰레드 태스크(22)와 핸들러 태스크(21)가 동작 중인 상황에서 응용 프로그램으로부터 새로운 쓰레드의 요청이 발생할 수 있다. 이 때에는 이미 유저 쓰레드 태스크(22)와 핸들러 태스크(21)가 존재하는 상황에서 새로운 쓰레드의 동작을 요구하는 상황이므로 태스크간 통신을 통하여 새로운 쓰레드를 생성한다.
즉, 이미 유저 쓰레드 태스크(22)가 생성된 상태에서 응용 프로그램의 쓰레드 생성 요청이 발생하면 이를 저장하고, 쓰레드 생성 요청이 발생하였음을 핸들러 태스크(21)로 통보한다.
그러면, 상기 핸들러 태스크(21)는 기설정된 스케줄링 방식에 따라서 상기 응용 프로그램에서 요청한 쓰레드 실행 코드에 스택을 할당하고 할당된 스택을 초기화 한 후, 자신이 관리하는 유저 쓰레드 리스트에 등록시킨다. 이처럼 유저 쓰레드 리스트에 등록된 쓰레드는 핸들러 태스크(21)가 실행될 때마다 스케줄링의 대상이 되므로 정해진 스케줄링 알고리즘에 따라서 해당 순서에 실행된다.
한편, 상기 핸들러 태스크(21)가 관리하는 쓰레드를 삭제하는 방법은 핸들러 쓰레드 리스트로부터 해당 쓰레드에 대한 정보를 삭제함으로써 이루어진다. 이 때, 쓰레드 삭제 요청도 쓰레드 생성 요청과 마찬가지로 유저 쓰레드 태스크(22)의 실 행 코드를 통해서만 이루어지며, 유저 쓰레드 태스크(22)의 실행 코드에서 호출된다. 이 때, 쓰레드 삭제 요청은 쓰레드 생성 요청과 마찬가지로 시그널 통신을 통해서 이루어지게 되며, 기설정된 스케줄링 알고리즘에 따라서 즉각적으로 대기 중인 핸들러 태스크를 동작시켜서 해당 유저 쓰레드에 대한 관리 정보를 삭제하도록 한다.
상술한 바와 같은 본 발명의 방법은 프로그램으로 구현되어 컴퓨터로 읽을 수 있는 형태로 기록매체(씨디롬, 램, 롬, 플로피 디스크, 하드 디스크, 광자기 디스크 등)에 저장될 수 있다. 이러한 과정은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있으므로 더 이상 상세히 설명하지 않기로 한다.
이상에서 설명한 본 발명은, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 있어 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능하므로 전술한 실시예 및 첨부된 도면에 의해 한정되는 것이 아니다.
상기와 같이 본 발명은, 휴대 단말 등에서 소수의 태스크, 즉 유저 쓰레드를 관리하기 위한 핸들러 태스크와 상기 핸들러 태스크의 제어에 따라 유저 쓰레드를 실행시키는 유저 쓰레드 태스크를 이용하여 다수의 유저 쓰레드를 실행시킴으로써, 기존에 태스크와 유저 쓰레드를 일대일 매핑시켜야 하는 문제점을 해결하여 자원 활용도를 높이고, 한정된 자원을 가진 휴대 단말에 효율적인 멀티태스킹 환경을 제공할 수 있는 효과가 있다.

Claims (7)

  1. 유저 쓰레드 관리 장치에 있어서,
    호스트 운영체제의 제어에 따라 유저 쓰레드 태스크를 생성한 후 상기 생성한 유저 쓰레드 태스크에서 실행시킬 유저 태스크를 관리하며, 상기 호스트 운영체제의 우선순위 스케줄링에 따라 소정 간격으로 실행되어, 상기 유저 쓰레드 태스크에서 실행될 유저 쓰레드들 간의 문맥 교환(Context Switch)을 결정하여, 결정된 문맥 교환(Context Switch)에 따라 유저 쓰레드의 실행 정보를 변경하기 위한 핸들러 태스크; 및
    상기 핸들러 태스크의 제어에 의하여 생성되며, 상기 호스트 운영체제의 스케줄링에 따라 실행되어 상기 변경된 유저 쓰레드 실행 정보를 바탕으로 다수의 유저 쓰레드 중 해당 유저 쓰레드를 실행시키기 위한 상기 유저 쓰레드 태스크
    를 포함하는 유저 쓰레드 관리 장치.
  2. 제 1 항에 있어서,
    상기 핸들러 태스크는,
    상기 유저 쓰레드 태스크 보다 높은 우선순위를 갖는 것을 특징으로 하는 유저 쓰레드 관리 장치.
  3. 제 1 항 또는 제 2 항에 있어서,
    상기 핸들러 태스크가 상기 유저 쓰레드 태스크에서 실행시킬 유저 태스크를 관리하는 과정은,
    다수의 유저 쓰레드에 대하여 실행 코드가 탑재된 스택 주소 값과 스택 포인터 값을 링크드 리스트 형태로 저장시켜 관리하는 것을 특징으로 하는 유저 쓰레드 관리 장치.
  4. 제 3 항에 있어서,
    상기 핸들러 태스크가 유저 쓰레드 간에 문맥 교환이 일어나도록 제어하는 과정은,
    상기 유저 쓰레드 태스크의 태스크 관리 블록에 포함된 스택 주소 값과 스택 포인터 값을 상기 문맥 교환(Context Switching)이 결정된 유저 쓰레드의 스택 주소 값과 스택 포인터 값으로 변경하는 것을 특징으로 하는 유저 쓰레드 관리 장치.
  5. 유저 쓰레드 관리 방법에 있어서,
    응용 프로그램의 유저 쓰레드 생성 요청에 따라, 핸들러 태스크를 생성하는 핸들러 태스크 생성 단계;
    상기 생성한 핸들러 태스크가 유저 쓰레드를 실행시키기 위한 유저 쓰레드 태스크를 생성하여 관리하는 유저 쓰레드 태스크 핸드링 단계;
    상기 핸들러 태스크가 호스트 운영체제의 우선순위 스케줄링에 따라 소정 시간 간격으로 실행되어, 상기 유저 쓰레드 태스크에서 실행될 유저 쓰레드들 간의 문맥 교환(Context Switching)을 결정하여, 결정된 문맥 교환(Context Switch)에 따라 유저 쓰레드의 실행 정보를 변경시키는 문맥 교환 단계; 및
    상기 유저 쓰레드가 상기 호스트 운영체제의 스케줄링에 따라 실행되어, 상기 변경된 유저 쓰레드 실행 정보를 바탕으로 다수의 유저 쓰레드 중 해당 유저 쓰레드를 실행시키는 유저 쓰레드 실행 단계
    를 포함하는 유저 쓰레드 관리 방법.
  6. 제 5 항에 있어서,
    상기 유저 쓰레드 태스크 핸들링 단계에서는,
    상기 핸들러 태스크가 유저 쓰레드를 실행시키기 위한 상기 유저 쓰레드 태스크를 생성하고, 다수의 유저 쓰레드에 대하여 실행 코드가 탑재된 스택 주소 값과 스택 포인터 값을 링크드 리스트 형태로 저장시켜 관리하는 것을 특징으로 하는 유저 쓰레드 관리 방법.
  7. 제 5 항 또는 제 6 항에 있어서,
    상기 문맥 교환 단계에서는,
    상기 핸들러 태스크가 상기 호스트 운영체제의 우선순위 스케줄링에 따라 소정 시간 간격으로 실행되어, 유저 쓰레드들 간의 문맥 교환(Context Switching)을 결정하여, 상기 유저 쓰레드 태스크의 태스크 관리 블록에 포함된 스택 주소 값과 스택 포인터 값을 문맥 교환(Context Switching)이 결정된 유저 쓰레드의 스택 주소 값과 스택 포인터 값으로 변경하는 것을 특징으로 하는 유저 쓰레드 관리 방법.
KR1020040105078A 2004-12-13 2004-12-13 유저 쓰레드 관리 장치 및 그 방법 KR100676671B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020040105078A KR100676671B1 (ko) 2004-12-13 2004-12-13 유저 쓰레드 관리 장치 및 그 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020040105078A KR100676671B1 (ko) 2004-12-13 2004-12-13 유저 쓰레드 관리 장치 및 그 방법

Publications (2)

Publication Number Publication Date
KR20060066465A KR20060066465A (ko) 2006-06-16
KR100676671B1 true KR100676671B1 (ko) 2007-01-31

Family

ID=37161285

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040105078A KR100676671B1 (ko) 2004-12-13 2004-12-13 유저 쓰레드 관리 장치 및 그 방법

Country Status (1)

Country Link
KR (1) KR100676671B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101220053B1 (ko) * 2006-09-29 2013-01-08 포항공과대학교 산학협력단 실시간 태스크의 응답시간 개선을 위한 커널 쓰레드의 동적스케줄링 방법
KR101594830B1 (ko) * 2014-01-13 2016-02-17 엔트릭스 주식회사 클라우드 스트리밍 서비스 시스템, 클라우드 스트리밍 서비스 방법 및 이를 위한 서버

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010036644A (ko) * 1999-10-11 2001-05-07 윤종용 디지털 시그널 프로세서를 위한 실시간 제어 시스템
KR20040074622A (ko) * 2004-02-18 2004-08-25 마이크로소프트 코포레이션 그래픽 처리 장치를 위한 멀티쓰레디드 커널

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010036644A (ko) * 1999-10-11 2001-05-07 윤종용 디지털 시그널 프로세서를 위한 실시간 제어 시스템
KR20040074622A (ko) * 2004-02-18 2004-08-25 마이크로소프트 코포레이션 그래픽 처리 장치를 위한 멀티쓰레디드 커널

Also Published As

Publication number Publication date
KR20060066465A (ko) 2006-06-16

Similar Documents

Publication Publication Date Title
RU2481618C2 (ru) Иерархическая инфраструктура планирования резервирования ресурсов
Rao et al. Survey on improved scheduling in Hadoop MapReduce in cloud environments
Bastoni et al. Is semi-partitioned scheduling practical?
JP4072271B2 (ja) 複数のオペレーティングシステムを実行する計算機
JP5367816B2 (ja) オペレーションの保護モードスケジューリング
CN113778694B (zh) 一种任务处理方法、装置、设备及介质
Lelli et al. An experimental comparison of different real-time schedulers on multicore systems
CN101310257A (zh) 多处理器系统和用于使计算机执行多处理器系统的控制方法的程序
WO2012028213A1 (en) Re-scheduling workload in a hybrid computing environment
EP2446357A1 (en) High-throughput computing in a hybrid computing environment
CN105117285B (zh) 一种基于移动虚拟化系统的非易失性存储器调度优化方法
US9529625B2 (en) Method and system for providing stack memory management in real-time operating systems
KR100791296B1 (ko) 멀티 코어 시스템에서 협력적 스케줄링을 제공하는 장치 및방법
US20100088704A1 (en) Meta-scheduler with meta-contexts
Abeni et al. EDF scheduling of real-time tasks on multiple cores: Adaptive partitioning vs. global scheduling
CN114816777A (zh) 命令处理装置、方法、电子设备以及计算机可读存储介质
KR100676671B1 (ko) 유저 쓰레드 관리 장치 및 그 방법
Shen et al. Adaptive two-level thread management for fast MPI execution on shared memory machines
Qu et al. Improving the energy efficiency and performance of data-intensive workflows in virtualized clouds
US9378062B2 (en) Interface between a resource manager and a scheduler in a process
Suzuki et al. Efficient execution of multiple CUDA applications using transparent suspend, resume and migration
Baital et al. An efficient dynamic scheduling of tasks for multicore real-time systems
Wu et al. Energy-efficient flash-memory storage systems with an interrupt-emulation mechanism
CN110968418A (zh) 基于信号-槽的大规模有约束并发任务的调度方法与装置
WO2022268142A1 (zh) 一种服务进程的调用方法及相关装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee