JP5590114B2 - ソフトウェア制御装置、ソフトウェア制御方法、およびソフトウェア制御プログラム - Google Patents

ソフトウェア制御装置、ソフトウェア制御方法、およびソフトウェア制御プログラム Download PDF

Info

Publication number
JP5590114B2
JP5590114B2 JP2012504241A JP2012504241A JP5590114B2 JP 5590114 B2 JP5590114 B2 JP 5590114B2 JP 2012504241 A JP2012504241 A JP 2012504241A JP 2012504241 A JP2012504241 A JP 2012504241A JP 5590114 B2 JP5590114 B2 JP 5590114B2
Authority
JP
Japan
Prior art keywords
software
control
cpu
shared resource
running
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.)
Expired - Fee Related
Application number
JP2012504241A
Other languages
English (en)
Other versions
JPWO2011111215A1 (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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPWO2011111215A1 publication Critical patent/JPWO2011111215A1/ja
Application granted granted Critical
Publication of JP5590114B2 publication Critical patent/JP5590114B2/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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/485Resource constraint

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Computer And Data Communications (AREA)
  • Multi Processors (AREA)

Description

本発明は、ソフトウェアを制御するソフトウェア制御装置、ソフトウェア制御方法、およびソフトウェア制御プログラムに関する。
従来から、ソフトウェアを高速に起動する技術が開発されてきた。ソフトウェアの起動中は、ユーザの操作を受け付けることができないため、ユーザがフラストレーションを募らせる原因となる。ソフトウェアを高速に起動する技術として、たとえば、CPU(Central Processing Unit)の割り当てルールを格納するテーブルを持ち、特定のCPUまたはCPUグループに対して優先的に処理を行わせるという技術が開示されている(たとえば、下記特許文献1を参照。)。
また、各CPUに命令を送る技術として、キャッシュコヒーレンス要求を各CPUへブロードキャスト送信するという技術が開示されている(たとえば、下記特許文献2を参照。)。また、優先度の高い新規ソフトウェアを起動する場合、特許文献1の技術以外に、再キューイング、スワップ・退避、マイグレートという3つの技術が開示されている。
再キューイングとは、新規ソフトウェアの優先度が高い場合、ソフトウェアの割り当てを管理するOS(operating system)などが、動作していたソフトウェアをソフトウェアの実行キューに戻す技術である。CPU資源に空きができた状態で、OSが実行キューに戻したソフトウェアを再び実行する。
スワップ・退避とは、新規ソフトウェアの優先度が高い場合、OSが動作していたソフトウェアをストレージに退避する技術である。退避する内容としては、ソフトウェアが確保していたメモリコンテキスト情報、レジスタ情報など、ソフトウェアの動作に必要なあらゆる情報を退避する。再キューイングと同様に、CPU資源に空きができた状態で、OSが退避させていたソフトウェアを再び実行する。
マイグレートとは、新規ソフトウェアが投入されることにより、CPU全体の負荷バランスが変わるため、各CPUのスケジューラによってCPUに割り当てられているソフトウェアの再配置を行う技術である。
特開2007−316710号公報 特開2005−141606号公報
しかしながら、上述した従来技術において、特許文献1に特許文献2の技術を組み合わせ、特定のCPUの処理を優先的に行うように他のCPUにブロードキャスト送信したとしても、制御する必要のないソフトウェアまで制御を受けてしまうという問題があった。具体的には、新規ソフトウェアの実行優先度を高くさせるため、新規ソフトウェアと実行中のソフトウェアの相関性がなく制御する必要のないソフトウェアも、相対的に実行優先度が低くなってしまうという問題があった。また、再キューイング、スワップ・退避、マイグレートは、処理が重く、組み込み環境等のCPUの処理能力が高くない環境では不適当であるという問題があった。
本発明は、上述した従来技術による問題点を解消するため、必要なソフトウェアの起動時間を短縮できるソフトウェア制御装置、ソフトウェア制御方法、およびソフトウェア制御プログラムを提供することを目的とする。
上述した課題を解決し、目的を達成するため、開示のソフトウェア制御装置は、起動中のソフトウェアと実行中のソフトウェアとが同一の共用リソースにアクセス中であるか否かを判断し、アクセス中であると判断された場合、実行中のソフトウェアを一時停止するように制御することを要件とする。
本ソフトウェア制御装置、ソフトウェア制御方法、およびソフトウェア制御プログラムによれば、起動中のソフトウェアが共用リソースにアクセスする割合を相対的に増やし、ソフトウェアの起動時間を短縮できるという効果を奏する。
実施の形態にかかるソフトウェア制御装置のハードウェア構成を示すブロック図である。 ソフトウェア制御装置100のハードウェア構成の一部とソフトウェア構成を示すブロック図である。 ソフトウェア制御装置100の機能的構成を示すブロック図である。 共用リソースデータベース202の記憶内容の一例を示す説明図である。 競合特性テーブル301の記憶内容の一例を示す説明図である。 起動応答時間テーブル302の記憶内容の一例を示す説明図である。 ソフトウェア起動時の制御の様子を示す説明図(その1)である。 ソフトウェア起動時の制御の様子を示す説明図(その2)である。 共用リソースデータベース202の生成処理のフローチャートである。 ソフトウェア制御処理のフローチャート(その1)である。 ソフトウェア制御処理のフローチャート(その2)である。
以下に添付図面を参照して、本発明にかかるソフトウェア制御装置、ソフトウェア制御方法、およびソフトウェア制御プログラムの好適な実施の形態を詳細に説明する。
(ソフトウェア制御装置のハードウェア構成)
図1は、実施の形態にかかるソフトウェア制御装置のハードウェア構成を示すブロック図である。図1において、ソフトウェア制御装置100は、CPUを複数搭載するCPUs101と、ROM(Read‐Only Memory)102と、RAM(Random Access Memory)103と、を備えている。また、ソフトウェア制御装置100は、フラッシュROM104と、フラッシュROMコントローラ105と、フラッシュROM106と、を備えている。また、ソフトウェア制御装置100は、ユーザやその他の機器との入出力装置として、ディスプレイ107と、I/F(Interface)108と、キーボード109と、を備えている。また、各構成部はバス110によってそれぞれ接続されている。
ここで、CPUs101は、ソフトウェア制御装置100の全体の制御を司る。CPUs101は、シングルコアのプロセッサを並列して接続したすべてのCPUを指している。CPUs101の詳細は、図2にて後述する。前述のように、本実施の形態にかかるハードウェア構成は、複数のコアを搭載するマルチコアプロセッサシステムである。
マルチコアプロセッサシステムとは、コアが複数搭載されたプロセッサを含むコンピュータのシステムである。コアが複数搭載されていれば、複数のコアが搭載された単一のプロセッサでもよく、シングルコアのプロセッサが並列されているプロセッサ群でもよい。なお、本実施の形態では、説明を単純化するため、シングルコアのプロセッサであるCPUが並列されているプロセッサ群を例にあげて説明する。また、本実施の形態ではマルチコアプロセッサシステムにて説明を行うが、複数のソフトウェアが平行して実行されるマルチプログラミングの機能を持つシングルコアプロセッサであってもよい。
ROM102は、ブートプログラムなどのプログラムを記憶している。RAM103は、CPUs101のワークエリアとして使用される。フラッシュROM104は、OSなどのシステムソフトウェアやアプリケーションソフトウェアなどを記憶している。たとえば、OSを更新する場合、ソフトウェア制御装置100は、I/F108によって新しいOSを受信し、フラッシュROM104に格納されている古いOSを受信した新しいOSに更新する。
フラッシュROMコントローラ105は、CPUs101の制御に従ってフラッシュROM106に対するデータのリード/ライトを制御する。フラッシュROM106は、フラッシュROMコントローラ105の制御で書き込まれたデータを記憶する。データの具体例としては、ソフトウェア制御装置100のユーザがI/F108を通して取得した画像データ、映像データなどである。フラッシュROM106は、たとえば、メモリカード、SDカードなどを採用することができる。
ディスプレイ107は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ107は、たとえば、TFT液晶ディスプレイなどを採用することができる。
I/F108は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワーク111に接続され、ネットワーク111を介して他の装置に接続される。そして、I/F108は、ネットワーク111と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F108には、たとえばモデムやLANアダプタなどを採用することができる。
キーボード109は、数字、各種指示などの入力のためのキーを備え、データの入力を行う。また、キーボード109は、タッチパネル式の入力パッドやテンキーなどであってもよい。
図2は、ソフトウェア制御装置100のハードウェア構成の一部とソフトウェア構成を示すブロック図である。図2では、後述するソフトウェア構成を説明するために必要なハードウェア構成として、CPUs101とメモリ201を図示している。本実施の形態にかかるCPUs101は、複数のCPUとしてCPU#0、CPU#1、CPU#2、CPU#3で構成される。CPUs101は1つのCPUで構成してもよいし、2つ以上のCPUで構成してもよい。各CPUとメモリ201はバス110によってそれぞれ接続されている。メモリ201は、CPUs101から直接アクセスするアクセス速度が高速な主記憶装置であり、ROM102とRAM103とフラッシュROM104に相当する。
各CPUは、前述のハードウェア構成により、共用リソースデータベース202を参照し、後述するソフトウェアA〜ソフトウェアGを実行する。共用リソースデータベース202は、ソフトウェアがアクセスする共用リソースの使用情報を記述する。共用リソースとは、ソフトウェアがアクセスするデバイスや、メモリ201である。共用リソースデータベース202の詳細は、図4にて後述する。
デバイスとはフラッシュROM106などのアクセス速度が低速な補助記憶装置である。また、図1には図示していないが、その他の記憶装置があればそれらの記憶装置もデバイスに含める。また、I/F108によってスキャナ、印刷機などの入出力機能を有する装置が存在する場合も、デバイスに含める。ソフトウェア制御装置100は、I/F108に接続された装置に搭載されたRAMなどにアクセスする。
各CPUは、OSの機能であるスケジューラを実行することで、複数のソフトウェアを順次実行する。具体的には、CPU#0は、スケジューラ#0によってソフトウェアFを実行している。同様に、CPU#1は、スケジューラ#1によってソフトウェアBを実行している。CPU#2は、スケジューラ#2によってソフトウェアCとソフトウェアGを実行している。CPU#3は、スケジューラ#3によってソフトウェアDとソフトウェアEを実行している。
この状態で、新規にソフトウェアAを実行する場合、CPU#0は、ソフトウェアAの起動を開始するとともに、CPU#0〜CPU#3に対してソフトウェアAが起動された旨を示すメッセージをブロードキャスト送信する。
(ソフトウェア制御装置100の機能的構成)
次に、ソフトウェア制御装置100の機能的構成について説明する。図3は、ソフトウェア制御装置100の機能的構成を示すブロック図である。ソフトウェア制御装置100は、制御指示部303と、検出部304と、解除指示部305と、判断部306と、制御部307と、解除部308と、抽出部309と、算出部310と、検出部311と、を含む構成である。この制御部となる機能(制御指示部303〜検出部311)は、具体的には、たとえば、図1に示したROM102、RAM103、フラッシュROM104などの記憶装置に記憶されたプログラムをCPUs101が実行することにより、その機能を実現する。または、I/F108を経由して他のCPUが実行することにより、その機能を実現してもよい。
また、ソフトウェア制御装置100は、共用リソースデータベース202、競合特性テーブル301、起動応答時間テーブル302にアクセス可能である。共用リソースデータベース202は、共用リソースの使用状況を格納する。共用リソースとは、前述したようにメモリ201やデバイスのことである。共用リソースデータベース202の詳細は、図4にて後述する。
また、共用リソースデータベース202、競合特性テーブル301、起動応答時間テーブル302は、メモリ201内に図示されているが、メモリ201に格納されていてもよい。または、メモリ201以外の記憶装置として、たとえば、フラッシュROM106に格納されており、ソフトウェア制御装置100は、必要となった情報のみをメモリ201に転送してもよい。
競合特性テーブル301は、任意のソフトウェアどうしの競合状態における性能劣化を示す係数である競合特性σを格納するテーブルである。競合特性テーブル301の詳細は、図5にて後述する。起動応答時間テーブル302は、各ソフトウェアにおける仕様上のワーストケースの起動時間を格納するテーブルである。起動応答時間テーブル302の詳細は、図6にて後述する。
また、図3に示す制御指示部303〜解除指示部305は、マスタカーネルとなるCPU#0にて実行される。同様に、判断部306〜検出部311は、スレーブカーネルとなるCPU#1〜CPU#3で実行されるほか、CPU#0でも実行される。したがって、CPU#0は制御指示部303〜検出部311の機能を含む。
制御指示部303は、実行中のソフトウェアを一時停止するようにスレーブカーネルへデバイス抑止制御要求を送信することで制御指示をする機能を有する。また、制御指示部303は、実行中のソフトウェアの実行優先度を低下させるように実行優先度低下制御要求を送信することで制御指示してもよい。また、制御指示部303は、検出部304によって起動中のソフトウェアが起動を完了していないことが検出され、起動中のソフトウェアがアクセス中の共用リソースが特定の共用リソースであった場合に、実行優先度低下の制御指示をしてもよい。ここでの特定の共用リソースは、メモリ201を示す。また、デバイス抑止制御要求と実行優先度低下制御要求には、起動中のソフトウェアがアクセスする共用リソースの識別情報が含まれる。
具体的には、たとえば、ソフトウェア制御装置100が、制御指示部303によって、実行中のソフトウェアを一時停止するようスレーブカーネルに制御指示を通知する。なお、通知されたデータは、RAM103、フラッシュROM104などの記憶領域に記憶されてもよい。
検出部304は、起動中のソフトウェアが、起動開始から所定の起動時間を経過しても起動を完了していないことを検出する機能を有する。ここでの所定の起動時間とは、起動応答時間テーブル302に格納されている仕様の起動時間Tとなる。具体的には、たとえば、ソフトウェア制御装置100は、起動中のソフトウェアの仕様の起動時間Tが1[秒]であって、起動開始から1[秒]たっても起動を完了していないソフトウェアを検出する。なお、検出したソフトウェアの情報は、制御指示部303へ送信されるほか、RAM103、フラッシュROM104などの記憶領域に記憶されてもよい。
解除指示部305は、起動中のソフトウェアが起動完了した後に、制御指示部303によって制御指示された実行中のソフトウェアに対して制御解除要求を送信することで解除指示する機能を有する。具体的には、たとえば、ソフトウェア制御装置100は、解除指示部305によって、一時停止した実行中のソフトウェアの停止を解除する制御解除要求を送信する。なお、送信した制御解除要求は、解除部308に送信されるほか、RAM103、フラッシュROM104などの記憶領域に記憶されてもよい。
判断部306は、制御指示部303によって通知された起動中のソフトウェアの識別情報を用いて、起動中のソフトウェアと実行中のソフトウェアとが同一の共用リソースにアクセス中であるか否かを判断する機能を有する。
具体的には、たとえば、ソフトウェア制御装置100は、制御指示部303によって起動中のソフトウェアによってアクセスされるフラッシュROM106の識別情報を送信した場合を想定する。この時、実行中のソフトウェアもフラッシュROM106にアクセスしている場合、ソフトウェア制御装置100は、判断部306によって、同一の共用リソースにアクセス中であると判断する。なお、判断結果は、制御部307へ送信されるほか、RAM103、フラッシュROM104などの記憶領域に記憶されてもよい。
制御部307は、制御指示部303からデバイス抑止制御要求を受信し、判断部306によってアクセス中であると判断された場合、実行中のソフトウェアを一時停止するように制御する機能を有する。また、制御部307は、制御指示部303から実行優先度低下制御要求を受信した場合には、実行中のソフトウェアの実行優先度を低下させるよう制御してもよい。また、制御部307は、実行優先度低下制御要求を受信し、検出部311によって起動中のソフトウェアの起動予測時間が所定の起動時間を超えたことが検出された場合に、実行中のソフトウェアの実行優先度を低下させるように制御してもよい。
具体的には、たとえば、ソフトウェア制御装置100は、制御指示部303からデバイス抑止制御要求を受信し、判断部306によってアクセス中であると判断された場合に、実行中のソフトウェアを一時停止するように制御する。なお、一時停止したソフトウェア、または、実行優先度を低下させたソフトウェアの情報は、RAM103、フラッシュROM104などの記憶領域に記憶される。
解除部308は、起動中のソフトウェアが起動完了したことを示す解除指示部305からの制御解除要求を受信した後に、制御部307によって制御された実行中のソフトウェアの制御を解除する機能を有する。具体的には、たとえば、ソフトウェア制御装置100は、解除指示部305からの制御解除要求を受信し、一時停止したソフトウェア、または、実行優先度を低下させたソフトウェアの情報に基づいて、制御を解除する。なお、解除したソフトウェアの情報は、RAM103、フラッシュROM104などの記憶領域に記憶されてもよい。
抽出部309は、起動中のソフトウェアの非競合状態における起動時間と起動中のソフトウェアと実行中のソフトウェアとの競合状態における性能劣化を示す係数を抽出する機能を有する。起動中のソフトウェアの非競合状態における起動時間に関しては、任意のソフトウェアの非競合状態における起動時間を含めて記憶している共用リソースデータベース202に格納されている。任意のソフトウェアどうしの競合状態における性能劣化を示す係数に関しては、競合特性テーブル301に格納されている。
具体的には、たとえば、ソフトウェア制御装置100は、起動中のソフトウェアAについて、共用リソースデータベース202から、非競合状態における起動時間tを抽出する。続けて、ソフトウェア制御装置100は、起動中のソフトウェアAとスレーブカーネル上にて実行中のソフトウェアとの競合状態における性能劣化を示す競合特性σを、競合特性テーブル301から抽出する。なお、抽出されたデータは、RAM103、フラッシュROM104などの記憶領域に記憶される。
算出部310は、抽出部309によって抽出された起動時間と抽出部309によって抽出された係数に基づいて、起動中のソフトウェアの競合状態における起動予測時間を算出する機能を有する。抽出された起動時間とは、非競合状態における起動時間tであり、抽出された係数とは起動中のソフトウェアと実行中のソフトウェアとの競合状態における性能劣化を示す競合特性σである。
具体的には、たとえば、起動時間が10[ミリ秒]で、抽出された係数が120であった場合、ソフトウェア制御装置100は、起動中のソフトウェアの競合状態における起動予測時間を、起動時間×係数=10×120=1.2[秒]と算出する。なお算出されたデータは、RAM103、フラッシュROM104などの記憶領域に記憶される。
検出部311は、起動中のソフトウェアが、算出部310によって算出された競合状態における起動予測時間が所定の起動時間を超えることを検出する機能を有する。所定の起動時間とは、起動応答時間テーブル302に格納されている仕様の起動時間Tとなる。また、検出部311は、検出部304によって起動を完了していないことが検出され、制御指示部303から制御部307に処理が移行してきた際に実行される。
具体的には、たとえば、ソフトウェア制御装置100は、算出部310によって起動中のソフトウェアの競合状態における起動予測時間σtが1.2[秒]で、仕様の起動時間Tが1[秒]であった場合、T<σtとなり、制御部307に検出結果を通知する。なお、検出された結果は、RAM103、フラッシュROM104などの記憶領域に記憶される。
前述したように、各機能部はマスタカーネルとスレーブカーネルにて分担されており、おもに起動中のソフトウェアについて処理を行うのがマスタカーネル、実行中のソフトウェアについて処理を行うのがスレーブカーネルとなっている。ここで、ソフトウェア制御装置100は、スレーブカーネルにて、起動中のソフトウェアの情報を取得し、すべての機能をスレーブカーネルで行ってもよい。
図4は、共用リソースデータベース202の記憶内容の一例を示す説明図である。符号401に示す図は、共用リソースデータベース202の記憶内容の一例であり、符号402で示す図は、共用リソースデータベース202の記憶内容をブロック化して表したブロック図である。符号403で示す領域では、ソフトウェアの名称と、実行優先度、初期化するデバイス名が記述されている。符号404で示す領域では、各スレッドの情報が記述されている。符号405で示す領域では、メインスレッドの情報が記述されており、符号406で示す領域では、サブスレッドであるFuncAスレッドの情報が記述されている。
次に、符号405にて示す領域に存在する各プロパティについて説明する。Tagプロパティは、対象となるスレッドの名称を示している。Context_allocateプロパティは、対象となるスレッドによってメモリ201から確保されたメモリコンテキストである。確保されたメモリコンテキストは、たとえば、スレッド実行に必要なスタック領域として使用される。スタック領域には、関数の呼び出し情報や、関数のローカル変数の値などが格納される。
IOprofile_write_accessプロパティとIOprofile_read_accessプロパティは、対象となるスレッドがメモリ201にアクセスするサイズを示している。IOprofile_write_accessプロパティは対象となるスレッドが書き込みを行ったサイズ、IOprofile_read_accessプロパティは対象となるスレッドが読み込みを行うサイズを示している。
elapse_timeプロパティは、対象となるスレッドが起動開始時点からContext_allocateプロパティで示したメモリコンテキストの確保時刻を示している。elapse_timeプロパティで示した値が、非競合状態における起動時間tとなる。Sys_resourceプロパティは、対象となるスレッドが呼び出したシステムコールを示している。
符号402で示すブロック図は、共用リソースデータベース202の記憶内容をブロック化して表したブロック図である。ソフトウェアAは、デバイスAとデバイスBにアクセスし、メモリ201に対して128[キロバイト]のメモリコンテキスト407を確保し、1024[キロバイト]の書き出しと、512[キロバイト]の読み込みを行う。ソフトウェアA子スレッドは、メモリ201に対して256[キロバイト]のメモリコンテキスト408を確保し、128[キロバイト]の書き出しと、128[キロバイト]の読み込みを行う。
デバイスA、デバイスBの具体例としては、フラッシュROM106である。また、図1には図示していないが、I/F108によって外部記憶装置に接続している場合は、その装置も含まれる。また、記憶装置以外にも、たとえば、ソフトウェア制御装置100が印刷装置に接続されており、あるスレッドが印刷を行う場合、印刷装置内部にあるRAMに書き込む結果となるため、記憶装置に含める。
図5は、競合特性テーブル301の記憶内容の一例を示す説明図である。競合特性テーブル301は、ソフトウェアどうしの競合状態における性能劣化を示す係数である競合特性σを記憶する。競合特性テーブル301の競合特性σは、符号501で示す実行中のソフトウェアに対して、符号502で示すソフトウェアが起動した場合の性能劣化の数値を示している。
競合特性σは、非競合状態における処理時間を1とした時の、競合状態における処理時間となり、値が大きいほどより性能劣化することを示している。競合特性σは、ソフトウェア制御装置100をシミュレートできる装置にて、ソフトウェアごとに繰り返し実行することで求められる。また、ソフトウェア制御装置100にて競合特性σを求められる環境があれば、ソフトウェア制御装置100にて競合特性を求めてもよい。
具体的には、たとえば、ソフトウェアAをWebブラウザ、ソフトウェアBをメールソフトウェア、ソフトウェアDを電話帳呼び出しであると想定する。ここで、ソフトウェア制御装置100が、ソフトウェアAを実行中にソフトウェアBを起動した場合の競合特性σは、図6で示すように“120”となる。同様に、ソフトウェア制御装置100が、ソフトウェアAを実行中にソフトウェアDを起動した場合の競合特性σは、“1.1”となる。
前述のように競合特性σが大きく異なる理由として、Webブラウザとメールソフトウェアは、I/F108を通して、たとえば、同一のNIC(Network Interface Card)にアクセスしネットワーク111から情報を取得する。結果、両ソフトウェアは、同一のデバイスにアクセスすることになり、競合を起こしやすい。さらに両ソフトウェアは、取得されたデータをTCP/IP(Transmission Control Protocol/Internet Protocol)に従って処理をする。したがって、両ソフトウェアは、TCP/IPを処理するシステムリソースを使用することになり、競合を起こしやすい。
それに対しWebブラウザと電話帳呼び出しは、競合を起こす可能性として、メモリ201へのアクセスのみであり、競合を起こしにくい。以上より、ソフトウェアどうしが使用する共用リソースによって競合特性σは大きく異なることになる。
また、ソフトウェアAのように、ソフトウェアの同時起動を仕様上許す場合、シミュレーション装置は、図5で示すように競合特性σを計測する。同様に、ソフトウェアB、ソフトウェアDのように、ソフトウェアの同時起動を仕様上許さないのであれば、シミュレーション装置は、特に計測しなくてもよい。
また、計測した結果、ほとんどのソフトウェアどうしの競合特性σが等しい値になる場合、ソフトウェア制御装置100は、その項目を用意してもよい。たとえば、符号503、符号504で示す“デフォルト”を用意する。そして、ソフトウェア制御装置100が、ソフトウェアAを実行中に、符号502で示す列に記載のないソフトウェアを起動した場合を想定する。この場合の競合特性σは、符号504で示す“デフォルト”列から、符号505で示すセルを参照し、“1.1”となる。
図6は、起動応答時間テーブル302の記憶内容の一例を示す説明図である。起動応答時間テーブル302は、ソフトウェア名称と、仕様の起動時間Tという2つのフィールドで構成される。ソフトウェア名称フィールドは、対象となるソフトウェアの名称を格納する。仕様の起動時間Tフィールドは、各ソフトウェアにおける仕様上のワーストケースの起動時間を格納する。
具体的には、図6にて示すようにソフトウェアAの起動時間が3秒、ソフトウェアDの起動時間が0.5秒といったように設定をする。すべてのソフトウェアについて設定を行ってもよいが、ほとんどのソフトウェアの起動時間が等しいのであれば、その項目を用意してもよい。具体的な設定方法としては、ソフトウェア制御装置100は、符号601で示す“デフォルト”行を用意し、起動時間の設定がされていないすべてのソフトウェアの起動時間とする。
設定方法として、たとえば、ソフトウェアAがWebブラウザである場合を想定すると、Webブラウザは一般的にプログラム量が多いソフトウェアであり、起動開始を行う頻度が少ないため、デフォルトの値である1秒より長い3秒に設定する。同様に、ソフトウェアDが電話帳呼び出しである場合を想定すると、電話帳呼び出しは頻繁に呼び出され、ユーザが待たされる時間を短くしたいため、デフォルトの値である1秒より短い0.5秒に設定する。
図7−1、図7−2は、ソフトウェア起動時の制御の様子を示す説明図である。図7−1での符号701で示した状態は、ソフトウェア制御装置100が、新規に起動するソフトウェアとしてソフトウェアAを起動する直前の状態である。ソフトウェア制御装置100は、メッセージ707にて、各CPUの負荷情報を集約し、最適なCPUへの負荷分散割り当てを行う。本実施の形態にかかるソフトウェア制御装置100は、ソフトウェアAのメインスレッドをCPU#0に割り当て、ソフトウェアAから起動される子スレッドをCPU#1に割り当てることとする。
次に、図7−1での符号702で示した状態は、ソフトウェア制御装置100が、ソフトウェアAのメインスレッドをCPU#0に割り当てた状態である。割り当て後、ソフトウェア制御装置100は、ソフトウェアAがデバイスAとデバイスBにアクセスするため、デバイスAとデバイスBにアクセスする旨のメッセージ708をCPU#0〜CPU#3へブロードキャスト送信する。
CPU#0〜CPU#3はメッセージ708を受信する。CPU#0とCPU#1は、デバイスAとデバイスBにアクセスしているソフトウェアが存在しないため、特に処理を行わない。CPU#2は、アクセス経路709で示した通り、ソフトウェアCによってデバイスAにアクセスしているため、ソフトウェアCの実行を一時停止する。CPU#3も同様に、アクセス経路710で示した通り、ソフトウェアDによってデバイスBにアクセスしているため、ソフトウェアDの実行を一時停止する。
図7−1での符号703で示した状態は、ソフトウェア制御装置100が、デバイスにアクセスするソフトウェアの一時停止を行った状態である。続けて、ソフトウェア制御装置100は、ソフトウェアAがシステムリソースまたはライブラリリソースにアクセスするため、前述したリソースにアクセスする旨のメッセージ711をCPU#0〜CPU#3へブロードキャスト送信する。
CPU#0〜CPU#3はメッセージ711を受信する。CPU#0は、アクセス経路712で示した通り、ソフトウェアFによってシステムリソースにアクセスしているため、ソフトウェアFの実行優先度を低下させる。CPU#1とCPU#2は、システムリソースまたはライブラリリソースにアクセスしているソフトウェアが存在しないため、特に処理を行わない。CPU#3は、アクセス経路713で示した通り、ソフトウェアEによってシステムリソースにアクセスしているため、ソフトウェアEの実行優先度を低下させる。
なお、デバイスが競合せず、システムリソースが競合する具体例として、たとえば、ソフトウェアAがWebブラウザで、ソフトウェアEがブックマーク編集ソフトウェアである場合を想定する。また、ブックマークのファイル形式がxml(Extensible Markup Language)形式であることを想定する。
このとき、ソフトウェアEはネットワーク111を使用しないため、デバイスの競合は発生しない。しかし、ソフトウェアEはブックマークを読み取るためにxmlをパースする必要があり、xmlパースを行えるシステムリソースにアクセスする。同様にソフトウェアAも、xml形式のWebページを読み込むことがありえるため、xmlパースを行えるシステムリソースにアクセスする。結果、ソフトウェアAとソフトウェアEは、デバイスでは競合しないが、システムリソースにて競合を起こす。
図7−2での符号704で示した状態は、ソフトウェア制御装置100が、システムリソースまたはライブラリリソースにアクセスするソフトウェアの実行優先度を低下させた状態である。続けて、ソフトウェア制御装置100は、ソフトウェアAがメモリ201にアクセスするため、メモリ201にアクセスする旨のメッセージ714をCPU#0〜CPU#3へブロードキャスト送信する。
CPU#0〜CPU#3はメッセージ714を受信する。CPU#0は、アクセス経路715で示した通り、ソフトウェアFによってメモリ201にアクセスしているため、ソフトウェアFの実行優先度を低下させる。CPU#1とCPU#2は、メモリ201にアクセスしているソフトウェアが存在しないため、特に処理を行わない。CPU#3は、アクセス経路716で示した通り、ソフトウェアEによってメモリ201にアクセスしているため、ソフトウェアEの実行優先度を低下させる。
図7−2での符号705で示した状態は、ソフトウェア制御装置100が、メモリ201にアクセスするソフトウェアの実行優先度を低下させた後、ソフトウェアAの初期化処理を行い、子スレッドを起動した状態である。ソフトウェアAの処理としては、アクセス経路717で示すデバイスA、デバイスBへの初期化処理と、メモリコンテキスト407の確保である。また、ソフトウェアAによって、ソフトウェアA子スレッドが起動され、CPU#1に割り当てられる。CPU#0は、ソフトウェアA子スレッドが起動される旨のメッセージ718をCPU#0〜CPU#3へブロードキャスト送信する。
CPU#0〜CPU#3はメッセージ718を受信する。CPU#0とCPU#1とCPU#3は、ソフトウェアA子スレッドによってアクセスされる共用リソースにアクセスしているソフトウェアが存在しないため、特に処理を行わない。CPU#2は、アクセス経路719で示した通り、ソフトウェアGによってメモリ201にアクセスしているため、ソフトウェアGの実行優先度を低下させる。また、ソフトウェアA子スレッドは、メモリコンテキスト408を確保する。
ここまでで、ソフトウェアAが起動するまでは、ソフトウェアAが最優先で実行されることになる。ソフトウェアBのように、ソフトウェアAによってアクセスされる共用リソースへアクセスせず、競合しないソフトウェアについては、一時停止もされないし、実行優先度も低下させられることもなく、通常通りに実行される。
図7−2での符号706で示した状態は、ソフトウェア制御装置100がソフトウェアAの起動を完了した状態を示している。起動を完了した時点は、ソフトウェアAによるデバイスの初期化とメモリコンテキストの確保が終了した時点である。ソフトウェアAの起動を完了すると、CPU#0は、ソフトウェアAの起動を完了した旨のメッセージ720をブロードキャスト送信する。
CPU#0〜CPU#3はメッセージ720を受信する。各CPUは、一時停止中のソフトウェアと、実行優先度を低下させられたソフトウェアに対し、制御を解除する。具体的には、CPU#0は、ソフトウェアFの実行優先度を初期値に戻させる。CPU#1では、一時停止中のソフトウェア、または、実行優先度を低下させられたソフトウェアが存在しないため、何も処理をしない。CPU#2は、ソフトウェアCの一時停止を解除し、ソフトウェアGの実行優先度を初期値に戻させる。CPU#3は、ソフトウェアDの一時停止を解除し、ソフトウェアEの実行優先度を初期値に戻させる。
図8は、共用リソースデータベース202の生成処理のフローチャートである。本実施の形態にかかる生成処理は、ソフトウェア制御装置100にて実行されることとして説明を行うが、ソフトウェア制御装置100をシミュレートできる装置にて実行してもよい。生成処理の準備として、生成処理の対象となるソフトウェアは、プロファイルタグ付きの実行コードにてコンパイルされていることとする。
ソフトウェア制御装置100は、試験対象となるソフトウェアを実行し、実行ログを取得する(ステップS801)。以降の処理は、実行ログを先頭から参照して処理を行う。したがって、以降の処理を行う装置は、実行ログを参照するためのデータ入出力が行える、汎用的な演算装置であってもよい。次にソフトウェア制御装置100は、実行ログを参照し、デバイスを起動していたかを確認する(ステップS802)。デバイスを起動していた場合(ステップS802:Yes)、ソフトウェア制御装置100は、初期化デバイス情報を取得し(ステップS808)、共用リソースデータベース202に格納する。格納される箇所は、符号403で示した領域のUseDeviceプロパティである。
格納後、ソフトウェア制御装置100は、UIにかかわるシステムコールを利用していたかを確認する(ステップS810)。利用していた場合(ステップS810:Yes)、ソフトウェア制御装置100は、処理を終了する。また、実行ログを最後まで読み取り終えた場合にも、ソフトウェア制御装置100は処理を終了する。または、実行ログ上にて、割り込みハンドラによるユーザ入力待ちである状態に遷移したことが判断できれば、ソフトウェア制御装置100はその時点でも終了してもよい。
UIにかかわるシステムコールとは、ディスプレイ107上でのユーザによるマウス入力情報や、キーボード109によるキーボード入力情報を取得するシステムコールである。ステップS810の処理では、システムコールが呼ばれた場合に試験対象となるソフトウェアの起動を完了し、ユーザからの指示に対処する状態に遷移していることを示しているため、ソフトウェアの起動を完了したと判断している。UIにかかわるシステムコールを利用していない場合(ステップS810:No)、ソフトウェア制御装置100は、再びステップS802の処理に移行する。
デバイスを起動していない場合(ステップS802:No)、ソフトウェア制御装置100は、スレッド処理であったかを確認する(ステップS803)。ステップS803の処理により、ソフトウェア制御装置100は、スレッドごとに処理を行うことになる。スレッド処理でない場合(ステップS803:No)、ソフトウェア制御装置100は、ステップS802の処理に移行する。スレッド処理である場合(ステップS803:Yes)、ソフトウェア制御装置100は続けて、システムリソースを利用していたかを確認する(ステップS804)。
ステップS804の処理は、システムリソースの代わりにライブラリリソースを使用していたとしても、ステップS804:Yesとして処理をしてもよい。図8、図9−1、図9−2で示すフローチャートでは、ライブラリリソースもシステムリソースの一部とする。システムリソースを利用していた場合(ステップS804:Yes)、ソフトウェア制御装置100は、システムリソース利用情報を取得し(ステップS809)、共用リソースデータベース202に格納する。設定される箇所は、図4で示したSys_resourceプロパティとなる。その後、ソフトウェア制御装置100は、ステップS810の処理に移行する。
システムリソースを利用していない場合(ステップS804:No)、ソフトウェア制御装置100は、メモリコンテキストを初期化していたかを確認する(ステップS805)。メモリコンテキストを初期化していた場合(ステップS805:Yes)、ソフトウェア制御装置100は、メモリコンテキスト初期化時刻情報tを取得し(ステップS806)、共用リソースデータベース202に格納する。設定される箇所は、図4で示したelapse_timeプロパティとなる。その後、ソフトウェア制御装置100は、ステップS810の処理に移行する。
メモリコンテキストを初期化していない場合(ステップS805:No)、ソフトウェア制御装置100は、メモリ201へのアクセスであるI/O情報を取得し(ステップS807)、共用リソースデータベース202に格納する。設定される箇所は、図4で示したIOprofile_write_accessプロパティとIOprofile_read_accessプロパティとなる。
その後、ソフトウェア制御装置100は、ステップS810の処理に移行する。ステップS810の終了後、ソフトウェア制御装置100は、すべてのスレッドのelapse_timeプロパティから、最大の値をメインスレッドのelapse_timeプロパティに設定する。メインスレッドのelapse_timeがソフトウェアの非競合状態における起動時間tとなる。
図9−1、図9−2は、ソフトウェア制御処理のフローチャートである。図9−1は、マスタカーネルにて、メッセージ送信を行う処理を示している。本実施の形態では、マスタカーネルはCPU#0とする。CPU#0は、スケジューラを起動する(ステップS901)。具体的には、たとえば、CPU#0はスケジューラ#0を起動する。また、CPU#0は、CPU#1〜CPU#3からメッセージを受信し、CPUの負荷情報を集約する。
続けて、CPU#0は、集約された負荷情報を基に、新規ソフトウェアの割り当てを行うCPUを確定する(ステップS902)。確定されたCPUは、新規ソフトウェアに対して起動を開始する(ステップS903)とともに、CPU#0は、共用リソースデータベース202の新規ソフトウェアに関するレコードを読み込む(ステップS904)。
読み込み後、CPU#0は、共用リソースデータベース202を参照して、新規ソフトウェアが起動するデバイスが存在するかを確認する(ステップS905)。存在する場合(ステップS905:Yes)、CPU#0は、デバイス抑止制御要求をCPU#0〜CPU#3に対してブロードキャスト送信する(ステップS906)。起動デバイスが存在しない場合(ステップS905:No)、または、ステップS906の処理後、CPU#0は、新規ソフトウェアが起動を完了したかを確認する(ステップS907)。
起動が完了していない場合(ステップS907:No)、CPU#0は続けて、新規ソフトウェアの起動開始から仕様の起動時間Tを経過したかを確認する(ステップS908)。経過していない場合(ステップS908:No)、CPU#0は、一定時間待機し(ステップS909)、ステップS907の処理に移行する。
経過している場合(ステップS908:Yes)、CPU#0は続けて、起動中のソフトウェアがシステムリソース、またはメモリ201にアクセスするかを確認する(ステップS910)。システムリソース、またはメモリ201にアクセスする場合(ステップS910:Yes)、CPU#0は、実行優先度低下制御要求をCPU#0〜CPU#3に対してブロードキャスト送信する(ステップS911)。
また、実行優先度低下制御要求には、起動中のソフトウェアの情報か、または、仕様の起動時間Tと非競合状態における起動時間tかが含まれる。なお、一般的なソフトウェア、特にアプリケーションソフトウェアなどのソフトウェアは、システムリソースまたはメモリ201にアクセスすることが一般的である。したがって、ソフトウェア制御装置100は、ステップS910の処理を常にYesとして、ステップS910の処理を省くことにより処理を簡略化してもよい。
ブロードキャスト送信後、または、システムリソース、またはメモリ201を利用しない場合(ステップS910:No)、CPU#0は再び、新規ソフトウェアが起動を完了したかを確認する(ステップS912)。起動を完了していない場合(ステップS912:No)、CPU#0は、一定時間待機し(ステップS913)、再度ステップS912の処理に移行する。新規ソフトウェアが起動を完了した場合(ステップS907:Yes、ステップS912:Yes)、CPU#0は、制御解除要求をCPU#0〜CPU#3に対してブロードキャスト送信する(ステップS914)。
図9−2は、メッセージ受信処理を示している。メッセージ受信処理は、メッセージを受信したスレーブカーネルとなるすべてのCPU、本実施の形態ではCPU#0〜CPU#3にて実行される。下記記述では、実行主体をCPU#1として説明を行う。
CPU#1は、マスタカーネルからメッセージを受信したかを確認する(ステップS915)。メッセージは、ステップS906、ステップS911、ステップS914にて、マスタカーネルより送信されたメッセージである。メッセージを受信していない場合(ステップS915:No)、CPU#1は、一定時間待機をし(ステップS916)、再びステップS915の処理に移行する。
メッセージを受信した場合(ステップS915:Yes)、CPU#1は、デバイス抑止制御要求を受信したかを確認する(ステップS917)。デバイス抑止制御要求を受信した場合(ステップS917:Yes)、CPU#1は、デバイスにアクセスするソフトウェアを一時停止するように制御する(ステップS918)。
デバイス抑止制御要求を受信していない場合(ステップS917:No)、CPU#1は続けて、実行優先度低下制御要求を受信したかを確認する(ステップS919)。受信していた場合(ステップS919:Yes)、CPU#1は、システムリソース、またはメモリ201にアクセスするソフトウェアを取得する(ステップS920)。実行優先度低下制御要求のメッセージの中には、起動中のソフトウェアの情報か、または、仕様の起動時間Tと非競合状態における起動時間tかが含まれてもよい。起動中のソフトウェアの情報であれば、CPU#1は、起動中のソフトウェアの情報に基づいて、仕様の起動時間Tと非競合状態における起動時間tをそれぞれ取得する。
取得後、CPU#1は、新規ソフトウェアと取得したソフトウェアとの競合特性σを、競合特性テーブル301より取得する(ステップS921)。取得後、CPU#1は、仕様の起動時間Tが競合状態における起動予測時間σtより小さいかを確認する(ステップS922)。小さい場合(ステップS922:Yes)、CPU#1は、取得したソフトウェアの実行優先度を低下させるように制御する(ステップS923)。
なお、ステップS922の処理では、Tとσtを用いて判断を行ったが、共用リソースデータベース202にある、他のプロパティを使用して判断を行ってもよい。たとえば、ソフトウェア制御装置100は、IOprofile_write_accessプロパティとIOprofile_read_accessプロパティの合計値を求める。続けて、ソフトウェア制御装置100は、合計値と非競合状態における起動時間tで除法を行うことで、メモリ201に対するアクセス速度を求めることができる。ソフトウェア制御装置100は、取得したアクセス速度と、スレーブカーネルの現在のメモリアクセス速度を比較し、取得したアクセス速度が大きい場合、スレーブカーネルにて競合が起きているとし、実行優先度を低下させるよう制御してもよい。
ステップS923の処理後、または、Tがσt以上の場合(ステップS922:No)、CPU#1は、取得したソフトウェアがシステムリソース、またはメモリ201にアクセスする末尾のソフトウェアかを確認する(ステップS924)。末尾のソフトウェアでない場合(ステップS924:No)、CPU#1は、システムリソース、またはメモリ201にアクセスする次のソフトウェアを取得し(ステップS925)、ステップS921の処理へ移行する。末尾のソフトウェアである場合(ステップS924:Yes)、CPU#1は、ステップS915の処理に移行する。
実行優先度低下制御要求を受信していない場合(ステップS919:No)、制御解除要求を受信したことになるため、CPU#1は、一時停止したソフトウェア、また、実行優先度を低下させたソフトウェアの制御を解除する(ステップS926)。解除後、CPU#1は、ステップS915の処理に移行する。
以上説明したように、ソフトウェア制御装置、ソフトウェア制御方法、およびソフトウェア制御プログラムによれば、起動中のソフトウェアによってアクセスされる共用リソースにアクセス中であるソフトウェアを一定期間停止する。これにより、起動中のソフトウェアが共用リソースにアクセスする割合を増やし、起動中のソフトウェアの起動時間を短縮することができる。
また、ソフトウェア制御装置は、共用リソースにアクセス中である実行中のソフトウェアの実行優先度を低下させてもよい。これにより、起動中のソフトウェアの起動時間を短縮することができ、実行中のソフトウェアも処理を行うことができる。
また、ソフトウェア制御装置は、起動中のソフトウェアが起動開始から所定の起動時間を経過しても起動を完了していないことを検出する。続けて、起動中のソフトウェアと実行中のソフトウェアがアクセス中の同一の共用リソースが特定の共用リソースであった場合に、実行中のソフトウェアの実行優先度を低下させるように制御してもよい。これにより、起動中のソフトウェアの起動時間を短縮することができ、また、より競合特性の小さいソフトウェアを所定の起動時間後に制御することになるため、競合への影響の少ないソフトウェアに関しては、そのまま処理を続けさせることができる。
また、ソフトウェア制御装置は、実行中のソフトウェアと起動中のソフトウェアの競合状態の起動予測時間を算出し、所定の起動時間を超えた場合に、実行中のソフトウェアの実行優先度を低下させるように制御してもよい。これにより、起動中のソフトウェアの起動時間を短縮することができる。また、より競合特性の小さいソフトウェアの中から、起動中のソフトウェアに大きく影響を与えるソフトウェアのみ制御することになるため、大きく影響を与えないソフトウェアに関しては、そのまま処理を続けさせることができる。
また、携帯端末ではディスプレイの表示領域が狭く、たとえば、320×240ピクセルであるQVGA(Quarter Video Graphics Array)という構成の場合もある。このように狭い画面では、新しいソフトウェアが起動すると今まで実行されていたソフトウェアはバックグラウンドとなり、すべて隠れてしまうことがある。すべて隠れてしまったソフトウェアはユーザから見えなくなるため処理量を減らし、その分起動中のソフトウェアに処理能力を回すことができる。
具体的には、たとえば、動画再生ソフトウェアを起動中に、メールソフトウェアが起動した場合を想定する。動画再生ソフトウェアはバックグラウンドになり、処理量を減らした結果、動画がスムーズに再生できずコマ落ちとなるが、ユーザから見えないため問題ない。ソフトウェア制御装置は、動画再生ソフトウェアの処理量を減らした分、メールソフトウェアの起動に処理能力を回すことができ、メールソフトウェアの起動を高速に行うことができる。
なお、本実施の形態で説明したソフトウェア制御方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本ソフトウェア制御プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本ソフトウェア制御プログラムは、インターネット等のネットワークを介して配布してもよい。
201 メモリ
202 共用リソースデータベース
301 競合特性テーブル
302 起動応答時間テーブル
303 制御指示部
304 検出部
305 解除指示部
306 判断部
307 制御部
308 解除部
309 抽出部
310 算出部
311 検出部

Claims (6)

  1. 起動中のソフトウェアと実行中のソフトウェアとが同一の共用リソースにアクセス中であるか否かを判断する判断手段と、
    前記判断手段によってアクセス中であると判断された場合、前記同一の共用リソースの種別がモリであれば前記実行中のソフトウェアの実行優先度を低下させるように制御し、前記同一の共用リソースの種別が前記メモリよりアクセス速度が低速なデバイスであれば前記実行中のソフトウェアを一時停止するように制御する制御手段と、
    を備えることを特徴とするソフトウェア制御装置。
  2. 前記起動中のソフトウェアが、起動開始から所定の起動時間を経過しても起動を完了していないことを検出する検出手段をさらに備え、
    前記制御手段は、
    さらに、前記検出手段によって起動を完了していないことが検出され、かつ、前記同一の共用リソースが前記メモリであった場合、前記実行中のソフトウェアの実行優先度を低下させるように制御することを特徴とする請求項1に記載のソフトウェア制御装置。
  3. 任意のソフトウェアの非競合状態における起動時間と任意のソフトウェアどうしの競合状態における性能劣化を示す係数とを記憶するデータベースから、前記起動中のソフトウェアの非競合状態における起動時間と前記起動中のソフトウェアと前記実行中のソフトウェアとの競合状態における性能劣化を示す係数とを抽出する抽出手段と、
    前記抽出手段によって抽出された起動時間と前記抽出手段によって抽出された係数とに基づいて、前記起動中のソフトウェアの競合状態における起動予測時間を算出する算出手段と、をさらに備え、
    前記検出手段は、
    さらに、前記算出手段によって算出された前記起動中のソフトウェアの競合状態における起動予測時間が前記所定の起動時間を超えることを検出し、
    前記制御手段は、
    さらに、前記検出手段によって前記起動予測時間が前記所定の起動時間を超えることが検出された場合、前記実行中のソフトウェアの実行優先度を低下させるように制御することを特徴とする請求項2に記載のソフトウェア制御装置。
  4. 前記起動中のソフトウェアが起動完了した後に、前記制御手段によって制御された実行中のソフトウェアを一時停止する制御を解除する、または前記実行中のソフトウェアの実行優先度を低下させる制御を解除する解除手段をさらに備えることを特徴とする請求項1〜3のいずれか一つに記載のソフトウェア制御装置。
  5. 判断手段と、制御手段とを備えるコンピュータが、
    前記判断手段により、起動中のソフトウェアと実行中のソフトウェアとが同一の共用リソースにアクセス中であるか否かを判断する判断工程と、
    前記制御手段により、前記判断工程によってアクセス中であると判断された場合、前記同一の共用リソースの種別がモリであれば前記実行中のソフトウェアの実行優先度を低下させるように制御し、前記同一の共用リソースの種別が前記メモリよりアクセス速度が低速なデバイスであれば前記実行中のソフトウェアを一時停止するように制御する制御工程と、
    を実行することを特徴とするソフトウェア制御方法。
  6. コンピュータを、
    起動中のソフトウェアと実行中のソフトウェアとが同一の共用リソースにアクセス中であるか否かを判断する判断手段、
    前記判断手段によってアクセス中であると判断された場合、前記同一の共用リソースの種別がモリであれば前記実行中のソフトウェアの実行優先度を低下させるように制御し、前記同一の共用リソースの種別が前記メモリよりアクセス速度が低速なデバイスであれば前記実行中のソフトウェアを一時停止するように制御する制御手段、
    として機能させることを特徴とするソフトウェア制御プログラム。
JP2012504241A 2010-03-11 2010-03-11 ソフトウェア制御装置、ソフトウェア制御方法、およびソフトウェア制御プログラム Expired - Fee Related JP5590114B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2010/054152 WO2011111215A1 (ja) 2010-03-11 2010-03-11 ソフトウェア制御装置、ソフトウェア制御方法、およびソフトウェア制御プログラム

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2014156495A Division JP5862722B2 (ja) 2014-07-31 2014-07-31 マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法、およびマルチコアプロセッサシステムの制御プログラム

Publications (2)

Publication Number Publication Date
JPWO2011111215A1 JPWO2011111215A1 (ja) 2013-06-27
JP5590114B2 true JP5590114B2 (ja) 2014-09-17

Family

ID=44563057

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012504241A Expired - Fee Related JP5590114B2 (ja) 2010-03-11 2010-03-11 ソフトウェア制御装置、ソフトウェア制御方法、およびソフトウェア制御プログラム

Country Status (5)

Country Link
US (1) US20130007765A1 (ja)
EP (1) EP2546744B1 (ja)
JP (1) JP5590114B2 (ja)
CN (1) CN102792275B (ja)
WO (1) WO2011111215A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102165818B1 (ko) 2013-09-10 2020-10-14 삼성전자주식회사 입력 영상을 이용한 사용자 인터페이스 제어 방법, 장치 및 기록매체
JP6400553B2 (ja) * 2015-09-28 2018-10-03 ファナック株式会社 ユニット間での同期制御機能を有する数値制御システム
US11210141B2 (en) * 2019-10-28 2021-12-28 EMC IP Holding Company, LLC Priority-based CPU multitasking system and method
US11232010B2 (en) * 2020-01-20 2022-01-25 EMC IP Holding Company LLC Performance monitoring for storage system with core thread comprising internal and external schedulers

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003177926A (ja) * 2001-12-11 2003-06-27 Nec Corp 携帯情報端末装置
WO2006011343A1 (ja) * 2004-07-28 2006-02-02 Matsushita Electric Industrial Co., Ltd. 競合解決装置
JP2009517784A (ja) * 2005-11-30 2009-04-30 マイクロソフト コーポレーション アプリケーションの遅延起動

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7065762B1 (en) * 1999-03-22 2006-06-20 Cisco Technology, Inc. Method, apparatus and computer program product for borrowed-virtual-time scheduling
JP2001014274A (ja) * 1999-06-28 2001-01-19 Murata Mach Ltd 情報処理装置及び排他制御方法
US6834386B1 (en) * 1999-07-16 2004-12-21 Microsoft Corporation Method and system for regulating background tasks using performance measurements
US20040139441A1 (en) * 2003-01-09 2004-07-15 Kabushiki Kaisha Toshiba Processor, arithmetic operation processing method, and priority determination method
JP2005050079A (ja) * 2003-07-28 2005-02-24 Nec Fielding Ltd サーバ装置、bios更新プログラム、初期起動プログラム、及びbios更新方法
JP4507563B2 (ja) 2003-11-10 2010-07-21 株式会社日立製作所 マルチプロセッサシステム
WO2005060575A2 (en) * 2003-12-10 2005-07-07 X1 Technologies, Inc. Performing operations in response to detecting a computer idle condition
CN1677352A (zh) * 2004-03-30 2005-10-05 京瓷株式会社 移动电话终端、及其程序管理方法和相应的计算机程序
JP4563710B2 (ja) * 2004-03-30 2010-10-13 京セラ株式会社 携帯電話端末装置及びプログラム管理方法並びにそのコンピュータプログラム
JP4748774B2 (ja) * 2004-06-02 2011-08-17 キヤノン株式会社 暗号化通信方式及びシステム
JP4170302B2 (ja) * 2005-03-10 2008-10-22 富士通株式会社 負荷制御装置および負荷制御プログラム
JP4580845B2 (ja) * 2005-08-24 2010-11-17 パナソニック株式会社 タスク実行装置
JP4348639B2 (ja) 2006-05-23 2009-10-21 日本電気株式会社 マルチプロセッサシステム、ワークロード管理方法
US8141089B2 (en) * 2007-01-11 2012-03-20 International Business Machines Corporation Method and apparatus for reducing contention for computer system resources using soft locks
US8539498B2 (en) * 2007-05-17 2013-09-17 Alcatel Lucent Interprocess resource-based dynamic scheduling system and method
US8141079B2 (en) * 2007-06-28 2012-03-20 Samsung Electronics Co., Ltd. Dynamic application scheduler in a polling system
US8959328B2 (en) * 2007-11-13 2015-02-17 Intel Corporation Device, system, and method for multi-resource scheduling
US20090199192A1 (en) * 2008-02-05 2009-08-06 Robert Laithwaite Resource scheduling apparatus and method
WO2009104344A1 (ja) * 2008-02-22 2009-08-27 日本電気株式会社 Itシステムの挙動測定・解析システム、およびその方法
US8402464B2 (en) * 2008-12-01 2013-03-19 Oracle America, Inc. System and method for managing contention in transactional memory using global execution data
US8424009B2 (en) * 2009-12-04 2013-04-16 Microsoft Corporation Lock resolution for distributed durable instances
US9104476B2 (en) * 2010-04-07 2015-08-11 Apple Inc. Opportunistic multitasking of VOIP applications
US9389926B2 (en) * 2010-05-05 2016-07-12 Red Hat, Inc. Distributed resource contention detection
US9223631B2 (en) * 2011-03-17 2015-12-29 Apple Inc. Performing an operation using multiple services
US8788863B2 (en) * 2011-08-10 2014-07-22 Microsoft Corporation System and method for restoring and/or continuing execution functionality to various processes based on predefined power classifications while transitioning a computing environment from connected standby state to execution state

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003177926A (ja) * 2001-12-11 2003-06-27 Nec Corp 携帯情報端末装置
WO2006011343A1 (ja) * 2004-07-28 2006-02-02 Matsushita Electric Industrial Co., Ltd. 競合解決装置
JP2009517784A (ja) * 2005-11-30 2009-04-30 マイクロソフト コーポレーション アプリケーションの遅延起動

Also Published As

Publication number Publication date
JPWO2011111215A1 (ja) 2013-06-27
US20130007765A1 (en) 2013-01-03
CN102792275A (zh) 2012-11-21
CN102792275B (zh) 2016-07-06
EP2546744A1 (en) 2013-01-16
EP2546744B1 (en) 2017-05-10
WO2011111215A1 (ja) 2011-09-15
EP2546744A4 (en) 2013-08-07

Similar Documents

Publication Publication Date Title
US20210182147A1 (en) Method for memory management for browser of terminal, terminal, and non-transitory computer-readable storage medium
JP5673672B2 (ja) マルチコアプロセッサシステム、制御プログラム、および制御方法
JP5590114B2 (ja) ソフトウェア制御装置、ソフトウェア制御方法、およびソフトウェア制御プログラム
JP5862722B2 (ja) マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法、およびマルチコアプロセッサシステムの制御プログラム
JP5672311B2 (ja) 同期処理方法
JP5729445B2 (ja) マルチプロセッサシステム、制御方法、および制御プログラム
US9565049B2 (en) Communication apparatus, communication method, and computer product for sharing data
US9690619B2 (en) Thread processing method and thread processing system for setting for each thread priority level of access right to access shared memory
US9734104B2 (en) Data transfer control apparatus, data transfer control method, and computer product
US11157289B2 (en) Power management method and apparatus for virtualized I/O devices
JP5376042B2 (ja) マルチコアプロセッサシステム、スレッド切り替え制御方法、およびスレッド切り替え制御プログラム
JPWO2012001777A1 (ja) マルチコアプロセッサシステム、通信制御方法、および通信制御プログラム
JP5582241B2 (ja) マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法、およびマルチコアプロセッサシステムの制御プログラム
JP6163795B2 (ja) 情報処理装置、装置評価システム、装置評価方法およびコンピュータプログラム
CN115826857A (zh) 一种NVMe指令处理方法、装置、设备及介质
JP2012003478A (ja) 割込み制御装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130625

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130826

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131126

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140127

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140304

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140507

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140714

R150 Certificate of patent or registration of utility model

Ref document number: 5590114

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees