JPWO2008114560A1 - コンピュータ、動作ルール適用方法、オペレーティングシステム - Google Patents

コンピュータ、動作ルール適用方法、オペレーティングシステム Download PDF

Info

Publication number
JPWO2008114560A1
JPWO2008114560A1 JP2009505102A JP2009505102A JPWO2008114560A1 JP WO2008114560 A1 JPWO2008114560 A1 JP WO2008114560A1 JP 2009505102 A JP2009505102 A JP 2009505102A JP 2009505102 A JP2009505102 A JP 2009505102A JP WO2008114560 A1 JPWO2008114560 A1 JP WO2008114560A1
Authority
JP
Japan
Prior art keywords
program
application
operation rule
address range
address
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
JP2009505102A
Other languages
English (en)
Other versions
JP5131563B2 (ja
Inventor
直志 樋口
直志 樋口
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP2009505102A priority Critical patent/JP5131563B2/ja
Publication of JPWO2008114560A1 publication Critical patent/JPWO2008114560A1/ja
Application granted granted Critical
Publication of JP5131563B2 publication Critical patent/JP5131563B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1483Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • 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/468Specific access rights for resources, e.g. using capability register
    • 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/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/542Intercept

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Stored Programmes (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

課題 ライブラリプログラムを含む複数プログラムからなるアプリケーションにおいて、アプリケーションが呼び出すシステムコールの処理の許否を決定できるルールを適用可能なオペレーティングシステムを提供する。解決手段 プログラムをロードしたメモリ上のアドレスをプログラムと対応させてアドレス範囲セットとして記憶し、アプリケーションの起動処理において、各プログラムをメモリ上にロードし、アドレス範囲セットをアドレス範囲セット記憶手段に記憶させ、アプリケーションからのシステムコールの呼び出しを受け、各種の処理を実行し、アプリケーションを構成するプログラムによるシステムコールの利用の可否を記述する動作ルールを記憶し、システムコール処理手段によって呼び出された処理を実行するか否かを、システムコールの呼び出し元のプログラムに対応した動作ルールに基づいて決定する。

Description

本発明は、オペレーティングシステムを搭載するコンピュータに関し、特にアプリケーションを構成する各プログラムの動作を個別に制御するコンピュータ、動作ルール適用方法、オペレーティングシステムに関する。
関連技術としてのオペレーティングシステムの一例が、非特許文献1に記載されている。この非特許文献1に記載のオペレーティングシステムは、アプリケーションを構成するプログラムのうち、プログラムの実行の起点となるプログラムに付与された“タイプ”と呼ばれる分類情報に基づいて、アプリケーションの動作を制御する動作ルールである“ポリシー”を特定することにより、アプリケーションが呼び出すシステムコールの実行を許可するか、禁止するかを決定するよう動作する。
ここで、例えば、あるアプリケーション(仮に、アプリケーションAとする)が、HTTP通信を行うために、HTTP通信ライブラリを利用する場合、アプリケーションAの実行の起点となるプログラムの動作を制御するための動作ルール中に、HTTP通信ライブラリの動作ルールを含めて記述する。
別のアプリケーション(仮に、アプリケーションBとする)が、HTTP通信を行うために、アプリケーションAが利用しているものと同一のHTTP通信ライブラリを利用する場合、アプリケーションAの実行の起点となるプログラムの動作ルールのうち、HTTP通信ライブラリの動作に関して記述した部分を、アプリケーションBの実行の起点となるプログラムの動作ルール中に、HTTP通信ライブラリの動作ルールを、アプリケーションAの動作ルールと同様に含めて再度記述する。
上記の関連技術の場合、特に、HTTP通信ライブラリの動作がバージョンアップなどにより変更された場合、HTTP通信ライブラリの動作ルールも変更が必要となるが、アプリケーションAの実行の起点となるプログラムの動作ルールとアプリケーションBの実行の起点となるプログラムの動作ルールの両方の書き換えが必要となる。
また、特許文献1に記載されている他のオペレーティングシステムでは、アプリケーションの実行の起点となるプログラムのファイルにハードリンクが作成されているなどの理由により、動作ルールの候補が複数個になる場合には、動作ルール群のうち、他の動作ルールの完全部分集合となる動作ルールを適用するよう動作する。また、完全部分集合となる動作ルールが存在しない場合には、最も限定的な動作ルールを適用するよう動作する。
さらに、特許文献2に記載されている装置では、特権命令の実行の可否判定を、特権命令実行時のアドレスがROM領域にあるか、RAM領域にあるかで変化させるよう動作する。この装置はROM領域用の動作ルールと、RAM領域用の動作ルールを個別に指定して、特権命令の実行を制御していると思われる。
特開2004−303243号公報 特許第3763142号 PeterLoscocco, Stephen Smalley. Integrating Flexible Support for Security Policiesinto the Linux Operating System. In Proceedings of the FREENIX Track of the2001 USENIX Annual Technical Conference.
上述した関連技術のオペレーティングシステムにおける動作ルールの適用においては以下に述べるような問題点がある。
第1の問題点は、非特許文献1に記載されているオペレーティングシステムでは、アプリケーションを構成するプログラムが2つ以上存在する場合に、プログラム毎に個別に動作ルールを記述し、アプリケーションの動作を制御することができないということである。
その理由は、アプリケーションを構成するプログラムのうち、アプリケーションの実行の起点となるプログラムについてのみ動作ルールを記述することができ、アプリケーションを構成するその他のプログラムについては動作ルールを記述することができないからである。
第2の問題点は、特許文献1に記載されているオペレーティングシステムでは、アプリケーションの動作ルールを分割して記述して、適用する動作ルールを、実行点がどのプログラムに属しているかに基づいて切り替えることができないことである。
その理由は、適用すべき動作ルールの切り替えは、動作ルールの内容の比較によって行われ、実行点がどのプログラムに属しているかによっては行われないからである。
第3の問題点は、特許文献2に記載されている装置では、柔軟な動作ルールの記述が難しいことである。
その理由は、特権命令の実行のみが動作ルールによる制御対象であり、オペレーティングシステムが提供するシステムコールのような、複雑な処理に対しての動作ルールを記述することができないからである。
第4の問題点は、特許文献2に記載されている装置では、複数の動作ルールのうちいずれの動作ルールを適用するかの判断を、RAM上での実行点のアドレスの違いに従って切り替えることができないということである。
その理由は、実行点のアドレスがROM領域上かRAM領域上かで、適用する動作ルールを切り替えているからである。
(発明の目的)
本発明の目的は、ライブラリプログラムを含む複数のプログラムから構成されるアプリケーションにおいて、プログラムの実行点が個々のプログラムのいずれに属しているかに従って、アプリケーションが呼び出すシステムコールの処理を許可するか否かを決定できるような動作ルールを適用することができるコンピュータ、動作ルール適用方法、オペレーティングシステムを実現することにある。
本発明のオペレーティングシステムを搭載するコンピュータは、アプリケーションを構成する1以上のプログラムをロードしたメモリ上のアドレスをプログラムと対応させてアドレス範囲セットとして記憶するアドレス範囲セット記憶手段と、アプリケーションの起動処理において、アプリケーションを構成する各プログラムをメモリ上にロードし、アドレス範囲セットをアドレス範囲セット記憶手段に記憶させる機能を有するアプリケーションロード手段と、アプリケーションからのシステムコールの呼び出しを受けて、各種の処理を実行するシステムコール処理手段と、アプリケーションを構成するプログラムによるシステムコールの利用の可否を記述する動作ルールを記憶する動作ルール記憶手段と、システムコール処理手段によって呼び出された処理を実行するか否かを、システムコールの呼び出し元のプログラムに対応した動作ルールに基づいて決定する動作ルール適用手段とを含む。
本発明のオペレーティングシステムによる動作ルール適用方法は、アプリケーションを構成する各プログラムをメモリ上にロードする処理において、アプリケーションを構成する各プログラムのメモリ上へのロード先のアドレスをプログラムと対応させてアドレス範囲セットとしてアドレス範囲セット記憶手段に記憶し、アプリケーションからのシステムコールの呼び出しを受けて、各種の処理を実行する際に、アプリケーションを構成するプログラム毎にシステムコールの利用の可否を記述する動作ルールを記憶する動作ルール記憶手段からシステムコールの呼び出し元のプログラムに対応した動作ルールを選択し、システムコールによって呼び出された処理を実行するか否かを決定することにより、アプリケーションを構成する各プログラムに個別に動作ルールを適用する。
本発明のオペレーティングシステムは、アプリケーションを構成する各プログラムをメモリ上にロードする処理において、アプリケーションを構成する各プログラムのメモリ上へのロード先のアドレスをプログラムと対応させてアドレス範囲セットとしてアドレス範囲セット記憶手段に記憶する処理と、アプリケーションからのシステムコールの呼び出しを受けて、各種の処理を実行する際に、アプリケーションを構成するプログラム毎にシステムコールの利用の可否を記述する動作ルールを記憶する動作ルール記憶手段からシステムコールの呼び出し元のプログラムに対応した動作ルールを選択し、システムコールによって呼び出された処理を実行するか否かを決定することにより、アプリケーションを構成する各プログラムに個別に動作ルールを適用する処理とをコンピュータに実行させる。
本発明によれば以下のような効果が実現される。
第1の効果は、アプリケーションの動作を制御する動作ルールを、アプリケーション本体プログラムに関する動作ルールと、アプリケーションが利用するライブラリプログラムに関する動作ルールとに分割して記述できることである。
その理由は、アプリケーションが複数のプログラムから構成されている場合でも、実行時にシステムコール呼び出し元のプログラムを特定して、動作ルールを適用できるためである。
第2の効果は、アプリケーションの動作を制御する動作ルールを、実行点が属するプログラムに従って切り替えることができることである。
その理由は、アプリケーションロード手段が、個々のプログラムをロードしたアドレス範囲を組にしたアドレス範囲セットをアドレス範囲セット記憶手段に記憶させているため、システムコール呼び出し時に、システムコール呼び出し元のアドレスから、そのアドレスがどのプログラムに属しているかを特定できるためである。
第3の効果は、柔軟な動作ルールを記述できることにある。
その理由は、動作ルール適用手段が、システムコール呼び出し時に動作ルールの適用を行うため、特権命令のような小さな処理単位に対してではなく、システムコールという複雑な処理を含む大きな処理単位に対して動作ルールを記述できるからである。
第4の効果は、メモリ上での実行点のアドレスの違いに従って、適用する動作ルールの切り替えができることである。
その理由は、アドレス範囲セット記憶手段が記憶しているアドレス範囲セットに含まれている各アドレス範囲と、実行点のアドレスを比較することにより、適用する動作ルールを切り替え、記憶手段の違いによって切り替えているのではないからである。
本発明の第1の実施の形態のハードウェア構成を示すブロック図である。 本発明の第1の実施の形態によるオペレーティングシステムの機能的な構成を示すブロック図である。 本発明の第1の実施の形態によるアプリケーション、プログラム記憶手段及びアドレス範囲セット記憶手段間の各データの関連を示す図である。 本発明の第1の実施の形態によるアプリケーションプログラムの起動におけるオペレーティングシステムの動作を説明するフローチャートである。 本発明の第1の実施の形態によるアプリケーションプログラムからオペレーティングシステムへ処理依頼が行われた際の動作を説明するフローチャートである。 本発明の第1の実施の形態によるタスク終了時におけるオペレーティングシステムの動作を説明するフローチャートである。 本発明の第2の実施の形態によるアプリケーションプログラムからオペレーティングシステムへ処理依頼が行われた際の動作を説明するフローチャートである。 本発明の第2の実施の形態によるタスク終了時におけるオペレーティングシステムの動作を説明するフローチャートである。 本発明の第3の実施の形態によるオペレーティングシステムの機能的な構成を示すブロック図である。 本発明の実施例のハードウェア構成を示すブロック図である。 本発明の実施例によるオペレーティングシステムの機能的な構成を示すブロック図である。 本発明の実施例によるアドレス範囲セットの内容例を示す図である。 本発明の実施例によるアプリケーションプログラムの起動における動作を説明するフローチャートである。 本発明の実施例によるアプリケーションプログラムからオペレーティングシステムへ処理依頼が行われた際の動作を説明するフローチャートである。 本発明の実施例によるタスク終了時におけるオペレーティングシステムの動作を説明するフローチャートである。
次に、発明の実施の形態について、図面を参照して詳細に説明する。
(第1の実施の形態)
図1を参照すると、本発明の第1の実施の形態は、コンピュータ100によって構成される。
コンピュータ100は、プログラム制御により動作する中央演算装置101と、コンピュータ100への電源投入直後に中央演算装置101を制御するためのプログラム(初期化プログラム)を永続的に記憶するROM装置102と、中央演算装置101を制御するプログラム及び当該プログラムによって処理されるデータを一時的に記憶する主記憶装置103と、中央演算装置101を制御するためのプログラム及び当該プログラムによって処理されるデータを永続的に記憶する二次記憶装置104とを備えて構成されている。
ROM装置102及び主記憶装置103上に記憶されているプログラムは、中央演算装置101上でそのまま実行可能であるが、二次記憶装置104上に記憶されているプログラムは、そのままでは中央演算装置101上では実行することができず、主記憶装置103上にロードすることによって初めて実行可能となる。
コンピュータ100には、周辺機器110が接続されている。この周辺機器は、必須ではなくかつその構成も必要に応じて変形可能である。
周辺機器110の構成例としては、図示のような、ユーザ120からの入力を受け付けるキーボードやマウスに代表される入力装置111や、ユーザへの情報出力を行うディスプレイ装置に代表される出力装置112や、通信ネットワーク130を介しての通信を行うネットワークインタフェース装置113などが挙げられる。
上述した各構成要素はそれぞれ概略以下のように動作する。
中央演算装置101は、まずROM装置102中に記憶されている初期化プログラムを実行する。初期化プログラムを実行することにより、二次記憶装置104中に記憶されているオペレーティングシステムが、主記憶装置103上にロードされ、中央演算装置101によって実行可能な状態となる。
以降の動作の概略について図2を参照して説明する。
図2は、コンピュータ100上でオペレーティングシステムを動作させ、さらにオペレーティングシステムの管理下においてアプリケーションプログラムを動作させることによって実現される、本発明の機能的な構成を示すブロック図である。
オペレーティングシステム200は、中央演算装置101上で実行されるソフトウェアとして構成され、アプリケーション210の動作に必要な基本機能を提供する。
ここで基本機能とは、ファイルのオープン、クローズ、シーク、リード、ライトなどの処理や、コンピュータ100に接続された周辺機器110の制御などを多岐にわたるが、当業者にとって既知の事柄であるためそれらの詳細な説明は省略する。
アプリケーション210は、中央演算装置101上で実行されるソフトウェアとして構成され、オペレーティングシステム200が提供する基本機能をシステムコール処理手段204を介して利用することにより、所望の目的を達成する。
プログラム記憶手段220は、二次記憶装置104へのデータの読み書きをオペレーティングシステム200が管理する(ファイルシステムと呼ばれることが多い)ための機能を実現し、アプリケーション210の動作を記述したプログラムを記憶するよう動作する。
動作ルール記憶手段230は、二次記憶装置104へのデータの読み書きをオペレーティングシステム200が管理するための機能を実現し、アプリケーション210が動作する際に遵守すべき動作ルールを、アプリケーション210を構成する個々のプログラムの単位で記憶する。
ここでいう動作ルールは、アプリケーション210を構成する各部分(本体部分、それぞれのライブラリ部分)が利用することができるリソースの一覧(読み書きが許可されているファイルの一覧など)、及び、利用することができるリソースの量(CPU占有時間、主記憶装置の容量、二次記憶装置の容量など)の上限・下限を記述したものである。なお、動作ルールは、ポリシーと呼ばれる場合もある。
アプリケーション210が、リソースを利用する場合には、オペレーティングシステム200を介してリソースにアクセスするものとする。ここで、オペレーティングシステムを介さずにリソースにアクセスできるような、リソース管理の緩いオペレーティングシステムも存在するが、そのような場合には、オペレーティングシステムを介さずにアクセスできるリソースについては動作ルールを記述できないものとする。
アプリケーションロード手段201は、オペレーティングシステム200内のソフトウェアモジュールとして構成され、アプリケーション210を構成するプログラムを主記憶装置103上に適切にロードして、中央演算装置101上で実行できるようにすることでアプリケーション210を有効な状態にするよう動作する。
なお、アプリケーション210の動作を記述したプログラムは、1個である場合もあり得るが、現状の大多数のアプリケーションプログラムは複数のプログラム(1個のアプリケーション本体部分211、及び、1個以上のライブラリ部分212)から構成されている。
ここで、ライブラリプログラムは、複数のアプリケーションプログラムから共通に利用されることも多く、そのようなライブラリプログラムはシェアードライブラリ(共有ライブラリ)と呼ばれる。
また、アプリケーションロード手段201は、前記のロード動作に付随した内部動作として、アプリケーション210を記述したアプリケーション本体部分211とライブラリ部分212を主記憶装置103上にロードした際のアドレス範囲を、アプリケーション本体部分211とライブラリ部分212についてアドレス範囲セットとして登録し、アドレス範囲セット記憶手段202に記憶させるように動作する。
ここで、アドレス範囲とは、個々のプログラムに対して定義され、プログラムを一意に識別するID値と、プログラムがロードされたアドレスの上限値及び下限値を1組にしたデータである。
また、アドレス範囲セットとは、アプリケーション210のID値及びアプリケーション本体部分211とライブラリ部分212を構成する全てのプログラムについての、アドレス範囲を1組にしたものである。
アプリケーション210のID値としては、オペレーティングシステム200がアプリケーション210を管理するための単位である、タスクID、もしくはプロセスIDなどを用いることが好適である。
プログラムのID値としては、プログラムのファイル名を用いることができる。
アドレス範囲セット記憶手段202は、主記憶装置103上の一部への読み書きを、オペレーティングシステム200が管理するための機能として実現され、アプリケーションロード手段201から指定されたアプリケーション本体部分211とライブラリ部分212のアドレス範囲を含む、アドレス範囲セット203を記憶するよう動作する。
さらに、個々のアドレス範囲セット203は、後述する呼び出し元プログラム特定手段207によって読み取られる。
また、個々のアドレス範囲セット203は、必要に応じてアプリケーション後述する終了監視手段208によって消去される。
システムコール処理手段204は、オペレーティングシステム200内のソフトウェアモジュールとして構成され、アプリケーション210からの処理依頼を受理し、処理依頼に応じてオペレーティングシステム200が備える基本機能を実行するよう動作する。
なお、システムコールは、APIやサービスコールと呼ばれる場合もある。
前述したアプリケーションプログラムからのリソースの利用は、上記システムコール処理手段204を介して行われる。
ここで、システムコール処理手段204は、アプリケーション210からの処理依頼に対し、常にオペレーティングシステム200が備える基本機能を実行するのではなく、場合によっては処理依頼を拒否するようにも動作する。処理依頼を受理するか拒否するかの判断は動作ルール適用手段205によってなされる。
動作ルール適用手段205は、システムコール処理手段204内のソフトウェアモジュールとして構成され、呼び出し元アドレス特定手段206と呼び出し元プログラム特定手段207を有している。
動作ルール適用手段205は、動作ルール記憶手段230に記憶されている動作ルールを読み込み、その動作ルールに従って、アプリケーション210からの処理依頼の受理もしくは拒否を決定するよう動作する。
その際、動作ルール適用手段205は、呼び出し元アドレス特定手段206によって、処理依頼の発生元のアドレスを特定し、呼び出し元プログラム特定手段207によって、前記アドレスに対応するプログラムを特定することにより、処理依頼に対して適用すべき動作ルールを特定するよう動作する。
アプリケーション終了監視手段208は、オペレーティングシステム200内のソフトウェアモジュールとして構成され、アプリケーション210を監視し、アプリケーション210の動作が終了した時点で、主記憶装置103上からアプリケーション210を消去し、さらに、アドレス範囲セット記憶手段202から対応するアプリケーション210のアドレス範囲セット203を削除するよう動作する。
図3を参照して、アドレス範囲セットについてさらに詳細に説明する。
オペレーティングシステムによっては、ある時点で複数のアプリケーションプログラムを有効にする機能を備えている。このような機能を備えたオペレーティングシステムをマルチタスクオペレーティングシステムと呼ぶ。マルチタスクオペレーティングシステムは当業者にとって既知の技術であり、詳細な説明は省略する。
オペレーティングシステム200がマルチタスクオペレーティングシステムである場合、ある時点で複数のアプリケーションプログラムが主記憶装置103上に配置された状態となる。
よって、アドレス範囲セット203は、複数のアプリケーションプログラムのそれぞれについて生成され、記憶される必要がある。
ここで図3は、マルチタスクオペレーティングシステム上で、アプリケーション(A)310とアプリケーション(B)320が有効になっている状態を図示したブロック図である。
アプリケーション(A)310は、アプリケーション(A)本体部分311とライブラリ(A)部分312とライブラリ(S)部分323からなっており、マルチタスクオペレーティングシステムによって、タスクID=1が割り振られて管理されている。
アプリケーション(B)320は、アプリケーション(B)本体部分321とライブラリ(B)部分322とライブラリ(S)部分323からなっており、マルチタスクオペレーティングシステムによって、タスクID=2が割り振られて管理されている。
ここで、ライブラリ(S)部分323は共有ライブラリである。
プログラム記憶手段300は、以下の各プログラムを記憶している。
(1)アプリケーション(A)本体プログラム301
(2)アプリケーション(B)本体プログラム302
(3)ライブラリ(A)プログラム303
(4)ライブラリ(B)プログラム304
(5)ライブラリ(S)プログラム305
これらのプログラムは図3に示すようにロードされ、各アプリケーションの一部となる。
アドレス範囲セット記憶手段330は、各アプリケーションについて、タスクIDをキー値として、個別にアドレス範囲セットを記憶している。
これによって、マルチタスクオペレーティングシステムによる複数アプリケーションプログラムの有効化に対応するができると共に、シェアードライブラリ(ライブラリプログラム)にも対応することができる。
シェアードライブラリは、概念的にはアプリケーション(A)310とアプリケーション(B)320のそれぞれにロードされているのと同様に振舞うが、主記憶装置103上に存在するシェアードライブラリ(ライブラリプログラム)は単一である。
しかし、タスクIDと組み合わせて記憶することにより、呼び出し元プログラム特定手段207は、処理依頼の発生元を正しく判定することができる。
次いで、本発明の第1の実施の形態による動作について、図を参照して説明する。
図4を参照して、アプリケーションプログラムの起動について説明する。
まず、オペレーティングシステム200は、アプリケーションプログラムの動作単位である、タスクを生成する(ステップ400)。
次に、オペレーティングシステム200内のアプリケーションロード手段201は、アプリケーション本体プログラムをロードする(ステップ401)。ここで、アプリケーション本体プログラムが見つからないなどの理由で、ロードに失敗した場合には(ステップ402)、アプリケーションプログラムの起動は失敗終了となる(ステップ403)。
アプリケーションロード手段201は、アプリケーションプログラムのためのアドレス範囲セット203を作成し、タスクIDをアドレス範囲セット203に設定し、アプリケーション本体プログラムのアドレス範囲をアドレス範囲セットに追加する(ステップ404)。
アプリケーションロード手段201は、アプリケーション本体プログラムを解析し、必要なライブラリプログラムをリストアップする(ステップ405)。
ここで、必要なライブラリプログラムのリストは、アプリケーション本体プログラムの作成時にアプリケーション本体プログラム内に記録される。この記録方法は、アプリケーション本体プログラムのファイルの形式(例えば、AOUT形式、ELF形式など)によって異なるが、当業者にとっては既知の事柄であるので、詳細な説明は省略する。
アプリケーションロード手段201は、必要なライブラリプログラムが全てロードされるまで、ロード処理を行う(ステップ406、407、408)。
また、アプリケーションロード手段201は、ロードしたライブラリプログラムのアドレス範囲をアドレス範囲セットに追加する(ステップ410)。
ここで、必要なライブラリが見つからず(何らかの手違いで、プログラム記憶手段中に存在しないなど)、ライブラリプログラムのロードに失敗した場合には(ステップ408)、アプリケーションプログラムの起動処理は失敗終了する(ステップ409)。
アプリケーションロード手段201は、ロードしたアプリケーション本体プログラム、ライブラリプログラムのアドレス範囲とプログラムのID(前述したようにファイル名を用いるのが好ましい)とをタスクIDと組にして、アドレス範囲セット203として登録する(ステップ411)。
上記全ての作業が完了した後に、オペレーティングシステム200は、アプリケーションプログラムの処理を開始させる(ステップ412)。
図5を参照して、アプリケーションプログラムからオペレーティングシステム200へ処理依頼が行われた際の動作について説明する。
アプリケーションプログラムからの処理依頼を受け、オペレーティングシステム200は、システムコール処理手段204によってシステムコールの処理を開始する(ステップ500)。
オペレーティングシステム200は、処理依頼元のタスクIDを特定する(ステップ501)。オペレーティングシステム200はタスクを管理しているため、タスクIDの特定は可能である。
例えば、あるオペレーティングシステムでは全てのタスクを「タスク管理構造体」というデータ構造で管理しており、かつ、現在実行中のタスクを「カレントタスク」として、カレントタスクのタスク構造体のアドレスを記憶している。処理依頼を行ったタスクは、つまり実行中タスクであるので、カレントタスクのタスク構造体中のID値を調べることにより、タスクIDを知ることができる。
処理依頼元のタスクIDの特定方法は、個々のオペレーティングシステムの実装形態に依存し、上記の方法とは異なる場合があるが、当業者にとっては既知の事柄であるので詳細な説明は省略する。
オペレーティングシステム200は、動作ルール適用手段205の呼び出し元アドレス特定手段206によって処理依頼元のアドレスを特定する(ステップ502)。
処理依頼が、いわゆる「関数呼び出し」によって行われた場合には、関数のコールスタック中に呼び出し元のアドレスが保存されているため、処理依頼元のアドレスを特定することが可能である。
処理依頼が、いわゆる「ソフトウェア割り込み」によって行われた場合には、ソフトウェア割り込みを発生させたアドレスはCPUの機能により自動的にスタックへと退避されるため、スタック中の値を調べることにより、処理依頼元のアドレスを特定することが可能である。
なお、アドレスを指す名称が「インストラクションポインタ」「プログラムカウンタ」などのようにCPUの種類によって異なっていたり、「ソフトウェア割り込み」の用語がCPUによっては「例外」と呼ばれることがあるが、当業者にとっては既知の事柄であり、処理の方法には差が無いので、詳細な説明は省略する。
また、CPUの種類によっては、割り込みを発生させたアドレスを、スタックに退避させるのではなく、退避用レジスタに退避させる場合があるが、その場合、退避用レジスタ中の値を調べることにより、同様に処理依頼元のアドレスを特定することが可能である。このことは当業者にとっては既知の事柄であり、これ以上の詳細な説明は省略する。
オペレーティングシステム200は、上記処理依頼元のタスクIDと、処理依頼元のアドレスを元に、呼び出し元プログラム特定手段207によって処理依頼元のプログラムを特定する(ステップ503)。
プログラムの特定においては、まず、アドレス範囲セットに対して、処理依頼元のタスクIDキー値として検索を行う(つまり、キー値と等しいタスクIDを持つアドレス範囲セットをアドレス範囲セット記憶手段中202から特定する)。
次に、前記の特定したアドレス範囲セット中から、処理依頼元アドレスを、アドレス範囲に含むプログラムを特定する。これによって、処理依頼元のプログラムを特定することができる。
オペレーティングシステム200は、動作ルール適用手段205によって上記の特定したプログラムをキー値として、動作ルール記憶手段230を検索し、動作ルールを特定する(ステップ504)。
動作ルールは、プログラムをキー値として記憶されているため、適用すべき動作ルールを検索によって特定することができる。
動作ルールには、前述したように、利用可能なリソースの一覧と、利用可能なリソース量の上限・下限が記述されている。
オペレーティングシステム200は、動作ルール適用手段205によって上記のように特定した動作ルールと、処理依頼の内容を比較して、処理の可否を判定する(ステップ505)。
処理の可否の判定結果が、否であれば、オペレーティングシステム200は処理依頼を拒否する(ステップ506)。
処理の可否の判定結果が、可であれば、オペレーティングシステム200は処理依頼を受理する(ステップ507)。
オペレーティングシステム200は、オペレーティングシステム200が備える基本機能のうち、受理した処理依頼に対応する基本機能を実行する(ステップ508)。
図6を参照して、タスク終了時の動作について説明する。
オペレーティングシステム200は、アプリケーション終了監視手段208によってアプリケーション210の終了を検知する(ステップ600)。
ここで、アプリケーション210の終了には、1)アプリケーション210が、処理の終了をオペレーティングシステム200に対して自己申告する場合と、2)アプリケーション210の異常動作をオペレーティングシステム200が検知し、その結果としてオペレーティングシステム200によってアプリケーション210が強制終了させられる場合とが考えられる。
1)の場合には、オペレーティングシステム200は、アプリケーション210の申告により、終了を検知することができる。ここでの申告は、システムコールを通じた処理依頼によってなされるのが通常である。これらの技術的内容については当業者にとって既知の事項であるので、詳細な説明を省略する。
2)の場合には、オペレーティングシステム200は、自身がアプリケーション210を終了させることからアプリケーション210の終了を検知することができる。ここで、異常検知については、CPUに内蔵されたメモリ管理ユニットによる、アプリケーション210のメモリアクセス違反や、前述した動作ルールに違反した処理依頼などが考えられる。異常検知の種類は多数であり、かつ、当業者にとって既知の事項であるので、これ以上の詳細な説明は省略する。
オペレーティングシステム200は、アプリケーション終了監視手段208によって終了したアプリケーション210のタスクIDを特定する(ステップ601)。
オペレーティングシステム200は、タスクを管理しているので、アプリケーション210のタスクIDを特定することが可能である。アプリケーション210が終了をオペレーティングシステム200に自己申告した場合及びアプリケーション210が異常終了した場合のいずれにおいても、オペレーティングシステム200が管理している、現在実行中のタスク(いわゆるカレントタスク)のタスクIDをもって、終了したアプリケーション210のタスクIDとすることができる。これらの技術的事項は当業者にとっては既知の事項であるので、これ以上の詳細な説明は省略する。
オペレーティングシステム200のアプリケーション終了監視手段208は、終了したアプリケーション210のタスクIDをキー値にして、対応するアドレス範囲セット203を特定し、当該アドレス範囲セットをアドレス範囲セット記憶手段202から削除する(ステップ602)。
オペレーティングシステム200は、終了したアプリケーション210のタスクを消去する(ステップ603)。この処理は、前述したタスク構造体の消去などの処理を含むが、オペレーティングシステム200の種類毎に処理内容が異なり、かつ、それらは当業者にとって既知の事項であるので、これ以上の詳細な説明は省略する。
上記のように、本実施の形態によるオペレーティングシステムによれば、アプリケーション本体プログラム向けのアプリケーション本体動作ルール231と、ライブラリプログラム向けのライブラリ動作ルール232を個別に動作ルール記憶手段230に記憶し、アプリケーションプログラム起動時にアプリケーション本体プログラムとライブラリプログラムをロードしたアドレス範囲を含むアドレス範囲セットをアドレス範囲セット記憶手段202に記憶し、システムコールの処理依頼の発信元のタスクIDとアドレスを特定して、適用すべき動作ルールを決定することにより、アプリケーションプログラムに対してアプリケーション本体プログラム向け動作ルールとライブラリプログラム向け動作ルールを適切に適用することが可能となる。
なお、本発明のオペレーティングシステムでは、アプリケーションを構成するプログラムを、主記憶装置103にロードするたびに、ロードしたプログラムのアドレス範囲が変わる。このため、ロードしたアドレス範囲とプログラムのIDとを対にしてアドレス範囲セットしてロードする度に記憶するようにしている。
また、本発明の実施の形態における、主記憶装置103へのプログラムのロードは、コンピュータ100を起動する度に毎回実行されるアプリケーション起動動作であり、そのアプリケーションの起動時に、プログラムのアドレス範囲セットに基づいて特定される動作ルールを適用するものである。
(第2の実施の形態)
本発明の第2の実施の形態について説明する。
本発明の第1の実施の形態においては、いわゆるマルチタスク向けのオペレーティングシステムを前提にして説明したが、本発明はシングルタスク向けのオペレーティングシステムにおいても適用することが可能である。
システム構成及びオペレーティングシステムの機能的な構成については、図2及び図3に示す第1の実施の形態と同様であるので、ここではそれらの説明を省略する。
シングルタスク向けのオペレーティングシステムに本発明を適用する場合には、ある時点々々で1つのアプリケーションプログラムだけが有効であるため、タスクIDは存在しない。
よって、アドレス範囲セット203には、タスクID値が含まれず、アドレス範囲セット記憶手段202中には、ある時点々々において1つのアドレス範囲セットだけが存在することになる。
その場合、処理依頼元のプログラムを特定する動作においては、処理依頼元のアドレスだけがわかれば十分である。
本実施の形態においては、アドレス範囲セット203にアプリケーション毎のタスクIDがセットされないだけであり、アプリケーションプログラムの起動の動作については、図4に示した第1の実施の形態と同様である。
また、アプリケーションプログラムからオペレーティングシステム200へ処理依頼が行われた際の動作は、図7のフローチャートに示すように、第1の実施の形態の動作を示す図5におけるステップ501のオペレーティングシステム200による処理依頼元のタスクIDを特定する処理が省略されるだけであり、それ以降の処理(ステップ502〜508)については第1の実施の形態と同様である。
さらに、タスク終了時の動作については、図8のフローチャートに示すように、第1の実施の形態の図6におけるステップ601のオペレーティングシステム200が終了したアプリケーション210のタスクIDを特定する処理が省略されるだけであり、それ以外の処理(ステップ602〜603)については第1の実施の形態と同様である。
(第3の実施の形態)
本発明の第3の実施の形態について説明する。
本発明の第1の実施の形態においては、アプリケーションプログラムの起動時に、アプリケーション本体プログラム221とライブラリプログラム222をロードしているが、オペレーティングシステム200の種類によっては、アプリケーションプログラムの起動の後、アプリケーションプログラム実行中にライブラリプログラム222をロードする機能を持つものがある。
このようにアプリケーションプログラムの実行中にロードされるライブラリプログラムを動的リンクライブラリと呼ぶ。
本発明の第3の実施の形態においては、このような動的リンクライブラリに対しても個別に記述した動作ルールを適用することが可能である。
図9は、第3の実施の形態によるオペレーティングシステム200の機能的な構成例を示すブロック図である。
アプリケーションプログラムが実行中にオペレーティングシステムに対し、動的リンクライブラリをロードするため、システムコールの処理依頼を発行すると、動的リンクライブラリロード手段201aが動的リンクライブラリ(ライブラリプログラム222)のロードを行う。ここで、オペレーティングシステムの種類によって、図9に示すように、動的リンクライブラリロード手段201aとアプリケーションロード手段201が別のソフトウェアモジュールで構成されていてもよいし、アプリケーションロード手段201が動的リンクライブラリロード手段301aを兼ねる構成であってもよい。
動的リンクライブラリロード手段201aは、ロードの際に、処理依頼発行元のアプリケーションプログラムのタスクIDをキー値にして、アプリケーションプログラムのアドレス範囲セットを特定し、アドレス範囲セット203に動的リンクライブラリをロードしたアドレス範囲(アドレス値の上限・下限・プログラムIDを含む)を追記して、アドレス範囲セット記憶手段202に書き戻す。
第3の実施の形態に示すように、本発明は動的リンクライブラリをロードする機能を持つオペレーティングシステムに対しても適用することが可能である。
(第4の実施の形態)
本発明の第4の実施の形態について説明する。
本発明の第1の実施の形態においては、アプリケーション本体プログラムとライブラリプログラムに対して個別に動作ルールを記述し、それぞれの動作ルールの中には利用してよいリソースの種類と利用してよいリソースの量の上限・下限を記述しているが、この第4の実施の形態においては、第1の実施の形態での動作ルールの記述方式に加えて、ライブラリプログラムのライブラリ動作ルール232の記述の仕方として「アプリケーション本体プログラムの動作ルールに従う」という内容の動作ルールの記述を認める構成としている。
システム構成及びオペレーティングシステムの機能的な構成については、図2及び図3に示す第1の実施の形態と同様であるので、ここではそれらの説明を省略する。
このような第4の実施の形態は、汎用のシェアードライブラリについての動作ルール記述においてとても有用である。
例えば、C言語標準関数群を実装したライブラリプログラム222(いわゆる、libc)等においては、汎用ライブラリプログラムであることから、利用しうるリソースの種類と量共に多岐にわたる。全ての動作を許可するような動作ルールを記述すると、ライブラリプログラムを用いるアプリケーションプログラムの動作を制限できず、ライブラリプログラムを用いるアプリケーションプログラムはどのような動作も可能となってしまう。
しかし、許可するのが全ての動作ではない動作ルールをライブラリプログラムの動作ルールとして記述した場合には、正常動作できないアプリケーションプログラムが発生してしまう可能性がある。
そこで、ライブラリプログラム222(例えば、libc)のライブラリ動作ルール232として、「アプリケーション本体プログラム221の動作ルールに従う」という動作ルールを記述することにより、動作ルールの観点からは、ライブラリプログラム(例えば、libc)をアプリケーション本体プログラムと一体として扱うことができ、ライブラリプログラム(例えば、libc)の汎用性を損なうことなく、個々のアプリケーションプログラムに適した動作ルールを記述することができるようになる。
(第5の実施の形態)
本発明の第5の実施の形態について説明する。
本発明の第1の実施の形態においては、プログラム記憶手段220と動作ルール記憶手段230を別個の手段としていたが、プログラムと動作ルールを両方とも記憶できる汎用の記憶手段によって構成してもよい。例えば、プログラムと動作ルールをファイルとして管理する場合には、このように1個のファイルシステム上にプログラムと動作ルールを記憶するのが自然な形態である。
また、さらにプログラム(アプリケーション本体プログラム221、ライブラリプログラム222)と、そのプログラムと対になる動作ルール(アプリケーション本体動作ルール231、ライブラリ動作ルール232)を、一体として記憶する構成としてもよい。つまり、プログラムファイル(アプリケーション本体プログラム221、ライブラリプログラム222)中に、動作ルール(アプリケーション本体動作ルール231、ライブラリ動作ルール232)の内容も含まれて、1個のファイルとして管理しても良い。
次に、本発明の具体的な実施例について説明する。
本実施例では、PC(コンピュータ)700上にインストールした、POSIX準拠、もしくはそれに近いUNIX(登録商標)類似のオペレーティングシステムに、本発明を適用した例を示す。
図10を参照して、本実施例のハードウェア構成について説明する。
PC700は、CPU(中央演算装置)701と、BIOS(ROM装置)702と、DRAM(主記憶装置)703と、HDD(二次記憶装置)704から構成され、周辺機器710としてマウス/キーボード(入力装置)711と、ビデオカード(出力装置)712と、Ethernet(登録商標)インタフェースカード(ネットワークインタフェース装置)713が接続されている。
ビデオカード712には、ディスプレイ714が接続されており、PC700からの画像出力が可能となっている。
また、Ethernet(登録商標)インタフェースカード713は、LAN730に接続され、PC700はLAN730を通じて通信を行うことができる。
ユーザ720はマウス/キーボード711を通じてPC700を操作し、操作の結果をディスプレイ714を通じて確認する。
図11に本実施例によるオペレーティングシステム800の機能的な構成を示す。
オペレーティングシステム800は、HDD704中に記憶されており、PC700の起動時にBIOS702中に記憶されている初期化ルーチンを実行することにより、DRAM703上にロードされる。ロードされた以降はオペレーティングシステム800がPC700を管理する基本ソフトウェアとして動作する。
オペレーティングシステム800は、AOUT形式のプログラムを実行するためのAOUTアクティベータ801と、アドレス範囲セット803を記憶するためのアドレス範囲セット記憶手段であるアドレス範囲セット管理用データ構造体802と、システムコールの処理を行うシステムコール処理モジュール804と、プロセスの終了を監視するためのプロセス終了監視モジュール808とを備える。
システムコール処理モジュール804は、サブモジュールとして動作ルール適用モジュール805を備え、さらに動作ルール適用モジュール805は、サブモジュールとしてソフトウェア割り込み発生アドレス特定モジュール806とシステムコール発生元プログラム特定モジュール807とを備える。
ソフトウェア割り込み発生アドレス特定モジュール806は、システムコールの発生元アドレスを、ソフトウェア割り込みの発生元アドレスから特定する機能を備える。
システムコール発生元プログラム特定モジュール807は、プロセスIDをキー値にしてアドレス範囲セット管理用データ構造体802を検索してアドレス範囲セットを特定し、得られたアドレス範囲セット中の各アドレス範囲とシステムコールの発生元アドレスを比較することにより、システムコールの発生元プログラムを判定する機能を備える。
動作ルール適用モジュール805は、システムコールの発生元プログラムに対応した動作ルールを適用し、システムコールの処理の可否を判定する。
なお、本実施例で扱っているUNIX(登録商標)類似のオペレーティングシステムは、通常は、仮想記憶の機能を有している。この場合、オペレーティングシステムはアドレスとして、仮想アドレスと実アドレス(物理アドレス)の2種類のアドレスを管理し、相互に変換を行っている。仮想記憶については、当業者にとって既知の事柄であるので、これ以上の詳細な説明は避けるが、本実施例におけるアドレスは、特に断りが無い限り仮想アドレスをさすものとする。
本実施例において仮想アドレスに着目する理由は、プログラムが配置されているアドレスについて、実アドレスを用いた場合、例えばスワップ動作などにより、プログラムの実行中に変化する可能性があるが、仮想アドレスは変化しないためである。
アドレス範囲とシステムコール発生元アドレスとの比較処理において、プログラムの配置されているアドレスが、アプリケーションプログラムの起動時から終了時まで変化しないことが本実施例の動作に必要である。
アドレス範囲セット管理用データ構造体802は、PIDをキー値としてアドレス範囲セットを特定できるようなデータ構造として構成される。一例としては、PIDをキー値とした二分木データ構造をDRAM703上に構成するというものが挙げられる。
アプリケーションの例としてはWebブラウザアプリケーション(以下、単にブラウザアプリケーション810と呼ぶ)を用いた場合を示している。
ブラウザアプリケーション810は、ブラウザ本体部分811とHTTPライブラリ部分812から構成される。
HTTPライブラリ部分812は、HTTPに準拠した通信を行うことにより、通信ネットワークを介してWebページ記述データを取得する機能を、ブラウザ本体部分811に対して提供する。
ブラウザ本体部分811は、Webページ記述データに従って、Webページをディスプレイ714に表示する機能を備える。また、ブラウザアプリケーション810はユーザ720がマウス/キーボード711を介して行う操作を受け、必要に応じて、次に表示すべきWebページの記述データの取得を、HTTPライブラリ部分812に依頼する機能を備える。
ブラウザ本体部分811のプログラムは、ブラウザ本体プログラム821であり、プログラムのIDはプログラムを記録したファイルのフルパス名(/bin/browser)とする。
また、HTTPライブラリ部分812のプログラムは、HTTPライブラリプログラム822であり、プログラムのIDは、プログラムを記録したファイルのフルパス名(/lib/libhttp)とする。
それぞれのプログラムは、AOUT形式で編成されており、ファイルシステム820上に記憶されている。ファイルシステム820は、HDD704へのデータの読み書きをオペレーティングシステム800が管理することによって実現される。
ブラウザ本体部分811の動作ルールは、ブラウザ本体動作ルール823である。
また、HTTPライブラリ部分812の動作ルールは、HTTPライブラリ動作ルール824である。
それぞれの動作ルールは、ファイルシステム820上にファイルとして記憶されている。
本実施例では、ブラウザ本体動作ルール823には、ブラウザ本体部分811のIDがフルパス名(/bin/browser)であることが記述され、さらに、ブラウザ本体部分811がディスプレイ714への画像を出力すること、及び、ブラウザ本体部分811がマウス/キーボード711を介したユーザ720からの入力を受け取ることを許可する内容が記述されている。
また、HTTPライブラリ動作ルール824には、HTTPライブラリ部分812のIDがフルパス名(/lib/libhttp)であることが記述され、さらに、HTTPライブラリ部分812がIP通信を行うことを許可する内容が記述されている。
本実施例においては、上記以外の明示的に許可されていない動作については、禁止されているものとして説明する。
次に、図13、図14、図15を参照し、本実施例の動作について説明する。
図13のフローチャートを参照してブラウザアプリケーション810の起動処理について説明する。
ブラウザアプリケーション810の起動処理において、オペレーティングシステム800は、まずプロセスを生成する(ステップ1000)。
この際にオペレーティングシステム800は、プロセスに管理用のID値としてPID(プロセスID)を割り振る。
以下の説明では、PIDとして「1024」が割り振られたものとして説明を行う。
次に、オペレーティングシステム800は、AOUTアクティベータ801を用いて、ブラウザ本体プログラム821をプロセス(PID=1024)の実行コードとしてロードする(ステップ1001)。
以下の説明においては、アドレス値として「0x8048000」から「0x080dc000」の間の領域にロードすることに成功したものとして説明を行う。
もし、ブラウザ本体プログラム821のロードに失敗したならば失敗終了となり、ブラウザアプリケーション810は起動されない(ステップ1002、1003)。
AOUTアクティベータ801は、ブラウザアプリケーション810のためのアドレス範囲セット803を作成し、PIDとして「1024」を設定し、ブラウザ本体プログラム821のアドレス範囲を追加する(ステップ1004)。
AOUTアクティベータ801は、ブラウザ本体プログラム821を解析し、必要なライブラリプログラムをリストアップする(ステップ1005)。
以下の説明においては、ブラウザ本体プログラム821に必要なライブラリプログラムはHTTPライブラリ部分812であるとして説明を行う。
AOUTアクティベータ801は、ブラウザ本体プログラム821がHTTPライブラリ部分812を必要としているため、HTTPライブラリプログラム822をプロセス(PID=1024)の実行コードとして追加ロードする(ステップ1006、1007、1008)。
また、AOUTアクティベータ801は、HTTPライブラリプログラム822のアドレス範囲を、アドレス範囲セット803に追加する(ステップ1010)。
以下の説明においては、アドレス値として「0x40016000」から「0x4001c000」の間の領域にロードすることに成功したものとして説明を行う。
もし、HTTPライブラリプログラム822のロードに失敗したならば失敗終了となり、ブラウザアプリケーション810は起動されない(ステップ1009)。
AOUTアクティベータ801は、ブラウザアプリケーション810のアドレス範囲セット803をアドレス範囲セット管理用データ構造体802に登録する(ステップ1011)。
ここで、アドレス範囲セット803の内容の詳細は、図12のアドレス範囲セット803に模式的に示すように、PID=1024、プログラムID=/bin/browserのプログラムをロードしたアドレス範囲は、0x08048000〜0x080dc000、プログラムID=/lib/libhttpのプログラムをロードしたアドレス範囲は、0x040016000〜0x4001c000というものである。
AOUTアクティベータ801は、プログラムのロードと、アドレス範囲セットの登録が終了した後に、ブラウザアプリケーション810の動作を開始させる(ステップ1012)。
ブラウザアプリケーション810は、動作中に、必要に応じてオペレーティングシステム800が備える基本機能を利用するため、システムコール呼び出しを行う。
このブラウザアプリケーション810からオペレーティングシステム800へシステムコール呼び出しが行われた際の動作について図14を参照して説明する。
この呼び出しは、ソフトウェア割り込みを発生させることによって行われる。割り込みが発生するとオペレーティングシステム800でトラップされ、オペレーティングシステム800内に処理の実行点が移ることになる。なお、システムコールの実装をソフトウェア割り込みによって行うことは、当業者にとって既知の事項であるため、これ以上の詳細な説明は省略する。
ブラウザアプリケーション810のシステムコール呼び出により、オペレーティングシステム800はソフトウェア割り込みをトラップする(ステップ1100)。
次に、オペレーティングシステム800はシステムコール元のPIDを特定する(ステップ1101)。
オペレーティングシステム800は、プロセスの実行を管理しているので、システムコール元のPIDを特定することができる。通常、これはカレントプロセスのPIDがシステムコール元のPIDであるとすればよい。
次に、オペレーティングシステム800は、ソフトウェア割り込み発生アドレス特定モジュール806を用いて、システムコール元のアドレスを特定する(ステップ1102)。
ここでいうシステムコール元のアドレスとは、ソフトウェア割り込み命令が置かれていたメモリ上のアドレスを意味する。
ソフトウェア割り込みの発生時に、CPU701の実行点はトラップ用コードへと移動するが、その際にCPU701は予め指定しておいた特定のメモリ領域(スタックとして管理されている)へ、ソフトウェア割り込みを発生させた際の実行点を退避するよう動作する。これは本実施例でのCPUによる動作である。
よって、ソフトウェア割り込み発生アドレス特定モジュール806は、退避された実行点をもって、システムコール元のアドレスを特定することができる。
次に、オペレーティングシステム800は、システムコール発生元プログラム特定モジュール807を用いて、システムコール元のプログラムを特定する(ステップ1103)。
PIDをキーにしてアドレス範囲セット803をアドレス範囲セット管理用データ構造体802中から特定し、さらに、システムコール元のアドレスを、ロード範囲に含むプログラムをアドレス範囲セット803中から検索することにより、システムコール元のプログラムを特定することができる。
次に、オペレーティングシステム800は、特定したプログラムをキーにして、適用すべき動作ルールを特定する(ステップ1104)。
本実施例では、動作ルールはファイルシステム820中にファイルの形式で保存されているので、ファイルシステム820中から、特定したプログラムのフルパス名を含む動作ルールのファイルを検索することにより、適用すべき動作ルールを特定することができる。
なお、一般にHDD704へのデータの読み書きは、DRAM703へのデータの読み書きより遅いため、予めファイルシステム820上の動作ルールを全て、DRAM703上に読み込んでおくことにより、適用すべき動作ルールを特定する処理を高速化することが可能である。一例としては、プログラムのIDであるフルパス名のハッシュ値を計算して、動作ルール群をハッシュ表の形で、DRAM703上にあらかじめ読み込んでおく方式が考えられる。
次に、オペレーティングシステム800は、特定した動作ルールと、システムコールの内容を比較し、システムコールの処理を行うか否かを判定する(ステップ1105)。
システムコールの内容が動作ルールにおいて明示的に許可されている場合には、システムコールを受理し(ステップ1107)、オペレーティングシステム800の備える基本機能を実行し(ステップ1108)、しかる後にブラウザアプリケーション810へとリターンする。
動作ルールにおいて明示的な許可が無い場合には、本実施例においては、該当する動作は禁止されていると解釈されるため、システムコールをエラーリターンする(ステップ1106)。
最後に、オペレーティングシステム800は、プロセス終了監視モジュール808を用い、ブラウザアプリケーション810の終了を検知する(ステップ1200)。
通常の処理においてはブラウザアプリケーション810は、exitシステムコールを呼び出すことによりオペレーティングシステム800に終了を通知する。この場合は、オペレーティングシステム800はシステムコール呼び出しの形で、ブラウザアプリケーション810の終了を検知することができる。
また、異常な処理としてブラウザアプリケーション810が危険な動作を行い、オペレーティングシステム800に強制終了させられる場合がある。危険な動作の一例としてはメモリ保護違反等が挙げられる。
この場合、メモリ管理ユニットからの割り込みをオペレーティングシステム800がトラップすることによりオペレーティングシステム800はブラウザアプリケーション810の危険な動作を検知することができ、これをもってブラウザアプリケーション810の終了検知に代えることができる。
そのほかの危険な動作(例えば、非特権状態での特権命令の実行)についても、割り込みとして検知することができ、オペレーティングシステム800はブラウザアプリケーション810の終了を検知することができる。これらの事項は当業者にとって既知の事柄であるので、詳細な説明は省略する。
図15を参照して、プロセス終了時の動作について説明する。
プロセスの終了を検知すると、オペレーティングシステム800は、終了プロセスのプロセスIDを特定する(ステップ1201)。
そして、特定したプロセスIDをキー値にして、終了プロセスのアドレス範囲セット803を特定し、特定したアドレス範囲セット803をアドレス範囲セット管理用データ構造体802から削除する(ステップ1202)。
さらに、オペレーティングシステム800は、プロセスそのものを消去する(1203)。
プロセスの消去に関する処理は、プロセス管理用データ構造体802の消去する処理や、プロセスに割当てていた物理メモリを、未割当てメモリ扱いに変更する処理など多岐にわたるが、それらは当業者にとっては既知の事項であるので、詳細な説明は省略する。
上記に説明した実施例において、例えば、ブラウザ本体部分811がディスプレイへの画像表示を行う動作を考える。
本実施例で扱っているUNIX(登録商標)類似のOSにおいては、ディスプレイなどの周辺機器へのアクセスは、デバイスファイルへのアクセスとして抽象化されるのが一般的であるため、この場合では、ブラウザ本体部分811は、/dev/fbというデバイスファイルをopenするシステムコールを呼び出すことになる。
すると、オペレーティングシステム800が特定するシステムコールの発行元は、PID=1024、アドレスは「0x8048000」から「0x80dc000」の間のどこかとなる。
それに従ってオペレーティングシステム800が特定するブラウザ本体プログラム821の動作ルールには、デバイスファイル(/dev/fb)のopenを許可する旨が記述されている。
よって、ブラウザ本体部分811がディスプレイへの画像表示を行うことが可能である(通常においては、openだけでなく、デバイスファイル(/dev/fb)のread、write、ioctlなども許可しなければならないが、説明が煩雑になるため本実施例では省略している)。
同様に、ブラウザ本体部分811がキーボード/マウス711を通じてユーザ720からの入力を受ける動作を考える。
キーボード/マウス711へのアクセスが/dev/hidというファイルへのアクセスとして抽象化されているとすると、ファイル(/dev/hid)へのopenを許可しているので、ブラウザ本体部分811はユーザ720からの入力を受けることができる(通常においては、openだけでなく、/dev/fbのread、write、ioctlなども許可しなければならないが、説明が煩雑になるため本実施例では省略している)。
しかし、ブラウザ本体部分811がHTTPライブラリ部分812を介さずにIP通信を行う動作については、ブラウザ本体プログラム821の動作ルールには、AF_INETドメインを指定した、socketシステムコールの呼び出しについての明示的な許可が存在しない。
よって、ブラウザ本体部分811によるHTTPライブラリ部分812を介さないIP通信はオペレーティングシステム800によって禁止されることになる。
また、次の例として、HTTPライブラリ部分812がIP通信を行う動作について説明する。
本実施例で扱っているUNIX(登録商標)類似のOSにおいては、通信を行う際にはsocketシステムコールの呼び出しを行うことが一般的であり、さらにIP通信を行う際にはsocketシステムコールの引数にAF_INETを指定することが一般的である。
この場合、HTTPライブラリ部分812からのsocketシステムコール呼び出しにおいて、オペレーティングシステム800が特定するシステムコールの呼び出し元は、PID=1024、アドレスは「0x40016000」から「0x4001c000の間のどこかとなる。
それに従ってオペレーティングシステム800が特定するHTTPライブラリ部分812の動作ルールには、socketシステムコールをAF_INETを指定して呼び出すことを許可する旨が記述されている。
よって、HTTPライブラリ部分812がIP通信を行うことが可能である。
ここで、ブラウザ本体部分811は自分自身ではIP通信を行うことができないが、HTTPライブラリ部分812を介してであれば、IP通信を行うことが可能である。
そこで、HTTPライブラリ部分812に対して、事前に十分に品質検査を行うことにより、ブラウザアプリケーション810のIP通信関連の動作の品質を保証することができる。なぜならばブラウザ本体部分811はHTTPライブラリ部分812を介さずにIP通信を行うことができないからである。
以上説明したように、本発明の実施の形態によれば、アプリケーションの起動処理において、アプリケーションを構成する各プログラムをメモリ上にロードするアプリケーションロード手段が、アプリケーションを構成する1以上のプログラム(アプリケーション本体プログラム、ライブラリプログラム)をロードしたメモリ(主記憶装置)上のアドレス範囲と前記プログラムの識別子とをアドレス範囲セットとしてアドレス範囲セット記憶手段に記憶する。
システムコール処理手段でアプリケーションからのシステムコールの呼び出しを受け付けると、システムコールの呼び出し元のプログラムのタスクIDを特定し、呼び出し元アドレス特定手段によって呼び出し元のプログラムのアドレスを特定し、そのタスクIDとアドレスに基づいて、呼び出し元プログラム特定手段によって処理依頼元のプログラムを特定する。
そして、動作ルール適用手段によって、特定したプログラムに対応する動作ルールを動作ルール記憶手段から特定し、特定した動作ルールと、呼び出された処理の内容を比較することで、呼び出された処理を実行するか否かを決定する。
以上好ましい実施の形態と実施例をあげて本発明を説明したが、本発明は必ずしも、上記実施の形態及び実施例に限定されるものでなく、その技術的思想の範囲内において様々に変形して実施することができる。
この出願は、2007年2月21日に出願された日本出願特願2007−040746を基礎とする優先権を主張し、その開示の全てをここに取り込む。
本発明によれば、セキュリティを強化したコンピュータといった用途に適用できる。また、セキュリティ強化を強化した、コンピュータを含む組込み機器といった用途にも適用可能である。

Claims (39)

  1. アプリケーションを構成する1以上のプログラムをロードしたメモリ上のアドレスを前記プログラムと対応させてアドレス範囲セットとして記憶するアドレス範囲セット記憶手段と、
    アプリケーションの起動処理において、アプリケーションを構成する各プログラムをメモリ上にロードし、前記アドレス範囲セットをアドレス範囲セット記憶手段に記憶させる機能を有するアプリケーションロード手段と、
    アプリケーションからのシステムコールの呼び出しを受けて、各種の処理を実行するシステムコール処理手段と、
    アプリケーションを構成するプログラムによるシステムコールの利用の可否を記述する動作ルールを記憶する動作ルール記憶手段と、
    前記システムコール処理手段によって呼び出された処理を実行するか否かを、システムコールの呼び出し元のプログラムに対応した前記動作ルールに基づいて決定する動作ルール適用手段と
    を備えることを特徴とするコンピュータ。
  2. 前記プログラムをロードしたメモリ上のアドレスの上限値と下限値と前記プログラムの識別子との組を前記アドレス範囲セットとして記憶することを特徴とする請求項1に記載のコンピュータ。
  3. 前記動作ルール適用手段において、システムコールの呼び出し元のアドレスを特定する呼び出し元アドレス特定手段と、
    前記動作ルール適用手段において、前記呼び出し元アドレス特定手段によって得られたアドレスと、前記アドレス範囲セット記憶手段に記憶されたアドレス範囲セット中の各プログラムのアドレス範囲を比較することにより、システムコールの呼び出し元のプログラムを特定する呼び出し元プログラム特定手段とをさらに備えることを特徴とする請求項1又は請求項2に記載のコンピュータ。
  4. 前記動作ルールには、前記アプリケーションを構成する各プログラム毎に、利用可能なリソース量の上限・下限を記述することを特徴とする請求項1から請求項3の何れかに記載のコンピュータ。
  5. 前記アプリケーションの終了を検知して、前記アドレス範囲セット記憶手段から、終了したアプリケーションの前記アドレス範囲セットを削除するアプリケーション終了監視手段を備えることを特徴とする請求項1から請求項4の何れかに記載のコンピュータ。
  6. 前記アドレス範囲セット記憶手段は、前記アプリケーションを一意に識別するタスクIDをキー値として、複数のアプリケーションのアドレス範囲セットを記憶し、
    前記呼び出し元プログラム特定手段は、前記タスクIDをキー値として前記アドレス範囲セット記憶手段中から特定したアドレス範囲セット中の各プログラムのアドレス範囲と、前記呼び出し元アドレスを比較することにより、システムコールの呼び出し元のプログラムを特定することを特徴とする請求項1から請求項5の何れかに記載のコンピュータ。
  7. 前記アプリケーションロード手段は、
    前記アプリケーションの起動時に、前記アプリケーションを構成するプログラムをメモリ上にロードした後、前記アプリケーションの実行中に、前記アプリケーションを構成するプログラムをメモリ上に追加ロードし、前記アドレス範囲セットに、追加ロードしたプログラムのアドレス範囲を追加することを特徴とする請求項1から請求項6の何れかに記載のコンピュータ。
  8. 前記動作ルール記憶手段は、システムコールに引き渡すパラメータに基づくシステムコール利用の可否についての記述を含む前記動作ルールを記憶する機能をさらに有し、
    前記動作ルール適用手段は、前記アプリケーションがシステムコールに引き渡したパラメータを前記動作ルールと比較して処理の実行の可否を判定する機能をさらに含むことを特徴とする請求項1から請求項7の何れかに記載のコンピュータ。
  9. 前記動作ルール記憶手段は、アプリケーションを構成する2以上のプログラムについて、少なくとも1のプログラムについて、システムコールの利用の可否についての記述を含む前記動作ルールを記憶し、それ以外のプログラムについては、システムコールの利用の可否の記述を含む他のプログラムの動作ルールを指定して、指定した他のプログラムの動作ルールに従う旨を記述した動作ルールを記憶し、
    前記動作ルール適用手段は、前記呼び出し元プログラム特定手段によって特定されたプログラムに対応した動作ルールに、他のプログラムの動作ルールを指定して、指定した動作ルールに従う旨の記述が含まれていた場合には、指定した動作ルールに従ってシステムコールの処理の可否を判定する機能をさらに含むことを特徴とする請求項1から請求項8の何れかに記載のコンピュータ。
  10. 前記アプリケーションロード手段は、アドレス範囲セット中に、アプリケーションの実行の起点となるプログラムの識別子を記録し、
    前記動作ルール適用手段は、プログラムの動作ルール中にアプリケーションの実行の起点となるプログラムの動作ルールに従う旨が記述されていた場合には、前記アドレス範囲セット中から実行の起点となるプログラムの識別子を取得し、前記プログラムの識別子を用いてアプリケーションの実行の起点となるプログラムの動作ルールを特定し、動作ルールを適用する機能をさらに含むことを特徴とする請求項9に記載のコンピュータ。
  11. 仮想記憶機能を備え、前記アドレスとして仮想アドレスを用いることを特徴とする請求項1から請求項10の何れかに記載のコンピュータ。
  12. 前記プログラムと当該プログラムと対応する前記動作ルールとを一体に1つのファイル中に記憶する記憶手段が、前記プログラムを格納するプログラム記憶手段と、前記動作ルールを記憶する前記動作ルール記憶手段を兼ねることを特徴とする請求項1から請求項11の何れかに記載のコンピュータ。
  13. プログラムの識別子として、プログラムを記憶したファイルのパス名を用いることを特徴とする請求項2から請求項12の何れかに記載のコンピュータ。
  14. オペレーティングシステムによる動作ルール適用方法であって、
    アプリケーションを構成する各プログラムをメモリ上にロードする処理において、アプリケーションを構成する各プログラムのメモリ上へのロード先のアドレスを前記プログラムと対応させてアドレス範囲セットとしてアドレス範囲セット記憶手段に記憶し、
    アプリケーションからのシステムコールの呼び出しを受けて、各種の処理を実行する際に、アプリケーションを構成するプログラム毎にシステムコールの利用の可否を記述する動作ルールを記憶する動作ルール記憶手段からシステムコールの呼び出し元のプログラムに対応した前記動作ルールを選択し、前記システムコールによって呼び出された処理を実行するか否かを決定することにより、アプリケーションを構成する各プログラムに個別に動作ルールを適用することを特徴とする動作ルール適用方法。
  15. 前記プログラムをロードしたメモリ上のアドレスの上限値と下限値と前記プログラムの識別子との組を前記アドレス範囲セットとして記憶することを特徴とする請求項14に記載の動作ルール適用方法。
  16. システムコールの呼び出し元のアドレスと、前記アドレス範囲セット記憶手段に記憶されたアドレス範囲セット中の各プログラムのアドレス範囲を比較することにより、システムコールの呼び出し元のプログラムを特定することを特徴とする請求項14又は請求項15に記載の動作ルール適用方法。
  17. 前記動作ルールには、前記アプリケーションを構成する各プログラム毎に、利用可能なリソース量の上限・下限を記述することを特徴とする請求項14から請求項16の何れかに記載の動作ルール適用方法。
  18. 前記アプリケーションの終了を検知して、前記アドレス範囲セット記憶手段から、終了したアプリケーションの前記アドレス範囲セットを削除するステップを有することを特徴とする請求項14から請求項17の何れかに記載の動作ルール適用方法。
  19. 前記アプリケーションを一意に識別するタスクIDをキー値として、複数のアプリケーションのアドレス範囲セットを記憶し、
    前記タスクIDをキー値として前記アドレス範囲セット記憶手段中から特定したアドレス範囲セット中の各プログラムのアドレス範囲と、前記呼び出し元アドレスを比較することにより、システムコールの呼び出し元のプログラムを特定することを特徴とする請求項14から請求項18の何れかに記載の動作ルール適用方法。
  20. 前記アプリケーションの起動時に、前記アプリケーションを構成するプログラムをメモリ上にロードした後、前記アプリケーションの実行中に、前記アプリケーションを構成するプログラムをメモリ上に追加ロードし、前記アドレス範囲セットに、追加ロードしたプログラムのアドレス範囲を追加することを特徴とする請求項14から請求項19の何れかに記載の動作ルール適用方法。
  21. 前記動作ルール記憶手段にシステムコールに引き渡すパラメータに基づくシステムコール利用の可否についての記述を含む前記動作ルールを記憶し、
    前記アプリケーションがシステムコールに引き渡したパラメータを前記動作ルールと比較して処理の実行の可否を判定することを特徴とする請求項14から請求項20の何れかに記載の動作ルール適用方法。
  22. 前記動作ルール記憶手段に、アプリケーションを構成する2以上のプログラムについて、少なくとも1のプログラムについて、システムコールの利用の可否についての記述を含む前記動作ルールを記憶し、それ以外のプログラムについては、システムコールの利用の可否の記述を含む他のプログラムの動作ルールを指定して、指定した他のプログラムの動作ルールに従う旨を記述した動作ルールを記憶し、
    特定されたプログラムに対応した動作ルールに、他のプログラムの動作ルールを指定して、指定した動作ルールに従う旨の記述が含まれていた場合には、指定した動作ルールに従ってシステムコールの処理の可否を判定することを特徴とする請求項14から請求項21の何れかに記載の動作ルール適用方法。
  23. 前記アドレス範囲セット中に、アプリケーションの実行の起点となるプログラムの識別子を記録し、
    前記プログラムの動作ルール中にアプリケーションの実行の起点となるプログラムの動作ルールに従う旨が記述されていた場合には、前記アドレス範囲セット中から実行の起点となるプログラムの識別子を取得し、前記プログラムの識別子を用いてアプリケーションの実行の起点となるプログラムの動作ルールを特定し、動作ルールを適用することを特徴とする請求項22に記載の動作ルール適用方法。
  24. 仮想記憶機能を備え、前記アドレスとして仮想アドレスを用いることを特徴とする請求項14から請求項23の何れかに記載の動作ルール適用方法。
  25. 前記プログラムと当該プログラムと対応する前記動作ルールとを一体に1つのファイル中に記憶することを特徴とする請求項14から請求項24の何れかに記載の動作ルール適用方法。
  26. プログラムの識別子として、プログラムを記憶したファイルのパス名を用いることを特徴とする請求項15から請求項25の何れかに記載の動作ルール適用方法。
  27. アプリケーションを構成する各プログラムをメモリ上にロードする処理において、アプリケーションを構成する各プログラムのメモリ上へのロード先のアドレスを前記プログラムと対応させてアドレス範囲セットとしてアドレス範囲セット記憶手段に記憶する処理と、
    アプリケーションからのシステムコールの呼び出しを受けて、各種の処理を実行する際に、アプリケーションを構成するプログラム毎にシステムコールの利用の可否を記述する動作ルールを記憶する動作ルール記憶手段からシステムコールの呼び出し元のプログラムに対応した前記動作ルールを選択し、前記システムコールによって呼び出された処理を実行するか否かを決定することにより、アプリケーションを構成する各プログラムに個別に動作ルールを適用する処理とをコンピュータに実行させることを特徴とするオペレーティングシステム。
  28. 前記プログラムをロードしたメモリ上のアドレスの上限値と下限値と前記プログラムの識別子との組を前記アドレス範囲セットとして記憶する処理をコンピュータに実行させることを特徴とする請求項27に記載のオペレーティングシステム。
  29. システムコールの呼び出し元のアドレスと、前記アドレス範囲セット記憶手段に記憶されたアドレス範囲セット中の各プログラムのアドレス範囲を比較することにより、システムコールの呼び出し元のプログラムを特定する処理をコンピュータに実行させることを特徴とする請求項27又は請求項28に記載のオペレーティングシステム。
  30. 前記動作ルールに、前記アプリケーションを構成する各プログラム毎に、利用可能なリソース量の上限・下限を記述する処理をコンピュータに実行させることを特徴とする請求項27から請求項29の何れかに記載のオペレーティングシステム。
  31. 前記アプリケーションの終了を検知して、前記アドレス範囲セット記憶手段から、終了したアプリケーションの前記アドレス範囲セットを削除する処理をコンピュータに実行させることを特徴とする請求項27から請求項30の何れかに記載のオペレーティングシステム。
  32. 前記アプリケーションを一意に識別するタスクIDをキー値として、複数のアプリケーションのアドレス範囲セットを記憶する処理と、
    前記タスクIDをキー値として前記アドレス範囲セット記憶手段中から特定したアドレス範囲セット中の各プログラムのアドレス範囲と、前記呼び出し元アドレスを比較することにより、システムコールの呼び出し元のプログラムを特定する処理をコンピュータに実行させることを特徴とする請求項27から請求項31の何れかに記載のオペレーティングシステム。
  33. 前記アプリケーションの起動時に、前記アプリケーションを構成するプログラムをメモリ上にロードした後、前記アプリケーションの実行中に、前記アプリケーションを構成するプログラムをメモリ上に追加ロードし、前記アドレス範囲セットに、追加ロードしたプログラムのアドレス範囲を追加する処理をコンピュータに実行させることを特徴とする請求項27から請求項32の何れかに記載のオペレーティングシステム。
  34. 前記動作ルール記憶手段にシステムコールに引き渡すパラメータに基づくシステムコール利用の可否についての記述を含む前記動作ルールを記憶する処理と、
    前記アプリケーションがシステムコールに引き渡したパラメータを前記動作ルールと比較して処理の実行の可否を判定する処理をコンピュータに実行させることを特徴とする請求項27から請求項33の何れかに記載のオペレーティングシステム。
  35. 前記動作ルール記憶手段に、アプリケーションを構成する2以上のプログラムについて、少なくとも1のプログラムについて、システムコールの利用の可否についての記述を含む前記動作ルールを記憶し、それ以外のプログラムについては、システムコールの利用の可否の記述を含む他のプログラムの動作ルールを指定して、指定した他のプログラムの動作ルールに従う旨を記述した動作ルールを記憶する処理と、
    特定されたプログラムに対応した動作ルールに、他のプログラムの動作ルールを指定して、指定した動作ルールに従う旨の記述が含まれていた場合には、指定した動作ルールに従ってシステムコールの処理の可否を判定する処理をコンピュータに実行させることを特徴とする請求項27から請求項34の何れかに記載のオペレーティングシステム。
  36. 前記アドレス範囲セット中に、アプリケーションの実行の起点となるプログラムの識別子を記録する処理と、
    前記プログラムの動作ルール中にアプリケーションの実行の起点となるプログラムの動作ルールに従う旨が記述されていた場合には、前記アドレス範囲セット中から実行の起点となるプログラムの識別子を取得し、前記プログラムの識別子を用いてアプリケーションの実行の起点となるプログラムの動作ルールを特定し、動作ルールを適用する処理をコンピュータに実行させることを特徴とする請求項35に記載のオペレーティングシステム。
  37. 仮想記憶機能を備え、前記アドレスとして仮想アドレスを用いることを特徴とする請求項27から請求項36の何れかに記載のオペレーティングシステム。
  38. 前記プログラムと当該プログラムと対応する前記動作ルールとを一体に1つのファイル中に記憶することを特徴とする請求項27から請求項37の何れかに記載のオペレーティングシステム。
  39. プログラムの識別子として、プログラムを記憶したファイルのパス名を用いることを特徴とする請求項28から請求項38の何れかにオペレーティングシステム。
