KR20050064262A - 작업 스케쥴러를 이용한 다수의 디바이스 초기화 방법 - Google Patents

작업 스케쥴러를 이용한 다수의 디바이스 초기화 방법 Download PDF

Info

Publication number
KR20050064262A
KR20050064262A KR1020030095617A KR20030095617A KR20050064262A KR 20050064262 A KR20050064262 A KR 20050064262A KR 1020030095617 A KR1020030095617 A KR 1020030095617A KR 20030095617 A KR20030095617 A KR 20030095617A KR 20050064262 A KR20050064262 A KR 20050064262A
Authority
KR
South Korea
Prior art keywords
initialization
job
devices
func
decide
Prior art date
Application number
KR1020030095617A
Other languages
English (en)
Other versions
KR101017372B1 (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 KR1020030095617A priority Critical patent/KR101017372B1/ko
Priority to US10/991,525 priority patent/US7376822B2/en
Priority to CNB2004101017133A priority patent/CN100470482C/zh
Publication of KR20050064262A publication Critical patent/KR20050064262A/ko
Application granted granted Critical
Publication of KR101017372B1 publication Critical patent/KR101017372B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • 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/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명은 작업 스케쥴러를 이용한 다수의 디바이스 초기화에 관한 발명으로서, 본 발명에 따른 디바이스 초기화 방법은 초기화할 디바이스들이 초기화를 위한 진행 조건을 만족하는지 여부를 판단하는 제1단계와, 상기 초기화를 위한 진행 조건이 만족된 디바이스에 대하여 초기화 작업을 수행하는 제2단계와, 상기 초기화를 위한 진행 조건을 만족하는 다른 디바이스가 존재하는지 여부를 판단하는 제3단계, 및 초기화할 모든 디바이스들의 초기화가 끝날때까지 상기 제1단계 내지 상기 제3단계를 수행하는 것을 특징으로 한다.

Description

작업 스케쥴러를 이용한 다수의 디바이스 초기화 방법{Method for initializing a plurality of devices using job-scheduler}
본 발명은 디바이스 드라이버 초기화에 관한 것으로서, 보다 상세하게는 다수의 디바이스 드라이버를 초기화함에 있어서 작업 스케쥴(job schedule) 기법을 이용함으로써 보다 효율적으로 디바이스 드라이버를 초기화하는 메커니즘을 제공하는 방법에 관한 것이다.
최근에 다수의 디바이스로 구성된 제품들이 등장하면서, 상기 제품들이 소정의 기능을 제공하기 위해서는 상기 다수의 디바이스를 초기화하는 과정을 필수적으로 거쳐야만 한다.
더구나, 상기 제품이 더욱 복잡해지고 거대해짐에 따라 상기 제품을 구성하는 디바이스의 종류 및 수가 증가되고, 이에 따라 디바이스 초기화 과정이 제품의 가치를 좌우하는 중요한 기준으로 등장하게 되었다. 즉, 디바이스 초기화 과정에 걸리는 시간을 최대한 단축하면서 안정적인 초기화 작업을 수행하는 것이 디바이스 초기화의 중요한 목표가 된 것이다.
도 1은 종래의 디바이스 드라이버를 초기화하는 과정을 나타내는 일실시예 처리 흐름도이다.
소정의 기능을 수행하는 단일의 디바이스가 특정한 서비스를 제공하기 위해서는 상기 디바이스를 구동하기 위한 디바이스 드라이버의 초기화 과정을 거쳐 상기 서비스를 제공하기 위한 대기 상태로 들어가게 된다.
즉, 상기 디바이스를 제어하는 임베디드 운영 시스템에 의해 디바이스 드라이버가 구동되기 시작하면(S100), 디바이스 드라이버의 초기화를 위한 하드웨어 또는 소프트웨어 측면의 조건들을 만족하는지 여부를 검사한다(S110). 만일, 초기화 조건을 만족하지 않는 경우에는 대기 상태로 있으면서, 주기적으로 초기화 조건의 만족 여부를 검사하게 되고, 초기화 조건을 만족하게 되면 초기화 조건에 따른 초기값을 설정하게 된다(S120). 그리고 나서, 상기 디바이스 드라이버의 초기화를 위한 모든 초기값 설정이 완료되었는지 여부를 검사하여(S130), 만일 완료된 경우에는 상기 디바이스가 서비스를 제공하기 위한 초기화(S140), 즉 서비스 대기 초기화를 수행함으로써 상기 디바이스 드라이버의 초기화 과정을 종료하게 된다(S150). 한편, 상기 S130 단계에서 모든 초기값 설정이 아직 완료되지 않은 경우에는 S110 단계를 반복하게 된다.
도 2는 종래의 다수의 디바이스 초기화를 수행하는 과정을 나타내는 일실시예 처리 흐름도이다.
단일의 시스템에서 다수의 디바이스가 존재하는 경우에는 모든 디바이스가 초기화된 후 상기 시스템이 소정의 서비스를 수행하게 된다. 따라서, 각각의 디바이스 드라이버의 초기화 작업이 필요하게 된다. 예컨대, 3개의 디바이스로 구성되는 시스템의 경우, 도 2에서 도시한 바와 같이 우선 디바이스 A가 초기화되고(S210), 그 다음으로는 디바이스 B(S220), 그 다음으로는 디바이스 C(S230)가 순차적으로 초기화된다.
디바이스를 초기화하는 방법의 구체적인 예로서, x86계열용 리눅스(Linux) 시스템에서 리눅스(Linux) 커널은 다양한 디바이스 드라이버들을 순차적으로 실행하여 디바이스 초기화를 수행한다. 이 때, 각각의 디바이스 드라이버 모듈은 자신이 지원하는 디바이스의 존재 여부를 판단(probe)하고, 디바이스를 초기화(initialize)하며, 관련 서비스를 리눅스(Linux) 커널에 특정한 방법으로 등록(register)하게 된다. 이러한 과정이 모든 디바이스 드라이버 모듈에 대해 반복됨으로써 모든 디바이스 초기화가 이루어진다. 따라서, 이러한 모든 과정을 거치면 수분에 이르는 부팅시간이 소요된다.
결국, 상기 도 1과 상기 도 2를 종합하여 보면, 종래의 디바이스 드라이버 초기화 과정은 하나의 디바이스 드라이버를 초기화할 때 상기 S110 단계와 상기 S130 단계에서 발생하는 대기 또는 반복과정에 의해 CPU의 대기 상태가 발생하게 되는데, 이러한 경우 CPU에 비해 상대적으로 매우 느린 디바이스 초기화 과정에서 상기 대기 상태에 의해 상대적으로 매우 큰 시간을 소비하게 되는 비효율성이 발생하게 되므로, CPU 자원을 낭비하지 않고 효율적으로 다수의 디바이스 드라이버를 초기화하는 방법이 필요하게 되었다.
본 발명은 상기한 문제점을 해결하기 위해 안출된 것으로, 작업 스케쥴 기법을 사용하여 하나의 시스템을 구성하는 다수의 디바이스 드라이버를 보다 효율적으로 초기화하는 방법을 제안하고자 한다.
상기 목적을 달성하기 위하여, 본 발명의 실시에 따른 다수의 디바이스 드라이버 초기화 방법은 초기화할 디바이스들이 초기화를 위한 진행 조건을 만족하는지 여부를 판단하는 제1단계와, 상기 초기화를 위한 진행 조건이 만족된 디바이스에 대하여 초기화 작업을 수행하는 제2단계와, 상기 초기화를 위한 진행 조건을 만족하는 다른 디바이스가 존재하는지 여부를 판단하는 제3단계, 및 초기화할 모든 디바이스들의 초기화가 끝날때까지 상기 제1단계 내지 상기 제3단계를 수행하는 것을 특징으로 한다. 이 때, 바람직하게는 상기 제1단계는 초기화할 모든 디바이스들에 대한 작업 스케줄을 미리 등록하는 단계를 포함하는데, 바람직하게는 상기 작업 스케쥴은 디바이스 초기화를 위한 작업에 할당되는 CPU 시간 정보에 의해 결정되는 것을 특징으로 한다.
바람직하게는 상기 제2단계는 상기 초기화를 위한 진행 조건이 만족된 디바이스에 대하여 기지정된 초기값을 설정하는 제2-1단계와, 상기 초기값이 모두 설정되었는지 검사하는 제2-2단계, 및 상기 초기값이 모두 설정된 경우 상기 디바이스에 대하여 서비스 대기 초기화를 수행하는 제2-3단계를 포함한다. 이 때, 바람직하게는 상기 서비스 대기 초기화가 완료된 디바이스에 대한 작업 스케쥴 정보를 삭제하는 단계를 더 포함한다.
또한, 바람직하게는 상기 제2-2단계의 검사 결과 상기 초기값 설정이 모두 완료되지 않은 경우, 상기 제1단계의 초기화 진행 조건을 만족하는 다른 디바이스에 대해 초기화 작업을 진행하는 단계를 더 포함한다.
이하, 첨부된 도면을 참조하여 본 발명의 일 실시예에 따른 다수의 디바이스 드라이버 초기화 방법을 설명하면 다음과 같다.
도 3은 본 발명의 실시에 따른 작업 스케쥴 방법을 나타내는 예시도이다.
상기 도 3에서 도시한 작은 정사각형은 CPU가 동작하는 시간의 단위를 나타낸 것으로서 여기에서는 하나의 정사각형 가로 방향을 '1 틱스(ticks)'로 칭하기로 한다.
또한, 세로줄 패턴으로 채워진 정사각형은 디바이스 A의 CPU 실행 시간을 나타내고, 가로줄 패턴으로 채워진 정사각형은 디바이스 B의 CPU 실행 시간을 나타내고, 아무런 패턴도 없는 정사각형은 CPU 대기 시간을 나타낸다.
예를 들어, 상기 도 3의 경우에는 디바이스 A의 경우 CPU 실행시간은 5틱스이고, CPU 대기 시간은 9틱스가 된다. 또한, 디바이스 B의 경우 CPU 실행시간은 5틱스이고, CPU 대기 시간은 5틱스가 된다.
만일 종래의 방법으로 디바이스를 초기화할 경우, 상기 디바이스 A의 초기화가 종료된 후 상기 디바이스 B의 초기화가 진행되므로, 상기 디바이스 A와 상기 디바이스 B를 모두 초기화하기 위해서는 14틱스(디바이스 A) + 10틱스(디바이스 B) = 24틱스, 즉 모두 24틱스의 CPU 시간이 소요된다.
그러나, 본 발명에서는 각각의 디바이스 초기화 단계에서 발생하는 CPU 대기 시간을 적절히 이용하여 디바이스 초기화 시간을 최소화한다. 따라서, 이러한 작업 스케쥴에 따르면 상기 도 3에서 도시한 바와 같이 모두 14틱스의 CPU 시간이 소요되어, 종래 기술보다 10틱스만큼 디바이스 초기화시간이 빨라지게 되는 것이다.
도 4는 본 발명의 실시에 따른 디바이스 초기화를 위한 전체 과정을 나타내는 일실시예 처리 흐름도이다.
소정의 시스템을 구성하는 각각의 디바이스를 초기화하기 위해서는 우선 상기 시스템 내의 물리적 저장영역 또는 소프트웨어에 의해 구현된 별도의 데이터 베이스에 상기 디바이스를 초기화하기 위한 정보가 등록된다(S410). 이 때, 상기 정보로서 디바이스 식별자, 디바이스 초기화를 위한 파라미터 정보, 초기화 명령, 초기화 내용 등을 포함할 수 있다.
그리고 나서, 상기 시스템의 CPU는 상기 등록된 정보들을 이용하여 소프트웨어로 구현된 작업 스케쥴러(job scheduler)로 하여금 디바이스 초기화 작업을 수행하게 하고(S420), 초기화 작업을 종료하게 된다(S430). 상기 작업 스케쥴러(job scheduler)는 시스템 부팅(booting)과 함께 백그라운드 프로세서로서 동작할 수 있다.
한편, 초기화 작업(job)과 관련된 데이터 구조(data structure)의 예로서, 작업(job)의 상태를 열거형으로 정의하고 있는 열거형 데이터 타입인 job_state와 디바이스를 초기화하기 위한 단위 작업(job)을 정의하고 있는 구조체 데이터 타입인 device_job를 정의할 수 있다.
즉, 상기 job_state는
enum job_state = { hold, do, drop, done, fail }
와 같이 정의할 수 있는데, 이 때 상기 'hold'는 아직 'do'함수를 수행할 수 없는 상태임을 나타내고, 상기 'do'는 구조체 device_job에 결정되어 있는 do_func을 수행할 수 있는 상태임을 나타낸다. 또한, 상기 'drop'은 디바이스가 존재하지 않거나 지원되지 않는 경우에 디바이스 초기화를 포기함을 나타내고, 'done'은 디바이스 초기화가 종료된 상태를 나타내고, 'fail'은 디바이스 초기화가 실패한 경우를 나타낸다.
또한, 상기 device_job 은
struct device_job{
priority_level level;
job_state lastJobState;
job_state (*decide_func)(device_job &);
unsigned long decide_timeout;
job_state (*do_func)(device_job &);
unsigned long do_timeout;
};
와 같이 정의할 수 있는데, 이 때, 상기 'level'은 초기화 작업의 우선순위를 나타내고, 상기 'lastJobState'는 상기 job_state 타입의 데이터로서 device_job의 최근 작업 상태를 나타내고, 상기 '(*decide_func)(device_job &)'는 상기 job_state 타입의 데이터로서 작업의 상태를 결정하는 함수의 포인터를 나타낸다. 또한, 상기 'decide_timeout'은 마이크로 초 단위로서 decide_func의 'hold'상태가 최대로 지속되는 시간을 나타내고, 상기 '(*do_func)(device_job &)'는 상기 job_state 타입의 데이터로서 작업 상태가 'do'일 때 수행될 함수의 포인터를 나타내고 이 때, 실행 후의 상태도 결정한다. 또한, 상기 'do_timeout'은 마이크로 초 단위로서 do_func을 실행하는 최대수행시간을 나타낸다.
상기와 같은 데이터 구조들을 이용하여 디스크 디바이스 드라이버를 예로 들어 설명하도록 한다.
상기 디스크 디바이스 드라이버는 최소로 요구되는 RPM(Rotation Per Minute)이상으로 스핀업(spinup)이 될 때까지 'hold'상태로 있다가 상기 RPM이 만족되면 DMA(Direct Memory Access)을 이용하여 수퍼블럭(SuperBlock)을 읽어오고, 읽어온 내용이 만족되면 디스크를 마운트(mount)한다.
초기화 루틴을 'module_init'이라고 할 때, 상기 module_init에서는 다음과 같이 디바이스 작업의 초기 등록을 한다.
int module_init(void)
{
device_job *dj;
/* piority_level은 10, decide_func은 isSpinUp, decide_timout은 4secs, do_func은 doReadSuperBlock, do_timeout은 1msec */
dj=addDeviceJob(10, isSpinUp, 4000000, doReadSuperBlock, 1000);
reture 0;
}
이 때, 상기 decide_func 및 do_func의 구현 예는 다음과 같다.
char DmaBuffer[BLOCK_SIZE]; /* 디스크의 DMA를 통한 Read를 위한 buffer */
job_state isSpinUp(device_job &DJ)
{
/* 디스크드라이브가 probe결과 존재하지 않거나 지원되지 않으면 drop*/
if (!ProbeDiscDrive()) return drop;
/* RPM이 최소SpinUpRPM에 도달하지 못했으면 hold하고, 도달했으면 do 한다. */
if (regRPM < MinSpinUpRPM) return hold;
else return do;
}
job_state doReadSuperBlock(device_job &DJ)
{
/* DMA를 구동시켜서 0번(super block)을 DmaBuffer로 읽어온다.*/
if(initiateDMA(DmaBuffer, 0)){
/* DMA 읽어오기 세팅이 성공이면 다음 decide_func 및 do_func을 정하고, hold */
setDeviceJob(11, DJ, DMADone, 100000, doMount, 1000000);
/* priority_level은 11, decide_func는 DMADone, decide_timeout은 100msec. do_func은 doMount, do_timeout은 1 sec. */
return hold;
} else return drop; /* 실패면 drop */
}
job_state isDMADone()
{
if (isDoneDMA()) return do; /* DMA 전송이 끝났으면 do */
else hold; /* 아직 안 끝났으면 hold */
}
job_state doMount()
{
/* 읽어 온 DmaBuffer의 내용으로 mount 성공이면 done */
if (mount(DmaBuffer)) return done;
else return fail; /* mount 실패면 fail */
}
도 5는 상기 S420 단계에서 작업 스케쥴러(job scheduler)가 초기화 작업을 수행하는 과정을 구체적으로 나타내고 있는 일실시예 처리 흐름도이다.
상기 S420 단계에서는 우선 디바이스 초기화를 진행하기 위한 조건을 만족하는 작업(job)의 유무를 판별한다(S510). 이 때, 모든 디바이스에 대하여 상기 조건을 검사하고, 상기 조건은 논리식, 시간, 난수발생 등 소프트웨어로 표현할 수 있는 모든 조건을 포함한다.
상기 초기화를 진행하기 위한 조건에 대한 판단은 디바이스 드라이버에서 판단하는 것이 바람직하며 초기화를 위한 device_job을 등록하기 위한 구현 예는 다음과 같다.
list DJL; /* device_job 의 priority linked list */
device_job * addDeviceJob ( priority_level level,
job_state (*decide_func)(device_job &),
unsigned long decide_timeout,
job_state (*do_func)(device_job &);
unsigned long do_timeout )
{
device_job *nDJ = new device_job;
nDJ->level = level;
nDJ->decide_func = decide_func;
nDJ->decide_timeout = decide_timeout;
nDJ->do_func = do_func;
nDJ->do_timeout = do_timeout;
DJL.addlist(nDJ); /* device_job list에 새로 추가 */
return nDJ;
}
한편, 초기화 진행을 실제로 수행하는 과정을 구현한 예는 다음과 같다.
while( !DJL.isEmpty() ) /* device_job이 list에 남아있는 동안 계속 수행 */
{
device_job *DJ;
/* priority level 및 scheduling 방법에 따라 우선 실행대상 device job을 얻음 */
DJ = DJL.getDeviceJob();
/* decide timeout을 체크하는 watch dog 설치 */
WD = setWatchDog(getCurrentTime(), DJ->decide_timeout, decide_timeout_handler());
/* decide_func을 수행하여 최근의 JobState를 설정 */
DJ->lastJobState = DJ->decide_func(*DJ);
DO_STATE:
switch (DJ->lastJobState)
{
case hold: /* hold 상태는 watchdog에 의한 timeout이외에는 아무일도 하지 않음 */
break;
case do:
deleteWatchDog(WD); /* decide WatchDog을 지움 */
WD = setWatchDog(getCurrnetTime(), DJ->do_timeout, do_timeout_handler());
/* do_func을 수행하여 최근의 JobState를 설정 */
DJ->lastJobState = DJ->do_func(*DJ);
goto DO_STATE; /* STATE 판단루틴으로 이동 */
case drop:
case done:
case fail:
default: /* drop이거나 done, fail 또는 기타의 경우, device_job을 리스트에서 지움 */
deleteWatchDog(WD); /* watch dog을 지움 */
DJL.removeList(DJ); /* device job list에서 현재 device_job을 지움 */
break;
} /* switch */
} /* while */
그리고 나서, 상기 조건에 만족하는 작업(job)에 대하여 작업 스케쥴 정책(job schedule policy)에 의해 수행하고자 하는 작업(job)을 선택한다(S520). 상기 작업 스케쥴 정책(job schedule policy)은 상기 도 4의 S410 단계에서 등록된 초기화 작업 정보 또는 시스템이 갖고 있는 디바이스 정보 등을 이용하여 수립될 수 있고, 시스템의 운영체재에 따라 고유할 수 있다. 예컨대, 가장 먼저 조건을 만족하는 작업(job)이 선택될 수 있다. 또한, 상기 작업 스케쥴 정책은 잘 알려진 스케쥴링 방법에 의할 수도 있다.
상기 S520단계에서 작업(job)이 선택되면, 상기 선택된 작업(job)을 수행하고(S530), 작업 스케쥴러(job scheduler)에 초기화 작업(job)이 남아있는 경우에는 상기 S510 단계를 반복하게 된다(S540).
도 6은 본 발명의 실시에 따른 디바이스 초기화 작업을 수행하는 과정을 구체적으로 나타내는 일실시예 처리 흐름도이다.
상기 도 5에서 도시된 S530 단계를 보다 구체적으로 살펴보면, 기지정된 초기값을 설정하고(S610), 현재 선택된 작업의 모든 초기값 설정이 완료되었는지 여부를 검사한다(S620). 이 때, 상기 초기값 설정은 디바이스 드라이버가 수행할 함수에 대한 지정, 분기할 주소, 소정의 수식, 수행 내용 등을 표현한 스크립트 등 프로그램에 의해 수행가능한 모든 기재에 의해 명시될 수 있다. 상기 S620 단계에서 현재 선택된 작업의 모든 초기값 설정이 완료된 경우에는 해당 디바이스가 제공하는 서비스를 위한 대기 단계로 초기화하고(S630), 작업 스케쥴러(job scheduler)에서 현재 작업(job)을 제거한다(S640). 만일 상기 S620 단계에서 모든 초기값 설정이 완료되지 않은 경우에는, 해당 디바이스 초기화 작업(job)에서 필요한 다음 진행조건 및 초기값 설정이 작업 스케쥴러(job scheduler)에 지정된다.
이상에서 설명한 본 발명은, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 있어 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능하므로 전술한 실시예 및 첨부된 도면에 한정하는 것은 아니다.
본 발명에 따른 작업 스케쥴러를 이용한 다수의 디바이스 초기화 방법을 이용함으로써 다수의 디바이스를 초기화할 때 빈번하게 발생하는 CPU 대기 시간의 낭비를 방지하여 다수의 디바이스로 구성되는 시스템 부팅시 초기화 시간을 효율적으로 단축할 수 있는 효과가 있다.
도 1은 종래의 디바이스 드라이버를 초기화하는 과정을 나타내는 일실시예 처리 흐름도이다.
도 2는 종래의 다수의 디바이스 초기화를 수행하는 과정을 나타내는 일실시예 처리 흐름도이다.
도 3은 본 발명의 실시에 따른 작업 스케쥴 방법을 나타내는 예시도이다.
도 4는 본 발명의 실시에 따른 디바이스 초기화를 위한 전체 과정을 나타내는 일실시예 처리 흐름도이다.
도 5는 본 발명의 실시에 따른 작업 스케쥴러(job scheduler)가 초기화 작업을 수행하는 과정을 구체적으로 나타내는 일실시예 처리 흐름도이다.
도 6은 본 발명의 실시에 따른 디바이스 초기화 작업을 수행하는 과정을 구체적으로 나타내는 일실시예 처리 흐름도이다.

Claims (6)

  1. 초기화할 디바이스들이 초기화를 위한 진행 조건을 만족하는지 여부를 판단하는 제1단계;
    상기 초기화를 위한 진행 조건이 만족된 디바이스에 대하여 초기화 작업을 수행하는 제2단계;
    상기 초기화를 위한 진행 조건을 만족하는 다른 디바이스가 존재하는지 여부를 판단하는 제3단계; 및
    초기화할 모든 디바이스들의 초기화가 끝날때까지 상기 제1단계 내지 상기 제3단계를 수행하는 것을 특징으로 하는 다수의 디바이스 초기화 방법.
  2. 제1항에 있어서,
    상기 제1단계는 초기화할 모든 디바이스들에 대한 작업 스케줄을 미리 등록하는 단계를 포함하는 것을 특징으로 하는 다수의 디바이스 초기화 방법.
  3. 제2항에 있어서,
    상기 작업 스케쥴은 디바이스 초기화를 위한 작업에 할당되는 CPU 시간 정보에 의해 결정되는 것을 특징으로 하는 다수의 디바이스 초기화 방법.
  4. 제1항에 있어서,
    상기 제2단계는
    상기 초기화를 위한 진행 조건이 만족된 디바이스에 대하여 기지정된 초기값을 설정하는 제2-1단계;
    상기 초기값이 모두 설정되었는지 검사하는 제2-2단계; 및
    상기 초기값이 모두 설정된 경우 상기 디바이스에 대하여 서비스 대기 초기화를 수행하는 제2-3단계를 포함하는 것을 특징으로 하는 다수의 디바이스 초기화 방법.
  5. 제4항에 있어서,
    상기 서비스 대기 초기화가 완료된 디바이스에 대한 작업 스케쥴 정보를 삭제하는 단계를 더 포함하는 것을 특징으로 하는 다수의 디바이스 초기화 방법.
  6. 제4항에 있어서,
    상기 제2-2단계의 검사 결과 상기 초기값 설정이 모두 완료되지 않은 경우, 상기 제1단계의 초기화 진행 조건을 만족하는 다른 디바이스에 대해 초기화 작업을 진행하는 단계를 더 포함하는 것을 특징으로 하는 다수의 디바이스 초기화 방법.
KR1020030095617A 2003-12-23 2003-12-23 작업 스케쥴러를 이용한 다수의 디바이스 초기화 방법 KR101017372B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020030095617A KR101017372B1 (ko) 2003-12-23 2003-12-23 작업 스케쥴러를 이용한 다수의 디바이스 초기화 방법
US10/991,525 US7376822B2 (en) 2003-12-23 2004-11-19 Method of initializing multiple devices using job scheduler
CNB2004101017133A CN100470482C (zh) 2003-12-23 2004-12-23 使用工作调度程序初始化多装置的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020030095617A KR101017372B1 (ko) 2003-12-23 2003-12-23 작업 스케쥴러를 이용한 다수의 디바이스 초기화 방법

Publications (2)

Publication Number Publication Date
KR20050064262A true KR20050064262A (ko) 2005-06-29
KR101017372B1 KR101017372B1 (ko) 2011-02-28

Family

ID=34709256

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020030095617A KR101017372B1 (ko) 2003-12-23 2003-12-23 작업 스케쥴러를 이용한 다수의 디바이스 초기화 방법

Country Status (3)

Country Link
US (1) US7376822B2 (ko)
KR (1) KR101017372B1 (ko)
CN (1) CN100470482C (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10732985B2 (en) 2015-03-25 2020-08-04 Volkswagen Aktiengesellschaft Information and entertainment system for a vehicle

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7500091B2 (en) * 2005-11-30 2009-03-03 Microsoft Corporation Delay start-up of applications
EP1944690A3 (de) 2006-12-19 2009-05-20 Continental Automotive GmbH Verfahren, Vorrichtung und System
KR101366802B1 (ko) * 2007-01-05 2014-02-21 삼성전자주식회사 실시간 운영체제를 위한 스케쥴링 방법 및 장치
EP2625598A4 (en) * 2011-11-28 2014-01-15 Lg Electronics Inc METHOD, RECORDING MEDIUM, AND ELECTRONIC DEVICE FOR REDUCING THE BOOT TIME
JP6162329B2 (ja) * 2013-06-28 2017-07-12 インテル コーポレイション マルチコンポーネントプラットフォームにおけるアクティビティ管理のための技術およびシステム
CN106537341A (zh) * 2014-07-10 2017-03-22 哈曼国际工业有限公司 操作系统启动加速

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6763454B2 (en) * 1994-05-27 2004-07-13 Microsoft Corp. System for allocating resources in a computer system
KR100249060B1 (ko) * 1997-03-11 2000-03-15 구자홍 테이프 디바이스 드라이버의 초기화 방법
US6453470B1 (en) 1999-09-30 2002-09-17 General Instruments Corporation Dynamic detection of hardware configuration in a digital terminal
US20010047473A1 (en) * 2000-02-03 2001-11-29 Realtime Data, Llc Systems and methods for computer initialization
JP2001306307A (ja) 2000-04-25 2001-11-02 Hitachi Ltd ファームウェアの処理方法。
JP2002149281A (ja) 2000-11-15 2002-05-24 Matsushita Electric Ind Co Ltd デバイス初期化方法
JP3574078B2 (ja) 2001-03-16 2004-10-06 東京エレクトロンデバイス株式会社 記憶装置と記憶装置制御方法
JP2003084981A (ja) 2001-09-11 2003-03-20 Seiko Epson Corp 情報処理装置の起動方法
US7266727B2 (en) * 2004-03-18 2007-09-04 International Business Machines Corporation Computer boot operation utilizing targeted boot diagnostics
US20050245273A1 (en) * 2004-04-30 2005-11-03 Samsung Electronics Co., Ltd. Method and system for managing provider service availability in a wireless network

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10732985B2 (en) 2015-03-25 2020-08-04 Volkswagen Aktiengesellschaft Information and entertainment system for a vehicle

Also Published As

Publication number Publication date
US7376822B2 (en) 2008-05-20
CN100470482C (zh) 2009-03-18
US20050149938A1 (en) 2005-07-07
CN1637711A (zh) 2005-07-13
KR101017372B1 (ko) 2011-02-28

Similar Documents

Publication Publication Date Title
JP7313381B2 (ja) ハードウェアアクセラレーションのためのハードウェアリソースの埋込みスケジューリング
US6158000A (en) Shared memory initialization method for system having multiple processor capability
US6591358B2 (en) Computer system with operating system functions distributed among plural microcontrollers for managing device resources and CPU
US8726276B2 (en) Resetting a virtual function that is hosted by an input/output adapter
US8533444B2 (en) Booting system, image forming apparatus having the system and control method thereof
JP2010510607A (ja) システムハードウェアの交換
US20030101377A1 (en) Logical partition management apparatus and method for handling system reset interrupts
US7356684B2 (en) Booting system and/or method for initializing peripherals
CN1882917A (zh) 用于监测和复位协处理器的方法和装置
US20080005551A1 (en) Management of option rom
WO2009151445A1 (en) Method and apparatus for configuring a hypervisor during a downtime state
KR101017372B1 (ko) 작업 스케쥴러를 이용한 다수의 디바이스 초기화 방법
US20070214347A1 (en) Method and apparatus for performing staged memory initialization
EP3979072A1 (en) Firmware boot task distribution to enable low latency boot performance
US6106565A (en) System and method for hardware emulation of a digital circuit
CN115827355A (zh) 图形处理器中异常核的检测方法、检测装置和电子设备
US7984446B1 (en) Method and system for multitasking BIOS initialization tasks
US7353345B1 (en) External observation and control of data in a computing processor
CN111930502A (zh) 一种服务器管理方法、装置、设备及存储介质
CN112204524B (zh) 用于硬件加速的硬件资源的嵌入式调度
US20240086220A1 (en) Delaying interrupts for virtual machines
JP2010198165A (ja) 起動制御方法、情報処理装置及びプログラム
JP2006178663A (ja) 情報処理装置、情報処理方法、検証装置、検証方法
CN115904607A (zh) 基于虚拟机的容器的可靠设备分配
CN111741130A (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
FPAY Annual fee payment

Payment date: 20140128

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee