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
Application number
JP2001268094A
Other languages
English (en)
Other versions
JP3598282B2 (ja
Inventor
Hiroyuki Machida
浩之 町田
Takao Shinohara
孝夫 篠原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Interactive Entertainment Inc
Original Assignee
Sony Computer Entertainment Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Computer Entertainment Inc filed Critical Sony Computer Entertainment Inc
Priority to JP2001268094A priority Critical patent/JP3598282B2/ja
Priority to EP01307607A priority patent/EP1197857A3/en
Priority to US09/948,417 priority patent/US7096472B2/en
Publication of JP2002157132A publication Critical patent/JP2002157132A/ja
Application granted granted Critical
Publication of JP3598282B2 publication Critical patent/JP3598282B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

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

(57)【要約】 【課題】 本発明は、マルチジョブを処理するシングル
プロセッサ・システムにおいて、専用命令なしで効率良
く安全にユーザプロセスレベルで排他制御を行う新規な
コンピュータ、その制御方法及びこの方法を記録した記
録媒体を提供することを目的とする。 【解決手段】 本発明においては、メモリ管理機構を有
するOSの管理下で、複数のプログラムが動いているコ
ンピュータであって、専用のCPU命令を必要とせず
に、一方のユーザプロセスのアトミック性を保証する手
段を設ける。このアトミック性を保証する手段は、他方
のユーザプロセスの割り込みを検出する手段と、OSが
有するメモリ保護機能を利用して、一方のユーザプロセ
スの操作を無効化する手段と、前記一方のユーザプロセ
スを再度実行する手段とを有している。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、コンピュータ、そ
の制御方法及びその制御方法を記録した記録媒体に関す
る。
【0002】
【発明の背景】コンピュータには、大別して、単一の処
理装置で単一のジョブ(ユーザプログラム)を実行する
シングルプロセッサ−シングルタスク・システムと、単
一の処理装置で複数のジョブを実行するシングルプロセ
ッサ−マルチタスク・システムと、複数の処理装置で複
数のジョブを実行するマルチプロセッサ−マルチタスク
・システムとが知られている。
【0003】この内、マルチプロセッサ・システムは、
一般に、複数のプロセッサが複数のジョブを、夫々独立
して並行処理を行っている。
【0004】一方、シングルプロセッサ−マルチタスク
・システムでは、通常、複数のジョブ(ユーザプログラ
ム)を見かけ上、同時に実行している。
【0005】しかし、プロセッサが単一でありながら処
理すべきジョブが複数個有るため、コンピュータ資源の
占有に関して競合状態という、不具合が発生する場合が
ある。
【0006】このようなコンピュータにおいては、基本
ソフトであるOS(Operating System)の制御によって、
競合状態を回避しながら複数のユーザプログラムが時分
割で処理されている。
【0007】このようなシングルプロセッサ・システム
では、効率良く安全にユーザプロセスレベルで排他制御
を行うために専用命令が用意されている場合もある。し
かし、プロセッサの種類によっては、このような専用命
令が用意されていない場合が多い。この場合、効率良く
且つ安全にユーザプロセスレベルで排他制御を行う手段
がなかった。
【0008】
【課題を解決するための手段】本発明は、上述の問題点
に鑑みて、マルチジョブを処理するシングルプロセッサ
・システムにおいて、専用命令なしで、効率良く且つ安
全にユーザプロセスレベルで排他制御を実行できる新規
なコンピュータ、その制御方法及びその制御方法を記録
した記録媒体を提供することを目的とする。
【0009】本発明に係るコンピュータは、メモリ管理
機構を有するOSの管理下で、複数のプログラムが動い
ているコンピュータであって、専用のCPU命令を必要
とせずに、一方のユーザプロセスのアトミック性を保証
する手段を備えている。
【0010】更に本発明に係るコンピュータは、上述の
コンピュータであって、前記アトミック性を保証する手
段は、他方のユーザプロセスの割り込みを検出する手段
と、OSが有するメモリ保護機能を利用して、一方のユ
ーザプロセスの操作を無効化する手段とを有している。
【0011】更に本発明に係るコンピュータは、上述の
コンピュータであって、前記アトミック性を保証する手
段は、更に、前記一方のユーザプロセスの操作を再度実
行する手段を有している。
【0012】更に本発明に係るコンピュータは、上述の
コンピュータであって、前記割り込みを検出する手段
は、OSのカーネルによって他方のユーザプロセスの割
り込みを検出している。
【0013】更に本発明に係るコンピュータは、上述の
コンピュータであって、前記無効化する手段は、一方の
ユーザプロセスの書き込み用アドレスを所定のレジスタ
に一時的に書き込む手段と、他方のユーザプロセスから
割り込みがあったとき、前記所定のレジスタの内容を所
定の定数に書き換える手段とを有している。
【0014】更に本発明に係るコンピュータは、上述の
コンピュータであって、前記無効化する手段は、更に、
カーネルが前記所定の定数を検出したとき、一方のユー
ザプロセスをエラーとする手段を有している。
【0015】更に本発明に係るコンピュータは、上述の
コンピュータであって、前記所定のレジスタは、カーネ
ル用作業レジスタである。
【0016】更に本発明に係るコンピュータは、上述の
コンピュータであって、前記所定の定数は、無効なアド
レスである。
【0017】更に本発明に係るコンピュータは、上述の
コンピュータであって、該コンピュータは、カーネル作
業用レジスタがユーザプロセスからも利用できるCPU
からなる。
【0018】更に本発明に係るコンピュータの制御方法
は、メモリ管理機構を有するOSの管理下で、複数のプ
ログラムが動いているコンピュータの制御方法であっ
て、他方のユーザプロセスの割り込みを検出し、OSが
有するメモリ保護機能を利用して、一方のユーザプロセ
スの操作を無効化して、前記アトミック性を保証してい
る、諸段階を含んでいる。
【0019】更に本発明に係るコンピュータの制御方法
は、上述の制御方法であって、更に、前記一方のユーザ
プロセスの操作を再度実行して、前記アトミック性を保
証する、諸段階を含んでいる。
【0020】更に本発明に係るコンピュータの制御方法
は、上述の制御方法であって、前記割り込みを検出する
段階は、OSのカーネルによって他方のユーザプロセス
の割り込みを検出している。
【0021】更に本発明に係るコンピュータの制御方法
は、上述の制御方法であって、前記無効化する段階は、
一方のユーザプロセスの書き込み用アドレスを所定のレ
ジスタに一時的に書き込み、他方のユーザプロセスから
割り込みがあったとき、前記所定のレジスタの内容を所
定の定数に書き換える、諸段階を有している。
【0022】更に本発明に係るコンピュータの制御方法
は、上述の制御方法であって、前記無効化する段階は、
更に、カーネルが前記所定の定数を検出したとき、一方
のユーザプロセスをエラーとする段階を有している。
【0023】更に本発明に係るコンピュータの制御方法
は、上述の制御方法であって、前記所定のレジスタは、
カーネル用作業レジスタである。
【0024】更に本発明に係るコンピュータの制御方法
は、上述の制御方法であって、前記所定の定数は、無効
なアドレスである。
【0025】更に本発明に係るコンピュータの制御方法
は、上述の制御方法であって、該コンピュータはカーネ
ル作業用レジスタがユーザプロセスからも利用できるC
PUからなる。
【0026】更に本発明に係る記録媒体は、メモリ管理
機構を有するOSの管理下で、複数のプログラムが動い
ているコンピュータの制御するプログラムが記録された
記録媒体であって該プログラムは、他方のユーザプロセ
スの割り込みを検出し、OSが有するメモリ保護機能を
利用して、一方のユーザプロセスの操作を無効化して、
該一方のユーザプロセスのアトミック性を保証してい
る、諸段階を含んでいる。
【0027】更に本発明に係る記録媒体は、上述の記録
媒体であって、更に、前記一方のユーザプロセスを再度
実行する段階を含んでいる。
【0028】更に本発明に係る記録媒体は、上述の記録
媒体であって、前記他方のユーザプロセスの割り込みを
検出する段階は、OSのカーネルによって他方のユーザ
プロセスの割り込みを検出している。
【0029】更に本発明に係る記録媒体は、上述の記録
媒体であって、前記無効化する段階は、一方のユーザプ
ロセスの書き込み用アドレスを所定のレジスタに一時的
に書き込む段階と、他方のユーザプロセスから割り込み
があったとき、前記所定のレジスタの内容を所定の定数
に書き換える段階とを有している。
【0030】更に本発明に係る記録媒体は、上述の記録
媒体であって、前記無効化する段階は、更に、カーネル
が前記所定の定数を検出したとき、一方のユーザプロセ
スをエラーとする段階を有している。
【0031】更に本発明に係る記録媒体は、上述の記録
媒体であって、前記所定のレジスタは、カーネル用作業
レジスタである。
【0032】更に本発明に係る記録媒体は、上述の記録
媒体であって、前記所定の定数は、無効なアドレスであ
る。
【0033】更に本発明に係る記録媒体は、上述の記録
媒体であって、該コンピュータはカーネル作業用レジス
タがユーザプロセスからも利用できるCPUからなる。
【0034】
【発明の実施の形態】最初に、本発明が実施される際に
対象となるコンピュータについて説明する。
【0035】図1に示すように、本発明が実施される際
に対象となるコンピュータは、少なくともCPU1と、
メモリ2と、入力装置3と、出力装置4とを備えてい
る。ここで、このCPU1は、少なくとも特権モード
(「カーネルモード」ともいう。)及び非特権モード
(「ユーザモード」ともいう。)の機能と、メモリ管理
機構(論理アドレスから物理アドレスヘの変換機能,メ
モリ保護機能等)とを備えている。
【0036】ここで、「特権モード」とは、次に説明す
るオペレーティングシステムの実行において、通常のユ
ーザプログラムの中では使用できないような、特別なハ
ードウェア資源の制御操作(制御命令,特権命令)でコ
ンピュータが動作している状態をいう。
【0037】「メモリ管理機構」は、メモリ2を管理す
る機構のことであり、アドレス変換機能,メモリ保護機
能等をもっている。アドレス変換機能は、論理アドレス
空間と物理アドレス空間の対応付けを行う。メモリ保護
機能は、例えば、OSが使用している領域をユーザが誤
って使用しないように、メモリ領域をシステム領域(O
S用)とユーザ領域(ユーザ用)に予め分けて設定して
おき、ユーザが実行中にシステム領域に対してアクセス
してしまった場合にエラ−検出を行う機能である。この
ため、メモリ保護機能は、各メモリ領域に対して、実行
可能か否か、書き込み可能か否か等の属性を設定してい
る。
【0038】次に、上記コンピュータに使用されるOS
(Operating System)5について説明する。図2に示すよ
うに、OS5は、少なくとも、カーネル6,ユーザイン
ターフェース等からを有し、プログラムの読み込み・実
行、HDD(Hard Disk Drive),メモリ,外部周辺機器
等のようなコンピュータ資源の管理等を行う基本ソフト
をいう。本発明で対象となるOS5は、プリエンプティ
ブ・スケジューリング(preemptive scheduling)による
多重プロセスの実行機能とプロセス間のメモリ保護機能
とを持っている。プリエンプティブ・スケジューリング
は、次にどのユーザプロセスを動かす(選択・実行)か
を決定する際に、各ユーザプロセスが能動的に切り替え
(コンテキストスイッチ)を行うだけでなく、タイマ割
り込み等を用いて受動的にも行うことをいう。
【0039】図3に示すように、この様なOS5の上で
は、各ユーザプログラムは、同時に複数存在して、見か
け上は同時に実行される。言い換えると、OS5は、各
ユーザプログラムに対して、CPU1,メモリ,HDD
といったコンピュータ資源をあたかも同時に占有してい
るかのように見せている。
【0040】OS5の核となる部分は、カーネル6と呼
ばれる。カーネル6は、主に、接続されたハードウェア
資源の動作,各ユーザプログラムの実行等を管理する。
カーネル6は、CPU1の特権モード(カーネルモー
ド)で実行される。これに対して、各ユーザプログラム
の実行は、CPU1の非特権モード(ユーザモード)で
行われ、各資源の直接的な操作は制限される。資源や操
作の種類により、一層多くの特権モードを設けることも
ある。
【0041】各ユーザプログラムの実行単位は、ユーザ
プロセスと呼ばれる。各ユーザプロセスは、メモリなど
の資源の確保・解放、入出力装置3,4とのやりとり
を、カーネル6を介して行う。カーネル6に対するサー
ビス要求は、システムコール(system call)と呼ばれ
る。カーネル6は、このほかに外部デバイスからの入出
力や割り込みに対する処理、各ユーザプロセス間の制御
の切り替え等を行っている。
【0042】ユーザプログラムからのシステムコールに
より、ユーザプロセスは、ユーザモードからカーネルモ
ードに能動的に遷移する。この遷移は、外部デバイスか
らの割り込みでも発生する。
【0043】カーネル6は、見かけ上ユーザプロセスを
同時に複数実行するため、刻々と各ユーザプロセスの実
行状態を記録している。この実行中の状態(即ち、ユー
ザ用CPUレジスタ,仮想記憶の状態等)を、コンテキ
スト(context)と呼ぶ。そして、この実行状態の切り替
えをコンテキストスイッチ(context switch)と呼ぶ。通
常、コンテキストスイッチは、ユーザプログラムからの
システムコールをきっかけに行われる。この際、カーネ
ル6が、次にどのユーザプロセスを動かすかを決めるこ
とをスケジューリング(scheduling)と呼ぶ。
【0044】上述したように、CPU1のメモリ管理機
構は、論理アドレスを物理アドレスに変換する機能をも
っていて、プログラムが用いる論理アドレスを実際に存
在するメモリの物理アドレスへマップ(対応付け)す
る。また、メモリ保護機能によって、各メモリ領域に実
行可能か、書き込み可能かなどの属性を設定できる。
【0045】このメモリ管理機構を利用して、カーネル
6は、各々のユーザプロセスがユーザ空間を占有してい
るように見せている。即ち、各ユーザプロセスは、独立
したユーザ空間を持っているかのように動作し、他方の
ユーザプロセスのユーザ空間へのアクセスはできない。
【0046】しかし、このままでは複数のユーザプロセ
スが相互に通信しながら仕事を進めるときに不便が生じ
る。そのため、カーネル6は、メモリ空間の一部に対し
て、各ユーザプロセス間で共有することができる機能を
提供している。この様な空間は、共有メモリと呼ばれ
る。
【0047】CPU1のメモリ管理機構により、カーネ
ル6は、ユーザプロセスの読出し専用メモリヘの書き込
み,存在しないメモリ空間ヘのアクセス等を検出して、
例外処理(exception handling)へ制御を移すことができ
る。この例外処理は、カーネル6内で行われ、カーネル
6は、通常そのプロセスを異常終了等させる。
【0048】更に、MIPS CPUのレジスタについ
て説明する。
【0049】本実施例では、CPU1は、MIPS C
PUを使用している。MIPS CPUは、MIPSテ
クノロジーズが開発したRISC型CPUをいう。本発
明で使用されるMIPS CPUは、複数個、例えば3
2個の汎用レジスタを持っている。汎用レジスタである
ため、スタックポインタ専用レジスタ,メモリアドレス
専用レジスタ等のような用途別のレジスタはない。各々
のレジスタは、ハードウェア的には、レジスタ番号0
(名称zero)からは常に0が読めることを除き、全く等
価である。
【0050】しかし、ユーザは、ソフトウェアを作成す
る際に各レジスタを識別出来ないと困るので、各レジス
タの使用方法が決められている。例えば、本実施例で
は、レジスタ0〜31の用途を表−1に示すように決定
している。
【表1】 このようにMIPS CPUでは、レジスタ番号26−
27(名称k0,k1)は、用途が「例外処理内で利
用」と決められている。従って、例外処理内で利用する
レジスタが、ユーザからアクセス出来ることになる。換
言すれば、このユーザから見えることとなる。なお、一
部上記の利用法を変えた規則もあるが、レジスタ番号2
6−27(名称k0,k1)が、ユーザから見えること
に関しては変わらない。
【0051】なお、MIPS CPUは、プロセッサ自
体の制御のためにコプロセッサ0(CoProcessor 0,以
下「CP0」と略す。)を有している。例外処理が発生
すると、CPUは、例外の要因をCP0の Causeレジ
スタに、発生場所をCP0のEPCレジスタに記録す
る。例外処理内では、これらのレジスタを参照して、要
因毎に対応する処理を行う。
【0052】更に、複数のユーザプロセス間における競
合状態(race condition)と相互排他(mutual exclusion)
について説明する。
【0053】複数のユーザプロセスが共有メモリを読み
書きして動作するとき、誰が(どのユーザプロセス
が)、何時、どう動いたか(どのような処理を行った
か)によって、最終的な結果が、本来得られるべき結果
と異なるということが起こりえる。このような状態は、
競合状態と呼ばれる。そして、本来競合してはいけない
プログラムの一部分を、クリティカルセクションと呼ん
でいる。クリティカルセクションヘの進入を制限するた
め、相互排他の機構が必要となる。相互排他を実行する
か否かを決定するために用いられる変数を、排他変数と
呼ぶ。
【0054】以下に、1つの資源を2つのユーザプロセ
スが使用する簡単な競合状態と相互変数を、簡易な具体
例を挙げて説明する。判り易さのために、1つの試着室
を2人で使用する場合を考える。
【0055】ここで、AさんとBさんの2人は、プロセ
スA,Bを夫々表し、1つの試着室は共有メモリを表し
ている。二人が同時に試着室の使用しては(即ち、競合
状態を起こしては)困るから、AさんとBさんの試着室
の使用はクリティカルセクションとなる。試着室の使用
を相互排他する為に、「空き/使用中」を表示する札を
設ける必要がある。従って、この表示札が、排他変数と
なる。
【0056】2人は、ともに以下のような手順で試着室
へ入る。AさんとBさんが、次の表に示すように、手順
のステップ毎に交互に動作を行ったとする。
【表2】 表−2で判るように、時点8では、二人が同時に試着室
に入ってしまう状態、即ち競合状態が発生する。
【0057】ここで、「表示札を見る」から「表示札を
空きから使用中に変える」までの手順(処理)がアトミ
ック(不可分な関係)に行われる場合は、競合状態の発
生はなく、問題はない。しかし、アトミックに行われな
い場合には、競合状態の問題が発生する。なお、ここ
で、アトミックな処理とは、ひとまとまりの処理として
実行される処理群であり、処理群実行中に異常,割り込
み等が発生したしたときには、その処理結果を破棄又は
保留してしまうことを意味している。
【0058】CPU1には、このような競合状態を回避
するため、手順「表示札を見る」から手順「表示札を空
きから使用中に変える」までをアトミック(不可分な関
係)に処理する命令が用意されていることが多い。この
ような命令を、テストアンドセット命令(test and set)
と呼んでいる。
【0059】Linux(OSの一つであり、Unix(登録商
標)の一種)には、システムコールclone()が用意され
ている。これは、伝統的なシステムコールfork()をプロ
セス空間を共有するように変更したものである。一般
に、Linuxシステムに用いられているglibc(FSF開発の
基本ライブラリ)には、このシステムコールを使ったス
レッド(thread,起動中のタスクから起動できる小さい
モジュール)の実装が提供されている(以下、この実装
を、「Linux-thread」という)。スレッド間の相互排他
の効率的な実装には、ユーザプロセルレベルでの効率的
なテストアンドセット命令の実装が必要となる。このた
め、一般にこれらはCPU1の命令として提供されてい
る。
【0060】具体的に説明する。通常、MIPS 2
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の様なオペレーションシステム上で安全なテストア
ンドセット命令の実装に不可欠なものといえる。
【0061】しかし、MIPS 1 ISAには、この
ような専用命令は用意されていない。また、組み込み用
途に設計されたMIPSアーキテクチャのCPUには、
これらの命令を持たないものもある。本出願人であるS
CEI(Sony Computer Entertainment Inc.)製のEmotio
n Engineと呼ばれるCPU(以下、「EE」と称す
る。)やVr4100などでは、ll/sc命令が省略
されている。従って、これらのCPUでは、何らかの手
段を用いて、競合状態の発生を回避する必要が生じてく
る。
【0062】以下、EE,Vr4100及びMIPS
1に関して、簡単に説明する。
【0063】(1) Vr4100では、ll/sc命令の
ような専用命令は用意されていない。従って、アトミッ
ク性が確保されず、複数のユーザプロセスが同時にクリ
ティカルセクションに突入し、競合状態になる(巻末参
考資料(1)及び(2)参照)。
【0064】(2)EEの例
【0065】EEは、ll/sc命令が用意されていな
い代わりに、ei/di命令が用意されている。ei/
di命令は、割り込み禁止を禁止/許可するための命令
であり、クリティカルセクションの出入口で用いれば、
テストアンドセット命令のアトミック性を確保できる
(巻末参考資料(3)参照)。
【0066】しかし、ユーザレベルでこれらの実行を許
可してしまうと、誰もがシステム全体を停止するプログ
ラムを簡単に実行できてしまう。即ち、ei/di命令
では、安全に排他制御を行うことが出来ない。このた
め、ei/di命令をLinuxのような保護されたユーザ
環境では、事実上使用できない(巻末参考資料(4)参
照)。
【0067】(3) MIPS 1 ISA
【0068】元々、MIPS 1 ISAには、ll/
sc命令が用意されていない。MIPS 1 ISA用
の相互排他の実装として、
【0069】 (a) システムコールによるテストアンドセット命令
【0070】 (b) Lamportアルゴリズムの実装、がある。
【0071】しかし、(a)のシステムコールによるテス
トアンドセット命令を用いると、競合しない場合でも、
必ず例外処理(exception handling)とコンテキストスイ
ッチ(context switch)が起きるという性能上の大きな問
題点がある。後述のオーバーヘッドを参照されたい。
【0072】一方、(b) Lamportアルゴリズムを実装す
るには、次のような問題がある(巻末参考資料(5)参
照)。
【0073】同時に実行されるユーザプロセスの状態を
表す変数b[i]を実装するため、同時実行の全てのユーザ
プロセスが共有するメモリが必要となる。クリティカル
セクションに入っていないユーザプロセスでも、終了す
る際には、b[i]を正しくクリアする必要がある。MIP
S ABIグループで配布された実装では、この監視の
ために、デーモン(daemon)を起動するようになっている
が、原理的に異常終了の検出を正しく判断することは出
来ないし、検出にも時間がかかることが判明した。
【0074】更に、ユーザプロセス側で、変数b[i]の領
域を動的に確保しようとすると、本来OSのもつプロセ
スやスレッド数の制限とは別の制限が出来てしまうこと
が判明した。
【0075】メモリ領域の効率的な利用を考え、mmap()
やshmget()のような処理で単一の共通の変数b[i]のため
の領域をとることもできる。しかし、こうすると、他の
プロセスのための変数b[i]を、誰でも書き換えられるこ
とになってしまう。これでは、全く無関係の排他変数に
対する待ち合わせを妨害出来てしまうことが判明した。
【0076】安全に変数b[i]を操作するために、各プロ
セスからは、読み込み専用として、カーネルを使って書
き換えることも考えられるが、こうするとシステムコー
ル(system call)による実装と同じようなオーバーヘッ
ドが発生してしまうことになる。
【0077】MIPS ABIグループで配布された実
装では、x,y,b[i]の領域を確保し且つアクセス制限
を確保するためにSYSV IPCの共有メモリ機能を利用して
いる。しかし、この共有メモリには、終了時に明示的に
共有メモリセグメントを取り除かなくてはいけないとい
う問題点があるため、異常終了の監視をデーモンで行う
必要があることが判明した。
【0078】また、デフォルトでは、geteuid()で得ら
れた値をkeyとして、アクセスも自分のuidに限定してい
るので、対象とする排他変数の共有もこの範囲に限られ
る。このことは、この範囲を越えた共有を行いたい場合
には、別途、環境変数の設定が必要となり、汎用性に欠
けることが判明した。
【0079】本発明は、これらの問題点を解決するため
に、Linuxスレッド(thread)の実装に必要な一般的で、
且つ制限の少ない機能を提供する。この場合、競合の起
きない場合のオーバーヘッドを極力少なくし、且つセキ
ュリティホールやシステムの安定度を低くしないことを
目標とし、テストアンドセット命令(test and set)の仕
組みを実装することとした。
【0080】本発明は、OSメモリ保護機能と、カーネ
ル作業用レジスタとを利用して、シングルプロセッサ・
システムにおいて、専用のCPU命令を必要としない安
全なユーザレベル排他制御を可能にしている。
【0081】例えば、EEには、命令ll/scが用意
されていないため、カーネル作業用のレジスタと、カー
ネルが提供するメモリ保護機構を利用して、システムコ
ール(system call)が不用なテストアンドセット命令を
実装した。この実装は、ll/sc命令がない、他のシ
ングルプロセッサのMIPSアーキテクチャCPUに利
用することが出来る。
【0082】本発明において、対象としているのはシン
グルプロセッサ・システムなので、現在進行中のオペレ
ーションが他のユーザプロセスに割り込まれなければ、
そのオペレーションのユーザプロセスレベルのアトミッ
ク性を保証できる。
【0083】オペレーションのアトミック性が保証でき
るということは、(1)或る区間の一連の操作について、
他のユーザプログラムから一度も割り込みなしで実行出
来たことを保証すること、又は(2)たとえ他のユーザプ
ログラムから割り込まれても、割り込まれたことを検出
でき且つ或る区間の一連の操作を無効化してやり直しを
すること。即ち、他のユーザプロセスからの割り込み検
出とオペレーションの無効化とはアトミック状態になっ
ている必要があること、を意味する。
【0084】本発明では、(2)他のユーザプログラムか
ら割り込まれても、割り込まれたことを検出でき且つ或
る区間の一連の操作を無効化してやり直しをすること、
を実現している。
【0085】幸いにも、MIPSでは、カーネル作業用
のレジスタがユーザにも見えるので、本発明では、この
レジスタと、カーネルが提供するメモリ保護機能とを利
用して、一連の「検出と無効化」によって、必要とされ
るアトミック性を実現することにした。
【0086】更に、検出と無効化によるアトミック性の
実現について説明する。
【0087】図6は、本発明を容易に理解できるように
するため、一連の「検出と無効化」処理のない従来のシ
ングルプロセッサによるマルチタスク処理を説明するフ
ローチャートである。これに対して、図7は、一連の
「検出と無効化」処理による、本発明のシングルプロセ
ッサによるマルチタスク処理を説明するフローチャート
である。
【0088】図7に示すように、ステップS10で、ユ
ーザプロセス#1が実行される。ステップS11で、ユ
ーザプロセス#2から割り込み要求の有無が判定され
る。割り込み要求有りの場合、ステップS12で、カー
ネルはスケジューリングを行い、次にどのユーザプロセ
スを実行するかが決定される。
【0089】ユーザプロセス#2の実行が選択される
と、ステップS13で、カーネルにより切替(コンテキ
ストスイッチ)が行われ、ステップ14で、ユーザプロ
セス#1が実行される。
【0090】ステップS15で、ユーザプロセス#1か
ら割り込み要求の有無が判定される。割り込み要求有り
の場合、ステップS16で、カーネルはスケジューリン
グを行い、次にどのユーザプロセスを実行するかが決定
される。
【0091】ステップS17で、カーネル作業用レジス
タに定数ACCESS_MAGICが設定され、ついで
前ステップでユーザプロセス#1の実行が選択される
と、ステップS18で、カーネルにより切り替え(コン
テキストスイッチ)が行われ、ステップS19で、ユー
ザプロセス#1が実行される。
【0092】ステップ20で、定数ACCESS_MA
GICの有無が検出され、有りの場合、アトミック性を
必要とする一連の処理が無効化され、ステップS10に
戻って、ユーザプロセス#1が再度実行される。
【0093】これに対して、図6の「検出と無効化」処
理のない従来のシングルプロセッサによるマルチタスク
処理では、図7のステップS17,S20,S21が無
く、定数ACCESS_MAGICの設定、検出、処理
の無効化が行われない。このため、ステップS10で実
行されたユーザプロセス#1の処理結果と、ステップS
14で実行されたユーザプロセス#2の処理結果とが競
合を起こし、その結果、ステップS19で実行されるユ
ーザプロセス#1の処理に不具合を生じることがある。
【0094】以上の状況を実際のアルゴリズムで説明す
る。
【0095】はじめに、glibc(団体FSF(Free Soft
ware Foundation)で開発したOSの基本ライブラリ)の
Linux スレッドで必要とされているテストアンドセット
命令(test and set;「tst」と表示する。)を用意す
る。このテストアンドセット命令tstは、以下の作業を
行う。
【0096】引数(addr)で与えられたアドレスの内容が
0なら、1で置き換える。戻り値(return value)は、元
のアドレスの内容である。ライブラリは、排他変数の値
1を使用中という意味として、
【0097】while (tst(mutex_var));
【0098】クリティカルセクション
【0099】mutex_var=0;として利用する。
【0100】この手続き内での割り込みを検出して、割
り込みが起こった場合には、mutex_varへの書き込みを
無効化する。このために、カーネル作業用のレジスタk
1を用いる。カーネルからユーザプログラムに制御を移
すときに必ずk1に特定の値(定数)ACCESS_M
AGICをセットする。このACCESS_MAGIC
のアドレスに、ユーザプログラムがアクセスすると、メ
モリ保護機能を利用して、無効アドレス空間のアクセス
違反割り込み(segmentation violation)が発生するよう
に、この値を決めておく。
【0101】図8は、多重プロセス実行機能を有するシ
ングルプロセンサにおいて、1のユーザプログラムがテ
ストアンドセット命令を実行する一例を示している。こ
のプログラムにおいては、もし競合状態が発生すると、
シーケンス(li t0,1)でストアに不具合が発生する。従
って、シーケンス(a)から(b)迄の一連の処理のアトミッ
ク性が保証されることが必要となっている。
【0102】カーネルによる無効アドレス空間のアクセ
ス違反割り込み処理内で、テストアンドセット命令の手
続き内でACCESS_MAGICアドレスへのアクセ
ス違反となったことを検出した場合、この手続きの先頭
へ制御を戻す。こうすることで、シーケンス(a)から(b)
までに割り込みがあり、addrの内容が0から1へと変化
した場合、テストアンドセット命令tstがやり直され
る。この様子を、以下に図9に示す。
【0103】図9は、左半分は図8で説明した、1のユ
ーザプログラムのシーケンス(UserProc #1)が記載され
ている。右半分は、1のユーザプログラムの実行と競合
関係を生じる可能性のある他のユーザプログラムのシー
ケンス(UserProc #2)が記載されている。両者間には
(中心部には)、OSのカーネルが実行するプリエンプ
ティブ・スケジューリング(preemptive scheduling)の
シーケンスが記載されている。
【0104】1のユーザプログラムのシーケンス(//a0
holds mutex_addr)によって、アドレスa0にmutex_addr
が書き込まれる。
【0105】他のユーザプログラムのシーケンスを実行
するため、タイマ割り込み(timer intr.)により、処理
が切り替わる(context sw)。
【0106】しかし、他のユーザプログラムのシーケン
スの実行中に、アドレスa0に書き込まれた内容mutex_ad
drが変更される可能性がある。
【0107】再び、1のユーザプログラムのシーケンス
を実行するため、タイマ割り込み(timer intr.)によ
り、処理が切り替わる(context sw)。
【0108】このとき、カーネルは、レジスタk1に定
数ACCESS_MAGICを書き込む(li ki, ACCESS
_MAGIC)。
【0109】処理が切り替わり(context sw)、シーケン
スNOPからSWが実行される。
【0110】しかし、その後、カーネルによって、定数
ACCESS_MAGICの検出(confirm writing to
ACCESS_MAGIC)され、次に、無効化(set restart addr t
o tst())が実行される。
【0111】こうして、途中まで実行されていた1のユ
ーザプログラムのシーケンスは、再度実行されることに
より、その結果、図8のシーケンス(a)〜(b)の一連の処
理のアトミック性が保証される。
【0112】シーケンス(a)から(b)までの間で、他のプ
ロセスにより、排他変数が0から1へ変化した場合に
は、このアルゴリズムでなければ変数値が置き換えられ
てしまう。しかし、このアルゴリズムでは、置き換えが
起きない。また、これにより、不用なクリティカルセク
ションへの突入も起きない。
【0113】ここで、オーバーヘッドに関し、検討す
る。
【0114】システムコールでテストアンドセット命令
を実装した場合には、競合状態が起きない場合でも、常
にコンテキストスイッチが発生してしまう(巻末資料
(6)参照)。
【0115】一方、今回実装した方法では、競合状態が
起きない場合には、単にテストアンドセット命令tst手
続きをユーザレベルで実行するだけなので、コンテキス
トスイッチは発生しない。
【0116】競合状態にある場合には、無効アドレス空
間内のアクセス違反割り込み(Segmentation Violation)
が発生する。この場合のコストは、システムコールによ
る実装と大差はない(巻末参考資料(7)参照)。
【0117】一般に、競合状態になることは非常に少な
いため、システムコールによる実装と比べてかなり性能
が改善される。
【0118】本出願人は、エンタテイメントシステムと
してプレイステーション2を開発した。このエンタテイ
メントシステムには、EE(Emotion Engine)と呼ばれる
CPUが採用されている。EE用にポーティング(移
殖)されたLinuxに、共通のテストアンドセット命令の
手続きを提供する/dev/tstというソフトウェア・デバイ
スドライバを実装した。
【0119】glibcのLinuxスレッドのサポートルーティ
ンは、このデバイスをopen, mmap,closeして、テストア
ンドセット命令の手続きを呼び出す。このため、一度初
期化してしまえば、テストアンドセット命令の手続きを
呼び出すシステムコールは不要となる。
【0120】また、異常終了した際にもmmapを利用して
いるため、不要な資源が残ったままになることはない。
【0121】mmapされるtst手続きは、競合状態にある
場合でも、極力コンテキストスイッチが起きないように
sw実行前にk1をテストするように改良した(巻末参考
資料(8)参照)。
【0122】更新時のメインテナンス性を考慮して、op
enして、readするとmmapすべきアドレスが読めるように
した。ライブラリは、そのアドレスへMAP_FIXEDで1pag
e分mmapして、system callのtest and setの代わりにmm
apした先を呼び出すことになる。
【0123】上述した実施例の効果について説明する。
【0124】性能評価用マシン上のEE版Linuxにて、
以下を評価した。
【0125】(1)競合が起きない場合の速度差
【0126】(2)競合も起きる場合、一定時間内で完了
する処理数の差
【0127】(1)の測定のため、posix (Portable Opera
ting System Interface) 1003.1bセマフォー(semaphor
e)を単純に繰り返し呼ぶ評価用プログラム1を作り、シ
ステムコール版のテストアンドセット命令と本実施例と
で比較した。他にプロセスを動作させない状態で各々3
回測定し、平均値を用いた(巻末参考資料(9)参照)。
【0128】システムコール(system call)を使わない
ため、他にプロセスが動いていない状態で処理速度が約
4.8倍に向上した。
【0129】(2)の測定のため、典型的な生産者−消費
者問題をPOSIX 1003.1bセマフォーを使い実装(評価用
プログラム2)し、一定時間内の資源の処理回数(生産
消費数)をシステムコール版のテストアンドセット命令
と本実施例とで比較した。1つの条件ごとに20秒間の
測定を10回繰り返し、平均値を用いた(巻末参考資料
(10)参照)。
【0130】スレッド数の大小により、約1.3から
1.7倍、処理回数が向上した。
【0131】本実施例により、オーバーヘッドが減少し
ているため、スレッド数の大小に関わらず処理回数が改
善された。スレッドが多く、システム全体の負荷が大き
くなる状態になると効果が大きくなる。
【0132】上述したように、本実施例では、システム
コール(system call)を使用せずに、テストアンドセッ
ト命令(test and set)を実装することにより、オーバー
ヘッドを減少させ、単独の処理速度を4倍以上、一定時
間内の処理回数を3割以上改善することが出来た。 [参考資料]
【0133】参考資料(1):図10は、アトミックでな
いテストアンドセット命令のシーケンス例である。
【0134】参考資料(2):図11は、ユーザプロセス
2つが同時にクリティカルセクションへ突入するシナリ
オの例である。
【0135】参考資料(3):図12は、di/ei命令を使っ
たテストアンドセット命令のシーケンス例である。
【0136】参考資料(4):図13は、システムを停止
させるプログラムの例である。
【0137】参考資料(5):図14は、ランポートのア
ルゴリズムの例である。
【0138】参考資料(6):図15は、システムコール
による実装の例である。
【0139】参考資料(7):図16は、競合状態にある
場合のシーケンス例である。
【0140】参考資料(8):図17は、ソフトウェアデ
バイスドライバdev/tstで提供されるテストアンドセッ
ト命令tstの手続例である。
【0141】巻末資料(9):図18は、評価用プログラ
ム1を示した図である。
【0142】参考資料(10):図19〜図23は、評価用
プログラム2を示した図である。
【0143】
【発明の効果】以上説明したように、本発明の効果は次
の通りである。
【0144】本発明によれば、マルチジョブを処理する
シングルプロセッサ・システムにおいて、専用命令なし
で、効率良く且つ安全にユーザプロセスレベルで排他制
御を実行できる新規なコンピュータ、その制御方法及び
その制御方法を記録した記録媒体を提供することが出来
る。
【図面の簡単な説明】
【図1】図1は、本発明の対象であるコンピュータの一
例のブロック図を示している。
【図2】図2は、OSの概念図である。
【図3】図3は、コンピュータ資源の同時占有を説明す
る概念図である。
【図4】図4は、ユーザプロセスとカーネルとの関係を
説明する図である。
【図5】図5は、各プロセス間の制御の移り変わりを示
す図である。
【図6】図6は、シングルプロセッサのマルチタスク処
理のフローチャートである。
【図7】図7は、シングルプロッセサのマルチタスク処
理のフローチャートである。
【図8】図8は、処理プログラムの一例のプログラムを
示す図である。
【図9】図9は、アトミック領域への割り込みのシーケ
ンス図である。
【図10】図10は、参考資料としてのアトミックに実
装されていないプログラムを示す図である。
【図11】図11は、参考資料としてのクリティカルセ
クションへ突入するシーケンス図である。
【図12】図12は、参考資料としてのdi/ei命令を使
ったプログラムを示す図である。
【図13】図13は、参考資料としてのシステムを停止
させるプログラムを示す図である。
【図14】図14は、参考資料としてのランポートのア
ルゴリズムを示す図である。
【図15】図15は、参考資料としてのシステムコール
による実装を示すシーケンス図である。
【図16】図16は、参考資料としての競合状態にある
場合のシーケンス図である。
【図17】図17は、参考資料としてのソフトウェアデ
バイスドライバdev/tstで提供されるテストアンドセッ
ト命令tst手続を示す図である。
【図18】図18は、参考資料としての評価用プログラ
ム1を示す図である。
【図19】図19は、参考資料としての評価用プログラ
ム2の1番目の図である。
【図20】図20は、参考資料としての評価用プログラ
ム2の2番目の図である。
【図21】図21は、参考資料としての評価用プログラ
ム2の3番目の図である。
【図22】図22は、参考資料としての評価用プログラ
ム2の4番目の図である。
【図23】図23は、参考資料としての評価用プログラ
ム2の5番目の図である。
【符号の説明】
1:CPU, 2:メモリ, 3:入力装置,
4:出力装置,5:OS, 6:カーネル
───────────────────────────────────────────────────── フロントページの続き (72)発明者 篠原 孝夫 東京都港区赤坂7丁目1番1号 株式会社 ソニー・コンピュータエンタテインメント 内 Fターム(参考) 5B098 GA04 GD15 JJ03

Claims (33)

    【特許請求の範囲】
  1. 【請求項1】 メモリ管理機構を有するOSの管理下
    で、複数のプログラムが動いているコンピュータにおい
    て、 専用のCPU命令を必要とせずに、一方のユーザプロセ
    スのアトミック性を保証する手段を備えた、コンピュー
    タ。
  2. 【請求項2】 請求項1に記載のコンピュータにおい
    て、前記アトミック性を保証する手段は、 他方のユーザプロセスの割り込みを検出する手段と、 OSが有するメモリ保護機能を利用して、一方のユーザ
    プロセスの操作を無効化する手段とを有している、コン
    ピュータ。
  3. 【請求項3】 請求項2に記載のコンピュータにおい
    て、前記アトミック性を保証する手段は、更に前記一方
    のユーザプロセスの操作を再度実行する手段を有してい
    る、コンピュータ。
  4. 【請求項4】 請求項2に記載のコンピュータにおい
    て、 前記割り込みを検出する手段は、OSのカーネルによっ
    て他方のユーザプロセスの割り込みを検出している、コ
    ンピュータ。
  5. 【請求項5】 請求項2に記載のコンピュータにおい
    て、前記無効化する手段は、 一方のユーザプロセスの書き込み用アドレスを所定のレ
    ジスタに一時的に書き込む手段と、 他方のユーザプロセスから割り込みがあったとき、前記
    所定のレジスタの内容を所定の定数に書き換える手段と
    を有している、コンピュータ。
  6. 【請求項6】 請求項5に記載のコンピュータにおい
    て、前記無効化する手段は、更にカーネルが前記所定の
    定数を検出したとき、一方のユーザプロセスをエラーと
    する手段を有している、コンピュータ。
  7. 【請求項7】 請求項5に記載のコンピュータにおい
    て、 前記所定のレジスタは、カーネル用作業レジスタであ
    る、コンピュータ。
  8. 【請求項8】 請求項5に記載のコンピュータにおい
    て、 前記所定の定数は、無効なアドレスである、コンピュー
    タ。
  9. 【請求項9】 請求項1に記載のコンピュータにおい
    て、該コンピュータはカーネル作業用レジスタがユーザ
    プロセスからも利用できるCPUからなる、コンピュー
    タ。
  10. 【請求項10】 メモリ管理機構を有するOSの管理下
    で、複数のプログラが動いているコンピュータの制御方
    法において、 他方のユーザプロセスの割り込みを検出し、 OSが有するメモリ保護機能を利用して、一方のユーザ
    プロセスの操作を無効化して、該一方のユーザプロセス
    のアトミック性を保証する、諸段階を含む、コンピュー
    タの制御方法。
  11. 【請求項11】 請求項10に記載のコンピュータの制
    御方法において、更に前記一方のユーザプロセスの操作
    を再度実行して、前記一方のユーザプロセスのアトミッ
    ク性を保証する、段階を含む、コンピュータの制御方
    法。
  12. 【請求項12】 請求項10に記載のコンピュータの制
    御方法において、 前記割り込みを検出する段階は、OSのカーネルによっ
    て他方のユーザプロセスの割り込みを検出する、コンピ
    ュータの制御方法。
  13. 【請求項13】 請求項10に記載のコンピュータの制
    御方法において、前記無効化する段階は、 一方のユーザプロセスの書き込み用アドレスを所定のレ
    ジスタに一時的に書き込み、 他方のユーザプロセスから割り込みがあったとき、前記
    所定のレジスタの内容を所定の定数に書き換える、諸段
    階を有している、コンピュータの制御方法。
  14. 【請求項14】 請求項10に記載のコンピュータの制
    御方法において、前記無効化する段階は、更にカーネル
    が前記所定の定数を検出したとき、一方のユーザプロセ
    スをエラーとする段階を有している、コンピュータの制
    御方法。
  15. 【請求項15】 請求項13に記載のコンピュータの制
    御方法において、 前記所定のレジスタは、カーネル用作業レジスタであ
    る、コンピュータの制御方法。
  16. 【請求項16】 請求項13に記載のコンピュータの制
    御方法において、 前記所定の定数は、無効なアドレスである、コンピュー
    タの制御方法。
  17. 【請求項17】 請求項10に記載のコンピュータの制
    御方法において、該コンピュータは、カーネル作業用レ
    ジスタがユーザプロセスからも利用できるCPUからな
    る、コンピュータの制御方法。
  18. 【請求項18】 メモリ管理機構を有するOSの管理下
    で、複数のプログラムが動いているコンピュータを制御
    するプログラムが記録された記録媒体において、該プロ
    グラムは、 他方のユーザプロセスの割り込みを検出し、 OSが有するメモリ保護機能を利用して、一方のユーザ
    プロセスの操作を無効化して、該一方のユーザプロセス
    のアトミック性を保証している、諸段階を含む、記録媒
    体。
  19. 【請求項19】 請求項18に記載の記録媒体におい
    て、前記プログラムは、更に前記一方のユーザプロセス
    の操作を再度実行する段階を含む、記録媒体。
  20. 【請求項20】 請求項18に記載の記録媒体におい
    て、 前記他方のユーザプロセスの割り込みを検出する段階
    は、OSのカーネルによって他方のユーザプロセスの割
    り込みを検出している、記録媒体。
  21. 【請求項21】 請求項18に記載の記録媒体におい
    て、前記無効化する段階は、 一方のユーザプロセスの書き込み用アドレスを所定のレ
    ジスタに一時的に書き込む段階と、 他方のユーザプロセスから割り込みがあったとき、前記
    所定のレジスタの内容を所定の定数に書き換える段階と
    を有している、記録媒体。
  22. 【請求項22】 請求項21に記載の記録媒体におい
    て、前記無効化する段階は、更にカーネルが前記所定の
    定数を検出したとき、一方のユーザプロセスをエラーと
    する段階を有している、記録媒体。
  23. 【請求項23】 請求項21に記載の記録媒体におい
    て、 前記所定のレジスタは、カーネル用作業レジスタであ
    る、記録媒体。
  24. 【請求項24】 請求項21に記載の記録媒体におい
    て、 前記所定の定数は、無効なアドレスである、記録媒体。
  25. 【請求項25】 請求項18に記載の記録媒体におい
    て、該コンピュータはカーネル作業用レジスタがユーザ
    プロセスからも利用できるCPUからなる、記録媒体。
  26. 【請求項26】 メモリ管理機構を有するOSの管理下
    で、複数のプログラムが動いているコンピュータを制御
    するプログラムにおいて、 他方のユーザプロセスの割り込みを検出し、 OSが有するメモリ保護機能を利用して、一方のユーザ
    プロセスの操作を無効化して、該一方のユーザプロセス
    のアトミック性を保証している、諸段階を含む、プログ
    ラム。
  27. 【請求項27】 請求項26に記載のプログラムにおい
    て、更に前記一方のユーザプロセスの操作を再度実行す
    る段階を含む、プログラム。
  28. 【請求項28】 請求項26に記載のプログラムにおい
    て、 前記他方のユーザプロセスの割り込みを検出する段階
    は、OSのカーネルによって他方のユーザプロセスの割
    り込みを検出している、プログラム。
  29. 【請求項29】 請求項26に記載のプログラムにおい
    て、前記無効化する段階は、 一方のユーザプロセスの書き込み用アドレスを所定のレ
    ジスタに一時的に書き込む段階と、 他方のユーザプロセスから割り込みがあったとき、前記
    所定のレジスタの内容を所定の定数に書き換える段階と
    を有している、プログラム。
  30. 【請求項30】 請求項29に記載のプログラムにおい
    て、前記無効化する段階は、更にカーネルが前記所定の
    定数を検出したとき、一方のユーザプロセスをエラーと
    する段階を有している、プログラム。
  31. 【請求項31】 請求項29に記載のプログラムにおい
    て、 前記所定のレジスタは、カーネル用作業レジスタであ
    る、プログラム。
  32. 【請求項32】 請求項29に記載のプログラムにおい
    て、 前記所定の定数は、無効なアドレスである、プログラ
    ム。
  33. 【請求項33】 請求項26に記載のプログラムにおい
    て、該コンピュータはカーネル作業用レジスタがユーザ
    プロセスからも利用できるCPUからなる、プログラ
    ム。
JP2001268094A 2000-09-07 2001-09-04 コンピュータ、その制御方法及びその制御方法を記録した記録媒体 Expired - Fee Related JP3598282B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Cited By (5)

* Cited by examiner, † Cited by third party
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