JP2005284630A - オペレーティングシステム - Google Patents

オペレーティングシステム Download PDF

Info

Publication number
JP2005284630A
JP2005284630A JP2004096462A JP2004096462A JP2005284630A JP 2005284630 A JP2005284630 A JP 2005284630A JP 2004096462 A JP2004096462 A JP 2004096462A JP 2004096462 A JP2004096462 A JP 2004096462A JP 2005284630 A JP2005284630 A JP 2005284630A
Authority
JP
Japan
Prior art keywords
thread
processing
management
storage area
threads
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2004096462A
Other languages
English (en)
Inventor
Takashi Mizukami
貴司 水上
正明 ▼吉▲本
Masaaki Yoshimoto
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.)
Oki Electric Industry Co Ltd
Original Assignee
Oki Electric Industry Co Ltd
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 Oki Electric Industry Co Ltd filed Critical Oki Electric Industry Co Ltd
Priority to JP2004096462A priority Critical patent/JP2005284630A/ja
Publication of JP2005284630A publication Critical patent/JP2005284630A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Storage Device Security (AREA)

Abstract

【課題】スレッドの不正メモリ領域へのアクセスが生じた場合に、プロセスの終了を回避するオペレーティングシステムを提供する。
【解決手段】本発明は、複数の処理プログラムをコンピュータに実行させることで1個のプロセスを処理させるオペレーティングシステムにおいて、起動したプロセスの複数の処理プログラムを管理するプロセス管理手段と、プロセス毎の各処理プログラムの記憶領域アドレスに基づいて各処理プログラムを記憶領域へのアクセスを制御するアクセス制御手段と、各処理プログラム実行で不正な記憶領域へのアクセスを検出する不正アクセス検出手段と、不正アクセス検出手段から不正アクセス検出信号を受けて当該不正な記憶領域へのアクセスに係る当該処理プログラムの内容が、プロセス処理に影響がないものと判断したときに、当該処理プログラムのみを削除するプログラム管理手段とを備えることを特徴とする。
【選択図】 図1

Description

本発明は、オペレーティングシステムに関し、例えば、Linux(登録商標)やUNIX(登録商標)等のオペレーティングシステム上のプロセスのスレッドが、不正な記憶領域にアクセスした場合に、そのプロセスが終了してしまうことを回避するシステムに適用し得る。
例えば、ネットワーク通信技術における情報処理装置の情報処理システムとして、例えばLinuxやUNIXなどのオペレーティングシステム(OS)が広く使用されている。
このようなオペレーティングシステムにおいて、ユーザにより、プロセスが起動されると(プログラムが実行されると)、OS上のカーネルの制御により、そのプロセスが起動され、そのプロセスを処理するためのスレッドが生成される。そして、スレッドの処理を実行することで、ユーザの所望プロセスの実行を図ることが可能となる。
ここで、カーネルはOS上の基本制御プログラムであり、スレッドは、プロセスを実行するための単一の処理プログラムであり、複数の処理をCPUに同時実行させるための仕組みをもつ。スレッドは、例えば、POSIX(Portable Operating System Interface)で規定されているPOSIXスレッドなどがある。
図2は、プログラム実行中にスレッドを生成するプロセスの、起動から終了までの動作を概念的に示すシーケンス図である。なお、カーネル及びプロセス管理の詳細な動作は、それぞれのOSの実装によって異なるため、省略する。
図2において、システムのOS(カーネル)が起動した後(S1)、ユーザにより、プロセスが起動されたとする(S2)。
このとき、カーネルは、ユーザが起動したプロセスを管理するプログラム(ここではプロセス管理と呼ぶ)を同時に起動する(S3)。このプロセス管理の制御によりプロセスが起動する(S4)。
プロセスが起動すると、起動したプロセスは、カーネル又はプロセス管理に対してスレッドを生成する要求を投げる(S5)。なお、このスレッド生成要求の要求先は、各OSの実装により異なり、カーネルとする場合又はプロセス管理いずれかとすることができ、図2ではいずれにも対応可能に示す。
カーネル又はプロセス管理は、スレッド生成要求を受けると、スレッド生成処理を実行し(S6)、スレッドを生成する(S7)。そして、生成されたスレッドは、スレッド処理の実行を開始する(S8)。ここで、スレッドは、プロセスとは非同期に処理を実行する。
スレッド処理が終了すると(S9)、スレッドは、スレッド処理終了の旨をプロセス管理に与え、プロセス管理は、スレッド処理終了の旨をプロセスに通知する(S10、S11)。このとき、プロセスは、スレッド処理終了待ちをしており、プロセス管理からのスレッド処理終了通知をもって終了を確認する。
プロセスは、すべてのスレッドが終了を確認後、終了し、プロセス管理も終了する(S12、S13)。
次に、起動するプロセスと、それに係る生成したスレッドとの関係について図3を参照して説明する。
図3は、プロセスの実行環境を示すものである。一般的にプロセスは、ユーザ空間とOS(カーネル)空間とに大別でき、図3では、ユーザ空間で実行するプロセス(ユーザプログラム)とOS(カーネル)空間でのプロセス(OS)とを示す。
図3において、ユーザプログラムは、複数のプロセス1及びプロセス2を有し、OS(OS空間)は、カーネル資源1及びカーネル資源2を有する。また、カーネル資源1及びカーネル資源2は、プロセス起動時に、カーネルから、1個のプロセスに対応する1個の資源が提供される。
ここで、カーネル資源とは、プロセスが動作するために必要な情報である。また、カーネル資源は、少なくとも、シグナルを受信し処理する機構であるシグナルハンドラ13、プロセスやスレッドが使用するメモリへの仮想アドレス14(14a及び14b)を有する。なお、カーネル資源は、他にもファイルディスクリプタなどがあるが、説明便宜のため省略している。
あるプロセス中のスレッドは、対応するカーネル資源にアクセスし、カーネル資源である仮想アドレス14に基づいて使用するメモリ領域にアクセスしている。これにより、スレッドが使用するメモリ領域にアクセスすることができ、処理が実行される。
特開2002−91826号公報 Linux V2.4カーネル内部解析報.ドラフト第4版.[Online].[2004年3月16日検索].インターネット.<URL:http://japan.linux.com/kernel/internal24/index.shtml>.
しかしながら、従来、LinuxシステムやUNIXシステムにおいて、起動されたプロセス中のスレッドが不正なメモリ領域ヘアクセスすると、OS(カーネル)側の処理により、そのスレッドをもつプロセスが強制終了させられるという問題があった。
また、このプロセスの強制終了により、サーバ側がユーザに提供するサービスも終了してしまうという問題もあった。
この提供サービスの終了は、ユーザにサービスの提供ができないことになるが、特に商用サービスである場合、企業等の有用な情報管理等をしていることもあり、ユーザに対して大きな損害を与えかねない。
そのため、プロセスの強制終了を回避するシステムが強く望まれている。
従来システムにおける上述したプロセスの強制終了は以下のようにしてなされる。
上述したように、プロセス中のスレッドは、カーネル資源である仮想アドレスに基づいてメモリ領域にアクセスしているが、例えばプロセス1のスレッドが、プロセス2が使用するメモリ領域ヘアクセスしてしまう場合がある(図4参照)。
このとき、カーネルは、プロセス2の動作を保証するため(プロセス2が使用するメモリを保護するため)、プロセス1を即座に終了させるが、この場合、カーネルは、プロセス1を終了させるために、プロセス1及びそれに対応するカーネル資源1の全てを削除している(図5参照)。
図6は、スレッドが不正なメモリ領域にアクセスした場合、プロセスを終了させる処理を説明するシーケンス図である。
図6において、不正メモリへアクセスした場合(S14)、カーネルは、プロセスを終了させるシグナル(例えば、Linux、UNIXの場合、SIGSEGV シグナル)をプロセス管理に与える(S15)。
プロセス管理は、カーネルからこのシグナルを受信することで、起動しているプロセス全体を終了させている。
また、このようにプロセス管理が、スレッドが不正メモリ領域にアクセスした場合に、プロセス全体を削除するのは、プロセス管理が、スレッドやプロセスの動作内容を知らないからである。
つまり、プロセス管理は、そもそもカーネルから提供されている機能であり、不正アクセスに対して、例えば、どのスレッドを停止し、どのメモリ領域を開放すればよいのかを知らない。
そのため、プロセス管理は、スレッドが不正メモリ領域ヘアクセスした場合、どのスレッドを削除してよいのかがわからず、また他のプロセスに影響を与えないようにするため、該当プロセス全体を削除し終了させている。
そこで、上述したプロセス管理の実情を考慮し、プロセス中のスレッドが不正な記憶領域にアクセスした場合であっても、プロセスの強制終了を回避し、ユーザに提供するサービスの中断を回避することができるオペレーティングシステムを提供する。
かかる課題を解決するために、本発明のオペレーティングシステムは、複数の処理プログラムをコンピュータに実行させることで1個のプロセスを処理させるオペレーティングシステムにおいて、起動したプロセスを処理するための複数の処理プログラムを管理するプロセス管理手段と、プロセス毎の各処理プログラム実行で使用する記憶領域アドレスを保持し、その記憶領域アドレスに基づいて各処理プログラムを記憶領域へのアクセスを制御するアクセス制御手段と、各処理プログラム実行で不正な記憶領域へのアクセスを検出する不正アクセス検出手段と、不正アクセス検出手段から不正アクセス検出信号を受けた場合、当該不正な記憶領域へのアクセスに係る当該処理プログラムの内容が、プロセス処理に影響がないものと判断したときに、プロセス管理手段が管理する複数の処理プログラムの中から当該処理プログラムのみを削除するプログラム管理手段とを備えることを特徴とする。
本発明によれば、プロセス処理中に処理プログラムの実行が不正な記憶領域にアクセスした場合であっても、プロセス全体を終了することなく、その処理プログラムの実行のみを終了することができる。
以下、本発明のオペレーティングシステムを実施するための最良の形態について説明する。
以下の実施形態は、例えばLinuxに適用した場合について説明する。また、以下の実施形態は、プロセス中のスレッドが不正なメモリ領域にアクセスした場合に、プロセス全体を削除するのではなく、図7に示すように、プロセス中のスレッドのみを削除し、プロセスの強制終了を回避する点に特徴がある。
(A)第1の実施形態
以下、本発明のオペレーティングシステムの第1の実施形態について図面を参照して説明する。
(A−1)第1の実施形態の構成
図1は、Linux上において、カーネルの制御により、起動したプロセス110の状態を概念的に示す図である。なお、プロセス110は、ユーザ空間(ユーザプログラム)10で実行されるものである。
また、図16は、本実施形態を実施するためのハードウェア構成を示す。図16に示すように、メモリ50に格納されている所定プログラムを、CPU40が読み出し、所定プログラムをCPU40が実行することで各種機能が実現される。なお、図16におけるメモリ50は機能を実現するために必要な仮想記憶部という概念をも含むものである。
図1において、プロセス110は、ユーザからの指示を受けて、カーネルの制御により、起動するものである。プロセス110は、n(nは正の整数)個のスレッド111(111−1〜111−n)、スレッド状態管理112を少なくとも備える。
スレッド111(111−1〜111−n)は、プロセス110を実行するために分割された処理単位であり、スレッド111−1〜111−nが実行されことによりプロセスが処理される。また、スレッド111−1〜111−nの実行は、複数の処理を同時にすることができる。
また、スレッド111−1〜111−nは、一般的に、削除されることで、プロセス処理に影響を与えるものと、プロセス処理に影響を与えないものとがある。
プロセス処理に影響を与えるスレッドとして、例えば、シグナルの管理スレッドや時間管理スレッドなどが該当する。また、プロセス処理に影響を与えないスレッドとして、例えば、TCPサーバにおけるTCPコネクションのみを管理するスレッドが該当する。例えばTCPコネクション管理スレッドは削除されてもTCPコネクションが1つ切れるだけであるため、削除されてもプロセス処理に影響を与えない。
本実施形態は、この削除されてもプロセス処理に影響を与えないスレッド(以下、「強制終了対象スレッド」という。)が、不正メモリ領域にアクセスした場合に、その強制終了対象スレッドのみを削除し、又強制終了対象スレッドのみが使用するメモリ領域を開放することで、プロセス全体の削除を回避するものである。これにより、この場合、サービスを継続して提供することが可能となる。
スレッド状態管理112は、生成したスレッド111−1〜111−nに関する情報を管理する機能である。また、スレッド状態管理112は、管理するスレッド111−1〜111−nの処理が終了すると、そのスレッド111−1〜111−nの管理情報を削除する機能である。これにより、プロセス110中で実行しているスレッド111−1〜111−nを管理することができる。
また、スレッド状態管理112は、後述するシグナル受付112aを有する。スレッド状態管理112は、シグナル受付112aをプロセス管理(図1には図示しない)に登録する機能を有し、又カーネルからのSIGSEGVシグナルがプロセス管理にあたえられると、シグナル受付112aにより、呼び出されるものである。
このSIGSEGVシグナルは、スレッドが不正なメモリ領域にアクセスした場合に、カーネルからプロセス管理に与えられるシグナルである。スレッド状態管理112がシグナル受付112aを有することにより、スレッドの不正アクセス時を検知することができる。
また、スレッド状態管理112は、シグナル受付112aにより呼び出されると、処理しているスレッドが強制終了対象スレッドであるか否かを管理情報に基づいて判定するものである。またスレッド状態管理112は、強制終了対象スレッドであると判定した場合、その強制終了対象スレッドを削除し、その強制終了対象スレッドが確保しているメモリ領域を解放する機能である。
シグナル受付112aは、プロセス管理がSIGSEGVシグナルを受信したときに、スレッド状態管理112を呼び出す機能である。また、シグナル受付112aは、スレッド状態管理112によってプロセス管理に登録させるものである。
次に、スレッド状態管理112が管理する情報例について図8のスレッド管理テーブルを参照して説明する。
図8において、スレッド状態管理112が管理する情報は、例えば、スレッド111−1〜111−nの内容を特定するための識別番号(スレッドID)、スレッド111−1〜111−nが使用するメモリ領域への先頭アドレス(仮想アドレス)、メモリ領域のサイズ等である。
これにより、スレッド状態管理112は、プロセス110中のスレッドがどのメモリ領域を使用しているかを把握することができる。
次に、Linux上における、ユーザ空間(ユーザプログラム)10、OS(カーネル空間)20及びメモリ30のそれぞれの状態について図9を参照して説明する。
図9において、ユーザプログラム10の状態は図1で説明した状態に対応するので省略する。
OS20は、プロセス110に対応するカーネル資源210を有する。このカーネル資源210は、プロセス110を実行するために必要な情報を有するものである。
図9において、カーネル資源210は、少なくとも、プロセスやスレッドが使用するメモリ領域の仮想アドレス213(213a及び213b)、シグナルハンドラ212を有する。
シグナルハンドラ212は、シグナルの受信処理をする機能であり、カーネルが送信するSIGSEGVシグナルを、スレッド状態管理112のシグナル受付112aに送信するシグナル受付211を有する。
仮想アドレス213は、プロセス110を処理するためのスレッド111−1〜111−nの記憶領域(仮想記憶部の記憶領域)のアドレス情報であり、この仮想アドレス213に基づいて記憶領域にアクセスし、スレッド111−1〜111−nが読み出されたり、処理に必要な情報が書き込まれたりする。
メモリ30は、処理プログラムを格納するものであり、又処理に必要なデータを格納するものである。メモリ30は、割り当てられたメモリ領域に、プロセス110やスレッド111−1〜111−nを格納し、また処理実行にメモリ領域を確保し必要な情報データを格納するものである。メモリ30がプロセス110やスレッド111−1〜111−nを格納するメモリ領域は、情報としてカーネル資源210に保持される。
(A−2)第1の実施形態の動作
次に、本実施形態のオペレーティングシステムの動作について図面を参照して説明する。
以下では、プロセスの全体動作、スレッドの正常動作時のスレッド状態管理112の動作及びスレッド状態管理112の動作について順に説明する。
(A−2−3)プロセスの全体動作
図10は、プロセスの全体動作を説明するためのフローチャートである。なお、図10は、強制終了対象スレッドが不正なメモリ領域にアクセスした場合の動作を明確にしたものである。
図10において、システムのOS(カーネル)が起動した後(S1)、ユーザにより、プロセス110が起動された(プログラムが実行された)とする(S2)。
このとき、カーネルは、ユーザが起動したプロセスを管理するプログラム(プロセス管理)を同時に起動する(S3)。このプロセス管理の制御によりプロセス110が起動する(S4)。
プロセス110が起動されると、まず、スレッド状態管理112が生成される(S21)。そして、スレッド状態管理112が生成されると、スレッド状態管理112は、シグナル受付112aを生成し、生成したシグナル受付112aをプロセス管理に登録する(S22)。
ここで、シグナル受付112aの登録は、例えば、プロセス管理が、カーネルからシグナルを受信した場合に、その受信したシグナルをシグナル受付112aに送信するように定義付ける所定の関数(例えば、Linuxでは、sigaction関数)を用いて登録することが可能である。
スレッド状態管理112aによりシグナル受付112aの登録がなされると、プロセス110を実行するためのスレッド111−1〜111−nの生成要求が、プロセス110からカーネル又はプロセス管理に与えられる(S23)。なお、図10では、スレッド生成要求がプロセス管理に与えられる場合について示す。
スレッド生成要求がプロセス管理に与えられると、プロセス管理により、スレッド生成処理がなされ(S24)、スレッド111−1〜111−nが生成する(S25)。
ここで、スレッド111−1〜111−nの生成はスレッド生成するたびに要求され、スレッド111−1〜111−nが生成すると、その生成したスレッド111−1〜111−nのスレッドIDがスレッド管理テーブル(図8参照)に登録される。
生成したスレッド111−1〜111−nのスレッドIDがスレッド管理テーブルに登録されると、その生成したスレッド111−1〜111−nの処理実行が開始される(S26)。
スレッド111−1〜111−nの処理が実行されると、処理実行に使用するメモリ領域30が確保される。そして、その確保されたメモリ領域30のアドレス及びメモリサイズが、スレッド管理テーブル(図8参照)に登録される(S27)。
このようにして、スレッド111−1〜111−nは処理実行されていき、正常に処理が終了するスレッド111−1〜111−nは、図2の従来のスレッド終了処理(図2のS9〜S11)と同様にして終了する。
一方、スレッド111−1〜111−nが不正なメモリ領域にアクセスし、異常が発生すると(S28)、S1GSEGVシグナルが、カーネルからプロセス管理に送信される(S29)。
カーネルからのSIGSEGVシグナルがプロセス管理に与えられると、プロセス管理により、登録されているシグナル受付112aが呼び出され、シグナル受付112aにより、スレッド状態管理が呼び出される(S30)。
シグナル受付112aによりスレッド状態管理112が呼び出されると、スレッド状態管理112により、その処理をしているスレッド111−1〜111−nが強制終了対象スレッドであるか否かスレッド管理テーブル(図8参照)により判定される。
そして、スレッド状態管理112により、当該処理しているスレッド111−1〜111−nが強制終了対象スレッドであると判定されると、そのスレッド111−1〜111−nが削除され、当該スレッド111−1〜111−nのメモリ領域が解放される。これにより、当該強制終了対象スレッドのみ削除され、この強制終了対象スレッドのみ終了させることができる。
なお、スレッド状態管理112により、不正メモリ領域にアクセスしたスレッド111−1〜111−nが強制終了対象スレッドでないと判定された場合、プロセス110全体が削除されプロセス110は強制終了される。
(A−2−2)スレッドの正常動作時のスレッド状態管理112の動作
次に、スレッドの正常動作時のスレッド状態管理112の動作について図11を参照して説明する。
図11は、図10のS25において、生成したスレッド111−1〜111−nが正常に起動し、正常処理が実行され、正常に終了する場合の動作を示すフローチャートである。
図10のS25において、生成したスレッド111−1〜111−nが起動されると(S26)、その起動したスレッド111−1〜111−nが使用するメモリ領域30が確保される(S33)。
メモリ領域30が確保されると、その確保したメモリ領域30の先頭アドレス及びメモリサイズとは、スレッドIDに対応付けて、スレッド管理テーブルに登録される(S34)。
このメモリ領域30の登録は、スレッド111−1〜111−nが使用するメモリ領域30が確保されるたびに登録される。
これにより、プロセス110中の各スレッド111−1〜111−nについて、スレッドIDと対応付けたメモリ領域30のアドレスとメモリサイズとを管理することができる。
その後、スレッド111−1〜111−nが、所定の処理が実行され(S35)、正常に処理が終了すると、スレッド状態管理112により、スレッド111−1〜111−nが使用していたメモリ領域30が解放される(S36)。
そして、スレッド状態管理112が管理するスレッド管理テーブルに基づいて、処理が終了したスレッド111−1〜111−nについて、メモリ領域30の先頭アドレス及びメモリサイズが削除され(S37)、最後に当該スレッド111−1〜111−nを終了する(S38)。
なお、スレッド111−1〜111−nの処理中、動的にメモリ領域を取得、又は解放する場合は、S33〜S37の動作を繰り返す。
(A−2−3)スレッド状態管理112の動作
次に、スレッド状態管理112の動作について、図12を参照して説明する。図12は、第1の実施形態におけるスレッド状態管理112の動作を示すフローチャートである。
プロセス110によりスレッド状態管理112が生成されると(S40)、スレッド状態管理112により、シグナル受付112aが生成され、プロセス管理に登録される(S41)。
シグナル受付112aの登録がなされると、スレッド状態管理112により、スレッド処理が終了したか否かが判定される(S42)。スレッド処理が終了したと判定した場合S51に移り、スレッド処理が終了していないと判定した場合S43に移る。
なお、このとき、シグナル受付112aは、SIGSEGVシグナルがカーネルからプロセス管理に与えられ、プロセス管理からの呼び出しを受け付けている。
スレッド状態管理112によりスレッド処理が終了していないと判定された場合、スレッド状態管理112により、プロセス110内においてスレッド111−1〜111−nが生成されたか否かが判定される(S43)。
プロセス110内においてスレッド111−1〜111−nが生成されたことを判定された場合、その生成したスレッド111−1〜111−nの管理情報がスレッド管理テーブルに登録(エントリ)される(S44)。このエントリがされると、S42に戻り繰り返し動作がなされる。
一方、プロセス110内においてスレッド111−1〜111−nが生成されたことが判定されない場合、実行中のスレッド111−1〜111−nの処理が終了したか否かが判定される(S45)。
実行中のスレッド111−1〜111−nの処理が終了したと判定された場合、そのスレッド処理が終了したスレッド111−1〜111−nについて、登録されている管理情報が、スレッド管理テーブルから削除される(S46)。
一方、実行中のスレッド111−1〜111−nの処理が終了していないと判定された場合、シグナル受付112aが、プロセス管理から呼び出されているか否かを判定する(S47)。
つまり、SIGSEGVシグナルが、カーネルからプロセス管理に与えられ、プロセス管理によりシグナル受付112aが呼び出された場合、スレッド111−1〜111−nが不正なメモリ領域30にアクセスしたものと判断し、その不正アクセスが発生したときのスレッド111−1〜111−nが強制終了対象スレッドであるか否かが、スレッド管理テーブルに基づいて判断される(S48)。なお、シグナル受付112aがプロセス管理から呼び出されていない場合、S42に戻り動作が繰り返される。
S48において、強制終了対象スレッドであると判断されると、その強制終了対象スレッドが削除される。また、スレッド管理テーブルを参照して、その削除された強制終了対象スレッドのスレッドIDに基づいて強制終了対象スレッドが確保していたメモリ領域30が検索され、そのメモリ領域が解放される(S49)。
なお、強制終了対象スレッドの削除及び使用していたメモリ領域30の解放がなされると、S42に戻り動作が繰り返される。
これにより、不正メモリ領域にアクセスしたスレッド111−1〜111−nが強制終了対象スレッドである場合に、プロセス全体を削除することなく、強制終了対象スレッドのみを削除することができる。
一方、S48において、強制終了対象スレッドでないと判断されると、プロセス全体が削除されて、プロセスは強制終了(異常終了)する(S50)。
また、S42において、スレッド処理が終了したと判定すると、シグナル受付112aによるプロセス管理の呼び出し受付を終了し(S51)、スレッド状態の管理が終了する(S52)。
以上により、強制終了対象スレッドが不正メモリヘアクセスした場合、図12のS48〜S50の処理により、プロセスを削除せずに強制終了対象スレッドのみを削除し、他のプロセスが使用するメモリを保護する機能を実現する。
(A−3)第1の実施形態の効果
以上、本実施形態によれば、オペレーティングシステム上のユーザ空間において、少なくとも、プロセスを実行するスレッドの内容及びメモリ領域情報の管理機能、シグナル受付機能、シグナル受信時のスレッド内容判定機能を有することにより、不正なメモリ領域にアクセスしたスレッドが強制終了対象スレッドである場合に、その強制終了対象スレッドのみを削除し、かつ、その強制終了対象スレッドのメモリ領域を解放することができる。
その結果、スレッドが不正なメモリ領域にアクセスした場合に、プロセス全体を削除することによるプロセスの終了を回避することができる。また、プロセスの終了を回避できるので、ユーザに提供するサービスを継続して提供することができる。
(B)第2の実施形態
次に、本発明のオペレーティングシステムの第2の実施形態について図面を参照して説明する。
(B−1)第2の実施形態の構成及び動作
第2の実施形態は、図1及び図9で説明した第1の実施形態の構成に対応する。従って、以下では、図1及び図9中の対応構成及び符号を用いて、第2の実施形態について説明する。
第2の実施形態が第1の実施形態と異なる点は、強制終了対象スレッドが不正なメモリへアクセスした時のスレッド状態管理112の動作であり、第1の実施形態では、強制終了対象スレッドの削除及びそのメモリ領域を解放するのに対し、第2の実施形態では、強制終了対象スレッドを削除するが、メモリ領域を解放しない点でことなる。そして、第2の実施形態では、スレッドを再生して、その再生スレッドに解放しなかったメモリ領域を割り当てる点が、第1の実施形態と異なる。
以下では、第2の実施形態のスレッド状態管理112の動作について図面を参照して説明する。
図15は、第2の実施形態のスレッド状態管理112の動作を示すフローチャートである。なお、図15において、図12の説明と対応するフローについては、対応符号を付して示す。
図15において、スレッド状態管理112の起動からシグナルの受信の有無の判定までの動作(S40〜S47)は、図12の第1の実施形態の動作に対応するので詳細な動作は省略する。
S47において、カーネルからプロセス管理にSIGSEGVシグナル与えられ、プロセス管理によりシグナル受付112aが呼び出されると、フレッド状態管理112により、不正アクセスを起こしたスレッド111−1〜111−nが強制終了対象スレッドであるか否かスレッド管理テーブル(図8参照)に基づいて判断される(S48)。
不正なメモリにアクセスしたスレッド111−1〜111−nが強制終了対象スレッドであると判断した場合、そのスレッド111−1〜111−nのみを削除する(S61)。
このときのスレッド状態管理112の動作の様子について図13を参照して説明する。図13に示すように、不正なメモリにアクセスしたスレッド111が強制終了対象スレッドである場合、そのスレッド111のみを削除する。第1の実施形態では、スレッド管理テーブルを検索して、強制終了対象スレッドが使用するメモリ領域を解放することとするが、本実施形態では、スレッド状態管理112が、強制終了対象スレッドが使用するメモリ領域を解放しない。
これにより、削除された強制終了対象スレッドが削除されるまでに使用していた情報を、喪失せずに保つことができる。
S61において、スレッド状態管理112により強制終了対象スレッドが削除されるとスレッドが再生される。そして、スレッド状態管理112により、削除された強制終了対象スレッドについてのスレッド管理テーブルの管理内容を、再生されたスレッドに割り当てられ管理される(S62)。
このときのスレッド状態管理112の動作を様子について図14を参照して説明する。図14に示すように、スレッド111が再生されると、スレッド状態管理112から、削除したスレッドが使用していたメモリ領域が通知される。スレッド状態管理112からメモリ領域の通知を受けた再生スレッドは、そのメモリ領域にアクセスし、メモリ領域に格納されている内容をチェックして、そのメモリ領域の内容を用いて処理を継続する。
これにより、再生したスレッドが、強制終了対象スレッドが削除されるまでに使用していたメモリ領域をそのまま用いて処理させることができる。
なお、スレッドの再生処理は、図10の第1の実施形態で説明したスレッド生成処理(S23〜S25)と同様にして生成する。
また、S48において、不正なメモリにアクセスしたスレッドが強制終了対象スレッドでない場合の動作(S50)、及び、スレッド処理が終了した場合の動作(S42、S51及びS52)は、第1の実施形態と同様なので詳細な動作説明は省略する。
(B−3)第2の実施形態の効果
以上、第2の実施形態によれば、第1の実施形態と同様の効果を奏する。
また、第2の実施形態によれば、スレッド状態管理の処理を、図15のステップS61、S62のようにすることで、強制終了対象スレッド削除時も、情報を失うことなく、プロセスの処理継統を可能にすることができる。
(C)他の利用形態
(C−1)第1及び第2の実施形態では、オペレーティングシステムとしてLinuxを適用した場合について説明したが、複数のスレッドを動作させる複数のプロセスを並列処理可能なマルチプロセス・マルチスレッドを採用するオペレーティングシステムであれば、広く適用することが可能である。マルチプロセス・マルチスレッド採用のオペレーティングシステムの例として、例えばSUN Microsystems社が提供するSolaris(登録商標)、ヒューレットパッカード社が提供するHP−UX(登録商標)などの汎用UNIX上のプロセスにも適用可能である。
第1の実施形態の起動したプロセスの状態を概念的に示す図である。 従来のプロセス起動から終了までの動作を示すフローチャートである。 従来のプロセスの実行環境を示す図である。 従来の不正なメモリアクセスを説明する概念図である。 従来のプロセス全体の削除動作を示す概念図である。 従来のプロセス終了処理を説明するためのシーケンス図である。 実施形態の特徴を説明する説明図である。 第1の実施形態のスレッド管理テーブル例を示す説明図である。 第1の実施形態のプロセスの状態を説明する概念図である。 第1の実施形態のプロセスの全体動作を示すフローチャートである。 第1の実施形態のスレッドの正常動作時のスレッド状態管理の動作を示すフローチャートである。 第1の実施形態のスレッド状態管理の動作を示すフローチャートである。 第2の実施形態のプロセスの状態を説明する概念図である。 第2の実施形態のプロセスの状態を説明する概念図である。 第2の実施形態のスレッド状態管理の動作を示すフローチャートである。 第1の実施形態のハードウェア構成図である。
符号の説明
10…ユーザ空間、20…OS、110…プロセス、111−1〜111−n…スレッド、112…スレッド状態管理、112a…シグナル受付、40…CPU、30、50…メモリ。

Claims (4)

  1. 複数の処理プログラムをコンピュータに実行させることで1個のプロセスを処理させるオペレーティングシステムにおいて、
    起動したプロセスを処理するための上記複数の処理プログラムを管理するプロセス管理手段と、
    上記プロセス毎の上記各処理プログラム実行で使用する記憶領域アドレスを保持し、その記憶領域アドレスに基づいて上記各処理プログラムを記憶領域へのアクセスを制御するアクセス制御手段と、
    上記各処理プログラム実行で不正な記憶領域へのアクセスを検出する不正アクセス検出手段と、
    上記不正アクセス検出手段から不正アクセス検出信号を受けた場合、当該不正な記憶領域へのアクセスに係る当該処理プログラムの内容が、プロセス処理に影響がないものと判断したときに、上記プロセス管理手段が管理する上記複数の処理プログラムの中から当該処理プログラムのみを削除するプログラム管理手段と
    を備えることを特徴とするオペレーティングシステム。
  2. 上記プログラム管理手段は、上記プログラム管理手段が管理する上記各処理プログラムの内容及び記憶領域情報を管理することを特徴とする請求項1に記載のオペレーティングシステム。
  3. 上記プログラム管理手段は、削除した上記処理プログラムが使用していた記憶領域を解放することを特徴とする請求項1又は2に記載のオペレーティングシステム。
  4. 上記プログラム管理手段は、削除した上記処理プログラムが使用した記憶領域を、新たに設定した処理プログラムの使用に割り当てることを特徴とする請求項1又は2に記載のオペレーティングシステム。
JP2004096462A 2004-03-29 2004-03-29 オペレーティングシステム Pending JP2005284630A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004096462A JP2005284630A (ja) 2004-03-29 2004-03-29 オペレーティングシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004096462A JP2005284630A (ja) 2004-03-29 2004-03-29 オペレーティングシステム

Publications (1)

Publication Number Publication Date
JP2005284630A true JP2005284630A (ja) 2005-10-13

Family

ID=35182948

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004096462A Pending JP2005284630A (ja) 2004-03-29 2004-03-29 オペレーティングシステム

Country Status (1)

Country Link
JP (1) JP2005284630A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009524140A (ja) * 2006-01-17 2009-06-25 エヌエックスピー ビー ヴィ 領域保護装置、命令セット、及びメモリ領域を保護する方法
JP2010113488A (ja) * 2008-11-06 2010-05-20 Esol Co Ltd オペレーティングシステムおよび情報処理装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009524140A (ja) * 2006-01-17 2009-06-25 エヌエックスピー ビー ヴィ 領域保護装置、命令セット、及びメモリ領域を保護する方法
JP2010113488A (ja) * 2008-11-06 2010-05-20 Esol Co Ltd オペレーティングシステムおよび情報処理装置
JP4576452B2 (ja) * 2008-11-06 2010-11-10 イーソル株式会社 オペレーティングシステムおよび情報処理装置

Similar Documents

Publication Publication Date Title
KR102255767B1 (ko) 가상 머신 감사를 위한 시스템 및 방법들
US8826269B2 (en) Annotating virtual application processes
US8448165B1 (en) System and method for logging operations of virtual machines
JP4436036B2 (ja) 情報処理装置、トレース処理方法、プログラム及び記録媒体
EP1989635B1 (en) Migrating a virtual machine that owns a resource such as a hardware device
US20080271016A1 (en) Hypervisor with cloning-awareness notifications
US7293251B2 (en) Initiating and debugging a process in a high assurance execution environment
JP2007328782A (ja) カーネル間でカーネル・サービスを共用するための方法、装置、およびコンピュータ・プログラム
US8006254B2 (en) Bequeathing privilege to a dynamically loaded module
JP5382450B2 (ja) アクセス制御装置、その方法及び情報記録媒体
US9417973B2 (en) Apparatus and method for fault recovery
US20090276205A1 (en) Stablizing operation of an emulated system
US9158572B1 (en) Method to automatically redirect SRB routines to a zIIP eligible enclave
JP5131563B2 (ja) コンピュータ、動作ルール適用方法、オペレーティングシステム
JP2006164266A (ja) オペレーティングシステムのパフォーマンスの改善
WO2022042127A1 (zh) 一种协程切换的方法、装置及设备
US7797473B2 (en) System for executing system management interrupts and methods thereof
JP2009176146A (ja) マルチプロセッサシステム、障害検出方法および障害検出プログラム
CN110764962A (zh) 日志处理方法和装置
US7962922B2 (en) Delivering callbacks into secure application areas
JP3993342B2 (ja) 電子計算機における処理の中断/再開方法
JP2005284630A (ja) オペレーティングシステム
US7409691B2 (en) Extending operating system subsystems
US7587722B2 (en) Extending operating system subsystems
JPH11134204A (ja) スタック保護装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070131

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20081009

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081021

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081217

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090310