(57)【要約】【課題】メモリを共有する複数のタスクがメモリに記憶されるデータを保護するための制御をしなくても、メモリに記憶されるデータの保護を可能とする。【解決手段】ＯＳが、メモリを論理的に区画してなる各記憶領域の特定情報と各記憶領域にデータを書き込む際に各記憶領域への書き込み可否を判断するためにＣＰＵにより参照される書込可否情報とを対応付け、ＯＳが、各タスクの識別情報と各タスクの実行中における書き込み先として各タスクに割り当てられる１以上の記憶領域含んで構成される書込可能領域の特定情報とを対応付け、ＯＳが、第１タスクから第２タスクに切り替える際に第１タスクに割り当てられている第１書込可能領域を構成する各記憶領域の書込可否情報を書込み不可を示す情報に更新し、第２タスクに割り当てられている第２書込み可能領域を構成する各記憶領域の書込可否情報を書込み可を示す情報に更新する。【選択図】図１
2007310834.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵとメモリとを備え、オペレーティングシステムと複数のタスクとが実行される情報処理装置における、前記メモリに記憶されるデータの保護方法であって、
前記オペレーティングシステムが、前記メモリを論理的に区画してなる各記憶領域の特定情報と、前記各記憶領域にデータを書き込む際に、前記各記憶領域へのデータの書き込み可否を判断するために前記ＣＰＵにより参照される書き込み可否情報と、をそれぞれ対応付けて前記メモリに記憶し、
前記オペレーティングシステムが、前記各タスクの識別情報と、前記各タスクの実行中におけるデータの書き込み先として前記各タスクにそれぞれ割り当てられる、１以上の前記記憶領域含んで構成される書込み可能領域の特定情報と、をそれぞれ対応付けて前記メモリに記憶し、
前記オペレーティングシステムが、前記情報処理装置により実行されるタスクを第１のタスクから第２のタスクに切り替える際に、前記第１のタスクに割り当てられている第１の書込み可能領域を構成する各記憶領域の特定情報と対応付けられている書き込み可否情報を、書込み不可を示す情報に更新し、前記第２のタスクに割り当てられている第２の書込み可能領域を構成する各記憶領域の特定情報と対応付けられている書き込み可否情報を、書込み可を示す情報に更新する
ことを特徴とするデータ保護方法。
【請求項２】
請求項１に記載のデータ保護方法であって、
前記オペレーティングシステムが、第３のタスクの実行中におけるデータの書き込み先として当該第３のタスクに割り当てられている第３の書込み可能領域を構成する少なくとも一部の記憶領域を、前記第２のタスクの実行中においてもデータを書き込み可能な第４の書込み可能領域として前記第２のタスクに割り当て、前記第２のタスクの識別情報と前記第４の書込み可能領域の特定情報とを対応付けて前記メモリに記憶し、
前記オペレーティングシステムは、前記情報処理装置により実行されるタスクを前記第１のタスクから前記第２のタスクに切り替える際に、前記第４の書き込み可能領域を構成する各記憶領域の特定情報と対応付けられている書き込み可否情報についても、書込み可を示す情報に更新する
ことを特徴とするデータ保護方法。
【請求項３】
請求項２に記載のデータ保護方法であって、
前記オペレーティングシステムは、前記第３の書込み可能領域の特定情報と、前記第３の書込み可能領域を構成する記憶領域を、前記第４の書込み可能領域として割り当てるためのパスワードと、を対応付けて前記メモリに記憶し、
前記オペレーティングシステムは、前記第２のタスクから前記メモリに前記パスワードに一致するパスワードの書込みがなされた場合には、前記情報処理装置により実行されるタスクを前記第１のタスクから前記第２のタスクに切り替える際に、前記第４の書き込み可能領域を構成する各記憶領域の特定情報と対応付けられている書き込み可否情報についても、書込み可を示す情報に更新する
ことを特徴とするデータ保護方法。
【請求項４】
請求項１に記載のデータ保護方法であって、
前記情報処理装置は、仮想記憶方式により前記複数のタスクを実行し、
前記各記憶領域は、仮想記憶方式における各ページであり、
前記各記憶領域の特定情報は、各ページの先頭アドレスであり、
前記各書込み可能領域の特定情報は、前記各書込み可能領域を構成する各ページのうちの先頭ページの先頭アドレス及び前記各書込み可能領域を構成するページの数である
ことを特徴とするデータ保護方法。
【請求項５】
請求項４に記載のデータ保護方法であって、
前記ＣＰＵは仮想アドレスを実アドレスに変換するアドレス変換機構を有し、
前記書込み可否情報は、前記ＣＰＵが前記各記憶領域にデータを書き込む際に、前記各記憶領域へのデータの書き込み可否を判断するために前記アドレス変換機構により参照されることを特徴とするデータ保護方法。
【請求項６】
ＣＰＵと、
メモリと、
を備え、
オペレーティングシステムと複数のタスクとが実行される情報処理装置であって、
前記メモリを論理的に区画してなる各記憶領域の特定情報と、前記各記憶領域にデータを書き込む際に、前記各記憶領域へのデータの書き込み可否を判断するために前記ＣＰＵにより参照される書き込み可否情報と、をそれぞれ対応付けて記憶する書込み可否管理テーブルと、
前記各タスクの識別情報と、前記各タスクの実行中におけるデータの書き込み先として前記各タスクにそれぞれ割り当てられる、１以上の前記記憶領域含んで構成される書込み可能領域の特定情報と、をそれぞれ対応付けて記憶する書込み領域管理テーブルと、
前記情報処理装置により実行されるタスクを第１のタスクから第２のタスクに切り替える際に、前記第１のタスクに割り当てられている第１の書込み可能領域を構成する各記憶領域の特定情報と対応付けられている書き込み可否情報を、書込み不可を示す情報に更新し、前記第２のタスクに割り当てられている第２の書込み可能領域を構成する各記憶領域の特定情報と対応付けられている書き込み可否情報を、書込み可を示す情報に更新するタスク切替部と、
を備えることを特徴とする情報処理装置。
【請求項７】
請求項６に記載の情報処理装置であって、
第３のタスクの実行中におけるデータの書き込み先として当該第３のタスクに割り当てられている第３の書込み可能領域を構成する少なくとも一部の記憶領域を、前記第２のタスクの実行中においてもデータを書き込み可能な第４の書込み可能領域として前記第２のタスクに割り当て、前記第２のタスクの識別情報と前記第４の書込み可能領域の特定情報とを対応付けて記憶する書込み領域拡張テーブルと、
を備え、
前記タスク切替部は、前記情報処理装置により実行されるタスクを前記第１のタスクから前記第２のタスクに切り替える際に、前記第４の書き込み可能領域を構成する各記憶領域の特定情報と対応付けられている書き込み可否情報についても、書込み可を示す情報に更新する
ことを特徴とする情報処理装置。
【請求項８】
請求項７に記載の情報処理装置であって、
前記第３の書込み可能領域の特定情報と、前記第３の書込み可能領域を構成する記憶領域を、前記第４の書込み可能領域として割り当てるためのパスワードと、を対応付けて記憶するパスワード記憶テーブルと、
を備え、
前記タスク切替部は、前記第２のタスクから前記メモリに前記パスワードに一致するパスワードの書込みがなされた場合には、前記情報処理装置により実行されるタスクを前記第１のタスクから前記第２のタスクに切り替える際に、前記第４の書き込み可能領域を構成する各記憶領域の特定情報と対応付けられている書き込み可否情報についても、書込み可を示す情報に更新する
ことを特徴とする情報処理装置。
【請求項９】
請求項６に記載の情報処理装置であって、
前記情報処理装置は、仮想記憶方式により前記複数のタスクを実行し、
前記各記憶領域は、仮想記憶方式における各ページであり、
前記各記憶領域の特定情報は、各ページの先頭アドレスであり、
前記各書込み可能領域の特定情報は、前記各書込み可能領域を構成する各ページのうちの先頭ページの先頭アドレス及び前記各書込み可能領域を構成するページの数である
ことを特徴とする情報処理装置。
【請求項１０】
請求項６に記載の情報処理装置であって、
前記ＣＰＵは仮想アドレスを実アドレスに変換するアドレス変換機構を有し、
前記書込み可否情報は、前記ＣＰＵが前記各記憶領域にデータを書き込む際に、前記各記憶領域へのデータの書き込み可否を判断するために前記アドレス変換機構により参照されることを特徴とする情報処理装置。
【請求項１１】
ＣＰＵとメモリとを備え、複数のタスクが実行される情報処理装置に、
前記メモリを論理的に区画してなる各記憶領域の特定情報と、前記各記憶領域にデータを書き込む際に、前記各記憶領域へのデータの書き込み可否を判断するために前記ＣＰＵにより参照される書き込み可否情報と、をそれぞれ対応付けて前記メモリに記憶する手順と、
前記各タスクの識別情報と、前記各タスクの実行中におけるデータの書き込み先として前記各タスクにそれぞれ割り当てられる、１以上の前記記憶領域含んで構成される書込み可能領域の特定情報と、をそれぞれ対応付けて前記メモリに記憶する手順と、
前記情報処理装置により実行されるタスクを第１のタスクから第２のタスクに切り替える際に、前記第１のタスクに割り当てられている第１の書込み可能領域を構成する各記憶領域の特定情報と対応付けられている書き込み可否情報を、書込み不可を示す情報に更新し、前記第２のタスクに割り当てられている第２の書込み可能領域を構成する各記憶領域の特定情報と対応付けられている書き込み可否情報を、書込み可を示す情報に更新する手順と、
を実行させるためのオペレーティングシステム。
【請求項１２】
請求項１１に記載のオペレーティングシステムであって、
第３のタスクの実行中におけるデータの書き込み先として当該第３のタスクに割り当てられている第３の書込み可能領域を構成する少なくとも一部の記憶領域を、前記第２のタスクの実行中においてもデータを書き込み可能な第４の書込み可能領域として前記第２のタスクに割り当て、前記第２のタスクの識別情報と前記第４の書込み可能領域の特定情報とを対応付けて前記メモリに記憶する手順と、
前記情報処理装置により実行されるタスクを前記第１のタスクから前記第２のタスクに切り替える際に、前記第４の書き込み可能領域を構成する各記憶領域の特定情報と対応付けられている書き込み可否情報についても、書込み可を示す情報に更新する手順と、
を実行させるためのオペレーティングシステム。
【請求項１３】
請求項１２に記載のオペレーティングシステムであって、
前記第３の書込み可能領域の特定情報と、前記第３の書込み可能領域を構成する記憶領域を、前記第４の書込み可能領域として割り当てるためのパスワードと、を対応付けて前記メモリに記憶する手順と、
前記第２のタスクから前記メモリに前記パスワードに一致するパスワードの書込みがなされた場合には、前記情報処理装置により実行されるタスクを前記第１のタスクから前記第２のタスクに切り替える際に、前記第４の書き込み可能領域を構成する各記憶領域の特定情報と対応付けられている書き込み可否情報についても、書込み可を示す情報に更新する手順と、
を実行させるためのオペレーティングシステム。
【請求項１４】
請求項１１に記載のオペレーティングシステムであって、
前記情報処理装置は、仮想記憶方式により前記複数のタスクを実行し、
前記各記憶領域は、仮想記憶方式における各ページであり、
前記各記憶領域の特定情報は、各ページの先頭アドレスであり、
前記各書込み可能領域の特定情報は、前記各書込み可能領域を構成する各ページのうちの先頭ページの先頭アドレス及び前記各書込み可能領域を構成するページの数である
ことを特徴とするオペレーティングシステム。
【請求項１５】
請求項１１に記載のオペレーティングシステムであって、
前記ＣＰＵは仮想アドレスを実アドレスに変換するアドレス変換機構を有し、
前記書込み可否情報は、前記ＣＰＵが前記各記憶領域にデータを書き込む際に、前記各記憶領域へのデータの書き込み可否を判断するために前記アドレス変換機構により参照されることを特徴とするオペレーティングシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のタスクが実行される情報処理装置においてメモリに記憶されるデータを保護する方法、情報処理装置及びオペレーティングシステムに関する。
【背景技術】
【０００２】
複数のタスクを実行する情報処理装置において、メモリに記憶されるデータを保護するための技術として、実メモリに対して保護キーを割り当てる技術が開発されている（例えば特許文献１参照）。
【０００３】
また仮想記憶システムにおいて、仮想アドレスから実アドレスへアドレス変換を行う時に参照されるページテーブル内に、主記憶装置のアクセスのための制御情報を付加してアドレス変換時に判定する技術も開発されている。この技術によれば、保護キーが一致していても書込み禁止にすることができる。
【特許文献１】特開昭６２−１００８５１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところで、仮想アドレスから実アドレスへの変換を行うアドレス変換機構によって実現される仮想記憶システムにおける仮想領域は、その使用目的により、システム領域、空間固有領域、ジョブ固有領域、プログラム固有領域、システム共通領域、空間間共通作業領域などに分類される。
【０００５】
従来の技術は、システム共通領域や空間間共通作業領域においては、アドレス空間の異なる複数のタスクが他のタスクが確保した領域に書込みを行うことを目的としていることから、書込み禁止にするよりも、保護キーの設定で書込み保護を行う場合が多い。
【０００６】
保護キーのみで書込み保護を行った場合には、複数のタスクが無規則に確保した領域に対して、タスクに割り当てられた実行キーと同一保護キーの領域に対して保護キーが有効にならず、他タスクが確保した同一保護キーの領域に不当に書込むことが可能である。さらに、保護キーでの書込み保護の場合、不特定多数の同一保護キーのタスクが存在することになり、領域破壊が発生した場合の原因特定に時間を要する場合もある。
【０００７】
またページテーブルに制御情報を付加してアドレス変換時に判定する方法を用いて書込み保護を行うシステムの場合には、領域を確保したタスク、または、その領域に書込みを行うタスクが必要に応じてページテーブルに制御情報を付加して、書込み保護の設定や解除を行う必要がある。このため、書込み保護の設定や解除のオーバヘッドを削減することを目的に、書込み保護を行わない場合がある。さらに、書込み保護解除中のタスクスイッチにより、他のタスク動作中に保護が解除されている状態となり、システムとしての書込み保護が不十分となる場合もある。
【０００８】
本発明は、複数のタスクが共有するシステム共通領域や空間間共通作業領域等のメモリにおいて、各タスクが書込み保護のための制御をしなくても書込み保護を実現することを可能とするデータ保護方法、情報処理装置及びオペレーティングシステムを提供することを主たる目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するに、本発明は、ＣＰＵとメモリとを備え、オペレーティングシステムと複数のタスクとが実行される情報処理装置における、前記メモリに記憶されるデータの保護方法であって、前記オペレーティングシステムが、前記メモリを論理的に区画してなる各記憶領域の特定情報と、前記各記憶領域にデータを書き込む際に、前記各記憶領域へのデータの書き込み可否を判断するために前記ＣＰＵにより参照される書き込み可否情報と、をそれぞれ対応付けて前記メモリに記憶し、前記オペレーティングシステムが、前記各タスクの識別情報と、前記各タスクの実行中におけるデータの書き込み先として前記各タスクにそれぞれ割り当てられる、１以上の前記記憶領域含んで構成される書込み可能領域の特定情報と、をそれぞれ対応付けて前記メモリに記憶し、前記オペレーティングシステムが、前記情報処理装置により実行されるタスクを第１のタスクから第２のタスクに切り替える際に、前記第１のタスクに割り当てられている第１の書込み可能領域を構成する各記憶領域の特定情報と対応付けられている書き込み可否情報を、書込み不可を示す情報に更新し、前記第２のタスクに割り当てられている第２の書込み可能領域を構成する各記憶領域の特定情報と対応付けられている書き込み可否情報を、書込み可を示す情報に更新する。
【００１０】
このような態様によって、各タスクがメモリ上に記憶されるデータを保護するための制御を行わなくても、メモリ上に記憶されるデータが保護されるようにすることが可能となる。つまり、オペレーティングシステムが、タスク選択時に、実行状態のタスクが必要な領域、すなわち、自タスクが確保した領域が書込み可能となるようにし、他タスクが確保した領域は、書込み禁止となるようにすることによって、システム共通領域や空間間共通作業領域の共通領域において、複数のタスクが確保した領域が混在する中で、他タスクが確保した領域に対して、ユーザタスクが領域の書込み保護の制御を考慮しなくても、自タスクが確保した領域のみが書込み可能となり、他タスクが確保した領域は、書込み禁止とすることが可能となる。これにより、他タスクの領域破壊を防止し、領域破壊による他タスクの誤動作を防止することができる。このため例えば、タスクが暴走し、メモリへのデータの書き込み先が制御不能になったとしても、そのタスクに割り当てられていない領域へデータが書き込まれることはないので、メモリに記憶されているデータを保護することが可能となる。また例えば、悪意を持ってタスクが実行され、他のタスクにより書き込まれたデータを不正に書き換えようとしても、本データ保護方法によれば、そのような不正を阻止することが可能となる。そのため、情報処理装置のセキュリティを向上させることも可能となる。
【００１１】
また前記オペレーティングシステムが、第３のタスクの実行中におけるデータの書き込み先として当該第３のタスクに割り当てられている第３の書込み可能領域を構成する少なくとも一部の記憶領域を、前記第２のタスクの実行中においてもデータを書き込み可能な第４の書込み可能領域として前記第２のタスクに割り当て、前記第２のタスクの識別情報と前記第４の書込み可能領域の特定情報とを対応付けて前記メモリに記憶し、前記オペレーティングシステムは、前記情報処理装置により実行されるタスクを前記第１のタスクから前記第２のタスクに切り替える際に、前記第４の書き込み可能領域を構成する各記憶領域の特定情報と対応付けられている書き込み可否情報についても、書込み可を示す情報に更新するようにすることもできる。
【００１２】
このような態様によって、他タスクが確保した領域であっても、書込みが必要であるとあらかじめ判っている領域を宣言しておくことで、その領域へのデータの書込みを可能とすることもできる。このように、複数のタスクで共通の記憶領域へのデータの書き込みを可能とすることによって、タスク間でのデータの受け渡し等が可能となり、より高度な情報処理サービスを提供することも可能となる。
【００１３】
また前記オペレーティングシステムは、前記第３の書込み可能領域の特定情報と、前記第３の書込み可能領域を構成する記憶領域を、前記第４の書込み可能領域として割り当てるためのパスワードと、を対応付けて前記メモリに記憶し、前記オペレーティングシステムは、前記第２のタスクから前記メモリに前記パスワードに一致するパスワードの書込みがなされた場合には、前記情報処理装置により実行されるタスクを前記第１のタスクから前記第２のタスクに切り替える際に、前記第４の書き込み可能領域を構成する各記憶領域の特定情報と対応付けられている書き込み可否情報についても、書込み可を示す情報に更新するようにすることもできる。
【００１４】
このような態様によって、パスワードを知っている特定のタスク間でのみ、メモリ上の記憶領域を共用することが可能となる。これにより、あるタスクがメモリに書き込んだデータがそのタスクとは無関係のタスクに漏洩するようなことを防止できるため、情報処理装置のセキュリティを向上させることが可能となる。
【００１５】
また前記情報処理装置は、仮想記憶方式により前記複数のタスクを実行し、前記各記憶領域は、仮想記憶方式における各ページであり、前記各記憶領域の特定情報は、各ページの先頭アドレスであり、前記各書込み可能領域の特定情報は、前記各書込み可能領域を構成する各ページのうちの先頭ページの先頭アドレス及び前記各書込み可能領域を構成するページの数であるようにすることもできる。
【００１６】
このような態様によって、仮想記憶システムのシステム共通領域や空間間共通作業領域の共通領域において、複数のタスクが確保した領域が混在する中で、他タスクが確保した領域に対して、ユーザタスクで領域の書込み保護の制御を考慮しなくても、自タスクが確保した領域のみが書込み可能となり、他タスクが確保した領域は、書込み禁止となり、他タスクの領域破壊を防止し、領域破壊による他タスクの誤動作を防止することができる。
【００１７】
また前記ＣＰＵは仮想アドレスを実アドレスに変換するアドレス変換機構を有し、前記書込み可否情報は、前記ＣＰＵが前記各記憶領域にデータを書き込む際に、前記各記憶領域へのデータの書き込み可否を判断するために前記アドレス変換機構により参照されるようにしてもよい。
【００１８】
このような態様によって、あるタスクを実行中に、ＣＰＵがデータの書き込み命令を実行した場合、アドレス変換機構が仮想アドレスから実アドレスへの変換を行う時点で、メモリ上のページへのアクセスの可否を判断することが可能となる。これにより、情報処理装置が実行する情報処理の高速化を図ることが可能となる。
【発明の効果】
【００１９】
メモリを共有する複数のタスクが、メモリに記憶されるデータを保護するための制御をしなくても、メモリに記憶されるデータを保護することが可能となる。
【発明を実施するための最良の形態】
【００２０】
以下、本発明を実施するための最良の形態を、図面を参照しながら詳細に説明する。
【００２１】
＝＝＝情報処理装置＝＝＝
図１は、本実施形態に係る情報処理装置１００のハードウェア構成を示すものである。  
情報処理装置１００は、ＣＰＵ１、メモリ４、ハードディスクドライブ１１０、Ｉ／Ｏインタフェース１２０、通信インタフェース１３０を備えて構成される。
【００２２】
ＣＰＵ１は情報処理装置１００の全体の制御を司る装置である。ＣＰＵ１は、ハードディスクドライブ１１０に記憶されたオペレーティングシステム２００やユーザプログラム３００をメモリ４に読み出して実行する。これにより情報処理装置１００としての各種機能が実現される。図１には、オペレーティングシステム２００やユーザプログラム３００がメモリ４に読み出されている様子を示す。なお、図１にはユーザプログラム３００として、ユーザプログラムＡ３１０、ユーザプログラムＢ３２０、ユーザプログラムＣ３３０、ユーザプログラムＸ３４０が例示されている。
【００２３】
またメモリ４には、セグメントテーブル１３、ページテーブル１４、実メモリ管理テーブル１５、書込み禁止制御テーブル１６、共通領域確保テーブル１７、書き込み宣言テーブル１８、タスク制御テーブル１９、共通領域空きテーブル６６が記憶される。詳細は後述する。
【００２４】
ＣＰＵ１がユーザプログラム３００を実行する際には、ユーザプログラム３００は、オペレーティングシステム２００によってユーザタスク３１として管理される。図１に示す例では、ユーザプログラムＡ３１０、ユーザプログラムＢ３２０、ユーザプログラムＣ３３０、ユーザプログラムＸ３４０は、ユーザタスクＡ３１１、ユーザタスクＢ３２１、ユーザタスクＣ３３１、ユーザタスクＸ３４１として管理される。なお以下の説明では、ユーザタスクＡ３１１、ユーザタスクＢ３２１、ユーザタスクＣ３３１、ユーザタスクＸ３４１、ユーザタスク３１をそれぞれ、単にタスクＡ３１１、タスクＢ３２１、タスクＣ３３１、タスクＸ３４１、タスク３１とも記す。
【００２５】
また詳細は後述するが、本実施形態に係る情報処理装置１００は、仮想記憶方式により各ユーザタスク３１を実行する。そしてＣＰＵ１は制御レジスタ２及びアドレス変換機構３を備える。制御レジスタ２には、メモリ４に記憶されるセグメントテーブル１３の先頭アドレスが記憶される。またセグメントテーブル１３には、メモリ４に記憶されるページテーブル１４の先頭アドレスが記憶される。ページテーブル１４には、メモリ４に記憶されるページの先頭アドレスが記憶される。
【００２６】
アドレス変換機構３は、ＣＰＵ１がユーザタスク３１を実行し、メモリ４にアクセスする際に、制御レジスタ２、セグメントテーブル１３、ページテーブル１４を参照することにより、仮想アドレスから実アドレスへの変換を行う。
【００２７】
Ｉ／Ｏインタフェース１２０は、オペレータ等による情報処理装置１００へのデータの入力に用いられる入力装置や、情報を外部へ出力する出力装置を含み、ユーザインタフェースとして機能する。入力装置としては例えばキーボードやマウス等とすることができる。出力装置としては例えばディスプレイやプリンタ等とすることができる。
【００２８】
通信インタフェース１３０は通信を行うための装置である。例えばインタネット等の通信網を介して行われる他のコンピュータとの通信は、通信インタフェース１３０を介して行われる。
【００２９】
なお図１に示す情報処理装置１００は、ＣＰＵ１を１個のみ備える構成であるが、複数のＣＰＵ１を備える構成であっても良い。
【００３０】
＝＝＝アドレス変換機構＝＝＝
アドレス変換機構３は、ＣＰＵ１がメモリ４にアクセスする際に、仮想アドレスを実アドレスに変換する。
【００３１】
本実施形態にかかるオペレーティングシステム２００は、メモリ４が提供する実アドレス空間とは異なる仮想アドレス空間をユーザプログラム３００に対して提供することができる。このためユーザプログラム３００を構成する各命令は、仮想アドレスに基づいて記述されている。そしてＣＰＵ１がユーザプログラム３００の各命令を実行しメモリ４にアクセスする際には、アドレス変換機構３が仮想アドレスを実アドレスに変換する。
【００３２】
アドレス変換機構３による仮想アドレスから実アドレスへの変換は、アドレス変換機構３が制御レジスタ２、セグメントテーブル１３、ページテーブル１４を参照することにより行われる。  
すなわち、まずアドレス変換機構２は、制御レジスタ２を参照してセグメントテーブル１３の先頭アドレスを取得する。  
そしてアドレス変換機構２は、そのセグメントテーブル１３の先頭アドレスの値とＣＰＵ１が実行中の命令に記述されているセグメント番号とを加算して得られるメモリ４上のアドレスにアクセスし、ページテーブル１４の先頭アドレスを取得する。  
そしてアドレス変換機構２は、そのページテーブル１４の先頭アドレスの値とＣＰＵ１が実行中の命令に記述されているページ番号を加算して得られるメモリ４上のアドレスにアクセスしてページの先頭アドレスを取得する。  
そしてアドレス変換機構２は、そのページの先頭アドレスの値とＣＰＵ１が実行中の命令に記述されているオフセットとを加算して得られるメモリ４上のアドレスを、ＣＰＵ１がアクセスすべき実アドレスとして求める。  
なお、セグメントテーブル１３とページテーブル１４は、オペレーティングシステム２００の実行開始時に作成される。
【００３３】
ここでアドレス変換機構３は、制御レジスタ２に示されるセグメントテーブル１３に示されるページテーブル１４のみを参照する。言い換えれば、制御レジスタ２で示されないセグメントテーブル１３で示されるページテーブル１４は参照しない。あるページテーブル１４をあるセグメントテーブル１３に固有のものとした場合、そのページテーブル１４により管理されるセグメントは、そのセグメントテーブル１３によって管理される仮想アドレス空間に固有の仮想メモリ領域（空間固有領域２４）とすることができる。また、あるページテーブル１４を複数のセグメントテーブル１３で共有すると、そのページテーブル１４により管理されるセグメントは、複数のセグメントテーブル１３によってそれぞれ管理される複数の仮想アドレス空間で共有することができ、複数の仮想アドレス空間で共通の仮想メモリ領域（共通領域２５）となる。
【００３４】
＝＝＝制御レジスタ＝＝＝
制御レジスタ２は、メモリ４に記憶されるセグメントテーブル１３の先頭アドレスを記憶する。アドレス変換機構３は、制御レジスタ２を参照することによりセグメントテーブル１３の先頭アドレスを取得することができる。  
制御レジスタ２に設定されるセグメントテーブル１３の先頭アドレスを変更することにより、複数の仮想アドレス空間を形成することができる。制御レジスタ２に設定するセグメントテーブル１３の先頭アドレスは、ＣＰＵ１が特権命令を実行することによって変更することができる。
【００３５】
＝＝＝オペレーティングシステム＝＝＝
オペレーティングシステム２００は、タスク制御部５とメモリ制御部８とを有する。  
タスク制御部５は、タスク選択部６と、タスク終了部７とを有する。  
メモリ制御部８は、領域確保・解放部９、ユーザ用書込み禁止設定・解除部６９、タスク制御用書込み禁止設定・解除部１０、書き込み宣言登録・解除部１１、実記憶制御部１２を有する。
【００３６】
＜タスク制御部＞
タスク制御部５は、各ユーザタスク３１の実行順序をスケジューリングする。タスク制御部５は、複数のユーザタスク３１の中から一つのユーザタスク３１を所定のアルゴリズムに従って順次選択することにより、ＣＰＵ１により実行されるユーザタスク３１を切り替える。例えばタスク制御部５は、ユーザタスクＡ３１１、ユーザタスクＢ３２１、ユーザタスクＣ３３１、ユーザタスクＸ３４１の中からタスク３１を順次選択することにより、ＣＰＵ１によって実行されるタスク３１を切り替える。
【００３７】
またタスク制御部５によるタスク３１の切り替えに伴って、後述するページテーブル１４の書込み保護ビット（特許請求の範囲に記載の書き込み可否情報に相当する）の「ＯＮ」または「ＯＦＦ」の設定が行われる。これによりアドレス変換機構３における書込み保護制御（書込み禁止、および解除）が可能となる。
【００３８】
＜メモリ制御部＞
メモリ制御部８は、ユーザタスク３１の切り替えに伴って、ページテーブル１４の書込み保護ビットの「ＯＮ」または「ＯＦＦ」の設定を行う。
【００３９】
またメモリ制御部８は、ユーザタスク３１から共通領域２５の確保の要求を受信した場合に、共通領域２５の確保を行う。共通領域２５の確保とは、ユーザタスク３１の実行時にそのユーザタスク３１がデータを書き込める共通領域２５の割り当てを受けることをいう。要求された共通領域２５の確保ができた場合には、メモリ制御部８は、後述する共通領域確保テーブル１７を作成し、確保した仮想メモリの先頭アドレス、確保サイズ（ページ数）、パスワードを設定する。またメモリ制御部８は、確保した共通領域２５の仮想メモリに対応するページテーブル１４の書込み保護ビットをＯＮにする。なお、ユーザタスク３１に確保された領域は、特許請求の範囲に記載の書込み可能領域に相当する。
【００４０】
またメモリ制御部８は、ページ例外の割り込みが発生した場合には、後述する実メモリ管理テーブル１５を参照して、未使用の実メモリをページ単位で求める。そしてメモリ制御部８は、それらの各ページの先頭アドレスをページテーブル１４に設定する。メモリ制御部８は、実メモリを仮想メモリに割り当てると、実メモリ管理テーブル１５に、割り当てたページの仮想アドレスを登録する。
【００４１】
またメモリ制御部８は、ページテーブル１４の先頭アドレスを、セグメントテーブル１３に設定する。
【００４２】
＝＝＝仮想アドレス空間＝＝＝
図２は、本実施形態にかかる情報処理装置１００により順次実行されるタスクＡ３１１、タスクＢ３２１、タスクＣ３３１、タスクＸ３４１のうち、タスクＡ３１１がタスク制御部５によるタスク選択処理で選択されて実行状態となっている場合における、各タスク３１への仮想メモリの割り当て状態を示している。
【００４３】
本実施形態に係る仮想メモリは、一つのタスク３１のみが参照・更新可能な空間固有領域２４と、複数のタスク３１が参照・更新可能な共通領域２５を有して構成されている。
【００４４】
空間固有領域２４は、ｎ個の仮想アドレス空間（仮想アドレス空間１（２０）から仮想アドレス空間ｎ（２３））で構成されている。各仮想アドレス空間にはそれぞれタスク３１が割り当てられている。また各タスク３１は共通領域２５を個々に確保できるものとする。
【００４５】
仮想メモリに対して実メモリを割り付ける場合、ＣＰＵ１は、用意した特権命令で実メモリに保護キーを割り当てる。保護キーは、実メモリに割り当てるキーである。ＣＰＵ１は、実メモリに割り当てた保護キーと各タスク３１に割り当てた実行キー（ＰＳＷ（Processor Status Word）に設定するキー）が一致している場合には、そのタスク３１による実メモリへの書込みを可能とし、不一致の場合は書込みを不可（禁止）とする。
【００４６】
ＰＳＷは、命令が存在するメモリ４上のアドレス（命令アドレスとも呼ぶ）の他に、ＣＰＵ１の動作を制御するための制御ビットを含んで構成されている。制御ビットには、前述した実行キーやアドレス変換機構３を有効にするか無効にするかのビットが含まれる。
【００４７】
ＣＰＵ１は、このＰＳＷの制御ビットに従って動作する。アドレス変換機構３を有効にするビットがＯＮになっている場合は、ＣＰＵ１は、メモリ４上のセグメントテーブル１３、ページテーブル１４を参照し、ＰＳＷに記憶されている命令アドレスから命令を読み込む。その命令が更新命令であれば、アドレス変換機構３は、その更新命令に記載されている仮想アドレスから実アドレスを求める。ＣＰＵ１は、メモリ４へアクセスをする際に、ページテーブル１4の書込み保護ビットがＯＮになっている場合には、その更新命令を実行せずに書き込みを抑止する。そしてＣＰＵ１はプログラムチェック割り込みを発生させる。これにより書込み保護を実現する。このように、アドレス変換機構３が仮想アドレスから実アドレスを求める際に、ページテーブル１4の書込み保護ビットを参照するようにすることによって、更新命令の実行可否を迅速に判断できるので、情報処理装置１００における処理を高速化することが可能となる。
【００４８】
情報処理装置１００は、各タスク３１に対して、各空間固有領域２４の実メモリに割り当てる保護キーと同一の実行キーをＰＳＷに指定する。この際、隣り合う仮想アドレス空間のタスク３１の実行キーは異なるものが割り当てられる。しかし保護キーの種類よりも仮想アドレス空間の数が多くなると、異なる仮想アドレス空間に対して同一の保護キーが実行キーとして割り当てられることになる。本実施例では、仮想アドレス空間１（２０）と仮想アドレス空間３（２２）が同一保護キーであるものとする。仮想アドレス空間２（２１）には、仮想アドレス空間１（２０）や仮想アドレス空間３（２２）とは異なる保護キーが割り当てられるものとする。
【００４９】
＜共通領域＞
共通領域２５を各タスク３１が確保する場合には、確保要求するタスク３１の順や、確保する領域のサイズにより、同一保護キーの領域が連続または不連続で各タスク３１に割り当てられる。  
また、共通領域２５が、タスクＡ３１１が確保した領域２６、タスクＢ３２１が確保した領域２７、タスクＣ３３１が確保した領域２８、タスクｘ３４１が確保した領域２９、未割り当て（解放された）領域３０からなる場合、タスクＡ３１１は、タスクＡ３１１が確保した領域２６に対して書込みを行うことができればよく、他の領域２７〜３０には書込むことができなくても支障は生じない。  
そこで、タスク制御部５によって例えばタスクＡ３１１が選択されて、タスクＡ３１１が実行状態となっている場合には、タスクＡ３１１が確保した領域２６のみを書込み可能とすればよく、他の領域２７〜３０は、書込み禁止とすればよい。  
また、タスクＡ３１１が確保した領域２６とタスクＣ３３１が確保した領域２８は、保護キーが同一であるが、タスクＡ３１１は、タスクＣ３３１が確保した領域２８には書込む必要はないため、書込み禁止としてよい。
【００５０】
＝＝＝タスク切り替え処理＝＝＝
図３は、タスクＡ３１１からタスクＢ３２１に切り替えた場合の共通領域２５の状態を示している。  
タスクＡ３１１からタスクＢ３２１に切り替わることで、タスクＡ３１１は実行状態から実行可能状態となる。またタスクＢ３２１は、実行可能状態から実行状態となる。  
これに伴って、タスクＡ３１１が確保した領域２６は、書込み可能から書込み禁止とする。またタスクＢ３２１が確保した領域２７は、書込み禁止から書込み可能とする。  
このように、共通領域２５に対する書き込みは、実行状態にあるタスク３１が確保した領域に対してのみ可能であり、他のタスク３１が確保した領域に対する書込みは原則として禁止される。これにより、実行中のタスク３１が、誤って他タスク３１により確保された領域を破壊し、それに起因して他のタスク３１が誤動作を起こすことを防止することが可能となる。タスク選択時の書込み禁止および解除の方法については後述する。
【００５１】
＝＝＝セグメントテーブル＝＝＝
図４は、セグメントテーブル１３の内容例を示す。  
セグメントテーブル１３は、ページテーブル１４のメモリ４上の先頭アドレスを記憶する。セグメントテーブル１３は、アドレス変換機構３により参照される。  
セグメントテーブル１３は、”ページテーブルアドレス”欄と、”有効ビット”欄と、”共通ビット”欄と、”ページテーブル長”欄とを備える。
【００５２】
”ページテーブルアドレス”欄には、ページテーブル１４の先頭アドレスが記載される。”有効ビット”欄には、上記ページテーブル１４のアドレスが有効か否かを示す情報が記載される。「ＯＮ」が記載されている場合は有効であることをあらわし、「ＯＦＦ」が記載されている場合は無効であることを表す。”共通ビット”欄には、”ページテーブルアドレス”欄に示されるページテーブル１４が他のセグメントテーブル１３と共通に使用されるか否かを示す情報が記載される。「ＯＮ」が記載されている場合は他のセグメントテーブル１３と共用されることをあらわし、「ＯＦＦ」が記載されている場合は共用されていないことを表す。”ページテーブル長”欄には、ページテーブル長が記載される。
【００５３】
セグメントテーブル１３は、仮想アドレス空間を示すことができる。また”共通ビット”欄を「ＯＮ」に設定することにより、そのページアドレスで示されるページテーブル１４を、他の仮想アドレス空間と共用することができる。その場合、”ページテーブルアドレス”欄に記載されるページテーブル１４のアドレスは、共通アドレス空間（共通領域２５）であることを示す。ページテーブル１４との関連は後述する。
【００５４】
＝＝＝ページテーブル＝＝＝
図５は、ページテーブル１４の内容例を示す。  
ページテーブル１４は、メモリ４上のページの先頭アドレスを記憶する。ページテーブル１４は、セグメントテーブル１３と同様に、アドレス変換機構３によって参照されるテーブルである。ページテーブル１４に、ページの先頭アドレスが記憶されていることにより、ＣＰＵ１は実メモリの内容を参照することができる。
【００５５】
ページテーブル１４は、”ページアドレス”欄と、”有効ビット”欄と、”書き込み保護ビット”欄と、を備える。  
”ページアドレス”欄には、ページの先頭アドレスが記載される。各ページは４ｋＢ（キロバイト）単位に仮想メモリと対応付けられている。”有効ビット”欄には、ページに対応する仮想メモリに実メモリが割り当てられているか否かを示す情報が記載される。「ＯＮ」が記載されている場合はページに対応する仮想メモリに実メモリが割り当てられていることを示す。「ＯＦＦ」が記載されている場合はそのページに対応する仮想メモリに実メモリが割り当てられていないことを示す。”書き込み保護ビット”欄には、ＣＰＵ１によるそのページへの書き込みの可否を示す情報が記載される。「ＯＮ」が記載されている場合は、ＣＰＵ１はそのページに対して書き込みを行うことができない。書き込みを行おうとすると、ＣＰＵ１は例外を発生させ、書き込みの実行を抑止する。
【００５６】
仮想メモリに実メモリが割り当てられているか否かは、ページテーブル１４の”有効ビット”に「ＯＮ」が記載されているか「ＯＦＦ」が記載されているかで判断することができる。「ＯＮ」が記載されていればそのページに対応する仮想メモリに実メモリが割り付けられていると判断し、そのページテーブル１４から実アドレスを求めることができる。「ＯＦＦ」が記載されていれば、そのページに対応する仮想メモリに実メモリが割り付けられていないと判断し、ＣＰＵ１はページ例外の割り込みを発生させる。
【００５７】
ページ例外の割り込みが発生すると、メモリ制御部８は、図６に示す実メモリ管理テーブル８を参照して未使用の実メモリをページ単位で求める。そしてメモリ制御部８は、そのページの先頭アドレスをページテーブル１４に設定する。このとき、ページの有効性を示す有効ビットを「ＯＮ」に設定することで仮想メモリに実メモリを割り付けたことになる。
【００５８】
また、アドレス変換機構３は、ページテーブル１４上の”書込み保護ビット”欄が「ＯＮ」の場合は、そのページに対する書込みを行わない。書込みを行おうとするとプログラム割り込みが発生する。
【００５９】
本実施形態では、メモリ制御部８が、ページテーブル１４の書込み保護ビットを「ＯＮ」または「ＯＦＦ」に設定する。これによりアドレス変換機構３における書込み保護動作の制御（書込み禁止、および解除）を行う。そしてこれにより、オペレーティングシステム２００により実行される書込み保護ビットの「ＯＮ」、「ＯＦＦ」を、ユーザプログラムが個別に考慮しなくとも行えるようになる。
【００６０】
なお詳細は後述するが、メモリ制御部８は、書込み保護ビットの「ＯＮ」または「ＯＦＦ」の設定を行う際に、メモリ制御部８により作成される書込み禁止制御テーブル１６および書込み宣言テーブル１８を参照する。
【００６１】
＝＝＝実メモリ管理テーブル＝＝＝
図６は、実メモリ管理テーブル１５の内容例を示す。  
実メモリ管理テーブル１５は、実メモリをページ単位で管理するためのテーブルである。つまり実メモリ管理テーブル１５は、実メモリ上の各ページが、仮想メモリのどのアドレスに割り当てられているかを示すテーブルである。実メモリ管理テーブル１５の”仮想アドレス”欄には、各ページが割り当てられている仮想メモリの仮想アドレスが記載される。仮想メモリに割り当てられていないページに対しては、”仮想アドレス”欄には０が記載される。  
メモリ制御部８は、実メモリを仮想メモリに割り当てると、実メモリ管理テーブル１５に、割り当てた仮想メモリのアドレスを登録する。なお、実メモリを仮想メモリに割り当てていない場合には、本実施例では０が登録される。
【００６２】
＝＝＝書き込み禁止制御テーブル＝＝＝
図７は、書込み禁止制御テーブル１６の内容例を示す。  
書込み禁止制御テーブル１６は、各ページテーブル１４の書込み保護ビットが本実施例で示す方式で解除されているか否かを示すテーブルである。
【００６３】
つまり、書込み禁止の解除を行う場合には、メモリ制御部８が”解除フラグ”欄に記載される書込み禁止の解除を行おうとしているＣＰＵ１に対するビットを”１”にする。また”ページテーブルアドレス”欄に記載されている仮想アドレスにより特定されるページテーブル１４に、実アドレスが設定されているならば、その実メモリに対して書込み禁止解除を行うために、メモリ制御部８は、そのページテーブル１４の書込み保護ビットをＯＦＦにする。
【００６４】
書込み禁止設定を行う場合は、メモリ制御部８は、書込み禁止制御テーブル１６の解除フラグの自ＣＰＵに対するビットを”０”にする。そして解除フラグの全てのビットが”０”ならば、他のＣＰＵでの書込み禁止解除が無くなるため、メモリ制御部８は、”ページテーブルアドレス”欄に記載されている仮想アドレスにより特定されるページテーブル１４の書込み保護ビットをＯＮにする。
【００６５】
このように、解除フラグをＣＰＵ対応のビットに振り分けることで、他のＣＰＵで書込み禁止解除中のページに対して、書込み保護の設定・解除を制御することができる。なお本実施例では、書込み禁止制御テーブル１６に”ページテーブルアドレス”欄を設け、書込み禁止制御テーブル１６とページテーブル１４とを１対１で対応させるようにしている。
【００６６】
”抑止ビット”欄は、メモリ制御部８によってページテーブル１４の書込み保護ビットの設定・解除が行われない様にするためのデータが記載される欄である。  
つまり、従来、ユーザが書込み禁止設定要求を行って、ページテーブル１４の書込み保護ビットを「ＯＮ」にした場合は、ユーザ要求を優先し、メモリ制御部８での書込み禁止設定・解除を抑止する必要がある。このため、書込み禁止制御テーブル１６に”抑止ビット”欄を設け、ユーザ要求の書込み禁止設定を行った場合は、”抑止ビット”欄をＯＮにし、ページテーブル１４の書込み保護ビットの設定・解除が行われない様にする。
【００６７】
＝＝＝共通領域確保テーブル＝＝＝
図８は、共通領域確保テーブル１７の内容例を示す。  
共通領域確保テーブル１７は、”仮想アドレス”欄と、”サイズ”欄と、”パスワード”欄とを有する。”仮想アドレス”欄には、ユーザタスク３１が確保した共通領域２５の仮想アドレスの先頭アドレスが記載される。”サイズ”欄には、その仮想アドレスから始まる共通領域２５のサイズが記載される。サイズはページ単位とすることができる。”パスワード”欄には、パスワードが記載される。パスワードを記憶するのは、あるタスク３１が、他のタスク３１が確保した共通領域２５に対して書き込み宣言を行う場合があるためである。  
メモリ制御部８は、ユーザタスク３１から、後述する領域確保要求パラメタ６７を受信すると、領域確保・解放部９が、後述する共通領域空きテーブル６６を参照し、要求されたページ数の領域を確保する。要求されたページ数の領域の確保ができた場合には、メモリ制御部８は、共通領域確保テーブル１７を作成する。そして確保した仮想メモリの先頭アドレス、確保サイズ（ページ数）、パスワードを設定する。
【００６８】
＝＝＝共通領域空きテーブル＝＝＝
図９は、共通領域空きテーブル６６の内容例を示す。  
共通領域空きテーブル６６は、”仮想アドレス”欄と、”サイズ”欄と、”パスワード”欄とを有する。”仮想アドレス”欄には、まだどのタスク３１にも確保されていない共通領域２５の仮想アドレスが記載される。”サイズ”欄には、その仮想アドレスから始まる共通領域２５のサイズが記載される。サイズはページ単位とすることができる。”パスワード”欄には、Ｘ’００’で初期化されたパスワードが記載される。
【００６９】
＝＝＝書き込み宣言テーブル＝＝＝
図１０は、書き込み宣言テーブル１８の内容例を示す。  
書き込み宣言テーブル１８は、”仮想アドレス”欄と、”サイズ”欄と、”パスワード”欄とを有する。”仮想アドレス”欄には、書き込み宣言がなされた領域の仮想アドレスが記載される。”サイズ”欄には、その仮想アドレスから始まる領域のサイズ（ページ単位）が記載される。”パスワード”欄には、その領域に対して書き込み許可を受けるためのパスワードが記載される。
【００７０】
ユーザタスク３１は、他のユーザタスク３１が確保した領域に書き込みを行なおうとする場合には、他のユーザタスク３１が確保した共通領域２５に対する書き込み宣言をメモリ制御部８に対して行う。そうするとメモリ制御部８の書き込み宣言登録・解除部１１は、書き込み宣言テーブル１８を作成し、書き込み宣言を行ったタスク３１のタスク制御テーブル１９からチェインする。つまり、後述するタスク制御テーブル１９の”書き込み宣言テーブルアドレス”欄に、上記作成した書き込み宣言テーブル１８のアドレスを記載する。
【００７１】
書き込み宣言テーブル１８は、タスク３１が書き込み宣言を行う毎に作成される。書き込み宣言テーブル１８には、書き込みを行う仮想メモリの仮想アドレス（ページ境界）と連続して行う場合のためにサイズを設定する。書き込み宣言テーブル１８の作成に当たっては、要求された仮想領域に対して書き込みを許可して良いかどうかの判断を共通領域確保テーブル１７に登録されているパスワードに一致しているかどうかで行えるようにする。
【００７２】
＝＝＝タスク制御テーブル＝＝＝
図１１は、タスク制御テーブル１９の内容例を示す。  
タスク制御テーブル１９は、”タスク識別子”欄と、”確保テーブルアドレス”欄と、”書き込み宣言テーブルアドレス”欄とを有する。  
”タスク識別子”欄には、タスクの識別情報を示すタスク識別子が記載される。”確保テーブルアドレス”欄には、そのタスクの共通領域確保テーブル１７の先頭アドレスが記載される。つまり本実施形態においては、タスク制御テーブル１９と共通領域確保テーブル１７とでもって、特許請求の範囲に記載の書込み領域管理テーブルが実現される。また”書き込み宣言テーブルアドレス”欄には、そのタスクが書き込み宣言を行った場合に登録される書き込み宣言テーブル１８の先頭アドレスが記載される。つまり本実施形態においては、タスク制御テーブル１９と書き込み宣言テーブル１８とでもって、特許請求の範囲に記載の書込み領域拡張テーブルが実現される。
【００７３】
＜共通領域確保時＞
タスク３１がメモリ制御部８に対して、共通領域２５の確保を要求すると、領域確保・解放部９は、タスク制御テーブル１９の”タスク識別子”欄に、要求元タスク３１の識別子を記載し、”確保テーブルアドレス”欄に、確保された共通領域２５の仮想アドレスを示す共通領域確保テーブル１７の先頭アドレスを記載する。これにより、要求元タスク３１のタスク制御テーブル１９から確保した領域を示す共通領域確保テーブル１７がチェインされる。共通領域確保テーブル１７は、タスク３１が領域確保を行うごとにチェインされる。  
なおメモリ制御部８は、共通領域２５を確保すると、その仮想メモリに対応するページテーブル１４の書込み保護ビットをＯＮにする。その後、要求元タスク３１にタスク制御部５を経由して戻るときに、書き込み禁止解除を行うため該当するページテーブル１４の書込み保護ビットをＯＦＦにし、書き込み禁止制御テーブル１６の解除ビットをＯＮにする。
【００７４】
＜書き込み宣言時＞
ユーザタスク３１は、他のユーザタスク３１が確保した領域に書き込みを行う必要がある場合には、他のユーザタスク３１が確保した共通領域２５に対する書き込み宣言をメモリ制御部８に対して行う。そうすると書き込み宣言登録・解除部１１は、書き込み宣言テーブル１８を作成し、書き込み宣言を行ったタスク３１のタスク制御テーブル１９の”書き込み宣言テーブルアドレス”欄に、上記書き込み宣言テーブル１８のアドレスを記載する。書き込み宣言テーブル１８は、タスク３１が書き込み宣言を行う毎に作成される。
【００７５】
＝＝＝領域確保要求パラメタ、書き込み宣言要求パラメタ＝＝＝
図１２は、タスク３１が共通領域２５を確保する場合の領域確保要求パラメタ６７と、書込み宣言を行う場合の書込み宣言要求パラメタ６８を示すものである。
【００７６】
＜領域確保要求パラメタ＞
領域確保要求パラメタ６７には、”確保要求ページ数”と”パスワード”とが含まれる。パスワードは、確保した共通領域２５に対して他のタスク３１が書込み宣言をしてきた場合に、そのタスク３１に書き込みを許可するか否かを判定する制御を行うために指定しておく。  
メモリ制御部８の領域確保・解放部９は、ユーザタスク３１から領域確保要求パラメタ６７がメモリ４に書き込まれたことを検知すると、要求されたページ数の領域を確保する。要求されたページ数の領域の確保ができた場合には、メモリ制御部８は、共通領域確保テーブル１７を作成する。そして確保した仮想メモリの先頭アドレス、確保サイズ（ページ数）、パスワードを設定する。
【００７７】
＜書き込み宣言要求パラメタ＞
書込み宣言要求パラメタ６８には、”要求アドレス”と、”要求ページ数”と、”パスワード”と、が含まれる。”要求アドレス”には、他のタスク３１が確保している共通領域２５の仮想アドレス（ページ境界）が記載される。
【００７８】
メモリ制御部８の書き込み宣言登録・解除部１１は、ユーザタスク３１から書込み宣言要求パラメタ６８がメモリ４に書き込まれたことを検知すると、”要求アドレス”欄に記載されている仮想アドレスと同一の仮想アドレスが記載されている共通領域確保テーブル１７を検索する。そして書き込み宣言登録・解除部１１は、検索された共通領域確保テーブル１７の”パスワード”欄に記載されているパスワードと、書込み宣言要求パラメタ６８に記載されているパスワードとを比較する。両パスワードが一致する場合には、書き込み宣言登録・解除部１１は、書込み宣言テーブル１８を生成する。そして書き込み宣言登録・解除部１１は、書き込み宣言を行ったタスク３１のタスク制御テーブル１９の”書き込み宣言テーブルアドレス”欄に、上記書き込み宣言テーブル１８のアドレスを記載し、チェインする。  
該当する共通領域確保テーブル１７が無い場合や、要求ページ数が含まれない場合、あるいはパスワードが一致しない場合は、書き込み宣言を許可しないで、書き込み宣言の要求元にエラーリターンする。また共通領域確保テーブル１７にパスワードが設定されていない場合には、パスワードが不一致でも書き込み宣言を許可する。
【００７９】
＝＝＝タスク切り替え制御、メモリ保護制御＝＝＝
図１３は、タスク制御部５、メモリ制御部８、ユーザタスク３１の各ソフトウェアの機能構成を示すものである。
【００８０】
メモリ制御部８は、領域確保・解放部９、ユーザ用書込み禁止設定・解除部６９、タスク制御用書込み禁止設定・解除部１０、書き込み宣言登録・解除部１１、実記憶制御部１２を備える。  
タスク制御用書込み禁止設定・解除部１０は、ページテーブル１４の書込み保護ビットのＯＮまたはＯＦＦの設定を行う。これによりタスク選択時の仮想メモリに対する書込み禁止あるいは書込み許可が可能となる。  
書込み宣言登録・解除部１１は、他タスク３１とのインタフェースにおいて、他タスク３１の確保した領域にデータを書込む必要がある場合に必要となる機能である。タスク制御用書込み禁止設定・解除部１０、書込み宣言登録・解除部１１については、後述する。  
領域確保・解放部９は、ユーザタスク３１からの要求を受信し、領域の確保や解放を行う。  
実記憶制御部１２は、仮想メモリに対する実メモリの割り当てを行う。  
ユーザ用書込み禁止設定・解除部６９は、ユーザタスク３１の書込み禁止設定要求部７０や書込み禁止解除要求部７１からの書込み保護の設定・解除の要求に応じて、書込みを禁止する設定や解除する設定を行う。
【００８１】
一方、タスク制御部５は、タスク選択部６と、タスク終了部７とを備える。  
タスク選択部６は、タスク選択時にメモリ制御部８のタスク制御用書込み禁止設定・解除部１０を呼び出す。これにより、タスク制御用書込み禁止設定・解除部１０は、各領域の仮想メモリに対する書込み禁止、書込み可能の状態にするためにページテーブル１４の書込み保護ビットをＯＮまたは、ＯＦＦにする。
【００８２】
＜共通領域の確保＞
メモリ制御部８の領域確保・解放部９は、ユーザタスク３１の領域確保・解放部３２から領域確保の要求を受信すると、共通領域空きテーブル６６を検索し、要求サイズ分の領域を確保する。そして確保した共通領域２５の仮想アドレス、サイズ、パスワードを共通領域確保テーブル１７に追加し、共通領域空きテーブル６６から削除する。  
このとき、タスク制御用書込み禁止設定・解除部１０は、確保した領域の仮想アドレスを共通領域確保テーブル１７から求め、その仮想アドレスに対応するページテーブル１４の書込み保護ビットをＯＮにする。またその仮想アドレスに対応する書込み禁止制御テーブル１６の解除フラグの自ＣＰＵに対応するビットをＯＦＦにする。これにより、ユーザタスク３１が確保した領域に対する書き込み保護が行われる。
【００８３】
＜領域解放＞
ユーザタスク３１の領域確保・解放部３２がメモリ制御部８に対して領域解放要求を送信すると、メモリ制御部８のタスク制御用書込み禁止設定・解除部１０は、解放する共通領域２５の仮想アドレスを共通領域確保テーブル１７から求める。そしてタスク制御用書込み禁止設定・解除部１０は、その仮想アドレスに対応するページテーブル１４の有効ビットをＯＦＦにすると共に、書込み保護ビットをＯＦＦにする。また解放した共通領域２５の仮想アドレス、サイズ、パスワードを共通領域確保テーブル１７から削除し、共通領域空きテーブル６６に追加する。  
また、ユーザタスク３１が終了した場合には、タスク制御部５のタスク終了部７は、領域解放要求をメモリ制御部８のタスク制御用書込み禁止設定・解除部１０に対して行う。これにより、ユーザタスク３１の終了時に、ユーザタスク３１が確保していた領域の解放を行う。
【００８４】
＜書き込み宣言＞
他のタスク３１が確保している領域にデータを書込む必要がある場合には、ユーザタスク３１の書込み宣言・解除部３３は、書込み宣言を行う。書き込み宣言は、必要な仮想メモリのアドレス、サイズ、パスワードをパラメタとして、メモリ制御部８に要求を送信することにより行う。
【００８５】
メモリ制御部８の書き込み宣言登録・解除部１１は、ユーザタスク３１から書込み宣言要求パラメタ６８を受信すると、書込み宣言要求パラメタ６８の”要求アドレス”欄に記載されている仮想アドレスと同一の仮想アドレスが記載されている共通領域確保テーブル１７を検索する。そして書き込み宣言登録・解除部１１は、検索された共通領域確保テーブル１７の”パスワード”欄に記載されているパスワードと、書込み宣言要求パラメタ６８に記載されているパスワードとを比較する。両パスワードが一致する場合には、書き込み宣言登録・解除部１１は、書込み宣言テーブル１８を生成する。そして書き込み宣言登録・解除部１１は、書き込み宣言を行ったタスク３１のタスク制御テーブル１９の”書き込み宣言テーブルアドレス”欄に、上記書き込み宣言テーブル１８のアドレスを記載し、チェインする。
【００８６】
またタスク制御用書込み禁止設定・解除部１０は、書き込み宣言された領域に対して、ページテーブル１４の書込み保護ビットをＯＦＦにし、書込み禁止制御テーブル１６の解除フラグの自ＣＰＵに対応するビットを”１”にして、書き込み宣言を行ったユーザタスク３１による書込みを可能にする。
【００８７】
＜書き込み宣言解除＞
ユーザタスク３１の書き込み宣言・解除部３３がメモリ制御部８に対して書込み宣言の解除要求を送信すると、メモリ制御部８の書込み宣言登録・解除部１１は、書込み宣言を解除する共通領域２５の仮想アドレスを書込み宣言テーブル１８から求める。そして書込み宣言登録・解除部１１は、その仮想アドレスに対応するページテーブル１４の有効ビットをＯＮにすると共に、書込み宣言テーブル１８を削除する。
【００８８】
また、ユーザタスク３１が終了した場合には、タスク制御部５のタスク終了部７は、書き込み宣言の解除要求をメモリ制御部８の書込み宣言登録・解除部１１に対して行う。これにより、ユーザタスク３１の終了時に、ユーザタスク３１の書込み宣言の解除を行う。
【００８９】
＝＝＝タスク切り替え時の処理の流れ＝＝＝
次に、タスク制御部５がＣＰＵ１に実行させるタスク３１を切り替える際の処理の流れを説明する。  
ここでは、タスクＡ３１１からタスクＢ３２１に切り替える場合を例に説明する。  
まずタスク制御部５は、現在実行状態にあるタスクＡ３１１を実行可能状態に遷移させる。  
その際に、メモリ制御部８は、タスクＡ３１１が確保していた共通領域２５に対する書き込みを禁止すると共に、タスクＡ３１１が書き込み宣言していた共通領域２５に対する書き込みを禁止する。  
そして、タスク制御部５は、ＣＰＵ１に次に実行させるタスクＢ３２１を、実行可能状態から実行状態に遷移させる。  
その際に、メモリ制御部８は、タスクＢ３２１が確保している共通領域２５に対する書き込みを許可すると共に、タスクＢ３２１が書き込み宣言している共通領域２５に対する書き込みを許可する。
【００９０】
以下、タスク制御部５が、ＣＰＵ１に実行させるタスク３１をタスクＡ３１１からタスクＢ３２１に切り替える場合の処理を、図１４〜図２３を参照しながら、詳細に説明する。
【００９１】
＜タスクＡを実行状態から実行可能状態に遷移させる場合の処理＞
図１４は、タスク選択部６により選択されるタスクＡ３１１を実行状態から実行可能状態あるいは、待ち状態に遷移させる場合の処理の流れを示すフローチャートである。
【００９２】
まずメモリ制御部８は、タスクＡ３１１が確保している共通領域２５に対する書き込みを禁止する（S50）。  
すなわち、タスク制御用書込み禁止設定・解除部１０は、タスクＡ３１１が確保している共通領域２５に対して、共通領域確保テーブル１７を参照して、その共通領域確保テーブル１７に示される仮想アドレスからページテーブル１４と書込み禁止制御テーブル１６を求める。そしてタスク制御用書込み禁止設定・解除部１０は、ページテーブル１４の書込み保護ビットをＯＮにし、書込み禁止制御テーブル１６の解除フラグの自ＣＰＵに対応するビットを０にする。これにより、タスクＡ３１１が確保している共通領域２５に対する書込みを禁止するテーブル設定を行う。なおS50の処理については、図１５を参照しながら、以下に詳細に説明する。
【００９３】
図１５は、タスクＡ３１１が確保している共通領域２５に対する書込みを禁止するための設定を行う際の処理の流れを示すフローチャートである。
【００９４】
まずタスク制御用書込み禁止設定・解除部１０は、共通領域確保テーブル１７を参照し、選択したタスクＡ３１１が共通領域２５を確保しているか否かを判定する（S53）。  
タスク制御用書込み禁止設定・解除部１０は、選択したタスクＡ３１１が共通領域を確保していない場合にはなにもしないが、共通領域２５を確保している場合には、選択したタスクＡ３１１の共通領域確保テーブル１７を１つずつ参照して、仮想アドレスからページテーブル１４と書込み禁止制御テーブル１６を求める（S54）。  
そしてタスク制御用書込み禁止設定・解除部１０は、書き込み禁止設定処理を行う（S55）。書込み禁止設定処理は、ページテーブル１４の書込み保護ビットをＯＮにし、書込み禁止制御テーブル１６の解除フラグの自ＣＰＵに対応するビットを０にする。このようにして、タスクＡ３１１が確保している共通領域２５に対する書込みを禁止するためのテーブルの設定を行う。なお、書込み禁止設定処理については、図１７を参照しながら、以下に詳細に説明する。
【００９５】
図１７は、タスク制御用書込み禁止設定処理の流れを示すフローチャートである。  
タスク制御用書込み禁止設定・解除部１０は、選択されたタスクＡ３１１が確保している共通領域２５の共通領域確保テーブル１７、または選択されたタスクＡ３１１が書き込み宣言している共通領域２５の書込み宣言テーブル１８を参照して、該当する仮想アドレスからページテーブル１４と書込み禁止制御テーブル１６を求めて書込み禁止制御テーブル１６の解除フラグの自ＣＰＵに対応するビットを０にする（S61）。  
次に、タスク制御用書込み禁止設定・解除部１０は、書込み禁止制御テーブル１６の解除フラグのＣＰＵ１に対応するビットが全て０であるか否かを判定する（S74）。  
書込み禁止制御テーブル１６の解除フラグのＣＰＵ１に対応するビットが全て０でない場合は、解除フラグを１に設定しているＣＰＵ１による書込みを保証するために、タスク制御用書込み禁止設定・解除部１０は、ページテーブル１４の書込み保護ビットをＯＮにしないで、タスクＡ３１１が確保している共通領域確保テーブル１７、書込み宣言テーブル１８に示される次の仮想アドレスに対して書込み禁止制御テーブル１６の解除フラグの自ＣＰＵに対応するビットを０にする処理を行う（S65、S61）。
【００９６】
一方、S74において、書込み禁止制御テーブル１６の解除フラグのＣＰＵ１に対応するビットが全て０である場合は、仮想メモリに実メモリが割り当てられているかの判定に、ＣＰＵ１が用意した仮想アドレスから実アドレスへの変換命令を使用する（S62）。  
変換命令のコンディションコードが０以外であれば、実メモリの割り当てがないと判断してなにもしないが、コンディションコードが０であれば、実メモリの割り当てがあると判断する（S63）。そしてページテーブル１４上の書込み保護ビットをＯＮにする（S64）。これらの処理（S61、S74、S62、S63、S64）は、タスクＡ３１１が確保している共通領域確保テーブル１７、書込み宣言テーブル１８に示される仮想アドレスの全てに対して行う（S65）。  
図１５に戻って、S54及びS55の処理は、タスクＡ３１１が確保している全ての共通領域２５に対して行う（S56）。
【００９７】
次に、図１４に戻ってメモリ制御部８は、タスクＡ３１１が書き込み宣言していた共通領域２５に対する書き込みを禁止する処理を行う（S51）。  
すなわち、書込み宣言登録・解除部１１は、タスクＡ３１１の書込み宣言テーブル１８を参照して、その書込み宣言テーブル１８に示される仮想アドレスからページテーブル１４と書込み禁止制御テーブル１６を求める。そして書込み宣言登録・解除部１１は、ページテーブル１４の書込み保護ビットをＯＮにし、書込み禁止制御テーブル１６の解除フラグの自ＣＰＵに対応するビットを０にする。これにより、タスクＡ３１１が宣言した他のタスク３１が確保している共通領域２５に対する書込みを禁止するテーブル設定を行う。なおS51の処理については、図１６を参照しながら、以下に詳細に説明する。
【００９８】
図１６は、タスクＡ３１１が他のタスク３１が確保している共通領域２５に対して書込みを宣言している場合に、その共通領域２５に対する書込みを禁止するための設定を行う際の処理の流れを示すフローチャートである。
【００９９】
まず書込み宣言登録・解除部１１は、書き込み宣言テーブル１８を参照し、選択したタスクＡ３１１が書き込み宣言を行っているか否かを判定する（S57）。  
書込み宣言登録・解除部１１は、選択したタスクＡ３１１が書き込み宣言を１つも行っていない場合はなにもしないが、書き込み宣言を行っている場合は、タスク制御用書込み禁止設定・解除部１０を呼出して、選択したタスクＡ３１１の書込み宣言テーブル１８を参照して、書込み宣言テーブル１８の仮想アドレスからページテーブル１４と書込み禁止制御テーブル１６を求める（S58）。
【０１００】
そしてタスク制御用書込み禁止設定・解除部１０は、書き込み禁止設定処理を行う（S59）。書込み禁止設定処理は、ページテーブル１４の書込み保護ビットをＯＮにし、書込み禁止制御テーブル１６の解除フラグの自ＣＰＵに対応するビットを０にする。このようにして、タスクＡ３１１が他のタスク３１が確保している共通領域２５に対する書込みを禁止するためのテーブルの設定を行う。なお、書込み禁止設定処理については、図１７に示す。  
このS58、S59の処理は、選択したタスクＡ３１１が書き込み宣言している全ての共通領域２５に対して行う（S60）。  
そして図１４に戻って、タスク選択部６は、選択したタスクＡ３１１を実行可能状態あるいは、待ち状態にする（S52）。
【０１０１】
＜タスクＢを実行可能状態から実行状態に遷移させる場合の処理＞
図１８は、タスク選択部６により選択されるタスクＢ３２１を実行可能状態から実行状態に遷移させる場合の処理の流れを示すフローチャートである。  
まずメモリ制御部８は、タスクＢ３２１が確保している共通領域２５に対する書き込みの禁止を解除する（S34）。  
すなわち、タスク制御用書込み禁止設定・解除部１０は、タスクＢ３２１が確保している共通領域２５に対して、共通領域確保テーブル１７を参照して、その共通領域確保テーブル１７に示される仮想アドレスからページテーブル１４と書込み禁止制御テーブル１６を求める。そしてタスク制御用書込み禁止設定・解除部１０は、ページテーブル１４の書込み保護ビットをＯＦＦにし、書込み禁止制御テーブル１６の解除フラグの自ＣＰＵに対応するビットを１にする。これにより、タスクＢ３２１が確保している共通領域２５に対する書込みの禁止を解除するテーブル設定を行う。なお、S34の処理については、図１９を参照しながら、以下に詳細に説明する。
【０１０２】
図１９は、タスクＢ３２１が確保している共通領域２５に対する書込み禁止解除処理の流れを示すフローチャートである。  
まずタスク制御用書込み禁止設定・解除部１０は、共通領域確保テーブル１７を参照し、選択したタスクＢ３２１が共通領域２５を確保しているか否かを判定する（S37）。  
タスク制御用書込み禁止設定・解除部１０は、選択したタスクＢ３２１が共通領域２５を確保していなければなにもしないが、共通領域２５を確保していれば、選択したタスクＢ３２１の共通領域確保テーブル１７を１つずつ参照して、仮想アドレスからページテーブル１４と書込み禁止制御テーブル１６を求める（S38）。
【０１０３】
そしてタスク制御用書込み禁止設定・解除部１０は、書き込み禁止解除処理を行う（S39）。書込み禁止解除処理は、ページテーブル１４の書込み保護ビットをＯＦＦにし、書込み禁止制御テーブル１６の解除フラグの自ＣＰＵに対応するビットを１にする。このようにして、タスクＢ３２１が確保している共通領域２５に対する書込み禁止解除のためのテーブル設定を行う。なお、書込み禁止解除処理については、図２１を参照しながら、以下に詳細に説明する。
【０１０４】
図２１は、タスク制御用書込み禁止解除処理の流れを示すフローチャートである。  
タスク制御用書込み禁止設定・解除部１０は、選択されたタスクＢ３２１が確保している共通領域２５の共通領域確保テーブル１７、または選択されたタスクＢ３２１が書き込み宣言している共通領域２５の書込み宣言テーブル１８を参照し、該当する仮想アドレスに対応する書込み禁止制御テーブル１６を参照する。そしてタスク制御用書込み禁止設定・解除部１０は、書込み禁止制御テーブル１６の抑止ビットがＯＦＦであるか否かを判定する（S72）。
【０１０５】
タスク制御用書込み禁止設定・解除部１０は、書込み禁止制御テーブル１６の抑止ビットがＯＮならば、ユーザ要求の書込み保護を有効とするために、書込み保護の解除を行わずに”ｙｅｓ”に進むが、抑止ビットがＯＦＦならば、書込み保護の解除を行うために”ｎｏ”に進む。
【０１０６】
書込み禁止制御テーブル１６の解除フラグのＣＰＵ１に対応する全てのビットが０でなければ、タスク制御用書込み禁止設定・解除部１０は、書込み禁止制御テーブル１６の解除フラグの自ＣＰＵに対応するビットを１にする（S45）。そしてタスク制御用書込み禁止設定・解除部１０は、タスクＢ３２１が確保している共通領域確保テーブル１７、書込み宣言テーブル１８に示される次の仮想アドレスに対して書込み禁止制御テーブル１６の解除フラグの判定処理（S49、S73）を行う。
【０１０７】
一方S73において、書込み禁止制御テーブル１６の解除フラグのＣＰＵに対応する全てのビットが０ならば（S73）、タスク制御用書込み禁止設定・解除部１０は、ページテーブル１４上の書込み保護ビットをＯＮにするために、仮想メモリに実メモリが割り当てられているかの判定を行う（S46）。仮想メモリに実メモリが割り当てられているかの判定には、ＣＰＵ１が用意している仮想アドレスから実アドレスへの変換命令を使用する。
【０１０８】
変換命令のコンディションコードが０以外で実メモリの割り当てがないと判断した場合には（S47:なし）、タスク制御用書込み禁止設定・解除部１０は、書込み禁止制御テーブル１６の解除フラグの自ＣＰＵに対応するビットのみ１にする（S45）。  
変換命令のコンディションコードが０であり実メモリの割り当てがあると判断した場合には（S47:あり）、タスク制御用書込み禁止設定・解除部１０は、仮想アドレスに対応するページテーブル１４上の書込み保護ビットをＯＦＦにする（S48）。そしてタスク制御用書込み禁止設定・解除部１０は、書込み禁止制御テーブル１６の解除フラグの自ＣＰＵに対応するビットを１にする（S45）。
【０１０９】
これらの処理（S73、S46、S47、S48、S45）は、タスクＢ３２１が確保している共通領域確保テーブル１７、書込み宣言テーブル１８に示される仮想アドレス全てに対して行う（S49）。  
図１９に戻って、S38、S39の処理は、タスクＢ３２１が確保している共通領域２５の共通領域管理テーブルの確保テーブル１７全てに対して行う（S40）。
【０１１０】
次に図１８に戻って、メモリ制御部８は、タスクＢ３２１が書き込み宣言している共通領域２５に対する書き込みの禁止を解除する（S35）。  
すなわち、書込み宣言登録・解除部１１は、タスクＢ３２１の書込み宣言テーブル１８を参照して、その書込み宣言テーブル１８に登録されている仮想アドレスから対応するページテーブル１４と書込み禁止制御テーブル１６を求める。そして書込み宣言登録・解除部１１は、ページテーブル１４の書込み保護ビットをＯＦＦにし、書込み禁止制御テーブル１６の解除フラグの自ＣＰＵに対応するビットを１にする。なお、S35の処理については、図２０を参照しながら、以下に詳細に説明する。
【０１１１】
図２０は、タスクＢ３２１が他のタスク３１が確保している共通領域２５に対して書込みを宣言している場合に、その共通領域２５に対する書込み禁止を解除するための処理の流れを示すフローチャートである。  
まず書込み宣言登録・解除部１１は、書き込み宣言テーブル１８を参照し、選択したタスクＢ３２１が書き込み宣言を行っているか否かを判定する（S41）。  
書込み宣言登録・解除部１１は、選択したタスクＢ３２１が書き込み宣言を１つも行っていない場合はなにもしないが、書き込み宣言を行っている場合は、タスク制御用書込み禁止設定・解除部１０を呼出して、選択したタスクＢ３２１の書込み宣言テーブル１８を参照して、仮想アドレスからページテーブル１４と書込み禁止制御テーブル１６を求める（S42）。
【０１１２】
そしてタスク制御用書込み禁止設定・解除部１０は、図２１に示した書き込み禁止解除処理を行う（S43）。書込み禁止解除処理は、ページテーブル１４の書込み保護ビットをＯＦＦにし、書込み禁止制御テーブル１６の解除フラグの自ＣＰＵに対応するビットを１にする。このようにして、書込み禁止解除のためのテーブル設定を行う。  
このS42、S43の処理は、選択したタスクＢ３２１が書き込み宣言している共通領域２５の書込み宣言テーブル１８全てに対して行う（S44）。  
そして図１８に戻って、タスク選択部６は、選択したタスクＢ３２１を実行状態にする（S36）。
【０１１３】
＜ユーザタスクからの要求で書込み禁止設定を行う場合の書込み禁止設定処理＞
図２２は、メモリ制御部８が、ユーザタスク３１からの要求を受けて、書込みを禁止するための設定を行う場合の処理の流れを示すフローチャートである。  
この処理は、従来、書込み保護を行うために、メモリ制御部８が用意したマクロなどを使用してユーザタスク３１が要求を行った場合の書込み禁止設定を行う処理である。
【０１１４】
本発明によるタスク制御部５からの書込み禁止設定・解除との矛盾を発生させないために、ユーザ用の書込み禁止設定処理で、タスク制御部５による書込み禁止設定・解除の状態を判断するために、書込み禁止制御テーブル１６の参照と、ユーザの書込み禁止設定要求による書込み禁止設定を保証するため、タスク制御部５による書込み禁止解除を抑止するための書込み禁止制御テーブル１６への抑止ビットの設定を行う。
【０１１５】
ユーザタスク３１からの書込み禁止設定要求では、要求した仮想アドレスの仮想メモリに実メモリが割り当てられている場合のみ有効とする。仮想メモリに実メモリが割り当てられているかの判定にＣＰＵ１が用意した仮想アドレスから実アドレスへの変換命令を使用する（S76）。変換命令のコンディションコードが０以外であれば、実メモリの割り当てがないと判断してエラーリターンするが、コンディションコードが０であれば、実メモリの割り当てがあると判断して（S77）、次の処理（S78）を行う。  
書込み禁止設定要求の実メモリに対する書込み禁止制御テーブル１６の解除フラグが全て０でなければ（S78）、書込み禁止制御テーブル１６の解除フラグ全てを０にして（S79）、ページテーブル１４上の書込み保護ビットをＯＮにする（S80）。本発明により、書込み制御テーブル１６の解除フラグが０であれば、タスク制御部５による書込み禁止設定が行われているため、ページテーブル１４上の書込み保護ビットをＯＮにする必要が無い。  
最後にタスク制御部５による書込み禁止設定・解除を抑止させるため、書込み禁止制御テーブル１６の抑止ビットをＯＮにして（S81）リターンする。
【０１１６】
＜ユーザタスクからの要求で書込み禁止解除を行う場合の書込み禁止解除処理＞
図２３は、ユーザタスク３１からの要求で書込み禁止解除を行う場合の書込み禁止解除処理の流れを示すフローチャートである。  
この処理は、従来、書込み保護の解除を行うために、メモリ制御部８が用意したマクロなどを使用してユーザタスク３１が要求を行った場合の書込み禁止解除を行う処理である。
【０１１７】
本発明によるタスク制御部５からの書込み禁止設定・解除との矛盾を発生させないため、ユーザ用の書込み禁止解除処理で、ユーザの解除要求による書込み禁止解除後、タスク制御部５による書込み禁止設定・解除を行える様にするために、書込み禁止制御テーブル１６の抑止ビットの解除を行う。
【０１１８】
ユーザタスク３１からの書込み禁止解除要求では、書込み禁止制御テーブル１６の抑止ビットがＯＮでなければ、ユーザ要求による書込み禁止設定を行っていないと判断し、エラーリターンする（S83）。書込み禁止制御テーブル１６の抑止ビットがＯＮであれば、書込み禁止制御テーブル１６の抑止ビットをＯＦＦにする（S84）。
【０１１９】
書込み禁止解除要求された仮想メモリが、要求したタスク３１が確保している共通領域２５に含まれないあるいは、要求したタスク３１が書込み宣言を行っている共通領域２５に含まれなければ（S85）、そのページの書込み保護の解除は行わないで本発明によるタスク制御部５での書込み禁止解除とする。要求したタスク３１が確保している共通領域２５に含まれるか、要求したタスク３１が書込み宣言を行っている共通領域２５に含まれるのであれば（S85）、その書込み禁止解除を要求された仮想アドレスに対する仮想メモリに実メモリが割り当てられている場合、ページテーブル１４上の書込み保護ビットをＯＦＦにする。
【０１２０】
仮想メモリに実メモリが割り当てられているかの判定にＣＰＵ１が用意した仮想アドレスから実アドレスへの変換命令を使用する（S86）。変換命令のコンディションコードが０以外であれば、実メモリの割り当てがないと判断して、書込み禁止制御テーブル１６の解除フラグの自ＣＰＵに対応するビットを１にしてリターンするが、コンディションコードが０であれば、実メモリの割り当てがあると判断して（S87）、ページテーブル１４上の書込み保護ビットをＯＦＦにして（S88）、書込み禁止制御テーブル１６の解除フラグの自ＣＰＵに対応するビットを１にして（S89）、リターンする。
【０１２１】
以上本発明の実施形態を詳細に説明したが、本実施形態によれば、メモリ４を共有する各タスク３１が、メモリ４に記憶されるデータを保護するための制御をしなくても、メモリ４に記憶されるデータを保護することが可能となる。このため例えば、ユーザタスク３１が暴走し、メモリ４へのデータの書き込み先が制御不能になったとしても、そのユーザタスク３１が確保していない領域へデータが書き込まれることはないので、メモリ４に記憶されているデータを保護することが可能となる。また例えば、悪意を持ってユーザタスク３１が実行され、他のユーザタスク３１により書き込まれたデータを不正に書き換えようとしても、本実施形態に係るデータ保護方法によれば、そのような不正を阻止することが可能となる。
【０１２２】
特に仮想記憶システムのシステム共通領域や、空間間共通作業領域の共通領域２５において、複数のタスクが確保した領域が混在する中で、他タスクが確保した同一の保護キーが割り当てられた領域に対して、ユーザタスク３１で領域の書込み保護の制御を考慮しなくても、自タスクが確保した領域のみが書込み可能となる。これにより、自動的に他タスクが確保した領域に誤って書込むことができなくなり、他のタスクが領域破壊により誤動作することが無くなるという利点がある。さらに、実行状態でのみ書込み可能となるため、他タスクから破壊されることを防止できるという利点がある。
【０１２３】
また他のタスクと領域を介してデータの受け渡しを行う場合など、その領域のアドレスがあらかじめ判っていて、その領域が受け取り側のタスクが用意した領域であって関連したタスク間でインタフェースとして書込みを可能とするような場合、他タスクの確保した領域に対して、書込みを宣言することで、書込みが可能となり、他タスクとのインタフェースの誤りによって、用意された領域が小さい場合など、不用意に他の関係ない領域を破壊してシステムを停止させるようなことを防止することが可能となる利点がある。また領域に対する書込むタスクが限定されることで、領域破壊を検知した場合の原因特定が迅速に行えるという利点がある。
【０１２４】
以上発明を実施するための最良の形態について説明したが、上記実施の形態は本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明はその趣旨を逸脱することなく変更、改良され得ると共に、本発明にはその等価物も含まれる。例えば、特許請求の範囲に記載の記憶領域は、ページではなくセグメントであってもよい。またメモリ４は、物理的に１個の半導体メモリで構成されるのみならず、複数の半導体メモリで構成されていてもよい。
【図面の簡単な説明】
【０１２５】
【図１】本実施形態に係る情報処理装置のハードウェア構成を示す図である。
【図２】本実施形態に係る仮想メモリの構成を示す図である。
【図３】本実施形態に係る仮想メモリの構成を示す図である。
【図４】本実施形態に係るセグメントテーブルを示す図である。
【図５】本実施形態に係るページテーブルを示す図である。
【図６】本実施形態に係る実メモリ管理テーブルを示す図である。
【図７】本実施形態に係る書込み禁止制御テーブルを示す図である。
【図８】本実施形態に係る共通領域確保テーブルを示す図である。
【図９】本実施形態に係る共通領域空きテーブルを示す図である。
【図１０】本実施形態に係る書込み宣言テーブルを示す図である。
【図１１】本実施形態に係るタスク制御テーブルを示す図である。
【図１２】本実施形態に係る領域確保要求パラメタ及び書込み宣言要求パラメタを示す図である。
【図１３】本実施形態に係るソフトウェアの構成を示した図である。
【図１４】本実施形態に係るタスクを実行状態から実行可能状態に遷移させる場合の処理の流れを示すフローチャートである。
【図１５】本実施形態に係るタスクが確保している共通領域に対する書込みを禁止するための設定を行う際の処理の流れを示すフローチャートである。
【図１６】本実施形態に係るタスクが他のタスクが確保している共通領域に対して書込みを宣言している場合に、その共通領域に対する書込みを禁止するための設定を行う際の処理の流れを示すフローチャートである。
【図１７】本実施形態に係るタスク制御用書込み禁止設定処理の流れを示すフローチャートである。
【図１８】本実施形態に係るタスクを実行可能状態から実行状態に遷移させる場合の処理の流れを示すフローチャートである。
【図１９】本実施形態に係るタスクが確保している共通領域に対する書込み禁止解除処理の流れを示すフローチャートである。
【図２０】本実施形態に係るタスクが他のタスクが確保している共通領域に対して書込みを宣言している場合に、その共通領域に対する書込み禁止を解除するための処理の流れを示すフローチャートである。
【図２１】本実施形態に係るタスク制御用書込み禁止解除処理の流れを示すフローチャートである。
【図２２】本実施形態に係るメモリ制御がユーザからの要求で書込み保護設定を行う際の処理の流れを示すフローチャートである。
【図２３】本実施形態に係るメモリ制御がユーザからの要求で書込み保護解除を行う際の処理の流れを示すフローチャートである。
【符号の説明】
【０１２６】
１  ＣＰＵ                              ２  制御レジスタ
３  アドレス変換機構                    ４  メモリ
５  タスク制御                          ６  タスク選択部
７  タスク終了部                        ８  メモリ制御部
９  領域確保・解放部                    １０  タスク制御用書込み禁止・解除部
１１  書き込み宣言登録・解除部          １２  実記憶制御部
１３  セグメントテーブル                １４  ページテーブル
１５  実メモリ管理テーブル              １６  書込み禁止制御テーブル
１７  共通領域確保テーブル              １８  書込み宣言テーブル
１９  タスク制御テーブル                ２０  空間１
２１  空間２                            ２２  空間３
２３  空間ｎ                            ２４  空間固有領域
２５  共通領域                          ２６  タスクＡ確保領域
２７  タスクＢ確保領域                  ２８  タスクＣ確保領域
２９  タスクｘ確保領域                  ３０  未割当て（解放）領域
３１  ユーザタスク                      ３２  領域確保・解放部
３３  書込み宣言・解除部                ６６  共通領域空きテーブル
６７  領域確保要求パラメタ              ６８  書き込み要求宣言パラメタ
６９  ユーザ用書込み禁止設定・解除部    ７０  書込み禁止設定要求部
７１  書込み禁止解除要求部
１００  情報処理装置                    １１０  ハードディスクドライブ
１２０  Ｉ／Ｏインタフェース            １３０  通信インタフェース
２００  オペレーティングシステム        ３００  ユーザプログラム
３１０  ユーザプログラムＡ              ３１１  ユーザタスクＡ
３２０  ユーザプログラムＢ              ３２１  ユーザタスクＢ
３３０  ユーザプログラムＣ              ３３１  ユーザタスクＣ
３４０  ユーザプログラムＸ              ３４１  ユーザタスクＸ
【図１】
2007310834.tif 000003
【図２】
2007310834.tif 000004
【図３】
2007310834.tif 000005
【図４】
2007310834.tif 000006
【図５】
2007310834.tif 000007
【図６】
2007310834.tif 000008
【図７】
2007310834.tif 000009
【図８】
2007310834.tif 000010
【図９】
2007310834.tif 000011
【図１０】
2007310834.tif 000012
【図１１】
2007310834.tif 000013
【図１２】
2007310834.tif 000014
【図１３】
2007310834.tif 000015
【図１４】
2007310834.tif 000016
【図１５】
2007310834.tif 000017
【図１６】
2007310834.tif 000018
【図１７】
2007310834.tif 000019
【図１８】
2007310834.tif 000020
【図１９】
2007310834.tif 000021
【図２０】
2007310834.tif 000022
【図２１】
2007310834.tif 000023
【図２２】
2007310834.tif 000024
【図２３】
2007310834.tif 000025