JP2013232215A - 複数のタスクにわたる複数のオペレーティングシステム・サブプロセスの共有 - Google Patents

複数のタスクにわたる複数のオペレーティングシステム・サブプロセスの共有 Download PDF

Info

Publication number
JP2013232215A
JP2013232215A JP2013134145A JP2013134145A JP2013232215A JP 2013232215 A JP2013232215 A JP 2013232215A JP 2013134145 A JP2013134145 A JP 2013134145A JP 2013134145 A JP2013134145 A JP 2013134145A JP 2013232215 A JP2013232215 A JP 2013232215A
Authority
JP
Japan
Prior art keywords
sub
subprocess
processes
calling
context
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.)
Granted
Application number
JP2013134145A
Other languages
English (en)
Other versions
JP5678133B2 (ja
Inventor
Jayaraman Satyanarayanan
サチャナラヤナン・ジャヤラマン
Sampat Kuntal
クンタル・サンパト
bajaj Ashish
アシシュ・バジャジ
Chaturvedi Sachin
サチン・チャトゥルベディ
C Yadhav Balam Subhash
サブハッシュ・シー.ヤドハブ・バラム
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 JP2013232215A publication Critical patent/JP2013232215A/ja
Application granted granted Critical
Publication of JP5678133B2 publication Critical patent/JP5678133B2/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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44557Code layout in executable memory
    • G06F9/44563Sharing
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Advance Control (AREA)
  • Telephone Function (AREA)

Abstract

【課題】複数アプリケーションが、コールされたファンクションをリエントラントにする必要なしに該ファンクションに関するソースコードの同じコピーをより効率的に共有する。
【解決手段】複数のプロセスにわたって複数のサブプロセスを共有することを可能にするオペレーティングシステムを実行するように構成されたプロセッサ。各サブプロセスはそれ自体のコンテキストを有し、該サブプロセスは、複数のコーリングプロセスオペランドのためのアドレスオフセットを格納している。該アドレスオフセットは、該複数のコーリングプロセスオペランドに関してコーリングプロセス・コンテキスト内にアドレス空間を定義するために、ベースアドレスに追加される。
【選択図】図2

Description

本願の開示は、複数のオペレーティングシステムに関する。より詳細には、該本願の開示は、複数のオペレーティングシステムによるメモリ管理に関する。
しばしば、複数のアプリケーションは、共通の複数のファンクションを共有する。例えば、音声録音器アプリケーションおよび音声通信アプリケーションは、ともに、音声コーデックファンクションを要求する。両方のアプリケーションが該同じファンクションにアクセスできるようにするための一方法は、複数の共有ライブラリを使用することである。
複数の共有ライブラリは、マルチプルなプログラムの間で共有される複数のサブプログラムの複数の集合体である。該マルチプルなプログラムは、該複数の共有ライブラリを同時に実行することができ、したがって、複数の共有ライブラリは、プログラマらにいくつかの利点を提供する。しかしながら、いくつかのオペレーティングシステムは、複数の共有ライブラリが内部メモリに常駐することを要求する。多くのコンピューティングシステムでは、内部メモリは、限られたリソースである。複数の共有ライブラリが使用されるときには、該限られたリソース(例えば、内部メモリ)は、さらに限られたものとなる。
複数の共有ライブラリは、リエントラント(reentrant)である必要がある。該複数の共有ライブラリの設計は、複数の共有ライブラリが該コーリングプログラム(calling program)の該アドレッシング・コンテキストを使用するので、該リエントラント性(reentrancy)の要件を課す。これゆえ、複数の共有ライブラリは、それらが該コーリングプログラムから継承する様々な仮想アドレス空間で実行される。
複数の共有ライブラリの代替は、各アプリケーションにおいて正確な同じファンクションのフルコピーを宣言すること(例えば、該メモリマップや入力ソースファイルなどを宣言すること)である。いったん各アプリケーションにおいて宣言されると、該ファンクションは、オーバーラップされることができる、すなわち、メモリ内の該同じソースコードは、各コーリングアプリケーションによって使用されることができる。
各アプリケーションにおいて該同じファンクションを宣言し、それらをオーバーラップさせることには、メンテナンスや無駄なメモリなど、複数の欠点がある。例えば、任意の複数の変更(該ファンクションに新しいデータ変数を追加することなど)が複数のファンクションすべてにわたって確実に反映されるように注意しなければならないので、該メモリマップを維持することは、困難である。また、該ファンクションをもはや必要としない複数のアプリケーションから該ファンクションのメモリマップを除去することは、エラーを起こしやすい。さらに、各ファンクションは、それ自体の複数のデータ構造が該オーバーラップすることを可能にすることを要求しており、最終的には、余分なメモリは、各ファンクションに割り当てられる。
マルチプルなアプリケーションが、コールされたファンクションをリエントラントにする必要なしに該ファンクションに関するソースコードの同じコピーをより効率的に共有できれば、有益である。
システムおよび方法は、それ自体のコンテキストを有するサブプロセスを、マルチプルなプロセスの間で共有できるようにする。オペレーティングシステムは、いずれの複数のプロセスが該サブプロセスを呼び出したかを追跡して、プリエンプトされた(pre-empted)プロセスおよび呼び出された(invoked)任意のサブプロセスへの復帰を可能にすることができる。該サブプロセスは、単一のプロセス内で宣言されることのみが必要である。
該開示の一態様によれば、コンピュータ読み取り可能な記録媒体は、マルチプルなプロセスおよびサブプロセスを実行するオペレーティングシステムを格納する。該サブプロセスは、該プロセスによって呼び出されることが可能である。該サブプロセスは、それ自体のコンテキストを有する。
別の態様によれば、モバイルデバイスは、プログラムカウンタ(program counter)(PC)相対アドレッシングのためのハードウェアサポートを欠いたプロセッサを含む。該プロセッサは、複数のプロセスにわたって複数のサブプロセスを共有できるようにするオペレーティングシステムを実行する。各サブプロセスは、それ自体のコンテキストを有する。
さらに別の態様では、マルチプルなプロセスにわたってサブプロセスを共有する方法が提供される。該方法は、マルチプルなコーリングプロセスからサブプロセスを呼び出すことを含んでおり、該サブプロセスは、それ自体のコンテキストを有する。該方法は、また、該サブプロセスの該コンテキストに複数のハードウェアベースおよび長さレジスタをセットすることを含む。該方法は、各コーリングプロセスのコンテキストに複数のハードウェアベースおよび長さレジスタをセットすることをさらに含む。
以上では、以下の本願の発明の詳細な説明をよりよく理解できるように、該発明の複数の特徴および複数の技術的利点についてかなり大まかに概説した。該発明の諸請求項の主題を成す、該発明のさらなる複数の特徴および複数の利点について、以下で説明する。開示される構想および特定の実施形態を、本願の発明の同じ複数の目的を果たす他の複数の構造を修正または設計する基礎として容易に利用できることが、当業者には理解されるはずである。また、そのような等価の複数の構造は、添付の諸請求項に示される該発明から離れないことが、当業者には理解されるはずである。該発明の特徴と考えられている新規の複数の特徴は、その構成および操作の方法の両方に関して、さらなる複数の目的および複数の利点とともに、複数の添付図に関して考慮されたときに以下の説明からよりよく理解されることになる。ただし、該複数の図のそれぞれは、単なる図示および説明の目的で提供され、該本願の発明の諸限界の定義としては意図されていないことを、明確に理解すべきである。
図1は、該発明の一実施形態を有利に使用できる、例示的な無線通信システムを示すブロック図である。 図2は、共通の複数のサブプロセスを共有する複数のプロセスを示すベン図(Venn diagram)である。 図3は、マルチプルなプロセスにわたって複数のサブプロセスを共有する例示的な一方法を示すフロー図である。
詳細な説明
該本願の発明のより完全な理解のために、ここで、該添付の図面と併せて、以下の諸説明に言及する。
図1は、該発明の一実施形態を有利に使用できる、例示的な無線通信システム100を示す。説明の目的で、図1は、3つの遠隔ユニット120、130および150と、2つの基地局140とを示す。典型的な無線通信システムは、さらに多くの遠隔ユニットおよび基地局を有しうることが認識されよう。遠隔ユニット120、130および150は、それぞれ、以下でさらに論じるように該発明の諸実施形態にしたがってリアルタイム・オペレーティングシステム(real time operating system)(RTOS)を実行する、改良されたマイクロプロセッサ125A、125Bおよび125Cを含む。図1は、該複数の基地局140から該複数の遠隔ユニット120、130および150への複数のフォワードリンク信号180と、該複数の遠隔ユニット120、130および150から複数の基地局140への複数のリバースリンク信号190とを示す。
図1では、該遠隔ユニット120は、移動電話として示され、該遠隔ユニット130は、ポータブルコンピュータとして示され、該遠隔ユニット150は、無線ローカルループシステム内の固定されたロケーションの遠隔ユニットとして示される。例えば、該複数の遠隔ユニットは、複数の携帯電話、複数のハンドヘルドパーソナル通信システム(personal communication systems)(PCS)ユニット、複数のパーソナルデータアシスタントなどの複数の携帯型データユニット、またはメータ読取機器などの複数の固定されたロケーションのデータユニットであってよい。図1は、該発明の諸教示による複数の遠隔ユニットを示すが、該発明は、これらの図示された例示的なユニットだけに限定されない。該発明は、マイクロプロセッサを含む任意のデバイスにおいて適切に使用されることができる。
該マイクロプロセッサ125A、125Bおよび125Cは、該マイクロプロセッサ125A、125Bおよび125Cに、ここにおいて開示される複数の方法またはコンピュータベースの複数のファンクションのうちのいずれか1つまたは複数を実施させるように実行できる、複数の命令のセットを含むことができる。
図1に示したように、該複数の遠隔ユニット120、130、150は、マイクロプロセッサ125A、125Bおよび125C、例えば、中央処理ユニット(CPU)、グラフィックス処理ユニット(graphics processing unit)(GPU)、デジタル信号プロセッサ(digital signal processor)(DSP)、またはそれぞれを含むことができる。さらに、該複数の遠隔ユニット120、130、150は、バスを通じて互いに通信できる、内部メモリおよび外部メモリを含むことができる。該複数の遠隔ユニット120、130、150は、液晶ディスプレイ(liquid crystal display)(LCD)、有機発光ダイオード(organic light emitting diode)(OLED)、平面パネルディスプレイ、ソリッドステートディスプレイ、陰極線管(cathode ray tube)(CRT)など、ビデオディスプレイユニットをさらに含むことができる。さらに、該複数の遠隔ユニット120、130、150は、キーボードなどの入力デバイス、およびトラックボールなどのカーソル制御デバイスを含むことができる。該複数の遠隔ユニット120、130、150は、また、ディスクドライブユニット、スピーカや遠隔コントロールなどの信号発生デバイス、およびネットワークインターフェースデバイス、例えば無線トランシーバを含むことができる。
特定の一実施形態では、図1に描かれたように、該ディスクドライブユニットは、複数の命令の1つ以上のセット(例えばソフトウェア)をそれにおいて埋め込むことのできる、コンピュータ読み取り可能な記録媒体を含むことができる。さらに、該複数の命令は、ここに記載されるロジックまたは該複数の方法のうちの1つまたは複数を具体化することができる。特定の一実施形態では、該複数の命令は、該マイクロプロセッサ125A、125B、125Cによる実行中、外部メモリおよび/または内部メモリ内に、完全に、または少なくとも部分的に、存在することができる。該メモリは、コンピュータ読み取り可能な記録媒体を含むことができる。
該複数のプロセッサ125A、125B、125Cのうちのいずれかなど、マイクロプロセッサの利用可能な該メモリが、完全なプログラムを格納するには小さすぎるときには、該本願の開示のメモリ管理が使用される。一実施形態では、該マイクロプロセッサ125A、125B、125Cは、デジタル信号プロセッサ(digital signal processor)(DSP)である。
該本願の開示の一態様によれば、該メモリ管理は、複数のサブプロセスを複数のタスク(すなわち、複数のプロセス)にわたって共有できるようにする。単一のサブプロセスが単一のプロセス内で定義されるのみであっても、該単一のサブプロセスは、該システム内の他の複数のプロセスによって使用されることができる。
複数のプロセスは、マルチタスキング環境における、独立して実行する複数のプログラムである。複数のプロセスは、別個の複数のアプリケーション、または単一のアプリケーションのマルチプルなインスタンスを表すことができる。各プロセスは、それ自体の個々の仮想アドレス空間を有し、1つまたは複数のサブプロセスを含むことができる。
サブプロセスは、ユーザアプリケーションによって動的にロードされ実行されるプロセスユニットである。サブプロセスは、ファンクションコールのように実行するが、それ自体のコンテキストを有していて、それ自体のアドレス空間内で動作する。コンテキストは、それ自体のプライベートアドレス空間から成る。一般的に言えば、該プロセスレベルの機能性は、1つよりも多くのサブプロセスに分けられる。
いったんロードされると、サブプロセスは、そのコーリングプロセスが実行しているときに、内部メモリ内にある必要だけがある。サブプロセスが別のプロセスによってスワップアウト(swapped out)される場合、該カーネルは、それを、該コーリングプロセスが起動されるときにリロードする。
ある複数の場合には、サブプロセスは、該コーリングプロセスが決して見ない(never sees)複数のオペランドにアクセスする。該複数のオペランドが該サブプロセスによってアクセスのみされるときには、該複数のオペランドは、該サブプロセスのアドレス空間に格納される。
他の複数の場合には、サブプロセスは、該コーリングプロセスの複数のオペランドにアクセスする。該本願の開示の一態様によれば、これらのコーリングプロセスオペランドは、グローバルロケーションではなく、該コーリングプロセスに属するメモリロケーションのところに格納される。その結果、別のプロセスは、メモリ保護の理由から、該コーリングプロセスの複数のオペランドにアクセスすることができない。
各プロセスは、したがって、該共有されるサブプロセスによって使用される複数のオペランドのための、それ自体のアドレス空間を有する。このコーリングプロセスオペランドアドレス空間は、ベースレジスタアドレスとオフセットとによって定義される。言い換えれば、該サブプロセスは、複数の絶対アドレスを使用して複数のコーリングプロセスオペランドにアクセスしない。該本願の開示の一態様によれば、該オフセットは該複数のプロセスすべてにわたって同じである。該ベースアドレスがプロセスごとに異なる場合でも、該オフセットが各コーリングプロセスアドレス空間内で正確に同じである限り、呼び出された各サブプロセスは、それ自体の複数の値をその複数のコーリングプロセスオペランドに格納することができる。
該本願の開示の一態様によれば、該オフセットは該サブプロセス内で定義される。該ベースアドレスは、一実施形態では、マルチプルなベース長アドレス対から選択される複数のベース長アドレスを使用して、ビルド時にオペレーティングシステム・ローダによって決定される。例えば、異なる3つのベース長アドレス対は、該ハードウェアデザイン内に存在することができる。該ローダは、複数のプロセスに1つのベース長対を割り当てる。該ローダは、別のベース長対を複数のサブプロセスに割り当てて、該複数のサブプロセスがそれら自体のコンテキストをもつことを可能にする。
該ベースレジスタは、物理アドレス空間内の該プロセス(またはサブプロセス)の該開始を示す(indicates)。該プロセス(またはサブプロセス)内の該複数のアドレスは、その場合、該ベース値からの複数のオフセットである複数の仮想アドレスである。該長さは、該プロセス(またはサブプロセス)に関する最大のアクセス可能オフセットを決定するために、該マイクロプロセッサによって使用される。この空間が超えられた場合、該ハードウェアは、災害割込み(disaster interrupt)を生成する。
1つのプロセスに属する複数のサブプロセスすべてにわたって共有されるいずれのオペランドも、該プロセスレベルのメモリに格納される。該複数のオペランドがこのサブプロセスによってのみ要求される場合、それらは、該サブプロセス自体のベース長対によって制御される該アドレス空間に格納される。ビルド時に、該ローダは、該複数のサブプロセスデータオペランドに関連した該アドレス空間をあらかじめ割り当てて、異なる複数のプロセスのための異なるセットアップを回避する。
一実施形態では、サブプロセスは、リエントラントであることを要求されない。この実施形態においてさえ、該マイクロプロセッサは、プログラムカウンタ(PC)相対アドレッシングのためのハードウェアサポートをもつ必要がない。ただし、共有されるサブプロセスによって呼び出されるいずれの共通のファンクションも、リエントラントであるべきである。一実施形態では、様々なプロセスは、リエントラントであるように書かれたサブプロセスを同時にコールする。
該開示の一態様によれば、共有することは、共有される該サブプロセスを呼び出す該プロセスのプロセス制御ブロック内のデータに一部(in part)よって、可能になる。プロセス制御ブロックは、該プロセスのコンテキストを格納し、該プロセスによって使用される該ベース長レジスタ値を含む。該開示のこの態様によれば、該オペレーティングシステムは、このコーリングプロセスによって実行されるものとして、該コーリングプロセスのプロセス制御ブロック内で、呼び出されたサブプロセスをマークする。該オペレーティングシステムは、さらに、該サブプロセスのデータ構造内で該現在の親プロセスとして該コーリングプロセスをマークする。その結果として、該オペレーティングシステムが該プロセスコンテキストからスイッチアウトし(switches out)、別のプロセスを実行し、該第1のプロセスに復帰するときにはいつでも、該オペレーティングシステムは、いずれの特定のサブプロセスが実行していたか知っている。該プリエンプトされたサブプロセスへの復帰は、起こることができる。他の実施形態では、該オペレーティングシステムは、特定のサブプロセスがいつアクティブになったかを示すグローバルデータ構造を含む。マルチプルなアクティブサブプロセスは、このグローバルデータ構造内で示されることができる。
上述のように、マルチプルなベース長レジスタ対は存在しており、該対のうちの1つは該サブプロセス・コンテキストに使用され、該対のうちの1つは該コーリングプロセス・コンテキストに使用される。該オペレーティングシステム・コンテキストが、該サブプロセスからスイッチアウトし、後で該サブプロセス・コンテキストに復帰することを望む場合、該オペレーティングシステムは、該親プロセス・コンテキストにいずれの複数のベース長値を使用すべきかを知っているべきである。サブプロセス関連データ構造においては、該オペレーティングシステムは、該現在の親プロセスの表示(indication)を動的に格納し、該コーリングプロセスのプロセス制御ブロックは、該呼び出されたサブプロセスの表示を格納する。したがって、コンテキストがプリエンプトされたプロセスにスイッチバック(switching back)している場合、該オペレーティングシステムは、該親プロセス・コンテキストに関していずれの複数の値をセットすべきか知っている。
複数のタスクにわたって複数のサブプロセスを共有することが起こることになっていない場合、ビルド時に、オペレーティングシステムは、あらゆるプロセスについて、その複数の子サブプロセスが何であるかを知っている。例えば、該オペレーティングシステム内でサポートされた合計155個のサブプロセスと、コンパイル時に5つのサブプロセスを有するように宣言されただけの1つのプロセスとが、存在すると仮定する。この場合、該オペレーティングシステムは、該残りの150個のサブプロセスを追跡する必要はなく、該5個だけは、追跡されなければならない。該本願の開示に記載される、複数のタスクにわたって複数のサブプロセスを該共有することによれば、あらゆるプロセスは、155個のサブプロセスすべてに潜在的にアクセスすることができる。したがって、ストレージ(例えばビットマスク)は、このプロセスによっていずれのサブプロセスが現在実行されているかを示すために、該プロセス制御ブロック内に設けられる。
図2を参照して、ここで、複数のタスクにわたってサブプロセスを共有する一例について説明する。複数のプロセスP0およびP1は、描かれる。複数のサブプロセスSP1は、また、描かれており、プロセスP0またはP1のいずれともインターセクト(intersect)しない、それ自体のコンテキスト(ボックスSP1)内のそのプライベートコードおよびデータを有する。この例では、サブプロセスSP1は、プロセスP0内で宣言された。プロセスP1は、サブプロセスSP1を呼び出す。該楕円210は、該サブプロセスSP1へのダイナミックコールを示す。したがって、サブプロセスSP1は、それ自体のコンテキスト(ボックスSP1)内にそのプライベートコードおよびデータを有し、そしてまた、プロセスP1の該ドメイン内にある、該コーリングプロセスP1の該コードおよびデータ200へのアクセスを有する。
該本願の開示によれば、複数のプロセスP1の該プロセス制御ブロックでは、該呼び出されたサブプロセスSP1は、実行中として示される。さらに、サブプロセスSP1のデータ構造内では、プロセスP1は、該親プロセスとして示される。グローバルデータ構造は、また、該サブプロセスSP1が呼び出されたことを示すためにアップデートされる。
この例では、該サブプロセスSP1は、プロセスP1の該コンテキスト内のオフセットに加えて、ベースアドレスにおける複数のコーリングプロセスオペランドを参照する。該ベースアドレスは、該オペレーティングシステムによって割り当てられる。該オフセットは、各サブプロセス内で定義され、複数のプロセスすべてにわたって固定される。より具体的には、該サブプロセスがメモリ内にロードされるときには、固定された複数のベースアドレスは、また、ロードされ、そして、該複数のオフセットが各コンテキストについて同じままであることを可能にしながら、各プロセス内の該複数のコーリングプロセスオペランドについて異なる複数のメモリロケーションを保証するために該オペレーティングシステムによって定義される。
ここで図3を参照して、例示的なロジックフローについてここで説明する。
該諸図には示されていないが、最初に、サブプロセスは、単一のプロセス内で宣言される。プロセスブロック30において、プロセスは、共有されるサブプロセスを呼び出す。該呼び出すプロセスは、該サブプロセスがそこで宣言された該プロセスである必要はない。マルチプルな異なるプロセスは、各サブプロセスをコールすることができる。
プロセスブロック31において、該コーリングプロセスの該プロセス制御ブロックは、いずれのサブプロセスがコールされたかを示すためにアップデートされる。プロセスブロック32において、該コーリングプロセスは、該サブプロセスのデータ構造内の該呼び出されたサブプロセスの該親プロセスとして指定される。一実施形態では、グローバルオペランドは、また、いずれの親プロセスが該サブプロセスを呼び出したかの表示を格納する。
プロセスブロック33において、複数のハードウェアベースおよび長さレジスタは、サブプロセス・コンテキストにセットされる。このアドレス空間は、該呼び出されたサブプロセスによって排他的に使用される複数のオペランドに利用可能である。該マーキングすることは、該サブプロセス・コンテキストにいずれの複数のベース/長さレジスタ値を使用すべきかを、該オペレーティングシステムが決定できるようにする。
プロセスブロック34において、複数のハードウェアベースおよび長さレジスタは、コーリングプロセスのコンテキストにセットされる。このアドレス空間は、該コーリングプロセスと該呼び出されたサブプロセスとの両方によって使用される複数のオペランドに利用可能である。該マーキングすることは、該プロセス・コンテキストにいずれの複数のベース/長さレジスタ値を使用すべきかを、該オペレーティングシステムが決定できるようにする。一実施形態では、該アドレス空間は、ベースアドレスと固定されたオフセットとによって定義される。該ベースアドレスは、コーリングプロセスごとに異なることができるが、該固定されたオフセットは、各コーリングプロセスについて同じままである。最後に、プロセスブロック35において、該オペレーティングシステムは、該共有されるサブプロセスにジャンプする。
該本願の開示の結果として、マルチプルなプロセスにわたって複数のサブプロセスを共有することを達成することができる。該共有することは、プロセスレベルの変数データの適切なアドレス制御、および、いずれの複数のプロセスがいずれの複数のサブプロセスを呼び出したかを追跡することによって、可能になる。
該本願の発明およびその複数の利点を詳細に記載したが、該添付の諸請求項によって定義される該発明の該精神および範囲から離れることなく様々な諸変更(changes)、諸置換(substitutions)および諸改変(alterations)をここにおいて行うことができることを理解すべきである。例えば、該議論においては読出し操作を使用したが、該発明が複数の書込み操作にも等しく当てはまることが想定される。さらに、該本願の該範囲は、該明細書に記載されるプロセス、機械、製品(manufacture)、組成物(composition of matter)、諸手段、諸方法および諸ステップの該特定の諸実施形態に限定されることを意図されていない。ここにおいて記載される対応する諸実施形態と実質的に同じ機能を果たす、または実質的に同じ結果を達成する、現在存在する、または後で開発されることになる、諸プロセス、諸機械、諸製品、諸組成物、諸手段、諸方法、または諸ステップを、該本願の発明にしたがって利用できることを、当業者は、該本願の発明の該開示から容易に理解するであろう。したがって、該添付の諸請求項は、それらの範囲内に、そのような諸プロセス、諸機械、諸製品、諸組成物、諸手段、諸方法または諸ステップを含むことが意図されている。
以下に、本願の出願当初請求項に記載された発明を付記する。
[1]
複数のプロセスにわたって複数のサブプロセスを共有することを可能にするコンピュータプログラムを格納するコンピュータ読み取り可能な媒体、該媒体は、下記を具備する:
複数のプロセスとサブプロセスとを実行するオペレーティングシステム・コードセグメント、該サブプロセスは該複数のプロセスによって共有されることが可能であり、該サブプロセスはそれ自体のコンテキストを有する。
[2]
各プロセスについてプロセス制御ブロックをさらに具備しており、該プロセス制御ブロックは該それぞれのプロセスによっていったん呼び出された該サブプロセスの表示を格納する、上記[1]に記載の媒体。
[3]
いずれの複数のプロセスが該サブプロセスを呼び出したかの表示を格納するグローバルデータ構造をさらに具備する、上記[2]に記載の媒体。
[4]
該サブプロセスは複数のコーリングプロセスオペランドのためのアドレスオフセットを格納しており、該アドレスオフセットは、該複数のコーリングプロセスオペランドに関してコーリングプロセス・コンテキスト内にアドレス空間を定義するために、ベースアドレスに追加される、上記[1]に記載の媒体。
[5]
該サブプロセスは非リエントラントである、上記[1]に記載の媒体。
[6]
該サブプロセスは単一のプロセス内で宣言されるのみである、上記[1]に記載の媒体。
[7]
該呼び出されたサブプロセスの親プロセスとして該コーリングプロセスをセットする表示を格納するサブプロセス関連データ構造をさらに具備する、上記[1]に記載の媒体。
[8]
下記を具備するモバイルデバイス:
プログラムカウンタ(PC)相対アドレッシングのためのハードウェアサポートを欠いたプロセッサ、該プロセッサは複数のプロセスにわたって複数のサブプロセスを共有することを可能にするオペレーティングシステムを実行し、各サブプロセスはそれ自体のコンテキストを有する。
[9]
該プロセッサはデジタル信号プロセッサ(DSP)を具備する、上記[8]に記載のモバイルデバイス。
[10]
該オペレーティングシステムはリアルタイム・オペレーティングシステムを具備する、上記[8]に記載のモバイルデバイス。
[11]
該複数のサブプロセスは非リエントラントである、上記[8]に記載のモバイルデバイス。
[12]
該オペレーティングシステムは該共有することを可能にする複数のデータ構造を具備しており、該複数のデータ構造のうちの少なくとも1つは呼び出されたサブプロセスをいずれのプロセスがコールしたかの表示を格納する、上記[8]に記載のモバイルデバイス。
[13]
複数のプロセスにわたってサブプロセスを共有する方法、該方法は、下記を具備する:
複数のコーリングプロセスからサブプロセスを呼び出すこと、該サブプロセスはそれ自体のコンテキストを有する、
該サブプロセスの該コンテキストに複数のハードウェアベースおよび長さレジスタをセットすること、
及び、各コーリングプロセスのコンテキストに複数のハードウェアベースおよび長さレジスタをセットすること。
[14]
第1のプロセス内でのみ該サブプロセスを宣言することをさらに具備する、上記[13]に記載の方法。
[15]
ベースアドレスと固定されたオフセットとを使用して、各コーリングプロセスの該コンテキスト内の該複数のオペランドにアクセスすることをさらに具備する、上記[13]に記載の方法。
[16]
該サブプロセスが呼び出されたことを示すために各コーリングプロセスのプロセス制御ブロックをアップデートすることをさらに具備する、上記[13]に記載の方法。
[17]
該コーリングプロセスが該サブプロセスの親であることを示すためにグローバルデータ構造をアップデートすることをさらに具備する、上記[16]に記載の方法。
[18]
該コーリングプロセスを該呼び出されたサブプロセスの親として示すためにサブプロセス関連データ構造をアップデートすることをさらに具備する、上記[16]に記載の方法。
[19]
該サブプロセスをプリエンプトすることと、
該サブプロセスの該親を決定することに一部よって、該サブプロセスに復帰することと、をさらに具備する、上記[18]に記載の方法。
[20]
該サブプロセスをプリエンプトすることは、内部メモリ中の該サブプロセスの少なくとも一部分をスワップアウトさせることをさらに具備する、上記[19]に記載の方法。

Claims (18)

  1. 複数のプロセスにわたって複数のサブプロセスを共有することを可能にするコンピュータプログラムを格納するコンピュータ読み取り可能な記録媒体、該記録媒体は、下記を具備する:
    複数のプロセスとサブプロセスとをプロセッサに実行させるように構成されたオペレーティングシステム・コードセグメント、該サブプロセスは該複数のプロセスによって共有されることが可能であり、該サブプロセスはそれ自体のコンテキストを有し、該サブプロセスは、複数のコーリングプロセスオペランドのためのアドレスオフセットを格納しており、該アドレスオフセットは、該複数のコーリングプロセスオペランドに関してコーリングプロセス・コンテキスト内にアドレス空間を定義するために、ベースアドレスに追加される。
  2. 各プロセスについてプロセス制御ブロックをさらに具備しており、該プロセス制御ブロックは該それぞれのプロセスによっていったん呼び出された該サブプロセスの表示を格納する、請求項1に記載の記録媒体。
  3. いずれの複数のプロセスが該サブプロセスを呼び出したかの表示を格納するグローバルデータ構造をさらに具備する、請求項2に記載の記録媒体。
  4. 該サブプロセスは非リエントラントである、請求項1に記載の記録媒体。
  5. 該サブプロセスは単一のプロセス内で宣言されるのみである、請求項1に記載の記録媒体。
  6. 該呼び出されたサブプロセスの親プロセスとして該コーリングプロセスをセットする表示を格納するサブプロセス関連データ構造をさらに具備する、請求項1に記載の記録媒体。
  7. 下記を具備するモバイルデバイス:
    複数のプロセスにわたって複数のサブプロセスを共有することを可能にするオペレーティングシステムを実行するように構成されたプロセッサ、各サブプロセスはそれ自体のコンテキストを有し、該サブプロセスは、複数のコーリングプロセスオペランドのためのアドレスオフセットを格納しており、該アドレスオフセットは、該複数のコーリングプロセスオペランドに関してコーリングプロセス・コンテキスト内にアドレス空間を定義するために、ベースアドレスに追加される。
  8. 該プロセッサはデジタル信号プロセッサ(DSP)を具備する、請求項7に記載のモバイルデバイス。
  9. 該複数のサブプロセスは非リエントラントである、請求項7に記載のモバイルデバイス。
  10. 該オペレーティングシステムは該共有することを可能にする複数のデータ構造を具備しており、該複数のデータ構造のうちの少なくとも1つは呼び出されたサブプロセスをいずれのプロセスがコールしたかの表示を格納する、請求項7に記載のモバイルデバイス。
  11. 複数のプロセスにわたってサブプロセスを共有する方法、該方法は、下記を具備する:
    プロセッサが、複数のコーリングプロセスからサブプロセスを呼び出すこと、該サブプロセスはそれ自体のコンテキストを有し、該サブプロセスは、複数のコーリングプロセスオペランドのためのアドレスオフセットを格納しており、該アドレスオフセットは、該複数のコーリングプロセスオペランドに関してコーリングプロセス・コンテキスト内にアドレス空間を定義するために、ベースアドレスに追加される、
    該プロセッサが、該サブプロセスの該コンテキストにハードウェアベースレジスタおよび長さレジスタをセットすること、
    及び、該プロセッサが、各コーリングプロセスのコンテキストにハードウェアベースレジスタおよび長さレジスタをセットすること。
  12. 該プロセッサが、第1のプロセス内でのみ該サブプロセスを宣言することをさらに具備する、請求項11に記載の方法。
  13. 該プロセッサが、ベースアドレスと固定されたオフセットとを使用して、各コーリングプロセスの該コンテキスト内の該複数のオペランドにアクセスすることをさらに具備する、請求項11に記載の方法。
  14. 該プロセッサが、該サブプロセスがコーリングプロセスによって呼び出されたことを示すために各コーリングプロセスのプロセス制御ブロックをアップデートすることをさらに具備する、請求項11に記載の方法。
  15. 該プロセッサが、該コーリングプロセスが該サブプロセスの親であることを示すためにグローバルデータ構造をアップデートすることをさらに具備する、請求項14に記載の方法。
  16. 該プロセッサが、該コーリングプロセスを該呼び出されたサブプロセスの親として示すためにサブプロセス関連データ構造をアップデートすることをさらに具備する、請求項14に記載の方法。
  17. 該プロセッサが、該サブプロセスをプリエンプトすることと、
    該プロセッサが、該サブプロセスの親を決定することと、
    該プロセッサが、該サブプロセスの該決定された親のプロセス制御ブロック内のデータに少なくとも基づいて、該サブプロセスに復帰することと、をさらに具備する、請求項16に記載の方法。
  18. 該サブプロセスをプリエンプトすることは、内部メモリ中の該サブプロセスの少なくとも一部分をスワップアウトさせることをさらに具備する、請求項17に記載の方法。
JP2013134145A 2008-04-02 2013-06-26 複数のタスクにわたる複数のオペレーティングシステム・サブプロセスの共有 Expired - Fee Related JP5678133B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/061,607 2008-04-02
US12/061,607 US9015727B2 (en) 2008-04-02 2008-04-02 Sharing operating system sub-processes across tasks

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2011503029A Division JP5307228B2 (ja) 2008-04-02 2009-03-23 複数のタスクにわたる複数のオペレーティングシステム・サブプロセスの共有

Publications (2)

Publication Number Publication Date
JP2013232215A true JP2013232215A (ja) 2013-11-14
JP5678133B2 JP5678133B2 (ja) 2015-02-25

Family

ID=40668438

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2011503029A Expired - Fee Related JP5307228B2 (ja) 2008-04-02 2009-03-23 複数のタスクにわたる複数のオペレーティングシステム・サブプロセスの共有
JP2013134145A Expired - Fee Related JP5678133B2 (ja) 2008-04-02 2013-06-26 複数のタスクにわたる複数のオペレーティングシステム・サブプロセスの共有

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2011503029A Expired - Fee Related JP5307228B2 (ja) 2008-04-02 2009-03-23 複数のタスクにわたる複数のオペレーティングシステム・サブプロセスの共有

Country Status (7)

Country Link
US (1) US9015727B2 (ja)
EP (1) EP2281238A1 (ja)
JP (2) JP5307228B2 (ja)
KR (1) KR101284099B1 (ja)
CN (2) CN103324529B (ja)
TW (1) TW201003525A (ja)
WO (1) WO2009123873A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102469035B (zh) * 2010-11-05 2016-01-20 腾讯科技(深圳)有限公司 跨进程通信的方法和装置
US8868886B2 (en) 2011-04-04 2014-10-21 International Business Machines Corporation Task switch immunized performance monitoring
US9342432B2 (en) 2011-04-04 2016-05-17 International Business Machines Corporation Hardware performance-monitoring facility usage after context swaps
US20130055033A1 (en) 2011-08-22 2013-02-28 International Business Machines Corporation Hardware-assisted program trace collection with selectable call-signature capture
US9705985B1 (en) * 2013-03-18 2017-07-11 Marvell International Ltd. Systems and methods for cross protocol automatic sub-operation scheduling
US10048976B2 (en) 2013-11-29 2018-08-14 New Jersey Institute Of Technology Allocation of virtual machines to physical machines through dominant resource assisted heuristics

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09198255A (ja) * 1996-01-02 1997-07-31 Internatl Business Mach Corp <Ibm> オペレーティング・システムに影響を与えないエミュレーション・コンテキストの保管と復元を行う方法およびシステム
JPH09288586A (ja) * 1995-09-29 1997-11-04 Informix Software Inc ダイナミック・ライブラリ・タスク切替え
JP2007265228A (ja) * 2006-03-29 2007-10-11 Fujitsu Ten Ltd 共有プログラムおよび情報機器

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4928237A (en) * 1987-03-27 1990-05-22 International Business Machines Corp. Computer system having mode independent addressing
US6286025B1 (en) * 1994-12-09 2001-09-04 International Business Machines Corporation Method and system of process identification by user defined process variables
US5727211A (en) * 1995-11-09 1998-03-10 Chromatic Research, Inc. System and method for fast context switching between tasks
US6711673B1 (en) * 2000-01-03 2004-03-23 Advanced Micro Devices, Inc. Using a model specific register as a base I/O address register for embedded I/O registers in a processor
US7272664B2 (en) * 2002-12-05 2007-09-18 International Business Machines Corporation Cross partition sharing of state information
US20040123270A1 (en) 2002-12-23 2004-06-24 Motorola, Inc. Method and apparatus for shared libraries on mobile devices
KR100518584B1 (ko) 2003-07-12 2005-10-04 삼성전자주식회사 공유 라이브러리 시스템 및 상기 시스템 구축 방법
GB0316532D0 (en) 2003-07-15 2003-08-20 Transitive Ltd Method and apparatus for partitioning code in program code conversion
US7653684B2 (en) 2004-12-03 2010-01-26 Microsoft Corporation Enabling inter-subsystem resource sharing
US7543126B2 (en) * 2005-08-31 2009-06-02 International Business Machines Corporation Apparatus, system, and method for implementing protected virtual memory subcontexts
TW200739421A (en) 2006-04-07 2007-10-16 Sunplus Technology Co Ltd Method of dynamically linking function database software devices and sharing static linked source codes with main application program
US7793055B2 (en) * 2006-08-04 2010-09-07 Apple Inc. Transferring memory buffers between multiple processing entities

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09288586A (ja) * 1995-09-29 1997-11-04 Informix Software Inc ダイナミック・ライブラリ・タスク切替え
JPH09198255A (ja) * 1996-01-02 1997-07-31 Internatl Business Mach Corp <Ibm> オペレーティング・システムに影響を与えないエミュレーション・コンテキストの保管と復元を行う方法およびシステム
JP2007265228A (ja) * 2006-03-29 2007-10-11 Fujitsu Ten Ltd 共有プログラムおよび情報機器

Also Published As

Publication number Publication date
US20090254919A1 (en) 2009-10-08
EP2281238A1 (en) 2011-02-09
US9015727B2 (en) 2015-04-21
CN103324529B (zh) 2016-08-03
CN102016802A (zh) 2011-04-13
KR101284099B1 (ko) 2013-07-10
TW201003525A (en) 2010-01-16
JP5678133B2 (ja) 2015-02-25
CN103324529A (zh) 2013-09-25
JP2011516972A (ja) 2011-05-26
WO2009123873A1 (en) 2009-10-08
JP5307228B2 (ja) 2013-10-02
KR20100127309A (ko) 2010-12-03
CN102016802B (zh) 2015-05-20

Similar Documents

Publication Publication Date Title
JP5678133B2 (ja) 複数のタスクにわたる複数のオペレーティングシステム・サブプロセスの共有
US10592218B2 (en) Dynamic data and compute resource elasticity
JP6010540B2 (ja) 選択された実行ランタイムによる実行のためのユーザコードのランタイム非依存表現
US10585653B2 (en) Declarative programming model with a native programming language
US8185895B2 (en) Method, apparatus and program storage device for providing an anchor pointer in an operating system context structure for improving the efficiency of accessing thread specific data
US20090328058A1 (en) Protected mode scheduling of operations
US9063805B2 (en) Method and system for enabling access to functionality provided by resources outside of an operating system environment
CN103793255A (zh) 可配置的多主模式多os内核实时操作系统架构与启动方法
CN106445656B (zh) 一种实现线程本地存储的方法及装置
JP5389899B2 (ja) オペレーティング・システム高速実行コマンド
US11144329B2 (en) Processor microcode with embedded jump table
US9110793B2 (en) Inner process
Yang et al. A RISC-V On-chip Operating System Based on Rust
WO2023219692A1 (en) Externally-initiated runtime type extension
Mahboubi et al. . NET API Wrapping for Existing C++ Haptic APIs

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140620

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140708

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141008

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: 20141202

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150105

R150 Certificate of patent or registration of utility model

Ref document number: 5678133

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees