KR102475840B1 - 태스크 모니터링 방법, 그리고 이를 구현하기 위한 장치 - Google Patents

태스크 모니터링 방법, 그리고 이를 구현하기 위한 장치 Download PDF

Info

Publication number
KR102475840B1
KR102475840B1 KR1020220142925A KR20220142925A KR102475840B1 KR 102475840 B1 KR102475840 B1 KR 102475840B1 KR 1020220142925 A KR1020220142925 A KR 1020220142925A KR 20220142925 A KR20220142925 A KR 20220142925A KR 102475840 B1 KR102475840 B1 KR 102475840B1
Authority
KR
South Korea
Prior art keywords
task
tasks
operating state
executed
state
Prior art date
Application number
KR1020220142925A
Other languages
English (en)
Other versions
KR20220151146A (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 KR1020220142925A priority Critical patent/KR102475840B1/ko
Publication of KR20220151146A publication Critical patent/KR20220151146A/ko
Application granted granted Critical
Publication of KR102475840B1 publication Critical patent/KR102475840B1/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
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3017Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is implementing multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0721Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
    • G06F11/0724Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU] in a multiprocessor or a multi-core unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3024Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3055Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3065Monitoring arrangements determined by the means or processing involved in reporting the monitored data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3089Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
    • G06F11/3096Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents wherein the means or processing minimize the use of computing system or of computing system component resources, e.g. non-intrusive monitoring which minimizes the probe effect: sniffing, intercepting, indirectly deriving the monitored data from other directly available data
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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/4406Loading of operating system
    • 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/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Computer Security & Cryptography (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명의 일 실시예에 따른 복수의 태스크를 모니터링하는 방법은, 순차적으로 거치는 일련의 동작 상태를 통해 실행되는 상기 복수의 태스크(Task) 각각이 새로운 동작 상태에 진입할 때 소정의 저장 수단에 기록되는 동작 상태 진입 플래그를 조회하는 단계, 및 상기 동작 상태 진입 플래그의 조회 결과를 이용하여 상기 복수의 태스크 각각의 비정상 상태 여부를 결정하는 단계를 포함한다.

Description

태스크 모니터링 방법, 그리고 이를 구현하기 위한 장치{METHOD FOR MONITORING TASK, AND APPARATUS IMPLEMENTING THE SAME METHOD}
본 발명은 태스크 모니터링 방법, 그리고 이를 구현하기 위한 장치에 관한 것으로서, 보다 자세하게는 OS에서 실행되는 태스크를 모니터링 하기 위한 태스크 모니터링 방법, 그리고 이를 구현하기 위한 장치에 관한 것이다.
MCU(Micro Controller Unit)에 있어, 애플리케이션 소프트웨어는 소프트웨어 컴포넌트(software component) 단위로 모듈화되어 설계되며, 소프트웨어 컴포넌트의 기능은 러너블(runnable)이라고 지칭되는 코드 단위들을 통해 구현된다. MCU에서 태스크는 OS가 자원을 할당하여 소프트웨어를 실행하기 위한 작업 스케줄링의 단위이다. 애플리케이션 소프트웨어는 태스크(task)에 매핑된 러너블 단위로 실행된다.
멀티 코어 구조를 가지는 MCU에 있어, 소프트웨어의 실행 시 발생될 수 있는 태스크의 실시간 오류를 감지하기 위해, 기존에는 태스크 모니터링을 위한 추가적인 MCU를 사용해왔다. 이 경우, 모니터링을 위한 추가적인 MCU 마련을 위한 비용이 증가하고, 추가 MCU과 같은 추가적인 반도체 칩(Chip)을 사용 시, 칩 간의 통신을 구성해야 하므로, 메인 MCU의 CPU 로드를 증가시키는 원인이 된다.
따라서, 태스크의 실시간 오류를 감지하기 위한 모니터링 시, 추가적인 MCU 또는 별도의 모듈을 사용하지 않고 자체 MCU 자체만으로 모니터링 기능을 수행할 수 있는 방법이 요구된다.
본 발명이 해결하고자 하는 기술적 과제는, 추가적인 MCU 또는 별도의 모듈 없이 자체 MCU 만으로 태스크의 실시간 오류를 감지할 수 있는 태스크 모니터링 방법, 그리고 이를 구현하기 위한 장치를 제공하는 것이다.
본 발명이 해결하고자 하는 다른 기술적 과제는, 멀티 코어 구조의 MCU에서, CPU 로드를 증가시키지 않으면서 복수의 태스크 각각의 정상 실행 여부를 모니터링할 수 있는 태스크 모니터링 방법, 그리고 이를 구현하기 위한 장치를 제공하는 것이다.
본 발명이 해결하고자 하는 또 다른 기술적 과제는, 멀티 코어 구조의 MCU에서, 복수의 태스크 각각의 동작 상태를 별도의 메모리 영역에 기록하고 이를 조회하는 방식으로, 태스크의 누락 또는 오류를 모니터링할 수 있는 태스크 모니터링 방법, 그리고 이를 구현하기 위한 장치를 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 본 개시의 기술분야에서의 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 해결하기 위한, 본 발명의 일 실시예에 따른 복수의 태스크를 모니터링하는 방법은, 순차적으로 거치는 일련의 동작 상태를 통해 실행되는 상기 복수의 태스크(Task) 각각이 새로운 동작 상태에 진입할 때 소정의 저장 수단에 기록되는 동작 상태 진입 플래그를 조회하는 단계, 및 상기 동작 상태 진입 플래그의 조회 결과를 이용하여 상기 복수의 태스크 각각의 비정상 상태 여부를 결정하는 단계를 포함한다.
일 실시예로서, 상기 순차적으로 거치는 일련의 동작 상태를 통해 실행되는 상기 복수의 태스크 각각이 새로운 동작 상태에 진입할 때 소정의 저장 수단에 기록되는 동작 상태 진입 플래그를 조회하는 단계는, 상기 복수의 태스크 중 최소 수행 주기를 가지는 태스크의 수행 주기를 상기 동작 상태 진입 플래그의 조회 주기로 설정하는 단계, 및 상기 설정된 조회 주기마다 상기 소정의 저장 수단에 기록되어 있는 동작 상태 진입 플래그의 값을 조회하는 단계를 포함할 수 있다.
일 실시예로서, 상기 일련의 동작 상태는, 상기 태스크를 버퍼에 추가하고 인터럽트를 요청하는 제1 상태, 상기 버퍼에 추가된 태스크를 OS에 스케줄링 하는 제2 상태, 상기 스케줄링에 의해 상기 태스크가 동작하는 제3 상태, 및 상기 태스크의 동작이 완료되는 제4 상태를 포함할 수 있다.
일 실시예로서, 상기 순차적으로 거치는 일련의 동작 상태를 통해 실행되는 상기 복수의 태스크 각각이 새로운 동작 상태에 진입할 때 소정의 저장 수단에 기록되는 동작 상태 진입 플래그를 조회하는 단계는, 상기 태스크 각각의 수행 주기에 기초하여 상기 태스크 각각의 동작 상태 별로 정상 동작 시간이 설정되는 단계, 및 상기 태스크 각각이 상기 설정된 정상 동작 시간 이내에 새로운 동작 상태에 진입하는 경우, 상기 동작 상태 진입 플래그가 저장되는 단계를 포함할 수 있다.
일 실시예로서, 상기 동작 상태 진입 플래그의 조회 결과를 이용하여 상기 복수의 태스크 각각의 비정상 상태 여부를 결정하는 단계는, 상기 일련의 동작 상태 중 동작 상태 진입 플래그가 저장되지 않은 동작 상태가 존재하는 경우, 해당 태스크를 비정상 상태로 결정하는 단계를 포함할 수 있다.
일 실시예로서, 상기 일련의 동작 상태 중 동작 상태 진입 플래그가 저장되지 않은 동작 상태가 존재하는 경우, 해당 태스크를 비정상 상태로 결정하는 단계는, 상기 동작 상태 진입 플래그가 저장되지 않은 동작 상태에서 오류가 발생된 것으로 판단하는 단계를 포함할 수 있다.
일 실시예로서, 상기 복수의 태스크가 실행되기 이전에 상기 복수의 태스크의 개수를 산출하는 단계, 상기 복수의 태스크의 실행이 완료되면, 정상적으로 실행이 완료된 태스크의 개수와 상기 실행 이전에 산출된 태스크의 개수의 일치 여부를 확인하는 단계, 및 상기 정상적으로 실행이 완료된 태스크의 개수와 상기 실행 이전에 산출된 태스크의 개수가 일치하지 않는 경우 태스크 누락이 발생된 것으로 판단하는 단계를 더 포함할 수 있다.
일 실시예로서, 상기 복수의 태스크가 실행되기 이전에 상기 복수의 태스크의 개수를 산출하는 단계는, OS 초기화 시점에 상기 복수의 태스크 각각의 최초 주기 태스크를 실행함에 의해 상기 복수의 태스크의 개수를 산출하는 단계를 포함할 수 있다.
일 실시예로서, 상기 복수의 태스크의 실행이 완료되면, 정상적으로 실행이 완료된 태스크의 개수와 상기 실행 이전에 산출된 태스크의 개수의 일치 여부를 확인하는 단계는, 상기 복수의 태스크 각각의 실행이 완료되는 시점에, 소정의 저장 수단에 상기 복수의 태스크 중 정상 실행 완료된 태스크의 개수가 저장되는 단계, 및 상기 저장된 태스크의 개수와 상기 실행 이전에 산출된 태스크의 개수를 비교하는 단계를 포함할 수 있다.
일 실시예로서, 상기 동작 상태 진입 플래그의 조회 결과를 이용하여 상기 복수의 태스크 각각의 비정상 상태 여부를 결정하는 단계는, 상기 태스크가 비정상 상태이거나 오류가 발생한 경우, CPU를 리셋(reset)하는 단계를 더 포함할 수 있다.
일 실시예로서, 상기 소정의 저장 수단은, 로컬 메모리 영역(LMU)일 수 있다.
일 실시예로서, 상기 복수의 태스크 중 첫번째 태스크가 실행되는 시점에 상기 태스크의 플래그 변수를 기록하기 위한 동적 메모리를 할당하는 단계, 및 상기 복수의 태스크 중 마지막 태스크의 실행이 완료되면, 동적 메모리를 반납하는 단계를 더 포함할 수 있다.
상기 방법은, 상기 복수의 태스크 중 하나 이상의 태스크가 실행되는 복수의 코어, 및 상기 복수의 태스크 각각의 비정상 상태 여부가 모니터링 되는 모니터링 코어를 포함하는 멀티 코어 구조의 플랫폼에서 수행될 수 있다.
상기 기술적 과제를 해결하기 위한, 본 발명의 일 실시예에 따른 컴퓨터 판독 가능한 비일시적 기록 매체는, 컴퓨터로 하여금 상기 방법을 수행하도록 하는 컴퓨터 프로그램을 저장할 수 있다.
상기 기술적 과제를 해결하기 위한, 본 발명의 일 실시예에 따른 멀티 코어 구조의 컴퓨팅 장치는, 복수의 태스크 중 하나 이상의 태스크가 실행되는 복수의 코어와, 상기 복수의 태스크 각각의 모니터링 동작이 실행되는 모니터링 코어를 포함하는 멀티 코어 구조의 프로세서, 및 상기 복수의 태스크 각각의 플래그 변수가 할당되는 로컬 메모리 영역을 포함하고, 상기 프로세서는, 순차적으로 거치는 일련의 동작 상태를 통해 실행되는 상기 복수의 태스크 각각이 새로운 동작 상태에 진입할 때 상기 로컬 메모리 영역에 기록되는 동작 상태 진입 플래그를 조회하는 동작, 및 상기 동작 상태 진입 플래그의 조회 결과를 이용하여 상기 복수의 태스크 각각의 비정상 상태 여부를 결정하는 동작을 수행하기 위한 인스트럭션들(instructions)을 포함하는 컴퓨터 프로그램을 수행한다.
일 실시예로서, 상기 일련의 동작 상태는, 상기 태스크를 버퍼에 추가하고 인터럽트를 요청하는 제1 상태, 상기 버퍼에 추가된 태스크를 OS에 스케줄링 하는 제2 상태, 상기 스케줄링에 의해 상기 태스크가 동작하는 제3 상태, 및 상기 태스크의 동작이 완료되는 제4 상태를 포함할 수 있다.
도 1은 본 발명의 일 실시예에 따른 개념도이다.
도 2는 본 발명의 일 실시예에 따른 태스크 모니터링 방법을 설명하기 위한 순서도이다.
도 3은 본 발명의 다른 실시예에 따른 멀티 코어 구조의 컴퓨팅 장치의 블록도이다.
도 4는 본 발명의 몇몇 실시예에 따른 멀티 코어에서 태스크의 동작 상태를 모니터링하는 예를 도시한 것이다.
도 5 내지 도 7은 본 발명의 몇몇 실시예에 따른 태스크의 각 동작 상태로의 진입 여부에 따라 기록되는 플래그를 표시한 예이다.
도 8은 본 발명의 몇몇 실시예에 따른 정상적으로 실행된 태스크의 개수와 실제 태스크의 개수를 비교하여 태스크의 누락 여부를 판단하는 예이다.
도 9는 본 발명의 몇몇 실시예에 따른 실제 태스크의 개수를 파악하는 로직을 도시한 것이다.
도 10은 본 발명의 몇몇 실시예에 따른 태스크의 플래그 변수가 메모리에 할당되는 예를 도시한 것이다.
도 11은 본 발명의 몇몇 실시예에 따른 태스크의 오류 발생 시 예외 처리를 수행하는 예를 도시한 것이다.
도 12는 본 발명의 몇몇 실시예에 따른 방법들을 구현할 수 있는 예시적인 컴퓨팅 장치의 하드웨어 구성도이다.
이하, 첨부된 도면을 참조하여 본 개시의 바람직한 실시 예들을 상세히 설명한다. 본 개시의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 개시의 기술적 사상은 이하의 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 이하의 실시예들은 본 개시의 기술적 사상을 완전하도록 하고, 본 개시가 속하는 기술분야에서 통상의 지식을 가진 자에게 본 개시의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 개시의 기술적 사상은 청구항의 범주에 의해 정의될 뿐이다.
각 도면의 구성요소들에 참조부호를 부가함에 있어서, 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 부호를 가지도록 하고 있음에 유의해야 한다. 또한, 본 개시를 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 개시의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 개시가 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다. 본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 개시를 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다.
또한, 본 개시의 구성 요소를 설명하는 데 있어서, 제1, 제2, A, B, (a), (b) 등의 용어를 사용할 수 있다. 이러한 용어는 그 구성 요소를 다른 구성 요소와 구별하기 위한 것일 뿐, 그 용어에 의해 해당 구성 요소의 본질이나 차례 또는 순서 등이 한정되지 않는다. 어떤 구성 요소가 다른 구성요소에 "연결", "결합" 또는 "접속"된다고 기재된 경우, 그 구성 요소는 그 다른 구성요소에 직접적으로 연결되거나 또는 접속될 수 있지만, 각 구성 요소 사이에 또 다른 구성 요소가 "연결", "결합" 또는 "접속"될 수도 있다고 이해되어야 할 것이다.
이하, 본 개시의 몇몇 실시예들에 대하여 첨부된 도면에 따라 상세하게 설명한다.
도 1은 본 발명의 일 실시예에 따른 개념도이다. 도 1을 참조하면, 싱글 코어 구조를 가지는 MCU에서, 제1 태스크(11)와 제2 태스크(12)가 실행되는 동안 발생할 수 있는 태스크의 오류가 모니터링될 수 있다.
도시된 예에서, 제1 태스크(11) 및 제2 태스크(12) 각각은 순차적으로 거치는 일련의 동작 상태를 통해 실행된다. 여기서, 일련의 동작 상태는, 태스크를 버퍼에 추가하고 인터럽트를 요청하는 제1 상태(A), 버퍼에 추가된 태스크를 OS에 스케줄링 하는 제2 상태(B), 스케줄링에 의해 태스크가 동작하는 제3 상태(C), 및 태스크의 동작이 완료되는 제4 상태(D)를 포함할 수 있다.
제1 태스크(11)와 제2 태스크(12)는 소정 시간 간격(231)으로 모니터링된다. 예로서, 소정 시간 간격(231)은 복수의 태스크 중 최소 수행 주기를 가지는 태스크의 수행 주기로 설정될 수 있다.
일 실시예로서, 제1 태스크(11) 및 제2 태스크(12) 각각이 일련의 동작 상태(A, B, C, D) 중 어느 하나의 동작 상태로 새롭게 진입할 때마다, 소정의 저장 수단에 동작 상태 진입 플래그가 기록될 수 있다. 이 때, 소정의 저장 수단에 기록된 동작 상태 진입 플래그를 조회함에 의해 제1 태스크(11) 및 제2 태스크(12) 각각의 비정상 상태 여부가 결정될 수 있다.
상기와 같은 본 발명의 실시예에 따라, 추가적인 MCU 또는 별도의 모듈 없이 자체 MCU 만으로 태스크의 실시간 오류를 감지할 수 있다.
도 2는 본 발명의 일 실시예에 따른 태스크 모니터링 방법을 설명하기 위한 순서도이다.
본 발명의 실시예에 따른 방법은 도 3에 도시된 멀티 코어 구조의 컴퓨팅 장치(10) 또는 도 12에 도시된 컴퓨팅 장치(100)에 의하여 실행될 수 있다. 본 실시예에 따른 방법을 실행하는 멀티 코어 구조의 컴퓨팅 장치(10) 또는 컴퓨팅 장치(100)는 응용 프로그램 실행 환경을 구비한 컴퓨팅 장치일 수 있다. 본 발명의 실시예에 따른 방법에 포함되는 일부 동작의 수행 주체에 대한 기재가 생략될 수 있으며, 그러한 경우 그 주체는 멀티 코어 구조의 컴퓨팅 장치(10) 또는 컴퓨팅 장치(100)임을 유의한다.
도 2를 참조하면, 먼저, 동작 S21에서, 순차적으로 거치는 일련의 동작 상태를 통해 실행되는 복수의 태스크 각각이 새로운 동작 상태에 진입할 때 소정의 저장 수단에 기록되는 동작 상태 진입 플래그가 조회된다. 소정의 저장 수단은 예컨대 로컬 메모리 영역(LMU)일 수 있다. 여기서, 일련의 동작 상태는, 태스크를 버퍼에 추가하고 인터럽트를 요청하는 제1 상태, 버퍼에 추가된 태스크를 OS에 스케줄링 하는 제2 상태, 스케줄링에 의해 태스크가 동작하는 제3 상태, 및 태스크의 동작이 완료되는 제4 상태를 포함할 수 있다.
일 실시예로서, 동작 S21은, 복수의 태스크 중 최소 수행 주기를 가지는 태스크의 수행 주기가 동작 상태 진입 플래그의 조회 주기로 설정되는 동작, 및 설정된 조회 주기마다 소정의 저장 수단에 기록되어 있는 동작 상태 진입 플래그의 값이 조회되는 동작을 포함할 수 있다.
일 실시예로서, 동작 S21은, 태스크 각각의 수행 주기에 기초하여 태스크 각각의 동작 상태 별로 정상 동작 시간이 설정되는 동작, 및 태스크 각각이 설정된 정상 동작 시간 이내에 새로운 동작 상태에 진입하는 경우, 동작 상태 진입 플래그가 저장되는 동작을 포함할 수 있다.
다음으로, 동작 S22에서, 동작 상태 진입 플래그의 조회 결과를 이용하여 복수의 태스크 각각의 비정상 상태 여부가 결정된다.
일 실시예로서, 동작 S22는, 일련의 동작 상태 중 동작 상태 진입 플래그가 저장되지 않은 동작 상태가 존재하는 경우, 해당 태스크가 비정상 상태로 결정되는 동작을 포함할 수 있다. 또한, 동작 S22는, 동작 상태 진입 플래그가 저장되지 않은 동작 상태에서 오류가 발생된 것으로 판단하는 동작을 포함할 수 있다.
일 실시예로서, 상기 방법은, 복수의 태스크가 실행되기 이전에 상기 복수의 태스크의 개수가 산출되는 동작, 복수의 태스크의 실행이 완료되면, 정상적으로 실행이 완료된 태스크의 개수와 실행 이전에 산출된 태스크의 개수의 일치 여부가 확인되는 동작, 및 정상적으로 실행이 완료된 태스크의 개수와 실행 이전에 산출된 태스크의 개수가 일치하지 않는 경우 태스크 누락이 발생된 것으로 판단하는 동작을 더 포함할 수 있다.
이 때, 복수의 태스크의 개수를 산출 시, OS 초기화 시점에 복수의 태스크 각각의 최초 주기 태스크를 실행함에 의해 복수의 태스크의 개수가 산출될 수 있다. 또한, 복수의 태스크 각각의 실행이 완료되는 시점에, 소정의 저장 수단에 복수의 태스크 중 정상 실행 완료된 태스크의 개수가 저장될 수 있고, 저장된 태스크의 개수와 실행 이전에 산출된 복수의 태스크의 개수를 비교함에 의해 누락된 태스크가 있는지 여부를 확인할 수 있다.
일 실시예로서, 동작 S22는, 태스크가 비정상 상태이거나 오류가 발생한 경우, CPU를 리셋(reset)하는 동작을 더 포함할 수 있다.
일 실시예로서, 상기 방법은, 복수의 태스크 중 첫번째 태스크가 실행되는 시점에 태스크의 플래그 변수를 기록하기 위한 동적 메모리가 할당되는 동작, 및 복수의 태스크 중 마지막 태스크의 실행이 완료되면, 동적 메모리가 반납되는 동작을 더 포함할 수 있다. 이에 따라, 태스크 모니터링 시 메모리를 효율적으로 할당할 수 있다.
일 실시예로서, 상기 방법은, 복수의 태스크 중 하나 이상의 태스크가 실행되는 복수의 코어, 및 복수의 태스크 각각의 비정상 상태 여부가 모니터링 되는 모니터링 코어를 포함하는 멀티 코어 구조의 플랫폼에서 수행될 수 있다. 이에 따라, 복수의 태스크가 실행되는 코어와 복수의 태스크를 모니터링하기 위한 코어를 분리함에 의해, CPU 로드가 증가되는 것을 방지하고 태스크 모니터링으로 인해 태스크의 실행 완료가 지연되는 문제를 해결할 수 있다.
상기와 같은 본 발명의 실시예에 따른 방법에 의하면, 복수의 태스크 각각의 동작 상태를 별도의 메모리 영역에 기록하고 이를 조회하는 방식으로, 태스크의 누락 또는 오류를 모니터링할 수 있다. 이에 따라, CPU 로드를 증가시키지 않으면서 복수의 태스크 각각의 정상 실행 여부를 모니터링할 수 있다.
도 3은 본 발명의 다른 실시예에 따른 멀티 코어 구조의 컴퓨팅 장치의 블록도이다. 도 3을 참조하면, 본 발명의 실시예에 의한 컴퓨팅 장치(10)는 복수의 태스크 중 하나 이상의 태스크가 실행되는 복수의 코어(31, 32, 33), 및 복수의 태스크 각각의 비정상 상태 여부가 모니터링되는 모니터링 코어(34)를 포함하는 멀티 코어 구조의 프로세서와, 복수의 태스크 각각의 동작 상태에 관한 플래그 변수가 저장되는 메모리 영역(35)의 구성을 포함한다.
복수의 코어(31, 32, 34) 중 적어도 하나에서 실행되는 복수의 태스크 각각은 순차적으로 거치는 일련의 동작 상태를 통해 실행된다. 일련의 동작 상태는, 태스크를 버퍼에 추가하고 인터럽트를 요청하는 제1 상태(A), 버퍼에 추가된 태스크를 OS에 스케줄링 하는 제2 상태(B), 스케줄링에 의해 태스크가 동작하는 제3 상태(C), 및 태스크의 동작이 완료되는 제4 상태(D)를 포함할 수 있다.
일 실시예로서, 복수의 태스크 각각이 실행되어 새로운 동작 상태에 진입할 때마다 메모리 영역(35)에 동작 상태 진입 플래그가 기록(write)될 수 있다. 여기서, 메모리 영역(35)은 예컨대 로컬 메모리 영역(LMU)일 수 있다. 예로서, 태스크가 실행되어 일련의 동작 상태 중 제1 상태(A)의 수행이 완료되고 제2 상태(B)로 진입하면, 제1 상태(A)가 정상적으로 수행되었음을 나타내도록 제1 상태(A)에 대한 동작 상태 진입 플래그의 값 '1'이 기록될 수 있다.
일 실시예로서, 모니터링 코어(34)에서는 복수의 태스크 각각의 비정상 상태 여부를 모니터링하기 위해, 메모리 영역(35)에 기록된 동작 상태 진입 플래그를 조회(Read)할 수 있다.
즉, 복수의 코어(31, 32, 33)에서는 복수의 태스크 각각이 실행되는 동안 각각의 태스크의 동작 상태 진입 플래그가 메모리 영역(35)에 기록되고, 메모리 영역(35)에 기록된 동작 상태 진입 플래그를 모니터링 코어(34)에서 조회함에 의해, 복수의 태스크 각각의 비정상 상태 여부를 모니터링할 수 있다. 이에 따라, 태스크가 실행되는 코어와 태스크가 모니터링되는 코어를 분리함에 의해 모니터링 동작에 의해 CPU 로드를 증가시키는 것을 막을 수 있다.
도 4는 본 발명의 몇몇 실시예에 따른 멀티 코어에서 태스크의 동작 상태를 모니터링하는 예를 도시한 것이다. 도 4를 참조하면, 멀티 코어 구조를 가지는 MCU에서, 제1 태스크(11)와 제2 태스크(12)가 실행되는 동안 발생할 수 있는 태스크의 오류가 모니터링될 수 있다.
도시된 예에서, 제1 태스크(11)는 제1 코어(21)에서 실행되고, 제2 태스크(12)는 제2 코어(22)에서 실행된다. 제1 태스크(11)는 일련의 동작 상태(111, 112, 113, 114)를 순차적으로 수행하고, 제2 태스크(12)는 일련의 동작 상태(121, 122, 123, 124)를 순차적으로 수행할 수 있다.
이 때, 제2 태스크(12)가 수행하는 일련의 동작 상태(121, 122, 123, 124) 중 제1 동작 상태(121)는 제1 코어(21)에서 실행될 수 있다. 여기서, 제1 태스크(11)와 제2 태스크(12)가 순차적으로 수행하는 일련의 동작 상태는, 태스크를 버퍼에 추가하고 인터럽트를 요청하는 제1 상태(A), 버퍼에 추가된 태스크를 OS에 스케줄링 하는 제2 상태(B), 스케줄링에 의해 태스크가 동작하는 제3 상태(C), 및 태스크의 동작이 완료되는 제4 상태(D)를 포함할 수 있다.
일 실시예로서, 제1 코어(21) 및 제2 코어(22)에서 실행되는 제1 태스크(11)와 제2 태스크(12)는 소정 시간 간격(231)으로 모니터링(20)될 수 있다. 예로서, 소정 시간 간격(231)은 복수의 태스크 중 최소 수행 주기를 가지는 태스크의 수행 주기로 설정될 수 있다.
일 실시예로서, 제1 태스크(11) 및 제2 태스크(12) 각각이 일련의 동작 상태(A, B, C, D) 중 어느 하나의 동작 상태로 새롭게 진입할 때마다, 소정의 저장 수단에 동작 상태 진입 플래그가 기록되고, 저장 수단에 기록된 동작 상태 진입 플래그를 조회함에 의해 제1 태스크(11) 및 제2 태스크(12) 각각의 비정상 상태 여부가 모니터링될 수 있다.
상기와 같은 실시예에 의하면, 멀티 코어 구조의 MCU에서, CPU 로드를 증가시키지 않으면서 복수의 태스크 각각의 정상 실행 여부를 모니터링할 수 있다.
도 5 내지 도 7은 본 발명의 몇몇 실시예에 따른 태스크의 각 동작 상태로의 진입 여부에 따라 기록되는 플래그를 표시한 예이다.
도 5를 참조하면, 제1 코어(21), 제2 코어(22), 및 제3 코어(23)에서 제1 태스크(41), 제2 태스크(42), 제3 태스크(43)가 실행되는 동안, 각각의 태스크가 순차적으로 수행하는 일련의 동작 상태와 관련된 플래그가 저장될 수 있다.
도시된 예에서, 제1 태스크(41) 및 제2 태스크(42)가 실행되는 동안 일련의 동작 상태(A, B, C, D) 각각이 정상적으로 수행되면, 각각의 동작 상태(A, B, C, D)에 대한 동작 상태 진입 플래그의 값 '1'이 기록된다.
그러나, 제3 태스크(43)의 경우 일련의 동작 상태(A, B, C, D) 중 제 1 상태(A)는 정상적으로 수행되어 제 1 상태(A)에 대한 동작 상태 진입 플래그의 값 '1'이 기록되었으나, 제2 상태(B)가 미수행됨에 따라 제2 상태(B), 제3 상태(C), 및 제4 상태(D)에 대한 동작 상태 진입 플래그가 모두 기록되지 않을 수 있다. 이 때, 동작 상태 진입 플래그가 기록되지 않는 경우, 디폴트 값으로 '0'이 자동으로 기록(45)될 수 있다.
도시된 예에서, 제2 상태(B)의 미수행으로 인한 태스크 누락(44)은, 제1 상태(A)에서 수행된 인터럽트에 의한 ISR의 문제로 인해 발생된 것으로 판단할 수 있다.
도 6을 참조하면, 제1 태스크(51) 및 제2 태스크(52)가 실행되는 동안 일련의 동작 상태(A, B, C, D) 각각이 정상적으로 수행되면, 각각의 동작 상태(A, B, C, D)에 대한 동작 상태 진입 플래그의 값 '1'이 기록된다.
그러나, 제3 태스크(53)의 경우 일련의 동작 상태(A, B, C, D) 중 제 1 상태(A) 및 제2 동작 상태(B)는 정상적으로 수행되어 제 1 상태(A) 및 제2 동작 상태(B) 각각에 대한 동작 상태 진입 플래그의 값이 모두 '1'로 기록되었으나, 제3 상태(C)가 미수행됨에 따라 제3 상태(C) 및 제4 상태(D)에 대한 동작 상태 진입 플래그가 모두 기록되지 않거나, 디폴트 값으로 '0'이 자동으로 기록(55)될 수 있다.
도시된 예에서, 제3 상태(C)의 미수행으로 인한 태스크 누락(54)은, 제2 상태(B)에서 수행된 OS 스케줄링의 문제로 인해 발생된 것으로 판단할 수 있다.
도 7을 참조하면, 제1 태스크(61) 및 제2 태스크(62)가 실행되는 동안 일련의 동작 상태(A, B, C, D) 각각이 정상적으로 수행되면, 각각의 동작 상태(A, B, C, D)에 대한 동작 상태 진입 플래그의 값 '1'이 기록된다.
그러나, 제3 태스크(63)의 경우 일련의 동작 상태(A, B, C, D) 중 제 1 상태(A), 제2 동작 상태(B), 및 제3 동작 상태(C)는 정상적으로 수행되어 제 1 상태(A), 제2 동작 상태(B), 및 제3 동작 상태(C) 각각에 대한 동작 상태 진입 플래그의 값이 모두 '1'로 기록되었으나, 제4 상태(D)가 미수행됨에 따라 제4 상태(D)에 대한 동작 상태 진입 플래그가 기록되지 않거나, 디폴트 값으로 '0'이 자동으로 기록(65)될 수 있다.
도시된 예에서, 제4 상태(D)의 미수행으로 인한 태스크 누락(64)은, 제3 상태(B)에서 수행된 태스크 동작의 문제로 인해 발생된 것으로 판단할 수 있다.
상기와 같이, 본 발명의 실시예에 의하면, 태스크의 실행 동안 소정의 저장 수단에 기록되는 각 동작 상태 진입 플래그를 이용하여 태스크가 정상적으로 수행되는지 여부를 실시간으로 모니터링할 수 있다.
도 8은 본 발명의 몇몇 실시예에 따른 정상적으로 실행된 태스크의 개수와 실제 태스크의 개수를 비교하여 태스크의 누락 여부를 판단하는 예이다. 도 8을 참조하면, 제5 태스크(75)가 순차적으로 수행하는 일련의 동작 상태(A, B, C, D) 각각에 대한 동작 상태 진입 플래그의 값이 모두 '0'으로 기록(77)되어 있는 경우, 제5 태스크(75)의 누락이 발생된 것으로 판단할 수 있다.
일 실시예로서, 동작 상태 진입 플래그의 값을 조회하여 태스크의 누락 여부를 판단하는 대신, 복수의 태스크 중 정상적으로 수행된 태스크의 개수와 실제 태스크의 개수를 비교하여 태스크의 누락 여부를 판단할 수도 있다.
도시된 예에서, 복수의 코어(21, 22, 23)에서 복수의 태스크(71, 72, 73, 74, 75, 76)이 순차적으로 실행되도록 스케줄링 되어 있는 경우, 각각의 태스크의 실행이 완료되는 시점에, 정상적으로 실행 완료된 태스크의 개수를 저장하고, 마지막 태스크(76)의 실행이 완료되면 저장된 태스크의 개수(78)를 조회하여 실제 태스크의 개수와 일치하는지 여부를 확인할 수 있다. 예로서, 마지막 태스크(76)에 대해 저장된 정상 실행 완료된 태스크의 개수(78)가 '5'이고 실제 태스크의 개수가 '6'인 경우, 태스크의 누락이 발생한 것으로 판단할 수 있다. 이 때, 정상 실행 완료된 태스크의 개수가 저장되어 있지 않은 태스크(75)를 누락된 태스크로 판단할 수 있다.
도 9는 본 발명의 몇몇 실시예에 따른 실제 태스크의 개수를 파악하는 로직을 도시한 것이다. 도 9를 참조하면, 복수의 코어(21, 22, 23)에서 복수의 태스크(81, 82, 83, 84, 85, 86)가 순차적으로 실행되도록 스케줄링 되어 있는 경우, OS를 초기화하는 시점에 복수의 태스크 각각의 최초 주기 태스크를 실행함에 의해 실제 태스크의 개수를 산출할 수 있다.
도시된 예에서, OS를 초기화하는 시점에 태스크 각각의 최초 주기 태스크가 실행되면, 각각의 태스크의 실행 완료 시, 실제 태스크의 개수를 나타내는 플래그 값을 1 만큼 증가시켜 저장할 수 있다. 예로서, 제1 태스크(81)의 실행이 완료되면 플래그(Chain_Cnt)에 '1'이 저장(810)되고, 제2 태스크(82)의 실행이 완료되면 저장되어 있는 플래그를 1만큼 증가시켜 '2'가 저장(820)될 수 있다. 이와 같은 방식으로, 마지막 태스크인 제6 태스크(86)의 실행이 완료되면 플래그에 '6'이 저장(860)되어, 실제 태스크의 개수가 '6'으로 산출될 수 있다. 이와 같은 방식으로 산출된 실제 태스크의 개수와, 정상적으로 실행 완료된 태스크의 개수를 비교함에 의해 태스크의 누락 여부가 판단될 수 있다.
도 10은 본 발명의 몇몇 실시예에 따른 태스크의 플래그 변수가 메모리에 할당되는 예를 도시한 것이다. 도 10을 참조하면, 복수의 태스크(91, 92, 93)를 모니터링함에 있어, 복수의 태스크(91, 92, 93) 각각이 수행하는 일련의 동작 상태 각각에 대한 플래그 변수를 저장하기 위한 메모리를 할당하는 예를 보여준다.
도시된 예에서, 복수의 태스크(91, 92, 93) 중 가장 먼저 실행되는 제1 태스크(91)의 실행 시작 시점에 일련의 동작 상태 각각에 대한 플래그 변수를 저장하기 위한 동적 메모리가 할당(94)되고, 가장 마지막으로 실행되는 제3 태스크(93)의 실행이 완료되면 동적 메모리가 반납(95)되도록 함에 의해 메모리를 효율적으로 사용할 수 있다. 이 때, 플래그 변수가 저장되는 동적 메모리는 예컨대 로컬 메모리 영역(LMU)(35)에 할당되어 관리될 수 있다. 이에 따라, 태스크 모니터링이 수행되는 모니터링 코어(34)에서는 로컬 메모리 영역(LMU)에 저장되어 있는 플래그 변수를 조회(Read)만 하기 때문에 데이터 충돌이 발생하지 않고 높은 성능을 나타낼 수 있다.
도 11은 본 발명의 몇몇 실시예에 따른 태스크의 오류 발생 시 예외 처리를 수행하는 예를 도시한 것이다. 도 11을 참조하면, 복수의 태스크가 실행(1010)되는 동안 태스크 모니터링을 통해 비정상 상태이거나 오류가 발생한 태스크가 감지(1020)될 수 있다. 이 때, 비정상 상태이거나 오류가 발생한 태스크가 감지되면, 태스크의 비정상 상태 및 오류에 관한 정보를 저장(1031)하고 CPU를 리셋(reset)(1032)하는 예외 처리 동작(1030)이 수행될 수 있다.
이 때, CPU를 리셋(reset)(1032)하기 직전에 오류에 관한 정보를 저장(1031)하고, 예컨대 오류의 원인이 된 태스크 ID와 오류 종류를 메모리에 저장할 수 있다.
또한, 펌웨어가 초기화되는 시점(1040)에 리셋(Reset) 정보를 업데이트하고, 업데이트된 리셋 정보를 사용자(User)에게 제공할 수 있다.
도 12는 본 발명의 몇몇 실시예에 따른 방법들을 구현할 수 있는 예시적인 컴퓨팅 장치의 하드웨어 구성도이다. 도 12에 도시된 바와 같이, 컴퓨팅 장치(100)는 하나 이상의 프로세서(101), 버스(107), 네트워크 인터페이스(102), 프로세서(101)에 의하여 수행되는 컴퓨터 프로그램(105)을 로드(load)하는 메모리(103)와, 컴퓨터 프로그램(105)를 저장하는 스토리지(104)를 포함할 수 있다. 다만, 도 12에는 본 발명의 실시예와 관련 있는 구성요소들 만이 도시되어 있다. 따라서, 본 발명이 속한 기술분야의 통상의 기술자라면 도 12에 도시된 구성요소들 외에 다른 범용적인 구성 요소들이 더 포함될 수 있음을 알 수 있다.
프로세서(101)는 컴퓨팅 장치(100)의 각 구성의 전반적인 동작을 제어한다. 프로세서(101)는 예컨대 멀티 코어 구조의 MCU로 구현될 수 있다.
일 실시예로서, 프로세서(101)는 복수의 태스크 중 하나 이상의 태스크가 실행되는 복수의 코어와, 상기 복수의 태스크 각각의 모니터링 동작이 실행되는 모니터링 코어를 포함하는 멀티 코어 구조의 ECU로 구현될 수 있다.
또한, 프로세서(101)는 CPU(Central Processing Unit), MPU(Micro Processor Unit), MCU(Micro Controller Unit), GPU(Graphic Processing Unit) 또는 본 발명의 기술 분야에 잘 알려진 임의의 형태의 프로세서 중 적어도 하나를 포함하여 구성될 수도 있다. 또한, 프로세서(101)는 본 발명의 다양한 실시예들에 따른 방법/동작을 실행하기 위한 적어도 하나의 애플리케이션 또는 프로그램에 대한 연산을 수행할 수 있다. 컴퓨팅 장치(100)는 하나 이상의 프로세서를 구비할 수 있다.
메모리(103)는 각종 데이터, 명령 및/또는 정보를 저장한다. 메모리(103)는 본 발명의 다양한 실시예들에 따른 방법/동작들을 실행하기 위하여 스토리지(104)로부터 하나 이상의 프로그램(105)을 로드(load) 할 수 있다. 예를 들어, 컴퓨터 프로그램(105)이 메모리(103)에 로드 되면, 로직(또는 모듈)이 메모리(103) 상에 구현될 수 있다. 메모리(103)의 예시는 RAM이 될 수 있으나, 이에 한정되는 것은 아니다.
버스(107)는 컴퓨팅 장치(100)의 구성 요소 간 통신 기능을 제공한다. 버스(107)는 주소 버스(Address Bus), 데이터 버스(Data Bus) 및 제어 버스(Control Bus) 등 다양한 형태의 버스로 구현될 수 있다.
네트워크 인터페이스(102)는 컴퓨팅 장치(100)의 유무선 인터넷 통신을 지원한다. 네트워크 인터페이스(102)는 인터넷 통신 외의 다양한 통신 방식을 지원할 수도 있다. 이를 위해, 네트워크 인터페이스(102)는 본 발명의 기술 분야에 잘 알려진 통신 모듈을 포함하여 구성될 수 있다.
스토리지(104)는 하나 이상의 컴퓨터 프로그램(105)을 비임시적으로 저장할 수 있다. 스토리지(104)는 플래시 메모리 등과 같은 비휘발성 메모리, 하드 디스크, 착탈형 디스크, 또는 본 발명이 속하는 기술 분야에서 잘 알려진 임의의 형태의 컴퓨터로 읽을 수 있는 기록 매체를 포함하여 구성될 수 있다.
컴퓨터 프로그램(105)은 본 발명의 다양한 실시예들에 따른 방법/동작들이 구현된 하나 이상의 인스트럭션들(instructions)을 포함할 수 있다. 컴퓨터 프로그램(105)이 메모리(103)에 로드 되면, 프로세서(101)는 상기 하나 이상의 인스트럭션들을 실행시킴으로써 본 발명의 다양한 실시예들에 따른 방법/동작들을 수행할 수 있다.
일 실시예로서, 컴퓨터 프로그램(105)은, 순차적으로 거치는 일련의 동작 상태를 통해 실행되는 상기 복수의 태스크 각각이 새로운 동작 상태에 진입할 때 상기 로컬 메모리 영역에 기록되는 동작 상태 진입 플래그를 조회하는 동작, 및 상기 동작 상태 진입 플래그의 조회 결과를 이용하여 상기 복수의 태스크 각각의 비정상 상태 여부를 결정하는 동작을 수행하기 위한 인스트럭션들(instructions)을 포함할 수 있다.
지금까지 도 1 내지 도 12를 참조하여 본 발명의 다양한 실시예들 및 그 실시예들에 따른 효과들을 언급하였다. 본 발명의 기술적 사상에 따른 효과들은 이상에서 언급한 효과들로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
지금까지 설명된 본 발명의 기술적 사상은 컴퓨터가 읽을 수 있는 매체 상에 컴퓨터가 읽을 수 있는 코드로 구현될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록 매체는, 예를 들어 이동형 기록 매체(CD, DVD, 블루레이 디스크, USB 저장 장치, 이동식 하드 디스크)이거나, 고정식 기록 매체(ROM, RAM, 컴퓨터 구비 형 하드 디스크)일 수 있다. 상기 컴퓨터로 읽을 수 있는 기록 매체에 기록된 상기 컴퓨터 프로그램은 인터넷 등의 네트워크를 통하여 다른 컴퓨팅 장치에 전송되어 상기 다른 컴퓨팅 장치에 설치될 수 있고, 이로써 상기 다른 컴퓨팅 장치에서 사용될 수 있다.
이상에서, 본 발명의 실시예를 구성하는 모든 구성 요소들이 하나로 결합되거나 결합되어 동작하는 것으로 설명되었다고 해서, 본 발명의 기술적 사상이 반드시 이러한 실시예에 한정되는 것은 아니다. 즉, 본 발명의 목적 범위 안에서라면, 그 모든 구성요소들이 하나 이상으로 선택적으로 결합하여 동작할 수도 있다.
도면에서 동작들이 특정한 순서로 도시되어 있지만, 반드시 동작들이 도시된 특정한 순서로 또는 순차적 순서로 실행되어야만 하거나 또는 모든 도시 된 동작들이 실행되어야만 원하는 결과를 얻을 수 있는 것으로 이해되어서는 안 된다. 특정 상황에서는, 멀티태스킹 및 병렬 처리가 유리할 수도 있다. 더욱이, 위에 설명한 실시예들에서 다양한 구성들의 분리는 그러한 분리가 반드시 필요한 것으로 이해되어서는 안 되고, 설명된 프로그램 컴포넌트들 및 시스템들은 일반적으로 단일 소프트웨어 제품으로 함께 통합되거나 다수의 소프트웨어 제품으로 패키지 될 수 있음을 이해하여야 한다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 본 발명이 다른 구체적인 형태로도 실시될 수 있다는 것을 이해할 수 있다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로 이해해야만 한다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명에 의해 정의되는 기술적 사상의 권리범위에 포함되는 것으로 해석되어야 할 것이다.

Claims (5)

  1. 멀티 코어 구조의 컴퓨팅 장치에 있어서,
    복수의 태스크 중 하나 이상의 태스크가 실행되는 복수의 코어와, 상기 복수의 태스크 각각의 모니터링 동작이 실행되는 모니터링 코어를 포함하는 멀티 코어 구조의 프로세서; 및
    상기 복수의 태스크 각각의 플래그 변수가 할당되는 로컬 메모리 영역을 포함하고,
    상기 복수의 코어는,
    상기 실행되는 태스크가 새로운 동작 상태에 진입할 때 상기 로컬 메모리 영역에 동작 상태 진입 플래그를 기록하고,
    상기 모니터링 코어는,
    상기 동작 상태 진입 플래그를 조회(READ)하고, 상기 동작 상태 진입 플래그의 조회 결과를 이용하여 상기 복수의 태스크 각각의 비정상 상태 여부를 결정하되,
    상기 모니터링 코어는, 상기 동작 상태 진입 플래그를 조회만 하는 것인,
    멀티 코어 구조를 가지는 컴퓨팅 장치.
  2. 제1 항에 있어서,
    상기 동작 상태 진입 플래그는,
    상기 로컬 메모리 영역에 동적으로 할당 및 반납되는 동적 메모리를 통하여 저장되는,
    멀티 코어 구조를 가지는 컴퓨팅 장치.
  3. 제2 항에 있어서,
    상기 동적 메모리는,
    상기 복수의 태스크 중 첫번째 태스크가 실행되는 시점에 할당되고, 상기 복수의 태스크 중 마지막 태스크의 실행이 완료되면, 반납되는 것인,
    멀티 코어 구조를 가지는 컴퓨팅 장치.
  4. 제1 항에 있어서,
    상기 모니터링 코어는,
    상기 복수의 태스크 중 최소 수행 주기를 가지는 태스크의 수행 주기를 상기 동작 상태 진입 플래그의 조회 주기로 설정하고, 상기 설정된 조회 주기마다 상기 동작 상태 진입 플래그의 값을 조회하는,
    멀티 코어 구조를 가지는 컴퓨팅 장치.
  5. 제1 항에 있어서,
    상기 동작 상태 진입 플래그는,
    상기 실행되는 태스크가 상기 동작 상태 별로 설정된 정상 동작 시간 이내에 새로운 동작 상태로 진입하면 저장되는,
    멀티 코어 구조를 가지는 컴퓨팅 장치.
KR1020220142925A 2020-12-14 2022-10-31 태스크 모니터링 방법, 그리고 이를 구현하기 위한 장치 KR102475840B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020220142925A KR102475840B1 (ko) 2020-12-14 2022-10-31 태스크 모니터링 방법, 그리고 이를 구현하기 위한 장치

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020200174669A KR102463847B1 (ko) 2020-12-14 2020-12-14 태스크 모니터링 방법, 그리고 이를 구현하기 위한 장치
KR1020220142925A KR102475840B1 (ko) 2020-12-14 2022-10-31 태스크 모니터링 방법, 그리고 이를 구현하기 위한 장치

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020200174669A Division KR102463847B1 (ko) 2020-12-14 2020-12-14 태스크 모니터링 방법, 그리고 이를 구현하기 위한 장치

Publications (2)

Publication Number Publication Date
KR20220151146A KR20220151146A (ko) 2022-11-14
KR102475840B1 true KR102475840B1 (ko) 2022-12-07

Family

ID=81898963

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020200174669A KR102463847B1 (ko) 2020-12-14 2020-12-14 태스크 모니터링 방법, 그리고 이를 구현하기 위한 장치
KR1020220142925A KR102475840B1 (ko) 2020-12-14 2022-10-31 태스크 모니터링 방법, 그리고 이를 구현하기 위한 장치

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020200174669A KR102463847B1 (ko) 2020-12-14 2020-12-14 태스크 모니터링 방법, 그리고 이를 구현하기 위한 장치

Country Status (3)

Country Link
US (1) US20220188154A1 (ko)
KR (2) KR102463847B1 (ko)
CN (1) CN114625601A (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013061783A (ja) 2011-09-13 2013-04-04 Toyota Motor Corp マルチコア・プロセッサ
KR102075689B1 (ko) 2018-08-16 2020-02-10 주식회사 넥스트칩 태스크의 기능 안전을 보장하기 위한 방법 및 장치
JP2020173644A (ja) 2019-04-11 2020-10-22 株式会社デンソー 電子制御装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5333285A (en) * 1991-11-21 1994-07-26 International Business Machines Corporation System crash detect and automatic reset mechanism for processor cards
KR100928187B1 (ko) * 2007-11-30 2009-11-25 한국전기연구원 듀얼 프로세서 제어 장치의 고장 안전 구조
KR20100010390A (ko) * 2008-07-22 2010-02-01 엘지전자 주식회사 마이크로컴퓨터와 마이크로컴퓨터의 제어방법
US11768701B2 (en) * 2019-09-17 2023-09-26 Western Digital Technologies, Inc. Exception analysis for data storage devices

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013061783A (ja) 2011-09-13 2013-04-04 Toyota Motor Corp マルチコア・プロセッサ
KR102075689B1 (ko) 2018-08-16 2020-02-10 주식회사 넥스트칩 태스크의 기능 안전을 보장하기 위한 방법 및 장치
JP2020173644A (ja) 2019-04-11 2020-10-22 株式会社デンソー 電子制御装置

Also Published As

Publication number Publication date
US20220188154A1 (en) 2022-06-16
CN114625601A (zh) 2022-06-14
KR20220151146A (ko) 2022-11-14
KR102463847B1 (ko) 2022-11-03
KR20220084814A (ko) 2022-06-21

Similar Documents

Publication Publication Date Title
JP7313381B2 (ja) ハードウェアアクセラレーションのためのハードウェアリソースの埋込みスケジューリング
US9038080B2 (en) Method and system for heterogeneous filtering framework for shared memory data access hazard reports
JP2020194524A (ja) アクセスリクエストを管理するための方法、装置、デバイス、および記憶媒体
US8108862B2 (en) Out-of-order thread scheduling based on processor idle time thresholds
JP2010044578A (ja) マルチコアプロセッサ
US8370618B1 (en) Multiple platform support in computer system firmware
KR101212496B1 (ko) 모니터링 자원의 사용량 표현 방법, 컴퓨팅 장치 및 그 방법을 실행시키기 위한 프로그램을 기록한 기록 매체
US9864649B2 (en) Technologies for root cause identification of use-after-free memory corruption bugs
KR102475840B1 (ko) 태스크 모니터링 방법, 그리고 이를 구현하기 위한 장치
US20100251268A1 (en) Serialized access to an i/o adapter through atomic operation
JP2016066139A (ja) 車両制御装置
JP6123487B2 (ja) 制御装置、制御方法及び制御プログラム
JP6802764B2 (ja) 演算装置
US11106395B2 (en) Application execution apparatus and application execution method
JP7236811B2 (ja) 情報処理装置
CN111221701A (zh) 一种芯片及其电路逻辑重构系统
US7877533B2 (en) Bus system, bus slave and bus control method
KR102463950B1 (ko) 설정 변경 장치, 설정 변경 방법 및 기록 매체에 저장된 설정 변경 프로그램
JP7316613B2 (ja) 異常検出方法、異常検出プログラム、異常検出装置、書き換え方法、書き換えプログラム及び書き換え装置
US20230350695A1 (en) Information processing device and profile tool control method
JP7427143B2 (ja) 要因分析装置、要因分析方法及び要因分析プログラム
CN112204524B (zh) 用于硬件加速的硬件资源的嵌入式调度
JP2017111662A (ja) 電子制御装置
JP2018151803A (ja) コンピュータプログラムの検査装置および車両制御用コンピュータプログラムの検査を行う車載装置
KR20230101569A (ko) 가상 워치독 제공 방법 및 그 방법이 적용된 연산 장치

Legal Events

Date Code Title Description
A107 Divisional application of patent
E701 Decision to grant or registration of patent right
GRNT Written decision to grant