JPH0973412A - データ転送方法及びメモリ管理装置 - Google Patents
データ転送方法及びメモリ管理装置Info
- Publication number
- JPH0973412A JPH0973412A JP8012021A JP1202196A JPH0973412A JP H0973412 A JPH0973412 A JP H0973412A JP 8012021 A JP8012021 A JP 8012021A JP 1202196 A JP1202196 A JP 1202196A JP H0973412 A JPH0973412 A JP H0973412A
- Authority
- JP
- Japan
- Prior art keywords
- data
- transfer
- control information
- access
- physical page
- 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.)
- Pending
Links
- 238000012546 transfer Methods 0.000 title claims abstract description 407
- 238000000034 method Methods 0.000 title claims description 281
- 230000008569 process Effects 0.000 claims description 221
- 238000013507 mapping Methods 0.000 claims description 52
- 230000008859 change Effects 0.000 claims description 27
- 238000013500 data storage Methods 0.000 abstract description 35
- 238000007726 management method Methods 0.000 description 65
- 238000010586 diagram Methods 0.000 description 42
- 238000012545 processing Methods 0.000 description 40
- 230000006870 function Effects 0.000 description 21
- 238000001514 detection method Methods 0.000 description 14
- 230000005540 biological transmission Effects 0.000 description 13
- 238000006243 chemical reaction Methods 0.000 description 8
- 230000007717 exclusion Effects 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 6
- 238000013404 process transfer Methods 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000007704 transition Effects 0.000 description 3
- 235000010724 Wisteria floribunda Nutrition 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 101100077952 Arabidopsis thaliana MRL7 gene Proteins 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- FFBHFFJDDLITSX-UHFFFAOYSA-N benzyl N-[2-hydroxy-4-(3-oxomorpholin-4-yl)phenyl]carbamate Chemical compound OC1=C(NC(=O)OCC2=CC=CC=C2)C=CC(=C1)N1CCOCC1=O FFBHFFJDDLITSX-UHFFFAOYSA-N 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- ZZUFCTLCJUWOSV-UHFFFAOYSA-N furosemide Chemical compound C1=C(Cl)C(S(=O)(=O)N)=CC(C(O)=O)=C1NCC1=CC=CO1 ZZUFCTLCJUWOSV-UHFFFAOYSA-N 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000004886 process control Methods 0.000 description 1
- 230000007958 sleep Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1466—Key-lock mechanism
- G06F12/1475—Key-lock mechanism in a virtual system, e.g. with translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0882—Page mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1036—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1483—Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or list
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Storage Device Security (AREA)
- Information Transfer Systems (AREA)
- Memory System (AREA)
Abstract
(57)【要約】
【目的】 ユーザ空間、フレームバッファまたはデバイ
ス・インタフェースと、デバイス・インタフェースとの
間のデータ転送を効率良く行なう。 【構成】 本発明に係るデータ転送方法は、デバイス・
インタフェースからデバイス・インタフェース等へ直接
データの転送を行なうにあたって、転送元となるデバイ
ス・インタフェースのデータブロックに対するアクセス
許可内容を示すカーネル空間に存在するアクセス制御情
報を参照してデータ転送制御する。また、本発明に係る
メモリ管理装置は、ユーザ空間、フレームバッファまた
はデバイス・インタフェースのデータブロックと該ブロ
ックへのアクセス許可内容を示すアクセス制御情報を対
応付けて記憶する手段と、所望するデータブロックへの
アクセス要求元識別子と要求されたデータブロックに対
応するアクセス制御情報に基づき該データブロックへの
アクセスを制御する手段を備える。
ス・インタフェースと、デバイス・インタフェースとの
間のデータ転送を効率良く行なう。 【構成】 本発明に係るデータ転送方法は、デバイス・
インタフェースからデバイス・インタフェース等へ直接
データの転送を行なうにあたって、転送元となるデバイ
ス・インタフェースのデータブロックに対するアクセス
許可内容を示すカーネル空間に存在するアクセス制御情
報を参照してデータ転送制御する。また、本発明に係る
メモリ管理装置は、ユーザ空間、フレームバッファまた
はデバイス・インタフェースのデータブロックと該ブロ
ックへのアクセス許可内容を示すアクセス制御情報を対
応付けて記憶する手段と、所望するデータブロックへの
アクセス要求元識別子と要求されたデータブロックに対
応するアクセス制御情報に基づき該データブロックへの
アクセスを制御する手段を備える。
Description
【0001】
【発明の属する技術分野】本発明は、ネットワークや記
憶装置あるいは出力装置等のデバイスと計算機の間、ま
たは計算機内のプロセス間に行われるデータ転送方法お
よびデータブロックを管理するメモリ管理装置に関す
る。
憶装置あるいは出力装置等のデバイスと計算機の間、ま
たは計算機内のプロセス間に行われるデータ転送方法お
よびデータブロックを管理するメモリ管理装置に関す
る。
【0002】
(1)従来のOS(オペレーティング・システム)で
は、デバイス(例えば、ネットワーク、ハードディスク
などの記憶装置、ディスプレイなどの出力装置等)を管
理するのに必要なデータ構造は、個々のデバイスごと
に、OSが独立に管理を行ってきた。例えばネットワー
クを通じて転送されてきた画像データを計算機に接続さ
れたディスプレイに表示する場合、ネットワーク・イン
ターフェースとディスプレイといったデバイスを管理す
るデータ構造が違うので、画像データを、ネットワーク
・インターフェースを管理するのに必要なデータ構造か
らディスプレイを管理するのに必要なデータ構造へ必要
に応じて変換し転送する必要がある。
は、デバイス(例えば、ネットワーク、ハードディスク
などの記憶装置、ディスプレイなどの出力装置等)を管
理するのに必要なデータ構造は、個々のデバイスごと
に、OSが独立に管理を行ってきた。例えばネットワー
クを通じて転送されてきた画像データを計算機に接続さ
れたディスプレイに表示する場合、ネットワーク・イン
ターフェースとディスプレイといったデバイスを管理す
るデータ構造が違うので、画像データを、ネットワーク
・インターフェースを管理するのに必要なデータ構造か
らディスプレイを管理するのに必要なデータ構造へ必要
に応じて変換し転送する必要がある。
【0003】以下、図26を参照しながら、従来技術に
おけるデバイスからデバイスへのデータ転送について、
ネットワークを経由して転送された画像データをXサー
バ・プロセスがディスプレイ上に表示する場合を例にと
って説明する。なお、Xサーバについては、参考文献
「X Window ハンドブック」(OliverJ
ones著、西村 亨監修、株式会社アスキー)に詳し
い。
おけるデバイスからデバイスへのデータ転送について、
ネットワークを経由して転送された画像データをXサー
バ・プロセスがディスプレイ上に表示する場合を例にと
って説明する。なお、Xサーバについては、参考文献
「X Window ハンドブック」(OliverJ
ones著、西村 亨監修、株式会社アスキー)に詳し
い。
【0004】ネットワーク(図示せず)を経由して転送
されてきたパケットは、一旦、ネットワーク・インター
フェース113上のバッファ114に格納されてから
(図26のa)、OS内のドライバによって主記憶11
5のうちカーネル空間101内のネットワーク・インタ
ーフェースを管理するデータ構造(例えばmbuf)1
16に転送される(図26のb)。
されてきたパケットは、一旦、ネットワーク・インター
フェース113上のバッファ114に格納されてから
(図26のa)、OS内のドライバによって主記憶11
5のうちカーネル空間101内のネットワーク・インタ
ーフェースを管理するデータ構造(例えばmbuf)1
16に転送される(図26のb)。
【0005】次に、OS内にあるネットワーク・プロト
コルを処理するモジュールによって、必要なプロトコル
処理が行われた後、受信パケットから転送データが抽出
され、この抽出された転送データが主記憶115のうち
ユーザ空間102内に存在する所定のデータ領域117
に転送される(図26のc)。なお、データ記憶領域1
17は、Xサーバまたはクライアント・プロセス等のデ
ータ転送の宛先プロセスにより確保される。
コルを処理するモジュールによって、必要なプロトコル
処理が行われた後、受信パケットから転送データが抽出
され、この抽出された転送データが主記憶115のうち
ユーザ空間102内に存在する所定のデータ領域117
に転送される(図26のc)。なお、データ記憶領域1
17は、Xサーバまたはクライアント・プロセス等のデ
ータ転送の宛先プロセスにより確保される。
【0006】ユーザ空間102内に存在するデータ領域
117に転送されたデータは、Xサーバによって必要に
応じて変換処理が行われた後、ディスプレイ119に表
示するため、OSが管理するフレームバッファ118と
呼ばれるデータ領域に転送される(図26のd)。
117に転送されたデータは、Xサーバによって必要に
応じて変換処理が行われた後、ディスプレイ119に表
示するため、OSが管理するフレームバッファ118と
呼ばれるデータ領域に転送される(図26のd)。
【0007】フレームバッファとは、ビットマップ用の
記憶装置であり、画面に表示される画像を格納するハー
ドウェアである。
記憶装置であり、画面に表示される画像を格納するハー
ドウェアである。
【0008】最後に、計算機のハードウェア(図示せ
ず)によってフレームバッファ118に格納された画像
データがリフレッシュ・レートに従って読み出され、デ
ィスプレイ119に転送され、ディスプレイ上にネット
ワークを経由して転送されてきた画像データが表示され
ることとなる(図26のe)。
ず)によってフレームバッファ118に格納された画像
データがリフレッシュ・レートに従って読み出され、デ
ィスプレイ119に転送され、ディスプレイ上にネット
ワークを経由して転送されてきた画像データが表示され
ることとなる(図26のe)。
【0009】このように、複数のデバイスをまたがって
データ転送を行う場合、より具体的にはユーザ空間、フ
レームバッファまたはデバイス・インタフェースと、デ
バイス・インタフェースとの間でデータ転送を行う場
合、多数回のデータ転送を行わなければならず、効率が
悪いという問題点があった。
データ転送を行う場合、より具体的にはユーザ空間、フ
レームバッファまたはデバイス・インタフェースと、デ
バイス・インタフェースとの間でデータ転送を行う場
合、多数回のデータ転送を行わなければならず、効率が
悪いという問題点があった。
【0010】また、従来のOSでは、デバイスごとに、
デバイスとのデータのやりとりに用いるデータの記憶場
所が違っていたので、デバイスごとに、ユーザプロセス
がデータ記憶場所をアクセスする際の相互排除をすれば
よかった。しかし、デバイスとのデータのやりとりに用
いるデータの記憶場所を共有化すると、従来のアクセス
の相互排除では、あるプロセスが、あるデバイスへデー
タを転送するために、記憶場所をアクセスすると、他の
プロセスは、たとえ他のデバイスへデータを転送するた
めに、記憶場所をアクセスしようとしてもアクセスする
ことができず、効率が悪いといった問題点があった。
デバイスとのデータのやりとりに用いるデータの記憶場
所が違っていたので、デバイスごとに、ユーザプロセス
がデータ記憶場所をアクセスする際の相互排除をすれば
よかった。しかし、デバイスとのデータのやりとりに用
いるデータの記憶場所を共有化すると、従来のアクセス
の相互排除では、あるプロセスが、あるデバイスへデー
タを転送するために、記憶場所をアクセスすると、他の
プロセスは、たとえ他のデバイスへデータを転送するた
めに、記憶場所をアクセスしようとしてもアクセスする
ことができず、効率が悪いといった問題点があった。
【0011】ところで、デバイスの管理、すなわちデー
タ転送に用いるデータブロックの管理に必要なデータ構
造の1つとして、SVR4(SystemV Rele
ase4)のネットワーク・インターフェースとのデー
タのやりとりやネットワーク・プロトコル等を処理する
のに用いるバッファの管理を効率良く管理するために開
発されたストリームと呼ばれる管理機構を用いることが
ある。なお、ストリームのデータ構造や、動作の概要に
ついては、参考文献「改定版UNIXデバイスドライ
バ」(Janet I. Egan / Thomas
J. Teixeira著、三田 典玄監訳、アスキ
ー出版局、253〜293頁)に詳しい。図27は、こ
の従来のストリームと呼ばれる管理機構を示した図であ
る。
タ転送に用いるデータブロックの管理に必要なデータ構
造の1つとして、SVR4(SystemV Rele
ase4)のネットワーク・インターフェースとのデー
タのやりとりやネットワーク・プロトコル等を処理する
のに用いるバッファの管理を効率良く管理するために開
発されたストリームと呼ばれる管理機構を用いることが
ある。なお、ストリームのデータ構造や、動作の概要に
ついては、参考文献「改定版UNIXデバイスドライ
バ」(Janet I. Egan / Thomas
J. Teixeira著、三田 典玄監訳、アスキ
ー出版局、253〜293頁)に詳しい。図27は、こ
の従来のストリームと呼ばれる管理機構を示した図であ
る。
【0012】図27に示すように、このストリームで
は、転送データを格納するために確保した領域の先頭の
アドレスは、(dp_base)で示され、転送データ
は、(dp_base)から格納されることになり、確
保した領域の先頭に領域を空けて、転送データを格納す
ることはできない。ネットワークを転送するパケット等
の場合、転送データの先頭にヘッダを付けてパケットを
作成することがよくあるが、パケット等のデータを作成
する場合、確保した領域の先頭に領域を空けて、転送デ
ータを格納し、確保した領域にヘッダを書き込むことが
できれば、効率良くパケット等を作成することができ
る。しかしながら、従来のストリームのデータ構造で
は、上記のように確保した領域の先頭に領域を空けて、
転送データを格納することはできず、パケット等を作成
する場合、効率が悪いという問題点があった。
は、転送データを格納するために確保した領域の先頭の
アドレスは、(dp_base)で示され、転送データ
は、(dp_base)から格納されることになり、確
保した領域の先頭に領域を空けて、転送データを格納す
ることはできない。ネットワークを転送するパケット等
の場合、転送データの先頭にヘッダを付けてパケットを
作成することがよくあるが、パケット等のデータを作成
する場合、確保した領域の先頭に領域を空けて、転送デ
ータを格納し、確保した領域にヘッダを書き込むことが
できれば、効率良くパケット等を作成することができ
る。しかしながら、従来のストリームのデータ構造で
は、上記のように確保した領域の先頭に領域を空けて、
転送データを格納することはできず、パケット等を作成
する場合、効率が悪いという問題点があった。
【0013】また、図27に示す従来のストリームで
は、転送データを格納するのに用いるデータ記憶領域1
24は、パケット受信時もしくはパケット送信時にパケ
ットを作成する際に必要に応じてメモリ上に確保してい
たが、要求が発生してからメモリ上に確保しようとする
と、確保に時間がかかり効率が悪いといった問題点があ
った。
は、転送データを格納するのに用いるデータ記憶領域1
24は、パケット受信時もしくはパケット送信時にパケ
ットを作成する際に必要に応じてメモリ上に確保してい
たが、要求が発生してからメモリ上に確保しようとする
と、確保に時間がかかり効率が悪いといった問題点があ
った。
【0014】同様に、図27に示す従来のストリームで
は、データ記憶領域124を管理するメッセージ・コン
トロールブロックmsgb(122)とデータ・コント
ロールブロックdatb(123)と呼ばれるデータ構
造も、必要に応じて、メモリ上に確保していたが、要求
が発生してからメモリ上に確報しようとすると、確保に
時間がかかり効率が悪いといった問題点があった。
は、データ記憶領域124を管理するメッセージ・コン
トロールブロックmsgb(122)とデータ・コント
ロールブロックdatb(123)と呼ばれるデータ構
造も、必要に応じて、メモリ上に確保していたが、要求
が発生してからメモリ上に確報しようとすると、確保に
時間がかかり効率が悪いといった問題点があった。
【0015】(2)従来のOS(オペレーティング・シ
ステム)では、プログラムは実行時、プロセスとなり、
OSはプロセス単位にメモリ空間等の管理を行ってき
た。例えば、OSの一つであるUNIXのメモリ管理方
法については、参考文献「UINXカーネルの設計」
(Maurice J.Bach著、坂本 文他訳、共
立出版株式会社)に詳しい。
ステム)では、プログラムは実行時、プロセスとなり、
OSはプロセス単位にメモリ空間等の管理を行ってき
た。例えば、OSの一つであるUNIXのメモリ管理方
法については、参考文献「UINXカーネルの設計」
(Maurice J.Bach著、坂本 文他訳、共
立出版株式会社)に詳しい。
【0016】図28は、従来のUNIXのようなOSに
おける、仮想ページと物理ページのマッピングの一例を
示した模式図である。図28において、プロセス1の所
有する仮想空間301に属する仮想ページaは、実メモ
リ上の物理ページAにマッピングされており、プロセス
2の所有する仮想空間301に属する仮想ページbは、
実メモリ上の物理ページBにマッピングされており、物
理ページと仮想ページのマッピングが変わることはなか
った。
おける、仮想ページと物理ページのマッピングの一例を
示した模式図である。図28において、プロセス1の所
有する仮想空間301に属する仮想ページaは、実メモ
リ上の物理ページAにマッピングされており、プロセス
2の所有する仮想空間301に属する仮想ページbは、
実メモリ上の物理ページBにマッピングされており、物
理ページと仮想ページのマッピングが変わることはなか
った。
【0017】図29は、図28の仮想ページと物理ペー
ジをマッピングしたページテーブル303の状態を示し
た模式図である。ページテーブル303は、仮想ページ
番号(仮想アドレスの上位部分)をインデックスとし
て、物理ページ番号等が格納されたページ・テーブル・
インデックス(PTE)を検索するのに用いるテーブル
である。図29では、仮想ページaには物理ページA
が、仮想ページbには物理ページBが、それぞれ対応し
ていることが示されている。
ジをマッピングしたページテーブル303の状態を示し
た模式図である。ページテーブル303は、仮想ページ
番号(仮想アドレスの上位部分)をインデックスとし
て、物理ページ番号等が格納されたページ・テーブル・
インデックス(PTE)を検索するのに用いるテーブル
である。図29では、仮想ページaには物理ページA
が、仮想ページbには物理ページBが、それぞれ対応し
ていることが示されている。
【0018】図30は、従来の計算機において仮想アド
レス316から物理アドレス317に変換される様子を
示した模式図である。なお、インテルのマイクロプロセ
ッサの場合の仮想アドレスから物理アドレスへの変換に
ついては、参考文献「80386/80486プログラ
ミング・ガイド」(ロス P.ネルソン著、富士ソフト
ウェア鏡壱岐出版部訳、富士ソフトウェア株式会社)に
詳しい。
レス316から物理アドレス317に変換される様子を
示した模式図である。なお、インテルのマイクロプロセ
ッサの場合の仮想アドレスから物理アドレスへの変換に
ついては、参考文献「80386/80486プログラ
ミング・ガイド」(ロス P.ネルソン著、富士ソフト
ウェア鏡壱岐出版部訳、富士ソフトウェア株式会社)に
詳しい。
【0019】図30では、仮想アドレスは、上位部分の
仮想ページ番号と、下位部分のオフセットから構成され
ていることが示されている。同様に、物理アドレスは、
上位部分の物理ページ番号と、下位部分のオフセットか
ら構成されていて、仮想ページ番号は、変換装置314
によって、物理ページ番号に変換されて、仮想アドレス
から物理アドレスが変換されることが示されている。
仮想ページ番号と、下位部分のオフセットから構成され
ていることが示されている。同様に、物理アドレスは、
上位部分の物理ページ番号と、下位部分のオフセットか
ら構成されていて、仮想ページ番号は、変換装置314
によって、物理ページ番号に変換されて、仮想アドレス
から物理アドレスが変換されることが示されている。
【0020】仮想ページ番号から物理ページ番号への変
換には、図29で説明したページテーブル303が使用
されるが、変換処理の高速化を図るため、一度アクセス
されたページ・テーブル・エントリ(PTE)は、TL
B(トランスレーション・ルックアサイド・バッファ)
313と呼ばれるキャッシュに格納される。
換には、図29で説明したページテーブル303が使用
されるが、変換処理の高速化を図るため、一度アクセス
されたページ・テーブル・エントリ(PTE)は、TL
B(トランスレーション・ルックアサイド・バッファ)
313と呼ばれるキャッシュに格納される。
【0021】このような従来のOSの一つであるUNI
Xにおけるプロセス間のデータ転送方法について説明す
る。
Xにおけるプロセス間のデータ転送方法について説明す
る。
【0022】UNIXでは、プロセスごとに仮想空間を
割当て、あるプロセスから他のプロセスに実行を切り替
える場合は、仮想空間を切り替えることによって、メモ
リ等のデバイスに格納されたデータのアクセス保護を実
現してきた。従って、転送元のプロセスは、直接、転送
先のプロセスの管理するデータ領域にデータを転送する
ことはできず、また転送先のプロセスは、直接、転送元
のプロセスが管理するデータ領域に存在する転送データ
にアクセスすることはできない。そのため従来は、ある
プロセスから他のプロセスにデータを転送するために
は、まず、転送元のプロセスが転送データをOS等の管
理するデータ領域に転送し、次に転送先のプロセスは該
OS等の管理するデータ領域に転送された転送データを
転送先のプロセスの管理するデータ領域に転送する方法
を取る必要があった。この結果、プロセス間でデータを
転送する場合、最低でも2回、データ転送の際にプロセ
ッサを経由する場合は4回のデータ転送が必要となり、
効率が悪かった。
割当て、あるプロセスから他のプロセスに実行を切り替
える場合は、仮想空間を切り替えることによって、メモ
リ等のデバイスに格納されたデータのアクセス保護を実
現してきた。従って、転送元のプロセスは、直接、転送
先のプロセスの管理するデータ領域にデータを転送する
ことはできず、また転送先のプロセスは、直接、転送元
のプロセスが管理するデータ領域に存在する転送データ
にアクセスすることはできない。そのため従来は、ある
プロセスから他のプロセスにデータを転送するために
は、まず、転送元のプロセスが転送データをOS等の管
理するデータ領域に転送し、次に転送先のプロセスは該
OS等の管理するデータ領域に転送された転送データを
転送先のプロセスの管理するデータ領域に転送する方法
を取る必要があった。この結果、プロセス間でデータを
転送する場合、最低でも2回、データ転送の際にプロセ
ッサを経由する場合は4回のデータ転送が必要となり、
効率が悪かった。
【0023】また、従来技術にいて、ネットワークから
転送されてきたパケット等が受信プロセスに転送される
までの処理、およびユーザ・プログラムがデータをネッ
トワークに送信するまでの処理も、効率が悪かった。
転送されてきたパケット等が受信プロセスに転送される
までの処理、およびユーザ・プログラムがデータをネッ
トワークに送信するまでの処理も、効率が悪かった。
【0024】前者のパケットの受信では、ネットワーク
・インターフェース・ボードがパケットを受信すると、
受信したパケットは、まず、前記ネットワーク・インタ
ーフェース・ボードから実メモリ内のOS等が管理する
領域のネットワーク・バッファに転送される。次に、前
記ネットワーク・バッファに転送された受信パケット
は、転送誤りがないかどうかチェックするために、プロ
セッサに転送されチェックサム等のエラーチェック計算
が行われる。転送エラーの検出されなかった受信パケッ
トは、宛先のプロセスが管理する受信パッファへとプロ
セッサを経由して転送される。このように、ネットワー
ク・インターフェース・ボードが受信した受信パケット
が宛先のプロセスまで転送する間に、4回のデータ転送
が必要であり、効率が悪かった。
・インターフェース・ボードがパケットを受信すると、
受信したパケットは、まず、前記ネットワーク・インタ
ーフェース・ボードから実メモリ内のOS等が管理する
領域のネットワーク・バッファに転送される。次に、前
記ネットワーク・バッファに転送された受信パケット
は、転送誤りがないかどうかチェックするために、プロ
セッサに転送されチェックサム等のエラーチェック計算
が行われる。転送エラーの検出されなかった受信パケッ
トは、宛先のプロセスが管理する受信パッファへとプロ
セッサを経由して転送される。このように、ネットワー
ク・インターフェース・ボードが受信した受信パケット
が宛先のプロセスまで転送する間に、4回のデータ転送
が必要であり、効率が悪かった。
【0025】同様に、後者のパケットの送信では、ユー
ザ・プロセスがデータをネットワークに送信する場合、
まず、ユーザ・プロセスは転送したいデータをプロセッ
サを経由してOS等が管理するネットワーク・バッファ
に転送する。ネットワーク・バッファに転送された転送
データは、受信端末が転送エラーがないかどうか検査す
るのに必要なエラー検出データを計算するためにプロセ
ッサに転送され、エラー検出データやパケット・ヘッダ
等が付加された転送パケットがネットワーク・インター
フェース・ボードに転送される。このように、ユーザ・
プロセスがネットワークへパケットを送信するまでの間
に、4回のデータ転送が必要であり、効率が悪かった。
ザ・プロセスがデータをネットワークに送信する場合、
まず、ユーザ・プロセスは転送したいデータをプロセッ
サを経由してOS等が管理するネットワーク・バッファ
に転送する。ネットワーク・バッファに転送された転送
データは、受信端末が転送エラーがないかどうか検査す
るのに必要なエラー検出データを計算するためにプロセ
ッサに転送され、エラー検出データやパケット・ヘッダ
等が付加された転送パケットがネットワーク・インター
フェース・ボードに転送される。このように、ユーザ・
プロセスがネットワークへパケットを送信するまでの間
に、4回のデータ転送が必要であり、効率が悪かった。
【0026】
【発明が解決しようとする課題】以上述べたように、従
来の計算機システムでは、ユーザ空間、フレームバッフ
ァまたはデバイス・インタフェースと、デバイス・イン
タフェースとの間でデータ転送を行う場合、その両者の
途中で何回もデータ転送を繰返す必要があり、転送効率
が良くないという問題点があった。
来の計算機システムでは、ユーザ空間、フレームバッフ
ァまたはデバイス・インタフェースと、デバイス・イン
タフェースとの間でデータ転送を行う場合、その両者の
途中で何回もデータ転送を繰返す必要があり、転送効率
が良くないという問題点があった。
【0027】また、従来は、プロセス間でデータを転送
する場合、最低でも2回のデータ転送が必要であり効率
が悪かった。また、ユーザ・プロセスが所有するデータ
領域からOSが管理するデータ領域へのデータ転送に際
しプロセッサを経由する場合は、4回のデータ転送が必
要であり効率が悪かった。また、ネットワークから転送
されてきた受信パケットから転送データを抽出し、前記
転送データを宛先のプロセスの管理するデータ領域に転
送するまでの間、4回のデータ転送が必要であり効率が
悪かった。また、ユーザ・プロセスが所有するデータか
ら送信パケットを作成し、ネットワークへ送信するまで
の間、4回のデータ転送が必要であり効率が悪かった。
する場合、最低でも2回のデータ転送が必要であり効率
が悪かった。また、ユーザ・プロセスが所有するデータ
領域からOSが管理するデータ領域へのデータ転送に際
しプロセッサを経由する場合は、4回のデータ転送が必
要であり効率が悪かった。また、ネットワークから転送
されてきた受信パケットから転送データを抽出し、前記
転送データを宛先のプロセスの管理するデータ領域に転
送するまでの間、4回のデータ転送が必要であり効率が
悪かった。また、ユーザ・プロセスが所有するデータか
ら送信パケットを作成し、ネットワークへ送信するまで
の間、4回のデータ転送が必要であり効率が悪かった。
【0028】本発明は、上記事情を考慮してなされたも
のであり、ユーザ空間、フレームバッファまたはデバイ
ス・インタフェースと、デバイス・インタフェースとの
間のデータ転送を効率良く行うことのできるデータ転送
方法及びメモリ管理装置を提供することを目的とする。
のであり、ユーザ空間、フレームバッファまたはデバイ
ス・インタフェースと、デバイス・インタフェースとの
間のデータ転送を効率良く行うことのできるデータ転送
方法及びメモリ管理装置を提供することを目的とする。
【0029】また、本発明は、プロセス間のデータ転送
を効率良く行うことのできるデータ転送方法及びメモリ
管理装置を提供することを目的とする。
を効率良く行うことのできるデータ転送方法及びメモリ
管理装置を提供することを目的とする。
【0030】
(1)本発明に係るデータ転送方法は、デバイス・イン
タフェース(例えばネットワーク・インタフェースある
いはハードディスク・コントローラなど)からユーザ空
間(プログラム実行主体が直接アクセスできるメモリ空
間)、フレームバッファまたはデバイス・インタフェー
スへ直接データの転送を行なうにあたって、転送元とな
るデバイス・インタフェースのデータブロックに対する
アクセス許可内容を示すカーネル空間(OSが管理し、
ユーザが直接アクセスすることができないメモリ空間)
に存在するアクセス制御情報を参照し、この参照結果に
基づいて前記データの転送を制御することを特徴とす
る。
タフェース(例えばネットワーク・インタフェースある
いはハードディスク・コントローラなど)からユーザ空
間(プログラム実行主体が直接アクセスできるメモリ空
間)、フレームバッファまたはデバイス・インタフェー
スへ直接データの転送を行なうにあたって、転送元とな
るデバイス・インタフェースのデータブロックに対する
アクセス許可内容を示すカーネル空間(OSが管理し、
ユーザが直接アクセスすることができないメモリ空間)
に存在するアクセス制御情報を参照し、この参照結果に
基づいて前記データの転送を制御することを特徴とす
る。
【0031】本発明に係るデータ転送方法は、デバイス
・インタフェースからユーザ空間、フレームバッファま
たはデバイス・インタフェースへ直接データの転送を行
なうにあたって、転送元となるデバイス・インタフェー
スのデータブロックに対するアクセス許可内容を示すカ
ーネル空間に存在する第1のアクセス制御情報と、転送
先となるユーザ空間、フレームバッファまたはデバイス
・インタフェースのデータブロックに対するアクセス許
可内容を示すカーネル空間に存在する第2のアクセス制
御情報とを参照し、これらの参照結果に基づいて前記デ
ータの転送を制御することを特徴とする。
・インタフェースからユーザ空間、フレームバッファま
たはデバイス・インタフェースへ直接データの転送を行
なうにあたって、転送元となるデバイス・インタフェー
スのデータブロックに対するアクセス許可内容を示すカ
ーネル空間に存在する第1のアクセス制御情報と、転送
先となるユーザ空間、フレームバッファまたはデバイス
・インタフェースのデータブロックに対するアクセス許
可内容を示すカーネル空間に存在する第2のアクセス制
御情報とを参照し、これらの参照結果に基づいて前記デ
ータの転送を制御することを特徴とする。
【0032】本発明に係るデータ転送方法は、ユーザ空
間、フレームバッファまたはデバイス・インタフェース
からデバイス・インタフェースへ直接データの転送を行
なうにあたって、転送元となるユーザ空間、フレームバ
ッファまたはデバイス・インタフェースのデータブロッ
クに対するアクセス許可内容を示すカーネル空間に存在
する第1のアクセス制御情報と、転送先となるデバイス
・インタフェースのデータブロックに対するアクセス許
可内容を示すカーネル空間に存在する第2のアクセス制
御情報とを参照し、これらの参照結果に基づいて前記デ
ータの転送を制御することを特徴とする。
間、フレームバッファまたはデバイス・インタフェース
からデバイス・インタフェースへ直接データの転送を行
なうにあたって、転送元となるユーザ空間、フレームバ
ッファまたはデバイス・インタフェースのデータブロッ
クに対するアクセス許可内容を示すカーネル空間に存在
する第1のアクセス制御情報と、転送先となるデバイス
・インタフェースのデータブロックに対するアクセス許
可内容を示すカーネル空間に存在する第2のアクセス制
御情報とを参照し、これらの参照結果に基づいて前記デ
ータの転送を制御することを特徴とする。
【0033】本発明に係るメモリ管理装置は、ユーザ空
間、フレームバッファまたはデバイス・インタフェース
のデータブロックと該データブロックに対するアクセス
許可内容を示すアクセス制御情報とを対応付けて記憶す
る手段と、所望するデータブロックへのアクセスを要求
するアクセス要求元の識別子と、アクセスを要求された
データブロックに対応する前記アクセス制御情報とに基
づき、該データブロックへのアクセスを制御する手段と
を備えたことを特徴とする。
間、フレームバッファまたはデバイス・インタフェース
のデータブロックと該データブロックに対するアクセス
許可内容を示すアクセス制御情報とを対応付けて記憶す
る手段と、所望するデータブロックへのアクセスを要求
するアクセス要求元の識別子と、アクセスを要求された
データブロックに対応する前記アクセス制御情報とに基
づき、該データブロックへのアクセスを制御する手段と
を備えたことを特徴とする。
【0034】本発明に係るデータ転送方法では、デバイ
ス・インタフェースからユーザ空間、フレームバッファ
またはデバイス・インタフェースへ直接データの転送を
行なうにあたって、転送元となるデバイス・インタフェ
ースのデータブロックに対するアクセス許可内容(例え
ばアクセスを許可するプログラム実行主体の識別子、デ
ータ読み出しだけ許可するのかあるいはデータ書き込み
だけ許可するのかあるいは両方とも許可するのかなど)
を示すカーネル空間に存在するアクセス制御情報を参照
する。
ス・インタフェースからユーザ空間、フレームバッファ
またはデバイス・インタフェースへ直接データの転送を
行なうにあたって、転送元となるデバイス・インタフェ
ースのデータブロックに対するアクセス許可内容(例え
ばアクセスを許可するプログラム実行主体の識別子、デ
ータ読み出しだけ許可するのかあるいはデータ書き込み
だけ許可するのかあるいは両方とも許可するのかなど)
を示すカーネル空間に存在するアクセス制御情報を参照
する。
【0035】そして、この参照結果に基づいて前記デー
タの転送を制御する。例えば、アクセスが許可されてい
た場合、アクセス対象となるデータブロックに対するア
クセス(例えばデータ読み出し)を実行させる。また、
アクセスが許可されていなかった場合や該当データブロ
ックに対応するアクセス制御情報がなかった場合、アク
セスをさせないようにする。
タの転送を制御する。例えば、アクセスが許可されてい
た場合、アクセス対象となるデータブロックに対するア
クセス(例えばデータ読み出し)を実行させる。また、
アクセスが許可されていなかった場合や該当データブロ
ックに対応するアクセス制御情報がなかった場合、アク
セスをさせないようにする。
【0036】本発明に係るデータ転送方法では、デバイ
ス・インタフェースからユーザ空間、フレームバッファ
またはデバイス・インタフェースへ直接データの転送を
行なうにあたって、転送元となるデバイス・インタフェ
ースのデータブロックに対するアクセス許可内容を示す
カーネル空間に存在する第1のアクセス制御情報と転送
先となるユーザ空間、フレームバッファまたはデバイス
・インタフェースのデータブロックに対するアクセス許
可内容を示すカーネル空間に存在する第2のアクセス制
御情報を参照する。第1および第2のアクセス制御情報
には、例えばアクセスを許可するプログラム実行主体の
識別子、データ読み出しだけ許可するのかあるいはデー
タ書き込みも許可するのかなどが記述されている。
ス・インタフェースからユーザ空間、フレームバッファ
またはデバイス・インタフェースへ直接データの転送を
行なうにあたって、転送元となるデバイス・インタフェ
ースのデータブロックに対するアクセス許可内容を示す
カーネル空間に存在する第1のアクセス制御情報と転送
先となるユーザ空間、フレームバッファまたはデバイス
・インタフェースのデータブロックに対するアクセス許
可内容を示すカーネル空間に存在する第2のアクセス制
御情報を参照する。第1および第2のアクセス制御情報
には、例えばアクセスを許可するプログラム実行主体の
識別子、データ読み出しだけ許可するのかあるいはデー
タ書き込みも許可するのかなどが記述されている。
【0037】そして、これらの参照結果に基づいて前記
データの転送を制御する。例えば、第1のアクセス制御
情報で読み出しアクセスが許可され、かつ、第2のアク
セス制御情報で書き込みアクセスが許可されていた場
合、転送元のデータブロックから転送先のデータブロッ
クにデータを転送させる。
データの転送を制御する。例えば、第1のアクセス制御
情報で読み出しアクセスが許可され、かつ、第2のアク
セス制御情報で書き込みアクセスが許可されていた場
合、転送元のデータブロックから転送先のデータブロッ
クにデータを転送させる。
【0038】本発明に係るデータ転送方法では、ユーザ
空間、フレームバッファまたはデバイス・インタフェー
スからデバイス・インタフェースへ直接データの転送を
行なうにあたって、転送元となるユーザ空間、フレーム
バッファまたはデバイス・インタフェースのデータブロ
ックに対するアクセス許可内容を示すカーネル空間に存
在する第1のアクセス制御情報と転送先となるデバイス
・インタフェースのデータブロックに対するアクセス許
可内容を示すカーネル空間に存在する第2のアクセス制
御情報を参照する。第1および第2のアクセス制御情報
には、例えばアクセスを許可するプログラム実行主体の
識別子、データ読み出しだけ許可するのかあるいはデー
タ書き込みも許可するのかなどが記述されている。
空間、フレームバッファまたはデバイス・インタフェー
スからデバイス・インタフェースへ直接データの転送を
行なうにあたって、転送元となるユーザ空間、フレーム
バッファまたはデバイス・インタフェースのデータブロ
ックに対するアクセス許可内容を示すカーネル空間に存
在する第1のアクセス制御情報と転送先となるデバイス
・インタフェースのデータブロックに対するアクセス許
可内容を示すカーネル空間に存在する第2のアクセス制
御情報を参照する。第1および第2のアクセス制御情報
には、例えばアクセスを許可するプログラム実行主体の
識別子、データ読み出しだけ許可するのかあるいはデー
タ書き込みも許可するのかなどが記述されている。
【0039】そして、これらの参照結果に基づいて前記
データの転送を制御する。例えば、第1のアクセス制御
情報で読み出しアクセスが許可され、かつ、第2のアク
セス制御情報で書き込みアクセスが許可されていた場
合、転送元のデータブロックから転送先のデータブロッ
クにデータを転送させる。
データの転送を制御する。例えば、第1のアクセス制御
情報で読み出しアクセスが許可され、かつ、第2のアク
セス制御情報で書き込みアクセスが許可されていた場
合、転送元のデータブロックから転送先のデータブロッ
クにデータを転送させる。
【0040】本発明に係るメモリ管理装置では、ユーザ
空間、フレームバッファまたはデバイス・インタフェー
スのデータブロックと該データブロックに対するアクセ
ス許可内容を示すアクセス制御情報(例えばアクセスを
許可するプログラム実行主体の識別子、データ読み出し
だけ許可するのかあるいはデータ書き込みも許可するの
かなど)とを対応付けて記憶しておく。
空間、フレームバッファまたはデバイス・インタフェー
スのデータブロックと該データブロックに対するアクセ
ス許可内容を示すアクセス制御情報(例えばアクセスを
許可するプログラム実行主体の識別子、データ読み出し
だけ許可するのかあるいはデータ書き込みも許可するの
かなど)とを対応付けて記憶しておく。
【0041】そして、あるデータブロックへのアクセス
要求があった場合、当該アクセス要求元(例えばUNI
Xにおけるプロセスといったプログラム実行主体)の識
別子と、アクセスを要求されたデータブロックに対応す
る前記アクセス制御情報をチェックする。
要求があった場合、当該アクセス要求元(例えばUNI
Xにおけるプロセスといったプログラム実行主体)の識
別子と、アクセスを要求されたデータブロックに対応す
る前記アクセス制御情報をチェックする。
【0042】そして、チェックの結果に基づき、該デー
タブロックへのアクセスを制御する。例えば、チェック
の結果、アクセスが許可されていた場合、対応するデー
タブロックに対する要求アクセス(例えばデータ読み出
しあるいはデータ書き込み)を実行させる。アクセスが
許可されていなかった場合や対象データブロックに対応
するアクセス制御情報がなかった場合、例えばアクセス
要求元に対しアクセスの失敗を伝えるなどしてアクセス
させないようにする。
タブロックへのアクセスを制御する。例えば、チェック
の結果、アクセスが許可されていた場合、対応するデー
タブロックに対する要求アクセス(例えばデータ読み出
しあるいはデータ書き込み)を実行させる。アクセスが
許可されていなかった場合や対象データブロックに対応
するアクセス制御情報がなかった場合、例えばアクセス
要求元に対しアクセスの失敗を伝えるなどしてアクセス
させないようにする。
【0043】このような本発明によれば、アクセス制御
情報を設定することにより、プログラム実行主体がデー
タブロックに直接アクセスすることができるので、デー
タを一旦カーネル空間(さらにはカーネル空間およびユ
ーザ空間)に転送することなく、効率良いデータ転送を
行なうことができる。
情報を設定することにより、プログラム実行主体がデー
タブロックに直接アクセスすることができるので、デー
タを一旦カーネル空間(さらにはカーネル空間およびユ
ーザ空間)に転送することなく、効率良いデータ転送を
行なうことができる。
【0044】したがって、計算機を介したデバイス間に
わたるデータの受け渡しを行なうような場合、従来より
必要なデータ転送回数が少なくてすみ、効率の良いデー
タ転送を行なうことができる。
わたるデータの受け渡しを行なうような場合、従来より
必要なデータ転送回数が少なくてすみ、効率の良いデー
タ転送を行なうことができる。
【0045】また、アクセス制御情報を適宜設定変更す
ることにより、データブロックをアクセスするプログラ
ム実行主体の相互排除を効率良く実行することができ
る。
ることにより、データブロックをアクセスするプログラ
ム実行主体の相互排除を効率良く実行することができ
る。
【0046】(2)本発明(請求項5)は、仮想ページ
と物理ページのマッピングを変えることによって、プロ
セス間データ転送を行うデータ転送方法であって、プロ
セス間データ転送を行うために仮想ページと物理ページ
のマッピングを変えるにあたって、転送データの存在す
る物理ページに対するアクセス許可内容を示すアクセス
制御情報を参照し、この参照結果に基づいて、仮想ペー
ジと物理ページのマッピングの変更を制御することを特
徴とする。
と物理ページのマッピングを変えることによって、プロ
セス間データ転送を行うデータ転送方法であって、プロ
セス間データ転送を行うために仮想ページと物理ページ
のマッピングを変えるにあたって、転送データの存在す
る物理ページに対するアクセス許可内容を示すアクセス
制御情報を参照し、この参照結果に基づいて、仮想ペー
ジと物理ページのマッピングの変更を制御することを特
徴とする。
【0047】本発明(請求項6)は、請求項5におい
て、転送先のプロセスの入力キューに転送データの存在
する物理ページを指定する情報を入力する際に、前記ア
クセス制御情報を参照し、この参照結果に基づいて、転
送データを入力して良いか否かの判断を行い、この判断
結果に基づいて、前記制御を行うことを特徴とする。
て、転送先のプロセスの入力キューに転送データの存在
する物理ページを指定する情報を入力する際に、前記ア
クセス制御情報を参照し、この参照結果に基づいて、転
送データを入力して良いか否かの判断を行い、この判断
結果に基づいて、前記制御を行うことを特徴とする。
【0048】本発明(請求項7)は、請求項5におい
て、先頭部分にヘッダ情報を持つ受信パケットを物理ペ
ージに格納する際に、受信パケットの先頭から決められ
た範囲のデータを読み取り、読み取ったデータの中にあ
るヘッダ長情報を用いて、受信パケット中における転送
データの先頭位置を求め、転送データの先頭と物理ペー
ジの先頭の位置合わせをすることを特徴とする。
て、先頭部分にヘッダ情報を持つ受信パケットを物理ペ
ージに格納する際に、受信パケットの先頭から決められ
た範囲のデータを読み取り、読み取ったデータの中にあ
るヘッダ長情報を用いて、受信パケット中における転送
データの先頭位置を求め、転送データの先頭と物理ペー
ジの先頭の位置合わせをすることを特徴とする。
【0049】本発明(請求項8)に係るメモリ管理装置
は、物理ページと該物理ページに対するアクセス許可内
容を示すアクセス制御情報とを対応付けて記憶する手段
と、所望の物理ページに対する仮想ページのマッピング
の変更が要求された場合に、変更元の識別子及び変更先
の識別子の少なくとも一方と、変更を要求された物理ペ
ージに対応する前記アクセス制御情報とに基づき、該物
理ページに対する仮想ページのマッピングの変更を制御
する手段とを備えたことを特徴とする。
は、物理ページと該物理ページに対するアクセス許可内
容を示すアクセス制御情報とを対応付けて記憶する手段
と、所望の物理ページに対する仮想ページのマッピング
の変更が要求された場合に、変更元の識別子及び変更先
の識別子の少なくとも一方と、変更を要求された物理ペ
ージに対応する前記アクセス制御情報とに基づき、該物
理ページに対する仮想ページのマッピングの変更を制御
する手段とを備えたことを特徴とする。
【0050】本発明に係るデータ転送方法では、プロセ
ス間データ転送を行なうにあたって、転送データの存在
する物理ページに対するアクセス許可内容(例えばアク
セスを許可するプログラム実行主体の識別子、データ読
み出しだけ許可するのかあるいはデータ書き込みだけ許
可するのかあるいは両方とも許可するのかなど)を示す
アクセス制御情報を参照する。
ス間データ転送を行なうにあたって、転送データの存在
する物理ページに対するアクセス許可内容(例えばアク
セスを許可するプログラム実行主体の識別子、データ読
み出しだけ許可するのかあるいはデータ書き込みだけ許
可するのかあるいは両方とも許可するのかなど)を示す
アクセス制御情報を参照する。
【0051】そして、この参照結果に基づいて前記デー
タの転送を制御する。例えば、アクセスが許可されてい
た場合、仮想ページと物理ページのマッピングを変える
ことによって、プロセス間データ転送を実行させる。ま
た、アクセスが許可されていなかった場合や該当物理ペ
ージに対応するアクセス制御情報がなかった場合、マッ
ピングの変更をさせないようにする。
タの転送を制御する。例えば、アクセスが許可されてい
た場合、仮想ページと物理ページのマッピングを変える
ことによって、プロセス間データ転送を実行させる。ま
た、アクセスが許可されていなかった場合や該当物理ペ
ージに対応するアクセス制御情報がなかった場合、マッ
ピングの変更をさせないようにする。
【0052】本発明に係るメモリ管理装置では、物理ペ
ージと該物理ページに対するアクセス許可内容を示すア
クセス制御情報(例えば、どのプロセスからデータ転送
を行って良いかあるいはどのプロセスへデータ転送を行
って良いかを示す情報、さらにそれらのプロセスにデー
タ読み出しだけ許可するのかあるいはデータ書き込みを
許可するのかなど)とを対応付けて記憶しておく。
ージと該物理ページに対するアクセス許可内容を示すア
クセス制御情報(例えば、どのプロセスからデータ転送
を行って良いかあるいはどのプロセスへデータ転送を行
って良いかを示す情報、さらにそれらのプロセスにデー
タ読み出しだけ許可するのかあるいはデータ書き込みを
許可するのかなど)とを対応付けて記憶しておく。
【0053】そして、ある物理ページに対する仮想ペー
ジのマッピングの変更(あるプロセスから別のプロセス
へのデータ転送)が要求された場合に、当該変更先のプ
ロセスに対応して設定された変更元の識別子(i)と、
変更を要求された物理ページに対応する前記アクセス制
御情報(どのプロセスからデータ転送を行って良いかを
示す情報)(ii)をチェックする(方法A)。
ジのマッピングの変更(あるプロセスから別のプロセス
へのデータ転送)が要求された場合に、当該変更先のプ
ロセスに対応して設定された変更元の識別子(i)と、
変更を要求された物理ページに対応する前記アクセス制
御情報(どのプロセスからデータ転送を行って良いかを
示す情報)(ii)をチェックする(方法A)。
【0054】あるいは、上記要求がされた場合に、当該
変更元のプロセスに対応して設定された変更先の識別子
と、変更を要求された物理ページに対応する前記アクセ
ス制御情報(どのプロセスへデータ転送を行って良いか
を示す情報)をチェックする(方法B)。
変更元のプロセスに対応して設定された変更先の識別子
と、変更を要求された物理ページに対応する前記アクセ
ス制御情報(どのプロセスへデータ転送を行って良いか
を示す情報)をチェックする(方法B)。
【0055】そして、チェックの結果に基づき、該物理
ページに対する仮想ページのマッピングを制御する。例
えば、チェックの結果、アクセスが許可されていた場
合、該物理ページに対する仮想ページのマッピングを変
更させる。すると、変更元から変更先へのプロセス間デ
ータ転送が行われたことになる。アクセスが許可されて
いなかった場合や対象物理ページに対応するアクセス制
御情報がなかった場合、マッピングの変更は行われず、
転送先のプロセスはその物理ページにはアクセスできな
い。
ページに対する仮想ページのマッピングを制御する。例
えば、チェックの結果、アクセスが許可されていた場
合、該物理ページに対する仮想ページのマッピングを変
更させる。すると、変更元から変更先へのプロセス間デ
ータ転送が行われたことになる。アクセスが許可されて
いなかった場合や対象物理ページに対応するアクセス制
御情報がなかった場合、マッピングの変更は行われず、
転送先のプロセスはその物理ページにはアクセスできな
い。
【0056】このような本発明によれば、物理ページに
対するアクセス制御情報を設定することにより、実際に
データ転送を行う代わりに、仮想ページと物理ページの
マッピングを変えることでプロセス間データ転送を行う
ことができるので、データを一旦カーネル空間に転送す
ることなく、効率良いデータ転送を行なうことができ
る。
対するアクセス制御情報を設定することにより、実際に
データ転送を行う代わりに、仮想ページと物理ページの
マッピングを変えることでプロセス間データ転送を行う
ことができるので、データを一旦カーネル空間に転送す
ることなく、効率良いデータ転送を行なうことができ
る。
【0057】したがって、計算機を介したデバイス間に
わたるデータの受け渡しを行なうような場合、従来より
必要なデータ転送回数が少なくてすみ、効率の良いデー
タ転送を行なうことができる。
わたるデータの受け渡しを行なうような場合、従来より
必要なデータ転送回数が少なくてすみ、効率の良いデー
タ転送を行なうことができる。
【0058】また、アクセス制御情報を適宜設定変更す
ることにより、物理ページをアクセスするプログラム実
行主体の相互排除を効率良く実行することができる。
ることにより、物理ページをアクセスするプログラム実
行主体の相互排除を効率良く実行することができる。
【0059】
【発明の実施の形態】以下、図面を参照しながら発明の
実施の形態を説明する。
実施の形態を説明する。
【0060】図1は、本発明の一実施形態に係るメモリ
管理装置の基本構成を示す図である。このメモリ管理装
置は、プログラム実行主体3、制御部7、データ記憶部
11からなる。制御部7は、アクセスチェック部5、ア
クセス部6、制御情報記憶部8を持つ。
管理装置の基本構成を示す図である。このメモリ管理装
置は、プログラム実行主体3、制御部7、データ記憶部
11からなる。制御部7は、アクセスチェック部5、ア
クセス部6、制御情報記憶部8を持つ。
【0061】プログラム実行主体3は、ユーザプログラ
ムの処理を実行するものであり、あるいはオペレーティ
ング・システムの処理を実行するものである。個々の処
理の中で、プログラム実行主体3は、必要に応じて所望
するデータブロック(図中12)へのアクセス要求を送
信する。なお、オペレーティング・システムの処理に
は、ネットワーク・インターフェースやハードディスク
・コントローラといったデバイスの制御を行うデバイス
・ドライバの処理が含まれる。
ムの処理を実行するものであり、あるいはオペレーティ
ング・システムの処理を実行するものである。個々の処
理の中で、プログラム実行主体3は、必要に応じて所望
するデータブロック(図中12)へのアクセス要求を送
信する。なお、オペレーティング・システムの処理に
は、ネットワーク・インターフェースやハードディスク
・コントローラといったデバイスの制御を行うデバイス
・ドライバの処理が含まれる。
【0062】データ記憶部11は、図示しないデバイス
との間でデータをやりとりするために使用するデータブ
ロックを格納する。
との間でデータをやりとりするために使用するデータブ
ロックを格納する。
【0063】データブロックは、デバイス・ドライバに
よるプログラム実行主体とユーザプログラムによるプロ
グラム実行主体の間でのデータやりとりに用いても良い
し、ユーザプログラム同士のプログラム実行主体間での
データやりとりに用いても良い。また、データブロック
には、いわゆるデータを格納しても良いし、ユーザプロ
グラム自体をデータとして格納しても良い。
よるプログラム実行主体とユーザプログラムによるプロ
グラム実行主体の間でのデータやりとりに用いても良い
し、ユーザプログラム同士のプログラム実行主体間での
データやりとりに用いても良い。また、データブロック
には、いわゆるデータを格納しても良いし、ユーザプロ
グラム自体をデータとして格納しても良い。
【0064】制御情報記憶部8は、図1中の点線で示す
ようにデータブロックに対応する制御情報を記憶する。
制御情報には、該当データブロックに対する読み出しや
書き込みといったアクセスが許可されたプログラム実行
主体の識別子(例えばUNIXにおけるプロセスID)
等を書き込んであるアクセス制御情報が含まれる。
ようにデータブロックに対応する制御情報を記憶する。
制御情報には、該当データブロックに対する読み出しや
書き込みといったアクセスが許可されたプログラム実行
主体の識別子(例えばUNIXにおけるプロセスID)
等を書き込んであるアクセス制御情報が含まれる。
【0065】アクセスチェック部5は、プログラム実行
主体3からの所望するデータブロックへのアクセス要求
を受信し、制御情報記憶部8内に記憶されている当該デ
ータブロックに対応する制御情報を検索し、この制御情
報内に書き込まれているアクセス制御情報を参照し、ア
クセス要求が許可されたものか否かを判断する。
主体3からの所望するデータブロックへのアクセス要求
を受信し、制御情報記憶部8内に記憶されている当該デ
ータブロックに対応する制御情報を検索し、この制御情
報内に書き込まれているアクセス制御情報を参照し、ア
クセス要求が許可されたものか否かを判断する。
【0066】アクセス部6は、アクセス要求が許可され
たものであった場合、アクセス要求に基づいて、データ
記憶部11内に格納された対応するデータブロック12
をアクセスし、アクセス結果をプログラム実行主体3に
返す。
たものであった場合、アクセス要求に基づいて、データ
記憶部11内に格納された対応するデータブロック12
をアクセスし、アクセス結果をプログラム実行主体3に
返す。
【0067】なお、上記ではデータ記憶部11内に格納
されているデータブロックと制御情報記憶部8内に格納
されている制御情報との対応づけは、静的な番号付けで
行っても良いし、制御情報内に該当データブロックへの
ポインタを書き込むことによって対応付けを行なっても
良いし、その逆に、データブロック内にその制御情報へ
のポインタを書き込むことによって対応付けを行なって
も良い。また、アクセス制御情報は、制御情報内に含ま
れるものとして説明したが、制御情報内に含ませるので
はなく、制御情報内に該アクセス制御情報が格納されて
いる領域へのポインタを格納することによってアクセス
制御情報を参照できるようにしても良い。
されているデータブロックと制御情報記憶部8内に格納
されている制御情報との対応づけは、静的な番号付けで
行っても良いし、制御情報内に該当データブロックへの
ポインタを書き込むことによって対応付けを行なっても
良いし、その逆に、データブロック内にその制御情報へ
のポインタを書き込むことによって対応付けを行なって
も良い。また、アクセス制御情報は、制御情報内に含ま
れるものとして説明したが、制御情報内に含ませるので
はなく、制御情報内に該アクセス制御情報が格納されて
いる領域へのポインタを格納することによってアクセス
制御情報を参照できるようにしても良い。
【0068】また、上記では制御情報はデータ記憶部1
1とは独立した制御情報記憶部8内に格納するものとし
て説明したが、制御情報をデータ記憶部11内に格納し
ても良いし、データ記憶部11内の対応するデータブロ
ック内に格納しても良い。
1とは独立した制御情報記憶部8内に格納するものとし
て説明したが、制御情報をデータ記憶部11内に格納し
ても良いし、データ記憶部11内の対応するデータブロ
ック内に格納しても良い。
【0069】データ記憶部11内のデータブロックと制
御情報記憶部8内の制御情報を格納する領域の確保と割
り当てについては、例えば次のような方法が考えられ
る。
御情報記憶部8内の制御情報を格納する領域の確保と割
り当てについては、例えば次のような方法が考えられ
る。
【0070】システムの立ち上げ時に、静的に、制御
情報とデータブロックの領域の確保と割り当てを行な
う。
情報とデータブロックの領域の確保と割り当てを行な
う。
【0071】プログラム実行主体3からの新たな領域
の確保と割り当て要求に応じて、動的に、アクセスチェ
ック部5等が制御情報記憶部8またはデータ記憶部11
に対して領域の確保と割り当て処理を行なう。
の確保と割り当て要求に応じて、動的に、アクセスチェ
ック部5等が制御情報記憶部8またはデータ記憶部11
に対して領域の確保と割り当て処理を行なう。
【0072】システムの立ち上げ時等に予めデータブ
ロックや制御情報を格納する領域を確保しておき、プロ
グラム実行主体3からの新たな領域割り当て要求に応じ
て、アクセスチェック部5等が制御情報記憶部8または
データ記憶部11に対して、確保しておいた領域の割り
当て処理を行なう。
ロックや制御情報を格納する領域を確保しておき、プロ
グラム実行主体3からの新たな領域割り当て要求に応じ
て、アクセスチェック部5等が制御情報記憶部8または
データ記憶部11に対して、確保しておいた領域の割り
当て処理を行なう。
【0073】図2は、図1のメモリ管理装置により管理
されるデータブロックにプログラム実行主体3がアクセ
スする際の手順を示すフローチャートである。
されるデータブロックにプログラム実行主体3がアクセ
スする際の手順を示すフローチャートである。
【0074】プログラム実行主体3は、例えばUNIX
におけるユーザ・プロセスであり、あるいはネットワー
ク・インターフェースやハードディスク・コントローラ
といったデバイスのための処理を行なうデバイス・ドラ
イバである。
におけるユーザ・プロセスであり、あるいはネットワー
ク・インターフェースやハードディスク・コントローラ
といったデバイスのための処理を行なうデバイス・ドラ
イバである。
【0075】例えばUNIXにおけるプロセスのような
プログラム実行主体3が、ネットワーク・インターフェ
ースやハードディスク・コントローラといったデバイス
とのデータのやりとりに使用するデータブロックをアク
セスする場合、まず、プログラム実行主体3が、制御部
7内に存在するアクセスチェック部5に対し、読み出し
あるいは書き込みといったアクセス要求を送信する(ス
テップS1)。
プログラム実行主体3が、ネットワーク・インターフェ
ースやハードディスク・コントローラといったデバイス
とのデータのやりとりに使用するデータブロックをアク
セスする場合、まず、プログラム実行主体3が、制御部
7内に存在するアクセスチェック部5に対し、読み出し
あるいは書き込みといったアクセス要求を送信する(ス
テップS1)。
【0076】次に、アクセスチェック部5は、アクセス
要求されたデータブロックに対応する制御情報を、制御
情報記憶部8の中から検索し(ステップS2)、検索さ
れた制御情報に含まれているアクセス制御情報を基に、
プログラム実行主体がデータブロックに対しアクセスが
許可されているのかどうかチェックを行う(ステップS
3)。なお、アクセス制御情報が、データ記憶部11内
に格納されている場合は、アクセスチェック部5は、デ
ータ記憶部11内の該当する領域を検索することにな
る。また、制御情報内にアクセス制御情報へのポインタ
が格納されている場合は、ポインタで示されている領域
に格納されたアクセス制御情報を基に、アクセスチェッ
クを行うことになる。
要求されたデータブロックに対応する制御情報を、制御
情報記憶部8の中から検索し(ステップS2)、検索さ
れた制御情報に含まれているアクセス制御情報を基に、
プログラム実行主体がデータブロックに対しアクセスが
許可されているのかどうかチェックを行う(ステップS
3)。なお、アクセス制御情報が、データ記憶部11内
に格納されている場合は、アクセスチェック部5は、デ
ータ記憶部11内の該当する領域を検索することにな
る。また、制御情報内にアクセス制御情報へのポインタ
が格納されている場合は、ポインタで示されている領域
に格納されたアクセス制御情報を基に、アクセスチェッ
クを行うことになる。
【0077】チェックの結果、アクセスが許可されてい
た場合、制御部7内のアクセス部6は、対応するデータ
ブロックに対して要求されたアクセスを実行し(ステッ
プS4)、アクセスの実行結果をプログラム実行主体3
に返答する(ステップS5)。すなわち、要求されたア
クセスがデータ読み出しアクセスの場合、対応するデー
タブロックを読み出し、読み出したデータをプログラム
実行主体3に送信する。あるいは、要求されたアクセス
がデータ書き込みアクセスの場合、対応するデータを対
応するデータブロックに書き込み、その結果を書き込み
を要求したプログラム実行主体3に対し送信する。
た場合、制御部7内のアクセス部6は、対応するデータ
ブロックに対して要求されたアクセスを実行し(ステッ
プS4)、アクセスの実行結果をプログラム実行主体3
に返答する(ステップS5)。すなわち、要求されたア
クセスがデータ読み出しアクセスの場合、対応するデー
タブロックを読み出し、読み出したデータをプログラム
実行主体3に送信する。あるいは、要求されたアクセス
がデータ書き込みアクセスの場合、対応するデータを対
応するデータブロックに書き込み、その結果を書き込み
を要求したプログラム実行主体3に対し送信する。
【0078】また、アクセスが許可されていなかった場
合や、データブロックに対応する制御情報がなかった場
合、アクセスを要求したプログラム実行主体に対しアク
セスの失敗を送信する(ステップS6)。
合や、データブロックに対応する制御情報がなかった場
合、アクセスを要求したプログラム実行主体に対しアク
セスの失敗を送信する(ステップS6)。
【0079】次に、図1と図2で説明した本実施形態に
係るメモリ管理装置を実現する機構の詳細について説明
する。
係るメモリ管理装置を実現する機構の詳細について説明
する。
【0080】ここでは、アクセスチェック部5およびア
クセス部6を実現する機構の一例として処理関数(制御
関数)4を用いる。すなわち、プログラム実行主体3で
あるUNIXにおけるユーザプロセス等は、データ記憶
部11や制御情報記憶部8に処理関数(制御関数)4を
用いてアクセスするものとする。
クセス部6を実現する機構の一例として処理関数(制御
関数)4を用いる。すなわち、プログラム実行主体3で
あるUNIXにおけるユーザプロセス等は、データ記憶
部11や制御情報記憶部8に処理関数(制御関数)4を
用いてアクセスするものとする。
【0081】図3〜図5は、前述したデータ記憶部11
および制御情報記憶部8ならびに上記の処理関数4が、
「カーネルまたはサーバ等が管理する空間」(図中1)
または「ユーザ空間」(図中2)のいずれの空間にある
かで場合分けをしたものである。以下、図3〜図5を参
照しながら夫々説明する。
および制御情報記憶部8ならびに上記の処理関数4が、
「カーネルまたはサーバ等が管理する空間」(図中1)
または「ユーザ空間」(図中2)のいずれの空間にある
かで場合分けをしたものである。以下、図3〜図5を参
照しながら夫々説明する。
【0082】図3の「case−A」は、処理関数4と
制御情報9とデータブロック12のすべてが、カーネル
またはサーバ等が管理する空間にある場合を示した摸式
図である。
制御情報9とデータブロック12のすべてが、カーネル
またはサーバ等が管理する空間にある場合を示した摸式
図である。
【0083】この場合、制御情報記憶部8やデータ記憶
部11がカーネル空間またはサーバが管理する空間に存
在することで、UNIXでいうユーザ・プロセスは直接
アクセスすることを禁止される。プロセス等がデバイス
等とデータのやりとりを行うため、制御情報9やデータ
ブロック12にアクセスする必要が生じた場合、処理関
数4を経由して制御情報9やデータブロック12にアク
セスすることにし、処理関数4においてアクセス・チェ
ックを行うことにすれば、本発明が意図するアクセス保
護を実現することができる。
部11がカーネル空間またはサーバが管理する空間に存
在することで、UNIXでいうユーザ・プロセスは直接
アクセスすることを禁止される。プロセス等がデバイス
等とデータのやりとりを行うため、制御情報9やデータ
ブロック12にアクセスする必要が生じた場合、処理関
数4を経由して制御情報9やデータブロック12にアク
セスすることにし、処理関数4においてアクセス・チェ
ックを行うことにすれば、本発明が意図するアクセス保
護を実現することができる。
【0084】図4の「case−B」は、処理関数4と
制御情報9が、カーネルまたはサーバ等が管理する空間
にあり、データブロック12は、ユーザ空間にある場合
を示した摸式図である。「case−A」との相違は、
データ記憶部11が、カーネル等の空間ではなく、ユー
ザ空間に存在する点である。
制御情報9が、カーネルまたはサーバ等が管理する空間
にあり、データブロック12は、ユーザ空間にある場合
を示した摸式図である。「case−A」との相違は、
データ記憶部11が、カーネル等の空間ではなく、ユー
ザ空間に存在する点である。
【0085】この場合、制御情報9に関しては、「ca
se−A」と同様であるが、データブロック12に関し
ては、ユーザプロセスと同じ空間に存在するので、ユー
ザプロセスからデータブロックを直接アクセスすること
が可能であるが、直接アクセスせずに、処理関数4に
アクセスしてからデータブロック12をアクセスすると
いう約束事をすることによって、あるいは、データブ
ロック12をページ単位に保護することによって、また
は、セグメントを扱うことのできるプロセッサであれ
ば、ページ以下あるいはページ以上のデータを、セグメ
ントの提供する保護機能で保護することによって、本発
明が意図するアクセス保護を実現することができる。
se−A」と同様であるが、データブロック12に関し
ては、ユーザプロセスと同じ空間に存在するので、ユー
ザプロセスからデータブロックを直接アクセスすること
が可能であるが、直接アクセスせずに、処理関数4に
アクセスしてからデータブロック12をアクセスすると
いう約束事をすることによって、あるいは、データブ
ロック12をページ単位に保護することによって、また
は、セグメントを扱うことのできるプロセッサであれ
ば、ページ以下あるいはページ以上のデータを、セグメ
ントの提供する保護機能で保護することによって、本発
明が意図するアクセス保護を実現することができる。
【0086】図5の「case−C」は、制御情報9の
みが、カーネルまたはサーバ等が管理する空間にあり、
処理関数4とデータブロック12は、ユーザ空間にある
場合を示した摸式図である。「case−B」との相違
は、処理関数4が、カーネル等の管理する空間ではな
く、ユーザ空間に存在する点である。
みが、カーネルまたはサーバ等が管理する空間にあり、
処理関数4とデータブロック12は、ユーザ空間にある
場合を示した摸式図である。「case−B」との相違
は、処理関数4が、カーネル等の管理する空間ではな
く、ユーザ空間に存在する点である。
【0087】図3の「case−A」や図4の「cas
e−B」の処理関数(4)と同様なアルゴリズムを守る
という約束事をすることによって、本発明が意図するア
クセス保護を実現することができる。
e−B」の処理関数(4)と同様なアルゴリズムを守る
という約束事をすることによって、本発明が意図するア
クセス保護を実現することができる。
【0088】この場合、処理関数4をユーザ・プロセス
の一部とすることができるといった利点がある。
の一部とすることができるといった利点がある。
【0089】次に、図6〜図9を参照しながら、本実施
形態におけるデバイスからデバイスへのデータ転送につ
いて、ネットワークを経由して転送された画像データ
をXサーバ・プロセスがディスプレイ上に表示する場合
(受信側)と、ハードディスク等に存在する画像デー
タを読み出してネットワーク・インターフェースからネ
ットワークへ転送する場合(送信側)を例にとって説明
する。
形態におけるデバイスからデバイスへのデータ転送につ
いて、ネットワークを経由して転送された画像データ
をXサーバ・プロセスがディスプレイ上に表示する場合
(受信側)と、ハードディスク等に存在する画像デー
タを読み出してネットワーク・インターフェースからネ
ットワークへ転送する場合(送信側)を例にとって説明
する。
【0090】図6は、図5の「case−C」の場合の
データ転送(受信側)の摸式図である。
データ転送(受信側)の摸式図である。
【0091】図6では、ネットワークを経由して転送さ
れてきたパケットは、まず、ネットワーク・インターフ
ェース13上のバッファ14に格納される。次に、OS
内のドライバによって、バッファ14に格納されている
受信データを、ユーザ空間に存在するデータ・ブロック
17に転送して良いかどうかのチェックが行われる。こ
のチェックは、「制御情報1」に含まれるアクセス制御
情報に、OSがRead可であるアクセス制御情報が含
まれ、かつ、「制御情報2」に含まれるアクセス制御情
報に、OSがWrite可であるアクセス制御情報が含
まれることをチェックすることによって行われる。チェ
ックの結果、データ転送が許される場合、OS内のドラ
イバによって受信データはデータ・ブロック17へ転送
される(図6中のb)。
れてきたパケットは、まず、ネットワーク・インターフ
ェース13上のバッファ14に格納される。次に、OS
内のドライバによって、バッファ14に格納されている
受信データを、ユーザ空間に存在するデータ・ブロック
17に転送して良いかどうかのチェックが行われる。こ
のチェックは、「制御情報1」に含まれるアクセス制御
情報に、OSがRead可であるアクセス制御情報が含
まれ、かつ、「制御情報2」に含まれるアクセス制御情
報に、OSがWrite可であるアクセス制御情報が含
まれることをチェックすることによって行われる。チェ
ックの結果、データ転送が許される場合、OS内のドラ
イバによって受信データはデータ・ブロック17へ転送
される(図6中のb)。
【0092】次に、データ・ブロック17での処理中
に、ネットワークから転送されてきたデータによって、
データ・ブロック17に存在するデータが上書きされる
のを防ぐため、「制御情報2」に含まれるアクセス制御
情報を変更して、OSがWrite不可とし、OS内に
あるネットワーク・プロトコルを処理するモジュールに
よって、プロトコル処理等を行う。この処理の後、「制
御情報2」に含まれるアクセス制御情報を変更すること
によって、Xサーバ・プロセス等のユーザ・プロセス
が、データ・ブロック17にアクセスできるようにす
る。
に、ネットワークから転送されてきたデータによって、
データ・ブロック17に存在するデータが上書きされる
のを防ぐため、「制御情報2」に含まれるアクセス制御
情報を変更して、OSがWrite不可とし、OS内に
あるネットワーク・プロトコルを処理するモジュールに
よって、プロトコル処理等を行う。この処理の後、「制
御情報2」に含まれるアクセス制御情報を変更すること
によって、Xサーバ・プロセス等のユーザ・プロセス
が、データ・ブロック17にアクセスできるようにす
る。
【0093】Xサーバ・プロセス等のユーザ・プロセス
がデータ・ブロック17に対して必要な画像変換処理等
を行った後、変換した画像データをフレームバッファ1
8に転送して良いかどうかのチェックが行われる。この
チェックは、「制御情報2」に含まれるアクセス制御情
報に、user1がRead可であるというアクセス制
御情報が含まれ、かつ、「制御情報3」に含まれるアク
セス制御情報に、user1がWrite可であるとい
うアクセス制御情報が含まれることを確認することによ
って行われる。アクセス制御情報をチェックした結果、
転送しても良い場合は、ユーザ・プロセスまたはOS内
のドライバによって、変換された画像データがデータブ
ロック17からフレームバッファ18へ転送される(図
6中のc)。なお、図6のフレームバッファ18とディ
スプレイ19の代わりに、それぞれハードディスクとハ
ードディスク・コントローラとに置き換えても良い。
がデータ・ブロック17に対して必要な画像変換処理等
を行った後、変換した画像データをフレームバッファ1
8に転送して良いかどうかのチェックが行われる。この
チェックは、「制御情報2」に含まれるアクセス制御情
報に、user1がRead可であるというアクセス制
御情報が含まれ、かつ、「制御情報3」に含まれるアク
セス制御情報に、user1がWrite可であるとい
うアクセス制御情報が含まれることを確認することによ
って行われる。アクセス制御情報をチェックした結果、
転送しても良い場合は、ユーザ・プロセスまたはOS内
のドライバによって、変換された画像データがデータブ
ロック17からフレームバッファ18へ転送される(図
6中のc)。なお、図6のフレームバッファ18とディ
スプレイ19の代わりに、それぞれハードディスクとハ
ードディスク・コントローラとに置き換えても良い。
【0094】本実施形態を示す図6と前述した従来技術
におけるデータ転送を示す図12を比較すると、本実施
形態に係るデータ転送方法を採用することによって、従
来技術による方法よりも、データ転送回数を1回少くで
きることがわかる。
におけるデータ転送を示す図12を比較すると、本実施
形態に係るデータ転送方法を採用することによって、従
来技術による方法よりも、データ転送回数を1回少くで
きることがわかる。
【0095】なお、上述した例では、OS内にあるネッ
トワーク・プロトコルを処理するモジュールは、データ
・ブロック17に転送されたデータに対して、プロトコ
ル処理等のデータ処理を行うものとしたが、ネットワー
ク・インターフェース13内のバッファ14に格納され
た受信データに対し処理を行って、処理された受信デー
タをデータ・ブロック17へ転送しても良い。
トワーク・プロトコルを処理するモジュールは、データ
・ブロック17に転送されたデータに対して、プロトコ
ル処理等のデータ処理を行うものとしたが、ネットワー
ク・インターフェース13内のバッファ14に格納され
た受信データに対し処理を行って、処理された受信デー
タをデータ・ブロック17へ転送しても良い。
【0096】また、上述の例では、Xサーバ・プロセス
等のユーザ・プロセスは、OS内のドライバ等によって
転送された同一のデータ・ブロック17に対し、画像等
の変換処理を行うものとしたが、Xサーバ・プロセス等
のユーザ・プロセスは、転送にあたったデータ・ブロッ
クとは異なるデータ・ブロックに、変換後のデータを格
納し、そのデータ・ブロックからフレーム・バッファ1
8へデータ転送しても良い。
等のユーザ・プロセスは、OS内のドライバ等によって
転送された同一のデータ・ブロック17に対し、画像等
の変換処理を行うものとしたが、Xサーバ・プロセス等
のユーザ・プロセスは、転送にあたったデータ・ブロッ
クとは異なるデータ・ブロックに、変換後のデータを格
納し、そのデータ・ブロックからフレーム・バッファ1
8へデータ転送しても良い。
【0097】なお、上述の例では、図5の「case−
C」の場合を例にとって説明したが、「case−A」
の場合では、データ・ブロックは、カーネル空間内に存
在することになる。また、データ・ブロックが2つの場
合は、2つのデータ・ブロックがユーザ空間にあっても
良いし、一方がユーザ空間に他方がカーネル空間にあっ
ても良いし、2つのデータ・ブロックがカーネル空間に
あっても良い。
C」の場合を例にとって説明したが、「case−A」
の場合では、データ・ブロックは、カーネル空間内に存
在することになる。また、データ・ブロックが2つの場
合は、2つのデータ・ブロックがユーザ空間にあっても
良いし、一方がユーザ空間に他方がカーネル空間にあっ
ても良いし、2つのデータ・ブロックがカーネル空間に
あっても良い。
【0098】図7は、本実施形態に係るデータ転送方法
であって、ハードディスク等に存在する画像データを、
ネットワーク・インターフェースを経由してネットワー
クに送信する送信側のデータ転送の一例を示したもので
ある。
であって、ハードディスク等に存在する画像データを、
ネットワーク・インターフェースを経由してネットワー
クに送信する送信側のデータ転送の一例を示したもので
ある。
【0099】前述した受信側の例と同様に、ハードディ
スク・コントローラ47内のバッファ48に存在するデ
ータをユーザ空間内のデータ・ブロック17に転送する
際と、データ・ブロック17に存在するデータをネット
ワーク・インターフェース13内に存在するバッファ1
4に転送する際のそれぞれにおいて、制御情報に含まれ
るアクセス制御情報をチェックすることによって転送し
て良いかどうかがチェックされた後、実際のデータ転送
が行われる。
スク・コントローラ47内のバッファ48に存在するデ
ータをユーザ空間内のデータ・ブロック17に転送する
際と、データ・ブロック17に存在するデータをネット
ワーク・インターフェース13内に存在するバッファ1
4に転送する際のそれぞれにおいて、制御情報に含まれ
るアクセス制御情報をチェックすることによって転送し
て良いかどうかがチェックされた後、実際のデータ転送
が行われる。
【0100】「制御情報2」に含まれるアクセス制御情
報の変更については、図6の例で説明した点と、同様で
ある。
報の変更については、図6の例で説明した点と、同様で
ある。
【0101】図8は、図6よりもさらにデータ転送回数
が少ない受信側のデータ転送方法である。
が少ない受信側のデータ転送方法である。
【0102】図8では、ネットワークを経由して転送さ
れてきたパケットは、ネットワーク・インターフェース
13上のバッファ14に格納された後、OS内のネット
ワーク・プロトコルを処理するモジュールによって、プ
ロトコル処理が行われた後、「制御情報1」に含まれて
いるアクセス制御情報を変更することによって、Xサー
バ・プロセス(ユーザ・プロセス)が、バッファ14に
アクセスできるようになる。
れてきたパケットは、ネットワーク・インターフェース
13上のバッファ14に格納された後、OS内のネット
ワーク・プロトコルを処理するモジュールによって、プ
ロトコル処理が行われた後、「制御情報1」に含まれて
いるアクセス制御情報を変更することによって、Xサー
バ・プロセス(ユーザ・プロセス)が、バッファ14に
アクセスできるようになる。
【0103】Xサーバ・プロセスは、バッファ14に格
納されている受信データに対し、必要な画像変換処理等
を行った後、変換した画像データを、フレームバッファ
18に転送するために、制御情報2に含まれているアク
セス制御情報のチェックを行う。アクセス制御情報をチ
ェックした結果、転送しても良い場合は、Xサーバ・プ
ロセス(ユーザ・プロセス)またはOS内のドライバに
よって、変換された画像データがバッファ14からフレ
ームバッファ18へ転送される(図8中のb)。なお、
図8のフレームバッファ18とディスプレイ19の代わ
りに、それぞれハードディスクとハードディスク・コン
トローラとに置き換えても良い。
納されている受信データに対し、必要な画像変換処理等
を行った後、変換した画像データを、フレームバッファ
18に転送するために、制御情報2に含まれているアク
セス制御情報のチェックを行う。アクセス制御情報をチ
ェックした結果、転送しても良い場合は、Xサーバ・プ
ロセス(ユーザ・プロセス)またはOS内のドライバに
よって、変換された画像データがバッファ14からフレ
ームバッファ18へ転送される(図8中のb)。なお、
図8のフレームバッファ18とディスプレイ19の代わ
りに、それぞれハードディスクとハードディスク・コン
トローラとに置き換えても良い。
【0104】なお、上述の例では、Xサーバ・プロセス
といったユーザ・プロセスが、ネットワーク・インター
フェース13といったデバイス上のバッファ14を直接
アクセスして、画像等の変換処理を行った後、フレーム
バッファ18といったバッファに転送するものとした
が、画像等の変換処理を行った後、主記憶15内に存在
するデータ・ブロックにいったん転送し、該データ・ブ
ロックからフレームバッファ18といったバッファに転
送しても良い。
といったユーザ・プロセスが、ネットワーク・インター
フェース13といったデバイス上のバッファ14を直接
アクセスして、画像等の変換処理を行った後、フレーム
バッファ18といったバッファに転送するものとした
が、画像等の変換処理を行った後、主記憶15内に存在
するデータ・ブロックにいったん転送し、該データ・ブ
ロックからフレームバッファ18といったバッファに転
送しても良い。
【0105】図9は、図8と同様なデータ転送方法を、
送信側に適用した場合の摸式図である。
送信側に適用した場合の摸式図である。
【0106】ハードディスク・コントローラ47内のバ
ッファ48に存在するデータを、ネットワーク・インタ
ーフェース13内に存在するバッファ14に転送する際
に、制御情報に含まれるアクセス制御情報をチェックす
ることによって、転送して良いかどうかがチェックされ
た後、実際のデータ転送が行われる。
ッファ48に存在するデータを、ネットワーク・インタ
ーフェース13内に存在するバッファ14に転送する際
に、制御情報に含まれるアクセス制御情報をチェックす
ることによって、転送して良いかどうかがチェックされ
た後、実際のデータ転送が行われる。
【0107】このように、例えばネットワーク・インタ
ーフェースやハードディスク・コントローラなどのデバ
イスからプログラム実行主体へデータを転送するような
場合、従来のUNIXのようなOSでは、デバイスとの
データのやりとりに使用するデータブロックからプログ
ラム実行主体が管理するデータ領域にデータ転送を行わ
なければならなかったのに対し、本実施形態によれば、
プログラム実行主体は、データブロックに直接アクセス
することができるので、データ転送を行わず、効率良く
デバイスとプログラム実行主体との間のデータのやりと
りを行うことができる。
ーフェースやハードディスク・コントローラなどのデバ
イスからプログラム実行主体へデータを転送するような
場合、従来のUNIXのようなOSでは、デバイスとの
データのやりとりに使用するデータブロックからプログ
ラム実行主体が管理するデータ領域にデータ転送を行わ
なければならなかったのに対し、本実施形態によれば、
プログラム実行主体は、データブロックに直接アクセス
することができるので、データ転送を行わず、効率良く
デバイスとプログラム実行主体との間のデータのやりと
りを行うことができる。
【0108】また、本実施形態によれば、ネットワーク
・インターフェースやハードディスク・コントローラな
どのデバイスがデータブロックをアクセスする際は、ア
クセス制御情報を変更することによって、デバイスの制
御を行うプログラム実行主体のみをデータブロックにア
クセス可能とし、例えばUNIXにおけるユーザ・プロ
セスのようなプログラム実行主体はデータブロックにア
クセス不可とするようなことが容易に行えるので、デー
タブロックをアクセスするプログラム実行主体の相互排
除を効率良く実行することができる。
・インターフェースやハードディスク・コントローラな
どのデバイスがデータブロックをアクセスする際は、ア
クセス制御情報を変更することによって、デバイスの制
御を行うプログラム実行主体のみをデータブロックにア
クセス可能とし、例えばUNIXにおけるユーザ・プロ
セスのようなプログラム実行主体はデータブロックにア
クセス不可とするようなことが容易に行えるので、デー
タブロックをアクセスするプログラム実行主体の相互排
除を効率良く実行することができる。
【0109】また、従来は、ネットワーク・インターフ
ェースやハードディスク・コントローラなどのデバイス
からUNIXにおけるユーザ・プロセスといったプログ
ラム実行主体を経由して、ディスプレイなどのデバイス
へデータ転送を行う場合、UNIXなどのOSにおいて
は、実際に、前者のデバイスからプログラム実行主体へ
データ転送を行い、さらにプログラム実行主体から後者
のデバイスへデータ転送を行わなければならなかった。
しかし、本実施形態によれば、前者のデバイスとプログ
ラム実行主体との間のデータのやりとりのために確保さ
れたデータブロックは、プログラム実行主体が直接アク
セスすることができるので、前者のデバイスからプログ
ラム実行主体へ実際にデータ転送を行う必要はなくなっ
た。同様に、後者のデバイスは、データブロックを直接
アクセスすることができるので、プログラム実行主体か
ら後者のデバイスへ実際にデータ転送を行う必要がなく
なった。これによって、複数のデバイスと複数のプログ
ラム実行主体との間のデータのやりとりを効率良く実行
することができる。
ェースやハードディスク・コントローラなどのデバイス
からUNIXにおけるユーザ・プロセスといったプログ
ラム実行主体を経由して、ディスプレイなどのデバイス
へデータ転送を行う場合、UNIXなどのOSにおいて
は、実際に、前者のデバイスからプログラム実行主体へ
データ転送を行い、さらにプログラム実行主体から後者
のデバイスへデータ転送を行わなければならなかった。
しかし、本実施形態によれば、前者のデバイスとプログ
ラム実行主体との間のデータのやりとりのために確保さ
れたデータブロックは、プログラム実行主体が直接アク
セスすることができるので、前者のデバイスからプログ
ラム実行主体へ実際にデータ転送を行う必要はなくなっ
た。同様に、後者のデバイスは、データブロックを直接
アクセスすることができるので、プログラム実行主体か
ら後者のデバイスへ実際にデータ転送を行う必要がなく
なった。これによって、複数のデバイスと複数のプログ
ラム実行主体との間のデータのやりとりを効率良く実行
することができる。
【0110】また、制御情報とデータブロックの領域を
予め確保しておき、プログラム実行主体等からの要求に
従ってプログラム実行主体に割り当てるという方法を採
用すれば、要求時に領域を確保し割り当てるという方法
に比べて、効率良くプログラム実行主体等からの確保・
割り当て要求を処理することができる。
予め確保しておき、プログラム実行主体等からの要求に
従ってプログラム実行主体に割り当てるという方法を採
用すれば、要求時に領域を確保し割り当てるという方法
に比べて、効率良くプログラム実行主体等からの確保・
割り当て要求を処理することができる。
【0111】次に、データブロックの管理方法の一例を
説明する。
説明する。
【0112】先に図13を参照しながら従来のストリー
ムと呼ばれる管理機構について、説明したが、以下では
従来のストリームを改良したこの実施形態に係るストリ
ームを、図10、図11を参照しながら説明する。
ムと呼ばれる管理機構について、説明したが、以下では
従来のストリームを改良したこの実施形態に係るストリ
ームを、図10、図11を参照しながら説明する。
【0113】図10では、メッセージ・コントロールブ
ロックmsgb(図中22)、データ・コントロールブ
ロックdatb(図中23)、およびアクセス制御情報
aclb(図中24)からなる制御情報と、データ記憶
領域25内の対応するデータブロック(図中12)を示
してある。
ロックmsgb(図中22)、データ・コントロールブ
ロックdatb(図中23)、およびアクセス制御情報
aclb(図中24)からなる制御情報と、データ記憶
領域25内の対応するデータブロック(図中12)を示
してある。
【0114】なお、前述した制御情報1と制御情報2と
制御情報3は、図10の情報はすべて持つても良い。ま
た、制御情報2と制御情報3は、図10の情報に関して
は、メッセージ・コントロールブロック(msgb)、
データ・コントロールブロック(datb)は持たず、
アクセス制御情報aclbだけを持っても良い。
制御情報3は、図10の情報はすべて持つても良い。ま
た、制御情報2と制御情報3は、図10の情報に関して
は、メッセージ・コントロールブロック(msgb)、
データ・コントロールブロック(datb)は持たず、
アクセス制御情報aclbだけを持っても良い。
【0115】メッセージ・コントロールブロックmsg
b(22)のメンバに存在する「mb_acl」(図中
32)は、対応するメッセージ・コントロールブロック
msgb(22)のアクセス制御情報aclbが格納さ
れた領域を指し示すポインタである。
b(22)のメンバに存在する「mb_acl」(図中
32)は、対応するメッセージ・コントロールブロック
msgb(22)のアクセス制御情報aclbが格納さ
れた領域を指し示すポインタである。
【0116】図10では、一例として、アクセス制御情
報aclbが、メッセージ・コントロールブロックms
gb(22)を所有するプログラム実行主体の識別子
(例えばUNIXにおけるプロセスID)を格納する
「ab_iswhich」(42)と、メッセージ・コ
ントロールブロックmsgb(22)を参照しているプ
ログラム実行主体の数(例えばUNIXにおけるプロセ
スの数)を格納する「ab_ref」(41)とから構
成される場合を示している。
報aclbが、メッセージ・コントロールブロックms
gb(22)を所有するプログラム実行主体の識別子
(例えばUNIXにおけるプロセスID)を格納する
「ab_iswhich」(42)と、メッセージ・コ
ントロールブロックmsgb(22)を参照しているプ
ログラム実行主体の数(例えばUNIXにおけるプロセ
スの数)を格納する「ab_ref」(41)とから構
成される場合を示している。
【0117】図10に示したアクセス制御情報aclb
の場合、メッセージ・コントロールブロックmsgb
(22)内のメンバに格納されたデータを変更すること
ができるのは、「ab_iswhich」(42)に格
納されたプロセスIDを持つプロセスに制限される。ま
た、メッセージ・コントロールブロックmsgb(2
2)として割り当てられた領域の割り当てを解除して、
該メッセージ・コントロールブロックmsgb(22)
を消去することのできるのは、「ab_ref」(4
1)に格納された参照数が0の場合に制限される。
の場合、メッセージ・コントロールブロックmsgb
(22)内のメンバに格納されたデータを変更すること
ができるのは、「ab_iswhich」(42)に格
納されたプロセスIDを持つプロセスに制限される。ま
た、メッセージ・コントロールブロックmsgb(2
2)として割り当てられた領域の割り当てを解除して、
該メッセージ・コントロールブロックmsgb(22)
を消去することのできるのは、「ab_ref」(4
1)に格納された参照数が0の場合に制限される。
【0118】なお、図10では、対応するメッセージ・
コントロールブロックmsgb(22)のアクセス制御
情報aclbが格納されている領域へのポインタが、メ
ッセージ・コントロールブロックmsgb(22)に格
納されている場合を示したが、ポインタではなく、アク
セス制御情報を、直接、メッセージ・コントロールブロ
ックmsgb(22)に書き込むようにしても良いし、
複数のアクセス制御情報aclbを連結したアクセス制
御リストを用いても良い。
コントロールブロックmsgb(22)のアクセス制御
情報aclbが格納されている領域へのポインタが、メ
ッセージ・コントロールブロックmsgb(22)に格
納されている場合を示したが、ポインタではなく、アク
セス制御情報を、直接、メッセージ・コントロールブロ
ックmsgb(22)に書き込むようにしても良いし、
複数のアクセス制御情報aclbを連結したアクセス制
御リストを用いても良い。
【0119】なお、データ・コントロールブロックda
tb(23)のメンバに存在する「db_acl」(3
9)についても、mb_acl(32)と同様である。
tb(23)のメンバに存在する「db_acl」(3
9)についても、mb_acl(32)と同様である。
【0120】ところで、データ・コントロールブロック
datb(23)のメンバに存在する「db_buf
p」(33)は、デバイス間のデータの受渡しに用いる
データブロックを指し示すポインタである。従来のスト
リームでは、実際にデータが格納されている領域の先頭
と最後のみ、「db_base」と「db_lim」で
指し示していたが、本実施形態においては、データを格
納することのできる領域を予約し、領域を指し示すポイ
ンタを「db_bufp」(33)に格納し、実際にデ
ータが格納されている領域の先頭と最後に関しては、
「db_base」(34)と「db_lim」(3
6)で指し示すようにしている。この方法を採用するこ
とによって「db_base」(34)と「db_li
m」(36)で指し示された、実際にデータが格納され
た領域の前後の領域に、データを付加することができ、
パケット等のデータを作成する場合、データ本体の前に
ヘッダ等のデータ領域を効率良く付加することができ
る。
datb(23)のメンバに存在する「db_buf
p」(33)は、デバイス間のデータの受渡しに用いる
データブロックを指し示すポインタである。従来のスト
リームでは、実際にデータが格納されている領域の先頭
と最後のみ、「db_base」と「db_lim」で
指し示していたが、本実施形態においては、データを格
納することのできる領域を予約し、領域を指し示すポイ
ンタを「db_bufp」(33)に格納し、実際にデ
ータが格納されている領域の先頭と最後に関しては、
「db_base」(34)と「db_lim」(3
6)で指し示すようにしている。この方法を採用するこ
とによって「db_base」(34)と「db_li
m」(36)で指し示された、実際にデータが格納され
た領域の前後の領域に、データを付加することができ、
パケット等のデータを作成する場合、データ本体の前に
ヘッダ等のデータ領域を効率良く付加することができ
る。
【0121】また、予約したデータを格納することので
きる領域ごとに、実際にデータを格納する領域を割り当
てたり、割当を解除したりする管理を行なうことによっ
て、効率良く領域を管理することができる。
きる領域ごとに、実際にデータを格納する領域を割り当
てたり、割当を解除したりする管理を行なうことによっ
て、効率良く領域を管理することができる。
【0122】また、図中の「db_next」(40)
は、予約したデータを格納することのできる領域を2つ
以上のデータ・コントロールブロックに分割して管理す
る場合に、当該データ・コントロールブロックを連結す
るために用いる。同一領域に対応するデータ・コントロ
ールブロックを連結することによって、領域を参照して
いるデータ・コントロールブロックの参照数を管理する
ことができ、参照しているデータ・コントロールブロッ
クがなくなれば、領域の割当の解除を行うことができる
ので、分割された領域の割当の解除等を効率良く行うこ
とができる。
は、予約したデータを格納することのできる領域を2つ
以上のデータ・コントロールブロックに分割して管理す
る場合に、当該データ・コントロールブロックを連結す
るために用いる。同一領域に対応するデータ・コントロ
ールブロックを連結することによって、領域を参照して
いるデータ・コントロールブロックの参照数を管理する
ことができ、参照しているデータ・コントロールブロッ
クがなくなれば、領域の割当の解除を行うことができる
ので、分割された領域の割当の解除等を効率良く行うこ
とができる。
【0123】次に、図11を参照しながら、データ・コ
ントロールブロックdatb(23)の割り当てとその
解除の一例について説明する。
ントロールブロックdatb(23)の割り当てとその
解除の一例について説明する。
【0124】図10に示すデータ・コントロールブロッ
クdatb(23)のメンバに存在する「db_sr
c」(38)は、図11に示すデータ・コントロールブ
ロックを管理するコントロールブロックの管理ブロック
(図中21)の構造体を指し示すポインタである。
クdatb(23)のメンバに存在する「db_sr
c」(38)は、図11に示すデータ・コントロールブ
ロックを管理するコントロールブロックの管理ブロック
(図中21)の構造体を指し示すポインタである。
【0125】以下、「db_src」(38)等の働き
について説明する。
について説明する。
【0126】図に示すように、本実施形態においては、
メッセージ・コントロールブロックmsgb(22)や
データ・コントロールブロックdatb(23)等に対
するデータ領域を予め確保しておいて、プロセス等に割
り当てられていないコントロールブロック(以下、「空
のコントロールブロック」と呼ぶ)を、リンクド・リス
トとして管理する。図11のコントロールブロックの管
理ブロックdatb_contb(21)は、空のコン
トロールブロックを管理する管理構造であり、「db_
begin」(43)によって、リンクド・リストの中
の先頭の空のコントロールブロックが指し示されてい
る。また、「db_end」(44)によって、リンク
ド・リストの中の最後の空のコントロールブロックが指
し示されている。
メッセージ・コントロールブロックmsgb(22)や
データ・コントロールブロックdatb(23)等に対
するデータ領域を予め確保しておいて、プロセス等に割
り当てられていないコントロールブロック(以下、「空
のコントロールブロック」と呼ぶ)を、リンクド・リス
トとして管理する。図11のコントロールブロックの管
理ブロックdatb_contb(21)は、空のコン
トロールブロックを管理する管理構造であり、「db_
begin」(43)によって、リンクド・リストの中
の先頭の空のコントロールブロックが指し示されてい
る。また、「db_end」(44)によって、リンク
ド・リストの中の最後の空のコントロールブロックが指
し示されている。
【0127】プロセス等が、データ・コントロールブロ
ック(23)の割当を要求した場合、db_begin
(43)によって指し示されているデータ・コントロー
ルブロック(23)をリンクド・リストから取り出し
て、プロセス等に対しデータ・コントロールブロック
(23)を割り当てる。また、プロセス等が、データ・
コントロールブロック(23)の使用が終了し、データ
・コントロールブロック(23)を返却する場合、db
_end(44)によって指し示されているデータ・コ
ントロールブロック(23)の後に、データ・コントロ
ールブロック(23)を追加し、db_end(44)
を更新することによって、リンクド・リストによる空の
コントロールブロックの管理を行うことができる。
ック(23)の割当を要求した場合、db_begin
(43)によって指し示されているデータ・コントロー
ルブロック(23)をリンクド・リストから取り出し
て、プロセス等に対しデータ・コントロールブロック
(23)を割り当てる。また、プロセス等が、データ・
コントロールブロック(23)の使用が終了し、データ
・コントロールブロック(23)を返却する場合、db
_end(44)によって指し示されているデータ・コ
ントロールブロック(23)の後に、データ・コントロ
ールブロック(23)を追加し、db_end(44)
を更新することによって、リンクド・リストによる空の
コントロールブロックの管理を行うことができる。
【0128】前述したように、予めデータ・コントロー
ルブロック(23)等の領域を確保しておいて、確保し
たデータ・コントロールブロック(23)をリンクド・
リストによって管理し、プロセス等のデータ・コントロ
ールブロック(23)の要求時、リンクド・リストから
データ・コントロールブロック(23)を割り当てるよ
うにすれば、要求時、領域の確保を行う必要がないの
で、データ・コントロールブロックを高速に割り当てる
ことができる。
ルブロック(23)等の領域を確保しておいて、確保し
たデータ・コントロールブロック(23)をリンクド・
リストによって管理し、プロセス等のデータ・コントロ
ールブロック(23)の要求時、リンクド・リストから
データ・コントロールブロック(23)を割り当てるよ
うにすれば、要求時、領域の確保を行う必要がないの
で、データ・コントロールブロックを高速に割り当てる
ことができる。
【0129】また、データ・コントロールブロック(2
3)に管理ブロックの構造体を指し示すポインタである
db_src(38)を書き込むようにすれば、プロセ
ス等がデータ・コントロールブロック(23)の使用を
終了し、データ・コントロールブロック(23)の割り
当てを解除する場合に、容易に管理ブロックの構造体
(21)のアドレスを知ることができるので、効率良く
割り当ての解除を行うことができる。
3)に管理ブロックの構造体を指し示すポインタである
db_src(38)を書き込むようにすれば、プロセ
ス等がデータ・コントロールブロック(23)の使用を
終了し、データ・コントロールブロック(23)の割り
当てを解除する場合に、容易に管理ブロックの構造体
(21)のアドレスを知ることができるので、効率良く
割り当ての解除を行うことができる。
【0130】以上の実施形態においては、データ転送と
して、実際にデータを転送する場合について示したが、
実際にデータを転送せずに、物理ページと論理ページの
対応付けをしているポインタを書き替えることによって
データ転送を行っても良い。
して、実際にデータを転送する場合について示したが、
実際にデータを転送せずに、物理ページと論理ページの
対応付けをしているポインタを書き替えることによって
データ転送を行っても良い。
【0131】すなわち、TLB(Translatio
n Lookaside Buffer)に存在する、
ユーザがアクセスする仮想空間に存在する論理ページか
ら、実際のメモリ上に存在する物理ページへのポインタ
には、本実施形態の図10における「db_bufp」
(33)が書かれているが、ある論理ページのポインタ
に「db_bufp」(33)の値を書き込むことによ
って、前記論理ページへデータを転送することができ
る。
n Lookaside Buffer)に存在する、
ユーザがアクセスする仮想空間に存在する論理ページか
ら、実際のメモリ上に存在する物理ページへのポインタ
には、本実施形態の図10における「db_bufp」
(33)が書かれているが、ある論理ページのポインタ
に「db_bufp」(33)の値を書き込むことによ
って、前記論理ページへデータを転送することができ
る。
【0132】また、メッセージ・コントロールブロック
msgb(22)のメンバに存在する「mb_src」
(29)についても、db_src(38)と同様であ
る。
msgb(22)のメンバに存在する「mb_src」
(29)についても、db_src(38)と同様であ
る。
【0133】次に、本発明の他の実施形態について説明
する。
する。
【0134】なお、本実施形態では、「課題を解決する
ための手段」の項で述べた方法Aについて詳述する。方
法Bについては方法Aの場合を適宜変更すればよいた
め、その説明を省略する。
ための手段」の項で述べた方法Aについて詳述する。方
法Bについては方法Aの場合を適宜変更すればよいた
め、その説明を省略する。
【0135】本発明に係るデータ転送装置は、転送する
データが格納された物理ページと、前記物理ページに格
納されたデータのアクセス情報が書かれたアクセス制御
情報と、プロセスやOSが所有する仮想空間に属する仮
想ページと、前記プロセスやOSが受け付けることので
きる転送データのアクセス情報等が書かれたアクセス制
御情報と、仮想ページ番号をインデックスとして検索
し、物理ページ番号等が書かれたページテーブル・エン
トリが格納されたページテーブルと、プロセスやOSか
らのデータ領域の転送要求を受け付けるデータ転送要求
受付装置と、前記データ転送要求受付装置が受け付けた
要求に従って、前記データが格納された物理ページを検
索し、前記物理ページに対するアクセス制御情報(前述
のiiに相当)と、転送先のプロセスがデータ転送を受
け付けることのできる転送元のプロセスの識別子を示す
アクセス制御情報(前述のiに相当)を比較し、転送が
許されるかどうか判断するアクセス制御情報チェック装
置と、前記アクセス制御情報チェック装置が、転送が許
されると判断した場合に、前記ページテーブルを書き換
えることのできるページテーブル管理装置とを持ってい
ることを特徴とする。
データが格納された物理ページと、前記物理ページに格
納されたデータのアクセス情報が書かれたアクセス制御
情報と、プロセスやOSが所有する仮想空間に属する仮
想ページと、前記プロセスやOSが受け付けることので
きる転送データのアクセス情報等が書かれたアクセス制
御情報と、仮想ページ番号をインデックスとして検索
し、物理ページ番号等が書かれたページテーブル・エン
トリが格納されたページテーブルと、プロセスやOSか
らのデータ領域の転送要求を受け付けるデータ転送要求
受付装置と、前記データ転送要求受付装置が受け付けた
要求に従って、前記データが格納された物理ページを検
索し、前記物理ページに対するアクセス制御情報(前述
のiiに相当)と、転送先のプロセスがデータ転送を受
け付けることのできる転送元のプロセスの識別子を示す
アクセス制御情報(前述のiに相当)を比較し、転送が
許されるかどうか判断するアクセス制御情報チェック装
置と、前記アクセス制御情報チェック装置が、転送が許
されると判断した場合に、前記ページテーブルを書き換
えることのできるページテーブル管理装置とを持ってい
ることを特徴とする。
【0136】本発明に係るデータ転送装置では、あるプ
ロセスが、自分のプロセスが所有する仮想空間に属する
仮想ページに対応した物理ページに格納されたデータ
を、他のプロセスに転送する場合、まず、転送元のプロ
セスが、データ転送要求を、データ転送要求受付装置に
送信する。
ロセスが、自分のプロセスが所有する仮想空間に属する
仮想ページに対応した物理ページに格納されたデータ
を、他のプロセスに転送する場合、まず、転送元のプロ
セスが、データ転送要求を、データ転送要求受付装置に
送信する。
【0137】データ転送要求受付装置は、データ転送要
求を受信した場合、アクセス制御情報チェック装置に対
し、転送データが格納された物理ページに対応するアク
セス制御情報と、転送先のプロセスの受け付けることの
できる転送データのアクセス制御情報の比較をするよう
に要求する。
求を受信した場合、アクセス制御情報チェック装置に対
し、転送データが格納された物理ページに対応するアク
セス制御情報と、転送先のプロセスの受け付けることの
できる転送データのアクセス制御情報の比較をするよう
に要求する。
【0138】アクセス制御情報チェック装置は、2つの
アクセス制御情報を比較し、転送が許される場合は、ペ
ージテーブル管理装置に対し、仮想ページと物理ページ
のマッピングの変更を要求する。
アクセス制御情報を比較し、転送が許される場合は、ペ
ージテーブル管理装置に対し、仮想ページと物理ページ
のマッピングの変更を要求する。
【0139】前記マッピングの変更を要求されたページ
テーブル管理装置は、転送元のプロセスが所有する仮想
空間に属する仮想ページに対応するページテーブル・エ
ントリに書かれている物理ページ番号を消去して、転送
元のプロセスが、前記物理ページにアクセスできないよ
うにするとともに、転送先のプロセスの所有する仮想空
間の、転送データを格納するのに割り当てられた仮想ペ
ージに対応するページテーブル・エントリに、前記物理
ページ番号を書き込むことによって、転送先のプロセス
が、前記物理ページにアクセスできるようにする。
テーブル管理装置は、転送元のプロセスが所有する仮想
空間に属する仮想ページに対応するページテーブル・エ
ントリに書かれている物理ページ番号を消去して、転送
元のプロセスが、前記物理ページにアクセスできないよ
うにするとともに、転送先のプロセスの所有する仮想空
間の、転送データを格納するのに割り当てられた仮想ペ
ージに対応するページテーブル・エントリに、前記物理
ページ番号を書き込むことによって、転送先のプロセス
が、前記物理ページにアクセスできるようにする。
【0140】また、前記比較の結果、転送が許されない
場合は、アクセス制御情報チェック装置、また、データ
転送要求受付装置は、転送元のプロセスに対し、データ
転送の失敗を通知する。
場合は、アクセス制御情報チェック装置、また、データ
転送要求受付装置は、転送元のプロセスに対し、データ
転送の失敗を通知する。
【0141】このように本発明によって、転送元のプロ
セスから、転送先のプロセスへ、仮想ページと物理ペー
ジのマッピングを変更することによって、データ転送す
ることができる。
セスから、転送先のプロセスへ、仮想ページと物理ペー
ジのマッピングを変更することによって、データ転送す
ることができる。
【0142】また、好ましくは、前記データ転送装置の
構成に加えて、ネットワークから受信したパケットを格
納するバッファと、前記バッファに格納された受信パケ
ットに対し、転送誤りがないかどうかチェックする転送
誤り検出装置(例えば、ATM(Asynchrono
us Transfer Mode)のAAL(ATM
Adaptation Layer)5のCRC(C
yclic Redundancy Check)チェ
ック等)と、前記転送誤り検出装置が、転送誤りがない
と判断した受信パケット等に関して、受信パケットから
転送データを抽出する転送データ抽出装置と、前記転送
データ抽出装置が抽出した転送データを、OS等が管理
する仮想空間に属する割り当てられた仮想ページに対応
する物理ページに転送する転送データ転送装置とを具備
しても良い。
構成に加えて、ネットワークから受信したパケットを格
納するバッファと、前記バッファに格納された受信パケ
ットに対し、転送誤りがないかどうかチェックする転送
誤り検出装置(例えば、ATM(Asynchrono
us Transfer Mode)のAAL(ATM
Adaptation Layer)5のCRC(C
yclic Redundancy Check)チェ
ック等)と、前記転送誤り検出装置が、転送誤りがない
と判断した受信パケット等に関して、受信パケットから
転送データを抽出する転送データ抽出装置と、前記転送
データ抽出装置が抽出した転送データを、OS等が管理
する仮想空間に属する割り当てられた仮想ページに対応
する物理ページに転送する転送データ転送装置とを具備
しても良い。
【0143】この場合、ネットワークから転送されてき
たパケットを受信した場合、受信パケットは、まず、ネ
ットワーク・インターフェース・ボードに存在するバッ
ファに格納され、ネットワーク・インターフェース・ボ
ードに存在する転送誤り検出装置によって、転送誤りが
ないかどうかチェックされた後、転送誤りが検出されな
かった受信パケットは、転送データ抽出装置によって、
受信パケットから転送データを抽出された後、転送デー
タは、OS等によって、OS等が管理する転送データが
格納するための仮想ページに対応した物理ページに転送
される。
たパケットを受信した場合、受信パケットは、まず、ネ
ットワーク・インターフェース・ボードに存在するバッ
ファに格納され、ネットワーク・インターフェース・ボ
ードに存在する転送誤り検出装置によって、転送誤りが
ないかどうかチェックされた後、転送誤りが検出されな
かった受信パケットは、転送データ抽出装置によって、
受信パケットから転送データを抽出された後、転送デー
タは、OS等によって、OS等が管理する転送データが
格納するための仮想ページに対応した物理ページに転送
される。
【0144】OS等は、前記受信パケットのヘッダ領域
に書かれた宛先情報を基に、宛先のプロセスを特定し、
宛先のプロセスに、前記受信パケットから抽出した転送
データを転送するために、前記データ転送方法を使っ
て、仮想ページと物理ページのマッピングを変えること
によって、データ転送を行なう。
に書かれた宛先情報を基に、宛先のプロセスを特定し、
宛先のプロセスに、前記受信パケットから抽出した転送
データを転送するために、前記データ転送方法を使っ
て、仮想ページと物理ページのマッピングを変えること
によって、データ転送を行なう。
【0145】このように、受信パケットを宛先のプロセ
スに転送するのに、1回のデータ転送と、仮想ページと
物理ページのマッピングを変更するだけでよいので、効
率的に転送することができる。
スに転送するのに、1回のデータ転送と、仮想ページと
物理ページのマッピングを変更するだけでよいので、効
率的に転送することができる。
【0146】また、好ましくは、パケット受信側の前記
データ転送装置において、前記データ転送装置の構成に
加えて、受信したパケットに対し、予め定められた大き
さの領域を読み込んで、前記領域に書かれているヘッダ
長等の情報を基に、転送データの始まりを検出する転送
データ先頭検出装置と、前記転送データ先頭検出装置が
検出した先頭と、物理ページの先頭の位置が合うよう
に、転送データを、前記物理ページに転送する転送デー
タ転送装置とを具備しても良い。
データ転送装置において、前記データ転送装置の構成に
加えて、受信したパケットに対し、予め定められた大き
さの領域を読み込んで、前記領域に書かれているヘッダ
長等の情報を基に、転送データの始まりを検出する転送
データ先頭検出装置と、前記転送データ先頭検出装置が
検出した先頭と、物理ページの先頭の位置が合うよう
に、転送データを、前記物理ページに転送する転送デー
タ転送装置とを具備しても良い。
【0147】この場合、ネットワーク・インターフェー
ス・ボード上に存在するバッファに格納された受信パケ
ットに対し、パケットの先頭から予め定められた大きさ
のデータ領域を、OS等が管理するデータ記憶領域に転
送しておき、転送データ先頭検出装置が、前記データ記
憶領域に格納されたパケットの先頭部分に含まれるヘッ
ダ長等の情報を基に、受信パケットに格納された転送デ
ータの先頭の位置を特定し、前記転送データの先頭と、
物理ページの先頭が合うように、バッファから転送デー
タを物理ページに転送することができる。
ス・ボード上に存在するバッファに格納された受信パケ
ットに対し、パケットの先頭から予め定められた大きさ
のデータ領域を、OS等が管理するデータ記憶領域に転
送しておき、転送データ先頭検出装置が、前記データ記
憶領域に格納されたパケットの先頭部分に含まれるヘッ
ダ長等の情報を基に、受信パケットに格納された転送デ
ータの先頭の位置を特定し、前記転送データの先頭と、
物理ページの先頭が合うように、バッファから転送デー
タを物理ページに転送することができる。
【0148】このように、物理ページの先頭と、転送デ
ータの先頭の位置を合わせることができるので、仮想ペ
ージと物理ページのマッピングを変更し、宛先のプロセ
スが、仮想ページを通して転送データにアクセスする場
合に、仮想ページの先頭から、転送データをアクセスす
ることができる。
ータの先頭の位置を合わせることができるので、仮想ペ
ージと物理ページのマッピングを変更し、宛先のプロセ
スが、仮想ページを通して転送データにアクセスする場
合に、仮想ページの先頭から、転送データをアクセスす
ることができる。
【0149】また、好ましくは、前記データ転送装置の
構成に加えて、ネットワークから送信するためのパケッ
トを一時的に格納するバッファと、OS等が管理する仮
想空間に属する仮想ページに対応する物理ページに格納
された転送データに対し、ヘッダを作成し、受信端末が
受信したパケットに転送誤りがないかどうかチェックす
るためのデータを作成し、前記ヘッダと、前記チェック
データ等から送信パケットを生成するパケット生成装置
と、前記パケット生成装置が生成したパケットを、前記
バッファに転送するパケット転送装置とを具備しても良
い。
構成に加えて、ネットワークから送信するためのパケッ
トを一時的に格納するバッファと、OS等が管理する仮
想空間に属する仮想ページに対応する物理ページに格納
された転送データに対し、ヘッダを作成し、受信端末が
受信したパケットに転送誤りがないかどうかチェックす
るためのデータを作成し、前記ヘッダと、前記チェック
データ等から送信パケットを生成するパケット生成装置
と、前記パケット生成装置が生成したパケットを、前記
バッファに転送するパケット転送装置とを具備しても良
い。
【0150】この場合、ユーザ・プロセスが所有するデ
ータを基に送信パケットを作成し、ネットワークから、
送信する場合、ユーザ・プロセスが所有する仮想空間に
属する仮想ページに対応した物理ページに格納されたデ
ータは、前記データ転送方法を用いて、仮想ページと物
理ページのマッピングを変更することによって、ユーザ
・プロセスが所有する仮想空間から、OS等が所有する
仮想空間に転送し、パケット生成装置によって、前記デ
ータに対するヘッダ等が作成された後、作成されたヘッ
ダ等と、転送データが、ネットワーク・インターフェー
ス・ボードに存在するバッファに転送される。
ータを基に送信パケットを作成し、ネットワークから、
送信する場合、ユーザ・プロセスが所有する仮想空間に
属する仮想ページに対応した物理ページに格納されたデ
ータは、前記データ転送方法を用いて、仮想ページと物
理ページのマッピングを変更することによって、ユーザ
・プロセスが所有する仮想空間から、OS等が所有する
仮想空間に転送し、パケット生成装置によって、前記デ
ータに対するヘッダ等が作成された後、作成されたヘッ
ダ等と、転送データが、ネットワーク・インターフェー
ス・ボードに存在するバッファに転送される。
【0151】前記ネットワーク・インターフェース・ボ
ードに存在する転送誤り検出符合作成装置によって、受
信端末が転送誤りがないかどうかチェックする際に用い
られるデータが計算されて、ネットワークへ送信する送
信パケットが作られ、作られた送信パケットは、パケッ
ト転送装置によって、前記ネットワーク・インターフェ
ース・ボードから、ネットワークに送信される。
ードに存在する転送誤り検出符合作成装置によって、受
信端末が転送誤りがないかどうかチェックする際に用い
られるデータが計算されて、ネットワークへ送信する送
信パケットが作られ、作られた送信パケットは、パケッ
ト転送装置によって、前記ネットワーク・インターフェ
ース・ボードから、ネットワークに送信される。
【0152】このように、ユーザ・プロセスの所有する
仮想空間に存在するデータを基にパケットを作成し、ネ
ットワークから送信する場合、ユーザ・プロセスの所有
する仮想空間から、OS等の所有する仮想空間へ、仮想
ページと物理ページのマッピングの変更により転送し、
OS等の所有する仮想空間に属する仮想ページに対応す
る物理ページから、ネットワーク・インターフェース・
ボード上に存在するバッファへの1回のデータ転送だけ
で実行することができるので、効率がよい。
仮想空間に存在するデータを基にパケットを作成し、ネ
ットワークから送信する場合、ユーザ・プロセスの所有
する仮想空間から、OS等の所有する仮想空間へ、仮想
ページと物理ページのマッピングの変更により転送し、
OS等の所有する仮想空間に属する仮想ページに対応す
る物理ページから、ネットワーク・インターフェース・
ボード上に存在するバッファへの1回のデータ転送だけ
で実行することができるので、効率がよい。
【0153】以下、さらに本実施形態を詳しく説明す
る。
る。
【0154】本実施形態は、物理ページに対するアクセ
ス制御情報を設定することにより、実際にデータ転送を
行う代わりに、仮想ページと物理ページのマッピングを
変えることでプロセス間データ転送を行うことができる
ようにしたものである。
ス制御情報を設定することにより、実際にデータ転送を
行う代わりに、仮想ページと物理ページのマッピングを
変えることでプロセス間データ転送を行うことができる
ようにしたものである。
【0155】図12は、本発明に係るデータ転送方法の
基本原理を示す図である。
基本原理を示す図である。
【0156】プログラムは、実行時、いわゆる「プロセ
ス」と呼ばれる実行主体となり、OSは、プロセスを単
位として、プログラムの実行を管理する。以下、本実施
形態では、プログラムの実行時の管理単位のことをプロ
セスと呼ぶ。
ス」と呼ばれる実行主体となり、OSは、プロセスを単
位として、プログラムの実行を管理する。以下、本実施
形態では、プログラムの実行時の管理単位のことをプロ
セスと呼ぶ。
【0157】プロセスは、通常1つ、または1つ以上の
仮想空間201を所有する。
仮想空間201を所有する。
【0158】メモリ等の物理空間202は、物理ページ
(図中の205)と呼ばれる大きさ(例えば、4kバイ
ト)を単位として管理される。
(図中の205)と呼ばれる大きさ(例えば、4kバイ
ト)を単位として管理される。
【0159】仮想空間201は、物理ページの大きさ
(例えば、4kバイト)を単位とした仮想ページ(図中
の204)と呼ばれる大きさを単位として管理される。
(例えば、4kバイト)を単位とした仮想ページ(図中
の204)と呼ばれる大きさを単位として管理される。
【0160】仮想ページと物理ページとの対応は、ペー
ジテーブル203によって行われ、仮想ページ番号をイ
ンデックスとして、ページテーブルを参照し、1つのペ
ージテーブル・エントリ(PTE)が検索される。PT
Eには、物理テーブル番号と、書き込み可/実行可とい
ったアクセス制御情報が書き込まれる。
ジテーブル203によって行われ、仮想ページ番号をイ
ンデックスとして、ページテーブルを参照し、1つのペ
ージテーブル・エントリ(PTE)が検索される。PT
Eには、物理テーブル番号と、書き込み可/実行可とい
ったアクセス制御情報が書き込まれる。
【0161】本実施形態でプロセス間データ転送を行う
場合、転送元のプロセスが所有する仮想空間に属する仮
想ページaに対応するページテーブル・エントリに書か
れている物理ページ番号Cを消去して、転送元のプロセ
スが、物理ページCにアクセスできないようにするとと
もに、転送先のプロセスの所有する仮想空間の、転送デ
ータを格納するのに割り当てられた仮想ページbに対応
するページテーブル・エントリに、物理ページ番号Cを
書き込むことによって、転送先のプロセスが、物理ペー
ジCにアクセスできるようにする。
場合、転送元のプロセスが所有する仮想空間に属する仮
想ページaに対応するページテーブル・エントリに書か
れている物理ページ番号Cを消去して、転送元のプロセ
スが、物理ページCにアクセスできないようにするとと
もに、転送先のプロセスの所有する仮想空間の、転送デ
ータを格納するのに割り当てられた仮想ページbに対応
するページテーブル・エントリに、物理ページ番号Cを
書き込むことによって、転送先のプロセスが、物理ペー
ジCにアクセスできるようにする。
【0162】このように、データを実際に転送せず、仮
想ページと物理ページのマッピングを変更することによ
って、転送元のプロセスから転送先のプロセスへデータ
転送することができる。
想ページと物理ページのマッピングを変更することによ
って、転送元のプロセスから転送先のプロセスへデータ
転送することができる。
【0163】図13は、本発明を適用した計算機内部の
一構成例を示す図である。図13のように、プロセッサ
200内には、アクセス制御情報チェック部208、プ
ロセス実行部209、プロセス管理部210、ページテ
ーブル管理部211、データread/write部2
12、TLB213、アドレス変換部214、アクセス
制御情報管理部215が存在する。メモリ190内に
は、アクセス制御情報195、ページテーブル203、
物理ページ205、プロセス管理データ207が存在す
る。また、メモリ190内には、必要に応じて、小さな
データ記憶領域の集合206が確保される。これらの機
能は例えばOS等として実装される。
一構成例を示す図である。図13のように、プロセッサ
200内には、アクセス制御情報チェック部208、プ
ロセス実行部209、プロセス管理部210、ページテ
ーブル管理部211、データread/write部2
12、TLB213、アドレス変換部214、アクセス
制御情報管理部215が存在する。メモリ190内に
は、アクセス制御情報195、ページテーブル203、
物理ページ205、プロセス管理データ207が存在す
る。また、メモリ190内には、必要に応じて、小さな
データ記憶領域の集合206が確保される。これらの機
能は例えばOS等として実装される。
【0164】プロセス実行部は209、プログラムをプ
ロセス単位に実行する部分である。
ロセス単位に実行する部分である。
【0165】プロセス管理部210は、メモリ190中
に格納されているプロセス管理データ207を管理する
部分である。また、プロセス管理データ207に含まれ
るアクセス制御情報(ACL)を、アクセス制御情報チ
ェック部208に受け渡したりする。
に格納されているプロセス管理データ207を管理する
部分である。また、プロセス管理データ207に含まれ
るアクセス制御情報(ACL)を、アクセス制御情報チ
ェック部208に受け渡したりする。
【0166】このプロセス管理データ207は、プロセ
スに対応する管理データである。この中に、アクセス制
御情報(ACL)が書かれている。
スに対応する管理データである。この中に、アクセス制
御情報(ACL)が書かれている。
【0167】アクセス制御情報(ACL)(前述のiに
相当)は、プロセスまたは仮想空間が受け付けることが
できるデータ転送の情報が書き込まれたものである。ア
クセス制御情報(ACL)の具体例としては、例えば、
「アクセス可能なデータを所有する転送元のプロセスI
D(とread権)」、あるいは「プロセスグループ識
別番号(転送元のプロセスが複数ある場合そのプロセス
群に付けられたプロセス識別子)(とread権)」な
どが考えられる。
相当)は、プロセスまたは仮想空間が受け付けることが
できるデータ転送の情報が書き込まれたものである。ア
クセス制御情報(ACL)の具体例としては、例えば、
「アクセス可能なデータを所有する転送元のプロセスI
D(とread権)」、あるいは「プロセスグループ識
別番号(転送元のプロセスが複数ある場合そのプロセス
群に付けられたプロセス識別子)(とread権)」な
どが考えられる。
【0168】アクセス制御情報管理部215は、転送デ
ータに対応するアクセス制御情報(aclb)を管理す
る部分である。
ータに対応するアクセス制御情報(aclb)を管理す
る部分である。
【0169】アクセス制御情報(aclb)(前述のi
iに相当)195は、物理ページに格納されたデータ
(すなわち転送データ)に対応するアクセス制御情報等
が書き込まれたデータ構造である。アクセス制御情報
(aclb)の具体例としては、例えば、「その物理デ
ータを最初に取得したプロセスID(とwrite
権)」、あるいは「そのグループが属するプロセスグル
ープの識別番号(とwrite権)」などが考えられ
る。
iに相当)195は、物理ページに格納されたデータ
(すなわち転送データ)に対応するアクセス制御情報等
が書き込まれたデータ構造である。アクセス制御情報
(aclb)の具体例としては、例えば、「その物理デ
ータを最初に取得したプロセスID(とwrite
権)」、あるいは「そのグループが属するプロセスグル
ープの識別番号(とwrite権)」などが考えられ
る。
【0170】ACL及びaclbについて、さらに詳述
すると、本実施形態では、各物理ページには、アクセス
制御情報(aclb)が付いている。その情報とは、空
の物理ページを獲得し、データを書き込んだ(所有者
の)プロセスIDの情報である。さらに、そのデータに
対して、所有者以外から、どのような種類のアクセス
(readのみ、read/write両方可能など)
を許可するかといった、付加情報を含んでも良い。
すると、本実施形態では、各物理ページには、アクセス
制御情報(aclb)が付いている。その情報とは、空
の物理ページを獲得し、データを書き込んだ(所有者
の)プロセスIDの情報である。さらに、そのデータに
対して、所有者以外から、どのような種類のアクセス
(readのみ、read/write両方可能など)
を許可するかといった、付加情報を含んでも良い。
【0171】また、各プロセスにも、アクセス制御情報
(ACL)が付いている。その情報は、転送元となり得
る他のプロセスのIDである。さらに、どのような種類
のアクセスが許可できるかといった付加情報を含んでも
良い。
(ACL)が付いている。その情報は、転送元となり得
る他のプロセスのIDである。さらに、どのような種類
のアクセスが許可できるかといった付加情報を含んでも
良い。
【0172】実際に転送が生じ、プロセス間で、仮想空
間と物理ページのマッピング変更が生じると、転送先の
仮想空間を所持しているプロセスが持つアクセス制御情
報(ACL)と、物理ページのアクセス制御情報(ac
lb)を比較して、プロセスIDが一致すると、マッピ
ングが許可される。付加情報がある場合はその比較も行
われて、許可するかどうか決める。
間と物理ページのマッピング変更が生じると、転送先の
仮想空間を所持しているプロセスが持つアクセス制御情
報(ACL)と、物理ページのアクセス制御情報(ac
lb)を比較して、プロセスIDが一致すると、マッピ
ングが許可される。付加情報がある場合はその比較も行
われて、許可するかどうか決める。
【0173】許可されると、転送先のプロセスが所持す
る仮想空間に該物理ページをマッピングする。
る仮想空間に該物理ページをマッピングする。
【0174】アクセス制御情報チェック部208は、プ
ロセス管理データ207に含まれるアクセス制御情報
(ACL)と、転送データに対応するアクセス制御情報
(aclb)を比較し、転送が許可されているかどうか
判断する部分である。
ロセス管理データ207に含まれるアクセス制御情報
(ACL)と、転送データに対応するアクセス制御情報
(aclb)を比較し、転送が許可されているかどうか
判断する部分である。
【0175】ページテーブル203は、前述のように仮
想ページ番号をインデックスとして物理ページ番号等の
情報が書かれたページテーブル・エントリを格納したテ
ーブルである。
想ページ番号をインデックスとして物理ページ番号等の
情報が書かれたページテーブル・エントリを格納したテ
ーブルである。
【0176】ページテーブル管理部211は、ページテ
ーブル203を管理する部分である。このページテーブ
ル管理部211は、転送が許されると判断された場合
に、前記ページテーブルを書き換えるものである。
ーブル203を管理する部分である。このページテーブ
ル管理部211は、転送が許されると判断された場合
に、前記ページテーブルを書き換えるものである。
【0177】TLB213は、ページテーブル203の
エントリが、キャッシュされる部分である。
エントリが、キャッシュされる部分である。
【0178】データ・リード/ライト制御部212は、
プロセスやOSからのデータ領域の転送要求を受け付け
る部分である。すなわち、プロセス実行部209が、メ
モリ190中にあるデータをread/writeする
場合に、read/write処理を制御する部分であ
る。
プロセスやOSからのデータ領域の転送要求を受け付け
る部分である。すなわち、プロセス実行部209が、メ
モリ190中にあるデータをread/writeする
場合に、read/write処理を制御する部分であ
る。
【0179】アドレス変換部214は、仮想アドレスか
ら物理アドレスへの変換を行う部分である。
ら物理アドレスへの変換を行う部分である。
【0180】小さなデータ記憶領域の集合206は、O
Sの起動時、予め設定された大きさで予め設定された個
数、メモリ190に設けるものであり、パケットのヘッ
ダや、小さいパケットを格納する領域である。パケット
のヘッダを取り除いた転送データは、物理ページ205
に格納する。
Sの起動時、予め設定された大きさで予め設定された個
数、メモリ190に設けるものであり、パケットのヘッ
ダや、小さいパケットを格納する領域である。パケット
のヘッダを取り除いた転送データは、物理ページ205
に格納する。
【0181】上記構成において、あるプロセスが、自分
のプロセスが所有する仮想空間に属する仮想ページに対
応した物理ページに格納されたデータを、他のプロセス
に転送する場合、まず、転送元のプロセスが、データ転
送要求を送信する。これは、プロセス実行部209によ
って行われる。
のプロセスが所有する仮想空間に属する仮想ページに対
応した物理ページに格納されたデータを、他のプロセス
に転送する場合、まず、転送元のプロセスが、データ転
送要求を送信する。これは、プロセス実行部209によ
って行われる。
【0182】データ・リード/ライト制御部212は、
データ転送要求を受信した場合、アクセス制御情報チェ
ック部208に対し、転送データが格納された物理ペー
ジに対応するアクセス制御情報(aclb)と、転送先
のプロセスの受け付けることのできる転送データのアク
セス制御情報(acl)の比較をするように要求する。
データ転送要求を受信した場合、アクセス制御情報チェ
ック部208に対し、転送データが格納された物理ペー
ジに対応するアクセス制御情報(aclb)と、転送先
のプロセスの受け付けることのできる転送データのアク
セス制御情報(acl)の比較をするように要求する。
【0183】アクセス制御情報チェック部208は、2
つのアクセス制御情報を比較し、転送が許される場合
は、ページテーブル管理部211に対し、仮想ページと
物理ページ205のマッピングの変更を要求する。
つのアクセス制御情報を比較し、転送が許される場合
は、ページテーブル管理部211に対し、仮想ページと
物理ページ205のマッピングの変更を要求する。
【0184】マッピングの変更を要求されたページテー
ブル管理部205は、転送元のプロセスが所有する仮想
空間に属する仮想ページに対応するページテーブル・エ
ントリに書かれている物理ページ番号を消去して、転送
元のプロセスが、該物理ページにアクセスできないよう
にするとともに、転送先のプロセスの所有する仮想空間
の、転送データを格納するのに割り当てられた仮想ペー
ジに対応するページテーブル・エントリに、該物理ペー
ジ番号を書き込むことによって、転送先のプロセスが、
該物理ページにアクセスできるようにする。
ブル管理部205は、転送元のプロセスが所有する仮想
空間に属する仮想ページに対応するページテーブル・エ
ントリに書かれている物理ページ番号を消去して、転送
元のプロセスが、該物理ページにアクセスできないよう
にするとともに、転送先のプロセスの所有する仮想空間
の、転送データを格納するのに割り当てられた仮想ペー
ジに対応するページテーブル・エントリに、該物理ペー
ジ番号を書き込むことによって、転送先のプロセスが、
該物理ページにアクセスできるようにする。
【0185】また、上記の比較の結果、転送が許されな
い場合は、アクセス制御情報チェック部208あるいは
データ・リード/ライト制御部212は、転送元のプロ
セスに対し、データ転送の失敗を通知する。
い場合は、アクセス制御情報チェック部208あるいは
データ・リード/ライト制御部212は、転送元のプロ
セスに対し、データ転送の失敗を通知する。
【0186】次に、本実施形態のプロセス間のデータ転
送について、転送データの存在する物理ページが仮想ペ
ージに対応しない中間状態を経由させる例を模式的に説
明する。
送について、転送データの存在する物理ページが仮想ペ
ージに対応しない中間状態を経由させる例を模式的に説
明する。
【0187】1)初期状態 図14は、データ転送の始まりにおける仮想ページ20
4と物理ページ205のマッピングについて、図15は
その際のページテーブル203の状態について、模式的
に示した図である。
4と物理ページ205のマッピングについて、図15は
その際のページテーブル203の状態について、模式的
に示した図である。
【0188】図14において、転送データが格納された
物理ページCは、転送元のプロセスの所有する仮想空間
に属する仮想ページaにマッピングされており、また、
転送先のプロセスの、データ転送等の用途のための仮想
ページbには、物理ページがマッピングされていないこ
とが示されている。
物理ページCは、転送元のプロセスの所有する仮想空間
に属する仮想ページaにマッピングされており、また、
転送先のプロセスの、データ転送等の用途のための仮想
ページbには、物理ページがマッピングされていないこ
とが示されている。
【0189】また、図15は、この場合のページテーブ
ルの状態であり、仮想ページ番号aに対応するPTEに
は、物理ページ番号Cが書き込まれており、仮想ページ
番号bに対応するPTEには、物理ページ番号が書き込
まれていないことが示されている。
ルの状態であり、仮想ページ番号aに対応するPTEに
は、物理ページ番号Cが書き込まれており、仮想ページ
番号bに対応するPTEには、物理ページ番号が書き込
まれていないことが示されている。
【0190】初期状態において、転送元のプロセスが、
物理ページCに格納されたデータを転送先のプロセスま
たは転送先のプロセスが所有する仮想空間へ、転送をO
Sに対し要求したとする。
物理ページCに格納されたデータを転送先のプロセスま
たは転送先のプロセスが所有する仮想空間へ、転送をO
Sに対し要求したとする。
【0191】この場合、OSは、転送データが格納され
た物理ページに対応したアクセス制御情報(aclb)
と、転送先のプロセスまたは仮想空間が受け付けること
のできるデータ転送のアクセス制御情報(ACL)を比
較し、この比較の結果、データ転送が許可される場合
は、以下に説明する中間状態へと状態が遷移する。
た物理ページに対応したアクセス制御情報(aclb)
と、転送先のプロセスまたは仮想空間が受け付けること
のできるデータ転送のアクセス制御情報(ACL)を比
較し、この比較の結果、データ転送が許可される場合
は、以下に説明する中間状態へと状態が遷移する。
【0192】データ転送が許可されない場合は、OS
は、転送元のプロセスに対し、転送の失敗を報告すると
ともに、必要なエラー処理を行う。
は、転送元のプロセスに対し、転送の失敗を報告すると
ともに、必要なエラー処理を行う。
【0193】2)中間状態 図16は、データ転送の中間における仮想ページ204
と物理ページ205のマッピングについて、図17はそ
の際のテーブル203の状態について、模式的に示した
図である。
と物理ページ205のマッピングについて、図17はそ
の際のテーブル203の状態について、模式的に示した
図である。
【0194】転送先のプロセスによって、データ転送が
許可された場合は、転送元の仮想空間201に属する仮
想ページaと、転送データが格納された物理ページCと
のマッピングが解除され、中間状態に状態が遷移する。
この場合、ページテーブル203の、仮想ページ番号a
に対応するPTEに書かれた物理ページ番号が、物理ペ
ージCの番号から、クリアされることが、図17に示さ
れている。
許可された場合は、転送元の仮想空間201に属する仮
想ページaと、転送データが格納された物理ページCと
のマッピングが解除され、中間状態に状態が遷移する。
この場合、ページテーブル203の、仮想ページ番号a
に対応するPTEに書かれた物理ページ番号が、物理ペ
ージCの番号から、クリアされることが、図17に示さ
れている。
【0195】転送データが格納された物理ページが、転
送元のプロセスに属する仮想ページにも、転送先のプロ
セスに属する仮想ページにも、対応しない状態を経由す
ることによって、転送元のプロセスや、転送先のプロセ
スから、きわどいタイミングでアクセスされる危険性を
排除することができる。
送元のプロセスに属する仮想ページにも、転送先のプロ
セスに属する仮想ページにも、対応しない状態を経由す
ることによって、転送元のプロセスや、転送先のプロセ
スから、きわどいタイミングでアクセスされる危険性を
排除することができる。
【0196】また、この中間状態を設けることによっ
て、転送先のプロセスの所有する仮想空間のうち転送デ
ータに割り当てられた仮想ページを、転送先のプロセス
が使用していて、物理ページを仮想ページにマッピング
できない場合にも対処することができる。
て、転送先のプロセスの所有する仮想空間のうち転送デ
ータに割り当てられた仮想ページを、転送先のプロセス
が使用していて、物理ページを仮想ページにマッピング
できない場合にも対処することができる。
【0197】3)最終状態 図18は、データ転送の終わりにおける仮想ページ20
4と物理ページ205のマッピングについて、図19は
その際のページテーブル203の状態について、模式的
に示した図である。
4と物理ページ205のマッピングについて、図19は
その際のページテーブル203の状態について、模式的
に示した図である。
【0198】転送先のプロセスによる、read/wr
iteシステムコールの実行といった明示的な転送デー
タが格納された物理ページと、転送データのために設け
られた仮想ページのマッピング要求によって、仮想ペー
ジに物理ページがマッピングされて、中間状態から最終
状態へと状態が遷移する。この場合、ページテーブル2
03の、仮想ページ番号bに対応するPTEに書かれた
物理ページ番号が、クリアされた状態等から、転送デー
タが格納された物理ページ番号Cへと書き換えられるこ
とが、図19に示されている。
iteシステムコールの実行といった明示的な転送デー
タが格納された物理ページと、転送データのために設け
られた仮想ページのマッピング要求によって、仮想ペー
ジに物理ページがマッピングされて、中間状態から最終
状態へと状態が遷移する。この場合、ページテーブル2
03の、仮想ページ番号bに対応するPTEに書かれた
物理ページ番号が、クリアされた状態等から、転送デー
タが格納された物理ページ番号Cへと書き換えられるこ
とが、図19に示されている。
【0199】以上の説明では、転送データが格納された
物理ページが1ページの場合について説明したが、物理
ページが複数の場合でも、同様である。
物理ページが1ページの場合について説明したが、物理
ページが複数の場合でも、同様である。
【0200】転送データは、物理ページの先頭から始ま
ることが望ましいが、物理ページの先頭から始まらなく
て途中から始まってもよい。この場合、物理ページの先
頭から転送データの始まりまでの領域のデータは、仮想
ページと物理ページのマッピングの変更に注意しなけれ
ばならない。また、転送データの終りについても、ペー
ジの最後である必要はなく、ページの途中で終ってもよ
い。
ることが望ましいが、物理ページの先頭から始まらなく
て途中から始まってもよい。この場合、物理ページの先
頭から転送データの始まりまでの領域のデータは、仮想
ページと物理ページのマッピングの変更に注意しなけれ
ばならない。また、転送データの終りについても、ペー
ジの最後である必要はなく、ページの途中で終ってもよ
い。
【0201】なお、上記の説明では、初期状態と中間状
態の間に、アクセス制御情報の比較等が行われる例を記
述したが、まず、中間状態に移って、それからアクセス
制御情報の比較等を行ってもよい。また、データ転送が
許可されていた場合、中間状態に遷移するとしたが、中
間状態に遷移せず、直ちに最終状態に状態を遷移させて
もよい。
態の間に、アクセス制御情報の比較等が行われる例を記
述したが、まず、中間状態に移って、それからアクセス
制御情報の比較等を行ってもよい。また、データ転送が
許可されていた場合、中間状態に遷移するとしたが、中
間状態に遷移せず、直ちに最終状態に状態を遷移させて
もよい。
【0202】次に、上記の中間状態の管理方法の一例に
ついて説明する。
ついて説明する。
【0203】図20は、中間状態を管理可能なプロセス
構造体の一例を示す図である。図20では、プロセス構
造体には、プロセスまたはプロセスが所有する仮想空間
が受け付けることのできる、データ転送のアクセス制御
情報が書かれたACL218と、プロセスが所有する仮
想空間に属する仮想ページにマップされた、物理ページ
に対応するmsgbをキュー構造体で管理する管理キュ
ー219と、プロセスまたはプロセスが所有する仮想空
間が受け付けた、データ転送に対応するmsgbをキュ
ー構造体で管理する一種のイベントキューである入力キ
ュー220が含まれることを示している。なお、このプ
ロセス構造体は、図13のプロセス管理データ207内
に配置する。
構造体の一例を示す図である。図20では、プロセス構
造体には、プロセスまたはプロセスが所有する仮想空間
が受け付けることのできる、データ転送のアクセス制御
情報が書かれたACL218と、プロセスが所有する仮
想空間に属する仮想ページにマップされた、物理ページ
に対応するmsgbをキュー構造体で管理する管理キュ
ー219と、プロセスまたはプロセスが所有する仮想空
間が受け付けた、データ転送に対応するmsgbをキュ
ー構造体で管理する一種のイベントキューである入力キ
ュー220が含まれることを示している。なお、このプ
ロセス構造体は、図13のプロセス管理データ207内
に配置する。
【0204】管理キュー219と入力キュー220は、
図21のように、msgb221を、ダブルリンクで連
結したリンクド・リストで構成しても良いし、msgb
221を、シングルリンクで連結して構成しても良い。
図21のように、msgb221を、ダブルリンクで連
結したリンクド・リストで構成しても良いし、msgb
221を、シングルリンクで連結して構成しても良い。
【0205】ダブルリンクでキューを構成する利点は、
キューの先頭以外にキューの途中からキューの構成要素
を抜き取ることができることであり、キューに高優先度
の構成要素が入力されていた場合、キューの先頭からで
はなくキューの途中からキューの構成要素を取り出せる
といった利点がある。
キューの先頭以外にキューの途中からキューの構成要素
を抜き取ることができることであり、キューに高優先度
の構成要素が入力されていた場合、キューの先頭からで
はなくキューの途中からキューの構成要素を取り出せる
といった利点がある。
【0206】また、転送するデータが複数の物理ページ
にまたがって格納されている場合は、物理ページごとに
datbとmsgbが対応するが、前述したようなデー
タ転送に対応するmsgbを入力キューまたは管理キュ
ーに入力する場合、該データ転送に対応する全てのms
gbをキューに入力しても良いし、該データ転送に対応
するmsgbのうち先頭のmsgbだけキューに入力す
るようにしてもよい。
にまたがって格納されている場合は、物理ページごとに
datbとmsgbが対応するが、前述したようなデー
タ転送に対応するmsgbを入力キューまたは管理キュ
ーに入力する場合、該データ転送に対応する全てのms
gbをキューに入力しても良いし、該データ転送に対応
するmsgbのうち先頭のmsgbだけキューに入力す
るようにしてもよい。
【0207】また、パケットを管理する構造体として、
msgbとdatbに分割しているが、1つの構造体
で、パケットを管理しても良い。
msgbとdatbに分割しているが、1つの構造体
で、パケットを管理しても良い。
【0208】なお、本実施形態において2つの構造体で
パケットを管理した理由は、パケットのヘッダ等の同じ
データを容易に2つのパケットで共有できるためであ
る。この場合、2つのmsgbが1つのdatbをポイ
ントすることになる。
パケットを管理した理由は、パケットのヘッダ等の同じ
データを容易に2つのパケットで共有できるためであ
る。この場合、2つのmsgbが1つのdatbをポイ
ントすることになる。
【0209】また、2つのパケットによって共有された
パケットのある部分のデータについて、一方のパケット
に対しデータを書き込む場合、共有を解除し、その部分
のデータを他の領域にコピーし、コピーし終わったデー
タに対し、書き込みを行うといった、COW(コピー・
オン・ライト)を実現することもできる。
パケットのある部分のデータについて、一方のパケット
に対しデータを書き込む場合、共有を解除し、その部分
のデータを他の領域にコピーし、コピーし終わったデー
タに対し、書き込みを行うといった、COW(コピー・
オン・ライト)を実現することもできる。
【0210】次に、図14のデータ転送の初期状態から
図16の中間状態へデータ転送の状態が遷移する場合に
ついて、プロセス構造体が図20のような場合を例にと
って説明する。この場合の動作手順を図22のフローチ
ャートに示す。
図16の中間状態へデータ転送の状態が遷移する場合に
ついて、プロセス構造体が図20のような場合を例にと
って説明する。この場合の動作手順を図22のフローチ
ャートに示す。
【0211】まず、データ転送が要求された場合、OS
等は、転送データが格納された物理ページに対応するm
sgb221を、転送先のプロセスの管理キュー19か
ら抜き取る(ステップS202)。次に、OS等は、m
sgb221に対応するaclbと、転送先のプロセス
の受け付けることのできるアクセス制御情報が書かれた
ACL218とを比較する(ステップS203)。そし
て、OS等は、転送が許可されている場合は(ステップ
S204)、msgb221を転送先のプロセスの入力
キューに入力するが(ステップS205)、転送が許可
されていない場合は(ステップS204)、転送元のプ
ロセスに対し、エラーを報告するとともに、割り当てら
れたエラー処理を実行する(ステップS207)。
等は、転送データが格納された物理ページに対応するm
sgb221を、転送先のプロセスの管理キュー19か
ら抜き取る(ステップS202)。次に、OS等は、m
sgb221に対応するaclbと、転送先のプロセス
の受け付けることのできるアクセス制御情報が書かれた
ACL218とを比較する(ステップS203)。そし
て、OS等は、転送が許可されている場合は(ステップ
S204)、msgb221を転送先のプロセスの入力
キューに入力するが(ステップS205)、転送が許可
されていない場合は(ステップS204)、転送元のプ
ロセスに対し、エラーを報告するとともに、割り当てら
れたエラー処理を実行する(ステップS207)。
【0212】この例の場合、仮想ページと物理ページの
マッピングの変更は、転送元の管理キューからmsgb
を抜き取る際に行ってもよい。
マッピングの変更は、転送元の管理キューからmsgb
を抜き取る際に行ってもよい。
【0213】次に、図16のデータ転送の中間状態から
図18の最終状態へデータ転送の状態が遷移する場合に
ついて、プロセス構造体が図20のような場合を例にと
って説明する。この場合の動作手順を図23のフローチ
ャートに示す。
図18の最終状態へデータ転送の状態が遷移する場合に
ついて、プロセス構造体が図20のような場合を例にと
って説明する。この場合の動作手順を図23のフローチ
ャートに示す。
【0214】転送先のプロセスが、データ転送に割り当
てられた仮想ページに対し、readシステムコールを
実行したと仮定する。
てられた仮想ページに対し、readシステムコールを
実行したと仮定する。
【0215】また、readシステムコールが、データ
転送に割り当てられた仮想ページに対して実行された場
合、実行時点で、該仮想ページに物理ページがマップさ
れていた場合は、そのマップを解除して、新たに転送先
のプロセスが受け取った転送データが格納された物理ペ
ージを該仮想ページにマップすると仮定する。
転送に割り当てられた仮想ページに対して実行された場
合、実行時点で、該仮想ページに物理ページがマップさ
れていた場合は、そのマップを解除して、新たに転送先
のプロセスが受け取った転送データが格納された物理ペ
ージを該仮想ページにマップすると仮定する。
【0216】この場合、readシステムコールの実行
を要求されたOS等は、まず、転送先のプロセスの入力
キュー220に、該当する仮想ページのデータ転送に対
応するmsgb221が、入力されていないかどうか検
査する。
を要求されたOS等は、まず、転送先のプロセスの入力
キュー220に、該当する仮想ページのデータ転送に対
応するmsgb221が、入力されていないかどうか検
査する。
【0217】該当するmsgb221が入力されていな
かった場合(ステップS212)、該プロセスは、該当
するmsgbが入力されるまで、または、OS等によっ
て起こされるまで、休眠する(ステップS213,S2
14)。
かった場合(ステップS212)、該プロセスは、該当
するmsgbが入力されるまで、または、OS等によっ
て起こされるまで、休眠する(ステップS213,S2
14)。
【0218】一方、該当するmsgb221が入力され
ていた場合(ステップS212)、該当するmsgb2
21のうち、データ転送に割り当てられた仮想ページに
マップできる個数のmsgb221を、入力キュー22
0から取り出し(ステップS215)、管理キュー21
9に入力する(ステップS216)。
ていた場合(ステップS212)、該当するmsgb2
21のうち、データ転送に割り当てられた仮想ページに
マップできる個数のmsgb221を、入力キュー22
0から取り出し(ステップS215)、管理キュー21
9に入力する(ステップS216)。
【0219】次に、管理キュー219に入力されたms
gb221のポインタをたどって、そのmsgb221
に対応する物理ページを得て(ステップS217)、こ
の物理ページをデータ転送に割り当てられた仮想ページ
にマッピングするために、該仮想ページに対応するPT
Eに、該物理ページ番号を書き込み(ステップS21
8)、readシステムコールの実行が終了する。
gb221のポインタをたどって、そのmsgb221
に対応する物理ページを得て(ステップS217)、こ
の物理ページをデータ転送に割り当てられた仮想ページ
にマッピングするために、該仮想ページに対応するPT
Eに、該物理ページ番号を書き込み(ステップS21
8)、readシステムコールの実行が終了する。
【0220】以下では、端末がネットワークから受信し
たパケットを、本発明のデータ転送方法を用いて効率よ
く、端末上の宛先のプロセスまたはプロセスが所有する
仮想空間に転送する例について、図24および図25を
参照しながら説明する。
たパケットを、本発明のデータ転送方法を用いて効率よ
く、端末上の宛先のプロセスまたはプロセスが所有する
仮想空間に転送する例について、図24および図25を
参照しながら説明する。
【0221】本実施形態では、データ転送のために仮想
ページと物理ページのマッピングを変更するが、受信パ
ケットを先頭から物理ページに格納すると、パケットの
先頭にはヘッダがあるので、受信パケットに含まれる転
送データは、仮想ページの先頭から始まらず、仮想ペー
ジの途中から始まることになる。
ページと物理ページのマッピングを変更するが、受信パ
ケットを先頭から物理ページに格納すると、パケットの
先頭にはヘッダがあるので、受信パケットに含まれる転
送データは、仮想ページの先頭から始まらず、仮想ペー
ジの途中から始まることになる。
【0222】そこで、以下のような方法を取ることによ
り、物理ページの先頭と転送データの先頭の位置を合わ
せることができる。
り、物理ページの先頭と転送データの先頭の位置を合わ
せることができる。
【0223】まず、受信パケット224等を格納するた
めの実メモリを、ヘッダ等の小さいデータを格納するた
めの小さなデータ記憶領域206と、転送データのよう
な大きなサイズのデータを格納するための物理ページ2
05の単位にて管理する。なお、小さなデータ記憶領域
206と、物理ページ205の領域の割り当ては、シス
テムの起動時に行ってもよいし、システムの稼働時に動
的に行ってもよいし、両方を併用してもよい。
めの実メモリを、ヘッダ等の小さいデータを格納するた
めの小さなデータ記憶領域206と、転送データのよう
な大きなサイズのデータを格納するための物理ページ2
05の単位にて管理する。なお、小さなデータ記憶領域
206と、物理ページ205の領域の割り当ては、シス
テムの起動時に行ってもよいし、システムの稼働時に動
的に行ってもよいし、両方を併用してもよい。
【0224】ネットワークからパケットが転送されてき
て、ネットワーク・インターフェース・ボード上のバッ
ファにパケットが受信された場合、OS等は、パケット
の先頭から予め定められた大きさ(nバイトとする)の
データを、実メモリ上の小さな記憶領域206に書き込
む(ステップS222)。ここで、パケットのヘッダに
含まれるパケットのヘッダ長等の情報が、パケットの先
頭からnバイトの領域に含まれるようにnを定めるとす
る。
て、ネットワーク・インターフェース・ボード上のバッ
ファにパケットが受信された場合、OS等は、パケット
の先頭から予め定められた大きさ(nバイトとする)の
データを、実メモリ上の小さな記憶領域206に書き込
む(ステップS222)。ここで、パケットのヘッダに
含まれるパケットのヘッダ長等の情報が、パケットの先
頭からnバイトの領域に含まれるようにnを定めるとす
る。
【0225】次に、OS内のネットワーク・モジュール
は、小さな記憶領域206に書き込まれたヘッダ長情報
を基に、実際のヘッダ長を計算する(ステップS22
3)。ヘッダ長の計算結果をmバイトとする。
は、小さな記憶領域206に書き込まれたヘッダ長情報
を基に、実際のヘッダ長を計算する(ステップS22
3)。ヘッダ長の計算結果をmバイトとする。
【0226】mがnより大きい場合は(ステップS22
4)、ネットワーク・インターフェース・ボード上のバ
ッファから実メモリへ読み込んでいないデータがまだ残
っている場合であり、この場合は、(n+1)バイト目
からmバイト目までを、該小さなデータ記憶領域206
もしくは他の小さなデータ記憶領域206または物理ペ
ージ205に転送する(ステップS225)。
4)、ネットワーク・インターフェース・ボード上のバ
ッファから実メモリへ読み込んでいないデータがまだ残
っている場合であり、この場合は、(n+1)バイト目
からmバイト目までを、該小さなデータ記憶領域206
もしくは他の小さなデータ記憶領域206または物理ペ
ージ205に転送する(ステップS225)。
【0227】最後に、受信パケットのうち転送データが
始まる(m+1)バイト目が物理ページの先頭に合うよ
うに、バッファから実メモリにデータを転送する(ステ
ップS226)。
始まる(m+1)バイト目が物理ページの先頭に合うよ
うに、バッファから実メモリにデータを転送する(ステ
ップS226)。
【0228】受信パケットに含まれる転送データを格納
するのに、一つの物理ページで納まらない場合は、複数
の物理ページに分割して格納する(ステップS227,
S228)。
するのに、一つの物理ページで納まらない場合は、複数
の物理ページに分割して格納する(ステップS227,
S228)。
【0229】このように、受信パケットに含まれる転送
データの先頭が物理ページの先頭に合うように物理ペー
ジに格納されるので、物理ページを宛先のプロセスの所
有する仮想空間に属する仮想ページにマッピングする場
合、仮想ページに先頭と転送データの先頭が合うように
することができる。
データの先頭が物理ページの先頭に合うように物理ペー
ジに格納されるので、物理ページを宛先のプロセスの所
有する仮想空間に属する仮想ページにマッピングする場
合、仮想ページに先頭と転送データの先頭が合うように
することができる。
【0230】また、物理ページの先頭と転送データの先
頭の位置を合わせることができるので、仮想ページと物
理ページのマッピングを変更し、宛先のプロセスが仮想
ページを通して転送データにアクセスする場合に、仮想
ページの先頭から転送データをアクセスすることができ
る。
頭の位置を合わせることができるので、仮想ページと物
理ページのマッピングを変更し、宛先のプロセスが仮想
ページを通して転送データにアクセスする場合に、仮想
ページの先頭から転送データをアクセスすることができ
る。
【0231】次に、本発明によるデータ転送方法を用い
ると、ユーザ・プロセスが所有するデータからどのよう
にパケットが作成されネットワークへ送信されていくか
について説明する。
ると、ユーザ・プロセスが所有するデータからどのよう
にパケットが作成されネットワークへ送信されていくか
について説明する。
【0232】まず、ユーザ・プロセス等がwriteシ
ステムコール等を用いてデータの送信をOS等に対して
要求すると、図20〜図23で説明した方法を用いて、
該データに対応するmsgbがユーザ・プロセス等の管
理キュー219からOS等の入力キュー220を経て管
理キュー219に入力されるとともに、該データに対応
する物理ページのマッピングがユーザ・プロセス等の所
有する仮想空間に属する仮想ページからOS等の所有す
る仮想空間に属する仮想ページへと変更される。
ステムコール等を用いてデータの送信をOS等に対して
要求すると、図20〜図23で説明した方法を用いて、
該データに対応するmsgbがユーザ・プロセス等の管
理キュー219からOS等の入力キュー220を経て管
理キュー219に入力されるとともに、該データに対応
する物理ページのマッピングがユーザ・プロセス等の所
有する仮想空間に属する仮想ページからOS等の所有す
る仮想空間に属する仮想ページへと変更される。
【0233】次に、OS等の内部にあるネットワーク・
モジュールは、該仮想ページをアクセスすることによっ
て該データにアクセスし、該データに対するヘッダ等の
情報を作成し、作成したヘッダ等の情報とともに、該デ
ータをネットワーク・インターフェース・ボード上に存
在するバッファに転送する。
モジュールは、該仮想ページをアクセスすることによっ
て該データにアクセスし、該データに対するヘッダ等の
情報を作成し、作成したヘッダ等の情報とともに、該デ
ータをネットワーク・インターフェース・ボード上に存
在するバッファに転送する。
【0234】そして、ネットワーク・インターフェース
は、バッファに転送されたヘッダとデータに対し、受信
端末が転送誤りの検出に用いるデータを計算し、以上の
3つの部分のデータからパケットを作成し、ネットワー
クに送信する。
は、バッファに転送されたヘッダとデータに対し、受信
端末が転送誤りの検出に用いるデータを計算し、以上の
3つの部分のデータからパケットを作成し、ネットワー
クに送信する。
【0235】以上のように、ユーザ・プロセスが所有す
るデータを基に送信パケットを作成しネットワークに送
信するためには、転送データが格納されている物理ペー
ジとユーザが所有する仮想空間に含まれる仮想ページと
のマッピングを、OS等が所有する仮想空間に所属する
仮想ページへのマッピングに変更し、OS等が、転送デ
ータに対するヘッダを作成し、作成したヘッダと転送デ
ータをネットワーク・インターフェース・ボードに転送
すればよいので、送信側の処理に必要なデータ転送は、
1回の仮想ページと物理ページのマッピングの変更と、
実際に行う1回のデータ転送でよいので、効率よく行う
ことができる。
るデータを基に送信パケットを作成しネットワークに送
信するためには、転送データが格納されている物理ペー
ジとユーザが所有する仮想空間に含まれる仮想ページと
のマッピングを、OS等が所有する仮想空間に所属する
仮想ページへのマッピングに変更し、OS等が、転送デ
ータに対するヘッダを作成し、作成したヘッダと転送デ
ータをネットワーク・インターフェース・ボードに転送
すればよいので、送信側の処理に必要なデータ転送は、
1回の仮想ページと物理ページのマッピングの変更と、
実際に行う1回のデータ転送でよいので、効率よく行う
ことができる。
【0236】なお、上記において、受信端末が転送誤り
の検出に用いるデータの計算は、ネットワーク・インタ
ーフェース・ボードで行われるとしたが、OS等の内部
のネットワーク・モジュールで上記計算が行われる(す
なわちプロセッサのソフトウェアによって行われる)場
合は、プロセッサにデータを転送するために、さらに1
回のデータ転送が必要となる。
の検出に用いるデータの計算は、ネットワーク・インタ
ーフェース・ボードで行われるとしたが、OS等の内部
のネットワーク・モジュールで上記計算が行われる(す
なわちプロセッサのソフトウェアによって行われる)場
合は、プロセッサにデータを転送するために、さらに1
回のデータ転送が必要となる。
【0237】次に、本発明によるデータ転送方法によっ
て、ネットワークから転送されてきた受信パケットがど
のように受信端末上の宛先のプロセスに転送されていく
かについて説明する。
て、ネットワークから転送されてきた受信パケットがど
のように受信端末上の宛先のプロセスに転送されていく
かについて説明する。
【0238】まず、ネットワークから転送されてきたパ
ケットは、ネットワーク・インターフェース・ボード上
のバッファに格納され、ネットワーク・インターフェー
ス・ボードに存在する転送誤り検出装置によって、転送
誤りがないかどうかのチェックが行われ、転送誤りが検
出されなかったパケット等は、図24、図25で説明し
た方法を用いて、バッファからOS等の転送データ等を
格納するのに割り当てられた仮想ページ等に対する物理
ページ等に転送される。
ケットは、ネットワーク・インターフェース・ボード上
のバッファに格納され、ネットワーク・インターフェー
ス・ボードに存在する転送誤り検出装置によって、転送
誤りがないかどうかのチェックが行われ、転送誤りが検
出されなかったパケット等は、図24、図25で説明し
た方法を用いて、バッファからOS等の転送データ等を
格納するのに割り当てられた仮想ページ等に対する物理
ページ等に転送される。
【0239】物理ページ等に転送された受信パケットに
対し、OS等の内部のネットワーク・モジュールによっ
て必要なプロトコル処理が行われた後、図20〜図23
で説明した方法を用いて、物理ページ等に対応するms
gbがOS等の管理キューから宛先のプロセスの入力キ
ューを経て管理キューに入力されるとともに、該物理ペ
ージのマッピングがOS等の所有する仮想空間に属する
仮想ページから該プロセス等の所有する仮想空間に属す
る仮想ページへと変更される。
対し、OS等の内部のネットワーク・モジュールによっ
て必要なプロトコル処理が行われた後、図20〜図23
で説明した方法を用いて、物理ページ等に対応するms
gbがOS等の管理キューから宛先のプロセスの入力キ
ューを経て管理キューに入力されるとともに、該物理ペ
ージのマッピングがOS等の所有する仮想空間に属する
仮想ページから該プロセス等の所有する仮想空間に属す
る仮想ページへと変更される。
【0240】以上のように、ネットワークから転送され
てきた受信パケットから転送データを抽出し宛先のプロ
セスの所有する仮想空間に転送するためには、受信パケ
ットが格納されたネットワーク・インターフェース・ボ
ードからOS等が所有する仮想空間に存在する仮想ペー
ジに対応する物理ページに転送データを転送し、該物理
ページが宛先のプロセスの所有する仮想空間に含まれる
仮想ページにマッピングされるように変更すればよいの
で、受信側の処理に必要なデータ転送は、1回のデータ
転送と、実際に行う1回の仮想ページと物理ページのマ
ッピングの変更でよいので、効率よく行うことができ
る。
てきた受信パケットから転送データを抽出し宛先のプロ
セスの所有する仮想空間に転送するためには、受信パケ
ットが格納されたネットワーク・インターフェース・ボ
ードからOS等が所有する仮想空間に存在する仮想ペー
ジに対応する物理ページに転送データを転送し、該物理
ページが宛先のプロセスの所有する仮想空間に含まれる
仮想ページにマッピングされるように変更すればよいの
で、受信側の処理に必要なデータ転送は、1回のデータ
転送と、実際に行う1回の仮想ページと物理ページのマ
ッピングの変更でよいので、効率よく行うことができ
る。
【0241】なお、上記において、転送誤りの検出は、
ネットワーク・インターフェース・ボードで行われると
したが、OS等の内部のネットワーク・モジュールで
(すなわちプロセッサのソフトウェアによって)検出を
行ってもよい。この場合、プロセッサにデータを転送す
るために、さらに1回のデータ転送が必要となる。
ネットワーク・インターフェース・ボードで行われると
したが、OS等の内部のネットワーク・モジュールで
(すなわちプロセッサのソフトウェアによって)検出を
行ってもよい。この場合、プロセッサにデータを転送す
るために、さらに1回のデータ転送が必要となる。
【0242】また、ボード上で行う転送誤りの検出等の
能力が、OS等の内部の転送誤りの検出等の能力より高
い場合は、ボード上で行った転送誤りの検出情報等を用
いて、OS等の内部で行う転送誤りの検出等の処理を軽
減してもよい。
能力が、OS等の内部の転送誤りの検出等の能力より高
い場合は、ボード上で行った転送誤りの検出情報等を用
いて、OS等の内部で行う転送誤りの検出等の処理を軽
減してもよい。
【0243】この場合、aclb内のデータを用いて、
該データをOS等の内部のネットワーク・モジュールに
転送することも考えられる。
該データをOS等の内部のネットワーク・モジュールに
転送することも考えられる。
【0244】この場合、aclb内のデータに、ボード
上で行った誤り検出/訂正等のデータを書いておくこと
によって、OS内で行う誤り検出/訂正等の処理を軽減
することもできる。
上で行った誤り検出/訂正等のデータを書いておくこと
によって、OS内で行う誤り検出/訂正等の処理を軽減
することもできる。
【0245】例えば、ATMにおいて、ボード上でCR
Cチェックを行ったパケットに対しては、aclb内に
CRCチェックを行った旨の情報を書き込んでおき、O
Sはaclb内に書かれた情報によって、上位レイヤで
行うチェックサム等のエラー検出処理を省略し、上位レ
イヤの誤り検出処理としては、パケット長のチェックの
み行っても良い。
Cチェックを行ったパケットに対しては、aclb内に
CRCチェックを行った旨の情報を書き込んでおき、O
Sはaclb内に書かれた情報によって、上位レイヤで
行うチェックサム等のエラー検出処理を省略し、上位レ
イヤの誤り検出処理としては、パケット長のチェックの
み行っても良い。
【0246】本発明は、上述した実施形態に限定される
ものではなく、その技術的範囲において、種々変形して
実施することができる。
ものではなく、その技術的範囲において、種々変形して
実施することができる。
【0247】
【発明の効果】本発明に係るデータ転送方法では、デバ
イス・インタフェースからユーザ空間、フレームバッフ
ァまたはデバイス・インタフェースへ、またはその逆
に、データの転送を行なうにあたって、転送元(あるい
は転送元および転送先)のデータブロックに対するアク
セス許可内容を示すアクセス制御情報に基づき転送制御
するようにしたので、プログラム実行主体がデータブロ
ックに直接アクセスすることができ、データを一旦カー
ネル空間(さらにはカーネル空間およびユーザ空間)に
転送することなく、効率良いデータ転送を行なうことが
できる。
イス・インタフェースからユーザ空間、フレームバッフ
ァまたはデバイス・インタフェースへ、またはその逆
に、データの転送を行なうにあたって、転送元(あるい
は転送元および転送先)のデータブロックに対するアク
セス許可内容を示すアクセス制御情報に基づき転送制御
するようにしたので、プログラム実行主体がデータブロ
ックに直接アクセスすることができ、データを一旦カー
ネル空間(さらにはカーネル空間およびユーザ空間)に
転送することなく、効率良いデータ転送を行なうことが
できる。
【0248】したがって、計算機を介したデバイス間に
わたるデータの受け渡しを行なうような場合、従来より
必要なデータ転送回数が少なくてすみ、効率の良いデー
タ転送を行なうことができる。
わたるデータの受け渡しを行なうような場合、従来より
必要なデータ転送回数が少なくてすみ、効率の良いデー
タ転送を行なうことができる。
【0249】また、アクセス制御情報を適宜設定変更す
ることにより、データブロックをアクセスするプログラ
ム実行主体の相互排除を効率良く実行することができ
る。
ることにより、データブロックをアクセスするプログラ
ム実行主体の相互排除を効率良く実行することができ
る。
【0250】また、本発明によれば、プロセス間でデー
タを転送する場合、実際にデータを転送する必要はな
く、転送するデータが格納されている物理ページと、プ
ロセスが所有する仮想空間に含まれる仮想ページとのマ
ッピングを変えるだけでよいので、効率的にデータ転送
を行うことができる。
タを転送する場合、実際にデータを転送する必要はな
く、転送するデータが格納されている物理ページと、プ
ロセスが所有する仮想空間に含まれる仮想ページとのマ
ッピングを変えるだけでよいので、効率的にデータ転送
を行うことができる。
【図1】本発明の一実施例に係るメモリ管理装置の基本
構成を示す図
構成を示す図
【図2】プログラム実行主体がメモリ管理装置の管理す
るデータブロックにアクセスする際における動作の流れ
を示すフローチャート
るデータブロックにアクセスする際における動作の流れ
を示すフローチャート
【図3】処理関数と制御情報とデータブロックの配置の
一例を示す図
一例を示す図
【図4】処理関数と制御情報とデータブロックの配置の
他の例を示す図
他の例を示す図
【図5】処理関数と制御情報とデータブロックの配置の
さらに他の例を示す図
さらに他の例を示す図
【図6】受信側のデータ転送の一例について説明するた
めの図
めの図
【図7】送信側のデータ転送の一例について説明するた
めの図
めの図
【図8】受信側のデータ転送の他の例について説明する
ための図
ための図
【図9】送信側のデータ転送の他の例について説明する
ための図
ための図
【図10】本発明の一実施例に係るストリーム・バッフ
ァのデータ構造を示す図
ァのデータ構造を示す図
【図11】コントロールブロックのキューイングによる
管理方法を説明するための図
管理方法を説明するための図
【図12】本実施形態によるデータ転送の基本原理を示
す模式図
す模式図
【図13】本実施形態の計算機内部構成例を示す図
【図14】本実施形態における仮想ページと物理ページ
のマッピングを示す図
のマッピングを示す図
【図15】本実施形態におけるページテーブルを示す図
【図16】本実施形態における仮想ページと物理ページ
のマッピングを示す図
のマッピングを示す図
【図17】本実施形態におけるページテーブルを示す図
【図18】本実施形態における仮想ページと物理ページ
のマッピングを示す図
のマッピングを示す図
【図19】本実施形態におけるページテーブルを示す図
【図20】プロセス間データ転送で中間状態を取る場合
のデータ管理方法の一例について説明するための図
のデータ管理方法の一例について説明するための図
【図21】プロセス構造体のキューの一例を示す図
【図22】msgb転送時の動作手順を示すフローチャ
ート
ート
【図23】read時の動作手順を示すフローチャート
【図24】受信パケットの格納について説明するための
図
図
【図25】転送データを物理ページの先頭から書き込む
た手順を示すフローチャート
た手順を示すフローチャート
【図26】従来のデータ転送について説明するための図
【図27】従来のストリーム・バッファのデータ構造に
ついて説明するための図
ついて説明するための図
【図28】従来の仮想ページと物理ページのマッピング
を示す図
を示す図
【図29】従来のページテーブルの一例を示す図
【図30】仮想アドレスから物理アドレスへの変換機構
を示す図
を示す図
3…プログラム実行主体 4…処理関数 5…アクセスチェック部 6…アクセス部 7…制御部 8…制御情報記憶部 9…制御情報 10…アクセス制御情報 11…データ記憶部 12…データブロック 13…ネットワーク・インターフェース 14…ネットワーク・インターフェース内のバッファ 15…主記憶 16…カーネル空間内のデータバッファ 17…ユーザ空間内のデータバッファ 18…フレームバッファ 19…ディスプレイ 20…データバス 21…コントロールブロックの管理ブロック 22…メッセージ・コントロールブロック 23…データ・コントロールブロック 24…データ記憶領域 46…ハードディスク 47…ハードディスク・コントローラ 48…ハードディスク・コントローラ内のバッファ 190…メモリ 195…アクセス制御情報 200…プロセッサ 201…仮想空間 202…物理空間 203…ページテーブル 204…仮想ページ 205…物理ページ 206…小さなデータ記憶領域の集合 207…プロセス管理データ 208…アクセス制御情報チェック部 209…プロセス実行部 210…プロセス管理部 211…ページテーブル管理部 212…データread/write部 213…TLB 214…アドレス変換部 215…アクセス制御情報管理部 218…ACL 219…管理キュー 220…入力キュー 221…msgb 222…datb 223…aclb 224…受信パケット
Claims (8)
- 【請求項1】デバイス・インタフェースからユーザ空
間、フレームバッファまたはデバイス・インタフェース
へ直接データの転送を行なうにあたって、転送元となる
デバイス・インタフェースのデータブロックに対するア
クセス許可内容を示すカーネル空間に存在するアクセス
制御情報を参照し、この参照結果に基づいて前記データ
の転送を制御することを特徴とするデータ転送方法。 - 【請求項2】デバイス・インタフェースからユーザ空
間、フレームバッファまたはデバイス・インタフェース
へ直接データの転送を行なうにあたって、転送元となる
デバイス・インタフェースのデータブロックに対するア
クセス許可内容を示すカーネル空間に存在する第1のア
クセス制御情報と、転送先となるユーザ空間、フレーム
バッファまたはデバイス・インタフェースのデータブロ
ックに対するアクセス許可内容を示すカーネル空間に存
在する第2のアクセス制御情報とを参照し、これらの参
照結果に基づいて前記データの転送を制御することを特
徴とするデータ転送方法。 - 【請求項3】ユーザ空間、フレームバッファまたはデバ
イス・インタフェースからデバイス・インタフェースへ
直接データの転送を行なうにあたって、転送元となるユ
ーザ空間、フレームバッファまたはデバイス・インタフ
ェースのデータブロックに対するアクセス許可内容を示
すカーネル空間に存在する第1のアクセス制御情報と、
転送先となるデバイス・インタフェースのデータブロッ
クに対するアクセス許可内容を示すカーネル空間に存在
する第2のアクセス制御情報とを参照し、これらの参照
結果に基づいて前記データの転送を制御することを特徴
とするデータ転送方法。 - 【請求項4】ユーザ空間、フレームバッファまたはデバ
イス・インタフェースのデータブロックと該データブロ
ックに対するアクセス許可内容を示すアクセス制御情報
とを対応付けて記憶する手段と、 所望するデータブロックへのアクセスを要求するアクセ
ス要求元の識別子と、アクセスを要求されたデータブロ
ックに対応する前記アクセス制御情報とに基づき、該デ
ータブロックへのアクセスを制御する手段とを備えたこ
とを特徴とするメモリ管理装置。 - 【請求項5】仮想ページと物理ページのマッピングを変
えることによって、プロセス間データ転送を行うデータ
転送方法であって、 プロセス間データ転送を行うために仮想ページと物理ペ
ージのマッピングを変えるにあたって、転送データの存
在する物理ページに対するアクセス許可内容を示すアク
セス制御情報を参照し、 この参照結果に基づいて、仮想ページと物理ページのマ
ッピングの変更を制御することを特徴とするデータ転送
方法。 - 【請求項6】転送先のプロセスの入力キューに転送デー
タの存在する物理ページを指定する情報を入力する際
に、前記アクセス制御情報を参照し、この参照結果に基
づいて、転送データを入力して良いか否かの判断を行
い、この判断結果に基づいて、前記制御を行うことを特
徴とする請求項5に記載のデータ転送方法。 - 【請求項7】先頭部分にヘッダ情報を持つ受信パケット
を物理ページに格納する際に、受信パケットの先頭から
決められた範囲のデータを読み取り、読み取ったデータ
の中にあるヘッダ長情報を用いて、受信パケット中にお
ける転送データの先頭位置を求め、転送データの先頭と
物理ページの先頭の位置合わせをすることを特徴とする
請求項5に記載のデータ転送方法。 - 【請求項8】物理ページと該物理ページに対するアクセ
ス許可内容を示すアクセス制御情報とを対応付けて記憶
する手段と、 所望の物理ページに対する仮想ページのマッピングの変
更が要求された場合に、変更元の識別子及び変更先の識
別子の少なくとも一方と、変更を要求された物理ページ
に対応する前記アクセス制御情報とに基づき、該物理ペ
ージに対する仮想ページのマッピングの変更を制御する
手段とを備えたことを特徴とするメモリ管理装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP8012021A JPH0973412A (ja) | 1995-06-30 | 1996-01-26 | データ転送方法及びメモリ管理装置 |
US08/672,370 US6044445A (en) | 1995-06-30 | 1996-06-28 | Data transfer method and memory management system utilizing access control information to change mapping between physical and virtual pages for improved data transfer efficiency |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP7-166657 | 1995-06-30 | ||
JP16665795 | 1995-06-30 | ||
JP8012021A JPH0973412A (ja) | 1995-06-30 | 1996-01-26 | データ転送方法及びメモリ管理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH0973412A true JPH0973412A (ja) | 1997-03-18 |
Family
ID=26347553
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP8012021A Pending JPH0973412A (ja) | 1995-06-30 | 1996-01-26 | データ転送方法及びメモリ管理装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US6044445A (ja) |
JP (1) | JPH0973412A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1094392A1 (en) * | 1999-10-22 | 2001-04-25 | Sun Microsystems, Inc. | Method and apparatus for interfacing with a secondary storage system |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE19735948C1 (de) * | 1997-08-19 | 1998-10-01 | Siemens Nixdorf Inf Syst | Verfahren zur Verbesserung der Steuerungsmöglichkeit in Datenverarbeitungsanlagen mit Adreßübersetzung |
WO2000011551A1 (de) * | 1998-08-19 | 2000-03-02 | Siemens Aktiengesellschaft | Verfahren, anordnung sowie ein satz mehrerer anordnungen zum schutz mehrerer programme und/oder mehrerer dateien vor einem unbefugten zugriff durch einen prozess |
JP3567092B2 (ja) * | 1998-12-25 | 2004-09-15 | シャープ株式会社 | パケットデータ通信装置 |
JP4168522B2 (ja) * | 1999-03-18 | 2008-10-22 | 株式会社日立製作所 | アクティブ記憶装置とその記憶制御方法及びこれを用いた異種データ統合利用システム |
US6570885B1 (en) * | 1999-11-12 | 2003-05-27 | International Business Machines Corporation | Segment-controlled process for controlling castouts from a communication cache in a port in any of multiple nodes in a communications network |
AU2001293080A1 (en) * | 2000-09-28 | 2002-04-15 | Symantec Corporation | System and method for analyzing protocol streams for a security-related event |
KR20020060419A (ko) * | 2001-01-11 | 2002-07-18 | 최웅림 | 메모리 접근 방법 |
EP1267526A1 (de) * | 2001-06-15 | 2002-12-18 | TELEFONAKTIEBOLAGET LM ERICSSON (publ) | Verfahren und Vorrichtung zur Speicherung verketteter Listen |
US20030079919A1 (en) * | 2001-10-31 | 2003-05-01 | Hochmuth Roland M. | System and method for displaying an image on a network attachable display device |
US7589737B2 (en) * | 2001-10-31 | 2009-09-15 | Hewlett-Packard Development Company, L.P. | System and method for communicating graphics image data over a communication network |
US7058786B1 (en) * | 2002-01-17 | 2006-06-06 | Hewlett-Packard Development Company | Operating system data communication method and system |
US6907494B2 (en) * | 2002-10-10 | 2005-06-14 | International Business Machines Corporation | Method and system of managing virtualized physical memory in a memory controller and processor system |
US6920521B2 (en) * | 2002-10-10 | 2005-07-19 | International Business Machines Corporation | Method and system of managing virtualized physical memory in a data processing system |
US6904490B2 (en) * | 2002-10-10 | 2005-06-07 | International Business Machines Corporation | Method and system of managing virtualized physical memory in a multi-processor system |
US7139892B2 (en) * | 2003-05-02 | 2006-11-21 | Microsoft Corporation | Implementation of memory access control using optimizations |
US8010964B2 (en) * | 2005-08-18 | 2011-08-30 | Tellabs Operations, Inc. | Methods for monitoring and managing processes |
US20070073966A1 (en) * | 2005-09-23 | 2007-03-29 | Corbin John R | Network processor-based storage controller, compute element and method of using same |
US20070127484A1 (en) * | 2005-12-02 | 2007-06-07 | Dialogic Corporation | Data transfer operations and buffer memories |
US7685399B2 (en) * | 2007-01-07 | 2010-03-23 | International Business Machines Corporation | Method, system, and computer program products for data movement within processor storage |
US20080307349A1 (en) * | 2007-06-08 | 2008-12-11 | Microsoft Corporation | Sharing a computer display across a network |
US8249066B2 (en) * | 2008-02-19 | 2012-08-21 | Dialogic Corporation | Apparatus and method for allocating media resources |
DE102011084740A1 (de) * | 2011-10-19 | 2013-04-25 | Robert Bosch Gmbh | Verfahren zum Verarbeiten eines Datenpakets |
CN103257936B (zh) * | 2012-02-17 | 2016-03-02 | 联想(北京)有限公司 | 内存映射方法和内存映射模块 |
US9823869B2 (en) * | 2014-01-08 | 2017-11-21 | Nvidia Corporation | System and method of protecting data in dynamically-allocated regions of memory |
US9436395B2 (en) | 2014-03-14 | 2016-09-06 | Advanced Micro Devices, Inc. | Mechanisms to save user/kernel copy for cross device communications |
JP2019117979A (ja) * | 2017-12-26 | 2019-07-18 | ファナック株式会社 | 制御装置 |
US10635327B2 (en) * | 2018-01-31 | 2020-04-28 | Western Digital Technologies, Inc. | Data availability during memory inaccessibility |
US11983164B1 (en) | 2022-11-17 | 2024-05-14 | Bank Of America Corporation | System and method for data community detection via data network telemetry |
US12021731B1 (en) | 2023-01-05 | 2024-06-25 | Bank Of America Corporation | System and method for evaluating compliance of transmitted object data via data efficiency mapping |
CN118860922A (zh) * | 2023-04-27 | 2024-10-29 | 京东方科技集团股份有限公司 | 数据传输方法及装置 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4393443A (en) * | 1980-05-20 | 1983-07-12 | Tektronix, Inc. | Memory mapping system |
US5627987A (en) * | 1991-11-29 | 1997-05-06 | Kabushiki Kaisha Toshiba | Memory management and protection system for virtual memory in computer system |
JP2793489B2 (ja) * | 1993-01-13 | 1998-09-03 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 共通データ・リンク・インターフェース |
US5664195A (en) * | 1993-04-07 | 1997-09-02 | Sequoia Systems, Inc. | Method and apparatus for dynamic installation of a driver on a computer system |
US5446903A (en) * | 1993-05-04 | 1995-08-29 | International Business Machines Corporation | Method and apparatus for controlling access to data elements in a data processing system based on status of an industrial process by mapping user's security categories and industrial process steps |
US5584023A (en) * | 1993-12-27 | 1996-12-10 | Hsu; Mike S. C. | Computer system including a transparent and secure file transform mechanism |
US5717926A (en) * | 1995-02-28 | 1998-02-10 | International Business Machines Corporation | Efficient forking of a process |
-
1996
- 1996-01-26 JP JP8012021A patent/JPH0973412A/ja active Pending
- 1996-06-28 US US08/672,370 patent/US6044445A/en not_active Expired - Lifetime
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1094392A1 (en) * | 1999-10-22 | 2001-04-25 | Sun Microsystems, Inc. | Method and apparatus for interfacing with a secondary storage system |
US6665747B1 (en) * | 1999-10-22 | 2003-12-16 | Sun Microsystems, Inc. | Method and apparatus for interfacing with a secondary storage system |
Also Published As
Publication number | Publication date |
---|---|
US6044445A (en) | 2000-03-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH0973412A (ja) | データ転送方法及びメモリ管理装置 | |
US6751680B2 (en) | Protected control of devices by user applications in multiprogramming environments | |
US6526472B2 (en) | Access control method, access control apparatus and computer readable memory storing access control program | |
US5386524A (en) | System for accessing information in a data processing system | |
JP2977688B2 (ja) | マルチプロセッシング装置、方法、及びこれらに使用するプロセッサ | |
US6611883B1 (en) | Method and apparatus for implementing PCI DMA speculative prefetching in a message passing queue oriented bus system | |
US5404478A (en) | Method of managing a virtual storage for a multi-processor system | |
US7206915B2 (en) | Virtual space manager for computer having a physical address extension feature | |
JP3512910B2 (ja) | 分散計算機システムにおける記憶空間管理方法、計算機及びデータ転送方法 | |
US5581722A (en) | Memory management unit for managing address operations corresponding to domains using environmental control | |
US6854032B2 (en) | System for accessing a region of memory using remote address translation and using a memory window table and a memory region table | |
JP3704573B2 (ja) | クラスタシステム | |
US6256657B1 (en) | Cross-domain data transfer using deferred page remapping | |
US5390310A (en) | Memory management unit having cross-domain control | |
US7210021B2 (en) | Cache control program | |
US6009472A (en) | Process for transferring data between nodes in a multinodal information system | |
JP3098344B2 (ja) | データ転送処理方法及びデータ転送処理装置 | |
US6405237B1 (en) | Method and apparatus for an efficient data transfer mechanism | |
US6119150A (en) | Message passing distributed shared memory system that eliminates unnecessary software controlled cache flushes or purges | |
US6434553B1 (en) | File prefetch control method for computer system | |
US5619691A (en) | File sharing method and system for multiprocessor system | |
US8146155B1 (en) | Controlling access to content on an object addressable storage system | |
US7882166B2 (en) | Inter-computer data transfer method and inter-computer network system | |
US7702634B1 (en) | Method and apparatus to support multi-node direct write access to a file managed by a single node file system | |
JPH086838A (ja) | 分散システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20040803 |