JP2009505102A 2007-02-21 2008-02-19 コンピュータ、動作ルール適用方法、オペレーティングシステム Expired - Fee Related JP5131563B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009505102A JP5131563B2 (ja) 2007-02-21 2008-02-19 コンピュータ、動作ルール適用方法、オペレーティングシステム

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2007040746 2007-02-21
JP2007040746 2007-02-21
PCT/JP2008/052722 WO2008114560A1 (ja) 2007-02-21 2008-02-19 コンピュータ、動作ルール適用方法、オペレーティングシステム
JP2009505102A JP5131563B2 (ja) 2007-02-21 2008-02-19 コンピュータ、動作ルール適用方法、オペレーティングシステム

Publications (2)

Publication Number Publication Date
JPWO2008114560A1 true JPWO2008114560A1 (ja) 2010-07-01
JP5131563B2 JP5131563B2 (ja) 2013-01-30

Family

ID=39765674

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009505102A Expired - Fee Related JP5131563B2 (ja) 2007-02-21 2008-02-19 コンピュータ、動作ルール適用方法、オペレーティングシステム

Country Status (4)

Country Link
US (1) US20100325077A1 (ja)
EP (1) EP2113859A4 (ja)
JP (1) JP5131563B2 (ja)
WO (1) WO2008114560A1 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5445096B2 (ja) * 2009-12-15 2014-03-19 富士通株式会社 情報処理装置、コマンド判定プログラム、およびコマンド判定方法
WO2011152052A1 (ja) * 2010-06-02 2011-12-08 パナソニック株式会社 通信制御装置およびパケットフィルタリング方法
EP2650809B1 (en) * 2010-12-08 2016-11-02 Panasonic Intellectual Property Management Co., Ltd. Information processing device and information processing method
US9424420B2 (en) * 2013-08-02 2016-08-23 Red Hat, Inc. Restricting application binary interfaces
WO2015048855A1 (en) * 2013-10-05 2015-04-09 Waratek Limited Multi-tenant monitoring
CN104573504B (zh) * 2014-12-24 2018-05-25 百度在线网络技术(北京)有限公司 一种用于在iOS相关系统中运行应用的方法和装置
US11663337B2 (en) * 2018-07-20 2023-05-30 George Mason University Methods and systems for system call reduction
US11409864B1 (en) 2021-06-07 2022-08-09 Snowflake Inc. Tracing supervisor for UDFs in a database system

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU1758701A (en) * 1999-11-14 2001-05-30 Clicknet Software, Inc. Method for secure function execution by calling address validation
WO2001037067A1 (en) * 1999-11-16 2001-05-25 Intel Corporation A method of providing secure linkage of program modules
WO2002008870A2 (en) * 2000-07-26 2002-01-31 David Dickenson Distributive access controller
DE10105284A1 (de) * 2001-02-06 2002-08-29 Infineon Technologies Ag Mikroprozessorschaltung für Datenträger und Verfahren zum Organisieren des Zugriffs auf in einem Speicher abgelegten Daten
JP3763142B2 (ja) 2002-01-30 2006-04-05 ソニー株式会社 特権命令実行制御装置、特権命令実行制御方法、および特権命令実行制御プログラム
JP4007873B2 (ja) * 2002-07-09 2007-11-14 富士通株式会社 データ保護プログラムおよびデータ保護方法
US7165018B2 (en) * 2002-11-22 2007-01-16 Texas Instruments Incorporated Address range comparator for detection of multi size memory accesses with data matching qualification and full or partial overlap
GB2399903A (en) 2003-03-28 2004-09-29 Hewlett Packard Development Co Security attributes of nodes in trusted computing systems
US7124255B2 (en) * 2003-06-30 2006-10-17 Microsoft Corporation Message based inter-process for high volume data
EP1507185A1 (fr) * 2003-08-11 2005-02-16 Axalto S.A. Méthode et dispositif de protection contre l'accès non-autorisé à une routine sensible
JPWO2005029328A1 (ja) * 2003-09-18 2007-11-15 有限会社 電机本舗 オペレーティングシステム、及びそれを記録した記録媒体
US7716495B2 (en) * 2003-12-31 2010-05-11 Microsoft Corporation Protection against runtime function attacks
JP2005352908A (ja) * 2004-06-11 2005-12-22 Ntt Docomo Inc 移動通信端末及びデータアクセス制御方法
US7392169B2 (en) * 2004-10-21 2008-06-24 International Business Machines Corporation Method, system and program product for defining and recording minimum and maximum event counts of a simulation utilizing a high level language
US20060149845A1 (en) * 2004-12-30 2006-07-06 Xinnia Technology, Llc Managed quality of service for users and applications over shared networks
WO2006126686A1 (ja) * 2005-05-26 2006-11-30 Matsushita Electric Industrial Co., Ltd. データ処理装置
JP4241680B2 (ja) * 2005-07-05 2009-03-18 ブラザー工業株式会社 通信システム、情報処理装置、及びプログラム
JP2007040746A (ja) 2005-08-01 2007-02-15 Fujifilm Corp 全反射減衰を利用した分析における反応速度係数の測定方法

Also Published As

Publication number Publication date
WO2008114560A1 (ja) 2008-09-25
US20100325077A1 (en) 2010-12-23
EP2113859A4 (en) 2010-04-14
EP2113859A1 (en) 2009-11-04
JP5131563B2 (ja) 2013-01-30

Similar Documents

Publication Publication Date Title
US10853047B2 (en) Method for virtualizing software applications
JP5131563B2 (ja) コンピュータ、動作ルール適用方法、オペレーティングシステム
US8458694B2 (en) Hypervisor with cloning-awareness notifications
US20070113291A1 (en) Method for administrating the function access
US20030005168A1 (en) System and method for auditing system call events with system call wrappers
US8429648B2 (en) Method and apparatus to service a software generated trap received by a virtual machine monitor
JPH07230380A (ja) 適用業務プログラムの利用管理方法およびシステム
JP5382450B2 (ja) アクセス制御装置、その方法及び情報記録媒体
US11709931B2 (en) Shadow stack violation enforcement at module granularity
US20040167996A1 (en) Computer system having a virtualized I/O device
US8200938B2 (en) Computer system and method providing a memory buffer for use with native and platform-independent software code
US7546600B2 (en) Method of assigning virtual process identifier to process within process domain
JP5511874B2 (ja) セキュリティサービスに実装するシステムおよび方法
US7213098B2 (en) Computer system and method providing a memory buffer for use with native and platform-independent software code
US11500981B2 (en) Shadow stack enforcement range for dynamic code
CN116702126A (zh) 应用访问控制方法和装置、计算设备和可读存储介质
JP4853671B2 (ja) アクセス権限判定システム、アクセス権限判定方法及びアクセス権限判定プログラム
US7363288B2 (en) Method of checkpointing and restarting processes which share open file
CN117377957A (zh) 基于任务的访问权控制
US7587722B2 (en) Extending operating system subsystems
US7409691B2 (en) Extending operating system subsystems
KR102456017B1 (ko) 응용 프로그램간 파일 공유 장치 및 방법
JPH11134204A (ja) スタック保護装置
JP2016042318A (ja) 情報処理装置、不正プログラム実行防止方法、プログラム及び記録媒体
CN117807039B (zh) 一种容器处理方法、装置、设备、介质及程序产品

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110114

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120719

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120914

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121024

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20151116

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5131563

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees