JP7350807B2 - メッセージ送受信方法およびオペレーティングシステム - Google Patents
メッセージ送受信方法およびオペレーティングシステム Download PDFInfo
- Publication number
- JP7350807B2 JP7350807B2 JP2021110048A JP2021110048A JP7350807B2 JP 7350807 B2 JP7350807 B2 JP 7350807B2 JP 2021110048 A JP2021110048 A JP 2021110048A JP 2021110048 A JP2021110048 A JP 2021110048A JP 7350807 B2 JP7350807 B2 JP 7350807B2
- Authority
- JP
- Japan
- Prior art keywords
- thread
- message
- destination
- receiving
- buffer
- 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.)
- Active
Links
Images
Landscapes
- Multi Processors (AREA)
Description
(ハードウェア構成)
本実施形態に係るコンピュータシステムは、図1に示すようなコンピュータを備えている。このコンピュータは、CPU10、メモリ20(主記憶装置)、図示しない補助記憶装置、を備えている。
オペレーティングシステムは、CPU10が実行するプログラムを制御するソフトウェアである。本実施形態に係るオペレーティングシステムは、複数のプロセッサコア11を搭載したCPU10(マルチコアプロセッサ)をサポートしている。このオペレーティングシステムでは、プログラムの実行単位をスレッドと呼んでいる。
割り込みマネージャ35(割り込み管理機能)は、プロセッサコア11で発生した割り込みをハンドリングする機能である。
本実施形態に係るオペレーティングシステムは、プロセッサコア11の管理効率を高めるため、クラスタと呼ぶグルーピングの概念を使用している。クラスタは、複数のプロセッサコア11をグループ化したものであり、各プロセッサコア11は少なくともいずれかのクラスタに所属している。このクラスタをさらに上位のクラスタにグループ化して、クラスタを階層構造とすることも可能である。
メッセージは、オペレーティングシステムによって提供されるスレッド間の通信手段である。メッセージは、最もハードウェアに近い下位層では、マイクロカーネル30からマイクロカーネル30へ送信されるが、上位のインタフェース層では、スレッドからスレッドに対して送信することが可能である。すなわち、ユーザプログラムがインタフェースライブラリ39を使用してメッセージ送信を行う場合には、送信先にスレッドを指定して実行することが可能である。この場合、メッセージマネージャ34によって、そのスレッドが割り当てられているマイクロカーネル30が特定され、メッセージが伝達される。
なお、メッセージには「送信」と「受信」があり、また、送信と受信のそれぞれに「同期」と「非同期」がある。
本実施形態に係るオペレーティングシステムは異なるマイクロカーネル30に所属するスレッド間でメッセージングを行う際、メッセージバッファを介して行う。メッセージバッファは、ハードウェアクラスタ16内の全てのプロセッサコア11からアクセス可能となっている。メッセージバッファは各スレッドに固有のものがスレッドの生成時に確保される。このようなスレッドに固有のメッセージバッファをスレッドメッセージバッファ25と呼ぶ。スレッドメッセージバッファ25は、スレッドごとに作成されるため、スレッドと同じ数だけ確保されることになる。
図3を参照しつつ、上記したスレッドメッセージバッファ25を介したメッセージ送受信の流れを説明する。
メッセージ送信処理の具体的な流れについて、図4のフローを参照しながら説明する。このメッセージ送信処理は、メッセージ送信用API(message_send)が呼び出されたときに、送信元カーネル(送信元スレッドが属するマイクロカーネル30)によって実行される処理である。図4のフローは、message_sendの内部で実行される処理を説明している。ただし、このフローでは、エラー処理などの一部の処理については説明を省略している。例えば、不正なパラメータが指定された場合には、message_sendの戻り値としてエラー値を返却するが、このような処理については説明を省略している。
次に、割り込み発生時のメッセージ受信処理の具体的な流れについて、図5のフローを参照しながら説明する。このメッセージ受信処理は、上記したメッセージ送信処理のステップS150において発生した割り込みを検知したときに、受信先カーネル(受信先スレッドが属するマイクロカーネル30)の割り込みハンドラによって実行される処理である。
次に、API(message_receive)呼び出し時のメッセージ受信処理の具体的な流れについて、図6のフローを参照しながら説明する。このメッセージ受信処理は、メッセージ受信用API(message_receive)が呼び出されたときに、受信先カーネル(受信先スレッドが属するマイクロカーネル30)によって実行される処理である。図6のフローは、message_receiveの内部で実行される処理を説明している。ただし、このフローでは、エラー処理などの一部の処理については説明を省略している。例えば、不正なパラメータが指定された場合には、message_receiveの戻り値としてエラー値を返却するが、このような処理については説明を省略している。
上記したように、本実施形態によれば、スレッドの生成時に、当該スレッドに固有のスレッドメッセージバッファ25が確保されている。このため、高い安全性が求められないスレッドに対するメッセージが一時的に増加してバッファが枯渇した場合でも、高い安全性が求められるスレッドが影響を受けることはない。このため、メッセージの受信量が一時的に増加した場合でも、重要なメッセージを確実に送受信することができる。
11 プロセッサコア
15 スケジューリングクラスタ
16 ハードウェアクラスタ
20 メモリ
25 スレッドメッセージバッファ
26 マイクロカーネル制御情報
30 マイクロカーネル
31 ローカルスケジューラ
32 スレッドスケジューラ(スレッド管理機能)
33 上位のスレッドスケジューラ
34 メッセージマネージャ
35 割り込みマネージャ
39 インタフェースライブラリ
40 メッセージ送受信モジュール
Claims (6)
- 複数のプロセッサコアと、前記複数のプロセッサコアがアクセス可能なメモリと、を備えたコンピュータが、オペレーティングシステムに実行させるメッセージ送受信方法であって、
前記オペレーティングシステムは、前記複数のプロセッサコアと1対1で対応して設けられた複数のマイクロカーネルを並行して実行可能であり、
前記複数のマイクロカーネルのそれぞれが、対応するプロセッサコアに割り当てられたスレッドの制御を行うように構成されており、
前記複数のマイクロカーネルのうちの少なくとも1つは、どのプロセッサコアにどのスレッドが割り当てられているかを管理するスレッド管理機能を備え、
前記メモリには、スレッドの生成時に、当該スレッドに固有のスレッドメッセージバッファが確保されており、
任意のマイクロカーネル(送信元カーネル)が、任意の送信元スレッドから、他のマイクロカーネル(受信先カーネル)が制御する受信先スレッドへ宛ててメッセージの送信要求を受け取ったときに、
前記送信要求において指定された受信先スレッドのIDを基に、前記受信先カーネルを特定するための情報を前記スレッド管理機能に問い合わせるステップ(問い合わせステップ)と、
前記受信先カーネルが管理する情報と前記受信先スレッドのIDとを基に、前記受信先スレッドに割り当てられた前記スレッドメッセージバッファ(送信先バッファ)を特定するステップ(バッファ特定ステップ)と、
前記送信先バッファにメッセージを書き込むステップ(書き込みステップ)と、
を備える、
メッセージ送受信方法。 - 前記書き込みステップを実行した後に、前記受信先カーネルに対応するプロセッサコアに割り込みを発生させ、前記受信先カーネルに前記書き込みステップの終了を通知するステップ(通知ステップ)を更に備える、
請求項1に記載のメッセージ送受信方法。 - 前記スレッドメッセージバッファのサイズは、スレッド生成時のパラメータにより指定可能である、
請求項1または2に記載のメッセージ送受信方法。 - 複数のプロセッサコアと、前記複数のプロセッサコアがアクセス可能なメモリと、を備えたコンピュータ上で実行されるオペレーティングシステムであって、
前記オペレーティングシステムは、前記複数のプロセッサコアと1対1で対応して設けられた複数のマイクロカーネルを並行して実行可能であり、
前記複数のマイクロカーネルのそれぞれが、対応するプロセッサコアに割り当てられたスレッドの制御を行うように構成されており、
前記複数のマイクロカーネルのうちの少なくとも1つは、どのプロセッサコアにどのスレッドが割り当てられているかを管理するスレッド管理機能を備え、
前記メモリには、スレッドの生成時に、当該スレッドに固有のスレッドメッセージバッファが確保されており、
任意のマイクロカーネル(送信元カーネル)が、任意の送信元スレッドから、他のマイクロカーネル(受信先カーネル)が制御する受信先スレッドへ宛ててメッセージの送信要求を受け取ったときに、前記コンピュータに、
前記送信要求において指定された受信先スレッドのIDを基に、前記受信先カーネルを特定するための情報を前記スレッド管理機能に問い合わせるステップ(問い合わせステップ)と、
前記受信先カーネルが管理する情報と前記受信先スレッドのIDとを基に、前記受信先スレッドに割り当てられた前記スレッドメッセージバッファ(送信先バッファ)を特定するステップ(バッファ特定ステップ)と、
前記送信先バッファにメッセージを書き込むステップ(書き込みステップ)と、
を実行させる、
オペレーティングシステム。 - 前記コンピュータに、
前記書き込みステップを実行した後に、前記受信先カーネルに対応するプロセッサコアに割り込みを発生させ、前記受信先カーネルに前記書き込みステップの終了を通知するステップ(通知ステップ)を更に実行させる、
請求項4に記載のオペレーティングシステム。 - 前記スレッドメッセージバッファのサイズは、スレッド生成時のパラメータにより指定可能である、
請求項4または5に記載のオペレーティングシステム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021110048A JP7350807B2 (ja) | 2021-07-01 | 2021-07-01 | メッセージ送受信方法およびオペレーティングシステム |
JP2023148135A JP7512498B2 (ja) | 2021-07-01 | 2023-09-13 | メッセージ送受信方法およびオペレーティングシステム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021110048A JP7350807B2 (ja) | 2021-07-01 | 2021-07-01 | メッセージ送受信方法およびオペレーティングシステム |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2023148135A Division JP7512498B2 (ja) | 2021-07-01 | 2023-09-13 | メッセージ送受信方法およびオペレーティングシステム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2023007057A JP2023007057A (ja) | 2023-01-18 |
JP7350807B2 true JP7350807B2 (ja) | 2023-09-26 |
Family
ID=85107345
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021110048A Active JP7350807B2 (ja) | 2021-07-01 | 2021-07-01 | メッセージ送受信方法およびオペレーティングシステム |
JP2023148135A Active JP7512498B2 (ja) | 2021-07-01 | 2023-09-13 | メッセージ送受信方法およびオペレーティングシステム |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2023148135A Active JP7512498B2 (ja) | 2021-07-01 | 2023-09-13 | メッセージ送受信方法およびオペレーティングシステム |
Country Status (1)
Country | Link |
---|---|
JP (2) | JP7350807B2 (ja) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016045510A (ja) | 2014-08-19 | 2016-04-04 | 富士通株式会社 | 情報処理システム、情報処理装置、情報処理システムの制御方法及び情報処理装置の制御プログラム |
JP2021060707A (ja) | 2019-10-04 | 2021-04-15 | イーソル株式会社 | 同期制御システムおよび同期制御方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000347881A (ja) | 1999-06-04 | 2000-12-15 | Nec Corp | 複数プロセス間通信方法及びその装置並びに情報記録媒体 |
-
2021
- 2021-07-01 JP JP2021110048A patent/JP7350807B2/ja active Active
-
2023
- 2023-09-13 JP JP2023148135A patent/JP7512498B2/ja active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016045510A (ja) | 2014-08-19 | 2016-04-04 | 富士通株式会社 | 情報処理システム、情報処理装置、情報処理システムの制御方法及び情報処理装置の制御プログラム |
JP2021060707A (ja) | 2019-10-04 | 2021-04-15 | イーソル株式会社 | 同期制御システムおよび同期制御方法 |
Also Published As
Publication number | Publication date |
---|---|
JP7512498B2 (ja) | 2024-07-08 |
JP2023165009A (ja) | 2023-11-14 |
JP2023007057A (ja) | 2023-01-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3882931B2 (ja) | 仮想計算機環境におけるディスパッチ機能の管理 | |
US9996401B2 (en) | Task processing method and virtual machine | |
US8161453B2 (en) | Method and apparatus for implementing task management of computer operations | |
US6732138B1 (en) | Method and system for accessing system resources of a data processing system utilizing a kernel-only thread within a user process | |
JP4012517B2 (ja) | 仮想計算機環境におけるロックの管理 | |
US7246167B2 (en) | Communication multiplexor using listener process to detect newly active client connections and passes to dispatcher processes for handling the connections | |
US6442568B1 (en) | Customer information control system application programming interface with transient data functions, in a loosely coupled data processing environment | |
KR101850318B1 (ko) | 가상 메모리 관리 장치 및 방법 | |
JP5680620B2 (ja) | ソフトウェアアプリケーションの起動コストを低減するためのシステムおよび方法 | |
US9471532B2 (en) | Remote core operations in a multi-core computer | |
EP0747832A2 (en) | Customer information control system and method in a loosely coupled parallel processing environment | |
US20090254917A1 (en) | System and method for improved i/o node control in computer system | |
JP2003030050A (ja) | マルチスレッド実行方法及び並列プロセッサシステム | |
JPWO2012026034A1 (ja) | スケジューラ、マルチコアプロセッサシステムおよびスケジューリング方法 | |
US10331500B2 (en) | Managing fairness for lock and unlock operations using operation prioritization | |
US20130097382A1 (en) | Multi-core processor system, computer product, and control method | |
KR20230163559A (ko) | 메시지 전달 회로부 및 방법 | |
EP0747813A2 (en) | Customer information control system and method with temporary storage queuing functions in a loosely coupled parallel processing environment | |
CA2176996A1 (en) | Customer information control system and method with transaction serialization control functions in a loosely coupled parallel processing environment | |
US5630133A (en) | Customer information control system and method with API start and cancel transaction functions in a loosely coupled parallel processing environment | |
Thomadakis et al. | Parallel software framework for large-scale parallel mesh generation and adaptation for cfd solvers | |
JP7350807B2 (ja) | メッセージ送受信方法およびオペレーティングシステム | |
JP7346649B2 (ja) | 同期制御システムおよび同期制御方法 | |
CN111858418B (zh) | 一种基于远程直接内存访问rdma的内存通信方法及装置 | |
JP2014146366A (ja) | マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法および制御プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20221108 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20230719 |
|
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: 20230822 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20230913 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7350807 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |