KR20200058479A - 시스템 서비스의 타임아웃을 처리하는 방법 및 디바이스 - Google Patents
시스템 서비스의 타임아웃을 처리하는 방법 및 디바이스 Download PDFInfo
- Publication number
- KR20200058479A KR20200058479A KR1020207011642A KR20207011642A KR20200058479A KR 20200058479 A KR20200058479 A KR 20200058479A KR 1020207011642 A KR1020207011642 A KR 1020207011642A KR 20207011642 A KR20207011642 A KR 20207011642A KR 20200058479 A KR20200058479 A KR 20200058479A
- Authority
- KR
- South Korea
- Prior art keywords
- system service
- terminal
- thread
- application process
- target
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0751—Error or fault detection not based on redundancy
- G06F11/0754—Error or fault detection not based on redundancy by exceeding limits
- G06F11/0757—Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0793—Remedial or corrective actions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1438—Restarting or rejuvenating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Telephone Function (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
본 발명은 통신 기술 분야에 관한 것이다. 본 발명의 일 실시 예에서, 시스템 서비스의 타임아웃 시에 스크린의 랙(lagging) 또는 프리징(freezing)이 발생할 가능성을 감소시키고, 사용자 경험을 향상시킬 수 있는, 시스템 서비스의 타임아웃을 처리하는 방법 및 장치가 제공된다. 상기 방법은, 하나 이상의 시스템 서비스 스레드 중 타깃 시스템 서비스 스레드의 타임아웃이 발생하면, 단말이 타깃 시스템 서비스 스레드와 통신하는 제1 애플리케이션 프로세스를 결정하는 단계 - 여기서, 타깃 시스템 서비스 스레드의 타임아웃은, 잠기고(locked), 타깃 시스템 서비스 스레드에 의해 점유되는 객체(locked)가 미리 설정된 시간 내에 해제되지 않은 것 및 타깃 시스템 서비스 스레드가 차단된(blocked) 것 중 적어도 하나를 포함함 -; 및 단말이 제1 애플리케이션 프로세스를 종료하는 단계를 포함한다.
Description
본 출원의 실시 예들은 통신 기술 분야, 특히, 시스템 서비스 타임아웃 처리 방법 및 장치에 관한 것이다.
현재, 사용자의 이동 전화, 웨어러블 디바이스 및 태블릿 컴퓨터와 같은 단말의 원활한 실행에 대한 요구는 점점 높아지고 있다. 그러나, 단말에 더 많은 기능이 구현될 수록, 실행 중 애플리케이션 프로그램이 점유하는 자원은 점점 더 단편화되어, 사용자가 단말을 사용할 때 프레임 프리징(freezing) 또는 심지어 스크린 프리징을 초래하여, 사용자 경험에 큰 영향을 미친다.
단말은 일반적으로, 워치독(watchdog) 메커니즘을 사용하여, 단말에 제공되는 시스템 서비스가 타임아웃 되는지 여부를 모니터링 할 수 있다. 예를 들어, 안드로이드(Android) 시스템에서, 워치독은 시스템 서비스(system server) 프로세스의 스레드(thread)로서 실행될 수 있고, 윈도우 관리자 서비스(window manager server) 및 액티비티 관리자 시스템 서비스(activity manager system service)와 같은 다양한 시스템 서비스의 스레드는 시스템 서버 프로세스에 상주한다. 워치독은 시스템 서버 프로세스의 이들 스레드를 모니터링 할 수 있다. 스레드가 차단되고 미리 설정된 시간 내에 워치독이 스레드로부터 응답을 수신하지 못하면, 워치독은 단말을 트리거하여 전체 안드로이드 시스템을 재시작한다.
즉, 시스템 서버의 스레드가 차단된 것을 검출하면, 워치독은 단말을 트리거하여 재시작한다. 강제 차단(forced blocking)을 통한 이러한 복원 방식은 사용자가 현재 시나리오에서 모든 데이터를 잃도록 하며, 사용자는 또한 단말이 재시작할 때까지 기다려야 한다.
본 출원의 실시 예들은, 시스템 서비스가 타임아웃되는 경우 단말에서 프레임 프리징 또는 스크린 프리징 가능성을 감소시키고, 사용자 경험을 향상시키기 위한 시스템 서비스 타임아웃 처리 방법 및 장치를 제공한다.
전술한 목적을 달성하기 위해, 다음의 기술적 해결 방안이 본 출원의 실시 예들에 사용된다.
제1 측면에 따르면, 본 출원의 일 실시 예는 시스템 서비스 타임아웃 처리 방법을 제공한다. 시스템 서비스 프로세스 및 적어도 하나의 애플리케이션 프로세스는 시스템 서비스 타임아웃 처리 방법이 적용되는 단말 상에서 실행되고, 시스템 서비스 프로세스는 적어도 하나의 시스템 서비스 스레드를 포함한다. 구체적으로, 시스템 서비스 타임아웃 처리 방법은, 적어도 하나의 시스템 서비스 스레드 중 타깃 시스템 서비스 스레드가 타임아웃되는 경우(타깃 시스템 서비스 스레드의 타임아웃은, 타깃 시스템 서비스 스레드에 의해 점유되는 잠긴 객체(locked object)가 미리 설정된 시간 내에 해제되지 않은 것 및 타깃 시스템 서비스 스레드가 차단된(blocked) 것 중 적어도 하나를 포함함), 단말에 의해, 타깃 시스템 서비스 스레드와 통신하는 제1 애플리케이션 프로세스를 결정하는 단계(특히, 제1 애플리케이션 프로세스 및 제2 애플리케이션 프로세스는 적어도 하나의 애플리케이션 프로세스 중 2 개의 상이한 애플리케이션임); 및 단말에 의해, 제1 애플리케이션 프로세스를 종료하는 단계를 포함한다.
이러한 방식으로, 제1 애플리케이션 프로세스가 종료된 후, 제1 애플리케이션 프로세스와 통신하는 타깃 시스템 서비스 스레드에 의해 점유되는 타깃 잠긴 객체(target locked object)가 해제될 수 있고, 타깃 시스템 서비스 스레드의 차단이 제거되고, 단말 상에서 실행되는 다른 시스템 서비스 스레드는 영향을 받지 않는다. 이는 단말에서 프레임 프리징 또는 스크린 프리징 가능성을 감소시키고, 사용자 경험을 향상시킨다.
타깃 시스템 서비스 스레드가 차단되는 것은 구체적으로, 타깃 시스템 서비스 스레드와 제1 애플리케이션 프로세스 사이의 통신에 대한 기간(duration)이 제1 미리 설정된 값보다 큰 것 및 실행 프로시저에서 타깃 시스템 서비스 스레드의 중단 기간이 제2 미리 설정 값보다 큰 것 중 적어도 하나를 포함할 수 있다.
가능한 설계 방법에서, 시스템 서비스 프로세스는 워치독 스레드를 더 포함하고, 시스템 서비스 타임아웃 처리 방법은, 워치독 스레드에 의해, 전기 신호를 시스템 서비스 스레드에 순차적으로 송신하는 단계; 및 미리 설정된 시간 내에 전술한 시스템 서비스 스레드 중 타깃 시스템 서비스 스레드에 의해 피드백되는 응답 신호가 수신되지 않은 경우, 단말에 의해, 타깃 시스템 서비스 스레드가 타임아웃되는 것으로 결정하는 단계를 더 포함한다. 다시 말해서, 단말은 기존의 워치독 메커니즘에 기초하여 본 출원의 시스템 서비스 타임아웃 처리 방법을 구현하여, 구현 복잡성을 감소시키고 시스템 자원을 절약할 수 있다.
가능한 설계 방법에서, 단말에 의해, 타깃 시스템 서비스 스레드와 통신하는 제1 애플리케이션 프로세스를 결정하는 단계는, 단말에 의해, 저장된 등록 정보로부터, 타깃 시스템 서비스 스레드와 통신하는 제1 애플리케이션 프로세스를 질의하는 단계 - 여기서, 시스템 서비스 스레드와, IPC를 수행하는 제1 애플리케이션 프로세스 사이의 대응은 등록 정보에 기록됨 - 를 포함한다.
가능한 설계 방법에서, 제1 애플리케이션 프로세스를 종료하는 단계 후, 시스템 서비스 타임아웃 처리 방법은, 단말에 의해, 제1 애플리케이션 프로세스를 재시작하는 단계를 포함하여, 사용자가 재시작된 제1 애플리케이션 프로세스에 대한 동작을 계속할 수 있도록 한다.
가능한 설계 방법에서, 시스템 서비스 타임아웃 처리 방법은, 단말이 현재 실행 중인 바인더 스레드의 총량 N을 모니터링하는 단계 - 여기서, N은 0 이상의 정수임 - 를 더 포함한다. 바인더 스레드의 총량이 제1 미리 설정된 값보다 큰 경우, 단말은 N 개의 바인더 스레드 각각에 의해 제공되는 애플리케이션 프로세스를 결정한다. 또한, 단말은 모든 애플리케이션 프로세스 각각에 의해 점유되는 바인더 스레드의 수량을 카운트한다. 제1 타깃 애플리케이션 프로세스에 의해 점유되는 바인더 스레드의 수량이 제2 미리 설정 값보다 큰 경우, 이는 제1 타깃 애플리케이션 프로세스가 너무 많은 바인더 자원을 점유하며, 이에 따라 단말에서 프레임 프리징 또는 스크린 프리징의 위험이 상대적으로 높다는 것을 나타낸다. 따라서, 단말은 제1 타깃 애플리케이션 프로세스를 종료하여, 제1 타깃 애플리케이션 프로세스에 의해 점유되는 바인더 스레드를 해제할 수 있다. 해제된 바인더 스레드는 프로세스 간 통신을 대기하는 다른 프로세스(또는 다른 스레드)에 의해 사용될 수 있다.
가능한 설계 방법에서, 제2 타깃 애플리케이션 프로세스에 의해 점유되는 바인더 스레드의 수량이 제2 미리 설정된 값보다 큰 경우, 제2 타깃 애플리케이션 프로세스의 우선 순위는 제1 타깃 애플리케이션 프로세스의 우선 순위보다 높고, 시스템 서비스 타임아웃 처리 방법은, 단말에 의해, 제2 타깃 애플리케이션 프로세스를 종료하는 단계; 및 단말에 의해, 제2 타깃 애플리케이션 프로세스를 재시작하는 단계를 더 포함한다. 다시 말해서, 복수의 단말이 상대적으로 많은 바인더 스레드를 점유하는 경우, 단말은 낮은 우선 순위를 갖는 애플리케이션 프로세스를 해제하고, 더 높은 우선 순위를 갖는 애플리케이션 프로세스를 예약하여, 더 높은 우선 순위를 갖는 애플리케이션 프로세스가 종료된(재시작된) 후 단말의 동작 상태 및 사용자 경험이 영향을 받는 것을 방지할 수 있다.
가능한 설계 방법에서, 단말이 제2 타깃 애플리케이션 프로세스를 종료하는 경우, 시스템 서비스 타임아웃 처리 방법은, 단말에 의해, 제2 타깃 애플리케이션 프로세스의 실행 경과를 기록하는 단계를 더 포함하고, 단말에 의해, 제2 타깃 애플리케이션 프로세스를 재시작하는 단계는, 단말에 의해, 실행 경과에 기초하여, 제2 타깃 애플리케이션 프로세스를 실행 경과와 동일한 실행 상태로 복원하는 단계를 포함한다. 이러한 방식으로, 제2 타깃 애플리케이션 프로세스를 재시작하는 경우, 단말은 기록된 실행 경과에 기초하여 재시작하기 이전의 상태로 제2 타깃 애플리케이션 프로세스를 복원할 수 있어서, 애플리케이션 프로세스가 재시작되기 전후에 서비스가 중단되지 않도록 하고, 이로써 사용자 경험을 향상시킨다.
가능한 설계 방법에서, 시스템 서비스 타임아웃 처리 방법은, 단말이 타깃 애플리케이션에 대해 IPC 서비스를 제공하는 바인더 스레드의 수량 M을 카운트하는 단계 - 여기서, M은 0 이상의 정수임 - 를 더 포함한다. 바인더 스레드의 수량 M이 제1 임계값 이상인 경우, 이는 바인더 스레드 자원이 소진되는 잠재적인 위험이 존재함을 나타내며, 단말은 타깃 애플리케이션에 대한 새로운 바인더 스레드를 생성하는 것을 중지하여, 바인더 스레드 자원의 소진을 방지할 수 있다.
가능한 설계 방법에서, 바인더 스레드의 수량이 제1 임계값 이상인 경우, 단말에 의해, 타깃 애플리케이션에 대한 새로운 바인더 스레드를 생성하는 것을 중지하는 단계는, 단말이 M 개의 바인더 스레드 각각에 의해 호출되는 API에 대한 통계를 수집하는 단계를 포함한다. 하나의 API가 호출되는 횟수가 제2 임계값보다 큰 경우, 이는 API의 로드가 상대적으로 높고, 바인더 스레드가 API를 악의적으로 호출할 위험이 존재할 수 있음을 나타낸다. 이 경우, 비교적 많은 양의 바인더 스레드 자원이 점유되며, 바인더 스레드는 단일 API를 빈번하게 호출한다. 따라서, 단말은, 악의적인 점유에 의해 야기되는 바인더 스레드 자원의 소진을 방지하기 위해, 타깃 애플리케이션에 대한 새로운 바인더 스레드의 생성 요청에 대한 응답을 중지할 수 있다.
가능한 설계 방법에서, 타깃 애플리케이션에 대한 새로운 바인더 스레드를 생성하는 것을 중지하는 단계 후, 시스템 서비스 타임아웃 처리 방법은, 타깃 애플리케이션에 대해 IPC 서비스를 제공하는 바인더 스레드의 수량 M이 제1 임계값보다 작은 경우, 단말에 의해, 타깃 애플리케이션에 대한 새로운 바인더 스레드를 생성하는 단계를 더 포함한다.
가능한 설계 방법에서, 시스템 서비스 타임아웃 처리 방법은, 단말에 의해, 타깃 시스템 서비스 스레드가 타임아웃된 이유를 디스플레이하거나, 제1 애플리케이션 프로세스를 종료하는 프롬프트 메시지를 디스플레이하는 단계를 더 포함한다.
가능한 설계 방법에서, 본 출원의 일 실시 예는 시스템 서비스 타임아웃 처리 방법을 제공한다. 구체적으로, 시스템 서비스 프로세스 및 적어도 하나의 애플리케이션 프로세스는 시스템 서비스 타임아웃 처리 방법이 적용되는 단말 상에서 실행되고, 시스템 서비스 프로세스는 적어도 하나의 시스템 서비스 스레드를 포함한다. 구체적으로, 시스템 서비스 타임아웃 처리 방법은, 제1 시스템 서비스 스레드가 타깃 잠긴 객체를 점유하는 경우, 제1 타이머는 타이밍을 시작하도록 트리거되는 단계를 포함한다. 제1 타이머가 만료되는 경우, 제1 시스템 서비스 스레드가 여전히 타깃 잠긴 객체를 해제하지 않은 경우, 타깃 잠긴 객체를 점유하는 제1 시스템 서비스 스레드의 식별자를 획득하기 위해 단말이 트리거된다. 또한, 단말은, 제1 시스템 서비스 스레드의 식별자에 기초하여, 제1 시스템 서비스 스레드와 통신하는 타깃 애플리케이션 프로세스를 결정하고, 타깃 애플리케이션 프로세스를 종료한다.
다른 가능한 설계 방법에서, 본 출원의 일 실시 예는 시스템 서비스 타임아웃 처리 방법을 제공한다. 구체적으로, 시스템 서비스 프로세스 및 적어도 하나의 애플리케이션 프로세스는 시스템 서비스 타임아웃 처리 방법이 적용되는 단말 상에서 실행되고, 시스템 서비스 프로세스는 적어도 하나의 시스템 서비스 스레드를 포함한다. 구체적으로, 시스템 서비스 타임아웃 처리 방법은, 제1 시스템 서비스 스레드가 제1 애플리케이션 프로세스와 통신하는 단계를 포함한다. 제2 애플리케이션 프로세스가 제1 시스템 서비스 스레드에 의해 제공되는 시스템 서비스를 요구하는 경우, 제2 타이머는 타이밍을 시작하도록 트리거된다. 제2 타이머가 만료되는 경우, 제1 시스템 서비스 스레드가 여전히 제1 애플리케이션 프로세스와 통신하는 경우, 단말은 제1 애플리케이션 프로세스를 종료하도록 트리거된다.
제2 측면에 따르면, 본 출원의 일 실시 예는 단말을 제공한다. 시스템 서비스 프로세스 및 적어도 하나의 애플리케이션 프로세스는 단말 상에서 실행되고, 시스템 서비스 프로세스는 적어도 하나의 시스템 서비스 스레드를 포함한다. 단말은, 적어도 하나의 시스템 서비스 스레드 중 타깃 시스템 서비스 스레드가 타임아웃 되는지 여부를 검출하도록 구성되는 타임아웃 검출 유닛; 타깃 시스템 서비스 스레드가 타임아웃되는 경우, 타깃 시스템 서비스 스레드와 통신하는 제1 애플리케이션 프로세스를 결정하도록 구성되는 결정 유닛 - 여기서, 타깃 시스템 서비스 스레드의 타임아웃은, 타깃 시스템 서비스 스레드에 의해 점유되는 잠긴 객체가 미리 설정된 시간 내에 해제되지 않은 것 및 타깃 시스템 서비스 스레드가 차단된 것 중 적어도 하나를 포함함 -; 및 제1 애플리케이션 프로세스를 종료하도록 구성되는 타임아웃 처리 유닛을 포함한다.
가능한 설계 방법에서, 결정 유닛은 구체적으로, 저장된 등록 정보로부터, 타깃 시스템 서비스 스레드와 통신하는 제1 애플리케이션 프로세스를 질의하도록 구성되고, 시스템 서비스 스레드와 프로세스 간 통신(IPC)을 수행하는 제1 애플리케이션 프로세스 사이의 대응은 등록 정보에 기록된다.
가능한 설계 방법에서, 타임아웃 처리 유닛은, 제1 애플리케이션 프로세스를 재시작하도록 추가로 구성된다.
가능한 설계 방법에서, 타임아웃 검출 유닛은, 현재 실행 중인 바인더 스레드의 총량 N을 모니터링하도록 추가로 구성되고 - 여기서, N은 0 이상의 정수임 -; 결정 유닛은, 바인더 스레드의 총량이 제1 미리 설정된 값보다 큰 경우, N 개의 바인더 스레드 각각에 의해 제공되는 애플리케이션 프로세스를 결정하고; 모든 타깃 애플리케이션 프로세스 각각에 의해 점유되는 바인더 스레드의 수량을 카운트하도록 추가로 구성되고; 타임아웃 처리 유닛은, 제1 타깃 애플리케이션 프로세스에 의해 점유되는 바인더 스레드의 수량이 제2 미리 설정된 값보다 큰 경우, 제1 타깃 애플리케이션 프로세스를 종료하도록 추가로 구성된다.
가능한 설계 방법에서, 제2 타깃 애플리케이션 프로세스에 의해 점유되는 바인더 스레드의 수량이 제2 미리 설정된 값보다 큰 경우, 제2 타깃 애플리케이션 프로세스의 우선 순위는 제1 타깃 애플리케이션 프로세스의 우선 순위보다 높고, 타임아웃 처리 유닛은, 제2 타깃 애플리케이션 프로세스를 종료하고; 제2 타깃 애플리케이션 프로세스를 재시작하도록 추가로 구성된다.
가능한 설계 방법에서, 타임아웃 처리 유닛은 구체적으로, 제2 타깃 애플리케이션 프로세스의 실행 경과를 기록하고; 실행 경과에 기초하여, 제2 타깃 애플리케이션 프로세스를 실행 경과와 동일한 실행 상태로 복원하도록 구성된다.
가능한 설계 방법에서, 결정 유닛은, 타깃 애플리케이션에 대해 IPC 서비스를 제공하는 바인더 스레드의 수량 M을 카운트하도록 구성되고 - 여기서, M은 0 이상의 정수임 -; 타임아웃 처리 유닛은, 바인더 스레드의 수량 M이 제1 임계값 이상인 경우, 타깃 애플리케이션에 대한 새로운 바인더 스레드를 생성하는 것을 중지하도록 추가로 구성된다.
가능한 설계 방법에서, 타임아웃 처리 유닛은 구체적으로, M 개의 바인더 스레드에 각각에 의해 호출되는 애플리케이션 프로그래밍 인터페이스(API)에 관한 통계를 수집하고; 하나의 API가 호출되는 횟수가 제2 임계값보다 큰 경우, 타깃 애플리케이션에 대한 새로운 바인더 스레드의 생성 요청에 대한 응답을 중지하도록 구성된다.
가능한 설계 방법에서, 타임아웃 처리 유닛은, 타깃 애플리케이션에 대해 IPC 서비스를 제공하는 바인더 스레드의 수량 M이 제1 임계값보다 작은 경우, 타깃 애플리케이션에 대한 새로운 바인더 스레드를 생성하도록 추가로 구성된다.
가능한 설계 방법에서, 단말은, 타깃 시스템 서비스 스레드가 타임아웃된 이유를 디스플레이하거나, 제1 애플리케이션 프로세스를 종료하는 프롬프트 메시지를 디스플레이하도록 구성되는 디스플레이 유닛을 더 포함한다.
제3 측면에 따르면, 본 출원의 일 실시 예는 단말을 제공한다. 단말은 프로세서, 메모리, 버스 및 통신 인터페이스를 포함한다. 메모리는 컴퓨터로 실행 가능한 명령을 저장하도록 구성되고, 프로세서는 버스를 사용하여 메모리에 연결되고, 단말이 동작할 때, 프로세서는 메모리에 저장된 컴퓨터로 실행 가능한 명령을 실행하고, 단말은 전술한 시스템 서비스 타임아웃 처리 방법 중 어느 하나를 수행할 수 있다.
제4 측면에 따르면, 본 출원의 일 실시 예는 컴퓨터로 판독 가능한 저장 매체를 제공한다. 컴퓨터로 판독 가능한 저장 매체는 명령을 저장하고, 명령이 전술한 단말 중 어느 하나에서 실행되는 경우, 단말은 전술한 시스템 서비스 타임아웃 처리 방법 중 어느 하나를 수행할 수 있다.
제5 측면에 따르면, 본 출원의 일 실시 예는 명령을 포함하는 컴퓨터 프로그램 제품을 제공한다. 컴퓨터 프로그램 제품이 전술한 단말 중 어느 하나에서 실행되는 경우, 단말은 전술한 시스템 서비스 타임아웃 처리 방법 중 어느 하나를 수행할 수 있다.
제2 측면 내지 제5 측면의 임의의 설계에 의해 발생하는 기술적 효과에 대해서는, 제1 측면의 여러 설계 방법에 의해 발생하는 기술적 효과를 참조할 수 있다. 세부 내용에 대해서는 여기에서 다시 설명하지 않는다.
도 1은 본 출원의 일 실시 예에 따른 단말의 제1 개략 구조도이다.
도 2는 본 출원의 일 실시 예에 따른 안드로이드 시스템의 제1 개략 아키텍처도이다.
도 3은 본 출원의 일 실시 예에 따른 안드로이드 시스템의 제2 개략 아키텍처도이다.
도 4는 본 출원의 일 실시 예에 따른 안드로이드 시스템의 제3 개략 아키텍처도이다.
도 5는 본 출원의 일 실시 예에 따른 시스템 서비스 타임아웃 처리 방법의 제1 개략 흐름도이다.
도 6은 본 출원의 일 실시 예에 따른 시스템 서비스 타임아웃 처리 방법의 응용 시나리오의 제1 개략도이다.
도 7은 본 출원의 일 실시 예에 따른 시스템 서비스 타임아웃 처리 방법의 응용 시나리오의 제2 개략도이다.
도 8은 본 출원의 일 실시 예에 따른 시스템 서비스 타임아웃 처리 방법의 제2 개략 흐름도이다.
도 9는 본 출원의 일 실시 예에 따른 시스템 서비스 타임아웃 처리 방법의 제3 개략 흐름도이다.
도 10은 본 출원의 일 실시 예에 따른 단말의 제2 개략 구조도이다.
도 11은 본 출원의 일 실시 예에 따른 단말의 제3 개략 구조도이다.
도 2는 본 출원의 일 실시 예에 따른 안드로이드 시스템의 제1 개략 아키텍처도이다.
도 3은 본 출원의 일 실시 예에 따른 안드로이드 시스템의 제2 개략 아키텍처도이다.
도 4는 본 출원의 일 실시 예에 따른 안드로이드 시스템의 제3 개략 아키텍처도이다.
도 5는 본 출원의 일 실시 예에 따른 시스템 서비스 타임아웃 처리 방법의 제1 개략 흐름도이다.
도 6은 본 출원의 일 실시 예에 따른 시스템 서비스 타임아웃 처리 방법의 응용 시나리오의 제1 개략도이다.
도 7은 본 출원의 일 실시 예에 따른 시스템 서비스 타임아웃 처리 방법의 응용 시나리오의 제2 개략도이다.
도 8은 본 출원의 일 실시 예에 따른 시스템 서비스 타임아웃 처리 방법의 제2 개략 흐름도이다.
도 9는 본 출원의 일 실시 예에 따른 시스템 서비스 타임아웃 처리 방법의 제3 개략 흐름도이다.
도 10은 본 출원의 일 실시 예에 따른 단말의 제2 개략 구조도이다.
도 11은 본 출원의 일 실시 예에 따른 단말의 제3 개략 구조도이다.
이하에서 언급되는 "제1" 및 "제2" 라는 용어는 단지 설명의 목적을 위한 것이며, 지시된 기술적 특징의 넘버에 대한 암시적 표시 또는 상대적 중요성에 대한 암시 또는 표시로 이해되지 않아야 한다. 따라서, "제1" 또는 "제2"에 의해 제한되는 특징은 명시적으로 또는 암시적으로 하나 이상의 특징을 포함할 수 있다. 본 출원의 실시 예들에 대한 설명에서, 달리 언급되지 않는 한, "다중(multiple)"은 2 또는 3 이상을 의미한다.
본 출원의 실시 예들에서 제공되는 시스템 서비스 타임아웃 처리 방법을 명확하게 설명하기 위해, 후속 실시 예들에서 나올 수 있는 일부 개념이 먼저 설명된다.
프로세스(process)는 데이터 세트에 대한 애플리케이션 프로그램의 실행되는 액티비티(running activity)이고, 운영 체제(예를 들어, 안드로이드 시스템)가 자원을 할당 및 스케줄링하기 위한 기본 단위이다. 각 프로세스는 주소 공간을 점유한다. 애플리케이션 프로그램은 운영 체제 상에서 하나 이상의 프로세스로 실행되어 대응하는 기능을 구현한다.
스레드(thread)는 프로세스의 엔티티(entity)이고, 프로세스보다 작고 독립적으로 실행할 수 있는 기본 단위이다. 스레드는 프로세스의 모든 자원을 동일한 프로세스에 속하는 다른 스레드와 공유할 수 있다. 하나의 스레드는 다른 스레드를 생성 및 삭제할 수 있다. 복수의 스레드는 하나의 프로세스에서 동시에 실행될 수 있다.
객체 잠금(object locking)은 한 번에 하나의 스레드만 메소드(method) 또는 변수에 액세스함을 보장하는 메커니즘이다. Java 언어에서, 스레드가 동기화된 코드에 액세스하는 경우, 코드가 속하는 잠긴 객체를 획득할 필요가 있다. 그렇지 않으면, 스레드는 잠긴 객체가 해제될 때까지 대기(또는 차단)된다. 동기화된 코드는 키워드 "synchronized"에 의해 수정된 메소드 또는 명령문 블록(statement block)이다.
즉, 객체 잠금은 상호 배제(mutual exclusion)이며, 이는 최대 하나의 스레드가 락(lock)을 획득할 수 있음을 의미한다. 스레드 A가 스레드 B가 보유한 잠긴 객체를 확보하기 위해 시도하는 경우, 스레드 A는 대기하거나 차단될 필요가 있다. 스레드 A는 잠긴 객체를 획득하여, 스레드 B가 락을 해제할 때까지만 해당 메소드 또는 변수에 액세스할 수 있다.
스레드 차단은 일반적으로 실행 프로시저에서 스레드의 중단 기간이 미리 설정된 값보다 클 때 발생하는 타임아웃을 나타낸다. 예를 들어, 스레드 A의 실행 프로시저에서, 스레드 B의 실행 결과는 실행을 계속하기 위해 입력 파라미터로 사용될 필요가 있다. 이 경우, 스레드 A가 스레드 B의 실행 결과를 획득하지 못하면 실행은 중단된다. 스레드 A가 미리 설정된 시간 내에 스레드 B의 실행 결과를 획득하지 못하면, 스레드 A는 차단된다. 대안적으로, 스레드 차단은, 스레드가 프로세스와 통신하는 경우 스레드가 프로세스에 의해 오랫동안 점유되기 때문에, 스레드가 다른 프로세스에 서비스를 제공할 수 없는 현상을 지칭할 수 있다.
현재, 단말은 워치독 메커니즘을 기반으로 운영 체제에서 일부 스레드 및 잠긴 객체를 모니터링 할 수 있다. 모니터링되는 스레드가 차단되는 경우 또는 모니터링된 잠긴 객체가 오랫동안 해제되지 않은 경우, 중단 또는 스크린 프리징을 피하기 위해, 전 운영 체제를 재시작하도록 단말이 트리거될 수 있다.
그러나, 전 운영 체제를 재시작하여 프리징을 제거함으로써 스레드가 차단되거나 잠긴 객체가 정상적으로 해제되지 않는 문제를 해결할 수 있지만, 운영 체제에서 정상적으로 실행 중인 다른 스레드 및 잠긴 객체도 강제로 종료된다. 의심의 여지없이, 실행 중인 애플리케이션 프로그램의 많은 양의 데이터가 손실된다. 또한 사용자 경험이 손상된다.
따라서, 본 출원의 실시 예들에서, 기존 워치독 트리거 메커니즘(watchdog triggering mechanism)에 기초하여, 모니터링된 스레드가 차단되거나 모니터링된 잠긴 객체가 오랫동안 해제되지 않음을 검출한 경우, 단말은 먼저, 차단되었거나 잠긴 객체를 점유하는 스레드(또는 프로세스)와 통신하는 애플리케이션 프로세스를 결정할 수 있다. 또한, 단말은, 애플리케이션 프로세스 종료 또는 재시작과 같은, 복원 정책을 이용하여, 현재 스레드가 차단되거나 잠긴 객체가 해제될 수 없는 문제점을 해결할 수 있다. 이러한 방식으로, 차단되지 않은 스레드 또는 운영 체제에서 정상적으로 잠긴 객체를 해제하는 스레드의 실행 프로시저는 영향을 받지 않으며, 스레드 차단 또는 잠긴 객체 해제 실패로 인한 프리징 문제도 해결될 수 있으므로, 사용자 경험이 크게 향상된다.
전술한 애플리케이션 프로세스는 단말의 애플리케이션 계층의 애플리케이션 프로그램의 프로세스일 수 있거나, 백그라운드에서 실행되는 데몬(daemon) 프로세스일 수 있다. 이는 본 출원의 실시 예들로 제한되지 않는다.
본 출원의 일 실시 예에서 제공되는 시스템 서비스 타임아웃 처리 방법은, 이동 전화, 웨어러블 디바이스, 증강 현실(augmented reality, AR)/가상 현실(virtual reality, VR) 디바이스, 태블릿 컴퓨터, 노트북 컴퓨터, 울트라 모바일 개인용 컴퓨터(ultra-mobile personal computer, UMPC), 넷북 또는 PDA(personal digital assistant)와 같은 임의의 단말에 적용될 수 있다. 물론, 단말의 구체적인 형태는 다음 실시 예들로 제한되지 않는다.
도 1에 도시된 바와 같이, 본 출원의 실시 예들에서의 단말은 이동 전화(100)일 수 있다. 이하에서는 이동 전화(100)을 예로 들어 실시 예들을 상세히 설명한다. 도면에 도시된 이동 전화(100)는 단지 단말의 예일 뿐이고, 이동 전화(100)는 도면에 도시된 것보다 더 많거나 더 적은 구성 요소를 가질 수 있거나, 2 이상의 구성 요소가 결합되거나, 또는 다른 구성 요소가 사용될 수 있음을 이해해야 한다.
도 1에 도시된 바와 같이, 이동 전화(100)는 구체적으로, 프로세서(101), 무선 주파수(radio frequency, RF) 회로(102), 메모리(103), 터치스크린(104), 블루투스 장치(105), 하나 이상의 센서(106), Wi-Fi(wireless fidelity)(107), 측위 장치(108), 오디오 회로(109), 주변 장치 인터페이스(110) 및 전력 시스템(111)과 같은 구성 요소를 포함할 수 있다. 이들 구성 요소는 하나 이상의 통신 버스 또는 신호 케이블(도 1에 도시되지 않음)을 사용하여 서로 통신할 수 있다. 본 발명에 속하는 기술 분야에서 통상의 지식을 가진 자는, 도 1에 도시된 하드웨어 구조가 이동 전화에 대한 제한을 구성하지 않으며, 이동 전화(100)는 도면에 도시된 것보다 더 많거나 더 적은 구성 요소를 포함할 수 있고, 일부 구성 요소가 결합되거나, 또는 다른 구성 요소 배열이 사용될 수 있음을 이해할 수 있다.
이하에서는 도 1을 참조하여 이동 전화(100)의 구성 요소들을 상세히 설명한다.
프로세서(101)는 이동 전화(100)의 제어 중심이다. 프로세서(101)는 다양한 포트 및 라인을 이용하여 이동 전화(100)의 다양한 부분에 연결되고, 메모리(103)에 저장된 애플리케이션 프로그램을 실행 또는 수행하며, 메모리(103)에 저장된 데이터를 호출하여 이동 전화(100)의 다양한 기능을 수행하고 데이터를 처리한다. 일부 실시 예들에서, 프로세서(101)는 하나 이상의 처리 유닛을 포함할 수 있다. 예를 들어, 프로세서(101)는 Huawei Technologies Co., Ltd.에 의해 제조된 Kirin 960 칩일 수 있다. 본 출원의 일부 실시 예들에서, 프로세서(101)는 수집된 지문을 검증하도록 구성된 지문 검증 칩을 더 포함할 수 있다.
무선 주파수 회로(102)는 정보 송신 및 수신 프로시저에서, 또는 호출 프로시저에서 무선 신호를 송신 및 수신하도록 구성될 수 있다. 특히, 기지국으로부터 다운링크 데이터를 수신한 후, 무선 주파수 회로(102)는 처리를 위해 다운링크 데이터를 프로세서(101)에 송신할 수 있다. 또한, 무선 주파수 회로(102)는 관련 업링크 데이터를 기지국에 송신한다. 일반적으로, 무선 주파수 회로는 안테나, 적어도 하나의 증폭기, 트랜시버, 커플러, 저잡음 증폭기, 듀플렉서 등을 포함하지만, 이에 제한되지는 않는다. 또한, 무선 주파수 회로(102)는 무선 통신을 통해 다른 디바이스와 추가로 통신할 수 있다. 이동 통신을 위한 글로벌 시스템, 일반 패킷 무선 서비스, 코드 분할 다중 액세스, 광대역 코드 분할 다중 액세스, 롱 텀 에볼루션(long term evolution), 이메일, 단문 메시지 서비스(short message service) 등을 비 제한적으로 포함하는 임의의 통신 표준 또는 프로토콜이 무선 통신에 사용될 수 있다.
메모리(103)는 애플리케이션 프로그램 및 데이터를 저장하도록 구성된다. 프로세서(101)는 메모리(103)에 저장된 애플리케이션 프로그램 및 데이터를 실행하여, 이동 전화(100)의 다양한 기능을 실행하고 데이터를 처리한다. 메모리(103)는 주로 프로그램 저장 영역 및 데이터 저장 영역을 포함한다. 프로그램 저장 영역은 적어도 하나의 기능(예를 들어, 사운드 또는 이미지 재생 기능)에 필요한 애플리케이션 프로그램 및 운영 체제를 저장할 수 있다. 데이터 저장 영역은 이동 전화(100)의 사용에 기초하여 생성되는 데이터(예를 들어, 오디오 데이터 또는 전화 번호부)를 저장할 수 있다. 또한, 메모리(103)는 고속 랜덤 액세스 메모리(random access memory, RAM)를 포함할 수 있고, 자기 디스크 저장 디바이스, 플래시 메모리 디바이스, 또는 다른 휘발성 고체 메모리와 같은 비 휘발성 메모리를 더 포함할 수 있다. 메모리(103)는 Apple에 의해 개발 된 iOS® 운영 체제 및 Google에 의해 개발된 Android® 운영 체제와 같은 다양한 운영 체제를 저장할 수 있다. 메모리(103)는 독립적일 수 있으며, 통신 버스를 사용하여 프로세서(101)에 연결된다. 대안적으로, 메모리(103)는 프로세서(101)에 통합될 수 있다.
터치스크린(104)은 구체적으로 터치패드(104-1) 및 디스플레이(104-2)를 포함할 수 있다.
터치패드(104-1)는 이동 전화(100) 상에서 또는 그 근처에서 이동 전화(100)의 사용자에 의해 수행되는 터치 이벤트(예를 들어, 손가락 또는 스타일러스와 같은 임의의 적합한 물체를 이용하여 터치패드(104-1) 상에서 또는 그 근처에서 사용자에 의해 수행되는 동작)을 수집하고, 수집된 터치 정보를 다른 구성 요소(예를 들어, 프로세서(101))에 송신할 수 있다. 터치패드(104-1) 근처에서 사용자에 의해 수행되는 터치 이벤트는 플로팅 터치(floating touch)라고 지칭될 수 있다. 플로팅 터치는, 사용자가 객체(예를 들어, 아이콘)를 선택, 이동 또는 드래그하기 위해 터치패드를 직접 터치할 필요가 없고, 사용자는 원하는 기능을 수행하기 위해 단말 근처에 있으면 된다. 또한, 터치패드(104-1)는 저항 타입, 정전 타입, 적외선 타입 또는 표면 탄성파(surface acoustic wave) 타입과 같은 복수의 타입으로 구현될 수 있다.
디스플레이(디스플레이 스크린이라고도 함)(104-2)는 사용자에 의해 입력되는 정보 또는 사용자를 위해 제공하는 정보, 및 이동 전화(100)의 다양한 메뉴를 디스플레이하도록 구성될 수 있다. 디스플레이(104-2)는 액정 디스플레이, 유기 발광 다이오드 등의 형태로 구성될 수 있다. 터치패드(104-1)는 디스플레이(104-2)를 덮을 수 있다. 터치패드(104-1) 상에서 또는 그 근처에서 터치 이벤트를 검출하는 경우, 터치패드(104-1)는 터치 이벤트를 프로세서(101)에 전달하여 터치 이벤트의 타입을 결정한다. 그 후, 프로세서(101)는 터치 이벤트의 타입에 기초하여 디스플레이(104-2) 상에 대응하는 시각적 출력을 제공할 수 있다. 비록 도 1의 터치패드(104-1) 및 디스플레이 스크린(104-2)은 이동 전화(100)의 입력 및 출력 기능을 구현하기 위해 2 개의 독립적인 구성 요소로서 사용되지만, 일부 실시 예들에서, 터치패드(104-1) 및 디스플레이 스크린(104-2)은 이동 전화(100)의 입력 및 출력 기능을 구현하기 위해 통합될 수 있다. 터치스크린(104)은 재료의 층을 적층함으로써 형성되는 것으로 이해될 수 있다. 본 출원의 본 실시 예에서, 터치패드(계층) 및 디스플레이 스크린(계층)만이 표시되고, 본 출원의 본 실시 예에서 다른 계층은 기록되지 않는다. 또한, 터치패드(104-1)는 베젤이 없는 스크린 형태로 이동 전화(100)의 전면에 구성될 수 있고, 또한 디스플레이 스크린(104-2)도 베젤이 없는 스크린 형태로 이동 전화(100)의 전면에 구성될 수 있다. 이러한 방식으로, 베젤이 없는 구조가 이동 전화의 전면에 구현될 수 있다.
또한, 이동 전화(100)는 지문 인식 기능을 추가로 구비할 수 있다. 예를 들어, 지문 인식기(112)는 이동 전화(100)의 후면(예를 들어, 후방 카메라 아래)에 구성될 수 있거나, 지문 인식기(112)는 이동 전화(100)의 전면(예를 들어, 터치스크린(104) 아래)에 구성될 수 있다. 다른 예를 들어, 지문 수집 구성 요소(112)는 지문 인식 기능을 구현하기 위해 터치스크린(104)에 배치될 수 있으며, 즉, 지문 수집 구성 요소(112)는 이동 전화(100)의 지문 인식 기능을 구현하기 위해 터치스크린(104)에 통합될 수 있다. 이 경우에, 지문 수집 구성 요소(112)는 터치스크린(104)에 구성되고, 터치스크린(104)의 일부일 수 있거나, 다른 방식으로 터치스크린(104)에 구성될 수 있다. 본 출원의 본 실시 예에서 지문 수집 구성 요소(112)의 주요 구성 요소는 지문 센서이다. 지문 센서는, 광학 센싱 기술, 용량 센싱 기술, 압전 센싱 기술, 초음파 센싱 기술 등을 비 제한적으로 포함하는 임의의 타입의 센싱 기술을 사용할 수 있다.
이동 전화(100)는 이동 전화(100)와 다른 단거리 단말(예를 들어, 이동 전화 또는 스마트워치) 사이에서 데이터를 교환하도록 구성된 블루투스 장치(105)를 더 포함할 수 있다. 본 출원의 본 실시 예에서, 블루투스 장치는 집적 회로, 블루투스 칩 등일 수 있다.
이동 전화(100)는 광학 센서, 모션 센서 및 다른 센서와 같은 적어도 하나의 센서(106)를 더 포함할 수 있다. 구체적으로, 광학 센서는 주변 광 센서 및 근접 센서를 포함할 수 있다. 주변 광 센서는 주변 광 휘도에 기초하여 터치스크린(104)의 디스플레이의 휘도를 조정할 수 있다. 근접 센서는 이동 전화(100)가 귀에 접근하는 경우 디스플레이의 전원을 끌 수 있다. 모션 센서의 타입으로서, 가속도계 센서는 모든 방향(보통, 3 축)의 가속도 값을 검출할 수 있고, 센서가 고정된 상태일 때 중력 값 및 중력 방향을 검출할 수 있으며, (가로 모드와 세로 모드 간 스크린 전환, 관련 게임, 또는 자력계 자세 교정과 같은) 이동 전화 자세를 식별하기 위한 애플리케이션 프로그램, (만보계 또는 노크(knock)와 같은) 진동 식별과 관련된 기능 등에 사용될 수 있다. 이동 전화(100)에는 자이로스코프, 기압계, 습도계, 온도계 및 적외선 센서와 같은 다른 센서가 더 배치될 수 있다. 세부 내용에 대해서는 여기에서 설명되지 않는다.
Wi-Fi 장치(107)는 Wi-Fi 관련 표준 프로토콜을 따르는 네트워크 액세스를 이동 전화(100)에 제공하도록 구성된다. 이동 전화(100)는 Wi-Fi 장치(107)를 사용하여 Wi-Fi 액세스 포인트에 액세스하여, 사용자가 이메일을 송신 및 수신하고, 웹 페이지를 브라우징하고, 스트리밍 미디어에 액세스하는 것 등을 도울 수 있다. Wi-Fi 장치(107)는 사용자에게 무선 광대역 인터넷 액세스를 제공한다. 일부 다른 실시 예들에서, Wi-Fi 장치(107)는 Wi-Fi 무선 액세스 포인트로서 사용될 수 있고, 다른 단말에 대한 Wi-Fi 네트워크 액세스를 제공할 수 있다.
측위 장치(108)는 이동 전화(100)에 대한 지리적 위치를 제공하도록 구성된다. 측위 장치(108)는 구체적으로 글로벌 측위 시스템(global positioning system, GPS), Beidou 위성 항법 시스템, 또는 러시아의 GLONASS와 같은 측위 시스템의 수신기일 수 있음을 이해할 수 있다. 측위 시스템에 의해 송신되는 지리적 위치를 수신한 후, 측위 장치(108)는 처리를 위해 정보를 프로세서(101)에 송신하거나, 저장을 위해 정보를 메모리(103)에 송신한다. 일부 다른 실시 예들에서, 측위 장치(108)는 보조 글로벌 측위 시스템(assisted global positioning system, AGPS)의 수신기일 수 있다. AGPS 시스템은 측위 및 측위 서비스를 완료하는데 있어서 측위 장치(108)를 보조하는 보조 서버로서 기능한다. 이 경우에, 보조 측위 서버는, 무선 통신 네트워크를 통해, 단말, 예를 들어, 이동 전화(100)의 측위 장치(108)(즉, GPS 수신기)와 통신하고, 측위 지원을 제공한다. 일부 다른 실시 예들에서, 측위 장치(108)는 Wi-Fi 액세스 포인트에 기초한 측위 기술일 수 있다. 각 Wi-Fi 액세스 포인트에는 전역적으로 고유한 미디어 액세스 제어(media access control, MAC) 주소가 있으며, Wi-Fi가 활성화된 경우 단말은 주변 Wi-Fi 액세스 포인트의 브로드캐스트 신호를 스캔 및 수집할 수 있다. 따라서, 단말은 Wi-Fi 액세스 포인트에 의해 브로드캐스트되는 MAC 주소를 획득할 수 있다. 단말은 무선 통신 네트워크를 통해 Wi-Fi 액세스 포인트를 식별할 수 있는 데이터 등(예를 들어, MAC 주소)을 위치 서버에 송신한다. 위치 서버는 각각의 Wi-Fi 액세스 포인트의 지리적 위치를 검색하고, Wi-Fi 브로드캐스트 신호의 강도를 참조하여 단말의 지리적 위치를 계산하고, 단말의 지리적 위치를 단말의 측위 장치(108)에 송신한다. .
오디오 회로(109), 스피커(113) 및 마이크로폰(114)은 사용자와 이동 전화(100) 사이에 오디오 인터페이스를 제공할 수 있다. 오디오 주파수 회로(109)는, 수신된 오디오 데이터로부터 변환된 전기 신호를 스피커(113)에 전송할 수 있고, 스피커(113)는 전기 신호를 출력을 위한 사운드 신호로 변환한다. 또한, 마이크로폰(114)은 수집된 사운드 신호를 전기 신호로 변환하고, 오디오 주파수 회로(109)는 전기 신호를 수신한 후 전기 신호를 오디오 데이터로 변환한 다음, 오디오 데이터를 RF 회로(102)에 출력하여 오디오 데이터를, 예를 들어, 다른 이동 전화에 송신하거나, 추가적인 처리를 위해 오디오 데이터를 메모리(103)에 출력한다.
주변 장치 인터페이스(110)는 외부 입력/출력 디바이스(예를 들어, 키보드, 마우스, 외부 디스플레이, 외부 메모리 및 가입자 식별 모듈 카드)를 위한 다양한 인터페이스를 제공하도록 구성된다. 예를 들어, 이동 전화(100)는 범용 직렬 버스(universal serial bus, USB) 인터페이스를 사용하여 마우스에 연결되고, 사용자 신원 모듈 카드의 카드 슬롯 상의 금속 접점을 사용하여, 통신 사업자에 의해 제공되는 사용자 식별 모듈 카드(가입자 식별 모듈(subscriber identification module, SIM)) 카드에 연결된다. 주변기기 인터페이스(110)는 외부 입력/출력 주변 디바이스를 프로세서(101) 및 메모리(103)와 연결하도록 구성될 수 있다.
이동 전화(100)는 다양한 구성 요소에 전원을 공급하는 전원 공급 장치(111)(예를 들어, 배터리 또는 전원 관리 칩)를 더 포함할 수 있다. 배터리는 전원 관리 칩을 이용하여 프로세서(101)와 논리적으로 연결될 수 있으므로, 전원 공급 장치(111)를 이용하여 충전 관리, 방전 관리, 소비 전력 관리 등의 기능이 구현될 수 있다.
도 1에는 도시되어 있지 않지만, 이동 전화(100)는 카메라(전방 카메라 및/또는 후면 카메라), 손전등, 마이크로 프로젝션 장치, 근거리 통신(near field communication, NFC) 장치 등을 더 포함할 수 있으며, 세부 내용에 대해서는 여기에서 설명되지 않는다.
또한, 모바일 폰(100)은 안드로이드 또는 iOS와 같은 운영 체제를 실행할 수 있다. 이는 본 출원의 본 실시 예로 제한되지 않는다.
도 2에 도시된 바와 같이, 안드로이드 운영 체제로 예를 들면, 안드로이드 운영 체제는 내림차순으로 애플리케이션 프로그램 계층(201)(즉, 앱 계층), 애플리케이션 프로그램 프레임워크 계층(202)(즉, 프레임워크 계층), 시스템 런타임 라이브러리 계층(203)(즉, 라이브러리 계층) 및 리눅스 커널 계층(204)의 4 가지 계층으로 나누어진다.
리눅스 커널 계층(204)은 이동 전화(100)의 보안(security) 제어, 메모리 관리(memory management), 프로그램 관리(process management), 네트워크 스택(network stack) 및 드라이버 모델(driver model)과 같은 기능을 위해 사용될 수 있다. 리눅스 커널 계층(204)은 또한 하드웨어(예를 들어, CPU, 네트워크 인터페이스 카드 및 메모리)와 소프트웨어 스택 사이의 추상화 계층으로서 기능하고, 구체적인 하드웨어 세부 사항을 숨겨서, 상위 계층(시스템 런타임 라이브러리 계층(203), 애플리케이션 프로그램 프레임워크 계층(202) 및 애플리케이션 프로그램 계층(201))에 대한 통합된 서비스를 제공할 수 있다.
시스템 런타임 라이브러리 계층(203)은, 미디어 라이브러리, 시스템 C 라이브러리 및 디스플레이 관리 라이브러리(surface manager)와 같은 일부 C/C++ 라이브러리를 포함한다. 이들 라이브러리는 안드로이드 시스템의 다른 구성 요소에 의해 사용될 수 있다. 시스템 런타임 라이브러리 계층(203)은 프레임워크 계층(202)을 사용하여 개발자에게 서비스를 제공할 수 있다.
프레임워크 계층(202)은 개발자에게 애플리케이션 프로그램에 대한 완전한 액세스를 허용하는 애플리케이션 프로그래밍 인터페이스(application programming interface, API) 프레임워크를 제공한다. 구체적으로, 프레임워크 계층(202)은 애플리케이션 프로그램을 개발하기 위한 다수의 API를 제공하며, 관련 서비스 요구 사항을 충족시키는 앱은 대응하는 API를 호출함으로써 구성될 수 있다.
애플리케이션 프로그램 계층(201)은 주로 Java 언어를 사용하여 컴파일된 앱을 포함한다. 앱 상에서 동작 스크린을 동작시키는 경우, 사용자는 프레임워크 계층(202)에서 관련 API를 호출함으로써, 시스템 런타임 라이브러리 계층(203) 또는 리눅스 커널 계층(204)과 상호 작용하여, 동작 스크린에 대응하는 기능을 구현한다.
도 3에 도시된 바와 같이, 시스템 서비스(system server) 프로세스는 프레임워크 계층(202)에서 실행된다. 시스템 서버 프로세스는 이동 전화(100)에 대한 거의 모든 시스템 서비스, 예를 들어, 전력 관리자 서비스(power manager service, PMS), 활동 관리자 서비스(activity manager service, AMS), 윈도우 관리자 서비스(window manager service, WMS), 블루투스 서비스(bluetooth service), 네트워크 관리 서비스(network management service, NMS) 및 입력 관리자 서비스(input manager service, IMS)를 제공할 수 있다.
여전히 도 3에 도시된 바와 같이, 이들 시스템 서비스는 시스템 서버 프로세스에 스레드(이하, 시스템 서비스 스레드라고 함)로서 상주할 수 있고, 이러한 시스템 서비스 스레드는, 애플리케이션 프로그램 계층(201)에서의 서드 파티(third-party) 파티 애플리케이션 또는 데몬(daemon) 프로세스에 대한 프로세스와 프로세스 간 통신(inter-process communication, IPC)을 구현할 수 있다. 예를 들어, WeChat 애플리케이션의 프로세스는 실행 중인 프로시저에서 입력 관리자 서비스 스레드와 통신하여, 입력 관리자 서비스의 API를 호출하여 WeChat 애플리케이션에 입력 메소드 서비스를 제공할 수 있다.
예를 들어, 시스템 서비스 스레드(예를 들어, 입력 관리자 서비스 스레드)는 구체적으로 바인더 서비스 또는 소켓(socket) 서비스를 사용하여 다른 애플리케이션의 프로세스와 통신할 수 있다.
바인더 서비스를 예로 들어, 도 4를 참조하면, 바인더 서비스 아키텍처에는 서버, 바인더 드라이버 및 클라이언트의 3 가지 모듈이 제공된다. 앱 계층(201)에서 실행되는 애플리케이션 프로세스는 클라이언트로서 사용될 수 있고, 프레임워크 계층(202)에 의해 제공되는 각각의 시스템 서비스는 서버로서 사용될 수 있다. 바인더 드라이버는 Linux 커널 계층(204)에 위치할 수 있고, 바인더 서비스를 사용하여 통신하는 각 쌍의 프로세스(또는 스레드)의 식별자는 바인더 드라이버에 기록된다.
클라이언트(예를 들어, WeChat 프로세스)가 서버(예를 들어, 입력 관리자 서비스 스레드)에 액세스하여 관련 시스템 서비스를 호출하려는 경우, 클라이언트는 transact() 함수를 사용하여 바인더 드라이버를 호출할 수 있고, 바인더 드라이버는 호출 메시지를 서버의 시스템 서비스 스레드에 송신한다. 바인더 드라이버가 송신한 호출 메시지를 수신한 후, 서버의 시스템 서비스 스레드는 바인더 스레드를 시작하고, onTransact() 함수의 파라미터를 기반으로 서버의 서비스 코드를 실행하여 해당 시스템 서비스를 구현한다.
시스템 서비스 스레드가 다른 프로세스와 통신하는 경우, 시스템 서비스 스레드는 차단될 수 있거나, 시스템 서비스 스레드가 점유하는 잠긴 객체는 오랫동안 해제될 수 없다. 예를 들어, WeChat 애플리케이션의 프로세스가 실행 프로시저에서 무한 루프에 들어가면, WeChat 애플리케이션의 프로세스와 통신하는 시스템 서비스 스레드 A는 차단된다. 기존 워치독 메커니즘이 사용되는 경우, 이동 전화(100)는 재시작하도록 트리거된다. 결과적으로, 이동 전화(100)의 모든 현재 실행 데이터가 손실된다.
본 출원의 일부 실시 예들에서, 잠긴 객체가 점유되는 경우, 제1 타이머가 타이밍을 시작할 수 있도록 단말이 트리거될 수 있다. 제1 타이머가 만료되는 경우, 잠긴 객체가 여전히 점유되어 있는 경우, 잠긴 객체는 타임아웃된다. 이 경우, 단말은 잠긴 객체를 점유하는 시스템 서비스 스레드(예를 들어, 제1 시스템 서비스 스레드)의 식별자를 획득하도록 트리거될 수 있다. 또한, 단말은 제1 시스템 서비스 스레드의 식별자에 기초하여, 바인더 드라이버를 이용하여, 제1 시스템 서비스 스레드와 통신하는 타깃 애플리케이션 프로세스를 결정하고 타깃 애플리케이션 프로세스를 종료할 수 있다. 타깃 애플리케이션 프로세스가 종료된 후, 타깃 애플리케이션 프로세스와 통신하는 제1 시스템 서비스 스레드가 해제된다. 따라서, 제1 시스템 서비스 스레드에 의해 점유된 잠긴 객체 또한 해제되어, 요구 사항을 갖는 다른 시스템 서비스 스레드가 잠긴 객체를 계속 사용할 수 있다.
대안적으로, 본 출원의 일부 다른 실시 예들에서, 복수의 애플리케이션 프로세스가 단말 상에서 실행될 수 있고, 이들 애플리케이션 프로세스는 하나 이상의 시스템 서비스 스레드와 통신하여, 관련 시스템 서비스를 구현할 수 있다. 제1 애플리케이션 프로세스가 시스템 서비스 스레드(예를 들어, 제1 시스템 서비스 스레드)와 통신하는 경우, 제1 시스템 서비스 스레드는 다른 애플리케이션 프로세스(예를 들어, 제2 애플리케이션 프로세스)에 대한 서비스를 제공할 수 없다. 따라서, 제1 애플리케이션 프로세스가 제1 시스템 서비스 스레드를 점유한 후, 제2 타이머가 타이밍을 시작할 수 있도록 단말이 트리거될 수 있다. 제2 타이머가 만료되는 경우, 제1 시스템 서비스 스레드가 여전히 점유되어 있는 경우, 즉, 제1 시스템 서비스 스레드가 차단되어 있는 경우, 단말은 제1 시스템 서비스 스레드와 현재 통신하고 있는 특정 프로세스, 즉, 제1 애플리케이션 프로세스를 결정하고, 제1 애플리케이션 프로세스를 종료하도록 트리거될 수 있다. 제1 애플리케이션 프로세스가 종료된 후, 제1 애플리케이션 프로세스와 통신하는 제1 시스템 서비스 스레드가 해제되고, 후속하여 요구 사항을 갖는 다른 애플리케이션 프로세스는 해제된 제1 시스템 서비스 스레드와 통신하여 관련 시스템 서비스를 구현할 수 있다.
또한, 전술한 실시 예로부터 알 수 있는 바와 같이, 단말이 제1 시스템 서비스 스레드와 통신하는 애플리케이션 프로세스를 종료한 후, 단말을 실행하는 다른 시스템 서비스 스레드 또는 애플리케이션 프로세스는 영향을 받지 않으므로, 단말의 프레임 프리징 또는 스크린 프리징의 가능성을 감소시키고, 사용자 경험을 향상시킬 수 있다.
다른 실시 예에서, 시스템 서비스 프로세스 및 적어도 하나의 애플리케이션 프로세스는 단말 상에서 실행되고, 시스템 서비스 프로세스는 적어도 하나의 시스템 서비스 스레드를 포함한다. 적어도 하나의 시스템 서비스 스레드에서 타깃 시스템 서비스 스레드가 타임아웃되는 경우, 단말은 타깃 시스템 서비스 스레드와 통신하는 제1 애플리케이션 프로세스를 결정하고, 여기서 타깃 시스템 서비스 스레드의 타임아웃은, 타깃 시스템 서비스 스레드에 의해 점유되는 잠긴 객체가 미리 설정된 시간 내에 해제되지 않은 것 및 타깃 시스템 서비스 스레드가 차단된 것 중 적어도 하나를 포함하고, 단말은 제1 애플리케이션 프로세스를 종료한다.
본 출원의 일 실시 예는 시스템 서비스 타임아웃 처리 방법을 제공한다. 설명의 편의를 위해, 본 출원의 본 실시 예에서, 시스템 서비스 스레드의 타임아웃은, 시스템 서버 프로세스의 시스템 서비스 스레드에 의해 점유되는 잠긴 객체가 미리 설정된 시간 내에 해제되지 않음을 의미하거나, 시스템 서버 프로세스의 시스템 서비스 스레드의 차단 기간이 미리 설정된 기간에 도달함을 의미한다. 도 5에 도시된 바와 같이, 방법은 구체적으로 다음 단계들을 포함한다.
501. 단말은 타깃 시스템 서비스 스레드가 타임아웃 되는지 여부를 모니터링한다.
타깃 시스템 서비스 스레드는 시스템 서버 프로세스에서 실행되는 임의의 시스템 서비스 스레드, 예를 들어, 타깃 잠긴 객체를 점유하는 시스템 서비스 스레드(예를 들어, inputmanagerservice.this 또는 activitymanagerservice.this와 같은 잠긴 객체)일 수 있거나, 다른 스레드(또는 프로세스)와 통신하는 시스템 서비스 스레드일 수 있다. 이는 본 출원의 본 실시 예로 제한되지 않는다.
특히, 단말은 여전히 기존 워치독 모니터링 메커니즘을 사용할 수 있으며, 단말의 프로세서는 일부 시스템 서비스 스레드 및 시스템 서비스 스레드에 의해 점유되는 잠긴 객체를 모니터링한다.
예를 들어, 프로세서는, 워치독 스레드를 사용하여, 타깃 잠긴 객체가 미리 설정된 시간(예를 들어, 60 초) 내에 해제되는지 여부를 모니터링 할 수 있다. 타깃 잠긴 객체가 60 초 내에 해제되지 않는 경우, 이는 타깃 잠긴 객체를 점유하는 시스템 서비스 스레드(즉, 타깃 시스템 서비스 스레드)가 타임아웃됨, 즉, 타깃 시스템 서비스가 타임아웃됨을 나타낸다.
가능한 구현에서, 프로세서는 타깃 시스템 서비스 스레드가 애플리케이션 프로세스에 의해 점유되는지 여부를 모니터링 할 수 있고; 타깃 시스템 서비스 스레드가 애플리케이션 프로세스에 의해 점유되고 있고 점유 기간이 미리 설정된 임계값 이상인 것을 모니터링하는 경우, 타깃 시스템 서비스 스레드가 타임아웃된 것으로 결정할 수 있다.
다른 예를 들어, 프로세서는, 워치독 스레드를 사용하여, 시스템 서비스 스레드에 의해 보고되는 차단 이벤트가 존재하는지 여부를 추가로 모니터링 할 수 있다. 시스템 서비스 스레드에 의해 보고되는 차단 이벤트가 수신되는 경우, 시스템 서비스 스레드(이 경우, 시스템 서비스 스레드는 타깃 시스템 서비스 스레드임)가 차단됨, 즉, 타깃 시스템 서비스가 타임아웃됨을 나타낸다.
본 출원의 일부 실시 예들에서, 단말의 워치독 스레드는, 잠긴 객체를 점유하는 시스템 서비스 스레드를 순차적으로 폴링(poll)할 수 있다. 예를 들어, 서로 다른 시스템 서비스 스레드에 의해 각각 점유되는 5 개의 잠긴 객체가 현재 존재한다. 워치독 스레드는 5 개의 시스템 서비스 스레드에 전기 신호를 순차적으로 송신한다(즉, 피드 도그(feed dog)를 수행함, 피드 도그). 전기 신호를 수신하는 시스템 서비스 스레드는 미리 설정된 시간 내에 워치독 스레드에 응답을 반환해야 한다(즉, 킥 도그(kick dog)를 수행함, 킥 도그). 응답을 수신한 후, 워치독 스레드는 다음 시스템 서비스 스레드에 대해 순차적으로 피드 도그를 수행한다. 시스템 서비스 스레드(예를 들어, 시스템 서비스 스레드 A)가 미리 설정된 시간 내에 워치독 스레드에 대한 응답을 반환하지 않으면, 시스템 서비스 스레드 A에 의해 점유되는 잠긴 객체는 타임아웃된 것으로 결정할 수 있다. 이 경우, 시스템 서비스 스레드 A는 타깃 시스템 서비스 스레드이고, 시스템 서비스 스레드 A에 의해 점유되는 잠긴 객체는 타깃 잠긴 객체이다.
본 출원의 일부 실시 예들에서, 단말의 워치독 스레드는, 시스템 서비스 스레드가 차단되는지 여부를 검출하기 위해, 임의의 잠긴 객체를 점유하지 않는 다양한 시스템 서비스 스레드를 순차적으로 폴링할 수 있다. 예를 들어, 워치독 스레드는, 어떤 잠긴 객체를 점유하지 않는 현재 실행 중인 4 개의 시스템 서비스 스레드에 순차적으로 전기 신호를 송신할 수 있다(즉, 피드 도그를 수행함). 전기 신호를 수신하는 시스템 서비스 스레드는 미리 설정된 시간 내에 워치독 스레드에 응답을 반환해야 한다(즉, 킥 도그를 수행함). 시스템 서비스 스레드(예를 들어, 시스템 서비스 스레드 B)가 미리 설정된 시간 내에 워치독 스레드에 응답을 반환하지 않으면, 시스템 서비스 스레드 B는 차단된 것으로 결정될 수 있다.
502. 타깃 시스템 서비스 스레드가 타임아웃되는 경우, 단말은 타깃 시스템 서비스 스레드의 식별자를 획득한다.
타깃 시스템 서비스 스레드의 차단으로 인해 타깃 시스템 서비스 스레드의 타임아웃이 발생하면, 타깃 시스템 서비스 스레드는 차단 이벤트를 워치독 스레드에 보고한다. 차단 이벤트는 차단 이벤트의 식별자, 예를 들어, 타깃 시스템 서비스 스레드의 ID 번호를 전달하여, 단말이 타깃 시스템 서비스 스레드의 식별자를 획득할 수 있다. 대안적으로, 단말은 getThreadId() 함수를 호출하여 타깃 시스템 서비스 스레드의 ID 번호를 획득할 수 있다.
타깃 잠긴 객체의 타임아웃으로 인해 타깃 시스템 서비스 스레드의 타임아웃이 발생하는 경우, 이는 타깃 잠긴 객체를 점유하는 타깃 시스템 서비스 스레드가 시스템 자원(예를 들어, 메모리 자원)에 대한 점유를 계속하고 해당 시스템 자원을 해제하지 않음을 나타낸다. 따라서, 다른 서비스 스레드는, 관련 서비스를 구현하기 위해, 타깃 잠긴 객체를 순차적으로 획득할 수 없다. 이 경우, 단말의 프레임 프리징 또는 스크린 프리징이 발생할 수 있다.
따라서, 타깃 잠긴 객체가 타임아웃되는 경우, 단말은, 자바 네이티브 인터페이스(Java Native Interface, JNI) 인터페이스를 호출함으로써, 타깃 잠긴 객체를 점유하는 특정 타깃 시스템 서비스 스레드의 식별자를 검색할 수 있다. 예를 들어, 단말의 프로세서는 JNI 인터페이스의 GetLockOwnerThreadId() 함수를 호출할 수 있다. 함수의 반환 값은, 타깃 잠긴 객체를 점유하는 타깃 시스템 서비스 스레드의 ID 번호(즉, 타깃 시스템 서비스 스레드의 식별자)이다. 예를 들어, GetLockOwnerThreadId() 함수의 반환 값이 01이고, 01은 윈도우 관리자 서비스(window manager service) 스레드의 ID 번호인 경우, 타깃 시스템 서비스 스레드는 윈도우 관리자 서비스 스레드이다.
물론, 타깃 시스템 서비스 스레드의 식별자는 대안적으로, 단말에서 스레드를 고유하게 식별할 수 있는 타깃 시스템 서비스 스레드의 이름과 같은 파라미터일 수 있음을 이해할 수 있다. 이는 본 출원의 본 실시 예로 제한되지 않는다.
503. 단말은, 타깃 시스템 서비스 스레드의 식별자에 기초하여, 타깃 시스템 서비스 스레드와 통신하는 애플리케이션 프로세스를 질의한다.
타깃 시스템 서비스 스레드가 타임아웃되는 이유는, 타깃 시스템 서비스 스레드와 통신하는 애플리케이션 프로세스가 차단되거나 무한 루프에 들어가는 등 때문일 수 있다. 따라서, 단계 503에서, 타임아웃 타깃 시스템 서비스 스레드를 결정한 후, 단말의 프로세서는, 타깃 시스템 서비스 스레드의 식별자에 기초하여 메모리에서, 타깃 시스템 서비스 스레드와 통신하는 특정 애플리케이션 프로세스를 추가로 질의할 수 있다.
타깃 시스템 서비스 스레드가 바인더 서비스를 사용하여 애플리케이션 프로세스와 통신하는 예가 사용된다. 여전히 도 4에 도시된 바와 같이, 각 시스템 서비스 스레드의 ID 번호와 같은 등록 정보가 바인더 드라이버에 기록되기 때문에, 시스템 서버 프로세스에서 각 시스템 서비스 스레드는 미리 바인더 드라이버에 등록할 수 있다.
예를 들어, 바인더 드라이버에 등록하는 경우, 윈도우 관리자 서비스 스레드는 윈도우 관리자 서비스 스레드의 ID 번호 및 윈도우 관리자 서비스 스레드의 함수, 예를 들어, 윈도우(window)를 생성하는 함수를 보고할 수 있다. 애플리케이션 프로그램 계층(201)에서의 앱 1 프로세스가 순차적으로 생성 함수를 사용할 필요가 있는 경우, 윈도우 관리자 서비스 스레드와 통신하기 위한 프로세스 간 통신 요청이 바인더 드라이버로 개시될 수 있다. 프로세스 간 통신 요청을 수신한 후, 바인더 드라이버는, 등록 정보에 기초하여, 윈도우 관리자 서비스 스레드를 요청하여 해당 윈도우를 생성하여, 앱 1 프로세스와 윈도우 관리자 서비스 스레드 사이의 IPC 통신 프로시저를 완료할 수 있다.
다시 말해서, 바인더 드라이버는 각 시스템 서비스 스레드와, IPC 통신을 수행하는 애플리케이션 프로세스 사이의 대응을 유지하도록 구성될 수 있다.
예를 들어, 표 1에 도시된 바와 같이, 서드 파티 애플리케이션 프로세스(또는 데몬 프로세스)의 프로세스 간 통신 요청을 수신한 때마다, 바인더 드라이버는, 전술한 등록 정보에, 서드 파티 애플리케이션 프로세스(또는 데몬 프로세스)와, 서드 파티 애플리케이션 프로세스(또는 데몬 프로세스)와 통신하는 시스템 서비스 사이의 대응을 기록할 수 있다. 단계 503에서, 타깃 시스템 서비스 스레드의 식별자를 결정한 후, 단말은, 표 1에 도시된 등록 정보로부터, 타깃 시스템 서비스 스레드(예를 들어, 윈도우 관리자 서비스 스레드)와 통신하는 애플리케이션 프로세스가 WeChat 애플리케이션 프로세스임을 발견할 수 있다. WeChat 애플리케이션 프로세스의 식별자는 11이다.
[표 1]
또한, 타깃 시스템 서비스 스레드가 등록 정보에 기록되지 않은 경우, 이는 타깃 시스템 서비스 스레드가 IPC 통신을 수행하지 않을 수 있거나, 타깃 시스템 서비스 스레드가 다른 방법으로(예를 들어, 소켓 서비스를 사용하여) 서드 파티 애플리케이션 프로세스(또는 데몬 프로세스)와 통신할 수 있음을 나타낸다.
예를 들어, 타깃 시스템 서비스 스레드는, 소켓 서비스를 사용하여 애플리케이션 프로세스와 통신할 수 있다. 본 출원의 본 실시 예에서, 시스템 서비스 스레드가 소켓 서비스에 기초하여 애플리케이션 프로세스와 통신하는 경우, 단말은 애플리케이션 프로세스의 식별자를 능동적으로 기록할 수 있다. 이러한 방식으로, 타깃 시스템 서비스가 타임아웃되는 경우, 예를 들어, 타깃 시스템 서비스 스레드와 애플리케이션 프로세스 사이의 소켓 연결 설정이 타임아웃되는 경우, 단말은 타깃 시스템 서비스 스레드와 통신하는 애플리케이션 프로세스에 대해 기록된 식별자를 조회하여, 타깃 시스템 서비스의 타임아웃을 유발하는 특정 애플리케이션 프로세스를 결정할 수 있다.
504. 단말은, 타깃 시스템 서비스 스레드의 타임아웃에 의해 야기되는 프레임 프리징을 제거하기 위해, 전술한 애플리케이션 프로세스를 종료한다.
단말이 타깃 시스템 서비스 스레드와 통신하는 특정 애플리케이션 프로세스를 결정한 후, 단말의 프로세서는 애플리케이션 프로세스를 종료(킬(kill))할 수 있다. 애플리케이션 프로세스가 종료된 후, 애플리케이션 프로세스와 통신하는 타깃 시스템 서비스 스레드가 해제된다. 이러한 방식으로, 타깃 시스템 서비스 스레드에 의해 점유되는 타깃 잠긴 객체가 해제될 수 있고, 원래 차단된 타깃 시스템 서비스 스레드는 해당 시스템 서비스의 제공을 계속할 수 있으므로, 시스템 서비스의 타임아웃으로 인한 차단 또는 스크린 프리징의 가능성을 감소시킬 수 있다.
또한, 단말이 애플리케이션 프로세스를 종료한 후, 프로세서는 애플리케이션 프로세스를 추가로 재시작, 예를 들어, WeChat 애플리케이션을 재시작할 수 있어, 사용자는 재시작된 앱에 대한 동작을 계속할 수 있다.
이러한 방식으로, 애플리케이션 프로세스가 종료 또는 재시작된 후, 애플리케이션 프로세스와 통신하는 타깃 시스템 서비스 스레드에 의해 점유되는 타깃 잠긴 객체가 해제되고, 타깃 시스템 서비스 스레드의 차단이 제거되고, 단말의 다른 시스템 서비스의 실행 프로시저는 영향을 받지 않는다.
물론, 애플리케이션 프로세스를 직접 종료 또는 재시작하는 것 외에도, 본 발명에 속하는 기술 분야에서 통상의 지식을 가진 자는 애플리케이션 프로세스를 복원하기 위해 복원 정책을 대안적으로 설정할 수 있다. 예를 들어, 애플리케이션 프로세스의 우선 순위에 기초하여, 복수의 시스템 서비스 스레드가 타임아웃되는 경우, 단말은 우선 순위가 낮은 애플리케이션 프로세스를 직접 종료하고, 우선 순위가 높은 애플리케이션 프로세스를 재시작할 수 있다.
또한, 애플리케이션 프로세스를 종료하는 경우, 단말은 현재 애플리케이션 프로세스의 실행 경과를 추가로 기록할 수 있다. 이러한 방식으로, 애플리케이션 프로세스를 재시작한 후, 단말은 기록된 실행 경과에 기초하여 애플리케이션 프로세스를 원래 상태로 복원할 수 있다. 예를 들어, WeChat 애플리케이션 프로세스는 애플리케이션 프로세스이고, WeChat 애플리케이션 프로세스를 종료하는 경우, 단말은 사용자 A와의 채팅 정보를 실행 경과로서 기록할 수 있다. 이러한 방식으로, WeChat 애플리케이션 프로세스를 재시작하는 경우, 단말은 기록된 실행 경과에 기초하여 재시작 전의 상태로 WeChat 애플리케이션 프로세스를 상태를 복원하여, 애플리케이션 프로세스가 재시작되기 전후에 sa 서비스가 중단되지 않도록 할 수 있으므로, 사용자 경험을 향상시킬 수 있다.
또한, 애플리케이션 프로세스를 복원하는 경우, 단말은, 사용자가 참을성 있게 기다리도록 사용자를 요청하기 위해 UI 인터페이스를 사용하여 사용자에게 프롬프트 메시지를 제공하여, 단말이 현재 프리징 상태에 있음을 사용자가 잘못 판단하는 것을 방지할 수 있다. 예를 들어, 도 6의 (a)에 도시된 바와 같이, 애플리케이션 프로세스를 재시작하는 경우, 단말은 애플리케이션 프로세스가 재시작되고 있음을 사용자에게 통지할 수 있다. 도 6의 (b)에 도시된 바와 같이, 애플리케이션 프로세스를 종료한 후, 단말은 애플리케이션 프로세스에 의해 야기된 시스템 서비스의 타임아웃으로 인해 애플리케이션 프로세스가 종료되었음을 사용자에게 통지할 수 있다. 대안적으로, 도 6의 (c)에 도시된 바와 같이, 타깃 시스템 서비스의 타임아웃을 야기하는 애플리케이션 프로세스를 결정한 후, 단말은 프롬프트 메시지 대화 상자에서 애플리케이션 프로세스의 종료 여부를 나타내는 프롬프트 메시지를 추가로 표시할 수 있다. 사용자가 애플리케이션 프로세스를 종료하기로 결정하면, 단말은 애플리케이션 프로세스를 종료한다.
대안적으로, 애플리케이션 프로세스를 종료하는 경우, 단말은 애플리케이션 프로세스의 애플리케이션 인터페이스 스냅 샷으로서 UI 인터페이스 상에 제공되는 애플리케이션 인터페이스 스냅 샷을 추가로 저장할 수 있다. 예를 들어, 애플리케이션 프로세스가 WeChat 프로세스인 경우, 도 7에 도시된 바와 같이, WeChat 애플리케이션의 애플리케이션 인터페이스(71)의 스냅 샷으로서 현재 UI 인터페이스에 디스플레이된 애플리케이션 인터페이스(71)의 스냅 샷은 WeChat 프로세스가 종료되기 전에 로컬에 저장될 수 있다. WeChat 프로세스를 재시작하는 경우, 여전히 도 7에 도시된 바와 같이, 단말은 먼저 WeChat 프로세스가 종료될 때 저장된 애플리케이션 인터페이스(71)의 스냅 샷을 디스플레이하고, 동시에 백그라운드에서 WeChat 프로세스를 시작할 수 있다. 예를 들어, 단말은 애플리케이션 인터페이스 스냅 샷을 2 초 동안 디스플레이하고, 애플리케이션 인터페이스 스냅 샷을 디스플레이할 때 동시에 WeChat 프로세스를 재시작한다. 이러한 방식으로, WeChat 프로세스를 재시작하는 시간을 시각적으로 단축하여, 사용자 경험을 향상시킬 수 있다.
대안적으로, 시스템 서비스가 타임아웃되는 때마다, 단말은 타임아웃을 야기하는 특정 시스템 서비스 및 애플리케이션 프로세스를 기록할 수 있다. 애플리케이션 프로세스가 자주 타임아웃을 발생시키는 경우, 이는 애플리케이션 프로세스의 실행으로 인한 프레임 프리징 위험이 상대적으로 높다는 것을 나타낸다. 이후에, 애플리케이션 프로세스를 실행하는 경우, 단말은 추가 시스템 자원을 애플리케이션 프로세스에 할당하고, 현재의 중복 프로세스를 소거하는 등을 통해 애플리케이션 프로세스에 의해 야기되는 타임아웃을 방지할 수 있다. 물론, 단말은 매번 타임아웃을 야기하는 특정 실행 시나리오, 예를 들어, 지불 시나리오 또는 호출 시나리오에 관한 통계를 추가로 수집하여, 단말은 프레임 프리징 위험이 비교적 높은 후속 시나리오를 예측하고, 프레임 프리징 위험이 상대적으로 높은 시나리오에서, 단말은 애플리케이션 프로세스로 인해 야기되는 타임아웃을 사전에 예방한다.
단말은, 매번 타임아웃을 야기하는 특정의 기록된 시스템 서비스 및 애플리케이션 프로세스를 이력 데이터로서 서버에 보고할 수 있고, 서버는 빅 데이터 통계에 기초하여 단말에 대해, 사전에 예방할 필요가 있고 타임아웃을 쉽게 유발하는 애플리케이션 프로세스 또는 예측 정책을 결정한다. 이는 본 출원의 본 실시 예로 제한되지 않는다.
단계 501 내지 단계 504에서의 단말의 동작은, 시스템 서비스 타임아웃 처리 방법을 완료하도록 단말에 지시하기 위해 메모리(103)에 저장된 명령 또는 소프트웨어를 실행함으로써 도 1의 프로세서(101)에 의해 수행될 수 있다.
임의의 시스템 서비스 스레드 및 애플리케이션 프로세스가 바인더 서비스 프로세스에 기초하여 프로세스 간 통신을 수행하는 경우, 단말은 프로세스 간 통신 서비스를 구현하기 위해 바인더 스레드를 할당한다. 바인더 스레드의 수량이 너무 많으면, 바인더 서버의 바인더 자원이 소진된다. 결과적으로, 프로세스 간 통신이 필요한 다른 프로세스는 바인더 스레드를 적용할 수 없다. 따라서, 본 출원의 일 실시 예는 시스템 서비스 타임아웃 처리 방법을 제공한다. 도 8에 도시된 바와 같이, 방법은 다음 단계들을 포함한다.
801. 바인더 스레드의 총량이 미리 설정된 값에 도달하는 경우, 단말은 각 바인더 스레드에 의해 제공되는 애플리케이션 프로세스를 결정한다.
구체적으로, 단말의 프로세서는, 현재 단말에서 바인더 서비스를 제공하는 바인더 스레드의 총량을 카운트할 수 있다. 일반적으로, 운영 체제에서 지원할 수 있는 바인더 스레드의 수량은 고정되어 있다(예를 들어, 16). 따라서, 카운트된 바인더 스레드의 총량이 16 인 경우, 즉 바인더 스레드가 풀(full)인 경우, 프로세서는 16 개의 바인더 스레드 각각에 의해 제공되는 애플리케이션 프로세스를 추가로 결정하도록 트리거될 수 있다.
예를 들어, 바인더 드라이버가 서드 파티 애플리케이션 프로세스(또는 데몬 프로세스)에 의해 송신된 프로세스 간 통신 요청을 수신한 때마다, 바인더 드라이버는, 바인더 자원 풀로부터, 하나 이상의 바인더 스레드를 서드 파티 애플리케이션 프로세스(또는 데몬 프로세스)에 할당하여, 프로세스 간 통신 서비스를 구현한다. 표 2에 도시된 바와 같이, 시스템 서비스 스레드와, 서로 통신하는 서드 파티 애플리케이션 프로세스(또는 데몬 프로세스)의 각 쌍 사이의 대응에 더하여, 바인더 드라이버는, 등록 정보에, 시스템 서비스 스레드 및 서드 파티 애플리케이션 프로세스의 각 쌍에 대해 IPC 서비스를 제공하는 바인더 스레드의 식별자를 추가로 기록할 수 있다. 따라서, 단계 801에서, 단말은, 표 2에 도시된 등록 정보에서, 각각의 바인더 스레드에 의해 제공되는 애플리케이션 프로세스를 질의할 수 있다.
[표 2]
802. 단말은 모든 애플리케이션 프로세스 각각에 의해 점유되는 바인더 스레드의 수량을 카운트한다.
하나의 애플리케이션 프로세스가, 프로세스 간 통신을 수행하기 위해, 복수의 바인더 스레드를 점유할 수 있기 때문에, 프로세서는, 각각의 바인더 스레드에 의해 제공되는 애플리케이션 프로세스에 기초하여, 하나의 애플리케이션 프로세스에 의해 점유되는 바인더 스레드의 수량을 카운트할 수 있다. 예를 들어, 전술한 16 개의 바인더 스레드에서, WeChat 애플리케이션 프로세스는 8 개의 바인더 스레드를 점유하고, 음악 애플리케이션 프로세스는 5 개의 바인더 스레드를 점유하며, 브라우저 애플리케이션 프로세스는 3 개의 바인더 스레드를 점유한다.
803. 단말은, 각각의 애플리케이션 프로세스에 의해 점유되는 바인더 스레드의 수량에 기초하여 적어도 하나의 애플리케이션 프로세스를 종료한다.
예를 들어, 단말은 WeChat 애플리케이션 프로세스에 의해 점유되는 8 개의 바인더 스레드를 해제하기 위해, 가장 많은 수량의 바인더 스레드를 점유하는 애플리케이션 프로세스, 예를 들어, WeChat 애플리케이션 프로세스를 종료 또는 재시작할 수 있다. 해제된 바인더 스레드는 프로세스 간 통신을 기다리는 다른 프로세스(또는 다른 스레드)에 의해 사용될 수 있다.
대안적으로, 단말은 현재 모두 점유되는 바인더 스레드를 해제하기 위해 애플리케이션 프로세스를 추가로 종료하거나 재시작할 수 있으며, 여기서 애플리케이션 프로세스에 의해 점유되는 바인더 스레드의 수량은 미리 설정된 값보다 크다. 대안적으로, 애플리케이션 프로세스의 우선 순위에 기초하여, 단말은 더 낮은 우선 순위를 갖는 애플리케이션 프로세스를 추가로 해제하여, 더 낮은 우선 순위를 갖는 애플리케이션 프로세스에 의해 점유되는 바인더 스레드가 해제되고; 더 높은 우선 순위를 갖는 애플리케이션 프로세스가 종료된(또는 재시작된) 후에 단말의 실행 상태 및 사용자 경험이 영향을 받는 것을 피하기 위해, 더 높은 우선 순위를 갖는 애플리케이션 프로세스를 예약할 수 있다.
물론, 사용자는 대안적으로 바인더 스레드가 모두 점유될 때 종료될 애플리케이션 프로세스의 화이트 리스트 또는 블랙 리스트를 수동으로 설정할 수 있다. 이러한 방식으로, 바인더 스레드가 모두 점유되는 경우, 화이트 리스트의 애플리케이션 프로세스는 예약될 수 있는 반면 블랙 리스트의 애플리케이션 프로세스는 종료되거나 재시작될 수 있다.
본 발명에 속하는 기술 분야에서 통상의 지식을 가진 자는, 바인더 스레드가 모두 점유되는 경우, 실제 경험 또는 실제 적용 시나리오에 기초하여 애플리케이션 프로세스 복원 정책을 설정할 수 있음을 이해할 수 있을 것이다. 이는 본 출원의 본 실시 예로 제한되지 않는다.
또한, 단계 801 내지 단계 803에서의 단말의 동작은 시스템 서비스 타임아웃 처리 방법을 완료하도록 단말에 지시하기 위해 메모리(103)에 저장된 명령 또는 소프트웨어를 실행함으로써 도 1의 프로세서(101)에 의해 수행될 수 있다.
또한, 바인더 스레드가 모두 점유될 때 발생하는 단말의 프레임 프리징을 방지하기 위해, 본 출원의 일 실시 예는 시스템 서비스 타임아웃 처리 방법을 추가로 제공한다. 도 9에 도시된 바와 같이, 방법은 다음 단계들을 포함한다.
901. 단말은 타깃 애플리케이션 프로세스에 의해 점유되는 바인더 스레드의 수량을 카운트한다.
타깃 애플리케이션 프로세스는 단말의 앱 계층에 설치된 임의의 애플리케이션 프로세스일 수 있다. 이는 본 출원의 본 실시 예로 제한되지 않는다.
하나의 프로세스는 일반적으로 복수의 스레드를 포함하므로, 타깃 애플리케이션 프로세스가 실행되는 경우 다른 프로세스(예를 들어, 시스템 서비스 프로세스)와 통신할 필요가 있다. 이 경우, 바인더 드라이버는 타깃 애플리케이션 프로세스에서 프로세스 간 통신을 구현하기 위해 바인더 스레드를 생성한다. 따라서, 단계 701에서, 단말은, 프로세서를 사용하여, 타깃 애플리케이션 프로세스에 의해 현재 점유되는 바인더 스레드의 수량을 주기적으로 카운트할 수 있다.
예를 들어, 단말은 IPC 스레드 상태(IPC Thread State)의 transact() 함수의 엔트리(entry)에서, 타깃 애플리케이션 프로세스에 의해 생성되는 바인더 스레드를 카운트하여, 타깃 애플리케이션 프로세스에 의해 점유되는 바인더 스레드의 수량을 획득할 수 있다.
902. 타깃 애플리케이션 프로세스에 의해 점유되는 바인더 스레드의 수량이 제1 임계값 이상인 경우, 단말은 이들 바인더 스레드에 의해 호출되는 특정 API에 대한 통계를 수집하기 시작한다.
API는 하나 이상의 사전 정의된 기능이고, 애플리케이션 프로그램 및 개발자가 소프트웨어 또는 하드웨어를 기반으로 루틴 그룹에 액세스할 수 있는 기능을 제공한다. 이러한 방식으로, 애플리케이션 프로그램은 소스 코드에 액세스할 필요가 없고, 개발자는 단말 내부의 작동 메커니즘의 세부 사항을 이해하지 않고도 해당 기능을 구현할 수 있다. 특히, API는 Linux 또는 Windows 시스템의 임의의 API, 예를 들어, 파일 열기에 사용되는 API: open{}, 쓰기에 사용되는 API: write{} 또는 메시지 큐에 액세스하기 위해 사용되는 API: msgget{}일 수 있다. 이는 본 출원의 본 실시 예로 제한되지 않는다.
예를 들어, 제1 임계값은 8일 수 있다. 구체적으로, 타깃 애플리케이션 프로세스에 의해 점유되는 바인더 스레드의 수량이 8에 도달하는 경우, 바인더 스레드 자원이 소진될 잠재적인 위험이 존재한다. 따라서, 바인더 스레드 자원의 소진을 피하기 위해, 단말의 프로세서는, 이들 바인더 스레드에 의해 호출되는 특정 API에 대한 통계를 수집함으로써, 현재 타깃 애플리케이션에 의해 점유된 이들 바인더 스레드가 악의적으로 점유되어 있는지 여부를 추가로 결정할 수 있다.
예를 들어, 각 핸들러 객체(handler object)에 대해 카운터가 설정될 수 있으며, 단말은 핸들러 객체를 호출하여 API를 호출한다. 따라서, 타깃 애플리케이션 프로세스에 의해 점유되는 바인더 스레드의 수량이 8 이상인 경우, 단말은 각각의 핸들러 객체의 카운터가 카운팅을 시작하도록 트리거할 수 있다. 바인더 스레드가 하나의 핸들러 객체를 호출할 때마다, 핸들러 객체의 카운터는 1씩 증가한다. 이러한 방식으로, 각각의 API 객체가 호출되는 횟수가 카운트될 수 있다.
대안적으로, 단말은, 각각의 바인더 스레드와 바인더 스레드에 의해 호출되는 API 사이의 대응을 메모리에 추가로 기록할 수 있다. 따라서, 표 3에 도시된 바와 같이, 단말은, 해당 대응에 기초하여, 타깃 애플리케이션 프로세스에 의해 점유된 각각의 바인더 스레드에 의해 구체적으로 호출되는 API에 대한 통계를 수집할 수 있다.
[표 3]
타깃 애플리케이션 프로세스에 의해 점유되는 바인더 스레드의 수량은, 동일한 순간에 점유되는 바인더 스레드의 수량일 수 있거나, 또는 미리 정해진 시간 기간 내에(예를 들어, 3 초 내에) 점유되는 바인더 스레드의 수량일 수 있음에 유의해야 한다. 이는 본 출원의 본 실시 예로 제한되지 않는다.
903. API(즉, 타깃 API)가 호출되는 횟수가 제2 임계값보다 큰 경우, 단말은 타깃 애플리케이션 프로세스에 대한 새로운 바인더 스레드 생성을 중단한다.
예를 들어, 제2 임계값은 16일 수 있다. 구체적으로, 동일한 API(즉, 대상 API)를 호출하는 바인더 스레드의 수량이 16보다 큰 경우, 이는 대상 API의 로드가 상대적으로 높으며, 바인더 스레드가 대상 API를 악의적으로 호출할 위험이 존재할 수 있음을 나타낸다. 이 경우, 바인더 스레드 자원의 사용률은 상대적으로 높으며, 바인더 스레드는 단일 API를 빈번하게 호출한다. 따라서, 모든 점유되는 바인더 스레드로 인해 야기되는 차단 및 프레임 프리징을 피하기 위해, 타깃 애플리케이션 프로세스가 새로운 바인더 스레드를 생성하도록 바인더 드라이버에 요청하는 경우, 바인더 드라이버는 타깃 애플리케이션 프로세스의 요청에 대해 응답하는 것을 중지하고, 생성될 바인더 스레드를 대기 상태로 설정하고, 바인더 스레드 자원이 충분할 때 타깃 애플리케이션에 대해 새로운 바인더 스레드를 생성할 수 있다.
선택적으로, 생성될 바인더 스레드를 대기 상태로 설정하는 경우, 단말은 새로 생성된 바인더 스레드의 실행 상태를 기록하기 위해 로그(log)를 추가로 삽입하여, 개발자가 기록된 로그에 기초하여, 타깃 애플리케이션 프로세스에서 프레임 프리징이 발생하는 원인을 식별할 수 있도록 할 수 있다.
이와 유사하게, 타깃 API가 호출되는 횟수는, 타깃 API가 동시에 호출되는 횟수일 수 있거나, 미리 설정된 시간 기간 내(예를 들어, 3 초 이내)에 타깃 API가 호출되는 횟수일 수 있다 이는 본 출원의 본 실시 예로 제한되지 않는다.
904. 타깃 애플리케이션 프로세스에 의해 점유되는 바인더 스레드의 수량이 제1 임계값보다 작으면, 단말은 타깃 애플리케이션에 대한 새로운 바인더 스레드를 생성한다.
점유된 바인더 스레드가 해제된 후, 타깃 애플리케이션 프로세스가 점유하는 바인더 스레드의 수량은 감소한다. 수량이 제1 임계값보다 작은 값으로 감소하는 경우, 이는 현재 타깃 애플리케이션에 의해 사용될 수 있는 사용 가능한 바인더 스레드가 존재함을 나타낸다. 따라서, 단말은 생성될 바인더 스레드의 상태를 대기 상태로부터 생성 상태로 설정하여, 단계 703에서 생성될 바인더 스레드를 웨이크업하고, 바인더 스레드 생성을 시작할 수 있다.
또한, 타깃 애플리케이션 프로세스에 의해 점유되는 바인더 스레드가 미리 정해진 시간 기간 내에 해제되지 않는 경우, 생성될 바인더 스레드는 대기 상태를 유지하며, 생성될 수 없다. 이 경우, 타깃 애플리케이션 프로세스는 ANR(Application Not Responding) 메커니즘에 따라, 타깃 애플리케이션 프로세스가 계속 실행되도록 허용할지 또는 타깃 애플리케이션 프로세스를 강제 종료할지에 대해 사용자에게 프롬프트할 수 있다.
다른 가능한 구현에서, 타깃 애플리케이션 프로세스에 의해 점유되는 바인더 스레드의 수량으로서 단계 701에서 카운트되는 수량이 제1 임계값 이상인 경우, 예를 들어, 타깃 애플리케이션 프로세스에 의해 점유되는 바인더 스레드의 수량이 8보다 큰 경우, 이 경우에, 비교적 많은 양의 바인더 스레드가 점유되기 때문에, 즉, 바인더 스레드 자원이 소진되는 잠재적 위험이 있기 때문에, 단말은 단계 703을 수행하도록, 즉, 타깃 애플리케이션 프로세스에서 새로 생성된 바인더 스레드 실행을 중지하고, 생성될 바인더 스레드를 대기 상태로 설정하고, 바인더 스레드 자원이 충분할 때(예를 들어, 타깃 애플리케이션 프로세스에 의해 점유되는 바인더 스레드의 수량이 제1 임계값보다 작은 경우) 새로운 바인더 스레드를 생성하도록 직접 트리거될 수 있다. 이것은 본 출원의 본 실시 예로 제한되지 않는다.
단계(901 내지 904)에서의 단말의 동작은, 시스템 서비스 타임아웃 처리 방법을 완료하기 위해 메모리(103)에 저장된 명령 또는 소프트웨어를 실행함으로써 도 1의 프로세서(101)에 의해 수행될 수 있다.
전술한 기능을 구현하기 위해, 단말 등은 기능을 수행하기 위한, 대응하는 하드웨어 구조 및/또는 소프트웨어 모듈을 포함하는 것으로 이해될 수 있다. 본 발명에 속하는 기술 분야에서 통상의 지식을 가진 자는 본 명세서에 개시된 실시 예들에서 설명되는 예와 조합하여, 유닛, 알고리즘 및 단계가 하드웨어 또는 하드웨어와 컴퓨터 소프트웨어의 조합에 의해 구현될 수 있음을 쉽게 인식해야 한다. 기능이 컴퓨터 소프트웨어에 의해 구동되는 하드웨어에 의해 수행되는지 또는 하드웨어에 의해 수행되는지는 특정 응용 및 기술 솔루션의 설계 제약에 의존적이다. 본 발명에 속하는 기술 분야에서 통상의 지식을 가진 자는 각각의 특정 애플리케이션에 대해 설명된 기능을 구현하기 위해 상이한 방법을 사용할 수 있지만, 구현이 본 출원의 실시 예들의 범위를 벗어나는 것으로 간주되어서는 안 된다.
본 출원의 실시 예들에서, 단말은 전술한 방법 예에 기초하여 기능 모듈로 분할될 수 있다. 예를 들어, 각각의 기능 모듈은 각각의 대응하는 기능에 기초하여 분할을 통해 획득될 수 있거나, 2 개 이상의 기능이 하나의 처리 모듈에 통합될 수 있다. 통합 모듈은 하드웨어 형태로 구현될 수 있거나, 소프트웨어 기능 모듈 형태로 구현될 수 있다. 본 출원의 본 실시 예에서, 모듈 분할은 예시적인 것이며, 단지 논리적 기능 분할이라는 점에 유의해야 한다. 실제 구현에서, 다른 분할 방식이 사용될 수 있다.
각 기능별 모듈이 각 기능에 기초한 구분을 통해 획득되는 경우, 도 10은 전술한 실시 예들에서의 단말의 가능한 개략 구조도이다. 단말은 타임아웃 검출 유닛(1001), 결정 유닛(1002), 타임아웃 처리 유닛(1003) 및 디스플레이 유닛(1004)을 포함한다.
타임아웃 검출 유닛(1001)은 도 5의 프로시저(501)를 수행하기 위해 단말을 지원하도록 구성된다. 결정 유닛(1002)은 도 5의 프로시저(502 및 503), 도 8의 프로시저(801 및 802), 도 9의 프로시저(901 및 902)를 수행하기 위해 단말을 지원하도록 구성된다. 타임아웃 처리 유닛(1003)은 도 5의 프로시저(504), 도 8의 프로시저(803), 도 9의 프로시저(903 및 904)를 수행하기 위해 단말을 지원하도록 구성된다. 디스플레이 유닛(1004)은 타깃 시스템 서비스 스레드가 타임아웃된 이유를 디스플레이하거나, 타깃 애플리케이션 프로세스를 종료하는 프롬프트 메시지를 디스플레이하도록 구성된다. 전술한 방법 실시 예들에서의 단계에 대한 모든 관련된 내용은, 대응하는 기능 모듈에 대한 기능 설명에서 인용될 수 있으며, 세부 내용에 대해서는 여기에서 다시 설명하지 않는다.
통합 유닛이 사용되는 경우, 타임아웃 검출 유닛(1001), 결정 유닛(1002) 및 타임아웃 처리 유닛(1003)이 처리 모듈에 통합될 수 있고, 디스플레이 유닛(1004)은 디스플레이 모듈로서 사용된다.
이 경우, 도 11은 전술한 실시 예들에서의 단말의 가능한 개략 구조도이다. 처리 모듈(1101)은 단말의 동작을 제어 및 관리하도록 구성된다. 디스플레이 모듈(1102)은 사용자에 의해 입력된 정보 또는 사용자에게 제공되는 정보 및 단말의 다양한 메뉴를 디스플레이하도록 구성된다. 또한, 단말은 명령 또는 데이터를 저장하도록 구성된 저장 모듈(1103), 다른 단말 디바이스와 통신하도록 구성된 통신 모듈(1104) 등을 더 포함할 수 있다.
예를 들어, 처리 모듈(1101)은 중앙 처리 장치(Central Processing Unit, CPU), GPU, 범용 프로세서, 디지털 신호 프로세서(Digital Signal Processor, DSP)와 ASIC(Application-Specific Integrated Circuit), FPGA(Field Programmable Gate Array), 또는 다른 프로그램 가능한 논리 디바이스, 트랜지스터 논리 디바이스, 하드웨어 구성 요소 또는 이들의 임의의 조합과 같은 프로세서 또는 컨트롤러일 수 있다. 처리 모듈은 본 출원에 개시된 내용을 참조하여 설명되는 다양한 예시적인 논리 블록, 모듈 및 회로를 구현 또는 실행할 수 있다. 대안적으로, 프로세서는 컴퓨팅 기능을 구현하는 프로세서의 조합, 예를 들어, 하나 이상의 마이크로 프로세서의 조합, 또는 DSP와 마이크로 프로세서의 조합일 수 있다.
디스플레이 모듈(1102)은 디스플레이일 수 있으며, 구체적으로, 디스플레이는 액정 디스플레이, 유기 발광 다이오드 등의 형태로 구성될 수 있다. 또한, 터치패드는 디스플레이 상에 추가로 통합될 수 있고, 디스플레이 상에서 또는 디스플레이 근처에서 터치 이벤트를 수집하고, 수집된 터치 정보를 다른 구성 요소(예를 들어, 프로세서)에 송신하도록 구성된다.
저장 모듈(1103)은 메모리일 수 있다. 메모리는 고속 랜덤 액세스 메모리(random access memory, RAM)를 포함할 수 있고, 비 휘발성 메모리, 예를 들어, 자기 디스크 저장 디바이스, 플래시 메모리 디바이스 또는 다른 휘발성 고체 메모리를 더 포함할 수 있다.
통신 모듈(1104)은 송수신기, 송수신기 회로, 입력/출력 디바이스, 통신 인터페이스 등일 수 있다. 예를 들어, 통신 모듈(1303)은 구체적으로 블루투스 장치, Wi-Fi 장치, 주변 장치 인터페이스 등일 수 있다.
처리 모듈(1101)은 프로세서이고, 통신 모듈(1104)은 무선 주파수 회로이고, 저장 모듈(1103)은 메모리이고, 디스플레이 모듈(1102)은 디스플레이인 경우, 본 출원의 본 실시 예에서 제공되는 단말은 도 1에 도시된 이동 전화(100)일 수 있다.
전술한 실시 예들 중 전부 또는 일부는 소프트웨어, 하드웨어, 펌웨어 또는 이들의 임의의 조합에 의해 구현될 수 있다. 실시 예들을 구현하기 위해 소프트웨어 프로그램이 사용되는 경우, 실시 예들은 컴퓨터 프로그램 제품의 형태로 완전히 또는 부분적으로 구현될 수 있다. 컴퓨터 프로그램 제품은 하나 이상의 컴퓨터 명령을 포함한다. 컴퓨터 프로그램 명령이 컴퓨터에 로딩되어 실행되는 경우, 본 출원의 실시 예들에 따른 프로시저 또는 기능이 모두 또는 부분적으로 생성된다. 컴퓨터는 범용 컴퓨터, 전용 컴퓨터, 컴퓨터 네트워크 또는 다른 프로그램 가능한 장치일 수 있다. 컴퓨터 명령은 컴퓨터로 판독 가능한 저장 매체에 저장될 수 있거나, 컴퓨터로 판독 가능한 저장 매체로부터 다른 컴퓨터로 판독 가능한 저장 매체로 전송될 수 있다. 예를 들어, 컴퓨터 명령은, 유선(예를 들어, 동축 케이블, 광 섬유 또는 디지털 가입자 회선(DSL)) 또는 무선(예를 들어, 적외선, 라디오 및 마이크로 웨이브 등) 방식으로 웹 사이트, 컴퓨터, 서버 또는 데이터 센터에서 다른 웹 사이트, 컴퓨터, 서버 또는 데이터 센터로 전송될 수 있다. 컴퓨터로 판독 가능한 저장 매체는, 하나 이상의 사용 가능한 매체를 통합하는, 서버 또는 데이터 센터와 같은, 컴퓨터 또는 데이터 저장 디바이스에 의해 액세스 가능한 임의의 사용 가능한 매체일 수 있다. 사용 가능한 매체는 자기 매체(예를 들어, 플로피 디스크, 하드 디스크 또는 자기 테이프), 광학 매체(예를 들어, DVD), 반도체 매체(예를 들어, SSD(solid-state drive, Solid State Disk)) 등일 수 있다.
전술한 설명은 본 출원의 특정 구현일 뿐이며, 본 출원의 보호 범위를 제한하려는 것은 아니다. 본 출원에 개시된 기술 범위 내에서의 임의의 변형 또는 교체는 본 출원의 보호 범위 내에 속한다. 따라서, 본 출원의 보호 범위는 청구 범위의 보호 범위에 따른다.
Claims (25)
- 시스템 서비스 타임아웃 처리 방법으로서,
상기 시스템 서비스 타임아웃 처리 방법은 단말, 시스템 서비스 프로세스 및 상기 단말 상에서 실행되는 적어도 하나의 애플리케이션 프로세스에 적용되고, 상기 시스템 서비스 프로세스는 적어도 하나의 시스템 서비스 스레드를 포함하고, 상기 서비스 타임아웃 처리 방법은,
상기 적어도 하나의 시스템 서비스 스레드 중 타깃 시스템 서비스 스레드가 타임아웃되는 경우, 상기 단말에 의해, 상기 타깃 시스템 서비스 스레드와 통신하는 제1 애플리케이션 프로세스를 결정하는 단계 - 여기서, 상기 타깃 시스템 서비스 스레드의 상기 타임아웃은, 상기 타깃 시스템 서비스 스레드에 의해 점유되는 잠긴 객체(locked object)가 미리 설정된 시간 내에 해제되지 않은 것 및 상기 타깃 시스템 서비스 스레드가 차단된(blocked) 것 중 적어도 하나를 포함함 -; 및
상기 단말에 의해, 상기 제1 애플리케이션 프로세스를 종료하는 단계를 포함하는
시스템 서비스 타임아웃 처리 방법. - 제1항에 있어서,
상기 단말에 의해, 상기 타깃 시스템 서비스 스레드와 통신하는 제1 애플리케이션 프로세스를 결정하는 단계는,
상기 단말에 의해, 저장된 등록 정보로부터, 상기 타깃 시스템 서비스 스레드와 통신하는 상기 제1 애플리케이션 프로세스를 질의하는 단계 - 여기서, 시스템 서비스 스레드와, 프로세스 간 통신(inter-process communication, IPC)을 수행하는 애플리케이션 프로세스 사이의 대응은 상기 등록 정보에 기록됨 - 를 포함하는, 시스템 서비스 타임아웃 처리 방법. - 제1항 또는 제2항에 있어서,
상기 단말에 의해, 상기 제1 애플리케이션 프로세스를 종료하는 단계 후, 상기 시스템 서비스 타임아웃 처리 방법은,
상기 단말에 의해, 상기 제1 애플리케이션 프로세스를 재시작하는 단계를 포함하는, 시스템 서비스 타임아웃 처리 방법. - 제1항 내지 제3항 중 어느 한 항에 있어서,
상기 단말에 의해, 현재 실행 중인 바인더 스레드의 총량 N을 모니터링하는 단계 - 여기서, N은 0 이상의 정수임 -;
상기 바인더 스레드의 상기 총량이 제1 미리 설정된 값보다 큰 경우, 상기 단말에 의해, 상기 N 개의 바인더 스레드 각각에 의해 제공되는 애플리케이션 프로세스를 결정하는 단계;
상기 단말에 의해, 모든 애플리케이션 프로세스 각각에 의해 점유되는 바인더 스레드의 수량을 카운트하는 단계; 및
제1 타깃 애플리케이션 프로세스에 의해 점유되는 바인더 스레드의 수량이 제2 미리 설정된 값보다 큰 경우, 상기 단말에 의해, 상기 제1 타깃 애플리케이션 프로세스를 종료하는 단계를 더 포함하는, 시스템 서비스 타임아웃 처리 방법. - 제4항에 있어서,
제2 타깃 애플리케이션 프로세스에 의해 점유되는 바인더 스레드의 수량이 상기 제2 미리 설정된 값보다 큰 경우, 상기 제2 타깃 애플리케이션 프로세스의 우선 순위는 상기 제1 타깃 애플리케이션 프로세스의 우선 순위보다 높고, 상기 시스템 서비스 타임아웃 처리 방법은,
상기 단말에 의해, 상기 제2 타깃 애플리케이션 프로세스를 종료하는 단계; 및
상기 단말에 의해, 상기 제2 타깃 애플리케이션 프로세스를 재시작하는 단계를 더 포함하는 시스템 서비스 타임아웃 처리 방법. - 제5항에 있어서,
상기 단말이 상기 제2 타깃 애플리케이션 프로세스를 종료하는 경우, 상기 시스템 서비스 타임아웃 처리 방법은,
상기 단말에 의해, 상기 제2 타깃 애플리케이션 프로세스의 실행 경과를 기록하는 단계를 더 포함하고,
상기 단말에 의해, 상기 제2 타깃 애플리케이션 프로세스를 재시작하는 단계는,
상기 단말에 의해, 상기 실행 경과에 기초하여, 상기 제2 타깃 애플리케이션 프로세스를 상기 실행 경과와 동일한 실행 상태로 복원하는 단계를 포함하는, 시스템 서비스 타임아웃 처리 방법. - 제1항 내지 제6항 중 어느 한 항에 있어서,
상기 단말에 의해, 타깃 애플리케이션에 대해 IPC 서비스를 제공하는 바인더 스레드의 수량 M을 카운트하는 단계 - 여기서, M은 0 이상의 정수임 -; 및
상기 단말에 의해, 바인더 스레드의 상기 수량 M이 제1 임계값 이상인 경우, 상기 타깃 애플리케이션에 대한 새로운 바인더 스레드를 생성하는 것을 중지하는 단계를 더 포함하는, 시스템 서비스 타임아웃 처리 방법. - 제7항에 있어서,
상기 단말에 의해, 바인더 스레드의 상기 수량 M이 제1 임계값 이상인 경우, 상기 타깃 애플리케이션에 대한 새로운 바인더 스레드를 생성하는 것을 중지하는 단계는,
상기 단말에 의해, M 개의 바인더 스레드 각각에 의해 호출되는 애플리케이션 프로그래밍 인터페이스(application programming interface, API)에 관한 통계를 수집하는 단계; 및
하나의 API가 호출되는 횟수가 제2 임계값보다 큰 경우, 상기 단말에 의해, 상기 타깃 애플리케이션에 대한 새로운 바인더 스레드의 생성 요청에 대한 응답을 중지하는 단계를 포함하는, 시스템 서비스 타임아웃 처리 방법. - 제7항 또는 제8항에 있어서,
상기 단말에 의해, 상기 타깃 애플리케이션에 대한 새로운 바인더 스레드를 생성하는 것을 중지하는 단계 후, 상기 시스템 서비스 타임아웃 처리 방법은,
상기 타깃 애플리케이션에 대해 상기 IPC 서비스를 제공하는 바인더 스레드의 상기 수량 M이 상기 제1 임계값보다 작은 경우, 상기 단말에 의해, 상기 타깃 애플리케이션에 대한 새로운 바인더 스레드를 생성하는 단계를 더 포함하는 시스템 서비스 타임아웃 처리 방법. - 제1항 내지 제9항 중 어느 한 항에 있어서,
상기 단말에 의해, 타깃 시스템 서비스 스레드가 타임아웃된 이유를 디스플레이하거나, 상기 제1 애플리케이션 프로세스를 종료하는 프롬프트 메시지를 디스플레이하는 단계를 더 포함하는 시스템 서비스 타임아웃 처리 방법. - 제1항 내지 제10항 중 어느 한 항에 있어서,
상기 타깃 시스템 서비스 스레드가 차단되는 것은,
상기 타깃 시스템 서비스 스레드와 상기 제1 애플리케이션 프로세스 사이의 통신에 대한 기간(duration)이 제1 미리 설정된 값보다 큰 것 및 실행 프로시저에서 상기 타깃 시스템 서비스 스레드의 중단 기간이 제2 미리 설정 값보다 큰 것 중 적어도 하나를 포함하는, 시스템 서비스 타임아웃 처리 방법. - 단말로서,
시스템 서비스 프로세스 및 적어도 하나의 애플리케이션 프로세스가 상기 단말 상에서 실행되고, 상기 시스템 서비스 프로세스는 적어도 하나의 시스템 서비스 스레드를 포함하고, 상기 단말은,
상기 적어도 하나의 시스템 서비스 스레드 중 타깃 시스템 서비스 스레드가 타임아웃 되는지 여부를 검출하도록 구성되는 타임아웃 검출 유닛 - 여기서, 상기 타깃 시스템 서비스 스레드의 상기 타임아웃은, 상기 타깃 시스템 서비스 스레드에 의해 점유되는 잠긴 객체가 미리 설정된 시간 내에 해제되지 않은 것 및 상기 타깃 시스템 서비스 스레드가 차단된 것 중 적어도 하나를 포함함 -; 및
상기 타깃 시스템 서비스 스레드가 타임아웃되는 경우, 상기 타깃 시스템 서비스 스레드와 통신하는 제1 애플리케이션 프로세스를 결정하도록 구성되는 결정 유닛; 및
상기 제1 애플리케이션 프로세스를 종료하도록 구성되는 타임아웃 처리 유닛을 포함하는
단말. - 제12항에 있어서,
상기 결정 유닛은 구체적으로, 저장된 등록 정보로부터, 상기 타깃 시스템 서비스 스레드와 통신하는 상기 제1 애플리케이션 프로세스를 질의하도록 구성되고, 시스템 서비스 스레드와 프로세스 간 통신(IPC)을 수행하는 애플리케이션 프로세스 사이의 대응은 상기 등록 정보에 기록되는, 단말. - 제12항 또는 제13항에 있어서,
상기 타임아웃 처리 유닛은, 상기 제1 애플리케이션 프로세스를 재시작하도록 추가로 구성되는, 단말. - 제12항 내지 제14항 중 어느 한 항에 있어서,
상기 타임아웃 검출 유닛은, 현재 실행 중인 바인더 스레드의 총량 N을 모니터링하도록 추가로 구성되고 - 여기서, N은 0 이상의 정수임 -;
상기 결정 유닛은, 상기 바인더 스레드의 총량이 제1 미리 설정된 값보다 큰 경우, 상기 N 개의 바인더 스레드 각각에 의해 제공되는 애플리케이션 프로세스를 결정하고; 모든 애플리케이션 프로세스 각각에 의해 점유되는 바인더 스레드의 수량을 카운트하도록 추가로 구성되고;
상기 타임아웃 처리 유닛은, 제1 타깃 애플리케이션 프로세스에 의해 점유되는 바인더 스레드의 수량이 제2 미리 설정된 값보다 큰 경우, 상기 제1 타깃 애플리케이션 프로세스를 종료하도록 추가로 구성되는, 단말. - 제15항에 있어서,
제2 타깃 애플리케이션 프로세스에 의해 점유되는 바인더 스레드의 수량이 상기 제2 미리 설정된 값보다 큰 경우, 상기 제2 타깃 애플리케이션 프로세스의 우선 순위는 상기 제1 타깃 애플리케이션 프로세스의 우선 순위보다 높고,
상기 타임아웃 처리 유닛은, 상기 제2 타깃 애플리케이션 프로세스를 종료하고, 상기 제2 타깃 애플리케이션 프로세스를 재시작하도록 추가로 구성되는, 단말. - 제16항에 있어서,
상기 타임아웃 처리 유닛은 구체적으로, 상기 제2 타깃 애플리케이션 프로세스의 실행 경과를 기록하고; 상기 실행 경과에 기초하여, 상기 제2 타깃 애플리케이션 프로세스를 상기 실행 경과와 동일한 실행 상태로 복원하도록 구성되는, 단말. - 제12항 내지 제17항 중 어느 한 항에 있어서,
상기 결정 유닛은, 타깃 애플리케이션에 대해 IPC 서비스를 제공하는 바인더 스레드의 수량 M을 카운트하도록 구성되고 - 여기서, M은 0 이상의 정수임 -;
상기 타임아웃 처리 유닛은, 바인더 스레드의 상기 수량 M이 제1 임계값 이상인 경우, 상기 타깃 애플리케이션에 대한 새로운 바인더 스레드를 생성하는 것을 중지하도록 추가로 구성되는, 단말. - 제18항에 있어서,
상기 타임아웃 처리 유닛은 구체적으로, M 개의 바인더 스레드 각각에 의해 호출되는 애플리케이션 프로그래밍 인터페이스(API)에 관한 통계를 수집하고; 하나의 API가 호출되는 횟수가 제2 임계값보다 큰 경우, 타깃 애플리케이션에 대한 새로운 바인더 스레드의 생성 요청에 대한 응답을 중지하도록 구성되는, 단말. - 제19항에 있어서,
상기 타임아웃 처리 유닛은, 상기 타깃 애플리케이션에 대해 상기 IPC 서비스를 제공하는 바인더 스레드의 상기 수량 M이 제1 임계값보다 작은 경우, 상기 타깃 애플리케이션에 대한 새로운 바인더 스레드를 생성하도록 추가로 구성되는, 단말 - 제12항 내지 제20항 중 어느 한 항에 있어서,
타깃 시스템 서비스 스레드가 타임아웃된 이유를 디스플레이하거나, 제1 애플리케이션 프로세스를 종료하는 프롬프트 메시지를 디스플레이하도록 구성되는 디스플레이 유닛을 더 포함하는 단말. - 제12항 내지 제20항 중 어느 한 항에 있어서,
상기 타깃 시스템 서비스 스레드가 차단되는 것은, 상기 타깃 시스템 서비스 스레드와 상기 제1 애플리케이션 프로세스 사이의 통신에 대한 기간이 제1 미리 설정된 값보다 큰 것 및 실행 프로시저에서 상기 타깃 시스템 서비스 스레드의 중단 기간이 제2 미리 설정된 값보다 큰 것 중 적어도 하나를 포함하는, 단말. - 단말로서,
프로세서, 메모리, 버스 및 통신 인터페이스를 포함하고,
상기 메모리는 컴퓨터로 실행 가능한 명령을 저장하도록 구성되고, 상기 프로세서는 상기 버스를 사용하여 상기 메모리에 연결되고, 상기 단말이 동작할 때, 상기 프로세서는 상기 메모리에 저장된 상기 컴퓨터로 실행 가능한 명령을 실행하고, 상기 단말은 제1항 내지 제11항 중 어느 한 항에 따른 시스템 서비스 타임아웃 처리 방법을 수행할 수 있는,
단말. - 컴퓨터로 판독 가능한 저장 매체로서,
상기 컴퓨터로 판독 가능한 저장 매체는 명령을 저장하고, 상기 명령이 단말 상에서 실행되는 경우, 상기 단말은 제1항 내지 제11항 중 어느 한 항에 따른 시스템 서비스 타임아웃 처리 방법을 수행할 수 있는,
컴퓨터로 판독 가능한 저장 매체. - 명령을 포함하는 컴퓨터 프로그램 제품으로서,
상기 컴퓨터 프로그램 제품이 단말 상에서 실행되는 경우, 상기 단말은 제1항 내지 제11항 중 어느 한 항에 따른 시스템 서비스 타임아웃 처리 방법을 수행할 수 있는,
컴퓨터 프로그램 제품.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020217032666A KR102460380B1 (ko) | 2017-09-30 | 2017-09-30 | 시스템 서비스의 타임아웃을 처리하는 방법 및 디바이스 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2017/104795 WO2019061407A1 (zh) | 2017-09-30 | 2017-09-30 | 一种系统服务超时的处理方法及装置 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020217032666A Division KR102460380B1 (ko) | 2017-09-30 | 2017-09-30 | 시스템 서비스의 타임아웃을 처리하는 방법 및 디바이스 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20200058479A true KR20200058479A (ko) | 2020-05-27 |
KR102313664B1 KR102313664B1 (ko) | 2021-10-15 |
Family
ID=65900429
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020207011642A KR102313664B1 (ko) | 2017-09-30 | 2017-09-30 | 시스템 서비스의 타임아웃을 처리하는 방법 및 디바이스 |
KR1020217032666A KR102460380B1 (ko) | 2017-09-30 | 2017-09-30 | 시스템 서비스의 타임아웃을 처리하는 방법 및 디바이스 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020217032666A KR102460380B1 (ko) | 2017-09-30 | 2017-09-30 | 시스템 서비스의 타임아웃을 처리하는 방법 및 디바이스 |
Country Status (7)
Country | Link |
---|---|
US (1) | US11693701B2 (ko) |
EP (1) | EP3678023B1 (ko) |
JP (1) | JP7006780B2 (ko) |
KR (2) | KR102313664B1 (ko) |
CN (1) | CN109891392B (ko) |
AU (1) | AU2017434691B2 (ko) |
WO (1) | WO2019061407A1 (ko) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112486713B (zh) * | 2019-09-11 | 2023-07-18 | 华为技术有限公司 | 一种冻屏处理方法及电子设备 |
CN111045926B (zh) * | 2019-11-05 | 2023-04-14 | 北京字节跳动网络技术有限公司 | 一种应用程序卡顿的检测方法、装置、介质和电子设备 |
CN111158869A (zh) * | 2019-11-15 | 2020-05-15 | 西安海的电子科技有限公司 | 一种基于安卓系统的进程碎片清理方法 |
CN112000385A (zh) * | 2020-09-03 | 2020-11-27 | 深圳市智微智能软件开发有限公司 | 一种用于Android设备的快速重启方法及系统 |
CN112667388B (zh) * | 2021-03-16 | 2021-06-01 | 荣耀终端有限公司 | 一种操作系统的保护方法及电子设备 |
CN113190342B (zh) * | 2021-06-01 | 2023-04-21 | 湖南工学院 | 用于云-边协同网络的多应用细粒度卸载的方法与系统架构 |
CN113835985B (zh) * | 2021-09-27 | 2023-09-29 | 北京基调网络股份有限公司 | 一种监测卡顿、分析卡顿原因的方法、装置及设备 |
CN115017004B (zh) * | 2021-12-27 | 2023-07-07 | 荣耀终端有限公司 | 进程监控方法及电子设备 |
CN114153621B (zh) * | 2022-02-09 | 2022-06-07 | 荣耀终端有限公司 | 系统进程调控方法、装置、电子设备及可读存储介质 |
CN115202902B (zh) * | 2022-07-01 | 2023-08-22 | 荣耀终端有限公司 | 控制进程交互的方法及相关装置 |
CN115277606B (zh) * | 2022-08-01 | 2023-11-24 | 成都安恒信息技术有限公司 | 一种优化drbd数据同步的方法 |
CN116662024B (zh) * | 2022-12-30 | 2023-11-07 | 荣耀终端有限公司 | 进程间通信监控方法、装置、电子设备及存储介质 |
CN117692832B (zh) * | 2023-05-29 | 2024-10-01 | 荣耀终端有限公司 | 超声波通路与耳机通路的冲突解决方法及相关装置 |
CN116431377B (zh) * | 2023-06-13 | 2023-08-22 | 苏州至盛半导体科技有限公司 | 一种看门狗电路 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100495367B1 (ko) * | 2003-04-02 | 2005-06-14 | 엘지전자 주식회사 | 소프트웨어 워치도그를 이용한 시스템 관리방법 |
KR100691120B1 (ko) * | 2006-01-16 | 2007-03-12 | 엘지전자 주식회사 | 메모리 에러 관리를 위한 미들웨어 및 메모리 에러 관리방법 |
JP2011175570A (ja) * | 2010-02-25 | 2011-09-08 | Hitachi Ltd | コンピュータ、コンピュータの障害検知方法、及びプログラム |
CN102253863A (zh) * | 2011-06-15 | 2011-11-23 | 奇智软件(北京)有限公司 | 一种进程关闭方法 |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001050263A1 (en) | 1999-12-30 | 2001-07-12 | Computer Associates Think, Inc. | System and method for device failure recognition |
JP3916070B2 (ja) | 2003-01-08 | 2007-05-16 | ソニー株式会社 | 情報処理装置および方法、並びにプログラム |
US7694312B2 (en) | 2004-09-10 | 2010-04-06 | Pleora Technologies Inc. | Methods and apparatus for enabling bus connectivity over a data network |
GB0519981D0 (en) * | 2005-09-30 | 2005-11-09 | Ignios Ltd | Scheduling in a multicore architecture |
JP4462238B2 (ja) | 2006-06-21 | 2010-05-12 | 株式会社デンソーウェーブ | 携帯端末 |
CN101539878A (zh) | 2008-03-18 | 2009-09-23 | 环达电脑(上海)有限公司 | 在操作系统下加快oracle进程监控回收资源的方法 |
JP2010152838A (ja) | 2008-12-26 | 2010-07-08 | Ricoh Co Ltd | 画像形成装置、制御方法、およびプログラム |
CN101561764B (zh) | 2009-05-18 | 2012-05-23 | 华为技术有限公司 | 一种多核环境下的补丁方法与补丁装置 |
EP2642399A1 (en) | 2010-11-15 | 2013-09-25 | Fujitsu Limited | Access method, and multi-core processor system |
CN101996106B (zh) | 2010-12-17 | 2012-12-05 | 南京中兴力维软件有限公司 | 一种对软件运行状态进行监控的方法 |
JP5648187B2 (ja) | 2011-11-25 | 2015-01-07 | 株式会社日立製作所 | 計算機システム、および、監視方法 |
CN103425225B (zh) * | 2012-05-16 | 2015-08-19 | 腾讯科技(深圳)有限公司 | 便携数据设备操作系统中的应用程序装置及其运行方法 |
US10051019B1 (en) * | 2012-11-09 | 2018-08-14 | Wells Fargo Bank, N.A. | System and method for session management |
CN102984580B (zh) * | 2012-11-12 | 2016-04-20 | 北京奇虎科技有限公司 | 内存清理方法及系统 |
US8893222B2 (en) | 2012-11-13 | 2014-11-18 | Auckland Uniservices Ltd. | Security system and method for the android operating system |
CN103077052B (zh) | 2012-12-28 | 2017-02-01 | 华为终端有限公司 | 一种处理移动终端运行卡顿问题的方法及装置 |
CN103942113B (zh) * | 2013-11-21 | 2017-03-01 | 小米科技有限责任公司 | 系统重启原因的检测方法、装置及终端设备 |
US9274894B1 (en) * | 2013-12-09 | 2016-03-01 | Twitter, Inc. | System and method for providing a watchdog timer to enable collection of crash data |
GB2532424B (en) | 2014-11-18 | 2016-10-26 | Ibm | An almost fair busy lock |
CN105677501B (zh) | 2016-01-07 | 2019-01-29 | 烽火通信科技股份有限公司 | Linux系统中基于看门狗的精细化进程监控方法及系统 |
US10037238B2 (en) * | 2016-02-10 | 2018-07-31 | Dell Products, L.P. | System and method for encoding exception conditions included at a remediation database |
CN105824622B (zh) | 2016-03-11 | 2020-04-24 | 联想(北京)有限公司 | 数据处理方法及电子设备 |
CN106445712A (zh) | 2016-08-31 | 2017-02-22 | 上海澳润信息科技有限公司 | 一种基于消息监控的软件看门狗实现方法 |
CN106406947B (zh) | 2016-09-13 | 2019-09-17 | Oppo广东移动通信有限公司 | 防止系统服务进程重启的方法及装置、移动终端 |
CN106445721B (zh) | 2016-10-11 | 2019-07-12 | Oppo广东移动通信有限公司 | 看门狗容错处理的方法及移动终端 |
CN106681822A (zh) | 2017-01-19 | 2017-05-17 | 努比亚技术有限公司 | 一种基于信号的进程冻结和解冻装置及方法 |
CN106951318A (zh) | 2017-03-24 | 2017-07-14 | 联想(北京)有限公司 | 一种电子设备后台进程的管理方法及电子设备 |
-
2017
- 2017-09-30 KR KR1020207011642A patent/KR102313664B1/ko active IP Right Grant
- 2017-09-30 AU AU2017434691A patent/AU2017434691B2/en active Active
- 2017-09-30 WO PCT/CN2017/104795 patent/WO2019061407A1/zh unknown
- 2017-09-30 KR KR1020217032666A patent/KR102460380B1/ko active IP Right Grant
- 2017-09-30 US US16/651,909 patent/US11693701B2/en active Active
- 2017-09-30 JP JP2020517810A patent/JP7006780B2/ja active Active
- 2017-09-30 EP EP17926719.0A patent/EP3678023B1/en active Active
- 2017-09-30 CN CN201780067385.5A patent/CN109891392B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100495367B1 (ko) * | 2003-04-02 | 2005-06-14 | 엘지전자 주식회사 | 소프트웨어 워치도그를 이용한 시스템 관리방법 |
KR100691120B1 (ko) * | 2006-01-16 | 2007-03-12 | 엘지전자 주식회사 | 메모리 에러 관리를 위한 미들웨어 및 메모리 에러 관리방법 |
JP2011175570A (ja) * | 2010-02-25 | 2011-09-08 | Hitachi Ltd | コンピュータ、コンピュータの障害検知方法、及びプログラム |
CN102253863A (zh) * | 2011-06-15 | 2011-11-23 | 奇智软件(北京)有限公司 | 一种进程关闭方法 |
Also Published As
Publication number | Publication date |
---|---|
JP2020536306A (ja) | 2020-12-10 |
US11693701B2 (en) | 2023-07-04 |
US20200264933A1 (en) | 2020-08-20 |
CN109891392A (zh) | 2019-06-14 |
KR102313664B1 (ko) | 2021-10-15 |
KR20210126159A (ko) | 2021-10-19 |
EP3678023A4 (en) | 2020-08-26 |
KR102460380B1 (ko) | 2022-10-27 |
AU2017434691B2 (en) | 2021-05-06 |
EP3678023B1 (en) | 2022-07-13 |
EP3678023A1 (en) | 2020-07-08 |
WO2019061407A1 (zh) | 2019-04-04 |
JP7006780B2 (ja) | 2022-01-24 |
AU2017434691A1 (en) | 2020-04-23 |
CN109891392B (zh) | 2022-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102313664B1 (ko) | 시스템 서비스의 타임아웃을 처리하는 방법 및 디바이스 | |
US10437631B2 (en) | Operating system hot-switching method and apparatus and mobile terminal | |
US9965565B2 (en) | Methods and terminals for generating and reading 2D barcode and servers | |
US20240231890A1 (en) | Memory management method and electronic device | |
EP3617889B1 (en) | Stutter detection method and device | |
CN108702421B (zh) | 用于控制应用和组件的电子设备和方法 | |
CN113821803B (zh) | 安全架构系统、安全管理方法和计算设备 | |
CN111858112B (zh) | 一种检测内存泄露的方法、客户端及服务器 | |
US9603086B2 (en) | Smart management of background network connections based on historical data | |
CN107908492B (zh) | 黑屏检测方法、移动终端及计算机可读存储介质 | |
US10187430B2 (en) | Smart management of background network connections | |
CN107818036B (zh) | 黑屏检测方法、移动终端及计算机可读存储介质 | |
CN107872367B (zh) | 黑屏检测方法、移动终端及计算机可读存储介质 | |
CN107832191B (zh) | 黑屏检测方法、移动终端及计算机可读存储介质 | |
CN107888411B (zh) | 黑屏检测方法、移动终端及计算机可读存储介质 | |
US20200257558A1 (en) | Processing Method and Apparatus | |
WO2022271302A1 (en) | Dynamic remote collection of supplemental diagnostic data and triggering of client actions for client software application | |
CN107766210B (zh) | 黑屏检测方法、移动终端及计算机可读存储介质 | |
US10013299B2 (en) | Handling crashes of a device's peripheral subsystems | |
CN114201354A (zh) | 一种应用程序的超时检测方法及终端设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
AMND | Amendment | ||
E902 | Notification of reason for refusal | ||
AMND | Amendment | ||
E601 | Decision to refuse application | ||
AMND | Amendment | ||
X701 | Decision to grant (after re-examination) | ||
A107 | Divisional application of patent | ||
GRNT | Written decision to grant |