KR20050021312A - 스레드 스케줄링을 사용하여 데이터 처리량을 증가시키는시스템 및 방법 - Google Patents

스레드 스케줄링을 사용하여 데이터 처리량을 증가시키는시스템 및 방법 Download PDF

Info

Publication number
KR20050021312A
KR20050021312A KR1020040067479A KR20040067479A KR20050021312A KR 20050021312 A KR20050021312 A KR 20050021312A KR 1020040067479 A KR1020040067479 A KR 1020040067479A KR 20040067479 A KR20040067479 A KR 20040067479A KR 20050021312 A KR20050021312 A KR 20050021312A
Authority
KR
South Korea
Prior art keywords
data
thread
application
device driver
computer
Prior art date
Application number
KR1020040067479A
Other languages
English (en)
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 마이크로소프트 코포레이션
Publication of KR20050021312A publication Critical patent/KR20050021312A/ko

Links

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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/625Queue scheduling characterised by scheduling criteria for service slots or service orders
    • H04L47/6255Queue scheduling characterised by scheduling criteria for service slots or service orders queue load conditions, e.g. longest queue first
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)
  • Stored Programmes (AREA)
  • Communication Control (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

디바이스 드라이버에서 어플리케이션으로 데이터를 전달하는 시스템 및 방법은 스레드 스케줄링을 이용하므로써 어플리케이션으로부터의 데이터 요구들의 동기 프로세싱(빠른 I/O 모드)의 사용성을 증가시켜서 요구된 데이터가 어플리케이션에 즉각적으로 전달 가능하게될 가능성을 강화시킨다. 만약 전달을 위해 준비된 데이터를 저장하는 데이터 큐 내의 데이터의 양이 적으면, 시스템의 스레드 스케줄링은 수정되어 디바이스 드라이버의 스레드를 승격시키고 어플리케이션에 의해 소모되는 데이터를 데이터 큐에 더 위치시킬 수 있는 기회를 준다. 디바이스 드라이버의 스레드의 승격은 어플리케이션 스레드에서 다른 스레드(디바이스 드라이버 스레드가 아니어도 됨)로의 스위칭, 디바이스 드라이버의 우선순위 부스팅, 및/또는 어플리케이션의 우선순위 낮춤에 의해 수행될 수 있다.

Description

스레드 스케줄링을 사용하여 데이터 처리량을 증가시키는 시스템 및 방법{SYSTEM AND METHOD FOR INCREASING DATA THROUGHPUT USING THREAD SCHEDULING}
본 발명은 일반적으로 컴퓨터 데이터 프로세싱에 관한 것이며, 특히, 어플리케이션에 의해 프로세싱될 데이터를 제공하는 조작에 관한 것이다.
한 컴퓨터 컴포넌트에서 다른 컴퓨터 컴포넌트로의 데이터 패싱에 관련된, 데이터 입출력(I/O)은 종종 디지털 프로세싱의 제한 요소 또는 병목 현상이다. 예를 들어, 컴퓨터 상에서 작동중인 어플리케이션은 전형적으로 프로세싱을 위해 이 어플리케이션에 데이터를 공급하기에 낮은 레벨(예를 들어, 커널 모드 내)상의 디바이스 드라이버에 의존한다. 그러므로 어플리케이션의 성능은 그 어플리케이션의 태스크를 수행하는데 필요한 데이터를 드라이버가 얼마나 효율적으로 제공하는가에 달려있다.
종래에는, 어플리케이션은 디바이스 드라이버로부터 두가지 모드로 데이터를 수신할 수 있었다. 제1 모드에서, 만약 요구된 데이터가 현재 이용불가능하면, 어플리케이션은 디바이스 드라이버로부터 데이터를 수신하기 위한 요구를 포스팅(posting)한다. 이 요구는 비동기적으로 처리되어, 어플리케이션은 디바이스 드라이버가 요구된 데이터를 제공하기를 기다리지 않으며, 요구된 데이터는 데이터가 이용 가능해질 때 어플리케이션에 전달된다. 제2 모드에서, 데이터에 대한 요구는 동기적으로 프로세싱된다. 이 경우에, 요구된 데이터는 이미 큐에 위치해있어서 요구에 대한 응답으로 즉시 전달될 수 있다. 데이터 요구를 추적하는(tracking) 데이터 구조와 비동기 완성의 오버헤드를 할당하고 초기화하는 필요로 인해 상당한 프로세싱 및 메모리 오버헤드를 초래하기 때문에, 데이터 전달의 비동기적 방법은 일반적으로 덜 선호된다. 반대로, 동기 모드는 이런 오버헤드는 없지만, 어플리케이션에 의한 시스템 콜에 대한 응답으로 드라이버가 픽업을 위해 데이터를 이미 큐잉하는 것이 요구된다. 요구된 데이터를 전달하는데 지연이 없기 때문에, 비록 기타 플랫폼들이 다른 터미놀로지를 사용할 수 있지만, 마이크로소프트 윈도우즈 플랫폼 상에서 동기 모드는 또한 "빠른 I/O"라고 불린다. 동기적 방법이 상당히 감소된 오버헤드 및 즉각적인 데이터 전달의 잇점을 가지므로, 비동기 방법 이상으로 동기 방법의 사용성을 증가시키는 것이 바람직하다.
전술한 바와 같이, 본 발명은 디바이스 드라이버에서 스레드 스케줄링을 사용하여 어플케이션으로의 데이터 전달의 동기 프로세싱(예를 들어, 빠른 I/O 모드)의 사용성을 증가시키는 어플리케이션으로 데이터를 전달하여 요구된 데이터가 즉각적인 전달에 이용가능하게 될 가능성을 강화시키는 시스템 및 방법을 제공한다. 어플리케이션이 프로세싱하기 위해 데이터를 필요로할 때, 어플리케이션에 전달되도록 준비된 데이터를 저장하기 위해 디바이스 드라이버에 의해 사용되는 데이터 큐가 확인된다. 만약 데이터 큐 내의 데이터의 양이 적으면, 시스템의 스레드 스케줄링은 디바이스 드라이버의 스레드를 승격시키도록 수정되고, 이로 인해 디바이스 드라이버에게 어플리케이션에 의한 소모를 위해 데이터 큐에 데이터를 더 위치시킬 수 있는 기회를 준다. 디바이스 드라이버의 스레드의 승격은 어플리케이션 스레드에서 다른 스레드(디바이스 드라이버 스레드가 아니어도 됨)로의 스위칭과 디바이스 드라이버 스레드의 우선순위를 부스팅, 및/또는 어플리케이션 스레드의 우선순위를 낮추는 것 등을 포함하는 다른 방식으로 수행될 수 있다.
도면들에서, 같은 참조 번호들은 같은 구성요소들을 참조하고, 본 발명은 적절한 컴퓨텅 환경에서 구현되는 것으로 도시된다. 비록 요구되지는 않지만, 본 발명은 개인용 컴퓨터에 의해 실행되는, 프로그램 모듈과 같은 컴퓨터-실행가능 명령의 일반적인 문맥으로 기술된다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하거나 특정 추상(abstract) 데이터 유형을 구현하는 루틴, 프로그램, 오브젝트, 컴포넌트, 데이터 구조 등을 포함한다. 게다가, 당업자들은 본 발명이 핸드-헬드 디바이스, 멀티-프로세서 시스템, 마이크로프로세서-기반 또는 프로그램가능 가전 제품, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터 등을 포함하는 기타 컴퓨터 시스템 구성들과 함께 실행될 수 있음을 인식할 것이다. 본 발명은 통신 네트워크를 통해 링크된 원격 프로세싱 디바이스에 의해 태스크를 수행하는 분산형 컴퓨팅 환경에서 실행될 수 있다. 분산형 컴퓨팅 환경에서, 프로그램 모듈들은 국부 및 원격 메모리 저장 디바이스 내에 위치할 수 있다.
본 발명을 구현하는데 사용되는 범용 컴퓨팅 디바이스의 설명은 후술되며, 스레드 스케줄링에 의해 빠른 데이터 I/O를 승격시키는 본 발명의 시스템과 방법은 도 2-5를 참조하며 보다 상세하게 설명될 것이다. 도 1에서, 범용 컴퓨팅 디바이스는 프로세싱 유닛(21), 시스템 메모리(22), 및 시스템 메모리를 포함하는 다양한 시스템 컴포넌트들을 프로세싱 유닛(21)에 연결시키는 시스템 버스(23)를 포함하는 종래의 개인용 컴퓨터(20)의 형태로 도시된다. 시스템 버스(23)는 메모리 버스 또는 메모리 제어기, 주변 버스, 및 다양한 버스 아키텍처 중 임의의 것을 사용하는 로컬 버스를 포함하는 몇가지 유형의 버스 구조 중 임의의 것일 수 있다. 시스템 메모리는 ROM(24) 및 RAM(25)을 포함한다. 시동중과 같은 때에 개인용 컴퓨터(20) 내의 구성요소들간에 정보를 전송을 돕는 기본 루틴을 포함하는 기본 입출력 시스템(BIOS; 26)은 ROM(24)에 저장된다. 개인용 컴퓨터(20)는 하드 디스크(60)로부터 판독하거나 하드 디스크에 기록하는데 대한 하드 디스크 드라이브(27), 분리형 자기 디스크(29)로부터 판독하거나 그 자기 디스크에 기록하는데 대한 자기 디스크 드라이브(28), 및 CD ROM 또는 기타 광 매체 등의 분리형 광 디스크(31)로부터 판독하거나 그 광 디스크에 기록하는 광 디스크 드라이브(30)를 더 포함한다.
하드 디스크 드라이브(27), 자기 디스크 드라이브(28), 및 광 디스크 드라이브(30)는 하드 디스크 드라이브 인터페이스(32), 자기 디스크 드라이브 인터페이스(33), 및 광 디스크 드라이브 인터페이스(24)에 각각 연결된다. 드라이브들 및 그들에 연결된 컴퓨터-판독가능 매체는 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈, 및 개인용 컴퓨터(20)에 대한 기타 데이터의 비휘발성 저장을 제공한다. 비록 여기에 기재된 예시적인 환경이 하드 디스크(60), 분리형 자기 디스크(29), 및 분리형 광 디스크를 사용하지만, 당업자들은 데이터를 저장할 수 있는 컴퓨터 판독가능 매체의 기타 유형들이 예시적인 운영 환경에서도 사용될 수 있는 자기 카세트, 플래시 메모리 카드, 디지털 비디오 디스크, 버놀리(Bernoulli) 카트리지, RAM, ROM, 저장 영역 네트워크 등의 컴퓨터에 의해 액세스 가능함을 인식할 것이다.
많은 프로그램 모듈들은 운영 시스템(35), 하나 이상의 어플리케이션 프로그램(36), 기타 프로그램 모듈(37), 및 프로그램 데이터(38)를 포함하는 하드 디스크(60), 자기 디스크(29), 광 디스크(31), ROM(24), 또는 RAM(25) 상에 저장될 수 있다. 사용자는 명령 및 정보를 개인용 컴퓨터(20)에 키보드(40), 및 포인팅 디바이스(42) 등의 입력 디바이스를 통해 입력할 수 있다. 기타 입력 디바이스(도시되지 않음)들은 마이크로폰, 조이스틱, 게임 패드, 위성 접시, 스캐너 등을 포함할 수 있다. 이런 및 기타 디바이스들은 종종 시스템 버스에 연결된 시리얼 포트 인터페이스(46)를 통해 프로세싱 유닛(21)에 연결되지만, 병렬 포트, 게임 포트, 범용 시리얼 버스(USB), 또는 네트워크 인터페이스 카드 등의 기타 인터페이스들에 의해 연결될 수도 있다. 모니터(47) 또는 다른 유형의 디스플레이 디바이스는 또한 비디오 어댑터(48) 등의 인터페이스를 통해 시스템 버스(23)에 연결된다. 모니터외에도, 개인용 컴퓨터는 전형적으로, 도시되지 않은, 스피커 및 프린터 등의 기타 주변 출력 디바이스를 포함한다.
개인용 컴퓨터(20)는 원격 컴퓨터(49)와 같은 하나 이상의 원격 컴퓨터로의 논리적 연결을 사용한 네트워크 환경에서 동작할 수 있다. 원격 컴퓨터(49)는 기타 개인용 컴퓨터, 서버, 라우터, 네트워크 PC, 피어(peer) 디바이스, 또는 기타 공통 네트워크 노드일 수 있으며, 비록 도 1 에는 메모리 저장 디바이스(50)만이 도시되어 있지만, 개인용 컴퓨터(20)에 관련해 상술한 구성요소 중 다수 또는 모든 구성요소를 일반적으로 포함한다. 도 1에 도시된 논리적 연결은 근거리 통신망(LAN; 51) 및 원거리 통신망(WAN; 52)을 포함한다. 이러한 네트워킹 환경들은 사무실, 기업 광역 컴퓨터 네트워크(enterprise-wide computer network), 인트라넷, 및 인터넷에서 일반적인 것이다.
LAN 네트워킹 환경에서 사용되는 경우, 개인용 컴퓨터(20)는 네트워크 인터페이스 또는 어댑터(53)를 통해 로컬 네트워크(51)에 연결된다. WAN 네트워킹 환경에서 사용될 때, 개인용 컴퓨터(20)는 전형적으로 WAN(52)을 통해 통신을 구축하기 위한 모뎀(54) 또는 기타 수단들을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(54)은 시리얼 포트 인터페이스(46)를 통해 시스템 버스(23)에 연결된다. 네트워크 환경에서, 개인용 컴퓨터(20)에 관련해 도시된 프로그램 모듈들 또는 그것의 일부분들은 원격 메모리 저장 디바이스에 저장될 수 있다. 도시된 네트워크 연결들은 예시적인 것이며, 컴퓨터들 간의 통신 링크를 구축하는 기타 수단들이 사용될 수 있음을 인식할 것이다.
후술에서, 본 발명은 달리 언급되지 않는한 하나 이상의 컴퓨터들에 의해 수행되는 활동들 및 조작들의 심볼 표현을 참조하여 이하 후술된다. 컴퓨터-실행될 때 종종 언급되는, 이러한 활동들 및 조작들이 구조된 형태로 데이터를 나타내는 전자 신호의 컴퓨터의 프로세싱 유닛에 의한 조작을 포함함을 이해해야 한다. 당업자들이 잘 이해하는 방법으로 컴퓨터의 조작을 재구성하거나 아니면 변경하는, 이 조작은 데이터를 변형시키거나 컴퓨터의 메모리 시스템 내의 위치에 데이터를 유지시킨다. 데이터가 유지되는 데이터 구조들은 데이터의 포맷에 의해 정의되는 특정 속성들을 갖는 메모리의 물리 위치들이다. 그러나, 본 발명이 전술된 문맥으로 기재되지만, 후술되는 활동들 및 조작들이 또한 하드웨어 내에도 구현될 수 있음을 당업자들이 이해하는 것으로 제한됨을 의미하는 것은 아니다.
도 2를 참조하여, 본 발명은 디바이스 드라이버(70)에서 어플리케이션(72)으로의 데이터 처리량을 개선하는 시스템 및 방법에 관한 것이다. 디바이스 드라이버는 그 기능을 수행하기 위해 어플리케이션에 의해 요구되는 데이터를 공급한다. 어플리케이션(72)으로의 데이터의 전달의 효율을 강화하기 위해, 디바이스 드라이버는 어플리케이션으로의 즉각적 전달에 대해 준비된 데이터를 저장하는 데이터 큐(76)를 유지한다. 도 2에 도시된 바와 같이, 디바이스 드라이버(70)는 전형적으로 어플리케이션(72)보다 컴퓨터 아키텍쳐의 하위 레벨에 있다. 예를 들어, 디바이스 드라이버(70)는 운영 시스템의 커널 모드에 있을 수 있는 반면, 어플리케이션(72)는 운영 시스템의 사용자 모드에서 동작한다. 디바이스 드라이버(70)는 하위 레벨 상의 다른 드라이버(80)일 수 있는, 데이터 소스로부터 데이터를 수신할 수 있다. 이 데이터 소스는 다음 턴에 다른 소스로부터 데이터를 수신할 수 있다. 예를 들어, 도 2에 도시된 실시예에서, 드라이버(80)는 인터넷 등의 네트워크(82)로부터 데이터를 수신할 수 있다.
데이터 큐(76) 내에 어플리케이션에 의해 소모되는 충분한 데이터가 있는지의 여부에 따라, 디바이스 드라이버(70)에서 어플리케이션(72)으로의 데이터 전달에 대한 두가지 모드가 있다. "느린 I/O" 모드에서는, 데이터 큐(76)에 데이터가 충분하지 않고, 어플리케이션(72)은 비동기 데이터 전달에 대한 요구를 만든다. 데이터는, 데이터가 디바이스 드라이버(70)에게 이용가능하게 된 후에, 어플리케이션(72)에 전달된다. 느리다는 것 외에, 데이터 구조들이 비동기 데이터 요구들을 추적하도록 할당되고 초기화되어야 하므로, 데이터 전달의 이런 모드는 메모리 및 프로세싱의 높은 오버헤드의 단점 또한 갖고 있다. 반대로, "빠른 I/O" 모드에서, 어플리케이션(72)는 동기 데이터 요구를 포스팅하고, 요구된 데이터는 즉각적으로 어플리케이션에 전달된다. 데이터 전달의 이런 모드는 비동기 모드의 오버헤드의 유형들을 초래하지 않는다. 게다가, 어플리케이션에 의해 필요한 데이터는 그 어플리케이션에 즉각적으로 이용가능하게 된다. 어플리케이션이 필요한 데이터를 갖고 있을 때에만 그 기능들을 수행할 수 있기 때문에, 어플리케이션의 성능은 필요할 때 얼마나 빨리 어플리케이션에 전달되는 데이터를 갖을 수 있는지의 여부에 달려있다. 그러므로, 대체적으로 데이터 전달이 빠른 I/O모드로 수행되면, 어플리케이션의 성능은 상당히 개선될 수 있다. 빠른 I/O 모드를 위해 필요한 조건은, 물론, 어플리케이션(72)에 의해 요구된 데이터가 이미 어플리케이션에 의한 소모를 위해 데이터 큐(76) 내에 있는 것이다.
본 발명의 특징에 따라, 빠른 I/O를 위해 데이터 큐(76)에 충분한 데이터를 갖을 가능성은 디바이스 드라이버(70)에게 스레드 스케줄링에 의해 달성되는 새로운 데이터를 갖는 데이터 큐를 생성하는 기회를 더 주므로써 증가된다. 도 3을 참조하여, 빠른 I/O 모드로의 데이터 전달을 허용하기 위해 데이터 큐(76)가 충분한 데이터를 포함함을 보증하기 위해, 데이터 큐(76) 내의 데이터의 양이 시시각각 확인된다(단계 92). 예를 들어, 어플리케이션(72)이 데이터를 더 필요로하지만 그것이 아직 데이터 요구를 발행하기 전에 각 시간마다 이 확인이 수행될 수 있다. 대안적으로, 데이터 소스(예, 드라이버(80))가 디바이스 드라이버에 대한 데이터를 더 가지는 각각의 시간에 이 확인이 수행될 수 있다. 만약 데이터 큐(76) 내의 데이터의 양이 너무 적다고(예, 사전-선택된 임계치보다 적음) 판단되면(단계 96), 컴퓨터 시스템 상에서 동작되고 있는 컴포넌트들의 스레드 스케줄링은 디바이스 드라이버의 스레드를 승격시켜서 디바이스 드라이버에게 데이터 큐에 데이터를 더 넣을 기회를 준다. 여기에 사용된 바와 같이, 디바이스 드라이버 스레드를 "승격(promoting)"시키는 것은 디바이스 드라이버 스레드가 동작하기 위해 그 자신의 턴을 갖도록해서 보다 빠르게 된다는 것을 의미한다. 디바이스 드라이버의 스레드가 동작할 때, 만약 데이터가 소스로부터 이용가능하면, 디바이스 드라이버(70)는 데이터 큐(76)에 이 데이터를 더 넣을 수 있다(단계 100). 그후, 어플리케이션 스레드가 동작할 때, 어플리케이션은 빠른 I/O를 통해 데이터 큐 내의 데이터를 검색할 수 있다(단계 102).
도 2를 다시 참조하여, 스레드 스케줄링이 수정될 수 있는 방법은 운영 시스템의 구현에 달려있다. 예를 들어, 어플리케이션 프로그래밍 인터페이스(API) 기능(110)들은 컴퓨터의 컴포넌트들에 제공되어 스레드 스케줄링 내의 그들의 우선순위를 바꾸고 다른 스레드들을 스위칭하기 위해 호출할 수 있다. 일 실시예에서, 어플리케이션(72)은 데이터를 요구하기 전에 데이터 큐(76)에 충분한 데이터가 있는지의 여부를 확인한다. 만약 데이터의 양이 적다고 생각되면, 어플리케이션 스레드는 스레드 관리자(120)에게 양보할 자신의 의도를 알리기 위해 API(110)의 적절한 기능을 호출하므로써 다른 스레드에게 프로세서를 양보한다. 스위칭되는 다음 스레드는 디바이스 드라이버 스레드가 아닐 수 있음을 명심해야한다. 그것의 스레드를 다른 것에게 단순히 양보함에도 불구하고, 어플리케이션은 디바이스 드라이버 스레드가 스위칭되도록 시간을 가속화하고, 데이터 요구를 포스팅하기 전에 데이터를 더 큐잉할 기회를 디바이스 드라이버에게 준다.
상술된 바와 같이, 어플리케이션 스레드에서 다른 스레드로 스위칭하는것 외에, 디바이스 드라이버 스레드의 승격은 또한 디바이스 드라이버 스레드의 우선순위를 부스팅하거나, 어플리케이션 스레드의 우선순위를 낮춤으로써 이루어질 수도 있다. 스레드의 우선순위를 부스팅하거나 격하시키는 것은 API 기능들을 호출하므로써 수행될 수 있다. 일 실시예에서, 어플리케이션(72) 또는 디바이스 드라이버(70) 중 하나는 API(110)를 호출하여 디바이스 드라이버 스레드의 우선순위를 부스팅할 수 있다. 대안적으로 또는 부가적으로, 도 2의 실시예 내의 드라이버(80)인 디바이스 드라이버에 대한 데이터 소스는 API를 호출하여 디바이스 드라이버 스레드의 우선순위를 부스팅할 수 있다.
스레드 스케줄링을 이용하여 빠른 I/O를 승격하는 것의 효과를 도시하기 위해, 종래의 동기 프로세싱의 예 및 빠른 I/O 승격의 예가 각각 도 4와 5에 제공된다. 이 두개의 예에서, 어플리케이션은 인터넷으로부터 수신된 웹 요구들을 서빙하는 "어플리케이션 풀(App Pool)"로 불린다. 이러한 경우에, 어플리케이션 풀에 의해 프로세싱되는 데이터는 웹 요구들의 형태이다. 어플리케이션 풀에 웹 요구들을 공급할 책임이 있는 디바이스 드라이버는 Http.sys 드라이버(126)이다. Http.sys 드라이버(126)는 인터넷으로부터 요구를 수신하는 전송 드라이버 인터페이스(TDI) 드라이버(128)로부터 웹 요구들을 차례로 수신한다. TDI 드라이버(128)는 Http.sys 드라이버에 의해 픽업될 네트워크로부터 수신된 웹 요구들을 저장하는 버퍼(130)를 갖는다. 유사하게, Http.sys 드라이버(126)는 어플리케이션 풀(122)에 의해 픽업될 요구들을 저장하는 큐(136)를 갖는다.
도 4에 도시된 예에서, 본 발명의 빠른 I/O 승격은 구현되지 않았으므로, 큐(136)에 프로세싱될 데이터(웹 요구들)가 더이상 없을 때, 어플리케이션 풀(122)은 종래의 비동기 데이터 요구들을 포스팅한다. A-E로 라벨링된 큐(136) 및 버퍼(130)의 다섯개의 연속적인 상태가 도 4에 도시된다. 화살표(138)는 어플리케이션 풀(122), Http.sys 드라이버(126), 또는 TDI 드라이버(128) 중 어느 것이 프로세서를 갖는지, 즉, 동작중인 자신의 스레드를 갖는지를 나타내는데 사용된다. 그러므로, 상태 A에서는, 어플리케이션 풀 스레드가 동작 중이다. 어플리케이션 풀(122)이 웹 요구들을 수신하려고 할 때, 그것은 큐(136)가 비었다는 것을 발견한다. 종래와 같이, 어플리케이션 풀(122)은 큐(136)에 두개의 "수신 IRP"들을 포스팅한다. IRP("I/O 요구 패킷")는 데이터의 비동기 전달을 위해 사용되는 데이터 구조이다. 상태 B에서는 Http.sys 스레드가 동작할 턴이다. Http.sys는 버퍼(130)로부터 검색되는 웹 요구들을 사용하여 두개의 포스팅된 수신 IRP들을 완성한다. 상태 C에서, Http.sys는 버퍼(130)에 남아있는 웹 요구를 큐(136)로 이동시킨다. 상태 D에서, 어플리케이션 풀 스레드는 복귀된다. 이 시점에서, 큐(136)에는 한개의 웹 요구가 있다. 어플리케이션 풀이 프로세싱하는 동안, 인터럽트 드라이브된, TDI 드라이버(128)는 웹 요구들을 버퍼(130)에 더 위치시킬 수 있다. 상태 E에서, 어플리케이션 풀은 빠른 I/O를 통해 큐(136) 내의 웹 요구들 만을 소모하여, 또다시 데이터를 더 필요로 한다. 한편, TDI는 웹 요구들을 버퍼에 계속 추가한다.
도 5에 도시된 예에서, 빠른 I/O 승격이 구현된다. 도 5는 A-C로 라벨링된 세개의 상태들을 도시한다. 가급적, 호출을 수신할 때, 어플리케이션 풀은 항상 큐(136) 내에서 데이터 아이템을 찾을 것이다. 웹 요구가 큐(136)에 표시되면, 수신 호출이 빠른 I/O를 통해 즉각적으로 완성된다. 이것은 어프리케이션 풀이 큐(136) 내의 데이터를 비우기 위해 폐쇄할 때 Http.sys 스레드가 승격되면 더욱 자주 발생할 수 있다. 상태 A에 도시된 바와 같이, 어플리케이션 풀(122)은 큐(136)를 확인하고 큐에 데이터가 거의 남아있지 않았음을 관측한다. 응답으로 어플리케이션 풀(122)은 자신의 스레드를 양보하고 Http.sys의 우선순위를 부스팅하여 Http.sys가 동작되도록 만든다. 상태 B에서, Http.sys 스레드는 동작하고, Http.sys 드라이버는 웹 요구들을 버퍼(130)에서 큐(136)로 이동시킨다. 어플리케이션 풀 스레드가 상태 C로 복귀될 때, 큐(136) 내에 충분한 웹 요구들이 있어서 그것은 빠른 I/O를 통해 검색한다. 큐(136) 내의 요구들의 수가 또다시 적어지면, 어플리케이션 풀 스레드는 다른 스레드에게 양보를 한다.
본 발명의 원리가 적용될 수 있는 복수의 가능한 실시예들의 관점에서, 도면들과 관련되 여기에 기재된 실시예들은 단지 도시적인 것일 뿐이며 본 발명의 영역에 제한을 주는 것은 아니다. 그러므로, 여기에 기재된 본 발명은 다음의 청구항 및 그것의 동등물의 영역 내에 들어올 수 있는 모든 이러한 실시예들을 완성시킨다.
본 발명은 데이터를 디바이스 드라이버에서 어플리케이션으로 전달하는 시스템 및 방법을 제공하며, 이 것은 스레드 스케줄링을 사용하여 어플케이션으로의 데이터 전달의 동기 프로세싱(예를 들어, 빠른 I/O 모드)의 사용을 증가시켜서 요구된 데이터가 즉각적인 전달에 이용 가능하게 되는 것을 강화시킨다.
도 1은 본 발명의 디렉토리 서비스에 대한 오브젝트 할당량 관리가 구현될 수 있는 예시적인 컴퓨터 시스템을 일반적으로 도시하는 블럭도.
도 2는 드라이버에서 어플리케이션으로 데이터를 전달하기 위해 데이터 요구들의 동기 프로세싱(예를 들어, 빠른 I/O)의 사용을 승격시키는 본 발명의 실시예를 구현하는 컴퓨터 시스템을 도시하는 개요도.
도 3은 스레드 스케줄링으로 빠른 I/O의 사용성을 증가시키는 방법을 요약하는 순서도.
도 4는 종래 기술에서 비동기 데이터 전달이 사용되는 예로서 디바이스 드라이버 및 그들의 데이터 큐의 다양한 상태들을 도시하는 개요도.
도 5는 본 별명의 실시예에 따라 스레드 스케줄링을 수정하므로써 빠른 I/O의 사용성을 승격시키는 효과의 예로서 디바이스 드라이버 및 그것의 데이터 큐의 상태들을 도시하는 개요도.
*도면의 주요부분에 대한 부호의 설명*
70: 디바이스 드라이버
76: 데이터 큐
120: 스레드 관리자
122: 어플리케이션 풀
128: 전송 드라이버 인터페이스(TDI) 드라이버

Claims (22)

  1. 디바이스 드라이버로부터 컴퓨터 상에서 동작중인 어플리케이션으로 데이터를 전달하는 단계들을 수행하는 컴퓨터-실행가능 명령들을 갖는 컴퓨터-판독가능 매체에 있어서,
    동기 전달이 준비된 데이터 아이템들을 상기 어플이케이션에 저장하기 위해 상기 디바이스 드라이버에 의해 사용되는 데이터 큐 내의 데이터를 확인하는 확인 단계;
    상기 데이터 큐 내의 데이터 양이 임계치를 초과할 때, 상기 데이터 큐 내의 데이터 아이템들을 상기 어플리케이션에 동기적으로 전달하는 전달 단계; 및
    상기 데이터 큐 내의 데이터 양이 임계치 이하에 있을 때, 스레드 스케줄링으로 상기 디바이스 드라이버의 스레드를 승격시키는 승격 단계를 포함하는 컴퓨터-판독가능 매체.
  2. 제1항에 있어서, 상기 디바이스 드라이버의 상기 스레드를 승격시키는 상기 승격 단계는 상기 어플리케이션의 스레드를 다른 스레드에게 양보하는 단계를 포함하는 컴퓨터-판독가능 매체.
  3. 제1항에 있어서, 상기 디바이스 드라이버의 상기 스레드를 승격시키는 상기 승격 단계는 상기 디바이스 드라이버의 상기 스레드의 우선순위를 부스팅하는 단계를 포함하는 컴퓨터-판독가능 매체.
  4. 제1항에 있어서, 상기 디바이스 드라이버의 상기 스레드를 승격시키는 상기 승격 단계는 상기 어플리케이션의 스레드의 우선순위를 낮추는 단계를 포함하는 컴퓨터-판독가능 매체.
  5. 제1항에 있어서, 상기 디바이스 드라이버에 의해 데이터 아이템들을 상기 어플리케이션으로의 전달을 위해 제2 드라이버의 버퍼에서 상기 데이터 큐로 이동시키는 단계를 수행하는 컴퓨터-판독가능 명령들을 더 포함하는 컴퓨터-판독가능 매체.
  6. 제1항에 있어서, 상기 데이터 아이템들은 웹 요구들인 컴퓨터-판독가능 매체.
  7. 제6항에 있어서,
    제2 드라이버에 의해, 인터넷으로부터 웹 요구들을 수신하는 단계;
    상기 제2 드라이버에 의해, 상기 수신된 웹 요구들을 버퍼에 저장하는 단계; 및
    상기 드라이버에 의해, 상기 어플리케이션으로의 동기 전달을 위해 상기 버퍼 내의 상기 웹 요구들을 상기 데이터 큐로 이동시키는 단계를 수행하는 컴퓨터-판독가능 명령들을 더 포함하는 컴퓨터-판독가능 매체.
  8. 제1항에 있어서, 상기 디바이스 드라이버의 상기 스레드를 승격시키는 상기 승격 단계는 상기 컴퓨터의 스레드 스케줄링을 수정하는 API 기능을 호출하는 단계를 포함하는 컴퓨터-판독가능 매체.
  9. 데이터를 디바이스 드라이버에서 스레드 스케줄링을 구현한 컴퓨터 상에서 동작중인 어플리케이션으로 전달하는 방법에 있어서,
    상기 어플리케이션에 동기 전달이 준비된 데이터 아이템들을 저장하기위해 상기 디바이스 드라이버에 의해 사용되는 데이터 큐 내의 데이터를 확인하는 확인 단계;
    상기 데이터 큐 내의 데이터 양이 임계치를 초과할 때, 상기 데이터 큐 내의 데이터 아이템들을 상기 어플리케이션에 동기적으로 전달하는 전달 단계; 및
    상기 데이터 큐 내의 데이터 양이 임계치 이하에 있을 때, 스레드 스케줄링으로 상기 디바이스 드라이버의 스레드를 승격시키는 승격 단계를 포함하는 방법.
  10. 제9항에 있어서, 상기 디바이스 드라이버의 상기 스레드를 승격시키는 상기 승격 단계는 상기 어플리케이션의 스레드를 다른 스레드에게 양보하는 단계를 포함하는 방법.
  11. 제9항에 있어서, 상기 디바이스 드라이버의 상기 스레드를 승격시키는 상기 승격 단계는 상기 디바이스 드라이버의 상기 스레드의 우선순위를 부스팅하는 단계를 포함하는 방법.
  12. 제9항에 있어서, 상기 디바이스 드라이버의 상기 스레드를 승격시키는 상기 승격 단계는 상기 어플리케이션의 스레드의 우선순위를 낮추는 단계를 포함하는 방법.
  13. 제9항에 있어서, 상기 디바이스 드라이버에 의해 데이터 아이템들을 상기 어플리케이션으로의 전달을 위해 제2 드라이버의 버퍼에서 상기 데이터 큐로 이동시키는 단계를 더 포함하는 방법.
  14. 제9항에 있어서, 상기 데이터 아이템들은 웹 요구들인 방법.
  15. 제14항에 있어서,
    제2 드라이버에 의해, 인터넷으로부터 웹 요구들을 수신하는 단계;
    상기 제2 드라이버에 의해, 상기 수신된 웹 요구들을 버퍼에 저장하는 단계; 및
    상기 드라이버에 의해, 상기 버퍼 내의 상기 웹 요구들을 상기 어플리케이션으로의 동기 전달을 위해 상기 데이터 큐로 이동시키는 단계를 더 포함하는 방법.
  16. 제9항에 있어서, 상기 디바이스 드라이버의 상기 스레드를 승격시키는 상기 승격 단계는 상기 컴퓨터의 스레드 스케줄링을 수정하는 API 기능을 호출하는 단계를 포함하는 방법.
  17. 컴퓨터 시스템에 있어서,
    상기 컴퓨터 시스템의 스레드 스케줄링을 관리하는 스레드 관리자;
    데이터 아이템들을 프로세싱하는 어플리케이션;
    상기 어플리케이션으로 전달이 준비된 데이터 아이템들을 저장하는 데이터 큐; 및
    상기 어플리케이션에 데이터 아이템들을 포워딩하는 디바이스 드라이버를 포함하고,
    상기 디바이스 드라이버는 상기 데이터 큐 내에서 상기 어플리케이션으로 전달이 준비된 상기 데이터 아이템들을 저장하고.
    상기 어플리케이션은 상기 데이터 큐를 확인하고, 상기 데이터 큐 내의 데이터 양이 임계치를 초과하면 상기 데이터 큐에 저장된 데이터 아이템들을 동기적으로 수신하며, 상기 데이터 큐 내의 상기 데이터 양이 상기 임계치의 이하에 있으면 상기 디바이스 드라이버의 스레드를 승격시키도록 프로그래밍되는 컴퓨터 시스템.
  18. 제17항에 있어서, 상기 어플리케이션은 상기 어플리케이션의 스레드를 다른 스레드에 양보하므로써 상기 디바이스 드라이버의 상기 스레드를 승격시키는 컴퓨터 시스템.
  19. 제17항에 있어서, 상기 어플리케이션은 상기 디바이스 드라이버의 스레드의 우선순위를 부스팅하므로써 상기 디바이스 드라이버의 상기 스레드를 승격시키는 컴퓨터 시스템.
  20. 제17항에 있어서, 상기 어플리케이션은 상기 어플리케이션의 스레드의 우선순위를 낮춤으로써 상기 디바이스 드라이버의 상기 스레드를 승격시키는 컴퓨터 시스템.
  21. 제17항에 있어서, 상기 어플리케이션에 의해 프로세싱될 데이터 아이템들을 수신하고, 상기 디바이스 드라이버에 의한 검색을 위해 버퍼에 상기 수신된 데이터 아이템들을 위치시키는 상기 제2 드라이버를 더 포함하는 컴퓨터 시스템.
  22. 제17항에 있어서, 상기 컴퓨터 시스템의 스레드 스케줄링을 수정하기 위한 API 기능을 더 포함하고, 상기 어플리케이션은 상기 API 기능을 호출하여 상기 디바이스 드라이버의 상기 스레드를 승격시키는 컴퓨터 시스템.
KR1020040067479A 2003-08-29 2004-08-26 스레드 스케줄링을 사용하여 데이터 처리량을 증가시키는시스템 및 방법 KR20050021312A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/652,709 2003-08-29
US10/652,709 US7690003B2 (en) 2003-08-29 2003-08-29 System and method for increasing data throughput using thread scheduling

Publications (1)

Publication Number Publication Date
KR20050021312A true KR20050021312A (ko) 2005-03-07

Family

ID=34217711

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040067479A KR20050021312A (ko) 2003-08-29 2004-08-26 스레드 스케줄링을 사용하여 데이터 처리량을 증가시키는시스템 및 방법

Country Status (5)

Country Link
US (1) US7690003B2 (ko)
EP (1) EP1536334A3 (ko)
JP (1) JP2005092875A (ko)
KR (1) KR20050021312A (ko)
CN (1) CN100424647C (ko)

Families Citing this family (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8126861B2 (en) * 2004-01-02 2012-02-28 Cerner Innovation, Inc. System and method for managing large data sets
ITUD20050209A1 (it) 2005-12-09 2007-06-10 Eurotech Spa Metodo per l'individuazione di affinita' tra soggetti e relativo apparato
KR101282139B1 (ko) * 2006-09-11 2013-07-04 삼성전자주식회사 별도 버튼을 이용하여 성능모드 변경이 가능한컴퓨터시스템 및 그 제어방법
US8589357B2 (en) * 2006-10-20 2013-11-19 Oracle International Corporation Techniques for automatically tracking and archiving transactional data changes
KR20080064608A (ko) * 2007-01-05 2008-07-09 삼성전자주식회사 SPI(Simple PriorityInheritance) 방식에 따른 멀티태스킹 방법 및임베디드 시스템
DE102007028730A1 (de) * 2007-06-21 2008-12-24 Siemens Ag Verfahren und Vorrichtung zum Betreiben eines technischen Systems
CN101436146B (zh) * 2008-12-15 2012-05-09 中兴通讯股份有限公司 动态调节远程设备管理进程的优先级的方法及系统
US7975047B2 (en) 2008-12-19 2011-07-05 Oracle International Corporation Reliable processing of HTTP requests
US9218211B2 (en) * 2009-01-02 2015-12-22 International Business Machines Corporation Priority promotion for service requests
KR101644800B1 (ko) * 2010-01-07 2016-08-02 삼성전자주식회사 컴퓨팅 시스템 및 방법
CN102298580A (zh) 2010-06-22 2011-12-28 Sap股份公司 使用异步缓冲器的多核查询处理
EP2405353B1 (en) * 2010-07-07 2017-11-22 Sap Se Multi-core query processing using asynchronous buffers
CN101937465B (zh) * 2010-09-10 2013-09-11 中兴通讯股份有限公司 分布式文件系统及其中的上层文件系统的访问方法
US8677361B2 (en) * 2010-09-30 2014-03-18 International Business Machines Corporation Scheduling threads based on an actual power consumption and a predicted new power consumption
KR101397592B1 (ko) 2012-03-21 2014-05-20 삼성전자주식회사 멀티미디어 콘텐츠를 수신하기 위한 방법 및 장치
EP2842281A4 (en) * 2012-04-23 2015-12-30 Marvell World Trade Ltd ADJUSTING PRIORITY OF EXECUTING WIRE TO IMPROVE FLOW BETWEEN APPROVED DEVICES (P2P)
US9411637B2 (en) * 2012-06-08 2016-08-09 Apple Inc. Adaptive process importance
CN103838547B (zh) * 2012-11-27 2018-05-11 中国电信股份有限公司 一种队列的管理方法和装置
KR101321430B1 (ko) * 2013-01-23 2013-10-28 삼성전자주식회사 별도 버튼을 이용하여 성능모드 변경이 가능한 컴퓨터시스템 및 그 제어방법
US9563474B2 (en) 2013-06-13 2017-02-07 Wipro Limited Methods for managing threads within an application and devices thereof
KR101380747B1 (ko) * 2013-07-16 2014-04-02 삼성전자주식회사 별도 버튼을 이용하여 성능모드 변경이 가능한 컴퓨터시스템 및 그 제어방법
CN104298617B (zh) * 2014-08-20 2017-12-08 深圳大学 一种numa平台中非核部件数据流缓冲管理的优化方法及系统
US20200276276A1 (en) 2016-03-01 2020-09-03 Ascendis Pharma Bone Diseases A/S PTH Prodrugs
WO2018011266A1 (en) 2016-07-13 2018-01-18 Ascendis Pharma A/S Conjugation method for carrier-linked prodrugs
MA46428A (fr) 2016-09-29 2019-08-07 Ascendis Pharma Bone Diseases As Schéma posologique incrémentiel dans des composés de pth à libération contrôlée
FI3518960T3 (fi) 2016-09-29 2023-10-04 Ascendis Pharma Bone Diseases As Annostusohjelma kontrolloidusti vapautuvalle PTH-yhdisteelle
CA3037448A1 (en) 2016-09-29 2018-04-05 Ascendis Pharma Growth Disorders A/S Combination therapy with controlled-release cnp agonists
MX2019003182A (es) 2016-09-29 2019-08-05 Ascendis Pharma Bone Diseases As Compuestos de hormona paratiroidea con bajas relaciones pico - valle.
CA3055985A1 (en) 2017-03-22 2018-09-27 Genentech, Inc. Hydrogel cross-linked hyaluronic acid prodrug compositions and methods
KR101889749B1 (ko) 2017-07-21 2018-09-20 주식회사 티맥스데이터 메시지 스케줄링 방법
CA3093083A1 (en) 2018-03-28 2019-10-03 Ascendis Pharma A/S Conjugates
EP3773680A1 (en) 2018-03-28 2021-02-17 Ascendis Pharma Oncology Division A/S Il-2 conjugates
EP3793587A1 (en) 2018-05-18 2021-03-24 Ascendis Pharma Bone Diseases A/S Starting dose of pth conjugates
US20210330798A1 (en) 2018-09-26 2021-10-28 Ascendis Pharma A/S Treatment of infections
US20210330807A1 (en) 2018-09-26 2021-10-28 Ascendis Pharma A/S Novel hydrogel conjugates
WO2020064847A1 (en) 2018-09-26 2020-04-02 Ascendis Pharma A/S Degradable hyaluronic acid hydrogels
CA3125533A1 (en) 2019-01-04 2020-07-09 Ascendis Pharma Oncology Division A/S Conjugates of pattern recognition receptor agonists
EP3906018A1 (en) 2019-01-04 2021-11-10 Ascendis Pharma Oncology Division A/S Induction of sustained local inflammation
JP2022516314A (ja) 2019-01-04 2022-02-25 アセンディス ファーマ オンコロジー ディヴィジョン エー/エス 自然免疫アゴニストのための持続性局所性薬物レベル
CA3125541A1 (en) 2019-01-04 2020-07-09 Ascendis Pharma Oncology Division A/S Minimization of systemic inflammation
US20220088149A1 (en) 2019-02-11 2022-03-24 Ascendis Pharma Bone Diseases A/S Liquid Pharmaceutical Formulations of PTH Conjugates
WO2020254607A1 (en) 2019-06-21 2020-12-24 Ascendis Pharma Oncology Division A/S Anti-ctla4 compounds with localized pd properties
EP3986479A1 (en) 2019-06-21 2022-04-27 Ascendis Pharma Oncology Division A/S Anti-ctla4 conjugates
WO2020254612A1 (en) 2019-06-21 2020-12-24 Ascendis Pharma Oncology Division A/S Controlled-release tyrosine kinase inhibitor compounds with localized pd properties
WO2020254617A1 (en) 2019-06-21 2020-12-24 Ascendis Pharma Oncology Division A/S Anti-ctla4 compounds with localized pk properties
TW202114660A (zh) 2019-06-21 2021-04-16 丹麥商阿仙帝斯製藥公司 酪胺酸激酶抑制劑結合物
WO2020254613A1 (en) 2019-06-21 2020-12-24 Ascendis Pharma Oncology Division A/S Controlled-release tyrosine kinase inhibitor compounds with localized pk properties
KR20220128390A (ko) 2020-01-13 2022-09-20 아센디스 파마 본 디지즈 에이/에스 부갑상선기능저하증 치료
TW202210502A (zh) 2020-06-03 2022-03-16 丹麥商阿森迪斯腫瘤製藥有限公司 新穎il-2序列及其用途
AU2021335032A1 (en) 2020-08-28 2023-03-09 Ascendis Pharma Oncology Division A/S Glycosylated IL-2 proteins and uses thereof
EP4217004A1 (en) 2020-09-28 2023-08-02 Ascendis Pharma Bone Diseases A/S Improvement of physical and mental well-being of patients with hypoparathyroidism
KR20230164709A (ko) 2021-04-01 2023-12-04 아센디스 파마 에이에스 염증 유발 질환을 치료하기 위한 지속형 성장 호르몬의 용도
JP2023009354A (ja) * 2021-07-07 2023-01-20 富士通株式会社 演算処理装置および演算処理方法
AU2022350937A1 (en) 2021-09-22 2024-03-21 Ascendis Pharma Bone Diseases A/S Long-acting pth compound treatments

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5060140A (en) * 1986-01-16 1991-10-22 Jupiter Technology Inc. Universal programmable data communication connection system
GB8814633D0 (en) * 1987-11-18 1988-07-27 Ibm Bus flow control mechanism
US5630128A (en) 1991-08-09 1997-05-13 International Business Machines Corporation Controlled scheduling of program threads in a multitasking operating system
US5247675A (en) 1991-08-09 1993-09-21 International Business Machines Corporation Preemptive and non-preemptive scheduling and execution of program threads in a multitasking operating system
JPH0773090A (ja) * 1993-06-21 1995-03-17 Hitachi Ltd 計算機システムおよび二次記憶装置
JPH07334403A (ja) * 1994-06-09 1995-12-22 Sony Corp ファイル管理方法およびこれを使用した画像データ処理装置
US5732286A (en) * 1995-08-10 1998-03-24 Cirrus Logic, Inc. FIFO based receive packet throttle for receiving long strings of short data packets
US5812844A (en) 1995-12-07 1998-09-22 Microsoft Corporation Method and system for scheduling the execution of threads using optional time-specific scheduling constraints
US5875329A (en) * 1995-12-22 1999-02-23 International Business Machines Corp. Intelligent batching of distributed messages
US6427161B1 (en) 1998-06-12 2002-07-30 International Business Machines Corporation Thread scheduling techniques for multithreaded servers
US6289369B1 (en) 1998-08-25 2001-09-11 International Business Machines Corporation Affinity, locality, and load balancing in scheduling user program-level threads for execution by a computer system
TW511034B (en) * 1998-11-09 2002-11-21 Intel Corp Scheduling requests in a system
JP2001014177A (ja) * 1999-06-30 2001-01-19 Fujitsu Ltd 非同期データ入出力処理方法およびそのプログラム記録媒体
US6578065B1 (en) 1999-09-23 2003-06-10 Hewlett-Packard Development Company L.P. Multi-threaded processing system and method for scheduling the execution of threads based on data received from a cache memory
US6880017B1 (en) * 2000-03-20 2005-04-12 International Business Machines Corporation System and method for providing an adaptive streaming flow control mechanism between the TCP and IP layers of the TCP/IP suite of protocols
DE10291762B4 (de) * 2001-04-25 2014-07-10 Sony Corporation Datenübertragungsverfahren und Datenübertragungsgerät zum Übertragen von Datenstromdaten
US7286549B2 (en) * 2002-10-30 2007-10-23 Intel Corporation Method, system, and program for processing data packets in packet buffers

Also Published As

Publication number Publication date
EP1536334A2 (en) 2005-06-01
US20050050552A1 (en) 2005-03-03
CN100424647C (zh) 2008-10-08
US7690003B2 (en) 2010-03-30
JP2005092875A (ja) 2005-04-07
EP1536334A3 (en) 2007-09-05
CN1595361A (zh) 2005-03-16

Similar Documents

Publication Publication Date Title
KR20050021312A (ko) 스레드 스케줄링을 사용하여 데이터 처리량을 증가시키는시스템 및 방법
US7506345B2 (en) Method and apparatus for adapting and hosting legacy user interface controls
US20170357448A1 (en) Selective i/o prioritization by system process/thread
US20050289505A1 (en) Method and system for improving performance and scalability of applications that utilize a flow-based-programming methodology
US6457064B1 (en) Method and apparatus for detecting input directed to a thread in a multi-threaded process
US11080112B2 (en) Message recall
US11005970B2 (en) Data storage system with processor scheduling using distributed peek-poller threads
US8886845B1 (en) I/O scheduling system and method
US7970814B2 (en) Method and apparatus for providing a synchronous interface for an asynchronous service
CN110851276A (zh) 一种业务请求处理方法、装置、服务器和存储介质
EP1667019A2 (en) Improving operating system performance
CN112600761A (zh) 一种资源分配的方法、装置及存储介质
US9229716B2 (en) Time-based task priority boost management using boost register values
US7581045B2 (en) Method, system, and article of manufacture for mapping programming interfaces
US6704836B1 (en) Method for dynamic control of concurrent extended copy tasks
US7243041B2 (en) GUID, PnPID, isochronous bandwidth based mechanism for achieving memory controller thermal throttling
US6826634B2 (en) Extended message block for network device drivers
US7496928B2 (en) Method and system for moderating thread priority boost for I/O completion
US7336664B2 (en) Data processing device and its input/output method and program
US7047321B1 (en) Unblocking an operating system thread for managing input/output requests to hardware devices
CN112749031B (zh) 直播消息的处理方法、装置、设备及存储介质
US20050038971A1 (en) Adjustment of free storage capacity for improved usage
US20010025324A1 (en) Data communication method and apparatus, and storage medium storing program for implementing the method and apparatus
CN113918307A (zh) 一种任务处理方法、装置、设备及介质
US6345312B1 (en) Selectively dummying a data pipe transparent to a writer application

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid