JP2002157132A - コンピュータ、その制御方法及びその制御方法を記録した記録媒体 - Google Patents
コンピュータ、その制御方法及びその制御方法を記録した記録媒体Info
- Publication number
- JP2002157132A JP2002157132A JP2001268094A JP2001268094A JP2002157132A JP 2002157132 A JP2002157132 A JP 2002157132A JP 2001268094 A JP2001268094 A JP 2001268094A JP 2001268094 A JP2001268094 A JP 2001268094A JP 2002157132 A JP2002157132 A JP 2002157132A
- Authority
- JP
- Japan
- Prior art keywords
- user process
- computer
- user
- kernel
- register
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
プロセッサ・システムにおいて、専用命令なしで効率良
く安全にユーザプロセスレベルで排他制御を行う新規な
コンピュータ、その制御方法及びこの方法を記録した記
録媒体を提供することを目的とする。 【解決手段】 本発明においては、メモリ管理機構を有
するOSの管理下で、複数のプログラムが動いているコ
ンピュータであって、専用のCPU命令を必要とせず
に、一方のユーザプロセスのアトミック性を保証する手
段を設ける。このアトミック性を保証する手段は、他方
のユーザプロセスの割り込みを検出する手段と、OSが
有するメモリ保護機能を利用して、一方のユーザプロセ
スの操作を無効化する手段と、前記一方のユーザプロセ
スを再度実行する手段とを有している。
Description
の制御方法及びその制御方法を記録した記録媒体に関す
る。
理装置で単一のジョブ(ユーザプログラム)を実行する
シングルプロセッサ−シングルタスク・システムと、単
一の処理装置で複数のジョブを実行するシングルプロセ
ッサ−マルチタスク・システムと、複数の処理装置で複
数のジョブを実行するマルチプロセッサ−マルチタスク
・システムとが知られている。
一般に、複数のプロセッサが複数のジョブを、夫々独立
して並行処理を行っている。
・システムでは、通常、複数のジョブ(ユーザプログラ
ム)を見かけ上、同時に実行している。
理すべきジョブが複数個有るため、コンピュータ資源の
占有に関して競合状態という、不具合が発生する場合が
ある。
ソフトであるOS(Operating System)の制御によって、
競合状態を回避しながら複数のユーザプログラムが時分
割で処理されている。
では、効率良く安全にユーザプロセスレベルで排他制御
を行うために専用命令が用意されている場合もある。し
かし、プロセッサの種類によっては、このような専用命
令が用意されていない場合が多い。この場合、効率良く
且つ安全にユーザプロセスレベルで排他制御を行う手段
がなかった。
に鑑みて、マルチジョブを処理するシングルプロセッサ
・システムにおいて、専用命令なしで、効率良く且つ安
全にユーザプロセスレベルで排他制御を実行できる新規
なコンピュータ、その制御方法及びその制御方法を記録
した記録媒体を提供することを目的とする。
機構を有するOSの管理下で、複数のプログラムが動い
ているコンピュータであって、専用のCPU命令を必要
とせずに、一方のユーザプロセスのアトミック性を保証
する手段を備えている。
コンピュータであって、前記アトミック性を保証する手
段は、他方のユーザプロセスの割り込みを検出する手段
と、OSが有するメモリ保護機能を利用して、一方のユ
ーザプロセスの操作を無効化する手段とを有している。
コンピュータであって、前記アトミック性を保証する手
段は、更に、前記一方のユーザプロセスの操作を再度実
行する手段を有している。
コンピュータであって、前記割り込みを検出する手段
は、OSのカーネルによって他方のユーザプロセスの割
り込みを検出している。
コンピュータであって、前記無効化する手段は、一方の
ユーザプロセスの書き込み用アドレスを所定のレジスタ
に一時的に書き込む手段と、他方のユーザプロセスから
割り込みがあったとき、前記所定のレジスタの内容を所
定の定数に書き換える手段とを有している。
コンピュータであって、前記無効化する手段は、更に、
カーネルが前記所定の定数を検出したとき、一方のユー
ザプロセスをエラーとする手段を有している。
コンピュータであって、前記所定のレジスタは、カーネ
ル用作業レジスタである。
コンピュータであって、前記所定の定数は、無効なアド
レスである。
コンピュータであって、該コンピュータは、カーネル作
業用レジスタがユーザプロセスからも利用できるCPU
からなる。
は、メモリ管理機構を有するOSの管理下で、複数のプ
ログラムが動いているコンピュータの制御方法であっ
て、他方のユーザプロセスの割り込みを検出し、OSが
有するメモリ保護機能を利用して、一方のユーザプロセ
スの操作を無効化して、前記アトミック性を保証してい
る、諸段階を含んでいる。
は、上述の制御方法であって、更に、前記一方のユーザ
プロセスの操作を再度実行して、前記アトミック性を保
証する、諸段階を含んでいる。
は、上述の制御方法であって、前記割り込みを検出する
段階は、OSのカーネルによって他方のユーザプロセス
の割り込みを検出している。
は、上述の制御方法であって、前記無効化する段階は、
一方のユーザプロセスの書き込み用アドレスを所定のレ
ジスタに一時的に書き込み、他方のユーザプロセスから
割り込みがあったとき、前記所定のレジスタの内容を所
定の定数に書き換える、諸段階を有している。
は、上述の制御方法であって、前記無効化する段階は、
更に、カーネルが前記所定の定数を検出したとき、一方
のユーザプロセスをエラーとする段階を有している。
は、上述の制御方法であって、前記所定のレジスタは、
カーネル用作業レジスタである。
は、上述の制御方法であって、前記所定の定数は、無効
なアドレスである。
は、上述の制御方法であって、該コンピュータはカーネ
ル作業用レジスタがユーザプロセスからも利用できるC
PUからなる。
機構を有するOSの管理下で、複数のプログラムが動い
ているコンピュータの制御するプログラムが記録された
記録媒体であって該プログラムは、他方のユーザプロセ
スの割り込みを検出し、OSが有するメモリ保護機能を
利用して、一方のユーザプロセスの操作を無効化して、
該一方のユーザプロセスのアトミック性を保証してい
る、諸段階を含んでいる。
媒体であって、更に、前記一方のユーザプロセスを再度
実行する段階を含んでいる。
媒体であって、前記他方のユーザプロセスの割り込みを
検出する段階は、OSのカーネルによって他方のユーザ
プロセスの割り込みを検出している。
媒体であって、前記無効化する段階は、一方のユーザプ
ロセスの書き込み用アドレスを所定のレジスタに一時的
に書き込む段階と、他方のユーザプロセスから割り込み
があったとき、前記所定のレジスタの内容を所定の定数
に書き換える段階とを有している。
媒体であって、前記無効化する段階は、更に、カーネル
が前記所定の定数を検出したとき、一方のユーザプロセ
スをエラーとする段階を有している。
媒体であって、前記所定のレジスタは、カーネル用作業
レジスタである。
媒体であって、前記所定の定数は、無効なアドレスであ
る。
媒体であって、該コンピュータはカーネル作業用レジス
タがユーザプロセスからも利用できるCPUからなる。
対象となるコンピュータについて説明する。
に対象となるコンピュータは、少なくともCPU1と、
メモリ2と、入力装置3と、出力装置4とを備えてい
る。ここで、このCPU1は、少なくとも特権モード
(「カーネルモード」ともいう。)及び非特権モード
(「ユーザモード」ともいう。)の機能と、メモリ管理
機構(論理アドレスから物理アドレスヘの変換機能,メ
モリ保護機能等)とを備えている。
るオペレーティングシステムの実行において、通常のユ
ーザプログラムの中では使用できないような、特別なハ
ードウェア資源の制御操作(制御命令,特権命令)でコ
ンピュータが動作している状態をいう。
る機構のことであり、アドレス変換機能,メモリ保護機
能等をもっている。アドレス変換機能は、論理アドレス
空間と物理アドレス空間の対応付けを行う。メモリ保護
機能は、例えば、OSが使用している領域をユーザが誤
って使用しないように、メモリ領域をシステム領域(O
S用)とユーザ領域(ユーザ用)に予め分けて設定して
おき、ユーザが実行中にシステム領域に対してアクセス
してしまった場合にエラ−検出を行う機能である。この
ため、メモリ保護機能は、各メモリ領域に対して、実行
可能か否か、書き込み可能か否か等の属性を設定してい
る。
(Operating System)5について説明する。図2に示すよ
うに、OS5は、少なくとも、カーネル6,ユーザイン
ターフェース等からを有し、プログラムの読み込み・実
行、HDD(Hard Disk Drive),メモリ,外部周辺機器
等のようなコンピュータ資源の管理等を行う基本ソフト
をいう。本発明で対象となるOS5は、プリエンプティ
ブ・スケジューリング(preemptive scheduling)による
多重プロセスの実行機能とプロセス間のメモリ保護機能
とを持っている。プリエンプティブ・スケジューリング
は、次にどのユーザプロセスを動かす(選択・実行)か
を決定する際に、各ユーザプロセスが能動的に切り替え
(コンテキストスイッチ)を行うだけでなく、タイマ割
り込み等を用いて受動的にも行うことをいう。
は、各ユーザプログラムは、同時に複数存在して、見か
け上は同時に実行される。言い換えると、OS5は、各
ユーザプログラムに対して、CPU1,メモリ,HDD
といったコンピュータ資源をあたかも同時に占有してい
るかのように見せている。
ばれる。カーネル6は、主に、接続されたハードウェア
資源の動作,各ユーザプログラムの実行等を管理する。
カーネル6は、CPU1の特権モード(カーネルモー
ド)で実行される。これに対して、各ユーザプログラム
の実行は、CPU1の非特権モード(ユーザモード)で
行われ、各資源の直接的な操作は制限される。資源や操
作の種類により、一層多くの特権モードを設けることも
ある。
プロセスと呼ばれる。各ユーザプロセスは、メモリなど
の資源の確保・解放、入出力装置3,4とのやりとり
を、カーネル6を介して行う。カーネル6に対するサー
ビス要求は、システムコール(system call)と呼ばれ
る。カーネル6は、このほかに外部デバイスからの入出
力や割り込みに対する処理、各ユーザプロセス間の制御
の切り替え等を行っている。
より、ユーザプロセスは、ユーザモードからカーネルモ
ードに能動的に遷移する。この遷移は、外部デバイスか
らの割り込みでも発生する。
同時に複数実行するため、刻々と各ユーザプロセスの実
行状態を記録している。この実行中の状態(即ち、ユー
ザ用CPUレジスタ,仮想記憶の状態等)を、コンテキ
スト(context)と呼ぶ。そして、この実行状態の切り替
えをコンテキストスイッチ(context switch)と呼ぶ。通
常、コンテキストスイッチは、ユーザプログラムからの
システムコールをきっかけに行われる。この際、カーネ
ル6が、次にどのユーザプロセスを動かすかを決めるこ
とをスケジューリング(scheduling)と呼ぶ。
構は、論理アドレスを物理アドレスに変換する機能をも
っていて、プログラムが用いる論理アドレスを実際に存
在するメモリの物理アドレスへマップ(対応付け)す
る。また、メモリ保護機能によって、各メモリ領域に実
行可能か、書き込み可能かなどの属性を設定できる。
6は、各々のユーザプロセスがユーザ空間を占有してい
るように見せている。即ち、各ユーザプロセスは、独立
したユーザ空間を持っているかのように動作し、他方の
ユーザプロセスのユーザ空間へのアクセスはできない。
スが相互に通信しながら仕事を進めるときに不便が生じ
る。そのため、カーネル6は、メモリ空間の一部に対し
て、各ユーザプロセス間で共有することができる機能を
提供している。この様な空間は、共有メモリと呼ばれ
る。
ル6は、ユーザプロセスの読出し専用メモリヘの書き込
み,存在しないメモリ空間ヘのアクセス等を検出して、
例外処理(exception handling)へ制御を移すことができ
る。この例外処理は、カーネル6内で行われ、カーネル
6は、通常そのプロセスを異常終了等させる。
て説明する。
PUを使用している。MIPS CPUは、MIPSテ
クノロジーズが開発したRISC型CPUをいう。本発
明で使用されるMIPS CPUは、複数個、例えば3
2個の汎用レジスタを持っている。汎用レジスタである
ため、スタックポインタ専用レジスタ,メモリアドレス
専用レジスタ等のような用途別のレジスタはない。各々
のレジスタは、ハードウェア的には、レジスタ番号0
(名称zero)からは常に0が読めることを除き、全く等
価である。
る際に各レジスタを識別出来ないと困るので、各レジス
タの使用方法が決められている。例えば、本実施例で
は、レジスタ0〜31の用途を表−1に示すように決定
している。
27(名称k0,k1)は、用途が「例外処理内で利
用」と決められている。従って、例外処理内で利用する
レジスタが、ユーザからアクセス出来ることになる。換
言すれば、このユーザから見えることとなる。なお、一
部上記の利用法を変えた規則もあるが、レジスタ番号2
6−27(名称k0,k1)が、ユーザから見えること
に関しては変わらない。
体の制御のためにコプロセッサ0(CoProcessor 0,以
下「CP0」と略す。)を有している。例外処理が発生
すると、CPUは、例外の要因をCP0の Causeレジ
スタに、発生場所をCP0のEPCレジスタに記録す
る。例外処理内では、これらのレジスタを参照して、要
因毎に対応する処理を行う。
合状態(race condition)と相互排他(mutual exclusion)
について説明する。
書きして動作するとき、誰が(どのユーザプロセス
が)、何時、どう動いたか(どのような処理を行った
か)によって、最終的な結果が、本来得られるべき結果
と異なるということが起こりえる。このような状態は、
競合状態と呼ばれる。そして、本来競合してはいけない
プログラムの一部分を、クリティカルセクションと呼ん
でいる。クリティカルセクションヘの進入を制限するた
め、相互排他の機構が必要となる。相互排他を実行する
か否かを決定するために用いられる変数を、排他変数と
呼ぶ。
スが使用する簡単な競合状態と相互変数を、簡易な具体
例を挙げて説明する。判り易さのために、1つの試着室
を2人で使用する場合を考える。
スA,Bを夫々表し、1つの試着室は共有メモリを表し
ている。二人が同時に試着室の使用しては(即ち、競合
状態を起こしては)困るから、AさんとBさんの試着室
の使用はクリティカルセクションとなる。試着室の使用
を相互排他する為に、「空き/使用中」を表示する札を
設ける必要がある。従って、この表示札が、排他変数と
なる。
へ入る。AさんとBさんが、次の表に示すように、手順
のステップ毎に交互に動作を行ったとする。
に入ってしまう状態、即ち競合状態が発生する。
空きから使用中に変える」までの手順(処理)がアトミ
ック(不可分な関係)に行われる場合は、競合状態の発
生はなく、問題はない。しかし、アトミックに行われな
い場合には、競合状態の問題が発生する。なお、ここ
で、アトミックな処理とは、ひとまとまりの処理として
実行される処理群であり、処理群実行中に異常,割り込
み等が発生したしたときには、その処理結果を破棄又は
保留してしまうことを意味している。
するため、手順「表示札を見る」から手順「表示札を空
きから使用中に変える」までをアトミック(不可分な関
係)に処理する命令が用意されていることが多い。この
ような命令を、テストアンドセット命令(test and set)
と呼んでいる。
標)の一種)には、システムコールclone()が用意され
ている。これは、伝統的なシステムコールfork()をプロ
セス空間を共有するように変更したものである。一般
に、Linuxシステムに用いられているglibc(FSF開発の
基本ライブラリ)には、このシステムコールを使ったス
レッド(thread,起動中のタスクから起動できる小さい
モジュール)の実装が提供されている(以下、この実装
を、「Linux-thread」という)。スレッド間の相互排他
の効率的な実装には、ユーザプロセルレベルでの効率的
なテストアンドセット命令の実装が必要となる。このた
め、一般にこれらはCPU1の命令として提供されてい
る。
ISA(Instruction Set Architecture)以上のMIP
Sアーキテクチャでは、アトミックなテストアンドセッ
ト命令のために、ll/sc命令(load-linked/store-
conditional)が用意されている。ll命令(load-linke
d)でロードした時のアドレスを覚えておき、sc命令(sto
re-conditional)を実行する迄の間に、他のCPU1が
この近傍に書き込みを行った場合又は例外処理(excepti
on handling)が起きた場合には、sc命令で書き込みを行
わない、というメカニズムをもっている。このll/s
c命令は、シングルプロセッサ・システムにおいて、Li
nuxの様なオペレーションシステム上で安全なテストア
ンドセット命令の実装に不可欠なものといえる。
ような専用命令は用意されていない。また、組み込み用
途に設計されたMIPSアーキテクチャのCPUには、
これらの命令を持たないものもある。本出願人であるS
CEI(Sony Computer Entertainment Inc.)製のEmotio
n Engineと呼ばれるCPU(以下、「EE」と称す
る。)やVr4100などでは、ll/sc命令が省略
されている。従って、これらのCPUでは、何らかの手
段を用いて、競合状態の発生を回避する必要が生じてく
る。
1に関して、簡単に説明する。
ような専用命令は用意されていない。従って、アトミッ
ク性が確保されず、複数のユーザプロセスが同時にクリ
ティカルセクションに突入し、競合状態になる(巻末参
考資料(1)及び(2)参照)。
い代わりに、ei/di命令が用意されている。ei/
di命令は、割り込み禁止を禁止/許可するための命令
であり、クリティカルセクションの出入口で用いれば、
テストアンドセット命令のアトミック性を確保できる
(巻末参考資料(3)参照)。
可してしまうと、誰もがシステム全体を停止するプログ
ラムを簡単に実行できてしまう。即ち、ei/di命令
では、安全に排他制御を行うことが出来ない。このた
め、ei/di命令をLinuxのような保護されたユーザ
環境では、事実上使用できない(巻末参考資料(4)参
照)。
sc命令が用意されていない。MIPS 1 ISA用
の相互排他の実装として、
トアンドセット命令を用いると、競合しない場合でも、
必ず例外処理(exception handling)とコンテキストスイ
ッチ(context switch)が起きるという性能上の大きな問
題点がある。後述のオーバーヘッドを参照されたい。
るには、次のような問題がある(巻末参考資料(5)参
照)。
表す変数b[i]を実装するため、同時実行の全てのユーザ
プロセスが共有するメモリが必要となる。クリティカル
セクションに入っていないユーザプロセスでも、終了す
る際には、b[i]を正しくクリアする必要がある。MIP
S ABIグループで配布された実装では、この監視の
ために、デーモン(daemon)を起動するようになっている
が、原理的に異常終了の検出を正しく判断することは出
来ないし、検出にも時間がかかることが判明した。
域を動的に確保しようとすると、本来OSのもつプロセ
スやスレッド数の制限とは別の制限が出来てしまうこと
が判明した。
やshmget()のような処理で単一の共通の変数b[i]のため
の領域をとることもできる。しかし、こうすると、他の
プロセスのための変数b[i]を、誰でも書き換えられるこ
とになってしまう。これでは、全く無関係の排他変数に
対する待ち合わせを妨害出来てしまうことが判明した。
セスからは、読み込み専用として、カーネルを使って書
き換えることも考えられるが、こうするとシステムコー
ル(system call)による実装と同じようなオーバーヘッ
ドが発生してしまうことになる。
装では、x,y,b[i]の領域を確保し且つアクセス制限
を確保するためにSYSV IPCの共有メモリ機能を利用して
いる。しかし、この共有メモリには、終了時に明示的に
共有メモリセグメントを取り除かなくてはいけないとい
う問題点があるため、異常終了の監視をデーモンで行う
必要があることが判明した。
れた値をkeyとして、アクセスも自分のuidに限定してい
るので、対象とする排他変数の共有もこの範囲に限られ
る。このことは、この範囲を越えた共有を行いたい場合
には、別途、環境変数の設定が必要となり、汎用性に欠
けることが判明した。
に、Linuxスレッド(thread)の実装に必要な一般的で、
且つ制限の少ない機能を提供する。この場合、競合の起
きない場合のオーバーヘッドを極力少なくし、且つセキ
ュリティホールやシステムの安定度を低くしないことを
目標とし、テストアンドセット命令(test and set)の仕
組みを実装することとした。
ル作業用レジスタとを利用して、シングルプロセッサ・
システムにおいて、専用のCPU命令を必要としない安
全なユーザレベル排他制御を可能にしている。
されていないため、カーネル作業用のレジスタと、カー
ネルが提供するメモリ保護機構を利用して、システムコ
ール(system call)が不用なテストアンドセット命令を
実装した。この実装は、ll/sc命令がない、他のシ
ングルプロセッサのMIPSアーキテクチャCPUに利
用することが出来る。
グルプロセッサ・システムなので、現在進行中のオペレ
ーションが他のユーザプロセスに割り込まれなければ、
そのオペレーションのユーザプロセスレベルのアトミッ
ク性を保証できる。
るということは、(1)或る区間の一連の操作について、
他のユーザプログラムから一度も割り込みなしで実行出
来たことを保証すること、又は(2)たとえ他のユーザプ
ログラムから割り込まれても、割り込まれたことを検出
でき且つ或る区間の一連の操作を無効化してやり直しを
すること。即ち、他のユーザプロセスからの割り込み検
出とオペレーションの無効化とはアトミック状態になっ
ている必要があること、を意味する。
ら割り込まれても、割り込まれたことを検出でき且つ或
る区間の一連の操作を無効化してやり直しをすること、
を実現している。
のレジスタがユーザにも見えるので、本発明では、この
レジスタと、カーネルが提供するメモリ保護機能とを利
用して、一連の「検出と無効化」によって、必要とされ
るアトミック性を実現することにした。
実現について説明する。
するため、一連の「検出と無効化」処理のない従来のシ
ングルプロセッサによるマルチタスク処理を説明するフ
ローチャートである。これに対して、図7は、一連の
「検出と無効化」処理による、本発明のシングルプロセ
ッサによるマルチタスク処理を説明するフローチャート
である。
ーザプロセス#1が実行される。ステップS11で、ユ
ーザプロセス#2から割り込み要求の有無が判定され
る。割り込み要求有りの場合、ステップS12で、カー
ネルはスケジューリングを行い、次にどのユーザプロセ
スを実行するかが決定される。
と、ステップS13で、カーネルにより切替(コンテキ
ストスイッチ)が行われ、ステップ14で、ユーザプロ
セス#1が実行される。
ら割り込み要求の有無が判定される。割り込み要求有り
の場合、ステップS16で、カーネルはスケジューリン
グを行い、次にどのユーザプロセスを実行するかが決定
される。
タに定数ACCESS_MAGICが設定され、ついで
前ステップでユーザプロセス#1の実行が選択される
と、ステップS18で、カーネルにより切り替え(コン
テキストスイッチ)が行われ、ステップS19で、ユー
ザプロセス#1が実行される。
GICの有無が検出され、有りの場合、アトミック性を
必要とする一連の処理が無効化され、ステップS10に
戻って、ユーザプロセス#1が再度実行される。
理のない従来のシングルプロセッサによるマルチタスク
処理では、図7のステップS17,S20,S21が無
く、定数ACCESS_MAGICの設定、検出、処理
の無効化が行われない。このため、ステップS10で実
行されたユーザプロセス#1の処理結果と、ステップS
14で実行されたユーザプロセス#2の処理結果とが競
合を起こし、その結果、ステップS19で実行されるユ
ーザプロセス#1の処理に不具合を生じることがある。
る。
ware Foundation)で開発したOSの基本ライブラリ)の
Linux スレッドで必要とされているテストアンドセット
命令(test and set;「tst」と表示する。)を用意す
る。このテストアンドセット命令tstは、以下の作業を
行う。
0なら、1で置き換える。戻り値(return value)は、元
のアドレスの内容である。ライブラリは、排他変数の値
1を使用中という意味として、
り込みが起こった場合には、mutex_varへの書き込みを
無効化する。このために、カーネル作業用のレジスタk
1を用いる。カーネルからユーザプログラムに制御を移
すときに必ずk1に特定の値(定数)ACCESS_M
AGICをセットする。このACCESS_MAGIC
のアドレスに、ユーザプログラムがアクセスすると、メ
モリ保護機能を利用して、無効アドレス空間のアクセス
違反割り込み(segmentation violation)が発生するよう
に、この値を決めておく。
ングルプロセンサにおいて、1のユーザプログラムがテ
ストアンドセット命令を実行する一例を示している。こ
のプログラムにおいては、もし競合状態が発生すると、
シーケンス(li t0,1)でストアに不具合が発生する。従
って、シーケンス(a)から(b)迄の一連の処理のアトミッ
ク性が保証されることが必要となっている。
ス違反割り込み処理内で、テストアンドセット命令の手
続き内でACCESS_MAGICアドレスへのアクセ
ス違反となったことを検出した場合、この手続きの先頭
へ制御を戻す。こうすることで、シーケンス(a)から(b)
までに割り込みがあり、addrの内容が0から1へと変化
した場合、テストアンドセット命令tstがやり直され
る。この様子を、以下に図9に示す。
ーザプログラムのシーケンス(UserProc #1)が記載され
ている。右半分は、1のユーザプログラムの実行と競合
関係を生じる可能性のある他のユーザプログラムのシー
ケンス(UserProc #2)が記載されている。両者間には
(中心部には)、OSのカーネルが実行するプリエンプ
ティブ・スケジューリング(preemptive scheduling)の
シーケンスが記載されている。
holds mutex_addr)によって、アドレスa0にmutex_addr
が書き込まれる。
するため、タイマ割り込み(timer intr.)により、処理
が切り替わる(context sw)。
スの実行中に、アドレスa0に書き込まれた内容mutex_ad
drが変更される可能性がある。
を実行するため、タイマ割り込み(timer intr.)によ
り、処理が切り替わる(context sw)。
数ACCESS_MAGICを書き込む(li ki, ACCESS
_MAGIC)。
スNOPからSWが実行される。
ACCESS_MAGICの検出(confirm writing to
ACCESS_MAGIC)され、次に、無効化(set restart addr t
o tst())が実行される。
ーザプログラムのシーケンスは、再度実行されることに
より、その結果、図8のシーケンス(a)〜(b)の一連の処
理のアトミック性が保証される。
ロセスにより、排他変数が0から1へ変化した場合に
は、このアルゴリズムでなければ変数値が置き換えられ
てしまう。しかし、このアルゴリズムでは、置き換えが
起きない。また、これにより、不用なクリティカルセク
ションへの突入も起きない。
る。
を実装した場合には、競合状態が起きない場合でも、常
にコンテキストスイッチが発生してしまう(巻末資料
(6)参照)。
起きない場合には、単にテストアンドセット命令tst手
続きをユーザレベルで実行するだけなので、コンテキス
トスイッチは発生しない。
間内のアクセス違反割り込み(Segmentation Violation)
が発生する。この場合のコストは、システムコールによ
る実装と大差はない(巻末参考資料(7)参照)。
いため、システムコールによる実装と比べてかなり性能
が改善される。
してプレイステーション2を開発した。このエンタテイ
メントシステムには、EE(Emotion Engine)と呼ばれる
CPUが採用されている。EE用にポーティング(移
殖)されたLinuxに、共通のテストアンドセット命令の
手続きを提供する/dev/tstというソフトウェア・デバイ
スドライバを実装した。
ンは、このデバイスをopen, mmap,closeして、テストア
ンドセット命令の手続きを呼び出す。このため、一度初
期化してしまえば、テストアンドセット命令の手続きを
呼び出すシステムコールは不要となる。
いるため、不要な資源が残ったままになることはない。
場合でも、極力コンテキストスイッチが起きないように
sw実行前にk1をテストするように改良した(巻末参考
資料(8)参照)。
enして、readするとmmapすべきアドレスが読めるように
した。ライブラリは、そのアドレスへMAP_FIXEDで1pag
e分mmapして、system callのtest and setの代わりにmm
apした先を呼び出すことになる。
以下を評価した。
する処理数の差
ting System Interface) 1003.1bセマフォー(semaphor
e)を単純に繰り返し呼ぶ評価用プログラム1を作り、シ
ステムコール版のテストアンドセット命令と本実施例と
で比較した。他にプロセスを動作させない状態で各々3
回測定し、平均値を用いた(巻末参考資料(9)参照)。
ため、他にプロセスが動いていない状態で処理速度が約
4.8倍に向上した。
者問題をPOSIX 1003.1bセマフォーを使い実装(評価用
プログラム2)し、一定時間内の資源の処理回数(生産
消費数)をシステムコール版のテストアンドセット命令
と本実施例とで比較した。1つの条件ごとに20秒間の
測定を10回繰り返し、平均値を用いた(巻末参考資料
(10)参照)。
1.7倍、処理回数が向上した。
ているため、スレッド数の大小に関わらず処理回数が改
善された。スレッドが多く、システム全体の負荷が大き
くなる状態になると効果が大きくなる。
コール(system call)を使用せずに、テストアンドセッ
ト命令(test and set)を実装することにより、オーバー
ヘッドを減少させ、単独の処理速度を4倍以上、一定時
間内の処理回数を3割以上改善することが出来た。 [参考資料]
いテストアンドセット命令のシーケンス例である。
2つが同時にクリティカルセクションへ突入するシナリ
オの例である。
たテストアンドセット命令のシーケンス例である。
させるプログラムの例である。
ルゴリズムの例である。
による実装の例である。
場合のシーケンス例である。
バイスドライバdev/tstで提供されるテストアンドセッ
ト命令tstの手続例である。
ム1を示した図である。
プログラム2を示した図である。
の通りである。
シングルプロセッサ・システムにおいて、専用命令なし
で、効率良く且つ安全にユーザプロセスレベルで排他制
御を実行できる新規なコンピュータ、その制御方法及び
その制御方法を記録した記録媒体を提供することが出来
る。
例のブロック図を示している。
る概念図である。
説明する図である。
す図である。
理のフローチャートである。
理のフローチャートである。
示す図である。
ンス図である。
装されていないプログラムを示す図である。
クションへ突入するシーケンス図である。
ったプログラムを示す図である。
させるプログラムを示す図である。
ルゴリズムを示す図である。
による実装を示すシーケンス図である。
場合のシーケンス図である。
バイスドライバdev/tstで提供されるテストアンドセッ
ト命令tst手続を示す図である。
ム1を示す図である。
ム2の1番目の図である。
ム2の2番目の図である。
ム2の3番目の図である。
ム2の4番目の図である。
ム2の5番目の図である。
4:出力装置,5:OS, 6:カーネル
Claims (33)
- 【請求項1】 メモリ管理機構を有するOSの管理下
で、複数のプログラムが動いているコンピュータにおい
て、 専用のCPU命令を必要とせずに、一方のユーザプロセ
スのアトミック性を保証する手段を備えた、コンピュー
タ。 - 【請求項2】 請求項1に記載のコンピュータにおい
て、前記アトミック性を保証する手段は、 他方のユーザプロセスの割り込みを検出する手段と、 OSが有するメモリ保護機能を利用して、一方のユーザ
プロセスの操作を無効化する手段とを有している、コン
ピュータ。 - 【請求項3】 請求項2に記載のコンピュータにおい
て、前記アトミック性を保証する手段は、更に前記一方
のユーザプロセスの操作を再度実行する手段を有してい
る、コンピュータ。 - 【請求項4】 請求項2に記載のコンピュータにおい
て、 前記割り込みを検出する手段は、OSのカーネルによっ
て他方のユーザプロセスの割り込みを検出している、コ
ンピュータ。 - 【請求項5】 請求項2に記載のコンピュータにおい
て、前記無効化する手段は、 一方のユーザプロセスの書き込み用アドレスを所定のレ
ジスタに一時的に書き込む手段と、 他方のユーザプロセスから割り込みがあったとき、前記
所定のレジスタの内容を所定の定数に書き換える手段と
を有している、コンピュータ。 - 【請求項6】 請求項5に記載のコンピュータにおい
て、前記無効化する手段は、更にカーネルが前記所定の
定数を検出したとき、一方のユーザプロセスをエラーと
する手段を有している、コンピュータ。 - 【請求項7】 請求項5に記載のコンピュータにおい
て、 前記所定のレジスタは、カーネル用作業レジスタであ
る、コンピュータ。 - 【請求項8】 請求項5に記載のコンピュータにおい
て、 前記所定の定数は、無効なアドレスである、コンピュー
タ。 - 【請求項9】 請求項1に記載のコンピュータにおい
て、該コンピュータはカーネル作業用レジスタがユーザ
プロセスからも利用できるCPUからなる、コンピュー
タ。 - 【請求項10】 メモリ管理機構を有するOSの管理下
で、複数のプログラが動いているコンピュータの制御方
法において、 他方のユーザプロセスの割り込みを検出し、 OSが有するメモリ保護機能を利用して、一方のユーザ
プロセスの操作を無効化して、該一方のユーザプロセス
のアトミック性を保証する、諸段階を含む、コンピュー
タの制御方法。 - 【請求項11】 請求項10に記載のコンピュータの制
御方法において、更に前記一方のユーザプロセスの操作
を再度実行して、前記一方のユーザプロセスのアトミッ
ク性を保証する、段階を含む、コンピュータの制御方
法。 - 【請求項12】 請求項10に記載のコンピュータの制
御方法において、 前記割り込みを検出する段階は、OSのカーネルによっ
て他方のユーザプロセスの割り込みを検出する、コンピ
ュータの制御方法。 - 【請求項13】 請求項10に記載のコンピュータの制
御方法において、前記無効化する段階は、 一方のユーザプロセスの書き込み用アドレスを所定のレ
ジスタに一時的に書き込み、 他方のユーザプロセスから割り込みがあったとき、前記
所定のレジスタの内容を所定の定数に書き換える、諸段
階を有している、コンピュータの制御方法。 - 【請求項14】 請求項10に記載のコンピュータの制
御方法において、前記無効化する段階は、更にカーネル
が前記所定の定数を検出したとき、一方のユーザプロセ
スをエラーとする段階を有している、コンピュータの制
御方法。 - 【請求項15】 請求項13に記載のコンピュータの制
御方法において、 前記所定のレジスタは、カーネル用作業レジスタであ
る、コンピュータの制御方法。 - 【請求項16】 請求項13に記載のコンピュータの制
御方法において、 前記所定の定数は、無効なアドレスである、コンピュー
タの制御方法。 - 【請求項17】 請求項10に記載のコンピュータの制
御方法において、該コンピュータは、カーネル作業用レ
ジスタがユーザプロセスからも利用できるCPUからな
る、コンピュータの制御方法。 - 【請求項18】 メモリ管理機構を有するOSの管理下
で、複数のプログラムが動いているコンピュータを制御
するプログラムが記録された記録媒体において、該プロ
グラムは、 他方のユーザプロセスの割り込みを検出し、 OSが有するメモリ保護機能を利用して、一方のユーザ
プロセスの操作を無効化して、該一方のユーザプロセス
のアトミック性を保証している、諸段階を含む、記録媒
体。 - 【請求項19】 請求項18に記載の記録媒体におい
て、前記プログラムは、更に前記一方のユーザプロセス
の操作を再度実行する段階を含む、記録媒体。 - 【請求項20】 請求項18に記載の記録媒体におい
て、 前記他方のユーザプロセスの割り込みを検出する段階
は、OSのカーネルによって他方のユーザプロセスの割
り込みを検出している、記録媒体。 - 【請求項21】 請求項18に記載の記録媒体におい
て、前記無効化する段階は、 一方のユーザプロセスの書き込み用アドレスを所定のレ
ジスタに一時的に書き込む段階と、 他方のユーザプロセスから割り込みがあったとき、前記
所定のレジスタの内容を所定の定数に書き換える段階と
を有している、記録媒体。 - 【請求項22】 請求項21に記載の記録媒体におい
て、前記無効化する段階は、更にカーネルが前記所定の
定数を検出したとき、一方のユーザプロセスをエラーと
する段階を有している、記録媒体。 - 【請求項23】 請求項21に記載の記録媒体におい
て、 前記所定のレジスタは、カーネル用作業レジスタであ
る、記録媒体。 - 【請求項24】 請求項21に記載の記録媒体におい
て、 前記所定の定数は、無効なアドレスである、記録媒体。 - 【請求項25】 請求項18に記載の記録媒体におい
て、該コンピュータはカーネル作業用レジスタがユーザ
プロセスからも利用できるCPUからなる、記録媒体。 - 【請求項26】 メモリ管理機構を有するOSの管理下
で、複数のプログラムが動いているコンピュータを制御
するプログラムにおいて、 他方のユーザプロセスの割り込みを検出し、 OSが有するメモリ保護機能を利用して、一方のユーザ
プロセスの操作を無効化して、該一方のユーザプロセス
のアトミック性を保証している、諸段階を含む、プログ
ラム。 - 【請求項27】 請求項26に記載のプログラムにおい
て、更に前記一方のユーザプロセスの操作を再度実行す
る段階を含む、プログラム。 - 【請求項28】 請求項26に記載のプログラムにおい
て、 前記他方のユーザプロセスの割り込みを検出する段階
は、OSのカーネルによって他方のユーザプロセスの割
り込みを検出している、プログラム。 - 【請求項29】 請求項26に記載のプログラムにおい
て、前記無効化する段階は、 一方のユーザプロセスの書き込み用アドレスを所定のレ
ジスタに一時的に書き込む段階と、 他方のユーザプロセスから割り込みがあったとき、前記
所定のレジスタの内容を所定の定数に書き換える段階と
を有している、プログラム。 - 【請求項30】 請求項29に記載のプログラムにおい
て、前記無効化する段階は、更にカーネルが前記所定の
定数を検出したとき、一方のユーザプロセスをエラーと
する段階を有している、プログラム。 - 【請求項31】 請求項29に記載のプログラムにおい
て、 前記所定のレジスタは、カーネル用作業レジスタであ
る、プログラム。 - 【請求項32】 請求項29に記載のプログラムにおい
て、 前記所定の定数は、無効なアドレスである、プログラ
ム。 - 【請求項33】 請求項26に記載のプログラムにおい
て、該コンピュータはカーネル作業用レジスタがユーザ
プロセスからも利用できるCPUからなる、プログラ
ム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001268094A JP3598282B2 (ja) | 2000-09-07 | 2001-09-04 | コンピュータ、その制御方法及びその制御方法を記録した記録媒体 |
EP01307607A EP1197857A3 (en) | 2000-09-07 | 2001-09-07 | Method of controlling a computer |
US09/948,417 US7096472B2 (en) | 2000-09-07 | 2001-09-07 | Systems and methods for ensuring atomicity of processes in a multitasking computing environment |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000-272255 | 2000-09-07 | ||
JP2000272255 | 2000-09-07 | ||
JP2001268094A JP3598282B2 (ja) | 2000-09-07 | 2001-09-04 | コンピュータ、その制御方法及びその制御方法を記録した記録媒体 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002157132A true JP2002157132A (ja) | 2002-05-31 |
JP3598282B2 JP3598282B2 (ja) | 2004-12-08 |
Family
ID=26599488
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001268094A Expired - Fee Related JP3598282B2 (ja) | 2000-09-07 | 2001-09-04 | コンピュータ、その制御方法及びその制御方法を記録した記録媒体 |
Country Status (3)
Country | Link |
---|---|
US (1) | US7096472B2 (ja) |
EP (1) | EP1197857A3 (ja) |
JP (1) | JP3598282B2 (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008165551A (ja) * | 2006-12-28 | 2008-07-17 | Sony Corp | 情報処理装置および方法、プログラム、並びに記録媒体 |
KR100879505B1 (ko) | 2007-01-10 | 2009-01-20 | 재단법인서울대학교산학협력재단 | 싱글프로세서 운영체제로부터 마스터/슬레이브멀티프로세서 운영체제로 변환하는 효과적인 방법, 및 그변환시스템 |
US7934111B2 (en) | 2006-12-28 | 2011-04-26 | Sony Corporation | Apparatus and method for allowing quick activation of electronic equipment, and recording medium having a program stored thereon for performing such method |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7421700B2 (en) * | 2004-03-15 | 2008-09-02 | Microsoft Corporation | Interprocess buffer management using a buffer delay time |
JP4246672B2 (ja) * | 2004-06-03 | 2009-04-02 | 株式会社リコー | 画像形成装置および画像形成装置制御方法 |
US7707362B2 (en) * | 2005-06-30 | 2010-04-27 | Seagate Technology Llc | Context-free data transactions between dual operating systems embedded within a data storage subsystem |
US20090073981A1 (en) * | 2007-09-18 | 2009-03-19 | Sensory Networks, Inc. | Methods and Apparatus for Network Packet Filtering |
CN114327815A (zh) * | 2021-12-10 | 2022-04-12 | 龙芯中科技术股份有限公司 | 原子性保持方法、处理器及电子设备 |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4493020A (en) * | 1980-05-06 | 1985-01-08 | Burroughs Corporation | Microprogrammed digital data processor employing microinstruction tasking and dynamic register allocation |
AU569857B2 (en) * | 1982-12-09 | 1988-02-25 | Sequoia Systems, Inc. | Memory backup system |
US5307504A (en) * | 1991-03-07 | 1994-04-26 | Digital Equipment Corporation | System and method for preserving instruction granularity when translating program code from a computer having a first architecture to a computer having a second reduced architecture during the occurrence of interrupts due to asynchronous events |
US5815651A (en) * | 1991-10-17 | 1998-09-29 | Digital Equipment Corporation | Method and apparatus for CPU failure recovery in symmetric multi-processing systems |
US5509127A (en) * | 1992-12-04 | 1996-04-16 | Unisys Corporation | Transmission logic apparatus for dual bus network |
US5442754A (en) * | 1992-12-04 | 1995-08-15 | Unisys Corporation | Receiving control logic system for dual bus network |
US5835742A (en) * | 1994-06-14 | 1998-11-10 | Apple Computer, Inc. | System and method for executing indivisible memory operations in multiple processor computer systems with multiple busses |
US6466962B2 (en) * | 1995-06-07 | 2002-10-15 | International Business Machines Corporation | System and method for supporting real-time computing within general purpose operating systems |
US6021456A (en) * | 1996-11-12 | 2000-02-01 | Herdeg; Glenn Arthur | Method for communicating interrupt data structure in a multi-processor computer system |
US5953538A (en) * | 1996-11-12 | 1999-09-14 | Digital Equipment Corporation | Method and apparatus providing DMA transfers between devices coupled to different host bus bridges |
US6418460B1 (en) * | 1997-02-18 | 2002-07-09 | Silicon Graphics, Inc. | System and method for finding preempted threads in a multi-threaded application |
US5872963A (en) * | 1997-02-18 | 1999-02-16 | Silicon Graphics, Inc. | Resumption of preempted non-privileged threads with no kernel intervention |
US5826084A (en) * | 1997-03-25 | 1998-10-20 | Texas Instruments Incorporated | Microprocessor with circuits, systems, and methods for selectively bypassing external interrupts past the monitor program during virtual program operation |
US5937199A (en) * | 1997-06-03 | 1999-08-10 | International Business Machines Corporation | User programmable interrupt mask with timeout for enhanced resource locking efficiency |
US6230259B1 (en) * | 1997-10-31 | 2001-05-08 | Advanced Micro Devices, Inc. | Transparent extended state save |
US6094663A (en) * | 1998-03-31 | 2000-07-25 | Apple Computer, Inc. | Method and apparatus for implementing atomic queues |
US6697834B1 (en) * | 1999-12-01 | 2004-02-24 | Sun Microsystems, Inc. | Mutual exculsion system and method for restarting critical sections of code when preempted during a critical section |
US6754859B2 (en) * | 2001-01-03 | 2004-06-22 | Bull Hn Information Systems Inc. | Computer processor read/alter/rewrite optimization cache invalidate signals |
US6799236B1 (en) * | 2001-11-20 | 2004-09-28 | Sun Microsystems, Inc. | Methods and apparatus for executing code while avoiding interference |
-
2001
- 2001-09-04 JP JP2001268094A patent/JP3598282B2/ja not_active Expired - Fee Related
- 2001-09-07 EP EP01307607A patent/EP1197857A3/en not_active Withdrawn
- 2001-09-07 US US09/948,417 patent/US7096472B2/en not_active Expired - Lifetime
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008165551A (ja) * | 2006-12-28 | 2008-07-17 | Sony Corp | 情報処理装置および方法、プログラム、並びに記録媒体 |
JP4544246B2 (ja) * | 2006-12-28 | 2010-09-15 | ソニー株式会社 | 制御装置および方法、プログラム、並びに記録媒体 |
US7934111B2 (en) | 2006-12-28 | 2011-04-26 | Sony Corporation | Apparatus and method for allowing quick activation of electronic equipment, and recording medium having a program stored thereon for performing such method |
US8887091B2 (en) | 2006-12-28 | 2014-11-11 | Sony Corporation | Information processing apparatus, method, processor, and recording medium for determining whether information stored in a memory is incorrectly updated |
KR100879505B1 (ko) | 2007-01-10 | 2009-01-20 | 재단법인서울대학교산학협력재단 | 싱글프로세서 운영체제로부터 마스터/슬레이브멀티프로세서 운영체제로 변환하는 효과적인 방법, 및 그변환시스템 |
Also Published As
Publication number | Publication date |
---|---|
EP1197857A3 (en) | 2003-11-19 |
US7096472B2 (en) | 2006-08-22 |
JP3598282B2 (ja) | 2004-12-08 |
US20020120809A1 (en) | 2002-08-29 |
EP1197857A2 (en) | 2002-04-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0887730B1 (en) | Method for providing exclusive access to a resource in a multiprocessor computer system | |
JP3546678B2 (ja) | マルチos構成方法 | |
US7426732B2 (en) | Placing a task of a multithreaded environment in a known state | |
US5305455A (en) | Per thread exception management for multitasking multithreaded operating system | |
US9274859B2 (en) | Multi processor and multi thread safe message queue with hardware assistance | |
US7178062B1 (en) | Methods and apparatus for executing code while avoiding interference | |
JPH06208552A (ja) | スモール・グレイン機構 | |
JP2013513885A (ja) | 無制限トランザクショナル・メモリ(utm)モードでのオペレーティング・システム(os)トランザクションの処理 | |
JPH0786839B2 (ja) | マルチタスク式データ処理システム | |
TWI786181B (zh) | 在例外遮罩更新指令之後允許未中止的交易處理 | |
JPH1115793A (ja) | 資源の保全性を保護する方法 | |
JP4026667B2 (ja) | マルチos構成方法 | |
JP3598282B2 (ja) | コンピュータ、その制御方法及びその制御方法を記録した記録媒体 | |
US20050283783A1 (en) | Method for optimizing pipeline use in a multiprocessing system | |
US7360213B1 (en) | Method for promotion and demotion between system calls and fast kernel calls | |
JP2001216172A (ja) | マルチos構成方法 | |
Arnold et al. | Design of tightly-coupled multiprocessing programming | |
KR100506254B1 (ko) | 임베디드 시스템의 비특권 모드에서 인터럽트 처리를 위한장치 및 방법 | |
JP2553526B2 (ja) | マルチタスク処理装置 | |
JPH06223047A (ja) | 排他制御方式 | |
JP2004038995A (ja) | マルチos構成方法 | |
JPH02116951A (ja) | 情報処理システム | |
JPH02100755A (ja) | 情報処理装置 | |
JPS5922155A (ja) | マルチ・プロセツサ・システムの排他制御方法 | |
JPH02116952A (ja) | 情報処理システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040616 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040816 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20040907 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040913 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20051019 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20051021 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: R3D02 |
|
A072 | Dismissal of procedure [no reply to invitation to correct request for examination] |
Free format text: JAPANESE INTERMEDIATE CODE: A072 Effective date: 20060110 |
|
A072 | Dismissal of procedure [no reply to invitation to correct request for examination] |
Free format text: JAPANESE INTERMEDIATE CODE: A072 Effective date: 20060112 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: R3D04 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080917 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080917 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090917 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090917 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100917 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100917 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110917 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120917 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130917 Year of fee payment: 9 |
|
LAPS | Cancellation because of no payment of annual fees |