KR102111991B1 - 운영체제 시스템의 자원 관리 장치 및 방법 - Google Patents

운영체제 시스템의 자원 관리 장치 및 방법 Download PDF

Info

Publication number
KR102111991B1
KR102111991B1 KR1020180096248A KR20180096248A KR102111991B1 KR 102111991 B1 KR102111991 B1 KR 102111991B1 KR 1020180096248 A KR1020180096248 A KR 1020180096248A KR 20180096248 A KR20180096248 A KR 20180096248A KR 102111991 B1 KR102111991 B1 KR 102111991B1
Authority
KR
South Korea
Prior art keywords
resource
kernel
list
resource list
abstracted
Prior art date
Application number
KR1020180096248A
Other languages
English (en)
Other versions
KR20200020485A (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 KR1020180096248A priority Critical patent/KR102111991B1/ko
Publication of KR20200020485A publication Critical patent/KR20200020485A/ko
Application granted granted Critical
Publication of KR102111991B1 publication Critical patent/KR102111991B1/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/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
    • 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

Landscapes

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

Abstract

본 발명은 운영체제 시스템의 자원 관리 장치 및 방법에 관한 것으로, 본 발명에 따른 장치는 응용 프로그램의 시스템 자원 접근에 대해서는 자원의 종류 및 자원 요청 대상에 대한 정보를 포함하는 자원 목록을 이용하고, 운영체제의 시스템 자원 모니터링에 대해서는 자원 목록에서 파생된 추상화된 자원 목록을 이용하여 시스템 자원을 관리하는 관리 제어부를 포함한다. 본 발명에 의하면, 응용 프로그램에서는 시스템 자원에 대한 자원 목록을 이용하여 시스템 자원에 접근하고, 시스템 자원 모니터링에서는 자원 목록에서 파생된 추상화된 자원 목록을 이용하여 시스템 자원에 접근함으로써 운영체제의 성능 저하를 방지하면서도 자원을 효율적으로 관리할 수 있다.

Description

운영체제 시스템의 자원 관리 장치 및 방법{Apparatus and Method for Managing Resource of OS System}
본 발명은 운영체제 시스템의 자원 관리 장치 및 방법에 관한 것으로, 보다 상세하게는 응용 프로그램의 자원 접근 영역과, 모니터링의 자원 접근 영역을 분리하여 자원을 효율적으로 사용하고 관리할 수 있는 운영체제 시스템의 자원 관리 장치 및 방법에 관한 것이다.
최근 들어, 여러 가지 임베디드 시스템(Embedded System)의 기능 증가로 인해 시스템이 복잡해지면서 요구되는 성능은 증가하고 있고, 이에 따라 실시간 운영체제(RTOS: Real-Time Operating System)의 설치가 일반화되고 있다. 실시간 운영체제는 우주항공 부품, 의료장비 또는 산업용 제어 시스템 등과 같이 높은 신뢰도와 안정성을 요구하는 임베디드 시스템에 적용 가능한 운영체제로, 실시간 소프트웨어를 구성하는데 필요한 기본 기능을 제공하고, 연산 및 입출력이 분명하게 정의된 시간의 한도 내에서 달성될 수 있도록 엄격하게 자원을 관리하는 기능을 수행할 수 있다.
이러한 실시간 운영체제는 시스템 전체에서 공유하는 자원과, 응용 프로그램의 독점적인 자원인 커널 자원에 대한 모니터링 기능을 제공할 수 있는데, 자원의 모니터링 기능은 현재 응용 프로그램에서 사용 중인 자원 목록과 자원 사용 내역을 표시하는 것으로, 실시간 운영체제는 커널 자원에 직접 접근하여 사용하기 때문에 커널 자원을 모니터링하는 과정이 중요하다.
이와 같이, 커널 자원을 모니터링하는 것은 응용 프로그램에서 어떤 종류의 자원을 얼마나 사용하였는지 등을 알 수 있기 때문에 실시간 운영체제의 성능에 큰 영향을 미치게 된다.
그런데, 싱글 코어 프로세서를 가지는 실시간 운영체제에서는 프로세서가 한 번에 하나의 스레드(thread)를 실행하기 때문에 커널 자원을 모니터링하게 되면 응용 프로그램은 정지하게 되어 커널 자원에 대한 경쟁 상태가 존재하지 않지만, 멀티 코어 프로세싱 구조에서는 한 번에 프로세서의 코어 수만큼 스레드를 실행하기 때문에 모니터링과 응용 프로그램이 동시에 커널 자원에 접근하게 되면 커널 자원에 대한 경쟁 상태가 발생했다.
이와 같이, 실시간 운영체제의 특성상 모니터링과 응용 프로그램이 커널 자원에 대한 경쟁 상태가 될 경우, 실시간 운영세제의 성능뿐만 아니라 무결성에도 영향을 미치는 문제점이 있었다.
또한, 모니터링이 커널 자원을 먼저 사용할 경우 응용 프로그램은 커널 자원을 점유하기 전까지 대기 상태를 유지하는데, 이럴 경우 많은 자원 점유 대기 비용이 발생되는 문제점이 있었다. 예컨대, 응용 프로그램은 비용이 다소 높고 요청 빈도수가 많은 읽기(read)나 쓰기(write)와 같은 커널 자원의 접근 요청이 많은데, 모니터링에 의해 응용 프로그램이 커널 자원에 접근하는 것을 방해할 경우 읽기와 쓰기 기능이 빈번하게 지연되기 때문에 많은 자원 점유 대기 비용이 발생되는 문제점이 있었다.
한국공개특허공보 제2007-0037427호(공개일 2007. 04. 04.) 한국공개특허공보 제2005-0033327호(공개일 2005. 04. 12)
따라서 본 발명이 해결하고자 하는 기술적 과제는 응용 프로그램에서는 시스템 자원에 대한 자원 목록을 이용하여 시스템 자원에 접근하고, 시스템 자원 모니터링에서는 자원 목록에서 파생된 추상화된 자원 목록을 이용하여 시스템 자원에 접근함으로써 운영체제의 성능 저하를 방지하면서도 자원을 효율적으로 관리할 수 있는 운영체제 시스템의 자원 관리 장치 및 방법을 제공하는 것이다.
또한, 본 발명은 명시적으로 언급된 목적 이외에도, 후술하는 본 발명의 구성으로부터 달성될 수 있는 다른 목적도 포함한다.
상기한 기술적 과제를 해결하기 위한 본 발명의 실시예에 따른 운영체제 시스템의 자원 관리 장치는 응용 프로그램의 시스템 자원 접근에 대해서는 자원의 종류 및 자원 요청 대상에 대한 정보를 포함하는 자원 목록을 이용하고, 운영체제의 시스템 자원 모니터링에 대해서는 상기 자원 목록에서 파생된 추상화된 자원 목록을 이용하여 시스템 자원을 관리하는 관리 제어부를 포함한다.
상기 시스템 자원 중에서 운영체제의 모니터링 대상인 커널 자원에 대한 자원 목록을 생성하는 자원 목록 생성부를 더 포함할 수 있다.
상기 생성된 자원 목록에 포함된 커널 자원에서 자원 정보를 추출하여 상기 추상화된 자원 목록을 생성하는 추상화 목록 생성부를 더 포함할 수 있다.
상기 관리 제어부는 멀티 코어로 구성된 운영체제 시스템에서 상기 응용 프로그램의 실시간성을 확보하기 위해 상기 자원 목록을 이용하여 상기 응용 프로그램의 커널 자원 요청을 처리하고, 상기 자원 목록에서 파생된 상기 추상화된 자원 목록을 이용하여 모니터링에 필요한 커널 자원 요청을 처리할 수 있다.
상기 관리 제어부는 상기 응용 프로그램으로부터 커널 자원의 할당을 요청 받으면, 상기 요청에 따라 상기 자원 목록에 상기 커널 자원을 등록하는 관리를 수행하는 자원 할당 모듈, 및 상기 수행된 관리에 대한 정보를 상기 추상화된 자원 목록에 반영하는 동기화 모듈을 포함할 수 있다.
상기 자원 할당 모듈은 상기 응용 프로그램으로부터 커널 자원의 할당을 요청 받으면, 상기 자원 목록에 상기 할당을 요청 받은 커널 자원의 종류 및 커널 자원 요청 대상에 대한 노드 정보를 추가하고, 상기 노드 정보가 추가된 상기 자원 목록을 업데이트할 수 있다.
상기 동기화 모듈은 상기 수행된 관리에 대한 정보를 버퍼에 저장하여 상기 추상화된 자원 목록에 반영할 수 있다.
상기 동기화 모듈은 상기 버퍼에 저장된 정보의 유무를 판단하고, 상기 버퍼에 정보가 저장되어 있는 경우, 상기 버퍼에 저장된 정보를 상기 추상화된 자원 목록에 갱신할 수 있다.
상기 관리 제어부는 상기 응용 프로그램으로부터 커널 자원의 해제를 요청 받으면, 상기 요청에 따라 상기 자원 목록에서 상기 커널 자원을 삭제하는 자원 해제 모듈을 더 포함할 수 있다.
한편, 본 발명의 실시예에 따른 운영체제 시스템의 자원 관리 방법은 시스템 자원의 종류 및 시스템 자원의 요청 대상에 대한 정보를 포함하는 자원 목록을 생성하는 단계, 상기 자원 목록에 포함된 시스템 자원에서 자원 정보를 추출하여 상기 추상화된 자원 목록을 생성하는 단계, 및 응용 프로그램의 시스템 자원 접근에 대해서는 상기 자원 목록을 이용하고, 운영체제의 시스템 자원 모니터링에 대해서는 상기 자원 목록에서 파생된 상기 추상화된 자원 목록을 이용하여 시스템 자원을 관리하는 단계를 포함한다.
상기 자원 목록을 생성하는 단계는 상기 시스템 자원 중에서 운영체제의 모니터링 대상인 커널 자원에 대한 자원 목록을 생성할 수 있다.
상기 추상화된 자원 목록을 생성하는 단계는 상기 생성된 자원 목록에 포함된 커널 자원에서 자원 정보를 추출하여 상기 추상화된 자원 목록을 생성할 수 있다.
상기 시스템 자원을 관리하는 단계는 상기 응용 프로그램으로부터 커널 자원의 할당을 요청 받으면, 상기 요청에 따라 상기 자원 목록에 상기 커널 자원을 등록하는 관리를 수행하는 단계, 및 상기 수행된 관리에 대한 정보를 상기 추상화된 자원 목록에 반영하는 단계를 포함할 수 있다.
상기 추상화된 자원 목록에 반영하는 단계는 버퍼에 저장된 정보의 유무를 판단하고, 상기 버퍼에 정보가 저장되어 있는 경우, 상기 버퍼에 저장된 정보를 상기 추상화된 자원 목록에 갱신할 수 있다.
상기 시스템 자원을 관리하는 단계는 상기 응용 프로그램으로부터 커널 자원의 해제를 요청 받으면, 상기 요청에 따라 상기 자원 목록에서 상기 커널 자원을 삭제하는 단계를 더 포함할 수 있다.
이와 같이 본 발명의 실시예에 따른 운영체제 시스템의 자원 관리 장치 및 방법에 따르면, 응용 프로그램에서는 시스템 자원에 대한 자원 목록을 이용하여 시스템 자원에 접근하고, 시스템 자원 모니터링에서는 자원 목록에서 파생된 추상화된 자원 목록을 이용하여 시스템 자원에 접근함으로써 운영체제의 성능 저하를 방지하면서도 시스템 자원을 효율적으로 관리할 수 있는 장점이 있다.
이와 같이, 응용 프로그램이 시스템 자원에 접근하여 시스템 자원을 이용하는 기능과, 시스템 자원을 모니터링하기 위해 시스템 자원에 접근하여 시스템 자원을 이용하는 기능을 분리하여 운영체제에 구현함으로써 시스템 자원을 효율적으로 관리함과 동시에 시스템 자원에 대한 무결성을 보장하여 운영체제의 신뢰성을 향상시킬 수 있는 장점이 있다.
한편, 본 발명의 효과는 상술된 것에 국한되지 않고 후술하는 본 발명의 구성으로부터 도출될 수 있는 다른 효과도 본 발명의 효과에 포함된다.
도 1은 본 발명의 일 실시예에 따른 운영체제 시스템의 개략적인 구성도이다.
도 2는 도 1에 도시한 자원 관리 장치의 세부적인 구성도이다.
도 3은 본 발명의 일 실시예에 따른 운영체제 시스템의 자원 관리 과정을 보여주는 동작 흐름도이다.
도 4는 본 발명의 일 실시예에 따른 자원 목록을 이용한 자원의 처리 과정을 보여주는 동작 흐름도이다.
도 5는 본 발명의 일 실시예에 따른 추상화된 자원 목록을 이용한 자원의 모니터링 과정을 보여주는 동작 흐름도이다.
그러면 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다.
도 1은 본 발명의 일 실시예에 따른 운영체제 시스템의 개략적인 구성도 및 도 2는 도 1에 도시한 자원 관리 장치의 세부적인 구성도를 나타낸다.
도 1 및 도 2에 도시한 바와 같이, 운영체제 시스템(1)은 응용 프로그램(50)의 실행을 위한 기반 환경을 제공하고, 하드웨어 장치를 제어하여 응용 프로그램(50)과 하드웨어 장치 간의 인터페이스 역할을 수행하는 운영체제가 구현될 수 있다. 여기서, 응용 프로그램(50)은 운영체제에서 제공하는 사용자 인터페이스를 통해 하드웨어 장치를 사용하는 사용자의 특정 요구를 수행할 수 있도록 작성된 어플리케이션뿐만 아니라 운영체제에서 실행될 수 있는 모든 소프트웨어를 포함할 수 있다.
또한, 운영체제 시스템(1)은 응용 프로그램(50)의 실행에 요구되는 중앙 처리 장치, 입출력 장치, 네트워크 장치 또는 저장 장치 등과 같은 시스템 자원을 관리하는 자원 관리 장치(100)를 포함할 수 있다.
자원 관리 장치(100)는 자원 목록 생성부(110), 추상화 목록 생성부(120) 및 관리 제어부(130)를 포함하여 구성된다.
자원 목록 생성부(110)는 시스템 자원의 종류 및 시스템 자원의 요청 대상에 대한 정보를 포함하는 자원 목록을 생성할 수 있다. 즉, 자원 목록 생성부(110)는 응용 프로그램(50)이 접근하여 사용할 수 있는 중앙 처리 장치, 입/출력 장치, 네트워크 장치 또는 저장 장치 등과 같은 시스템 자원의 종류 및 시스템 자원을 요청한 대상에 대한 정보(예컨대, 시스템 자원을 요청한 응용 프로그램의 식별 정보)가 나열되어 있는 자원 목록을 생성할 수 있다. 특히, 자원 목록 생성부(110)는 시스템 자원 중에서 운영체제의 모니터링 대상인 커널(kernal) 자원에 대한 자원 목록을 생성할 수 있는데, 여기서, 커널이란 컴퓨터 운영체제의 가장 중요한 핵심이 되는 부분으로서, 윈도우, 리눅스 또는 유닉스 등과 같은 운영체제가 부팅할 경우, 기존의 설정 파일을 기반으로 하드웨어 장치를 제어할 수 있으며, 이외에 프로세스 관리, 메모리 관리, 태스크 관리 또는 시스템 관리 등을 수행할 수 있다. 그리고 커널 자원의 종류로는 메모리(Memory), 세마포어(Semaphore) 또는 IPC(Inter-Processor Communication) 등을 포함할 수 있다.
추상화 목록 생성부(120)는 자원 목록에서 파생된 추상화된 자원 목록을 생성할 수 있다.
보다 자세하게는, 추상화 목록 생성부(120)는 자원 목록 생성부(110)에서 생성된 자원 목록에 포함된 커널 자원에서 모니터링에 필요한 커널 자원의 정보를 추출하여 추상화된 자원 목록을 생성할 수 있다. 여기서, 추상화란 주어진 시스템에서 중요하고 관계있는 부분만을 분리하여 간결하고 이해하기 쉽게 만드는 작업으로서, 추상화된 자원 목록이라 함은 커널 자원에 대한 자원 목록 중에서 모니터링에 필요한 커널 자원 정보를 추출하여 별도의 목록으로 만든 것을 말한다. 이와 같이, 추상화 목록 생성부(120)는 자원 목록에서 모니터링에 관계있는 커널 자원의 정보를 추출하는 추상화 작업을 통해 추상화된 자원 목록을 생성할 수 있다.
관리 제어부(130)는 응용 프로그램(50)의 시스템 자원 접근에 대해서는 자원 목록을 이용하도록 하고, 운영체제의 시스템 자원 모니터링에 대해서는 자원 목록에서 파생된 추상화된 자원 목록을 이용하도록 하여 시스템 자원의 관리를 제어할 수 있다.
보다 자세하게는, 관리 제어부(130)는 멀티 코어로 구성된 운영체제 시스템에서 응용 프로그램(50)의 실시간성을 확보하기 위해 자원 목록을 이용하여 응용 프로그램(50)의 커널 자원 요청을 처리하고, 추상화된 자원 목록을 이용하여 모니터링에 필요한 커널 자원 요청을 처리할 수 있다. 실시간 운영체제는 범용 운영체제와는 다르게 임베디드 시스템 내에서 동작하므로 전원이 인가됨과 동시에 동작을 시작하여야 한다. 특히, 차량 비행기 또는 의료 기기 등과 같이 전원 인가 후 빠른 동작이 매우 중요한 시스템일수록 시간의 제한에 더욱 엄격해지므로 멀티 코어로 이루어진 실시간 운영체제에서 응용 프로그램(50)의 자원 사용과, 자원 모니터링을 위해 동시에 커널 자원에 접근할 경우, 응용 프로그램(50)의 동작이 지연되는 경우가 발생하여 운영체제의 성능에 큰 영향을 미칠 수 있다. 따라서, 관리 제어부(130)는 응용 프로그램(50)으로부터 커널 자원을 요청받으면, 응용 프로그램(50)이 자원 목록에 접근하여 커널 자원을 이용하도록 하고, 커널 자원의 모니터링에서는 추상화된 자원 목록에 접근하여 커널 자원을 이용하도록 하여 응용 프로그램(50)의 접근 영역과 커널 자원의 모니터링에 대한 접근 영역을 분리함으로써 응용 프로그램(50)에서는 시간의 지연 없이 커널 자원을 바로 이용할 수 있으며, 응용 프로그램(50)이 커널 자원을 사용하더라도 커널 자원을 모니터링할 수 있다.
여기서, 커널 자원의 모니터링 시 커널 자원의 종류에 따라 모니터링하는 데이터가 다른데, 예컨대, 커널 자원이 메모리인 경우, 메모리를 얼마나 할당하고 해제하는지에 대한 할당(allocation) 사이즈 또는 해제(free) 사이즈를 모니터링할 수 있고, 커널 자원이 세마포어(Semaphore)의 경우 락(lock)/언락(unlock), 락 카운트(lock count)를 모니터링할 수 있으며, 커널 자원이 IPC의 경우, 최대 메시지 크기(maximum message size), 대기 메시지 개수(queued message count), 송신 메시지 개수(sent message count) 등을 모니터링할 수 있다.
이와 같이, 운영체제 시스템(1)은 응용 프로그램(50)이 커널 자원을 사용할 수 있도록 하면서도 커널 자원에 대한 모니터링 기능을 제공할 수 있기 때문에 멀티 코어를 가지는 실시간 운영체제에서는 응용 프로그램(50)에서 어떤 종류의 커널 자원을 얼마나 사용하였는지 등을 확인할 수 있게 되어 실시간 운영체제의 성능 저하를 방지하면서도 커널 자원을 효율적으로 관리할 수 있다.
보다 구체적으로는, 관리 제어부(130)는 자원 할당 모듈(131), 동기화 모듈(133) 및 자원 해제 모듈(135)을 포함할 수 있다.
자원 할당 모듈(131)은 응용 프로그램(50)으로부터 커널 자원의 할당을 요청 받으면, 요청에 따라 자원 목록에 커널 자원을 등록하는 관리를 수행할 수 있다. 즉, 자원 할당 모듈(131)은 응용 프로그램(50)이 특정 커널 자원에 대한 할당을 위해 접근을 요청하면, 할당을 요청한 커널 자원을 자원 목록에 추가하여 커널 자원에 대한 접근을 허용할 수 있도록 한다.
그리고 자원 할당 모듈(131)은 응용 프로그램(50)으로부터 커널 자원의 할당을 요청 받으면, 자원 목록에 할당 받은 커널 자원의 종류 및 커널 자원 요청 대상에 대한 노드 정보를 추가하고, 노드 정보가 추가된 자원 목록을 업데이트할 수 있다. 즉, 자원 할당 모듈(131)은 응용 프로그램(50)으로부터 커널 자원의 할당을 요청 받으면, 어느 응용 프로그램(50)이 어떤 종류의 커널 자원을 할당 요청하였는지 알 수 있도록 커널 자원의 종류 및 커널 자원 요청 대상에 대한 정보가 저장되어 있는 노드 정보를 추가할 수 있다.
한편, 자원 할당 모듈(131)은 응용 프로그램(50)으로부터 커널 자원의 할당을 요청 받으면, 커널 자원의 할당을 요청한 응용 프로그램(50)에서만 자원 목록을 업데이트할 수 있도록 잠금 설정할 수 있다. 이때, 자원 할당 모듈(131)은 커널 자원의 할당 또는 해제를 요청 받으면, 할당 또는 해제를 요청한 응용 프로그램(50)에서만 자원 목록에 접근하여 업데이트할 수 있고, 다른 응용 프로그램에서는 자원 목록에 접근할 수 없도록 통제할 수 있다. 예컨대, 할당을 요청한 응용 프로그램(50)에서 자원 목록을 업데이트하기 전에 다른 응용 프로그램(50)이 자원 목록에 접근하여 사용할 경우, 운영체제 시스템의 내부 구조가 깨질 수 있기 때문에 커널 자원의 업데이트가 모두 완료되기 전까지 다른 응용 프로그램(50)이 자원 목록에 접근할 수 없도록 잠금 설정하고, 해당 자원 목록의 업데이트가 완료되면 자원 목록의 잠금 설정을 해제할 수 있다. 이와 같이, 자원 목록의 잠금 설정 또는 해제를 통해 복수의 응용 프로그램에서 자원 목록을 사용하더라도 자원 목록의 동기화를 유지할 수 있도록 한다.
동기화 모듈(133)은 자원 할당 모듈(131)에서 수행된 관리에 대한 정보를 추상화된 자원 목록에 반영할 수 있다. 즉, 동기화 모듈(133)은 자원 목록에 저장된 커널 자원의 상태가 변경되면, 변경된 커널 자원의 상태 정보를 추상화된 자원 목록에 동일하게 반영할 수 있다.
이를 위하여 동기화 모듈(133)은 수행된 관리에 대한 정보(예컨대, 변경된 커널 자원의 상태 정보)를 버퍼(70)에 저장하여 추상화된 자원 목록에 반영할 수 있는데, 이때 버퍼(70)에 저장된 정보의 유무를 판단하고, 버퍼(70)에 정보가 저장되어 있는 경우, 버퍼(70)에 저장된 정보를 추상화된 자원 목록에 갱신할 수 있다. 즉, 커널 자원의 모니터링이 요청되는 경우, 먼저 추상화된 자원 목록에 적용할 정보가 있는지를 버퍼(70)에 저장된 정보의 유무를 통해 확인하고, 추상화된 자원 목록에 적용할 정보가 있으면 해당 정보를 추상화된 자원 목록에 갱신할 수 있다. 그 다음, 추상화된 자원 목록에서 모니터링 대상 데이터를 추출하여 모니터링 기능을 수행할 수 있다.
이와 같이, 수행된 관리에 대한 정보를 버퍼(70)에 저장하는 방식을 사용할 경우, 수행된 관리에 대한 정보를 추상화된 자원 목록에 직접 반영하는 방식에 비해 소비되는 시간을 줄일 수 있기 때문에 커널 자원의 추상화에 따른 비용을 감소시킬 수 있다.
한편, 도 2에서는 버퍼(70)가 자원 관리 장치(100)의 내부에 설치되어 것으로 도시하고 있으나, 이에 한정되지 않으며 버퍼(70)는 자원 관리 장치(100)의 외부에 설치될 수 있다.
자원 해제 모듈(135)은 응용 프로그램(50)으로부터 커널 자원의 해제를 요청 받으면, 요청에 따라 자원 목록에서 커널 자원을 삭제할 수 있다.
즉, 응용 프로그램(50)에서 커널 자원에 대한 해제를 요구하면 자원 해제 모듈(135)을 통해 자원 목록에 있는 커널 자원에 대한 정보를 삭제할 수 있다. 여기서, 커널 자원을 해제하는 것은 응용 프로그램(50)에서 커널 자원에 대한 사용이 완료되거나, 우선순위가 높은 다른 응용 프로그램(50)을 실행하기 위해 운영체제에서 커널 자원을 의도적으로 회수하는 과정을 의미할 수 있으나, 이에 한정되지는 않는다.
이하에서는 본 발명의 실시예에 따른 운영체제 시스템의 자원 관리 방법에 대하여 설명하도록 한다.
도 3은 본 발명의 일 실시예에 따른 운영체제 시스템의 자원 관리 과정을 보여주는 동작 흐름도를 나타낸다.
도 3을 참조하면, 시스템 자원의 종류 및 시스템 자원의 요청 대상에 대한 정보를 포함하는 자원 목록을 생성할 수 있다(S100).
즉, 응용 프로그램이 접근하여 사용할 수 있는 중앙 처리 장치, 입/출력 장치, 네트워크 장치 또는 저장 장치 등과 같은 시스템 자원의 종류 및 시스템 자원을 요청한 대상에 대한 정보(예컨대, 시스템 자원을 요청한 응용 프로그램의 식별 정보)가 나열되어 있는 자원 목록을 생성할 수 있다. 특히, 시스템 자원 중에서 운영체제의 모니터링 대상인 커널(kernal) 자원에 대한 자원 목록을 생성할 수 있는데, 여기서, 커널이란 컴퓨터 운영체제의 가장 중요한 핵심이 되는 부분으로서, 윈도우, 리눅스 또는 유닉스 등과 같은 운영체제가 부팅할 경우, 기존의 설정 파일을 기반으로 하드웨어 장치를 제어할 수 있으며, 이외에 프로세스 관리, 메모리 관리, 태스크 관리 또는 시스템 관리 등을 수행할 수 있다. 그리고 커널 자원의 종류로는 메모리(Memory), 세마포어(Semaphore) 또는 IPC(Inter-Processor Communication) 등을 포함할 수 있다.
다음으로, 자원 목록에 포함된 시스템 자원에서 자원 정보를 추출하여 추상화된 자원 목록을 생성할 수 있다(S200).
보다 자세하게는, 100단계에서 생성된 자원 목록에 포함된 커널 자원에서 모니터링에 필요한 커널 자원의 정보를 추출하여 추상화된 자원 목록을 생성할 수 있다. 여기서, 추상화란 주어진 시스템에서 중요하고 관계있는 부분만을 분리하여 간결하고 이해하기 쉽게 만드는 작업으로서, 추상화된 자원 목록이라 함은 커널 자원에 대한 자원 목록 중에서 모니터링에 필요한 커널 자원 정보를 추출하여 별도의 목록으로 만든 것을 말한다. 이와 같이, 커널 자원에 대한 자원 목록에서 모니터링과 관련 있는 커널 자원의 정보를 추출하는 추상화 작업을 통해 추상화된 자원 목록을 생성할 수 있다.
그런 후, 응용 프로그램의 시스템 자원 접근에 대해서는 자원 목록을 이용하고, 운영체제의 시스템 자원 모니터링에 대해서는 자원 목록에서 파생된 추상화된 자원 목록을 이용하여 시스템 자원을 관리할 수 있다(S300).
보다 자세하게는, 멀티 코어로 구성된 운영체제 시스템에서 응용 프로그램의 실시간성을 확보하기 위해 자원 목록을 이용하여 응용 프로그램의 커널 자원 요청을 처리하고, 추상화된 자원 목록을 이용하여 모니터링에 필요한 커널 자원 요청을 처리할 수 있다. 즉, 멀티 코어로 이루어진 실시간 운영체제에서 응용 프로그램의 자원 사용과, 자원 모니터링을 위해 동시에 커널 자원에 접근할 경우, 응용 프로그램의 동작이 지연되는 경우가 발생하여 운영체제의 성능에 큰 영향을 미칠 수 있으므로 관리 제어부(130)는 응용 프로그램(50)으로부터 커널 자원을 요청받으면, 응용 프로그램(50)이 자원 목록에 접근하여 커널 자원을 이용하도록 하고, 커널 자원의 모니터링에서는 추상화된 자원 목록에 접근하여 커널 자원을 이용하도록 하여 응용 프로그램(50)의 접근 영역과 커널 자원의 모니터링에 대한 접근 영역을 분리할 수 있다.
이하에서는 본 발명의 실시예에 따른 응용 프로그램의 자원 할당 또는 해제 요청에 따라 자원을 처리하는 방법에 대하여 설명하도록 한다.
도 4는 본 발명의 일 실시예에 따른 자원 목록을 이용한 자원의 처리 과정을 보여주는 동작 흐름도를 나타낸다.
도 4를 참조하면, 응용 프로그램으로부터 커널 자원의 접근 요청을 받으면, 해당 요청이 커널 자원의 할당 또는 해제 요청인지 판단할 수 있다(S400).
만약, 해당 요청이 커널 자원의 할당 또는 해제 요청일 경우(S400-Y), 자원 목록에 대한 잠금을 설정할 수 있다(S401). 이때, 커널 자원의 할당 또는 해제를 요청 받으면, 할당 또는 해제를 요청한 응용 프로그램에서만 자원 목록에 접근하여 업데이트할 수 있고, 다른 응용 프로그램에서는 자원 목록에 접근할 수 없도록 통제할 수 있다. 예컨대, 할당을 요청한 응용 프로그램에서 자원 목록을 업데이트하기 전에 다른 응용 프로그램이 자원 목록에 접근하여 사용할 경우, 운영체제 시스템의 내부 구조가 깨질 수 있기 때문에 커널 자원의 업데이트가 모두 완료되기 전까지 다른 응용 프로그램이 자원 목록에 접근할 수 없도록 잠금 설정하고, 해당 자원 목록의 업데이트가 완료되면 자원 목록의 잠금 설정을 해제할 수 있다. 이와 같이, 자원 목록의 잠금 설정 또는 해제를 통해 복수의 응용 프로그램에서 자원 목록을 사용하더라도 자원 목록의 동기화를 유지할 수 있다.
그런 다음, 커널 자원의 할당 요청 여부를 판단(S402)하여 커널 자원의 할당 요청일 경우, 요청에 따라 자원 목록에 커널 자원을 등록할 수 있다(S403).
즉, 응용 프로그램이 특정 커널 자원에 대한 할당을 위해 접근을 요청하면, 할당을 요청한 커널 자원을 자원 목록에 추가하여 커널 자원에 대한 접근을 허용할 수 있도록 한다.
그리고 응용 프로그램으로부터 커널 자원의 할당을 요청 받으면, 자원 목록에 할당 받은 커널 자원의 종류 및 커널 자원 요청 대상에 대한 노드 정보를 추가하고, 노드 정보가 추가된 자원 목록을 업데이트할 수 있다. 예컨대, 응용 프로그램으로부터 커널 자원의 할당을 요청 받으면, 어느 응용 프로그램이 어떤 종류의 커널 자원을 할당 요청하였는지 알 수 있도록 커널 자원의 종류 및 커널 자원 요청 대상에 대한 정보가 저장되어 있는 노드 정보를 추가할 수 있다.
다음으로, 자원 목록에 대한 잠금 설정을 해제(S404)하고, 커널 자원의 등록에 대한 정보를 추상화된 자원 목록에 반영할 수 있다(S405). 즉, 자원 목록에 저장된 커널 자원의 상태가 변경되면, 변경된 커널 자원의 상태 정보가 추상화된 자원 목록에도 동일하게 반영되도록 제어할 수 있다.
보다 자세하게는, 수행된 관리에 대한 정보(예컨대, 변경된 커널 자원의 상태 정보)를 버퍼에 저장하여 추상화된 자원 목록에 반영할 수 있는데, 이때 버퍼에 저장된 정보의 유무를 판단하고, 버퍼에 정보가 저장되어 있는 경우, 버퍼에 저장된 정보를 추상화된 자원 목록에 갱신할 수 있다. 즉, 커널 자원의 모니터링이 요청되는 경우, 먼저 추상화된 자원 목록에 적용할 정보가 있는지를 버퍼에 저장된 정보의 유무를 통해 확인하고, 추상화된 자원 목록에 적용할 정보가 있으면 해당 정보를 추상화된 자원 목록에 갱신할 수 있다. 그 다음, 추상화된 자원 목록에서 모니터링 대상 데이터를 추출하여 모니터링 기능을 수행할 수 있다.
한편, 400단계에서 해당 요청이 커널 자원의 할당 또는 해제 요청이 아닐 경우(S400-N), 자원 목록에서 요청 자원이 존재하는지 판단할 수 있다(S406). 즉, 응용 프로그램에서 요청한 커널 자원이 자원 목록에 있는지 하고, 자원 목록에 응용 프로그램에서 요청한 자원이 존재하는 경우(S406-Y), 자원에 대한 요청을 처리할 수 있다(S407).
또 한편, 402단계에서 해당 요청이 커널 자원의 할당 요청이 아닐 경우(S402-N), 커널 자원의 해제 요청인지 판단(S408)하여 커널 자원의 해제 요청이면(S408-Y), 요청에 따라 자원 목록에서 커널 자원을 삭제할 수 있다(S409).
즉, 응용 프로그램에서 커널 자원에 대한 해제를 요구하면 자원 목록에 있는 커널 자원에 대한 정보를 삭제할 수 있는데, 여기서, 커널 자원을 해제하는 것은 응용 프로그램에서 커널 자원에 대한 사용이 완료되거나, 우선순위가 높은 다른 응용 프로그램을 실행하기 위해 운영체제에서 커널 자원을 의도적으로 회수하는 과정을 의미할 수 있다.
도 5는 본 발명의 일 실시예에 따른 추상화된 자원 목록을 이용한 자원의 모니터링 과정을 보여주는 동작 흐름도를 나타낸다.
도 5를 참조하면, 커널 자원의 모니터링이 요청될 경우, 버퍼에 정보가 저장되어 있는지의 여부를 판단할 수 있다(S500). 여기서, 버퍼에 저장되는 정보는 추상화된 자원 목록에 적용할 정보로서, 예컨대, 변경된 커널 자원의 상태에 대한 정보를 포함할 수 있다.
500단계에서 버퍼에 정보가 저장되어 있는 경우(S500-Y), 버퍼에 저장된 정보를 추상화된 자원 목록에 반영할 수 있다(S501).
보다 자세하게는, 커널 자원의 모니터링이 요청되면, 추상화된 자원 목록에 적용할 정보가 있는지를 버퍼에 저장된 정보의 유무를 통해 확인하고, 추상화된 자원 목록에 적용할 정보가 있으면 해당 정보를 추상화된 자원 목록에 갱신할 수 있다. 이와 같이, 수행된 관리에 대한 정보를 버퍼에 저장하는 방식을 사용할 경우, 수행된 관리에 대한 정보를 추상화된 자원 목록에 직접 반영하는 방식에 비해 소비되는 시간을 줄일 수 있기 때문에 커널 자원의 추상화에 따른 비용을 감소시킬 수 있다.
다음으로, 추상화된 자원 목록에서 모니터링 대상 데이터를 추출(S502)하고, 모니터링 대상 데이터를 전송하여 모니터링을 수행할 수 있다(S503).
한편, 500단계에서 버퍼에 정보가 저장되어 있지 않은 경우, 502단계로 넘어가서 추상화된 자원 목록에서 모니터링 대상 데이터를 추출(S502)하고, 모니터링 대상 데이터를 전송하여 모니터링을 수행할 수 있다(S503).
그 다음, 모니터링의 종료 여부를 판단(S504)하여 자원에 대한 모니터링을 종료할 수 있다.
본 발명의 실시예는 다양한 컴퓨터로 구현되는 동작을 수행하기 위한 프로그램 명령을 포함하는 컴퓨터로 읽을 수 있는 매체를 포함한다. 이 매체는 앞서 설명한 운영체제 시스템의 자원 관리 방법을 실행시키기 위한 프로그램을 기록한다. 이 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 이러한 매체의 예에는 하드디스크, 플로피디스크 및 자기 테이프와 같은 자기 매체, CD 및 DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 자기-광 매체, 롬, 램, 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 구성된 하드웨어 장치 등이 있다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
이상에서 본 발명의 바람직한 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.
1: 운영체제 시스템
100: 자원 관리 장치
110: 자원 목록 생성부
120: 추상화 목록 생성부
130: 관리 제어부
131: 자원 할당 모듈
133: 동기화 모듈
135: 자원 해제 모듈

Claims (15)

  1. 응용 프로그램의 시스템 자원 접근에 대해서는 자원의 종류 및 자원 요청 대상에 대한 정보를 포함하는 자원 목록을 이용하고, 운영체제의 시스템 자원 모니터링에 대해서는 상기 자원 목록에서 파생된 추상화된 자원 목록을 이용하여 시스템 자원을 관리하는 관리 제어부
    를 포함하며,
    상기 관리 제어부는,
    멀티 코어로 구성된 운영체제 시스템에서 상기 응용 프로그램의 실시간성을 확보하기 위해 상기 자원 목록을 이용하여 상기 응용 프로그램의 커널 자원 요청을 처리하고,
    상기 자원 목록에서 파생된 상기 추상화된 자원 목록을 이용하여 모니터링에 필요한 커널 자원 요청을 처리하고,
    상기 관리 제어부는,
    상기 응용 프로그램으로부터 커널 자원의 할당을 요청 받으면, 상기 요청에 따라 상기 자원 목록에 상기 커널 자원을 등록하는 관리를 수행하는 자원 할당 모듈, 및
    상기 수행된 관리에 대한 정보를 상기 추상화된 자원 목록에 반영하는 동기화 모듈을 포함하는 운영체제 시스템의 자원 관리 장치.
  2. 제 1 항에서,
    상기 시스템 자원 중에서 운영체제의 모니터링 대상인 커널 자원에 대한 자원 목록을 생성하는 자원 목록 생성부를 더 포함하는 운영체제 시스템의 자원 관리 장치.
  3. 제 2 항에서,
    상기 생성된 자원 목록에 포함된 커널 자원에서 자원 정보를 추출하여 상기 추상화된 자원 목록을 생성하는 추상화 목록 생성부를 더 포함하는 운영체제 시스템의 자원 관리 장치.
  4. 삭제
  5. 삭제
  6. 제 1 항에서,
    상기 자원 할당 모듈은,
    상기 응용 프로그램으로부터 커널 자원의 할당을 요청 받으면, 상기 자원 목록에 상기 할당을 요청 받은 커널 자원의 종류 및 커널 자원 요청 대상에 대한 노드 정보를 추가하고, 상기 노드 정보가 추가된 상기 자원 목록을 업데이트하는 운영체제 시스템의 자원 관리 장치.
  7. 제 1 항에서,
    상기 동기화 모듈은,
    상기 수행된 관리에 대한 정보를 버퍼에 저장하여 상기 추상화된 자원 목록에 반영하는 운영체제 시스템의 자원 관리 장치.
  8. 제 7 항에서,
    상기 동기화 모듈은,
    상기 버퍼에 저장된 정보의 유무를 판단하고,
    상기 버퍼에 정보가 저장되어 있는 경우, 상기 버퍼에 저장된 정보를 상기 추상화된 자원 목록에 갱신하는 운영체제 시스템의 자원 관리 장치.
  9. 제 1 항에서,
    상기 관리 제어부는,
    상기 응용 프로그램으로부터 커널 자원의 해제를 요청 받으면, 상기 요청에 따라 상기 자원 목록에서 상기 커널 자원을 삭제하는 자원 해제 모듈을 더 포함하는 운영체제 시스템의 자원 관리 장치.
  10. 시스템 자원의 종류 및 시스템 자원의 요청 대상에 대한 정보를 포함하는 자원 목록을 생성하는 단계,
    상기 자원 목록에 포함된 시스템 자원에서 자원 정보를 추출하여 추상화된 자원 목록을 생성하는 단계, 및
    응용 프로그램의 시스템 자원 접근에 대해서는 상기 자원 목록을 이용하고, 운영체제의 시스템 자원 모니터링에 대해서는 상기 자원 목록에서 파생된 상기 추상화된 자원 목록을 이용하여 시스템 자원을 관리하는 단계
    를 포함하며,
    상기 자원 목록을 생성하는 단계는,
    상기 시스템 자원 중에서 운영체제의 모니터링 대상인 커널 자원에 대한 자원 목록을 생성하고,
    상기 추상화된 자원 목록을 생성하는 단계는,
    상기 생성된 자원 목록에 포함된 커널 자원에서 자원 정보를 추출하여 상기 추상화된 자원 목록을 생성하며,
    상기 시스템 자원을 관리하는 단계는,
    상기 응용 프로그램으로부터 커널 자원의 할당을 요청 받으면, 상기 요청에 따라 상기 자원 목록에 상기 커널 자원을 등록하는 관리를 수행하는 단계, 및
    상기 수행된 관리에 대한 정보를 상기 추상화된 자원 목록에 반영하는 단계를 포함하는 운영체제 시스템의 자원 관리 방법.
  11. 삭제
  12. 삭제
  13. 삭제
  14. 제 10 항에서,
    상기 추상화된 자원 목록에 반영하는 단계는,
    버퍼에 저장된 정보의 유무를 판단하고,
    상기 버퍼에 정보가 저장되어 있는 경우, 상기 버퍼에 저장된 정보를 상기 추상화된 자원 목록에 갱신하는 운영체제 시스템의 자원 관리 방법.
  15. 제 10 항에서,
    상기 시스템 자원을 관리하는 단계는,
    상기 응용 프로그램으로부터 커널 자원의 해제를 요청 받으면, 상기 요청에 따라 상기 자원 목록에서 상기 커널 자원을 삭제하는 단계를 더 포함하는 운영체제 시스템의 자원 관리 방법.
KR1020180096248A 2018-08-17 2018-08-17 운영체제 시스템의 자원 관리 장치 및 방법 KR102111991B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180096248A KR102111991B1 (ko) 2018-08-17 2018-08-17 운영체제 시스템의 자원 관리 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180096248A KR102111991B1 (ko) 2018-08-17 2018-08-17 운영체제 시스템의 자원 관리 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20200020485A KR20200020485A (ko) 2020-02-26
KR102111991B1 true KR102111991B1 (ko) 2020-05-18

Family

ID=69637676

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180096248A KR102111991B1 (ko) 2018-08-17 2018-08-17 운영체제 시스템의 자원 관리 장치 및 방법

Country Status (1)

Country Link
KR (1) KR102111991B1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010521034A (ja) * 2007-03-09 2010-06-17 マイクロソフト コーポレーション オペレーティングシステムからオペレーティング環境を抽象化する方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050033327A (ko) 2003-10-06 2005-04-12 엘지전자 주식회사 실시간 운영체제 기반의 메모리 관리 시스템
GB0519981D0 (en) 2005-09-30 2005-11-09 Ignios Ltd Scheduling in a multicore architecture
KR20090081749A (ko) * 2008-01-25 2009-07-29 삼성전자주식회사 응용프로그램의 자원 모니터링 방법 및 그 장치
US9098726B2 (en) * 2012-04-24 2015-08-04 Samsung Electronics Co., Ltd. Scalable and secure application resource management and access control for multicore operating systems
KR101392584B1 (ko) * 2012-06-07 2014-05-27 주식회사 엘지씨엔에스 리소스 모니터링을 이용한 동적 데이터 처리 장치 및 그 방법
KR101535792B1 (ko) * 2013-07-18 2015-07-10 포항공과대학교 산학협력단 운영체제 구성 장치 및 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010521034A (ja) * 2007-03-09 2010-06-17 マイクロソフト コーポレーション オペレーティングシステムからオペレーティング環境を抽象化する方法

Also Published As

Publication number Publication date
KR20200020485A (ko) 2020-02-26

Similar Documents

Publication Publication Date Title
US11016972B2 (en) Splitting a time-range query into multiple sub-queries for serial execution
US10241550B2 (en) Affinity aware parallel zeroing of memory in non-uniform memory access (NUMA) servers
US8117641B2 (en) Control device and control method for information system
US11016971B2 (en) Splitting a time-range query into multiple sub-queries for parallel execution
US10083113B2 (en) Scheme for determining data object usage in a memory region
US20130346992A1 (en) Computing system, method for controlling thereof, and computer-readable recording medium having computer program for controlling thereof
CN113010265A (zh) Pod的调度方法、调度器、存储插件及***
US20130332932A1 (en) Command control method
JP5492731B2 (ja) 仮想計算機のボリューム割当て方法およびその方法を用いた計算機システム
AU2011229395B2 (en) Dual mode reader writer lock
US9032199B1 (en) Systems, devices, and methods for capturing information, creating loadable images, and providing for restarts in a computer system
KR102111991B1 (ko) 운영체제 시스템의 자원 관리 장치 및 방법
US20230054696A1 (en) User-level services for multitenant isolation
CN111427588A (zh) 中止固件包的安装
CN112948336B (zh) 数据加速方法及缓存单元、电子设备及存储介质
Zhu et al. Interactive transaction processing for in-memory database system
US11907176B2 (en) Container-based virtualization for testing database system
RU2820753C1 (ru) Способ и система управления объектами и процессами в вычислительной среде
CN113535412B (zh) 用于跟踪锁的方法、设备和计算机程序产品
US20170147408A1 (en) Common resource updating apparatus and common resource updating method
CN116382887A (zh) 用于管理存储器泄漏的方法和***
CN116974488A (zh) 数据索引方法、装置、设备及存储介质
CN117056363A (zh) 数据缓存方法、***、设备以及存储介质
JP2010231333A (ja) ジョブ処理装置
CN111241540A (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