JP6009529B2 - マルチスレッドシステムの中でイベントを設定するための技術 - Google Patents

マルチスレッドシステムの中でイベントを設定するための技術 Download PDF

Info

Publication number
JP6009529B2
JP6009529B2 JP2014260693A JP2014260693A JP6009529B2 JP 6009529 B2 JP6009529 B2 JP 6009529B2 JP 2014260693 A JP2014260693 A JP 2014260693A JP 2014260693 A JP2014260693 A JP 2014260693A JP 6009529 B2 JP6009529 B2 JP 6009529B2
Authority
JP
Japan
Prior art keywords
thread
event
events
pending
temporarily
Prior art date
Legal status (The legal status 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 status listed.)
Expired - Fee Related
Application number
JP2014260693A
Other languages
English (en)
Other versions
JP2015097106A (ja
Inventor
デイビッド・ブラックマン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2015097106A publication Critical patent/JP2015097106A/ja
Application granted granted Critical
Publication of JP6009529B2 publication Critical patent/JP6009529B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Telephonic Communication Services (AREA)
  • Telephone Function (AREA)
  • Computer And Data Communications (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Description

本発明は一般にコンピュータ処理に関し、より詳細には、マルチスレッドシステムの中でイベントを設定するための技術に関する。
オペレーティングシステムは、1つの一般的な種類のマルチスレッドシステムである。オペレーティングシステムは様々なシステムリソース(例えばハードウェア装置、記憶装置、インタフェースなど)を管理し、システムリソースにアクセスするためにアプリケーションがオペレーティングシステム上でランすることを可能にするサービスを提供する。典型的にオペレーティングシステムは、適切に起動、スケジュールおよび処理されるスレッドを介して、これらのサービスを提供する。スレッドは、実行されるべきタスクとして考えられてもよい。
リアルタイムオペレーティングシステムはオペレーティングシステムの1つのクラスであり、一般に無線装置(例えば携帯電話)、携帯情報端末(PDA)などの多くの電子装置のために使用される。リアルタイムオペレーティングシステムの主要な属性は、割り込み優先権に基づくスケジューリングである。この種類のスケジューリングは、実行のために準備ができているすべてのスレッドの中で、最も高い優先権を備えたスレッドが最初に処理されるように、スレッドをスケジュールしようとする。各スレッドは特定の優先権、および場合によっては、スレッドが処理されることが可能となる前に設定されなければならないイベントに関連している。イベントが設定されるたびに、オペレーティングシステムは、どのスレッドが実行のために準備ができているのか(すなわち任意のイベント上で待機中ではないか、または設定済みのイベント上で待機中であるか)を判定し、準備ができている最も高い優先権のスレッドをスケジュールする。現在処理されているスレッドは、より高い優先権を有し、実行のために準備ができている別のスレッドによって割り込まれてもよい。
リアルタイムオペレーティングシステムによって、アクティブスレッドは1回につき単一のイベントを設定することができてもよい。しかしながら、アクティブスレッドは設定される複数のイベントを有している場合があり、以下で説明されるように、アクティブスレッドがこれらのイベントを設定する順序が、スレッドがスケジュールされる順序に影響を及ぼす場合がある。イベントが設定される順序のせいで、スレッドが望ましくない順序でスケジュールされる場合、システムの処理能力は低下する場合がある。
したがって当技術分野では、マルチスレッドシステムの中でイベントを設定するための技術が必要とされている。
本明細書では、マルチスレッドシステム(例えばリアルタイムオペレーティングシステム)の中で、スケジューラによるスレッドの中間スケジューリングを伴わずにイベントを設定するための技術が説明される。マルチスレッドシステムの中で1つまたは複数のイベントを設定するために、最初にスケジューラは本質的に無効にされる。次いで、例えば単一のイベントを設定するために関数を繰り返し呼び出すことによって、イベントが設定される。この関数は、設定されるべき各イベントについて1回呼び出されてもよい。スケジューラはその後、その通常の効果に回復される。
1つの実施形態で、処理されている現在のスレッドの優先権を、例えばシステム中で最も高い可能な優先レベルなどの高い優先レベルに人為的に設定することによって、スケジューラは無効にされる。このことは、イベントが設定される時間に、別のスレッドがスケジュールされること、および現在のスレッドが別のスレッドによって割り込まれることを回避する。すべてのイベントが設定された後、現在のスレッドの優先権は本来の優先レベルに回復される。ここで現在のスレッドはより高い優先権を備えた別のスレッドによって割り込まれることが可能であるので、このことはその後スケジューラをその通常の効果に回復する。
本明細書で説明されるイベント設定技術はソフトウェアシステム、ハードウェアシステム、またはハードウェアとソフトウェアの両方を備えたシステムのために使用されてもよい。例えば、中間スケジューリングを伴わずにイベントを設定するためのコードは、スレッドによって呼び出されてもよいソフトウェア関数として実装されてもよい。この関数はその後、1回につき単一のイベントを設定するために、(例えばオペレーティングシステムによって提供される)別のソフトウェア関数を呼び出してもよい。
本発明の様々な態様および実施形態は、以下でより詳細に説明される。
本発明の機能および性質は、全体を通じて同じ参照符号が対応して識別を行う図面と合わせて考慮する場合に、以下で言及される詳細な説明から、より明らかとなろう。
例示的なマルチスレッドシステムを示す図である。 図2Bとは異なる順序で設定される、2つのイベント上で待機中の2つのスレッドのスケジューリングを示す図である。 図2Aとは異なる順序で設定される、2つのイベント上で待機中の2つのスレッドのスケジューリングを示す図である。 中間スケジューリングを伴わずに設定される、2つのイベント上で待機中の2つのスレッドのスケジューリングを示す図である。 中間スケジューリングを伴わずにイベントを設定するためのプロセスを示す図である。 優先権を操作することによって、中間スケジューリングを伴わずにイベントを設定するためのプロセスを示す図である。 図4のプロセスの実施を示す図である。 別のマルチスレッドシステムを示す図である。 無線装置のブロック図である。 記憶システムのブロック図である。
本明細書では「例示的」という語は、「例、実例、または具体例としての役割を果たす」ということを意味するために使用される。本明細書で「例示的」として説明される任意の実施形態または設計は、必ずしもその他の実施形態もしくは設計よりも好ましいか、または有利なものとして解釈されるわけではない。
図1は、本明細書で説明されるイベント設定技術が用いられてもよい例示的なマルチスレッドシステム100の図を示す。スレッド110x、110yおよび110zはアプリケーション(図1に不図示)によって起動されてもよく、スケジュールかつ実行されるべきものである。スレッドとは、これもまたスレッドであってよい主体によって実行されるべきタスクのことである。スレッドは、(1)タスクのために実行されるべきソフトウェアコード、および(2)例えばレジスタ、スタック、変数などのタスクについての状態情報に関連していてもよい。スレッドは、任意の所与の時点での複数の可能な状態(例えば「保留」、「準備済み」および「アクティブ」)のうちの1つであってよい。本明細書で使用される際、「保留」スレッドとは、スケジュールされることが可能になる前のイベントで待機中のスレッドのことであり、「準備済み」スレッドとは、実行のために準備ができていて(すなわち任意のイベント上で待機中ではない)、スケジュールされてもよいスレッドのことであり、「アクティブ」スレッドとは、スケジュールが完了していて、現在ラン中のスレッドのことである。
各スレッド110は、スレッドの重要性を示す優先レベル/値と関連している。各スレッドの優先権は、例えばスレッドを起動するアプリケーションに割り当てられた優先権によって決定されてもよい。優先値の値域はシステムのために使用されてもよく、より高い優先値はより大きな重要度に対応してもよい。次いで、各スレッドについての優先値は、そのスレッドの相対的重要度に基づいて可能な優先値の値域から選択される。各スレッド110はさらに、ゼロ、1つまたは複数の保留イベントに関連している。イベントは、スレッドの状態または状況を示している。オペレーティングシステムのコンテキストでは、イベントは信号、フラグ、メッセージ、またはその他の用語とも呼ばれる。保留イベントとは、スレッドがスケジュールされることが可能になる前に、少なくとも1つのスレッドが待機しているイベントのことである。
スケジューラ120はスレッド110を受信し、実行のためにこれらのスレッドをスケジュールする。典型的に、任意の所与の時点で1つだけのスレッド110がスケジュールされ、スケジュールされたスレッドはアクティブスレッドとなり、実行する。スケジューラ120は、(1)これらのスレッドについての優先値および保留イベント、ならびに(2)現在ラン中であるアクティブスレッド130により設定されたイベントに基づいて、スレッド110をスケジュールする。スケジューラ120はさらに、任意の所与の時点で最も高い優先権を備え、実行のための準備ができているスレッドがランするように、スレッドをスケジュールする。
アクティブスレッド130は、スケジューラ120によってスケジュールされ、現在ラン中であるスレッドである。アクティブスレッド130はまた、アクティブスレッドのために適用可能であり、別の保留スレッド110をスケジュールするためにスケジューラ120によって使用されてもよいイベントを設定する。アクティブスレッド130は、関連した状態または状況が生じるたびに、各イベントを設定してもよい。
マルチスレッドシステム100はソフトウェアシステム、ハードウェアシステム、またはソフトウェアとハードウェアの両方を備えたシステムであってよい。明快であるために、以下の説明のうちのある部分は、スケジューラ120がオペレーティングシステム(例えばリアルタイムオペレーティングシステム)の一部である、特定のマルチスレッドシステムについてのものである。
オペレーティングシステムによって、スレッド(例えばアクティブスレッド130)は1回につき単一のイベントを設定することができる。イベントが設定されるたびに、オペレーティングシステムは、ちょうど設定されたイベントに適した動作を実行する。例えばオペレーティングシステムは、アクティブスレッド130によって設定されたイベントに基づいて、保留スレッドをスケジュールしてもよい。イベントが設定されるたびに、オペレーティングシステムは、ちょうど設定されたイベント上で待機中の保留スレッドおよび現在処理されているスレッドを含む、実行のために準備ができているすべてのスレッドを識別する。次いでオペレーティングシステムは、最も高い優先権を備えた準備済みスレッドを実行のためにスケジュールする。
アクティブスレッド130はイベントが生じるときにそれらを設定してもよく、オペレーティングシステムによって必要とされる場合には、1回につき単一のイベントを設定してもよい。一般にアクティブスレッド130は、アクティブスレッドの状態に応じて、現在のスレッドの処理の間に任意の数のイベントおよび任意の特定のイベントを設定してもよい。アクティブスレッド130は、(1)スケジュールされることを待機している保留スレッド、または(2)これらの保留スレッドが待機しているイベントを認識しなくてもよい。結果的に、アクティブスレッド130は、保留スレッドおよびそれらの保留イベントに基づいて決定された優先順位で、イベントを設定しようとすることはない。
アクティブスレッド130は、現在のスレッドの処理を完了する間に、またはそれを完了した上で、複数のイベントを設定してもよい。さらに、スケジューラ120はイベントが設定されるたびに、スレッド110をスケジュールしてもよい。この場合スレッド110は、以下で示されるように、イベントが設定される順序に応じて、異なる順序でスケジュールされてもよい。
図2Aは、2つのイベント上で待機中の2つの保留スレッドのためのスケジューリング例を示す。この例で、はじめにアクティブスレッド130は、低い優先権10を有するスレッドWである。スレッドXは高い優先権30を有し、イベントA上で待機中であり、スレッドYは中間の優先権20を有し、イベントB上で待機中である。スレッドXとYとは両方とも、アクティブスレッド130がメモリへの書き込みを完了するのを待機していてもよいので、スレッドXとYとはそれら自体のメモリへの書き込みを実行することができる。イベントAは「書き込み完了」イベントであってもよく、イベントBは「メモリドライバ利用可能」イベントであってもよい。この場合、アクティブスレッド130は現在の書き込みを終了したときに、両方のイベントを設定してよい。しかしながら、スレッド130はオペレーティングシステムによる強制を受けてもよく、1回につき1つのイベントだけを設定することができてもよい。アクティブスレッド130は、これらの2つのイベント上で待機中の保留スレッドXおよびYの優先権についての情報を持たない。アクティブスレッド130は、任意の順序で、1回につき1つのイベントで、これらの2つのイベントを設定してもよい。
図2Aに示されている実施例では、アクティブスレッド130は最初にイベントAを設定し、次いでイベントBを後で設定する。イベントAを設定する指示を受信すると、スレッドXが現時点で実行の準備ができており、現在のスレッドWよりも高い優先権を有していることから、スケジューラ120はスレッドXをスケジュールする。スレッドXは現在のスレッドWに割り込み、アクティブスレッド130として実行する。その後スレッドWは準備済み状態に移り、イベントBを設定する機会を得ることはない。スレッドXが完了され、保留状態に戻った後で、スケジューラ120は準備ができている唯一のスレッドであるスレッドWをスケジュールする。スレッドWは再びアクティブとなり、イベントBを設定する。イベントBを設定する指示を受信すると、スレッドYが現時点で実行の準備ができており、スレッドWよりも高い優先権を有していることから、スケジューラ120はスレッドYをスケジュールする。スレッドYはスレッドWに割り込み、アクティブスレッド130として実行する。この例の中で、スレッドXがスレッドYよりも高い優先権を有しており、スレッドYの前にスケジュールされるので、スレッドXとYとは望ましい順序でスケジュールされる。
図2Bは、2つのイベントが異なる順序で設定されることによる、2つの保留スレッドXとYとの異なる順序でのスケジューリングを示す。この例の中で、アクティブスレッド130は最初にイベントBを設定し、次いでイベントAを後で設定する。イベントBを設定する指示を受信すると、スケジューラ120はスレッドYが現時点で実行のために準備ができていることを判定し、スレッドYが現在のスレッドWよりも高い優先権を有していることから、スレッドYをスケジュールする。スレッドYはスレッドWに割り込み、アクティブスレッド130として実行する。スレッドYが完了され、保留状態に戻った後で、スケジューラ120は、再びアクティブになり、イベントBを設定するスレッドWをスケジュールする。イベントAを設定する指示を受信すると、スケジューラ120はスレッドXが現時点で実行のために準備ができていることを判定し、スレッドXがスレッドWよりも高い優先権を有していることから、スレッドXをスケジュールする。この例の中で、スレッドXとスレッドYとは望ましくない順序でスケジュールされる。スレッドXまたはYのいずれかは、スレッドWがイベントを設定した後でスケジュールされてもよいが、2つのイベントは、この実施例についての誤りである、誤った順序で設定されるため、より低い優先権を備えたスレッドYがスレッドXよりも先にスケジュールされる。
図2Aおよび2Bに示されているように、保留スレッドはイベントが設定される順序に応じて、異なる順序で(かつ時には望ましくない順序で)スケジュールされる場合がある。スケジューラが、各イベントが設定された後で中間スケジューリングを実行しないような方法でイベントを設定することによって、改善された処理能力が達成されることができる。
図3は、スケジューラ120によるスレッドの中間スケジューリングを伴わずに、任意の数のイベントを設定するためのプロセス300を示す。プロセス300は、アクティブスレッド130によって実行されてもよい。
最初に、設定される任意のイベントが存在するかどうかについての判定が行われる(ブロック312)。答えが「いいえ」である場合、プロセス300はブロック312へ戻り、待機する。一方、1つまたは複数のイベントが設定されることになっており、ブロック312について答えが「はい」である場合、スケジューラは、イベントが設定される期間、本質的に無効にされる(ブロック314)。スケジューラは、例えば(1)以下で説明されるように、現在のスレッドの優先権を操作することによるもの、(2)ハードウェアタイマの中断を介して時間を刻むタイマに基づいたスケジューリングを妨げる中断(例えばタイムチック中断)をロックすることによるもの、または(3)適切なフラグを設定して、このフラグが設定されている間はスレッドをスケジュールしないようにスケジューラに指示することによるものなどの様々なメカニズムを使用して、無効にされてもよい。その後すべてのイベントは、例えばシステムに必要とされるのであれば、1回に1つのイベントで、設定される(ブロック316)。すべてのイベントが設定された後、スケジューラはその通常の効果に回復される(ブロック318)。このとき、スケジューラは設定されたすべてのイベントに基づいた適切な順序で、スレッドをスケジュールすることができる。
イベントを設定する目的でスケジューラを無効にするための特定の実施形態は、以下で説明される。この実施形態は、スケジューラを本質的に無効にするために、現在のスレッドの優先権を操作する。
図4は、優先権を操作することによって、スケジューラ120によるスレッドの中間スケジューリングを伴わずに任意の数のイベントを設定するためのプロセス400を示す。プロセス400は、設定される1つまたは複数のイベントが存在するときにはいつでも、アクティブスレッド130によって実行されてもよい。プロセス400は、図3のプロセス300のブロック314、316および318のために使用されてもよい。プロセス400はまた、イベントを設定するためにアクティブスレッド130によって呼び出される関数(例えばイベント設定関数)として実施されてもよい。
最初に、図2Aおよび2Bの例についてはスレッドWである現在のスレッドの優先レベルは、一時的ロケーションに保存される(ブロック412)。次いで、現在のスレッドの優先権は、例えばシステム中で最も高い可能な優先レベルなどの高い優先レベルに、人為的に設定される(ブロック414)。現在のスレッドよりも高い優先権を備えた保留スレッドは特定のイベント上で待機していてもよいということが考えられる。割り込み優先権に基づくスケジューリングを用いるリアルタイムオペレーティングシステムでは、この特定のイベントが設定される場合には、保留スレッドがスケジュールされ、現在のスレッドに割り込みをする。イベントが設定される間の別のスレッドによる現在のスレッドへの割り込みを回避するために、現在のスレッドの優先権は最も高い可能な優先レベルに一時的に高められてもよい。
次いで、例えば単一のイベントを設定するための関数(例えばイベント設定関数)を呼び出すことによって、イベントが設定される(ブロック416)。このイベントの設定によって、スケジューラはスケジューリングアルゴリズムを実行し、実行のために準備ができている、すべてのスレッドの中で最も高い優先権を備えたスレッドをスケジュールしてもよい。しかしながら、現在のスレッドの優先権は最も高い可能なレベルにまで高められているので、別のスレッドがスケジュールされることはなく、現在のスレッドは処理され続けることになる。次いで、別のイベントが設定されることを必要としているかどうかについての判定が行われる(ブロック418)。答えが「はい」であれば、プロセス400は、例えば単一のイベントを設定するためのイベント設定関数を再度呼び出すことによって、別のイベントを設定するためにブロック416へ戻る。一方、設定される別のイベントが存在せず、ブロック418についての答えが「いいえ」である場合、現在のスレッドの優先権は本来の優先レベルに回復される(ブロック420)。
現在のスレッドの優先権は、適切な関数(例えばスレッド優先権設定関数)を呼び出すことによって変更されてもよい。典型的に、この関数を呼び出すことはスケジューラを起動させ、スケジューラはその後適切にスレッドをスケジュールする。ブロック414で現在のスレッドが最も高い可能な優先レベルに設定されると、現在のスレッドが最も高いレベルにあることから、別のスレッドがスケジュールされることはない。ブロック420で現在のスレッドが本来の優先レベルに回復されると、スケジューラは通常のスケジューリングを実行し、現在のスレッドは、準備ができており、より高い優先権を有する別のスレッドによって割り込まれてもよい。
図2Cは、本明細書で説明される技術を使用する、「同時」に設定されている2つのイベントを用いる2つの保留スレッドXおよびYのスケジューリングを示す。この例の中で、スケジューラ120は、例えばスレッドWを本来の優先レベルに維持しておくことによって、アクティブスレッド130が実行している間、有効である。イベントAおよびBを設定する前に、アクティブスレッド130は、例えばスレッドWの優先権を最も高い可能なレベルにまで高めることによって、スケジューラ120を本質的に無効にする。次いでアクティブスレッド130は、たとえスレッドYが準備ができていても、スレッドYのスケジューリングを起動することのないイベントBを設定する。次いでアクティブスレッド130は、たとえスレッドXまたはYが準備ができていても、これらのスレッドのスケジューリングを起動することのないイベントAを設定する。次いでアクティブスレッド130は、例えばスレッドWの優先権を本来のレベルに回復することによって、スケジューラ120をその通常の効果に回復する。次いでスケジューラ120は、2つのスレッドXおよびYのうちでより高い優先レベルを有し、準備ができているスレッドXをスケジュールする。スレッドXが完了されると、スケジューラはスレッドYをスケジュールする。
図5は、オペレーティングシステムのコンテキストでの図4のプロセス400の例示的な実施を示す。オペレーティングシステムは、基本サービスを提供するために呼び出されてもよい様々なソフトウェア関数を備えたカーネルを含む。そのようなソフトウェア関数の1つは、スレッドが単一のイベントを設定することを可能にするイベント設定関数であってよい。オペレーティングシステムは規格品のオペレーティングシステムであってもよく、カーネルの中のソフトウェア関数を変更することができないか、または簡単には変更することができてなくてもよい。
さらなる機能を提供するため、かつ/またはカスタマイゼーションのために、抽象層がカーネルの上部に実装されてもよい。この抽象層は、スレッドが任意の数のイベントを設定することを可能にするイベント設定関数などの、さらなるソフトウェア関数を含んでもよい。この抽象層の上のアプリケーション層でランするスレッドは、抽象層の中のソフトウェア関数を呼び出してもよく、この関数は、その後カーネルの中のソフトウェア関数を呼び出してもよい。プロセス400は抽象層の中のイベント設定関数によって実施されてもよく、この関数はその後設定されるべき各イベントについて1回、カーネルの中のイベント設定関数を呼び出してもよい。
図5は、図4のプロセス400の特定の実施態様を示す。その他の実施態様も可能であり、これも本発明の範囲内にある。
プロセス300および400によって、スレッドは、スケジューラによる中間スケジューリングを伴わずに、同時にすべてのイベントを設定することができる。スケジューラは、各イベントが設定された後でスレッドのスケジュールを試みることがあるが、スケジューラは基本的に無効にされ、別のスレッドがスケジュールされることはない。プロセス400は、現在のスレッドの優先権を変更することによってスケジューラを無効にするので、イベントの設定の間にこのスレッドが割り込みされることはない。
スケジューラを無効にするためのその他のメカニズムもまた使用されてよい。例えば、非同期化されたイベントが再スケジュールを引き起こすことを回避する時間に基づくメカニズムを用いて、スケジューラは無効にされてもよい。例として、ユーザインタフェース(UI)スレッドは、状態インジケータを1秒ごとにフラッシュすることを求めてもよい。その後オペレーティングシステムは、1秒ごとにアイコンをフラッシュするためにUIスレッドを起動する。UIスレッドがスレッドX、YおよびWよりも高い優先権を有する場合、これらのスレッドは、UIが起動されている場合UIによって割り込まれる。タイマ中断が一定方向に向けられることができず、したがってUIスレッドは起動されることがないので、中断をロックすることはUIスレッドのスケジューリングを回避することができる。スケジューラを無効にするためのその他のメカニズムは、スケジュールを求めるたびにスケジューラがチェックするフラグ(例えばスケジュール不可フラグ)を設定することによるものである。スケジューラはこのフラグが設定されている場合にはスケジューリングを止め、このフラグが設定解除/クリアされている場合にはスケジューリングを続行する。アクティブスレッドは、スケジューラを無効にしたいときにはいつでもこのフラグを設定してよく、その後スケジューラを再び使用可能にするためにフラグを設定解除してもよい。スケジューラが無効にされている間、複数のイベントは中間スケジューリングを伴わずに設定されることができる。
明快であるために、イベント設定技術はオペレーティングシステムのコンテキストで説明されてきた。一般に、これらの技術は、タスクが優先権およびイベントに基づいてスケジュールされる任意のマルチスレッドシステムのために使用されてよい。マルチスレッドシステムはソフトウェアシステム、ハードウェアシステム、またはハードウェアとソフトウェアの両方を備えたシステムであってよい。
図6は、イベント設定技術が用いられてもよいマルチスレッドシステム600の図を示す。タスク610x、610yおよび610zは、図6に示されていない1つまたは複数の主体から受信され、スケジュールされて実行されることになる。タスク610はスレッド、プロセスなどであってよい。タスク610はまた、1つまたは複数のプロセッサまたはアプリケーションによって生成されてもよく、かつ/あるいは1つまたは複数のインタフェースを介して受信されてもよい。
スケジューラ620はタスク610を受信し、処理モジュール630による処理のために、これらのタスクをスケジュールする。スケジューラ620は(1)これらのタスクについての優先値および保留イベント、ならびに(2)処理モジュール630によって設定されるイベントに基づいて、タスク610をスケジュールしてもよい。スケジューラ620はさらに、任意の時点で、実行のために準備ができているすべてのタスクの中で最も高い優先権を備えたタスクが処理モジュール630によって処理されるように、タスク610をスケジュールしてもよい。処理モジュール630は、スケジューラ620によってスケジュールされた各タスク610を処理する。処理モジュール630はまた、イベントを適切に設定する。
スケジューラ620は様々な方法で実装されてもよい。例えば、スケジューラ620はコンピューティング装置またはパーソナル電子装置のために使用されるオペレーティングシステムの一部であってもよい。スケジューラ620はまた、処理モジュール630のためにタスク610をスケジュールするように設計されたコントローラであってもよい。したがってスケジューラ620はハードウェア、ソフトウェア、またはそれらの組合せの中で実装されてもよい。
処理モジュール630も、ハードウェア、ソフトウェアまたはそれらの組合せの中で実装されてもよい。処理モジュール630は、スケジュールされたタスクのための任意の種類の処理を実行してもよい。例えば、処理モジュール630は記憶装置コントローラ、メモリドライバ、バスドライバ、直接メモリアクセス(DMA)コントローラ、デジタル信号プロセッサ(DSP)、縮小命令セットコンピュータ(RISC)(reduced instruction set computer)、マイクロプロセッサなどであってもよい。
本明細書で説明されるイベント設定技術およびマルチスレッドシステムは、様々な電子装置の中で用いられてもよい。例えば、これらの技術およびマルチスレッドシステムは、コンピュータシステム、パーソナル電子装置などの中で使用されてもよい。パーソナル電子装置は無線装置、PDAなどであってもよい。
図7は、イベント設定技術が用いられてもよい無線装置700のブロック図である。無線装置700は携帯電話、端末、ハンドセットまたは何らかのその他の装置であってよい。無線装置700は符号分割多重アクセス(CDMA)システム、移動通信のための世界システム(GSM(登録商標))のシステムなどと通信することができてもよい。
無線装置700は、受信経路と送信経路とを経由する双方向通信を提供する。受信経路については、基地局によって送信される順方向リンク信号はアンテナ712によって受信され、デュプレクサ(D)714を通じて発送され、受信装置(RCVR)716に与えられる。受信装置716は受信された信号を調整かつデジタル化し、さらなる処理のためにデジタル部分720に入力サンプルを与える。送信経路については、送信装置(TMTR)718は送信されるべきデータをデジタル部分720から受信して、そのデータを処理かつ調整し、デュプレクサ714を通じて発送され、アンテナ712を介して基地局に送信される逆方向リンク信号を生成する。
デジタル部分720は、例えばモデムプロセッサ722、ビデオ/グラフィックプロセッサ724、アプリケーションプロセッサ726、コントローラ/マイクロプロセッサ730、外部バスインタフェース(EBI)740および742、ならびに入力/出力(I/O)装置744などの、様々な処理装置およびインタフェース装置を含む。モデムプロセッサ722は、データの送信および受信のための処理(例えば符号化、変調、復調、復号など)を実行する。ビデオ/グラフィックプロセッサ724は、静止画像、動画、動くテキスト、ビデオゲームのためのグラフィック、3次元アバターなどに対する処理を実行する。アプリケーションプロセッサ726は、多元呼び出し、ウェブ閲覧、メディアプレーヤ、ユーザインタフェースなどのアプリケーションのための処理を実行する。EBI740はデジタル部分720と、RAM、SRAM、DRAM、SDRAMなどであってもよい揮発性メインメモリ750との間のデータの転送を促進する。EBI742はデジタル部分720と、フラッシュメモリまたはROMであってもよい不揮発性メモリ752との間のデータの転送を促進する。I/O装置744はLCD装置、キーパッド、スピーカ、マイクロフォンなどの外部I/O装置(図7に不図示)とインタフェースする。デジタル部分720内の様々な装置は、1つまたは複数のバス732を介して互いに通信してもよい。
デジタル部分720は、1つまたは複数のDSP、マイクロプロセッサ、RISCなどとともに実装されてもよい。デジタル部分720はまた、1つまたは複数の特定用途向け集積回路(ASIC)または何らかのその他の種類の集積回路(IC)上で作られてもよい。マルチスレッドシステム100および/または600は、デジタル部分720内で実装されてもよい。マルチスレッドシステム100の例として、マイクロプロセッサ730がリアルタイムオペレーティングシステムでランしていてもよく、デジタル部分720内の様々なプロセッサによってスレッド110が起動されてもよい。マルチスレッドシステム600のその他の例として、マイクロプロセッサ730がスケジューラ620を実装し、EBI740が処理モジュール630を実装し、デジタル部分720内の様々なプロセッサによってタスク610が生成されてもよい。
図8は、ここでもまたイベント設定技術が用いられてもよい記憶システム800のブロック図を示す。記憶システム800はマスタコントローラ810と複数の記憶装置820とを含む。マスタコントローラ810は独立型のコンピューティング装置、コンピューティング装置の一部、およびその他であってもよい。メモリ装置812は、マスタコントローラ810によって使用されるデータおよびコードを記憶する。
マスタコントローラ810は、1つまたは複数の外部インタフェース814を介して外部装置(図8に不図示)と通信する。マスタコントローラ810はさらに、1つまたは複数の内部インタフェース816を介して記憶装置820に結合している。各インタフェースはまた、バスまたは何らかのその他の通信リンクであってよい。各記憶装置820は直接マスタコントローラ810に結合するか、またはその他の記憶装置を介してマスタコントローラ810に結合してもよい。
マスタコントローラ810は、記憶装置820へのアクセスのスケジューリングに対して責任を負うスケジューラを実装してもよい。マスタコントローラ810は、外部インタフェース814を介してタスクを受信してもよい。これらのタスクは、記憶装置820のアクセスを要求する外部プロセッサおよび/またはアプリケーションからのものであってもよい。マスタコントローラ810は次いで、タスクについての優先権および保留イベント、記憶装置の利用率、これらの記憶装置のために設定されたイベント、およびその他に基づいてタスクをスケジュールする。マスタコントローラ810は、準備ができている最も高い優先権が各記憶装置にアクセスするように、タスクのスケジュールを試みてもよい。
1つの実施形態で、独立の処理モジュールは各記憶装置820のアクセスを管理する。各記憶装置のための処理モジュールは、記憶装置へのデータの書き込みと記憶装置からのデータの読み取りに対して責任を負うドライバであってもよい。処理モジュールは、処理モジュールおよび/または関連した記憶装置の状態に基づいて、イベントを設定してもよい。各記憶装置820について、マスタコントローラ810は、その装置のためにイベントが設定されるたびに、記憶装置820へアクセスするために最も高い優先権の準備のできているタスクをスケジュールしてもよい。各記憶装置のための処理モジュールは、スケジューラによる中間スケジューリングを伴わずにイベントを設定する目的で、(例えば現在のタスクの優先権を操作することによって)マスタコントローラ810内のスケジューラを無効にするために、プロセス300または400を実施してもよい。
別の実施形態で、記憶装置820はマスタコントローラ810によってスケジュールされたタスクを表す。例えば、複数の記憶装置は所与の外部インタフェースへのアクセスを必要としてもよい。その後マスタコントローラ810は、記憶装置の優先権、外部インタフェースのために設定されたイベントなどに基づいて、この外部インタフェースを使用するためにこれらの記憶装置をスケジュールしてもよい。
本明細書で説明された技術は、上で説明されたように、イベントを設定するために使用されてよい。これらの技術はまた、中断を設定するため、信号またはメッセージを送信するため、フラグを設定するため、およびその他のために使用されてもよい。
本明細書で説明される技術は、様々な方法で実装されてもよい。例えば、これらの技術はソフトウェア、ハードウェアまたはそれらの組合せの中で実装されてもよい。ソフトウェア実装のために、この技術は本明細書で説明される動作を実行するモジュール(例えば関数、手順など)を用いて実装されてもよい。ソフトウェアコードはメモリ装置(例えば図7のメモリ750、または図8のメモリ812)の中に記憶され、プロセッサ(例えば図7のマイクロプロセッサ730、または図8のコントローラ810)によって実行されてもよい。メモリ装置は、プロセッサ内か、またはプロセッサの外部に実装されてもよい。
ハードウェア実装のために、イベントを設定するモジュールまたは関数は、1つまたは複数のASIC、DSP、デジタル信号処理装置(DSPD)、プログラム可能論理装置(PLD)、フィールドプログラム可能ゲートアレー(FPGA)、プロセッサ、コントローラ、マイクロコントローラ、マイクロプロセッサ、電子装置、本明細書で説明される機能を実行するように設計されたその他の電子装置、またはそれらの組合せの中で実装されてもよい。
先の開示される実施形態の説明は、任意の当業者が本発明を作成または使用することができるように提供される。これらの実施形態に対する様々な変更は、当業者には容易に理解されることと思われ、本明細書で定義される一般的な原理は、本発明の精神または範囲から逸脱することなく、別の実施形態に適用されてもよい。したがって、本発明は本明細書で示される実施形態に限定されることが意図されているわけではなく、本明細書で開示される原理および新しい機能に矛盾しない最も広い範囲に一致する。
以下に、出願当初の特許請求の範囲に記載された発明を付記する。
[C1]
現在のスレッドの優先権を高い優先レベルに設定するためのコードと、
少なくとも1つのイベントを設定するためのコードと、
前記現在のスレッドの前記優先権を本来の優先レベルに回復するためのコードとを記憶するためのプロセッサ可読媒体。
[C2]
前記現在のスレッドの前記優先権を前記高い優先レベルに設定する前に、前記本来の優先レベルを保存するためのコードをさらに記憶するためのC1に記載のプロセッサ可読媒体。
[C3]
少なくとも1つのイベントを設定するための前記コードが、
1回につき1つのイベントで、少なくとも1つのイベントを設定するためのコードを含むC1に記載のプロセッサ可読媒体。
[C4]
少なくとも1つのイベントを設定するための前記コードが、
前記少なくとも1つのイベントの各々につき1回、単一のイベントを設定するために関数を呼び出すためのコードを含むC1に記載のプロセッサ可読媒体。
[C5]
少なくとも1つのイベントを設定するための前記コードが、
前記少なくとも1つのイベントの各々を個々に設定するために、オペレーティングシステムの中で関数を呼び出すためのコードを含むC1に記載のプロセッサ可読媒体。
[C6]
前記現在のスレッドの前記優先権を設定するための前記コードが、
前記現在のスレッドの前記優先権を最も高い可能な優先レベルに設定するためのコードを含むC1に記載のプロセッサ可読媒体。
[C7]
前記現在のスレッドの前記優先権を設定するための前記コード、前記少なくとも1つのイベントを設定するための前記コード、および前記現在のスレッドの前記優先権を回復するための前記コードが、1つまたは複数のイベントを設定するためにスレッドによって呼び出されることが可能な関数の一部であるC1に記載のプロセッサ可読媒体。
[C8]
前記関数が、オペレーティングシステムのためのカーネルの上の抽象層に存在するC7に記載のプロセッサ可読媒体。
[C9]
現在のタスクの優先権を高い優先レベルに設定することと、
少なくとも1つのイベントを設定することと、
前記現在のタスクの前記優先権を本来の優先レベルに回復することとを含むイベントを設定するための方法。
[C10]
前記現在のタスクの前記優先権を前記高い優先レベルに設定する前に、前記本来の優先レベルを保存することをさらに含むC9に記載の方法。
[C11]
前記少なくとも1つのイベントを設定することが、1回につき1つのイベントで、前記少なくとも1つのイベントを設定することを含むC9に記載の方法。
[C12]
前記現在のタスクの前記優先権を前記高い優先レベルに設定することが、前記現在のタスクの前記優先権を最も高い可能な優先レベルに設定することを含むC9に記載の方法。
[C13]
現在のタスクの優先権を高い優先レベルに設定するための手段と、
少なくとも1つのイベントを設定するための手段と、
前記現在のタスクの前記優先権を本来の優先レベルに回復するための手段とを含む装置。
[C14]
前記現在のスレッドの前記優先権を前記高い優先レベルに設定する前に、前記本来の優先レベルを保存するための手段をさらに含むC13に記載の装置。
[C15]
もしあれば、設定されている前記少なくとも1つのイベントに基づいて、実行のために準備ができているタスクを識別するための手段と、
実行のために準備ができている前記タスクの中で、最も高い優先権を有するタスクをスケジュールするための手段とをさらに含むC13に記載の装置。
[C16]
スケジューラを一時的に無効にすることと、
少なくとも1つのイベントを設定することと、
前記スケジューラを通常の効果に回復することとを含むイベントを設定する方法。
[C17]
前記スケジューラを一時的に無効にすることが、現在のタスクの優先権を高い優先レベルに設定することを含むC16に記載の方法。
[C18]
前記スケジューラを通常の効果に回復することが、前記現在のタスクの前記優先権を本来の優先レベルに回復することを含むC17に記載の方法。
[C19]
前記少なくとも1つのイベントを設定することが、1回につき1つのイベントで、前記少なくとも1つのイベントを設定することを含むC16に記載の方法。
[C20]
タスクをスケジュールするために動作可能なスケジューラと、
前記スケジューラを一時的に無効にし、少なくとも1つのイベントを設定するため、かつ前記スケジューラを通常の効果に回復するために動作可能な処理モジュールとを含み、前記スケジューラが、設定される前記少なくとも1つのイベントにしたがって前記タスクをスケジュールするために動作可能である装置。
[C21]
前記処理モジュールが、現在のタスクの優先権を高い優先レベルに設定して、前記スケジューラを無効にするために動作可能であるC20に記載の装置。
[C22]
前記処理モジュールが、前記現在のタスクの前記優先権を本来の優先レベルに回復して、前記スケジューラを通常の効果に回復するために動作可能であるC21に記載の装置。
[C23]
前記処理モジュールが、1回につき1つのイベントで、前記少なくとも1つのイベントを設定するために動作可能であるC20に記載の装置。
[C24]
前記スケジューラが、もしあれば、設定される前記少なくとも1つのイベントに基づいて、実行のために準備ができているタスクを識別するため、かつ実行のために準備ができている前記タスクの中で最も高い優先権を有するタスクをスケジュールするために動作可能であるC20に記載の装置。

Claims (25)

  1. プロセッサに、現在のアクティブなスレッドによって同時に設定される少なくとも2つのイベントの存在を決定させ、前記少なくとも2つのイベントは第1のイベント及び第2のイベントを含み、ペンディングスレッドは、スケジュールされた場合に、前記第1のイベントにより設定を実行しなければならず、少なくとも1つの他のペンディングスレッドは、スケジュールされた場合に、前記第2のイベントにより設定を実行しなければならず、
    在のアクティブなスレッドによって同時に設定される前記少なくとも2つのイベントが存在すると決定された場合に、前記プロセッサに、一時的にハードウェアタイマ割り込み及び前記ペンディングスレッド及び前記少なくとも1つの他のペンディングスレッドのスケジューリングを前記現在のアクティブなスレッドによって前記第1及び第2のイベントが設定されるまで禁止させるためのプログラム。
  2. 前記プロセッサに、前記現在のアクティブなスレッドの優先レベルに一時的に影響を及ぼすことにより、前記ペンディングスレッド及び前記少なくとも1つの他のペンディングスレッドのスケジューリングを一時的に禁止させる請求項1記載のプログラム。
  3. 前記現在のアクティブなスレッドは、少なくとも部分的に、前記少なくとも2つのイベントのうちの少なくとも1つを設定するための関数を呼び出すことにより、前記少なくとも2つのイベントを設定する請求項1記載のプログラム。
  4. 前記現在のアクティブなスレッドは、少なくとも部分的に、記少なくとも2つのイベントのそれぞれを個々に設定するオペレーティングシステムにおける関数を呼び出すことにより、前記少なくとも2つのイベントを設定する請求項1記載のプログラム。
  5. 少なくとも部分的に、前記プロセッサに、前記優先レベルを最も高い可能な優先レベルに設定ることにより、前記優先レベル一時的に影響を及ぼさせる請求項2記載のプログラム。
  6. 前記プロセッサに、前記プロセッサによる処理のためのタスクのスケジューラを一時的に不能にすることによって、前記ペンディングスレッド及び前記少なくとも1つの他のペンディングスレッドのスケジューリングを一時的に禁止させる請求項1記載のプログラム。
  7. 前記プロセッサに、タイムベースメカニズム及び/又はフラグ設定メカニズムのうちの少なくとも1つを使用するタスクの前記スケジューラを一時的に不能にさせる請求項6記載のプログラム。
  8. プロセッサによって、
    現在のアクティブなスレッドによって同時に設定される少なくとも2つのイベントの存在を決定し、前記少なくとも2つのイベントは第1のイベント及び第2のイベントを含み、ペンディングスレッドは、スケジュールされた場合に、前記第1のイベントにより設定を実行しなければならず、少なくとも1つの他のペンディングスレッドは、スケジュールされた場合に、前記第2のイベントにより設定を実行しなければならず、
    在のアクティブなスレッドによって同時に設定される前記少なくとも2つのイベントが存在すると決定した場合に、一時的にハードウェアタイマ割り込み及び前記ペンディングスレッド及び前記少なくとも1つの他のペンディングスレッドのスケジューリングを前記現在のアクティブなスレッドによって前記少なくとも2つの第1及び第2のイベントが設定されるまで禁止するマルチスレッドシステムにおけるイベントの設定方法。
  9. 前記ペンディングスレッド及び前記少なくとも1つの他のペンディングスレッドのスケジューリングを一時的に禁止することは、前記現在のアクティブなスレッドの優先レベルに一時的に影響を及ぼすことをさらに含む請求項8記載の方法。
  10. 前記優先レベルに一時的に影響を及ぼすことは、前記優先レベルを最も高い可能な優先レベルに設定することを含む請求項9記載の方法。
  11. 前記少なくとも2つのイベントのうちの前記少なくとも1つはスレッドの状況又はステータスのうちの少なくとも1つを定義する請求項8記載の方法。
  12. 前記少なくとも2つのイベントのうちの前記少なくとも1つのイベントは書き込み完了イベントを含む請求項8記載の方法。
  13. 前記少なくとも2つのイベントのうちの前記少なくとも1つのイベントはメモリドライバ利用可能イベントを含む請求項8記載の方法。
  14. 一時的に前記ペンディングスレッド及び前記少なくとも1つの他のペンディングスレッドのスケジューリングを前記現在のアクティブなスレッドによって前記少なくとも2つの第1及び第2のイベントが設定されるまで禁止することは、前記プロセッサによる処理のためのタスクのスケジューラを一時的に不能にすることを含む請求項8記載の方法。
  15. 前記タスクのスケジューラを一時的に不能にすることは、タイムベースメカニズム及び/又はフラグ設定メカニズムのうちの少なくとも1つを使用するタスクの前記スケジューラを一時的に不能にすることを含む請求項14記載の方法。
  16. 現在のアクティブなスレッドにおけるタスクを処理する手段と、
    現在のアクティブなスレッドによって同時に設定される少なくとも2つのイベントの存在を決定する手段と、前記少なくとも2つのイベントは第1のイベント及び第2のイベントを含み、ペンディングスレッドは、スケジュールされた場合に、前記第1のイベントにより設定を実行しなければならず、少なくとも1つの他のペンディングスレッドは、スケジュールされた場合に、前記第2のイベントにより設定を実行しなければならず、
    在のアクティブなスレッドによって同時に設定される前記少なくとも2つのイベントが存在すると決定した場合に、一時的にハードウェアタイマ割り込み及び前記ペンディングスレッド及び前記少なくとも1つの他のペンディングスレッドのスケジューリングを前記現在のアクティブなスレッドによって前記第1及び第2のイベントが設定されるまで禁止する手段とを具備する装置。
  17. 前記スケジューリングを一時的に禁止する手段は、前記現在のアクティブなスレッドの優先レベルに一時的に影響を及ぼす手段を備える請求項16記載の装置。
  18. 前記優先レベルに一時的に影響を及ぼす手段は、前記優先レベルを最も高い可能な優先レベルに設定する手段を含む請求項17記載の装置。
  19. 時的に前記ペンディングスレッド及び前記少なくとも1つの他のペンディングスレッドのスケジューリングを前記現在のアクティブなスレッドによって前記第1及び第2のイベントが設定されるまで禁止する手段は、前記タスクを処理する手段のためにタスクのスケジューリングする手段を一時的に不能にする手段を備える請求項16記載の装置。
  20. 前記タスクをスケジューリングする手段を一時的に不能にする手段は、イムベースメカニズム及び/又はフラグ設定メカニズムのうちの少なくとも1つを使用するタスクのスケジューリングをする手段を一時的に不能にする手段を含む請求項19記載の装置。
  21. 現在のアクティブなスレッドに関連するタスクを実行し、前記現在のアクティブなスレッドはスケジューラによって識別され、
    現在のアクティブなスレッドによって同時に設定される少なくとも2つのイベントの存在を決定し、前記少なくとも2つのイベントは第1のイベント及び第2のイベントを含み、ペンディングスレッドは、前記スケジューラによってスケジュールされた場合に、前記第1のイベントにより設定を実行しなければならず、少なくとも1つの他のペンディングスレッドは、前記スケジューラによってスケジュールされた場合に、前記第2のイベントにより設定を実行しなければならず、
    前記現在のアクティブなスレッドが、現在のアクティブなスレッドによって同時に設定される前記少なくとも2つのイベントが存在すると決定した場合に、一時的にハードウェアタイマ割り込み及び前記ペンディングスレッド及び前記少なくとも1つの他のペンディングスレッドのスケジューリングを前記現在のアクティブなスレッドによって前記第1及び第2のイベントが設定されるまで禁止するプロセッサを具備する装置。
  22. 前記プロセッサが、前記現在のアクティブなスレッドの優先レベルに一時的に影響を及ぼすことにより、一時的に前記スケジューラが前記ペンディングスレッド及び前記少なくとも1つの他のペンディングスレッドのスケジューリングを禁止する請求項21記載の装置。
  23. 前記プロセッサは、前記優先レベルを最も高い可能な優先レベルに設定する請求項22記載の装置。
  24. 前記プロセッサは、タスクのスケジューラを一時的に不能にすることにより、前記ペンディングスレッド及び前記少なくとも1つの他のペンディングスレッドのスケジューリングを一時的に禁止する請求項21記載の装置。
  25. 前記プロセッサは、タイムベースメカニズム及び/又はフラグ設定メカニズムのうちの少なくとも1つを使用するタスクの前記スケジューラを一時的に不能にする請求項24記載の装置。
JP2014260693A 2005-04-13 2014-12-24 マルチスレッドシステムの中でイベントを設定するための技術 Expired - Fee Related JP6009529B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/105,913 US8255912B2 (en) 2005-04-13 2005-04-13 Techniques for setting events in a multi-threaded system
US11/105,913 2005-04-13

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2008506796A Division JP2008538043A (ja) 2005-04-13 2006-04-12 マルチスレッドシステムの中でイベントを設定するための技術

Publications (2)

Publication Number Publication Date
JP2015097106A JP2015097106A (ja) 2015-05-21
JP6009529B2 true JP6009529B2 (ja) 2016-10-19

Family

ID=36936427

Family Applications (3)

Application Number Title Priority Date Filing Date
JP2008506796A Withdrawn JP2008538043A (ja) 2005-04-13 2006-04-12 マルチスレッドシステムの中でイベントを設定するための技術
JP2013035676A Withdrawn JP2013152725A (ja) 2005-04-13 2013-02-26 マルチスレッドシステムの中でイベントを設定するための技術
JP2014260693A Expired - Fee Related JP6009529B2 (ja) 2005-04-13 2014-12-24 マルチスレッドシステムの中でイベントを設定するための技術

Family Applications Before (2)

Application Number Title Priority Date Filing Date
JP2008506796A Withdrawn JP2008538043A (ja) 2005-04-13 2006-04-12 マルチスレッドシステムの中でイベントを設定するための技術
JP2013035676A Withdrawn JP2013152725A (ja) 2005-04-13 2013-02-26 マルチスレッドシステムの中でイベントを設定するための技術

Country Status (7)

Country Link
US (1) US8255912B2 (ja)
EP (1) EP1869552A2 (ja)
JP (3) JP2008538043A (ja)
KR (1) KR101004861B1 (ja)
CN (1) CN101194231B (ja)
TW (1) TWI327291B (ja)
WO (1) WO2006110914A2 (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8255912B2 (en) * 2005-04-13 2012-08-28 Qualcomm Incorporated Techniques for setting events in a multi-threaded system
US8149698B1 (en) * 2006-01-09 2012-04-03 Genband Us Llc Providing a schedule for active events to be processed by a processor
US9063778B2 (en) * 2008-01-09 2015-06-23 Microsoft Technology Licensing, Llc Fair stateless model checking
US8676976B2 (en) * 2009-02-25 2014-03-18 International Business Machines Corporation Microprocessor with software control over allocation of shared resources among multiple virtual servers
US9207943B2 (en) 2009-03-17 2015-12-08 Qualcomm Incorporated Real time multithreaded scheduler and scheduling method
US8572617B2 (en) * 2009-07-21 2013-10-29 Sas Institute Inc. Processor-implemented systems and methods for event handling
US8893049B2 (en) * 2009-08-28 2014-11-18 International Business Machines Corporation Creation and prioritization of multiple virtual universe teleports in response to an event
US8904399B2 (en) * 2010-03-15 2014-12-02 Qualcomm Incorporated System and method of executing threads at a processor
TWI493923B (zh) * 2010-11-09 2015-07-21 Univ Nat Cheng Kung 處理資訊的裝置與其方法
US8589934B2 (en) * 2011-04-01 2013-11-19 Arm Limited Controlling priority levels of pending threads awaiting processing
KR20130063825A (ko) * 2011-12-07 2013-06-17 삼성전자주식회사 운영체제에서 동적으로 선점 구간을 조정하는 장치 및 방법
US8930965B1 (en) * 2012-02-28 2015-01-06 Marvell International Ltd Event-driven state-machine sequencer
CN104572036B (zh) * 2013-10-12 2020-08-11 腾讯科技(深圳)有限公司 事件的处理方法及装置
US20160210174A1 (en) * 2015-01-15 2016-07-21 Microsoft Corporation Hybrid Scheduler and Power Manager
US9697043B2 (en) * 2015-02-02 2017-07-04 Mediatek Inc. Methods and computer systems for performance monitoring of tasks
US10761714B2 (en) * 2015-11-23 2020-09-01 Google Llc Recognizing gestures and updating display by coordinator
US11216287B2 (en) * 2017-06-02 2022-01-04 Apple Inc. Selective rendering mode
CN111045814B (zh) * 2018-10-11 2023-12-08 华为技术有限公司 资源调度方法和终端设备
US20230138967A1 (en) * 2021-10-29 2023-05-04 Blackberry Limited Thread scheduling

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04287233A (ja) * 1991-03-18 1992-10-12 Hitachi Ltd 事象処理制御方法
JP3655648B2 (ja) * 1994-03-07 2005-06-02 富士通株式会社 プロセススイッチ制御装置およびプロセス制御方法
US6055559A (en) * 1994-03-07 2000-04-25 Fujitsu Limited Process switch control apparatus and a process control method
SE9404294D0 (sv) * 1994-12-09 1994-12-09 Ellemtel Utvecklings Ab sätt och anordning vid telekommunikation
US6006247A (en) * 1995-03-21 1999-12-21 International Business Machines Corporation Method and system for scheduling threads and handling exceptions within a multiprocessor data processing system
US6105053A (en) * 1995-06-23 2000-08-15 Emc Corporation Operating system for a non-uniform memory access multiprocessor system
JPH09160790A (ja) * 1995-12-12 1997-06-20 Matsushita Electric Ind Co Ltd タスクスケジュール装置及びタスクスケジュール方法
US5706515A (en) * 1996-03-25 1998-01-06 Sun Microsystems, Inc. System and method for implementing an atomic wait for notification operation
US6128640A (en) * 1996-10-03 2000-10-03 Sun Microsystems, Inc. Method and apparatus for user-level support for multiple event synchronization
US6101524A (en) * 1997-10-23 2000-08-08 International Business Machines Corporation Deterministic replay of multithreaded applications
FI108478B (fi) * 1998-01-21 2002-01-31 Nokia Corp Sulautettu jõrjestelmõ
US6115715A (en) * 1998-06-29 2000-09-05 Sun Microsystems, Inc. Transaction management in a configuration database
US6061709A (en) * 1998-07-31 2000-05-09 Integrated Systems Design Center, Inc. Integrated hardware and software task control executive
JP2000194573A (ja) 1998-12-24 2000-07-14 Toshiba Corp スレッド制御システムおよびスレッド制御方法
US6587955B1 (en) * 1999-02-26 2003-07-01 Sun Microsystems, Inc. Real time synchronization in multi-threaded computer systems
KR100617228B1 (ko) * 1999-03-19 2006-08-31 엘지전자 주식회사 실시간 운영체계 커널의 이벤트 전달 체계 구현방법
US6874144B1 (en) * 1999-04-05 2005-03-29 International Business Machines Corporation System, method, and program for implementing priority inheritance in an operating system
US6754690B2 (en) * 1999-09-16 2004-06-22 Honeywell, Inc. Method for time partitioned application scheduling in a computer operating system
US6823517B1 (en) * 2000-01-27 2004-11-23 Andrew E. Kalman Multi-tasking-real-time operating system for microprocessors with limited memory that constrains context switching to occur only at task level
US20010027464A1 (en) * 2000-03-27 2001-10-04 General Instrument Corporation Operating system abstraction interface for broadband terminal platform firmware
US20010034751A1 (en) * 2000-04-21 2001-10-25 Shinichiro Eto Real-time OS simulator
US6845504B2 (en) * 2001-02-08 2005-01-18 International Business Machines Corporation Method and system for managing lock contention in a computer system
US20020165999A1 (en) * 2001-03-07 2002-11-07 Ajile Systems, Inc. Apparatus and method for interfacing hardware events with software events
US6904483B2 (en) * 2001-03-20 2005-06-07 Wind River Systems, Inc. System and method for priority inheritance
US7117496B1 (en) * 2001-05-09 2006-10-03 Ncr Corporation Event-based synchronization
US7065765B2 (en) * 2001-12-05 2006-06-20 International Business Machines Corporation Serializing event handling in a threaded system with no wait states
KR20040075960A (ko) 2002-01-24 2004-08-30 코닌클리케 필립스 일렉트로닉스 엔.브이. 멀티프로세싱 환경에서의 프로세스 실행 방법
US7448036B2 (en) * 2002-05-02 2008-11-04 International Business Machines Corporation System and method for thread scheduling with weak preemption policy
US7487502B2 (en) * 2003-02-19 2009-02-03 Intel Corporation Programmable event driven yield mechanism which may activate other threads
US7278141B2 (en) * 2003-04-23 2007-10-02 International Business Machines Corporation System and method for adding priority change value corresponding with a lock to a thread during lock processing
US20040226016A1 (en) * 2003-05-08 2004-11-11 Samsung Electronics Co., Ltd. Apparatus and method for sharing resources in a real-time processing system
US7380247B2 (en) * 2003-07-24 2008-05-27 International Business Machines Corporation System for delaying priority boost in a priority offset amount only after detecting of preemption event during access to critical section
US8438569B2 (en) * 2004-10-14 2013-05-07 International Business Machines Corporation Broadcasting a condition to threads executing on a plurality of on-chip processors
US7765547B2 (en) * 2004-11-24 2010-07-27 Maxim Integrated Products, Inc. Hardware multithreading systems with state registers having thread profiling data
US8255912B2 (en) * 2005-04-13 2012-08-28 Qualcomm Incorporated Techniques for setting events in a multi-threaded system

Also Published As

Publication number Publication date
WO2006110914A3 (en) 2007-03-01
US20060236322A1 (en) 2006-10-19
CN101194231B (zh) 2012-05-23
JP2015097106A (ja) 2015-05-21
KR101004861B1 (ko) 2010-12-28
EP1869552A2 (en) 2007-12-26
CN101194231A (zh) 2008-06-04
US8255912B2 (en) 2012-08-28
JP2008538043A (ja) 2008-10-02
JP2013152725A (ja) 2013-08-08
WO2006110914A2 (en) 2006-10-19
TWI327291B (en) 2010-07-11
KR20070121839A (ko) 2007-12-27
TW200710734A (en) 2007-03-16

Similar Documents

Publication Publication Date Title
JP6009529B2 (ja) マルチスレッドシステムの中でイベントを設定するための技術
JP5323828B2 (ja) 仮想計算機制御装置、仮想計算機制御プログラム及び仮想計算機制御回路
KR100746797B1 (ko) 프로세서 및 정보처리 방법
JP4148223B2 (ja) プロセッサおよび情報処理方法
US9201693B2 (en) Quota-based resource management
US9207968B2 (en) Computing system using single operating system to provide normal security services and high security services, and methods thereof
JP5538442B2 (ja) リアルタイムマルチスレッドスケジューラおよびスケジューリング方法
TWI512619B (zh) 用於執行緒排程的方法以及系統
US20070130446A1 (en) Processor apparatus including specific signal processor core capable of dynamically scheduling tasks and its task control method
JP2010140290A (ja) マルチプロセッサシステム及びその排他制御の調停方法
JP4609113B2 (ja) プロセッサ
JP2008108075A (ja) タスク切替え制御方法及びコンピュータシステム
JP4675891B2 (ja) タスクスケジューリング装置、タスクスケジューリング方法、タスクスケジューリングプログラム、記録媒体、及び伝送媒体
JP2001117786A (ja) プロセススケジューリング装置およびプロセススケジューリング方法
TW202008159A (zh) 處理中斷優先級的電路系統
CN102117261A (zh) 一种芯片内部处理器之间的通信方法
JP4389797B2 (ja) プロセッサおよび情報処理方法
JP2006259968A (ja) プロセッサ及びこのプロセッサ適用される割込み処理制御方法
JP2007094941A (ja) オペレーティングシステム,電子機器
JPH09311794A (ja) オペレーティングシステムにおけるカーネルサービス方式

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160120

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160301

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160513

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160816

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160914

R150 Certificate of patent or registration of utility model

Ref document number: 6009529

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees