"I/O制御装置において、マルチコアプロセッサと、前記マルチコアプロセッサのうち、I/O装置の初期化を行った第1のコアプロセッサの識別情報を記憶する記憶手段と、を備え、前記第1のコアプロセッサと異なる第2のコアプロセッサが前記I/O装置についてのI/O要求を受けると、該第2のコアプロセッサは、前記記憶手段を参照して特定される、前記第1のコアプロセッサに対して、前記I/O要求の処理を依頼する、ことを特徴とするI/O制御装置。前記第1のコアプロセッサは、前記I/O装置と該I/O装置の初期化を行うコアプロセッサとが関連づけられた設定情報を用いて初期化するI/O装置を特定し、特定した前記I/O装置の初期化を行うことを特徴とする請求項1記載のI/O制御装置。前記I/O要求の処理が依頼された前記第1のコアプロセッサの処理の完了通知を受け取った前記第2のコアプロセッサは、処理を実行した前記第1のコアプロセッサを識別する処理識別情報を前記I/O要求の要求元に返し、前記第2のコアプロセッサは、前記処理識別情報を付加した第2のI/O要求を前記I/Oの要求元から受けると、前記第2のI/O要求に付加された前記処理識別情報を用いて特定される前記第1のコアプロセッサに対して、前記第2のI/O要求の処理を依頼することを特徴とする請求項1記載のI/O制御装置。メモリ装置をさらに有し、前記第2のコアプロセッサは、前記第2のコアプロセッサがI/O装置の初期化を行ったときに確保した前記メモリ装置の論理メモリ空間と物理メモリ空間との関係を前記第1のコアプロセッサに通知し、前記第1のコアプロセッサは、前記第2のコアプロセッサから前記I/O要求の処理を依頼されたときに、前記第2のコアプロセッサから通知された前記論理メモリ空間と物理メモリ空間との関係を用いて、前記メモリ装置に確保された論理メモリ空間を使用して前記I/O要求の処理を実行することを特徴とする請求項1記載のI/O制御装置。マルチコアプロセッサのうち、I/O装置の初期化を行った第1のコアプロセッサと異なる第2のコアプロセッサがI/O装置についてのI/O要求を受けると、該第2のコアプロセッサは、I/O装置の初期化を行った第1のコアプロセッサの識別情報を記憶する記憶手段を参照して前記第1のコアプロセッサを特定し、特定した前記第1のコアプロセッサに対して、前記I/O要求の処理を依頼する、ことを特徴とするI/O制御方法。各コアプロセッサは、I/O装置の初期化処理を実行することで、初期化処理を実行したI/O装置を認識する。あるコアプロセッサが初期化処理を実行しなかったI/O装置が存在する場合には、他のコアプロセッサにより初期化処理が実行されていても、コアプロセッサは、他のコアプロセッサにより初期化処理が実行されたI/O装置を認識することができない。このためコアプロセッサは、初期化処理を実行したI/O装置以外のI/O装置に対するI/O要求を受け付けても、受け付けたI/O要求に対応することができないという問題がある。1つの側面では、本発明は、他のコアプロセッサが初期化したI/O装置に対するI/O要求を受けた場合であっても、コアプロセッサがそのI/O要求に対応することができるようにすることを目的とする。上記目的を達成するために、開示のI/O制御装置が提供される。このI/O制御装置は、マルチコアプロセッサと、マルチコアプロセッサのうち、I/O装置の初期化を行った第1のコアプロセッサの識別情報を記憶する記憶手段とを備えている。第1のコアプロセッサと異なる第2のコアプロセッサがI/O装置についてのI/O要求を受けると、該第2のコアプロセッサは、記憶手段を参照して特定される、第1のコアプロセッサに対して、I/O要求の処理を依頼する。1態様では、他のコアプロセッサが初期化したI/O装置に対するI/O要求を受けた場合であっても、コアプロセッサがそのI/O要求に対応することができる。以下、実施の形態のI/O制御装置を、図面を参照して詳細に説明する。<第1の実施の形態>図1は、第1の実施の形態のI/O制御装置を示す図である。第1の実施の形態のI/O制御装置1は、マルチコアプロセッサ6を備えている。マルチコアプロセッサ6は、それぞれ独立したOSOperatingSystemで動作する複数のコアプロセッサ1a、1b、1cを備えている。コアプロセッサ1a、1b、1cのうち、コアプロセッサ1aが、マスタmasterコアに設定されている。マスタコアに設定されたコアプロセッサ1aは、作成部1a1と依頼部1a2を備えている。図1では、コアプロセッサ1aのコア名がコアA、コアプロセッサ1bのコア名がコアB、コアプロセッサ1cのコア名がコアCであるものとする。作成部1a1は、例えばI/O制御装置1の管理者が予め設定した設定情報2を用いて、コアプロセッサ1bにディスク装置4の初期化を実行させ、コアプロセッサ1cにDMADirectMemoryAccessコントローラ5の初期化を実行させる。ディスク装置4およびDMAコントローラ5は、I/O装置の一例である。ここで、ディスク装置4の初期化とは、ディスク装置4に接続されたSASSerialAttachedSCSIコントローラ1dを介してディスク装置4に対するI/O要求を処理可能な状態にすることを言う。また、DMAコントローラ5の初期化とは、DMAコントローラ5に接続されたDMAコントローラ1eを介してDMAコントローラ5に対するI/O要求を処理可能な状態にすることを言う。SASコントローラ1dとDMAコントローラ1eは、I/Oインタフェースの一例である。設定情報2は、初期化を実行させるコアプロセッサとI/Oインタフェースとを管理者が関連づけた情報である。図1では、SASコントローラ1dとコアプロセッサ1bとが関連づけられていることを示し、DMAコントローラ1eとコアプロセッサ1cとが関連づけられている。コアプロセッサ1bは、作成部1a1の依頼に基づきSASコントローラ1dを制御してSASコントローラ1dに接続されたディスク装置4を認識する。そして、コアプロセッサ1bは、認識したディスク装置4の装置名dsk000を、コアプロセッサ1bのコア名コアBとともにコアプロセッサ1aに返す。また、コアプロセッサ1cは、作成部1a1の依頼に基づきDMAコントローラ1eを制御してDMAコントローラ1eに接続されたDMAコントローラ5を認識する。そして、コアプロセッサ1cは、認識したDMAコントローラ5の装置名dma000を、コアプロセッサ1cのコア名コアCとともにコアプロセッサ1aに返す。そして、作成部1a1は、ディスク装置4の装置名dsk000を、コアプロセッサ1bのコア名コアBに関連づけ、DMAコントローラ5の装置名dma000を、コアプロセッサ1cのコア名コアCと関連づけた関連情報3を作成する。作成部1a1は、作成した関連情報3を記憶手段3aに記憶する。この記憶手段3aは、RAMRandomAccessMemory等が備えるデータ記憶領域により実現することができる。依頼部1a2は、ディスク装置4またはDMAコントローラ5に対するI/O要求を受け付けると、記憶手段3aに記憶されている関連情報3を用いてI/O要求を処理するコアプロセッサを特定する。そして、特定したコアプロセッサに対しI/O要求の処理を依頼する。例えば、I/O要求が、ディスク装置4へのI/Oアクセス試験を行う要求であれば、依頼部1a2は、関連情報3を参照し、ディスク装置4の装置名dsk000に関連づけられたコアプロセッサ名コアBを特定する。そして、特定したコアプロセッサ名コアBのコアプロセッサ1bにI/O要求に対する処理を依頼する。また、I/O要求が、DMAコントローラ5へのI/Oアクセス試験を行う要求であれば、依頼部1a2は、関連情報3を参照し、DMAコントローラ5の装置名dma000に関連づけられたコアプロセッサ名コアCを特定する。そして、特定したコアプロセッサ名コアCのコアプロセッサ1cにI/O要求に対する処理を依頼する。I/O制御装置1によれば、マスタコアに設定されているコアプロセッサ1aにI/O要求が送られてくると、依頼部1a2が関連情報3を参照することにより、I/O要求を処理するコアプロセッサを特定する。そして、依頼部1a2は、特定したコアプロセッサに対しI/O要求の処理を依頼する。従って、管理者は、どのコアプロセッサでどのI/O装置が初期化されているのかを確認しなくてもコアプロセッサ1aにI/O要求の処理を依頼することで、コアプロセッサ1b、1cにI/O装置の処理を実行させることができる。以下、開示のI/O制御装置をストレージシステムに適用した実施の形態を説明する。<第2の実施の形態>図2は、第2の実施の形態のストレージシステムを示すブロック図である。ストレージシステム1000は、ホスト装置30と、このホスト装置30にファイバチャネルFC:FibreChannelスイッチ31を介して接続されたストレージ装置100とを有している。なお、図2では1つのホスト装置30がストレージ装置100に接続されているが、複数のホスト装置が、ストレージ装置100に接続されていてもよい。ストレージ装置100は、それぞれが複数のHDD20を備えるドライブエンクロージャDE:DriveEnclosure20a、20b、20c、20dと、これらのドライブエンクロージャ20a、20b、20c、20dの物理記憶領域をRAIDRedundantArraysofInexpensiveIndependentDisksによって管理するCEControllerEnclosure10を有している。なお、本実施の形態では、ドライブエンクロージャ20a、20b、20c、20dが備える記憶媒体としては、HDD20を例示したが、HDD20に限らず、SSDSolidStateDisk等、他の記憶媒体を用いてもよい。以下、ドライブエンクロージャ20a、20b、20c、20dが備える複数のHDD20を区別しない場合は、HDD20群と言う。HDD20群の総容量は、例えば600GBGigaByte~240TBTeraByteである。CE10は、制御モジュールCM:ControllerModule10a、10bを有している。CE10は、制御モジュール10a、10bそれぞれが備えるマルチコアプロセッサの全てのCPUコアにおいて同じシステムを立ち上げ、複数のCPUコアから選択した、または予め選択されたマスタコア上で試験プログラムを起動し、複数のCPUコアによるI/O制御分担を行う。制御の対象となるI/O装置は、SAS、チャネルアダプタCA:ChannelAdapter、DMAコントローラ等である。SASはコントローラ単位、チャネルアダプタはポート単位、DMAコントローラはチャネル単位で各コアに制御を分担させる。また、CE10には、管理端末装置500が接続されている。ストレージシステム1000の管理者以下、システム管理者と言うは、管理端末装置500を操作することで、CE10に各種動作を実行させることができる。ストレージ装置100は、2つの制御モジュール10a、10bを運用に使用することで、冗長性が確保されている。なお、ストレージ装置100が備える制御モジュールの数は、2つに限定されず、3つ以上の制御モジュールにより冗長性が確保されていてもよいし、制御モジュール10aのみを使用した構成であってもよい。制御モジュール10a、10bは、それぞれ、ホスト装置30からのデータアクセス要求に応じてドライブエンクロージャ20a、20b、20c、20dが有するHDD20の物理記憶領域へのデータアクセスをRAIDによって制御する。制御モジュール10a、10bは、それぞれ同じハードウェア構成によって実現されるため、代表的に、制御モジュール10aのハードウェア構成を説明する。制御モジュール10aは、CPU101と、PCH102と、SSD103と、DMAコントローラ図2ではDMACと表記104と、RAM105と、フラッシュROMReadOnlyMemory106と、キャッシュメモリ107と、チャネルアダプタ108a、108bと、SASコントローラ図2では、SASと表記109a、109bとを備えている。CPU101は、複数のCPUコアを備えるマルチコアCPUである。CPU101は、PCH102を介して接続されたSSD103等に記憶された試験プログラムを実行することにより、制御モジュール10a全体を統括的に制御する。DMAコントローラ104は、CPU101に接続されており、制御モジュール10bが備えるDMAコントローラ204との間でメモリ間のデータ転送を行う。RAM105は、CPU101に実行させるプログラムの少なくとも一部や、プログラムによる処理に必要な各種データを一時的に記憶する。フラッシュROM106は、不揮発性のメモリであり、CPU101により実行されるプログラムや、プログラムの実行に必要な各種のデータ等を記憶する。また、フラッシュROM106は、ストレージ装置100の停電時等にキャッシュメモリ107に記憶されているデータの退避先となる。キャッシュメモリ107は、HDD20群に書き込まれているデータやHDD20群から読み出したデータを一時的に記憶する。そして、制御モジュール10aは、例えばホスト装置30からのデータ読み出し命令を受けたときに、読み出し対象のデータがキャッシュメモリ107に記憶されているか否かを判断する。読み出し対象のデータがキャッシュメモリ107に記憶されていれば、制御モジュール10aは、キャッシュメモリ107に記憶されている読み出し対象のデータをホスト装置30に送る。読み出し対象のデータをHDD20群から読み出す場合に比べ、データを迅速にホスト装置30に送ることができる。また、キャッシュメモリ107には、CPU101が処理に用いるデータが一時的に記憶されてもよい。このキャッシュメモリ107としては、例えば、SRAMStaticRandomAccessMemory等の揮発性の半導体装置が挙げられる。また、キャッシュメモリ107の記憶容量は、特に限定されないが、一例として2~64GB程度である。チャネルアダプタ108a、108bは、それぞれファイバチャネルスイッチ31に接続され、ファイバチャネルスイッチ31を介してホスト装置30のチャネルCH1、CH2、CH3、CH4に接続される。チャネルアダプタ108a、108bは、ホスト装置30と制御モジュール10aとの間でデータを送受信するインタフェース機能を提供する。SASコントローラ109a、109bは、ドライブエンクロージャ20a、20b、20c、20dに接続されている。このSASコントローラ109a、109bは、ドライブエンクロージャ20a、20b、20c、20dが備えるHDD20群とキャッシュメモリ107との間でデータを送受信するデバイスインタフェース機能を提供する。制御モジュール10aは、SASコントローラ109a、109bを介してドライブエンクロージャ20a、20b、20c、20dが備えるHDD20群との間でデータの送受信を行う。ドライブエンクロージャ20a、20b、20c、20dには、ドライブエンクロージャ20a、20b、20c、20dが備える複数のHDD20のうち、1つ、または複数のHDD20により構成されたRAIDグループが形成されている。このRAIDグループは、論理ボリューム仮想ディスクRLURAIDLogicalUnit等と呼ばれる場合もある。図2では、RAID5を構成するRAIDグループ21を示している。なお、RAIDグループ21を構成するHDD20は、他のHDD20と区別するために、異なる符号HDD21a、21b、21c、21dを付している。すなわち、RAIDグループ21は、HDD21a、21b、21c、21dで構成されており、RAID531で運用されている。なお、RAIDグループ21のRAID構成は、一例であり、図示のRAID構成に限定されない。例えば、RAIDグループ21は、任意の個数のHDD20を有することができる。また、RAIDグループ21は、RAID6等、任意のRAID方式で構成することができる。図2に示すようなハードウェア構成の制御モジュール10a、10b内には、以下のような機能が設けられる。以下、制御モジュール10a、10bを代表して制御モジュール10aの機能を説明する。図3は、各CPUコアの機能を説明するブロック図である。CPU101は、CPUコア101a、101b、101c、101dを有している。CPUコア101a~101dのうち、1つがCPU101を統括して制御するマスタコアに設定される。本実施の形態では、CPUコア101aがマスタコアに設定されている。以下、CPUコア101aをマスタコア101aとも言う。また、CPUコア101b、101c、101dをサブコア101b、101c、101dとも言う。CPUコア101aは、試験プログラム実行部11と、システムモニタ12と、I/Oドライバ13とを有している。試験プログラム実行部11は、試験プログラムを実行することにより、後述するDMAコントローラアクセス処理、CAアクセス処理、ディスクアクセス処理等のI/O装置へのI/Oアクセス試験の実行をCPUコア101a~101dに要求する。I/Oアクセス試験は、システムモニタ12を通して対象CPUコア101a~101dが備える各I/Oドライバにおいて実行される。次に、試験プログラム実行部11の起動手順を説明する。図4は、試験プログラム実行部の起動手順を説明する図である。制御モジュール10aに電力が供給されると、フラッシュROM106に記憶されているBIOSBasicInputOutputSystem106aが起動する。BIOS106aは、SSD103に記憶されているシステムモニタをRAM105にロードし、CPU101に制御を渡す。CPU101は、システムモニタ12の初期化処理を実行する。次に、CPU101は、SSD103に記憶されているI/Oドライバ13をRAM105にロードする。CPU101は、I/Oドライバ13に接続されたI/O装置の初期化処理を実行する。CPU101は、I/Oドライバ13が複数存在する場合、I/Oドライバ13の数だけI/Oドライバ13に接続されたI/O装置のロードおよび初期化処理を繰り返す。CPU101は、システムモニタ12の立ち上げ処理が完了後、管理端末装置500に操作画面を表示する。システム管理者は、管理端末装置500を用いて各I/O装置の試験プログラム11aの起動操作を実施する。起動操作をCPU101が受け付けると、システムモニタ12は、指定された試験プログラム11aをSSD103からRAM105にロードする。試験プログラム実行部11は、ロードされた試験プログラム11aを実行する。なお、管理端末装置500からの起動操作を予めフラッシュROM106等に記憶しておき、CPU101が読み出すことで、試験プログラムを起動することもできる。再び図3に戻って説明する。システムモニタ12は、設定部121と、提供部122と、通信制御部123と、メモリ管理部124と、作成部125と、判断部126とを有している。設定部121は、管理端末装置500が発信するコマンドを受け取ると、コマンドに含まれる設定内容に基づいて後述する初期化装置情報テーブルを作成し、RAM105に格納する。このコマンドは、システム管理者が、各CPUコア101b~101dが備える各I/OドライバにどのI/O装置のI/Oアクセス試験を実行させるかを通知する際に発行するコマンドである。なお、I/O装置の設定は、SASコントローラ109a、109b単位、チャネルアダプタ108a、108bのポート単位、およびDMAコントローラ104のチャネル単位で可能とする。図5は、初期化装置情報テーブルを示す図である。初期化装置情報テーブル105aには、初期化対象装置名の欄と、コア番号の欄が設けられている。初期化対象装置名の欄には、SASコントローラ、CAのポート、およびDMAコントローラのチャネルを識別する名前が設定される。コア番号の欄には、当該SASコントローラ、CAのポート、およびDMAコントローラのチャネルを初期化したCPUコア101a~101dを識別する番号が設定される。図5では、コア番号0は、CPUコア101aを示している。コア番号1は、CPUコア101bを示している。コア番号2は、CPUコア101cを示している。コア番号3は、CPUコア101dを示している。再び図3に戻って説明する。提供部122は、I/O装置の初期化処理時に、CPUコア101aが備える各I/Oドライバ13に制御担当のI/O装置を通知する。具体的には、提供部122は、自システムが動作しているコア番号をチェックし、初期化装置情報テーブル105aから、コア番号が一致する対象装置情報をI/Oドライバ13に返す。通信制御部123は、CPUコア101aとCPUコア101b~101d間の通信を制御する。メモリ管理部124は、CPUコア101a、101b、101c、101dがI/O装置のI/Oアクセス試験を実行する際に用いるメモリ空間を一括して管理する。すなわち、CPUコア101a以外のCPUコア101b~101dにおけるページングはメモリ管理部124の指示に従って行う。作成部125は、初期化部131および初期化部161が処理を実行することにより得られる装置の情報以下、装置情報と言うをテーブル化してRAM105に記憶する。図6は、装置情報テーブルを示す図である。装置情報テーブル105bには、装置名およびコア番号の欄が設けられている。横方向に並べられた情報同士が互いに関連づけられている。装置名の欄には、初期化部131等がそれぞれ初期化を実行した結果、初期化部131等が認識した装置の名前が設定されている。コア番号の欄には、装置名の欄の装置の初期化を実行したCPUコア101a~101dを識別する番号が設定される。例えば、装置名dsk00000は、初期化部131が認識したドライブエンクロージャ20aに実装されている複数のHDD20のうちの1つのHDD20の名前である。また、装置名dma00000は、初期化部131が認識したDMAコントローラ204のチャネル0を識別する名前である。また、装置名cat00000は、CPUコア101cの初期化部が認識したチャネルアダプタ108aのポート0を識別する名前である。再び図3に戻って説明する。判断部126は、試験プログラム11aが実行されたときに、試験対象となるI/O装置のI/Oアクセス試験を行うCPUコアを判断する。図7は、判断部の処理を示すブロック図である。図7に示す試験プログラム実行部11は、試験プログラム11aに記述されたDMAコントローラアクセス処理B、CAアクセス処理B、ディスクアクセス処理A、およびディスクアクセス処理Bを実行する。DMAコントローラアクセス処理Bは、DMAコントローラ104のチャネル1を介してDMAコントローラ204にアクセスする処理である。CAアクセス処理Bは、チャネルアダプタ108bを介してホスト装置30にアクセスする処理である。ディスクアクセス処理Aは、SASコントローラ109aを介してドライブエンクロージャ20aにアクセスする処理である。ディスクアクセス処理Bは、SASコントローラ109bを介してドライブエンクロージャ20aにアクセスする処理である。例えば、DMAコントローラアクセス処理Bでは、判断部126が、装置情報テーブル105bの装置名の欄を参照して、DMAコントローラ204のチャネル1に一致するdma00001を検出する。そして、判断部126は、dma00001に対応するコア番号3を特定する。そして、判断部126は、CPUコア101dのI/Oドライバ18に対し、I/Oアクセス試験を行うよう指示する。I/Oドライバ18は、DMA機能を用いてDMAコントローラ104にアクセスする。同様に、CAアクセス処理Bでは、判断部126が、CPUコア101cのI/Oドライバ17に対し、I/Oアクセス試験を行うよう指示する。また、ディスクアクセス処理Aでは、判断部126が、CPUコア101bのI/Oドライバ16に対しI/Oアクセス試験を行うよう指示する。ディスクアクセス処理Bでは、判断部126が、I/Oドライバ13に対しI/Oアクセス試験を行うよう指示する。再び図3に戻って説明する。I/Oドライバ13は、初期化部131とアクセス制御部132とを有している。初期化部131は、制御モジュール10aの起動時に、システムモニタ12から通知された初期化対象のI/O装置の初期化を実行し、初期化を実行した結果得られる初期化対象のI/O装置の装置情報を生成する。なお初期化部131は、初期化対象のI/O装置が存在しない場合は、何もしない。初期化部131は、生成した装置情報を作成部125に送る。アクセス制御部132は、I/O装置に対してアクセスを行う。次に、CPUコア101b、101c、101dが備える機能を説明する。CPUコア101bは、システムモニタ14と、複数の作業タスク15と、I/Oドライバ16とを有している。システムモニタ14は、提供部141と、通信制御部142と、タスク管理部143とを有している。提供部141は、自システムが動作しているコア番号をチェックし、初期化装置情報テーブル105aから,コア番号が一致する装置情報をI/Oドライバ16に返す。通信制御部142は、CPUコア101bとCPUコア101a、101c~101d間の通信を制御する。タスク管理部143は、CPUコア101bで動作する各作業タスク15の動作状況を管理する。各作業タスク15は、それぞれ処理部151と通知部152とを有している。処理部151は、マスタコア101aからの処理依頼I/Oアクセス、ページング等を実行する。通知部152は、マスタコア101aからの依頼処理結果を、マスタコア101aへ通知する。I/Oドライバ16が実行する処理は、I/Oドライバ13が実行する処理と同様である。すなわち、初期化部161が実行する処理は、初期化部131が実行する処理と同じであり、アクセス制御部162が実行する処理は、アクセス制御部132が実行する処理と同じである。なお、マスタコア101aが作業タスク15と同様の機能を備えていてもよい。次に、CPU101の処理を説明する。図8は、CPUの処理を説明するフローチャートである。[ステップS1]CPU101は、初期化装置情報テーブル105aの各欄を参照し、CPU101に接続されているI/O装置を初期化する分担をCPUコア101a~101d毎に設定する。分担が設定された各CPUコア101a~101dは、設定された分担のI/O装置の初期化処理を実施する。その後、ステップS2に遷移する。なお、初期化処理については、後に詳述する。[ステップS2]CPU101は、初期化処理の結果得られるI/O装置を認識する情報をCPUコア毎に関連づけた装置情報テーブル105bを作成する。その後、ステップS3に遷移する。[ステップS3]CPU101は、要求を受け取ると、ステップS2にて作成した装置情報テーブル105bを用いて試験プログラム11aに記述されたI/Oアクセス試験を行う。その後、図8の処理を終了する。以下、図8のステップS1の初期化処理およびステップS2の装置情報テーブルの作成について詳しく説明する。<初期化処理>図9は、初期化処理を説明するフローチャートである。[ステップS11]設定部121は、管理端末装置500からコマンドを受け取ると、ステップS12に遷移する。[ステップS12]設定部121は、コマンドに含まれる設定内容に基づいて、初期化装置情報テーブル105aを作成する。その後、ステップS13に遷移する。[ステップS13]設定部121は、システムの再立ち上げを実行する。再立ち上げにより、CPUコア101a~101dそれぞれのI/Oドライバが動き始める。[ステップS14]初期化部131は、初期化装置情報テーブル105aのコア番号の欄を参照し、CPUコア101aのI/Oドライバ13が初期化対象とするI/O装置が存在するか否かを判断する。CPUコア101aのI/Oドライバ13が初期化対象とするI/O装置が存在する場合、初期化部131は、初期化装置情報テーブル105aの装置の欄を参照し、CPUコア101aに関連づけられた装置名を特定する。そして、初期化部131は、特定した装置名のI/O装置の初期化を実行し、装置情報を生成する。初期化が完了すると、生成した装置情報を作成部125に送る。その後、ステップS16に遷移する。[ステップS15]初期化部161は、初期化装置情報テーブル105aのコア番号の欄を参照し、CPUコア101bのI/Oドライバ16が初期化対象とするI/O装置が存在するか否かを判断する。CPUコア101bのI/Oドライバ16が初期化対象とするI/O装置が存在する場合、初期化部161は、初期化装置情報テーブル105aの装置の欄を参照し、CPUコア101bに関連づけられた装置名を特定する。そして、初期化部161は、特定した装置名のI/O装置の初期化を実行する。初期化が完了すると、生成した装置情報を、通信制御部142を介して通信制御部123に送る。通信制御部123は、送られてきた装置情報を作成部125に送る。なお、本ステップでは、初期化部161の処理を説明したが、CPUコア101c、101dの初期化部も初期化部161と同様の処理を行う。[ステップS16]作成部125は、初期化部131および初期化部161が初期化を実行することにより得られる装置情報を用いて装置情報テーブル105bを作成する。そして、作成した装置情報テーブル105bをRAM105に記憶する。その後、図9の処理を終了する。本実施の形態の初期化処理を実行することにより、制御モジュール10aは、初期化装置情報テーブル105aで各CPUコアに割当てられたI/O装置のみ初期化処理を行う。従って、各CPUコア101b~101dが備える各I/Oドライバは、動作しているコア番号を意識することなく、初期化処理を実施することができる。このため、同じ装置に対する初期化処理がぶつかり初期化が失敗したり、後から実行されたCPUコアからの初期化処理によって、最初に実行された初期化設定割り込み設定等を上書きされたりし、I/O装置が正常に動作することができなくなる等の不具合を抑制することができる。また、システム管理者が、予め制御対象のI/O装置の設定を変えたI/Oドライバモジュールを作成しておき、その都度I/Oドライバモジュールを入れ替える等の処理が不要となる。次に、図8のステップS3のI/Oアクセス試験処理を説明する。図10は、I/Oアクセス試験処理を説明する図である。[ステップS21]CPUコア101aは、I/O装置とのデータ転送に使用する領域以下、ライト/リード領域と言う105cをRAM105から獲得する。[ステップS22]CPUコア101aは、CPUコア101b、101c、101dとの間で物理アドレスと論理アドレスのページングメモリマッピング処理を行う。なお、ページング処理については、後に詳述する。[ステップS23]CPUコア101aは、ライト/リード領域105cの初期化またはリード設定を行う。[ステップS24]CPUコア101aは、I/Oアクセス試験時に用いる情報を設定する領域以下、I/O制御ブロック領域と言う105dをRAM105から獲得する。[ステップS25]CPUコア101aは、CPUコア101b、101c、101dとの間でページング処理を行う。[ステップS26]CPUコア101aは、ステップS24にて獲得したI/O制御ブロック領域105dを用いてI/Oアクセス試験を行う。以上で、I/Oアクセス試験処理の説明を終了する。次に、ステップS22およびステップS25のページング処理を説明する。試験プログラムはマスタコア101a上で動作する。このため、I/Oアクセス試験の実行時に用いるデータはマスタコア101aが作成し、そのアドレス論理アドレスをI/Oドライバ16、17、18に渡している。I/Oアクセス試験がCPUコア101b、101c、101dで実行される場合、メモリ空間の論理アドレスがCPUコア101aと同じでない場合、全く異なるメモリ番地にアクセスし、誤ったデータでI/Oアクセス試験を行ったり、ページフォルトが発生したりしてしまう。前述したように、本実施の形態のメモリ管理部124は、マスタコア101a以外のCPUコア101b~101dにおけるページングは、マスタコア101aからの指示に従って行う。具体的には、メモリ管理部124は、マスタコア101aにおける全CPUコアの一括メモリ管理機能、CPU間割込み機能を使用してのCPUコア間通信機能、およびマスタコア以外のCPUコアにおけるページング設定/解除処理を実行する。まず、CPUコア101a~101dにおけるメモリ空間の獲得時の処理を説明する。図11は、メモリ空間の獲得時の処理を示すシーケンス図である。[シーケンスSeq1]獲得するメモリ空間が指定された試験プログラム実行部11からのメモリ空間獲得要求を受け付けると、メモリ管理部124は、メモリ空間獲得処理を行う。具体的には、メモリ管理部124は、RAM105を検索し、指定されたメモリ空間を獲得する。次に、メモリ管理部124は、CPUコア101aの論理メモリ空間と物理メモリ空間のページングを実行する。[シーケンスSeq2]メモリ管理部124は、CPUコア101b、101c、101dに対してページング処理を要求する。具体的には、メモリ管理部124は、シーケンスSeq1にてページングを実行した、論理メモリ空間のページ番号、物理メモリ空間のページ番号、およびページ数をライト/リード領域105cに設定し、CPUコア101b、101c、101dそれぞれに対しCPU間割り込みをかけて設定した内容を通知する。その後、メモリ管理部124は、各CPUコア101b、101c、101dそれぞれからの完了通知を待機する。[シーケンスSeq3]各CPUコア101b、101c、101dの処理部は、シーケンスSeq2にて通知された内容に含まれる、論理メモリ空間と物理メモリ空間のページングをページ数分行う。[シーケンスSeq4]各CPUコア101b、101c、101dの通知部は、各CPUコア101b、101c、101dの処理部の処理が完了すると、CPUコア101aへ完了通知を送る。メモリ管理部124がCPUコア101b、101c、101dから完了通知を受け取ると、メモリ空間獲得処理が終了する。次に、CPUコア101a~101dにおけるメモリ空間の解放時の処理を説明する。図12は、メモリ空間の解放時の処理を示すシーケンス図である。[シーケンスSeq11]メモリ管理部124は、論理メモリ空間のページ番号およびページ数を含むメモリ空間解放要求をCPUコア101b、101c、101dに通知する。具体的には、メモリ管理部124は、論理メモリ空間のページ番号、およびページ数をライト/リード領域105cに設定し、CPUコア101b、101c、101dそれぞれに対しCPU間割り込みをかけて設定した内容を通知する。その後、メモリ管理部124は、各CPUコア101b、101c、101dから完了通知を待機する。[シーケンスSeq12]CPUコア101b、101c、101dの処理部は、シーケンスSeq11にて通知された内容に含まれる、論理メモリ空間と物理メモリ空間のページングの解除をページ数分行う。[シーケンスSeq13]CPUコア101b、101c、101dの通知部は、ページングの解除が完了すると、CPUコア101aへ完了通知を送る。[シーケンスSeq14]メモリ管理部124は、CPUコア101b、101c、101dから完了通知を受け取ると、CPUコア101aの論理メモリ空間と物理メモリ空間のページングの解除をページ数分行う。メモリ管理部124がCPUコア101aのページングを解除すると、メモリ空間解放処理が終了する。ところで、図11、図12では、CPUコア101aメモリ空間の獲得、解放を説明したが、CPUコア101a以外のコアでもメモリ空間を獲得、解放することができる。次に、CPUコア101bにおけるメモリ空間獲得時の処理を説明する。CPUコア101bにおいてメモリ空間を獲得する際には、メモリ管理部124と同様の機能をCPUコア101bに実行させる。図13は、メモリ空間の獲得時の処理を示すシーケンス図である。[シーケンスSeq21]獲得するメモリ空間が指定された試験プログラム実行部11からのメモリ空間獲得要求を受け付けると、CPU101bは、メモリ空間獲得処理を行う。具体的には、CPU101bは、マスタコア101aにメモリ空間獲得要求を通知する。その後、CPU101bは、マスタコア101aからのメモリ空間獲得の完了通知を待機する。[シーケンスSeq22]メモリ管理部124は、RAM105を検索し、指定されたメモリ空間を獲得する。そして、メモリ管理部124は、CPUコア101aの論理メモリ空間と物理メモリ空間のページングを実行する。[シーケンスSeq23]メモリ管理部124は、CPUコア101b、101c、101dに対してページング処理を要求する。具体的には、メモリ管理部124はシーケンスSeq22にてページングを実行した、論理メモリ空間のページ番号、物理メモリ空間のページ番号、およびページ数をライト/リード領域105cに設定し、CPUコア101b、101c、101dそれぞれに対しCPU間割り込みをかけて設定した内容を通知する。その後、メモリ管理部124は、各CPUコア101b、101c、101dそれぞれからの完了通知を待機する。[シーケンスSeq24]各CPUコア101b、101c、101dの各処理部は、シーケンスSeq23にて通知された内容に含まれる、論理メモリ空間と物理メモリ空間のページングをページ数分行う。[シーケンスSeq25]各CPUコア101b、101c、101dの各通知部は、各CPUコア101b、101c、101dの各処理部の処理が完了すると、CPUコア101aへ完了通知を送る。[シーケンスSeq26]メモリ管理部124は、CPUコア101b、101c、101dから完了通知を受け取ると、獲得したメモリ空間の先頭論理アドレスをCPUコア101bに通知する。CPUコア101bが先頭論理アドレスを受け取ると、メモリ空間獲得処理が終了する。次に、CPUコア101cがメモリ解放要求を受け付けたときの処理を説明する。図14は、メモリ空間の解放時の処理を示すシーケンス図である。[シーケンスSeq31]CPU101cは、メモリ空間解放要求をCPUコア101aに通知する。[シーケンスSeq32]メモリ空間解放要求を受け取ったメモリ管理部124は、ページング解除要求をCPUコア101b、101c、101dに通知する。具体的には、メモリ管理部124は、論理メモリ空間のページ番号、およびページ数をライト/リード領域105cに設定し、CPUコア101b、101c、101dそれぞれに対しCPU間割り込みをかけて設定した内容を通知する。その後、メモリ管理部124は、各CPUコア101b、101c、101dから完了通知を待機する。[シーケンスSeq33]CPUコア101b、101c、101dの処理部は、シーケンスSeq31にて通知された内容に含まれる、論理メモリ空間と物理メモリ空間のページングの解除をページ数分行う。[シーケンスSeq34]CPUコア101b、101c、101dの通知部は、ページングの解除が完了すると、CPUコア101aへ完了通知を送る。[シーケンスSeq35]メモリ管理部124は、CPUコア101b、101c、101dから完了通知を受け取ると、CPUコア101aのページングを解除する。[シーケンスSeq36]メモリ管理部124は、CPUコア101b、101c、101dから完了通知を受け取ると、解放したメモリ空間の先頭論理アドレスをCPUコア101bに通知する。CPUコア101bが先頭論理アドレスを受け取ると、メモリ空間解放処理が終了する。以上述べたように、CPU101は、ライト/リード領域105cやI/O制御ブロック領域105dを動的にRAM105上に確保し、必要なデータ設定や初期化等を行う。このとき、ステップS22およびステップS25のページング処理により、CPUコア101a~101dの論理メモリ空間と物理メモリ空間の関係を同じページング状態にする。これにより、CPUコア101b、101c、101dは、I/Oアクセス試験において、全然違うメモリ番地にアクセスし、誤ったデータで処理を行ったり、ページフォルトが発生したりしてしまうことを抑制することができる。次に、図10のステップS26のI/Oアクセス試験処理を説明する。I/Oアクセス試験処理ではI/O装置へのアクセス処理に先立ちI/O装置のアクセス準備を行うopen処理とI/Oアクセス処理を行う。以下順に説明する。図15は、open処理を説明するフローチャートである。[ステップS51]判断部126は、open処理の処理元のCPUコアを判断する。具体的には、判断部126は、装置情報テーブル105bの装置名の欄を参照し、指定された装置/ファイル名が存在するか否かを判断する。指定された装置/ファイル名が見つからなければファイルに対するopen処理と判断し、open処理を実行するようI/Oドライバ13に指示する。判断部126は、指定された装置が装置情報テーブル105bの装置名の欄に存在した場合、一致した装置名の欄に関連づけられたコア番号の欄を参照する。コア番号が0であれば、判断部126は、open処理を実行するようI/Oドライバ13に指示する。コア番号が0以外であれば、判断部126は、コア番号に対応するCPUコアに対してopen処理要求を行うよう通信制御部123に指示する。このとき、通信制御部123は、装置名の情報をライト/リード領域105cに設定し、open処理を要求するCPUコアに通知する。なお、図15では、CPUコア101bにopen処理を通知した場合を示している。[ステップS52]open処理要求を受け取ったCPUコア101bのタスク管理部143は、現在何も処理を行っていない作業タスク15以下、空き作業タスクと言うを検索する。その後、ステップS53に遷移する。[ステップS53]タスク管理部143は、検索の結果見つかった空き作業タスクの処理部151にopen処理を実行させる。具体的には、処理部151は、ステップS51にて通知された装置名でopen処理を実行する。そして、通知部152は、open処理の復帰値ファイルディスクリプタ値をCPUコア101aへ通知する。このように、CPUコア101aからの作業依頼に対しては、割り込みの延長で処理を行うと他の作業依頼や現在動作中のI/O装置の割り込みが受け付けられなくなる可能性がある。このため、依頼処理は作業タスクに実行させることにより、各処理が並行して動作できるようにしている。[ステップS54]CPUコア101aは、CPUコア101a自身がopen処理を実行した場合は、復帰値を、open処理を要求した要求元に返す。CPUコア101a以外がopen処理を実行し、CPUコア101aが復帰値の通知を受け付けた場合は、復帰値が他のCPUコアの値と重なる可能性がある。このため、CPUコア101aは、復帰値の上位2ビットにコア番号を設定し、open処理を要求した要求元に復帰値を返す。なお、CPUコア101a、101b、101c、101dの復帰値の一例は以下の通りである。CPUコア101a:00b、CPUコア101b:01b、CPUコア101c:10b、CPUコア101d:11b。次に、I/Oアクセス処理を説明する。図16は、I/Oアクセス処理を説明するフローチャートである。[ステップS61]判断部126は、ステップS54にて受け取った復帰値の先頭2ビットを確認する。先頭2ビットの値が00bである場合は、判断部126は、試験プログラム11aに記述されたI/Oアクセス処理を実行するようI/Oドライバ13に指示する。判断部126は、指定された復帰値の先頭2ビットの値が00b以外である場合は、該当するCPUコアに対してI/Oアクセス処理の実行を依頼するよう通信制御部123に指示する。このとき、通信制御部123は、復帰値上位2ビットを00bにした値open処理で加工する前の値、ライト/リード領域アドレス、ライト/リードデータサイズ、ファンクション番号、データアドレスI/O制御処理の場合をライト/リード領域105cに設定し、処理要求先のCPUコアに通知する。[ステップS62]I/Oアクセス処理要求を受け取ったCPUコア101bのタスク管理部143は、現在何も処理を行っていない作業タスク空き作業タスクを検索する。その後、ステップS63に遷移する。[ステップS63]タスク管理部143は、検索の結果見つかった空き作業タスクの処理部151にI/Oアクセス処理を実行させる。具体的には、処理部151は、CPUコア101aから通知された情報で指定された関数writereadioctlclose等を実行する。そして、通知部152は、実行した関数の復帰値をCPUコア101aへ通知する。このように、CPUコア101aからの作業依頼に対しては、割り込みの延長で処理を行うと他の作業依頼や現在動作中のI/O装置の割り込みが受け付けられなくなる可能性がある。このため、依頼処理は作業タスクに実行させることにより、各処理が並行して動作できるようにしている。その後、ステップS64に遷移する。[ステップS64]CPUコア101aは、受け付けた復帰値を関数処理要求元に返す。その後、図16の処理を終了する。ところで、ステップS51の処理を実行した後からステップS54の処理を実行する前の処理では、CPU間の割り込み通知機能を使用し、マスタコア101aとCPUコア101bとの間のI/O処理依頼や処理完了通知を実施することで、マスタコア101aにおけるメモリ空間の管理や、CPUコア101bへのI/O処理要求等を実現している。以下、一例としてマスタコア101aからCPUコア101bへのI/O処理依頼および完了通知処理を説明する。図17は、マスタコアからサブコアへの処理依頼および完了通知処理を説明する図である。判断部126は、関数処理部126aと割り込み処理部126bとを有している。[ステップS71]関数処理部126aは、CPUコア101a~101dの初期化処理に失敗した状態か否かをチェックする。初期化処理に失敗した状態である場合、エラー情報を処理依頼元のタスクに返す。初期化処理に失敗した状態ではない場合、ステップS72に遷移する。[ステップS72]関数処理部126aは、処理関数の引数を参照し、処理依頼先のコア番号が異常か否かをチェックする。処理依頼先のコア番号が異常である場合、エラー情報を処理依頼元のタスクに返す。処理依頼先のコア番号が異常ではない場合、ステップS73に遷移する。[ステップS73]関数処理部126aは、処理依頼先のCPUコア101bが使用禁止状態か否かをチェックする。CPUコア101bが使用禁止状態である場合、エラー情報を処理依頼元のタスクに返す。CPUコア101bが使用禁止状態ではない場合、ステップS74に遷移する。[ステップS74]関数処理部126aは、CPUコア101bに依頼する処理種別コードが異常か否かをチェックする。処理種別コードが異常である場合、エラー情報を処理依頼元のタスクに返す。処理種別コードが異常ではない場合、ステップS75に遷移する。[ステップS75]関数処理部126aは、排他処理用のセマフォSemaphoreを獲得する。その後、ステップS76に遷移する。[ステップS76]関数処理部126aは、CPUコア101bに対するデータ処理を依頼する領域作業依頼領域の空きを検索し、空いている領域に処理依頼データを設定する。その後、ステップS77に遷移する。[ステップS77]関数処理部126aは、CPUコア101bが割り込み処理中かチェックする。割り込み処理中である場合、割り込み処理の終了を待機する。割り込み処理中でない場合、ステップS78に遷移する。[ステップS78]関数処理部126aは、CPUコア101bへ割り込みを通知する。その後、ステップS79に遷移する。割り込みの通知により、CPUコア101bの割り込み処理が動き出す。[ステップS79]関数処理部126aは、排他処理用のセマフォを解放する。その後、ステップS80に遷移する。[ステップS80]関数処理部126aは、CPUコア101bの処理完了用のセマフォ処理完了用セマフォの解放を待機する。後述するステップS92の処理により一定時間内に処理完了用セマフォが解放されると、ステップS81に遷移する。一定時間内に処理完了用セマフォが解放されなければ、処理依頼元のタスクにタイムアウトを通知する。その後、図17の関数処理部126aの処理を終了する。[ステップS81]マスタコア101aは、処理依頼先のCPUコア101bにおける関数の復帰値をチェックし、正常終了か異常終了の判断を行う。正常終了である場合ステップS81のYesステップS82に遷移する。正常終了ではない場合ステップS81のNoステップS84に遷移する。[ステップS82]関数処理部126aは、処理完了用セマフォを解放する。その後、ステップS83に遷移する。[ステップS83]関数処理部126aは、CPUコア101bにおける関数実行時の復帰値を処理依頼元のタスクに返す。その後、図17の関数処理部126aの処理を終了する。[ステップS84]関数処理部126aは、処理完了用セマフォを解放する。その後、ステップS85に遷移する。[ステップS85]関数処理部126aは、エラー情報を処理依頼元のタスクに返す。その後、図17の関数処理部126aの処理を終了する。次に、割り込み処理部126bの処理を説明する。[ステップS91]割り込み処理部126bは、後述するステップS119の処理によりCPUコア101bの作業タスク15から割り込み通知を受け取ると、関数処理部126aが処理完了用セマフォの解放待ち状態かチェックする。処理完了用セマフォの解放待ち状態であれば、ステップS92に遷移する。[ステップS92]割り込み処理部126bは、処理完了用セマフォを解放する。その後、図17の割り込み処理部126bの処理を終了する。次に、CPUコア101bのタスク管理部143の処理を説明する。図18は、サブコアの割り込み処理を説明するフローチャートである。[ステップS101]タスク管理部143は、割り込み処理開始コードステップS77にてマスタコア101aが割り込み処理中かチェックする際に、送信するコードを設定し、空き作業タスクを検索する。空き作業タスクが見つかればステップS102に遷移する。[ステップS102]タスク管理部143は、見つかった空き作業タスクへ実行させる関数を記載した作業依頼データを送信する。その後、ステップS103に遷移する。[ステップS103]タスク管理部143は、割り込み処理終了コードを設定する。割り込み処理終了コードを設定することにより、関数処理部126aは、CPUコア101bが割り込み処理中であることを認識することができる。また、割り込み処理終了コードを設定することにより、作業タスク15が処理を開始する。次に、作業タスク15の処理を説明する。[ステップS111]処理部151は、作業依頼データを受信したか否かを判断する。作業依頼データを受信していない場合ステップS111のNo、作業依頼データの受信を待機する。作業依頼データを受信するとステップS111のYes、ステップS112に遷移する。[ステップS112]処理部151は、作業指示受付ステータスをセットする。その後、ステップS113に遷移する。[ステップS113]処理部151は、作業依頼データに記載された関数を実行する。関数を実行した結果エラーが発生すれば、所定の領域に設定されたエラー情報設定フラグを立てる。その後、ステップS114に遷移する。[ステップS114]処理部151は、排他処理用のセマフォを獲得する。その後、ステップS115に遷移する。[ステップS115]処理部151は、エラー情報設定フラグを参照し、フラグが立っているか否かを判断する。フラグが立っていた場合ステップS115のYes、ステップS116に遷移する。フラグが立っていなかった場合ステップS115のNo、ステップS117に遷移する。[ステップS116]処理部151は、エラー情報をマスタコア101aに送信する情報に設定する。その後、ステップS117に遷移する。[ステップS117]処理部151は、マスタコア101aが割り込み処理中か否かをチェックする。その後、ステップS118に遷移する。[ステップS118]処理部151は、割り込みを禁止する。その後、ステップS119に遷移する。[ステップS119]処理部151は、マスタコア101aへ割り込みを通知する。その後、ステップS120に遷移する。[ステップS120]処理部151は、ステップS118にて設定した割り込みの禁止を解除する。その後、ステップS121に遷移する。[ステップS121]処理部151は、ステップS114にて獲得したセマフォを解放する。以上で、図18の処理部151の処理を終了する。なお、図17および図18では、マスタコア101aからCPUコア101bへの処理依頼および完了通知処理を説明したが、CPUコア101bからマスタコア101aへの処理依頼および完了通知処理も、図17および図18に示した方法と同様の方法を用いて実現することができる。I/Oアクセス試験では、装置情報テーブル105bを用いて試験対象のI/O装置に対応するCPUコアを特定し、特定したCPUコアにI/Oアクセス試験を実行させるようにした。従って、例えばシステム管理者がどのCPUコアでどの装置が認識されているのかを判断しなくてもI/Oアクセス試験を行うことができる。以上、本発明のI/O制御装置およびI/O制御方法を、図示の実施の形態に基づいて説明したが、本発明はこれに限定されるものではなく、各部の構成は、同様の機能を有する任意の構成のものに置換することができる。また、本発明に、他の任意の構成物や工程が付加されていてもよい。また、本発明は、前述した各実施の形態のうちの、任意の2以上の構成特徴を組み合わせたものであってもよい。なお、上記の処理機能は、コンピュータによって実現することができる。その場合、I/O制御装置1または制御モジュール10a、10bが有する機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリ等が挙げられる。磁気記憶装置には、ハードディスクドライブ、フレキシブルディスクFD、磁気テープ等が挙げられる。光ディスクには、DVD、DVD-RAM、CD-ROM/RW等が挙げられる。光磁気記録媒体には、MOMagnetoOpticaldisk等が挙げられる。プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CD-ROM等の可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。また、上記の処理機能の少なくとも一部を、DSPDigitalSignalProcessor、ASICApplicationSpecificIntegratedCircuit、PLDProgrammableLogicDevice等の電子回路で実現することもできる。以上の第1~第2の実施の形態に関し、さらに以下の付記を開示する。付記1I/O制御装置において、マルチコアプロセッサと、前記マルチコアプロセッサのうち、I/O装置の初期化を行った第1のコアプロセッサの識別情報を記憶する記憶手段と、を備え、前記第1のコアプロセッサと異なる第2のコアプロセッサが前記I/O装置についてのI/O要求を受けると、該第2のコアプロセッサは、前記記憶手段を参照して特定される、前記第1のコアプロセッサに対して、前記I/O要求の処理を依頼する、ことを特徴とするI/O制御装置。付記2前記第1のコアプロセッサは、前記I/O装置と該I/O装置の初期化を行うコアプロセッサとが関連づけられた設定情報を用いて初期化するI/O装置を特定し、特定した前記I/O装置の初期化を行うことを特徴とする付記1記載のI/O制御装置。付記3前記I/O要求の処理が依頼された前記第1のコアプロセッサの処理の完了通知を受け取った前記第2のコアプロセッサは、処理を実行した前記第1のコアプロセッサを識別する処理識別情報を前記I/O要求の要求元に返し、前記第2のコアプロセッサは、前記処理識別情報を付加した第2のI/O要求を前記I/Oの要求元から受けると、前記第2のI/O要求に付加された前記処理識別情報を用いて特定される前記第1のコアプロセッサに対して、前記第2のI/O要求の処理を依頼することを特徴とする付記1記載のI/O制御装置。付記4前記第1のコアプロセッサは、複数の作業タスクを備え、前記第2のコアプロセッサは、前記第1のコアプロセッサに対し、プロセッサ間の割り込みにより前記I/O要求に対する処理を依頼し、前記第1のコアプロセッサは、前記I/O要求に対する処理の依頼を受け付けると、処理が行われていない作業タスクに前記I/O要求に対する処理を実行させることを特徴とする付記3記載のI/O制御装置。付記5メモリ装置をさらに有し、前記第2のコアプロセッサは、前記第2のコアプロセッサがI/O装置の初期化を行ったときに確保した前記メモリ装置の論理メモリ空間と物理メモリ空間との関係を前記第1のコアプロセッサに通知し、前記第1のコアプロセッサは、前記第2のコアプロセッサから前記I/O要求の処理を依頼されたときに、前記第2のコアプロセッサから通知された前記論理メモリ空間と物理メモリ空間との関係を用いて、前記メモリ装置に確保された論理メモリ空間を使用して前記I/O要求の処理を実行することを特徴とする請求項1記載のI/O制御装置。付記6マルチコアプロセッサのうち、I/O装置の初期化を行った第1のコアプロセッサと異なる第2のコアプロセッサがI/O装置についてのI/O要求を受けると、該第2のコアプロセッサは、I/O装置の初期化を行った第1のコアプロセッサの識別情報を記憶する記憶手段を参照して前記第1のコアプロセッサを特定し、特定した前記第1のコアプロセッサに対して、前記I/O要求の処理を依頼する、ことを特徴とするI/O制御方法。"