JPH08212086A - オフィスマシンのオペレーティングシステム及び方法 - Google Patents

オフィスマシンのオペレーティングシステム及び方法

Info

Publication number
JPH08212086A
JPH08212086A JP7255225A JP25522595A JPH08212086A JP H08212086 A JPH08212086 A JP H08212086A JP 7255225 A JP7255225 A JP 7255225A JP 25522595 A JP25522595 A JP 25522595A JP H08212086 A JPH08212086 A JP H08212086A
Authority
JP
Japan
Prior art keywords
scheduler
real
operating system
preemptive
time processing
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.)
Withdrawn
Application number
JP7255225A
Other languages
English (en)
Inventor
Matouaa Sharad
マトゥアー シャラッド
D Feit Franklin Jr
ディー ファイト ジュニア フランクリン
Menezes Aral
メネゼス アラル
Stevens Kim
ステブンス キム
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.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JPH08212086A publication Critical patent/JPH08212086A/ja
Withdrawn legal-status Critical Current

Links

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
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Abstract

(57)【要約】 【課題】 オフィスマシン用の図形ウィンドウ処理オペ
レーティングシステムにおけるリヤルタイム処理アプリ
ケーションをサポートする方法及びシステムを提供す
る。 【解決手段】 本発明のオペレーティングシステムは、
ウィンドウ処理アプリケーションをスケジュールする非
プレエンプティブスケジューラと、リヤルタイム処理ア
プリケーションをスケジュールするプレエンプティブス
ケジューラとを有するカーネルを含む。カーネルはリヤ
ルタイム処理アプリケーション及びウィンドウ処理アプ
リケーションの両方を含むプロセス間で通信を行なうメ
ッセージサブシステムを含み、さらにカーネルにより維
持されスケジューリングを管理するイバントソマフォを
含む。ウィンドウ処理アプリケーションをグループ化し
て非優先的にスケジュールする。また、リヤルタイム処
理アプリケーションの優先順位を決定してウィンドウ処
理アプリケーションに対して優先的にスケジュールす
る。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、一般的にオペレー
ティングシステムに関するものである。特に、本発明は
オフィスマシンの多重タスキング、実時間オペレーティ
ングシステムに関するものである。
【0002】
【従来の技術】今日のオフィスマシンは一層複雑化して
いる。改良されたプロセッサ、改良されたインタフェー
ス及び通信インタフェースがパーソナルコンピュータに
付加されているので、複写機、ファクシミル装置及びプ
リンタのような典型的なオフィスマシンにはパワフルで
新しい機能が搭載されている。この機能には、増強され
た走査能力及び複写能力、増加した個人認定及びセキュ
リテ並びに種々の型式のオフィスマシンやPCでの編集
可能な文書の通信が含まれる。将来的には、これら多く
の新しい機能は、オフィスマシンで実行されるソフトウ
エアプログラムを用いて処理及び制御される。
【0003】これらのアプリケーションプログラムをサ
ポートするため、オフィスマシンオペレーティングシス
テムを実装する必要がある。オペレーティングシステム
は、メモリ、中央処理装置(CPU)、時間及び周辺装
置のようなハードウエア資源の割当及び使用の制御に応
答し得るソフトウエアである。典型的なコンピュータに
おいて、オペレーティングシステムはアプリケーション
プログラムが開発される基礎を有するものである。アプ
リケーションプログラムの開発を促進するため、オペレ
ーティングシステムは良好に規定されたアプリケーショ
ンプログラムインターフェース(API)を有する必要
がある。APIは、アプリケーションプログラムがオペ
レーティングシステムにより実行される下位レベルサー
ビスをアクセスするために用いるルーチンの組である。
【0004】オペレーティングシステムは、モジュール
管理、プロセス間通信(IPC)及びスケジューリング
を含むアプリケーションプログラムについて多数の重要
なサービスを実行する。ソフトウエアモジュールはプロ
セス及び動的結合ライブラリ(DLL)を含む。このプ
ロセスは実行されるべき一組の工程から成るプログラム
又はプログラムの一部である。“プロセス”という用語
は“タスク”という用語と相互交換的に用いられる。D
DLはプロセスとリンクしたソフトウエアである。DD
Lはシステムにおけるコードの重複を防止する。この理
由は、数個のプロセスが同一のDDLを占めるからであ
る。オペレーティングシステムは、システムにおけるリ
ンキング、ローディング及びモジュールの実行をサポー
トすることによりモジュール管理を実行することができ
る。このオペレーティングシステムはIPC機能を設け
ることによりシステム中のプロセス間の通信を行なうこ
とができる。このIPC機能によりアプリケーションプ
ログラムは相互に及びオペレーティングシステム中のプ
ロセス同士で会話することができる。プロセス間の通信
は、CPUにより実行されるべきプロセスのスケジュー
リングにおける重要な役割を果たす。スケジューリング
を制御することにより、オペレーティングシステムはシ
スアテム中のプロセスによるCPU時間の使用を制御す
る。
【0005】将来のインテリジェンスオフィスマシンに
おいて、オペレーティングシステムは多重タスキング及
び実時間処理をサポートしなければならず、これらオペ
レーティングシステムの2個の属性はスケジューリング
と密接に関連する。多重タスキングは、CPUに1個以
上のプロセス又はタスクを一度に処理させるスケジュー
リングスキムである。リヤルタイム処理には外部の“リ
アルワールド”タイミング要件が課せられるため予想さ
れる時間期間中にプロセスがスケジュールされ実行され
るべき制約を考慮する必要がある。リヤルタイム処理は
アプリケーションプログラムを予想され得る時間期間中
に実行しなければならないオフィスマシンにおいて重要
である。例えば、ファクス装置における着信呼を処理す
る用途においては着信データをリアルタイムで処理しな
ければならず、或いは最後には停止しなければならな
い。多重タスキングオペレーティングシステムにおい
て、オペレーティングシステムはスケジューリングスキ
ムを適切に処理してリアルタイムアプリケーションが予
想される時間期間中に実行されるようにスケジュールす
る必要がある。リヤルタイム処理をサポートするため、
オペレーティングシステムはプレエンプティブスケジュ
ーリングの形態をとる必要がある。プレエンプティブス
ケジューリングは、現在実行しているプロセスを中断し
てリアルタイムアプリケーションのようなより高い優先
順位のプロセスを優先的に実行するプロセスである。
【0006】リアルタイムアプリケーションを予想され
得る時間期間中に処理することを確実にするため、オペ
レーティングシステムはCPUの制御を獲得して現在行
なっているプロセスを制御すると共にシステム中の他の
プロセスに拘わらずリアルタイム処理をスケジュールで
きる必要がある。
【0007】リヤルタイム処理に加えて、将来のインテ
リジェントオフィスマシンについてのオペレーティング
システムの他の重要な属性は、図形ウィンド処理環境を
有することである。このウィンド処理環境はオペレーテ
ィングシステムに対する使用者イタンフェースであっ
て、ウィンドウズと称されている表示スクリーン上に特
別に描写された領域を使用者に与えることを意味する。
各ウィンドウは、あたかもバーチャル表示装置のごと
く、それぞれ独立して動作することができる。現在、ウ
ィンドウ処理環境はパーソナルコンピュータにおいて広
く一般化している。マイクロソフト社から販売されてい
るウィンドウズは、MS−DOSを基本としたコンピュ
ータで実行される多重タスキング図形使用者インタフェ
ース環境の一例である。ウィンドウ処理環境の他の例と
して、アップルコンピュータ社から販売されているアッ
プル マッキントッシュ ファインダ並びにIBM社か
ら出されているOS/2プレゼンテーション マネージ
ャがある。
【0008】
【発明が解決しようとする課題】図形ウィンド処理環境
及びプレエンプティブスケジューリングのサポートの両
方を有するオペレーティングシステムは現在存在する
が、オフィスマシン用には全く適当なものではない。I
BM社からのOS/2及びマイクロソフト社からのウィ
ンドウズNTは図形ウィンドウ処理環境を有しプレエン
プライブスケジューリングをサポートしている。しかし
ながら、これらのオペレーティングシステムはオフィス
マシンに用いるのに適当なメモリを多量に使い過ぎてし
まう。一方、オフィスマシンは典型的にはメモリが制限
されている。
【0009】オフィスマシンのメモリの制約を解消する
ため、より少ないメモリを用いる新たなオペレーティン
グシステムが開発された。しかしながら、この解決策も
受け入れることができない。全く新しいオペレーティン
グシステムの開発には相当な技術的努力が必要であり、
現在のオペレーティングシステムと十分な互換性を有し
ていない。このようなオペレーティングシステムの情況
において、互換性は現在のアプリケーションプログラム
との互換性及び現在のソフトウェアの開発環境との互換
性の2個の重要な概念が含まれる。好ましくは、オフィ
スマシン用のオペレーティングシステムはこれらの互換
性の概念の両方を満足する必要がある。
【0010】互換性の重要性により、別のとり得る解決
策は現在使用され広く受け入れられているオペレーティ
ングシステムを変更することである。現在のオペレーテ
ィングシステムを変更することにより、多くの現在使用
されているアプリケーションプログラムとの互換性はそ
のまま維持される。さらに、変更されたオペレーティン
グシステムは同一の又は類似のAPIを用いる同一の開
発環境をサポートすることができる。
【0011】現在のオペレーティングシステムを変更す
ることは互換性の見地から有益であるが、スケジューリ
ングについて困難性が増大してしまう。例えば、ウィン
ドウズ オペレーティング システムは非プレエンプテ
ィブスケジューリングスキムに基づいているため、リヤ
ルタイム処理をサポートすることができない。非プレエ
ンプティブスケジューリングスキムに基づくオペレーテ
ィングシステムは、リヤルタイム処理をサポートするプ
レエンプティブ処理を含むように変更されねばならな
い。同時にオリジナルの非プレエンプティブスキムは、
現在のアプリケーションとの互換性がそのまま維持され
ねばならない。
【0012】非プレエンプティブなオペレーティングシ
ステムをリヤルタイム処理をサポートするように変更す
る際、再入可能の課題を解消する必要がある。非プレエ
ンプイィブなシステムの多くのソフトウェアが再入不能
にされているためである。
【0013】ソフトウェアが(1)最初のプログラムに
より呼び出され部分的に実行されることができ、(2)
第2のプログラムにより割り込み可能であり(及び部分
的に又は最後まで実行可能のいずれかである)、且つ次
に情報が損失することなく最初のプログラムにより再入
されることができる場合、このソフトウェアモジュール
は再入可能である。これとは逆に、再入不能なソフトウ
ェアは、割り込みすることができず情報の損失が生ずる
ことなく再入することができない。リヤルタイム処理が
別のプロセスを優先する場合、再入可能についての問題
が生ずるおそれがある。例えば、リヤルタイム処理が再
入不能なモジュールを呼び出したプロセスを先取りし同
一の再入不能なモジュールを呼び出そうとする場合、再
入可能についての問題が発生してしまう。再入不能なモ
ジュールは、優先されたプロセスからの呼出に応答して
処理された情報をセーブするいかなる方法も有していな
い。
【0014】前述した検討を考慮すれば、オフィスマシ
ン用のオペレーティングシステムの開発に含まれる格別
な設計方法があること明らかである。従って、本発明の
目的は、オフィスマシン用の図形ウィンドウ処理するオ
ペレーティングシステムにおいてリアルタイムアプリケ
ーションをサポートするシステム及び方法を提供するこ
とにある。
【0015】
【課題を解決するための手段】本発明は、図形ウィンド
ウ処理を行なうオペレーティングシステムにおいてリヤ
ルタイム処理をサポートする方法及びシステムを提供す
る。一実施例として、本発明による方法は、一実施例に
おいて、本発明による方法は、非プレエンプティブスケ
ジューラと、プレエンプティブスケジューラと、これら
スケジューラをプロセスと連結させるメッセージサブシ
ステムとを有する図形ウィンドウ処理オペレーティング
システムを用意する。この方法では、さらにウィンドウ
処理されるアプリケーションをシステムプロセスと称す
るスケジュール可能なプロセスにグループ化し、非プレ
エンプティブスケジューラを用いてウィンドウ処理され
るアプリケーションを非優先的にスケジュールする。さ
らに、プレエンプティブスケジューラを用いてシステム
プロセス及びリヤルタイム処理アプリケーションを優先
的にスケジュールする。プレエンプティブスケジューラ
は、現在実行中のプロセスを優先させることができるか
否か決定し、実行中のプロセスの型式及び優先順位に基
いてスケジュールするために準備されたプロセスをスケ
ジュールし、前後の切り換えを行なうことにより実行中
のプロセスを優先させる。
【0016】スケジュールする目的のため、アプリケー
ションはウィンドウ処理アプリケーションとリヤルタイ
ム処理アプリケーションの2種類のものにグループ化す
る。ウィンドウ処理アプリケーションは単一プロセスと
して処理し、リヤルタイム処理アプリケーションと共に
優先的にスケジュールすることができる。このグループ
化することにより、ウィンドウ処理アプリケーションを
優先するのを阻止することによりシステムにおける再入
の問題を最小にできる利点が達成される。ウィンドウ処
理アプリケーションはプロセスの使用できる時間の一部
において非優先的にスケジュールされ、従ってプロセッ
サの時間においてはリヤルタイム処理アプリケーション
が優先する。
【0017】上述した方法に加えて、本発明は、オフィ
スマシンのオペレーティングシステムにおけるリヤルタ
イム処理アプリケーションをサポートするシステムを提
供する。このシステムの一実施例によれば、本システム
はカーネルを含み、このカーネルはメッセージシステム
と、ウィンドウ処理アプリケーションをスケジュールす
る非プレエンプティブスケジューラと、リヤルタイム処
理アプリケーションをスケジュールするプレエンプティ
ブスケジューラと、イベントソマフォとを有する。メッ
セージサブシステムは、メッセージを用いてリヤルタイ
ム処理アプリケーション及びウィンドウ処理アプリケー
ションを互いに並びにオペレーティングシステム中のプ
ロセスと連絡させることができる。
【0018】メッセージサブシステムはスケジューリン
グにおいても用いられる。リヤルタイム処理アプリケー
ション及びウィンドウ処理アプリケーションは、メッセ
ージを送るか又は受け取るかに応じて状態変化すること
ができる。メッセージサブシステムはイベントソマフォ
と通信してプロセスの状態を適切なスケジューラに送る
ことによりスケジューリングを制御する。非プレエンプ
ティブスケジューラはウィンドウ処理アプリケーション
を非優先的にスケジュールし、プレエンプティブスケジ
ューラはリヤルタイム処理アプリケーションをその優先
順位に基いて優先的にスケジュールする。
【0019】このシステムはリヤルタイム処理アプリケ
ーションをスケジュールする際に用いる割込モジュール
も含んでいる。例えば、この割込モジュールは割込サー
ビスルーチンに結合され周期的な割込を発生させるタイ
マを含むことができる。この割込が発生したとき、プレ
エンプティブスケジューラは制御信号が与えられてリヤ
ルタイム処理アプリケーションを優先的にスケジュール
することができる。
【0020】本発明によるシステムの設計は変更するこ
とができる。例えば、カーネルは2個の部分として設け
ることができ、第1の部分は非プレエンプティブスケジ
ューリングをサポートし、第2の部分はプレエンプティ
ブスケジューリングをサポートする。メッセージサブシ
ステムはウィンドウ処理アプリケーションとリヤルタイ
ム処理アプリケーション用の別個のメッセージキューを
用いてフォーグランドで動作するウィンドウ処理プロセ
スとバックグランドで動作するリヤルタイム処理プロセ
スとの間で独立性を維持することができる。他の多くの
変形も可能であり以下の詳細な説明において明らかにす
ることとする。
【0021】本発明による方法及びシステムを用いてオ
フィスマシン用のリヤルタイム処理、図形ウィンドウ処
理オペレーティングシステムを構築することができる。
このオペレーティングシステムは、ウィンドウ処理アプ
リケーションを非優先的にスケジュールするのをサポー
トすると共にリヤルタイム処理アプリケーションを優先
的にスケジュールすることをサポートすることができ
る。両方のスケジューリングの形態は、再入の問題点を
回避するように構成することができる。本発明を用いて
既存のウィンドウ処理アプリケーション及び現存の開発
環境との互換性を維持できるオフィスマシンのオペレー
ティングシステムを構成することができる。
【0022】以下、図面に基づき本発明を詳細に説明す
る。
【0023】
【本発明の実施の形態】図1は本発明の実施例によるオ
ペレーティングシステムのアーキテクチャのブロック図
である。このブロック図は、高速複写機、“インテリジ
ェント”ファクス装置、携帯装置又は電話器のような
“インテリジェント”オフィスマシン用のオペレーティ
ングシステムのアーキテクチャの主要な構成要素を示
す。このシステムレベルアーキテクチャはオペレーティ
ングシステム20、ベーシックオペレーティングシステ
ムサービス(BOSS)22及び装置ドライバ24を含
む。
【0024】ブロックで表示した装置ドライバ24は装
置ドライバ及び割込サービスルーチン(ISR)の両方
を含む。これら2個のソフトウエア要素は、周辺装置と
オペレーティングシステムとの間のインタフエースを構
成する。典型的な周辺装置は、ディスクドライブ、スキ
ャナ、プリンタ、モデム、及び表示装置を含む。装置ド
ライバ及びISRは各周辺装置に対して以下の基本機能
を行う。すなわち、電源のオンテスト及びリセットを含
む初期化、装置制御、レジスタを介する装置でのオプシ
ョン設定、プロセスにより装置を使用状態に維持する
“オープン”機能、装置を開放する“クローズ”機能、
データをバイト又はブロックの形態で装置に送る“ライ
ト”機能。ISRは装置ドライバと共に作動し、装置ド
ライバがその操作を完了した時、又はスタートの準備が
できた時より高度のレベルソフトウエアを通知する。本
例では、装置ドライバ及びISRのフォーマットはマイ
クロソフト社により開発された標準ウィンドウズデバイ
スドライバに基づいている。
【0025】BOSSモジュール22は、オペレーティ
ングシステムをオフィスマシンプロセッサハードウエア
の特性から分離する基礎的なフレームワークである。こ
のBOSSモジュールは以下の機能を含む。すなわち、
パワーオン及びセルフテスト(POST)を含む基本ス
タート操作、装置制御、事故処理、及びシステムの時間
及びデータである。BOSSモジュールは、スタート操
作の一部として、プロセッサ、メモリ及びオフィスマシ
ンのハードウエアの制御を得てダイレクトメモリアドレ
ス(DMA)装置、割込制御器及びタイマのような他の
装置の種々のセルフテストを実行することができる。こ
のBOSSモジュールは、どの周辺装置をインストール
して動作させるかも決定する。オフィスマシンのハード
ウエアを設定した後、BOSSモジュールはオペレーテ
ィングシステム制御信号を送る。
【0026】装置ドライバはオフィスマシンの多くの周
辺装置を制御する。一方、BOSSモジュールは、DM
A制御器、割込制御器、リアルタイムクロック及びタイ
マのようなプロセッサ複合体の一部であると通常考えら
れている装置を制御する。これらの装置を制御するた
め、BOSSモジュールはオペレーティングシステムに
ハードウエア仕様でない抽象機能を与える。種々のオフ
ィスマシンのハードウエアの仕様はオペレーティングシ
ステムに対して一層明瞭にすることができる。
【0027】BOSSモジュールが処理する方法は、本
発明にとって重要ではない。BOSSモジュールの細部
は、プロセッサ及びメモリの型式のものを含むオフィス
マシンの特定のハードウエアに依存する。変形例とし
て、このBOSSモジュールはPCBIOS(Personal
Computer, Basic Input/Outout System) を用いて動作
させることができ、この場合PCBIOSは、ブートア
ップに応じてハードウエア装置の初期化試験を行い、そ
の制御をオペレーティングシステムに送る。PCBIO
Sは、PC中のハードウエアと密接して動作し、メモ
リ、ディスク及びモニタのようなシステムの構成要素間
での情報伝達をサポートする一組のルーチンである。P
CBIOSはPC中で見出される特定のハードウエア用
に構成されているため、別のオフィスマシンアーキテク
チャに適用することができない。この場合、ハードウエ
アの製造者はBOSSモジュール中の抽象層を開発して
上述したBOSS機能を与えることができる。
【0028】オペレーティングシステムと共に用いられ
るファイルシステムは、BOSSモジュールの設計を行
うこともできる。ファイルシステムは本発明の実施例の
概念ではないが、オフィスマシン用のオペレーティング
システムをいかに動作させるかを有効に行うことができ
る。PCBIOSを用いるオペレーティングシステム
は、マイクロソフト社から販売されている周知のディス
クオペレーティングシステムでありファイルシステムを
構成するMS−DOSも含む。ウィンドウズカーネルを
含む図形ウィンドウ処理環境はPCBIOS及びDOS
のトップに構成することができる。この理由は、ウィン
ドウズカーネルはMS−DOSに基づくシステムで実行
するように設計されているからである。これとは別のも
のはDOSが付加されたメモリを用いるため、好適では
ない。別の変形例としてDOSを全て取除くことがで
き、別のファイルシステムを用い又はオペレーティング
システムはDOSを用いることなく機能することができ
る。この変形例において、オペレーティングシステムの
カーネルはDOSのためのサポートを含む必要がなく、
従ってサイズを小さくすることができる。
【0029】BOSSモジュールについて種々の変形が
可能である。BOSSモジュールはリヤルタイム処理を
サポートするための重要な概念ではないため、BOSS
モジュールの設計に際して精巧に作る必要はない。BO
SSモジュールは、リヤルタイム処理をサポートするシ
ステムを構築する際の基礎を与えるようにするにすぎな
い。
【0030】一方、BOSSモジュールはリヤルタイム
処理をスケジュールする際に用いられる割込についての
サポートを含むことができる。例えば、BOSSモジュ
ールは、プロセッサの制御をプレエンプティブスケジュ
ーラに例えばnミリ秒毎に周期的なサイクルで送るため
に用いるタイマ及び割込みサービスルーチンをサポート
することができる。別の変形例として、BOSSモジュ
ールはオフィスマシンのキーボード又はキーパッドのよ
うな入力装置と関連する割込みサービスルーチンを含む
ことができる。この形式の割込を用いて、例えば使用者
がキーを押したとき、プレエンプティブスケジューラに
対して制御信号を送ることができる。簡単化するため、
関連する割込サービスルーチンに基づく割込を発生させ
るソフトウエア及び/又はハードウエア装置は、以下の
スケジューリングの説明において割込モジュールと称す
る。
【0031】BOSSモジュールはこの割込モジュール
を含むことができるが、必ずしも含む必要はない。或い
は、この割込モジュールは前述した装置ドライバモジュ
ール24にロードすることもできる。この割込モジュー
ルは、タイマ及びシリアルポートハードウェア並びに図
2に基いて説明する対応するプロテクトモード割込みハ
ンドラでサポートすることができる。
【0032】オペレーティングシステム20はオフィス
マシンについてリアルタイムのマルチタスキング処理環
境を構成する。この特有の実施例はマイクロソフト社の
ウィンドウズAPIと互換性を有するAPIを有してい
る。このオペレーティングシステムにより、ソフトウエ
アの開発者は、PC作成のためにウィンドウズ開発環境
及びオフィスマシン用の試験アプリケーションを使用す
ることができる。このオペレーティングシステムはRO
M中に存在する間に実行されることができる。BOSS
22及び装置ドライバ24を介して、オペレーティング
システム20はオフィスマシンのハードウエアと通信す
る。BOSS層はオフィスマシンのハードウエアの特性
を吸収するので、オペレーティングシステム20はプロ
セッサ間において携帯性に優れたものになる。この特有
の処理は、Intel X86のプロセサファミリの286プ
ロセッサ又は一層改良されたプロセッサ用に設計されて
いる。
【0033】オペレーティングシステム20中の主要な
モジュールはカーネル26及び図形サービスモジュール
28である。カーネル26はモジュール(プロセス及び
動的リンクライブラリ)管理及びスケジューリング、相
互プロセス間のメーセージング、メモリ管理、及びタイ
マに対して応答する。カーネルはAPIを介してアプリ
ケーションプログラムと連絡する。このカーネル26は
BOSS22及び装置ドライバ24とも通信する。BO
SS22及び装置ドライバ24とのインタフェースを介
して、カーネルは以下の機能を達成する。すなわち、タ
イマ装置サービス、割込サービス、及びメモリ管理であ
る。
【0034】一般に、カーネル26はスケジューリン
グ、メモリ管理、及びフォーグランドで実行する非プレ
エンプティブなプロセスとバックグランドで実行するプ
レエンプティブプロセスとの2種類のプロセスについて
のIPC通信を行う。非プレエンプティブプロセスは表
示装置を用いるマイクロソフトウィンドウズアプリケー
ション及びオフィスマシンI/0を含むことができ、プ
レエンプティブプロセスは表示装置を用いないバックグ
ランドプロセスを含むことができる。カーネル26はこ
れらのプロセスを作成し及び削除するサービスを含むこ
とができる。この実施例において、プロセスは標準ウィ
ンドウズインタープロセスコミュニケーションメッセー
ジング機構を用いて通信を行う。ウィンドウズIPCメ
ッセージに加えて、カーネル26はセマフォ及びイベン
ト通信を含む付加的な通信サービスを行う。プロセス及
び動的リンクライブラリはセマフォとの資源回線競合を
管理することができると共に、イベントの各々を通知す
る信号を用いることができる。メモリ管理の場合、カー
ネル26は標準サイズのメモリブロックの集合体が実装
されて断片化を低減すると共にメモリの動的なアロケー
ション及びデアロケーションのスピードアップを図るこ
とができる。
【0035】オペレーティングシステム内の図形サービ
スモジュール28は一組の使用者インタフェースサービ
スを行い、アプリケーションプログラムによりオフィス
マシンについての図形表示能力の利点を達成することが
できる。この図形サービスは2個のレベルで行う。すな
わち、(1) 線のような基本的な図形及びビットマップ等
の図形を表示する図形機能、(2) ボタンやウフィンドウ
を押すような論理物体を表示し及び使用者入力を認識す
る高レベル使用者インタフェースコマンド。
【0036】図2は本発明の実施例によるオペレーティ
ングシステムのより詳細な構成を示すブロック線図であ
る。この特有の実施例において、カーネル26は2個の
ブロック、すなわちオフィスマシンオペレーティングシ
ステム(OMOS)カーネル40及びウィンドウカーネ
ル42中に存在する。このカーネル26は図1に示すよ
うに単一のモジュールとして実装することもできる。し
かし、本例の実装では、ウィンドウズカーネル42及び
標準ウィンドウズモジュールを用いてオペレーティング
システムの機能の一部を実行し、すなわち図形ウィンド
ウ処理アプリケーションのの非プレエンプティブ処理を
サポートする。OMOSカーネルは付加された機能を行
ってリアルタイムアプリケーションのためスケジューリ
ングプエプティブ処理をサポートする。ウィンドウズモ
ジュール44は図1の図形サービスモジュールに対応
し、図形装置インタフェース(GDI)及び使用者モジ
ュールを含む。これらGDI及び使用者モジュールは共
に標準ウィンドウズモジュールとし、当該技術分野にお
いて広く知られている。
【0037】このオペレーティングシステムは数個のイ
ンタフェースを含みシステムのモジュール間の相互作用
を促進する。このオペレーティングシステムはマイクロ
ソフト社から公表された広く知られているウィンドウズ
APIを含む。このウィンドウズAPIはウィンドウズ
カーネルAPI、使用者モジュールAPI及びGDIモ
ジュールAPIを含む。ウィンドウズモジュール44及
びOMOSカーネル40はウィンドウズカーネルAPI
46を介してウィンドウズカーネル42と通信する。ア
プリケーション及びOMOSカーネルは使用者API及
びGDIモジュールAPI48を用いてウィンドウズモ
ジュールと通信することができる。アプリケーションと
OMOSカーネル40との間のインタフェースはOMO
SカーネルAPI50とする。オフィスマシンのフォー
グランド及びバックグランドアプリケーションはOMO
SカーネルAPI50を介してOMOSカーネル40と
連絡することができる。本発明と関連するOMOSカー
ネルAPIの概念は、オペレーションシステムのコミュ
ニケーションとの関連において詳細に説明する。OMO
Sカーネル及びウィンドウズカーネルはBOSSAPI
22を介してBOSSモジュール22と通信する。
【0038】ウィンドウズに設けられた2個の主ドライ
バであるシステムドライバ及びコミュニケーションドラ
イバ60はオペレーティングシステムの一部として含ま
れている。システムドライバはオペレーティングシステ
ムのタイマサービスの基礎として用いられるタイマサー
ビスを含む。コミュニケーションドライバはシリアルコ
ミュニケーションファンリティに対するアクセスを行
い、デバッキングプログラムがシリアルポートを介して
接続されている端子に対して会話できるようにしたイン
タフェースとして用いられる。これらシステム及びコミ
ュニケーションドライバは、タイマ及びシリアルポート
ハードウエアに対するプロテクトモード割込操作子64
を介してハードウエア62と連絡して、割込を高速で有
効に処理することができる。
【0039】図2の上部に示すように、インテリジェン
トオフィスマシン中で実行中のアプリケーションプログ
ラムはフォーグランドアプリケーション70及びバック
グランドアプリケーション72に分割され、スケジュー
リングの目的のためオペレーティングシステムがいかに
してアプリケーションと相互作用を行うかを示す。予想
し得る時間期間中に実行されるべきリアルタイムアプリ
ケーションは、オフィスマシンOSカーネル40から優
先的にスケジュールされる。これらのリアルタイムアプ
リケーションは、OMOSカーネルAPI50を介して
オフィスマシンOSカーネル40と直接インタフェース
をとる。
【0040】リアルタイムアプリケーションの型式は、
オペレーティングシステムがインストールされているオ
フィスマシンの型式に応じて相異する。ファクス装置に
おいて、リアルタイムアプリケーションはファクスプロ
トコル、ネットワークプロトコル、又は電話のトランザ
クションが進行中にメモリからファイルを回収するアプ
リケーションを含むことができる。電話中において、リ
アルタイムアプリケーションは、表示スクリーンを毎秒
10〜30回更新するビデオ会議プログラム、ISDN
(Integraded Services Digital Network) のようなディ
ジタル電話プロトコル、データモデムプロトコル、又は
音声通信中に電話によりスプレッドシートファイルのよ
うなデータを伝送できる切換音声及びデータアプリケー
ションを含むことができる。携帯装置においては、リア
ルタイムアプリケーションは例えばワイヤレスコミュニ
ケーションプロトコルを含むことができる。これらのリ
アルタイムアプリケーションの各々はタイミング要件に
合致した予想した態様で実行する必要がある。これらは
リアルタイムアプリケーションの例を数個例示したにす
ぎず、他の多くのリアルタイムアプリケーションを実行
することができるものと理解すべきである。
【0041】オフィスマシンI/Oアプリケーション及
びウィンドウズ処理されるアプリケーションを含むフォ
ーグランドアプリケーションは非プレエンプライブでス
ケジュールされる。非プレエンプティブアプリケーショ
ンとオペレーティングシステムとの間の連絡はより複雑
である。この理由は、オフィスマシンI/Oアプリケー
ションはオフィスマシンカーネルと会話し図形サービス
と会話する必要があるためである。例えば、ファクス装
置に対する使用者インタフェースとして作用するアプリ
ケーションはスケジューリング及び通信のためにオフィ
スマシンOSカーネル40とアクセスする必要があり、
またGDI及び使用者モジュール44を介して表示装置
とアクセスする必要がある。従って、オフィスマシンI
/Oアプリケーションは、ウィンドウズモジュール44
と連絡するオフィスマシンOSカーネル40と通信する
ことができる。
【0042】図2の下側に示すように、BOSS22及
びプロテクトモードISR64は、オペレーティングシ
ステムをオフィスマシンのハードウエア62から分離す
る。オペレーティングシステム20とハードウエア62
との間の連絡は、保護されたモード割込サービスルーチ
ンを介して行う。
【0043】図3は、オペレーティングシステム20の
ソフトウェアプロセス間の通信を示すブロックダイヤグ
ラムである。これらプロセス間の通信はメッセージを介
して行われる。各プロセスは、他のプロセスから送られ
たメッセージを検索するとともにこれらメッセージに応
答する主メッセージループを有する。キーボード又はマ
ウスのような入出力装置からの全ての入力はメッセージ
として送信される。ウィンドウズアプリケーション用の
メッセージサービスは、ユーザモジュール80のメッセ
ージサブウェイシステムで実行される。しかしながら、
メッセージサービスをユーザモジュール80に配置する
必要はない。メッセージサービスを、オペレーティング
システム20のカーネル26の一部として実行すること
もできる。この特定のインプリメンテーションは、ウィ
ンドウズのオペレーティングシステムからのユーザモジ
ュール80のメッセージサービスを含み、追加的に、ウ
ィンドウズのメッセージサービスと同様なオフィス・マ
シンOSのメッセージシステムを含む。オフィス・マシ
ンOSカーネル40で実行される別個のメッセージサブ
ウェイシステムを有するために、オフィスマシンバック
グランドプロセスを、フォーグランドプロセスの非プリ
エンプティブスケジュールに含まれるユーザモジュール
80から独立して操作することができる。バックグラン
ドプロセスを、所望ならバックグランド内で完全に操作
することができる。
【0044】ユーザモジュールに設けられたメッセージ
サービスを、ウィンドウズオペレーティングシステムに
設けられたメッセージサービスと同一のものとする。当
業者には広く既知のように、ウィンドウズオペレーティ
ングシステムは、UNIXオペレーティングシステムの
「メイルボックス」概念と同様の固定寸法メッセージを
送受信するファシリティを提供する。各プロセスは、他
のプロセスによりPostMassage() 機能を使用するメッセ
ージを追加することができるメッセージキューを有す
る。この場合プロセスは、ブロッキング機能であるGetM
assage()又は非ブロッキング機能であるPeekMessage()
を呼び出すことによりキューからメッセージを検索する
ことができる。SendMessage() 機能により、ウィンドウ
オペレーティングシステムは、プロセスが同期的に処理
されたメッセージを有することができるようになる。Se
ndMessage() を、固定命令で処理する必要がある事象に
関連する表示に用いることができる。同様な動作を、Po
stMassage() を有するメッセージを通知し、次いで通知
したメッセージに対する回答に使用するGetMassage()を
ブロッキングすることにより行うことができる。
【0045】ユーザモジュール80のメッセージサービ
スのように、オフィス・マシンOSカーネル40はメッ
セージサブシステムを有する。メッセージサブシステム
により、オフィス・マシンOSカーネル40は、非ウィ
ンドウズプロセス並びにウィンドウズカーネル42及び
ユーザモジュール80と直接通信することができる。メ
ッセージサブウェイシステム設計は、メッセージキュー
データ構造並びにPostAppMassage()及びGetMassage()と
称される二つの一次機能を含む。これら機能はユーザモ
ジュールのPostMassage() 及びGetMassage()と同様に作
用するが、バックグランドプロセスの独立性を維持する
ために別個に実行される。この独立性が原因で、全ての
プロセスに対して単一のメッセージサブシステムが実行
される。メッセージサブシステム設計のより詳細な点
は、オペレーティングシステムの通信の説明に従う。
【0046】図3では、オペレーティングシステムの範
囲内で通信するために、プロセスを三つのグループに分
類することができる。これらプロセスの三つの分類を、
1)ウィンドウズプロセス(プロセスA)、2)オフィ
スマシンフォーグランドプロセス(プロセスB)及び
3)オフィスマシンバックグランドプロセス(プロセス
C)とする。これらプロセスの第1タイプを、代表的な
ウィンドウズプロセス82とする。これらプロセスは、
「リアルタイム」でない従ってオフィスマシンOSカー
ネル40に対する任意のアクセスを有する必要がない代
表的なウィンドウズアプリケーションを含む。第2タイ
プのプロセス84は、バックグランドプロセス82とユ
ーザモジュール80の両方にアクセスすることができ
る。代表的なアプリケーションを、バックグランドプロ
セスからの情報を蓄積するとともにユーザモジュール8
0を使用するこの情報を表示する必要があるファクシミ
リ装置のユーザインタフェースとする。最後に、第3タ
イプのプロセス86はバックグランド中で操作され、任
意のウィンドウズプロセス82と通信する必要がない。
プロセスをコンパイルすることにより、これら三つの分
類のうちの一つにプロセスを分類することができる。オ
フィスマシンプロセス84,86がコンパイルされて、
全てのメッセージ呼び出しがオフィスマシンOSカーネ
ル40に対して指示される。
【0047】ウィンドウズプロセス82とユーザモジュ
ール80との間の通信は通常、ウィンドウズオペレーシ
ョンシステムで発生する。ユーザモジュールは、StartA
pp()と称される機能で新たにロードされたプロセスに対
するデータ構造を創成する。ウィンドウズプロセスは代
表的には、cランタイムライブラリと称される動的にリ
ンクされたライブラリによって付加される立上げコード
の一部としてStartApp()を呼び出す。立上げ時には、ユ
ーザモジュール80はウィンドウズプロセス82に内部
データ構造を付加するとともに、メッセージキューを割
り当てる。プロセスがStartApp()を呼び出さない場合、
ユーザモジュール80はプロセスの存在を知らない。ウ
ィンドウズプロセス82に関連するメッセージデータを
割り当て解除するために、ユーザモジュール80は、プ
ロセスが消失する際にウィンドウズカーネル42が呼び
出す信号プロシージャを設定する。代表的には、この信
号プロシージャを、StartApp()呼び出し内のSetTaskSig
nalProc() カーネル機能を使用して実行する。
【0048】ユーザモジュール80は、これと通信する
ウィンドウズプロセス82の状態を制御する。プロセス
は基本的には三つの状態すなわち阻止状態、準備状態及
び実行状態を有する。既に説明したように、ウィンドウ
ズプロセス82はGetMassage()呼び出し中阻止される。
GetMassage()のようなプロッキング呼び出しに応答し
て、ユーザモジュール80はプロセスを阻止する。ユー
ザモジュール80は、ランキューにプロセスをいつ配置
するかを決定することによりプロセス「準備」状態及び
「実行」状態を制御する。ウィンドウズプロセス82の
状態をウィンドウズカーネル42に伝達するために、ユ
ーザモジュールは、セマフォー呼び出し88によりウィ
ンドウズカーネル内の事象セマフォーを制御する。この
事象セマフォーを用いることにより、ウィンドウズカー
ネル42はこの場合、ウィンドウズプロセス82の非プ
リエンティブスケジュールを実行する。
【0049】オフィスマシンバックグランドプロセス8
6との通信を、オフィスマシンOSカーネル40のメッ
セージサプシステムによって完全に処理する。オフィス
マシンOSカーネル40はメッセージキューを維持する
とともに、バックグランドプロセスに対する事象セマフ
ォーを制御する。ユーザモジュールのように、オフィス
マシンOSカーネル40はセマフォー呼び出し90によ
りウィンドウズカーネル42の事象セマフォーを制御す
る。オフィスマシンOSカーネル40は、バックグラン
ドプロセスに対する全てのメッセージ呼び出しを処理す
る。
【0050】オフィスマシンフォアグランドシステム8
4の通信は一層複雑となる。その理由は、ユーザモジュ
ール80とオフィスマシンOSカーネル40との両方と
対話する必要があるからである。ユーザモジュール80
とオフィスマシンOSカーネル40の両方は、二つの別
個のメッセージサブシステムと対話するプロセスを有す
ることの固有の問題のために、このタイプのプロセスに
対してメッセージキューを維持することができない。そ
の結果、オフィスマシンOSカーネル40は、オフィス
マシンフォアグランドプロセス84に対して個別のメッ
セージキューを維持しない。オフィスマシンOSカーネ
ル40は、このプロセスに対する全てのメッセージ呼び
出しをトラップし、これらメッセージ呼び出しをユーザ
モジュール80に送信する。ユーザモジュール80はメ
ッセージキューを維持するとともに、プロセスに対する
事象セマキューを制御する。
【0051】オフィスマシンOSカーネル40のメッセ
ージサブシステムは、以下に示す表のような主メッセー
ジ呼び出しを処理する。
【表1】
【0052】オフィスマシンOSカーネル40のメッセ
ージサブシステムは、データ構造及び機能を用いること
により実現される。以下、メッセージキュー設計を表す
データ構造を示す。
【表2】
【0053】これらメッセージキューは本質的には、メ
ッセージキューヘッドに付属するメッセージのリンクリ
ストからなる。リンクリストは主に、静的な制限をメッ
セージキューの寸法に強いることを回避するとともに、
先入れ先だしよりはむしろ任意の順序でメッセージを除
去するのに適応させるために使用される。
【0054】境界条件及び危険地域を減少させるため
に、空メッセージバッファを常に、次のメッセージに対
してキューの終わりに保持しておく。末尾ポインタはこ
の空メッセージバッファを指摘する。ヘッドポインタは
常に最初に利用できるメッセージを指摘する。その結
果、有効なメッセージが存在する場合には常に、ヘッド
が末尾と同一であることがない。オフィスマシンOSカ
ーネル中に維持される計数セマフォーは、キューの空状
態を確認するために使用される。計数セマフォーによ
り、キューが空の場合にヘッドにアクセスするのを防止
するとともに、呼び出しのブロッキングセマンティック
スを付与する。キューの充填状態を、システムが非常に
低容量のメモリであるために新たなメッセージバッファ
を割り当てることができない場合にのみリターンされる
エラー状態とする。
【0055】オフィスマシンOSカーネルとの通信に用
いられる一次機能を以下示す。
【表3】
【0056】PostAppMessage84,86機能を、全ての
オフィスマシンプロセスによりメッセージを通知するた
めに使用し、これら機能を割込み時間とも称することが
できる。このルーチンは先ず、メッセージが通知される
プロセスがオフィスマシンOSカーネル40により与え
られる呼び出しを用いるユーザモジュール80によって
維持されるか否かを決定する。維持される場合、ユーザ
モジュール80に設けられた同様のPostAppMessage()機
能を呼び出して、ジョブを行う。そうでない場合、新た
なメッセージバッファを獲得し、次いでこのバッファ
を、割り込み危険地域内のプロセス用のメッセージキュ
ーに挿入する。最後に、メッセージ内容を適切なバッフ
ァにコピーするとともに、オフィスマシンOSカーネル
呼び出しを用いる計数セマフォーを増分する。
【表4】
【0057】Postmessage のように、GetMessageは最初
に、機能を実行するためにユーザモジュールを呼び出す
必要があるか否かを確認する。必要である場合、全呼び
出しをユーザモジュール80のGetMessage機能に送り出
し、同一の値に戻す。必要でない場合、計数セマフォー
を減分してメッセージの存在を確認し、割込み危険地域
内のヘッドメッセージのリンクを解除し続ける。キュー
にメッセージが存在しない場合、プロセスは計数サマフ
ォーで阻止する。
【0058】GetMessageは、この実施のキューの最初の
メッセージのみリターンする。メッセージキューはリン
クリストであるので、メッセージを任意にアクセスする
ことができる。
【0059】上記通信方式は、ウィンドウズオペレーテ
ィングシステム用のメッセージ方式に良好に適合するこ
とができる。アプリケーションプログラムは、基準ウィ
ンドウズAPIを用いるユーザモジュールと通信するこ
とができる。基準ウィンドウズAPIを用いることに加
え、アプリケーションプログラムは、基準APIの機能
に非常に類似している上記メッセージ機能を用いるオフ
ィスマシンOSカーネルのメッセージサブシステムと通
信することができる。その結果、基準ウィンドウズAP
Iに精通しているソフトウェア開発者は、このシステム
のアプリケーションを容易に創成することができる。
【0060】ここでは、オペレーティングシステムのプ
ロセス間の上記通信を有するので、プロセススケジュー
ルを説明するとこができる。オペレーティングシステム
は、ウィンドウズアプリケーションのようなフォアグラ
ンドプロセスをスケジュールする非プリエンプティブス
ケジューラと、オフィスマシンバックグランドプロセス
のようなリアルタイムプロセスをスケジュールするプリ
エンプティブスケジューラとを有する。本例では、ウィ
ンドウズカーネル42は、オフィスマシンOSカーネル
40がプリエンプティブスケジュールを与える間非プリ
エンプティブスケジュールをサポートする。最初にウィ
ンドウズカーネルの非プリエンプティブスケジューラが
記述され、次いでオペレーティングシステムのスケジュ
ーラの二つのインプリメンテーションが記述される。本
例のオペレーティングシステムのスケジューラが二つの
別個のカーネルで実行されたとしても、スケジューラを
単一のカーネルで実行できることは理解できる。スケジ
ューラのインプリメンテーションの他の変形が存在する
が、いずれの場合でも、スケジューラはプリエンプティ
ブスケジュールを与えて、リアルタイムアプリケーショ
ンをサポートする。
【0061】ウィンドウズカーネル42は非プリエンプ
ティブスケジュールを与える。ウィンドウズカーネル
は、スケジューラに基づく優先順位を有する。優先順位
を非プリエンプティブプロセスに割り当てることは本発
明では危険ではなく、種々の方法で実行することができ
る。基本的には、プロセスを実行して、リンクプロセス
のリストを作表することができる。プロセスをラウンド
ロビン方式で実行する。ウィンドウズカーネル42内の
スケジューラは、現在のプロセスが許可呼び出しをウィ
ンドウズカーネル42に対して作成する場合、プロセス
をスケジュールすることを試みるだけである。基準ウィ
ンドウズ形態では、ユーザモジュール80はGetMessage
のように所定のメッセージ呼び出しに許可呼び出しを作
成する。非プリエンプティブプロセスがメッセージキュ
ーを検査するプロセスで頻繁に許可呼び出しを作成する
ので、各プロセスは非常に長い時間待機する必要があ
り、したがってプロセスを実行できない。
【0062】図4は、ウィンドウズカーネル42の取り
得る状態からの非プリエンプティブスケジューラのプロ
セス状態ダイヤグラムである。非プリエンプティブウィ
ンドウズプロセス82を、三つの状態すなわち阻止状態
100、準備状態102及び実行状態104のうちの一
つとすることができる。このダイヤグラムは、状態間の
遷移及び遷移をトリガする事象を示す。ユーザモジュー
ル80は、ウィンドウズカーネル42に対する適切な呼
び出しを作成することにより状態間の遷移を制御する。
阻止状態100及び準備状態102に対する遷移を制御
するために、ユーザモジュール80は、ウィンドウズカ
ーネル42に対する二つの基準APIであるWaitevent
106及びPostEvent 108を呼び出す。Waitevent 1
06及びPostEvent 108は、ウィンドウズカーネル4
2の事象セマフォーを処理する。ウィンドウズカーネル
42は、事象セマフォーの値を調べることによりプロセ
スの状態を決定することができる。実行状態(104)
から準備状態(102)までの遷移を制御するために、
ユーザモジュール80はウィンドウズカーネル42に対
する許可呼び出し110を作成する。ウィンドウズカー
ネル42は、非プリエンプティブ方式で全ての準備プロ
セスをスケジュールする。スケジュールされると(11
2)、プロセスは準備状態(102)から実行状態(1
04)に遷移する。
【0063】図5は、ユーザモジュール80によって与
えられた機能と対話するプロセスの取り得る状態からの
非プリエンプティブスケジューラのプロセス状態ダイヤ
グラムである。図4及び5を共に見ると、これらはウィ
ンドウズプロセス82の状態遷移の完全な画像を示す。
プロセスがGetMessage呼び出し114を作成する場合、
ユーザモジュール80は、ウィンウドウズカーネル42
に対するWaitEvent 呼び出し(106)を作成し、プロ
セスが阻止される(100)。新たなメッセージがプロ
セスに対するメッセージキューに到達すると(11
6)、ユーザモジュール80はPostEvent 呼び出しを作
成する(108)とともに、プロセスはスケジュールに
対する準備状態となる(102)。一旦スケジュールに
対すて準備状態となると、ウィンドウズカーネル42は
プロセスをスケジュールする(118)とともに、実行
を開始する(104)。実行プロセスが任意のウィンド
ウズメッセージAPIを呼び出す(120)と、ユーザ
モジュール80は許可呼び出し110を作成するととも
に、プロセスは実行状態104から準備状態102に移
る。このようにして、ウィンドウズプロセス82及びフ
ォアグランドプロセス84をオペレーティングシステム
で非プリエンプティブにスケジュールすることができ
る。
【0064】リアルタイムプロセスが予測できる時間周
期内でスケジュールされることを保証するために、オペ
レーティングシステム内のスケジューラはプリエンプテ
ィブプロセススケジュールを実行する必要がある。プリ
エンプティブスケジュールは一般に、より高い優先順位
のプロセスが現在実行しているプロセスを「優先する」
ことを意味する。より高い優先順位のプロセスにより他
のプロセスを優先することにより、オペレーティングシ
ステムは、最高の優先順位のプロセスが一旦「呼び起こ
される」とこれが既知の時間周期内で実行されることを
保証できる。
【0065】一般にプリエンプティブスケジュールは以
下のようにして実行される。 1)割り込みがフックされて、プリエンプティブスケジ
ューラが割り込み時間に制御を獲得する。 2)プロセッサのスタックが挿入時間で変更され、割り
込みがプリエンプティブスケジューラの許可プロシージ
ャに戻る。次いで、3)プリエンプティブスケジューラ
が現在の最高のプライオリティタスクを再スケジュール
する。実際には、プロセッサスタックは、元のプロセス
がプリエンプティブスケジューラに対する許可呼び出し
を作成したかのように見える。この許可呼び出しを介し
て、プリエンプティブスケジューラはプリエンプティブ
プロセスの制御及びスケジュールを得ることができる。
【0066】プリエンプティブスケジュールに用いられ
る割り込みを、割り込みモジュールによって発生する数
タイプの割り込みのうちのいずれかとすることができ
る。このインプリメンテーションは、nミリ秒ごとに割
り込みが発生してプリエンプティブスケジューラが周期
的にプロセッサの制御を得るようにしたタイマ割り込み
を含む。しかしながら、ハードウェア割り込み又はソフ
トウェア割り込みを変更することにより、スケジューラ
に対する送り出しを制御させることもできる。例えば、
オフィスマシンのキーパッドのキーをユーザが押したこ
とに応答してすなわち呼び出し信号の到来に応答して発
生させることができる。割り込みを、プロセッサ命令を
使用するプロセッサの割り込みをトリガするソフトウェ
アにより発生させることもできる。
【0067】オペレーティングシステムが導入されるプ
ラットホームに依存する先行スケジュール方式を種々の
方法で実行することができる。プリエンプティブスケジ
ューラは、ハードウェア又はソフトウェアにより発生す
る割り込みのようにnミリ秒ごとに及び/又は「事象」
に応じるプロセッサの制御を得る機構を有する必要があ
る。プリエンプティブスケジューラは、これが現在実行
しているプロセスを優先することができるか否かを決定
する必要もある。プリエンプティブスケジューラは、あ
たかもソフトウェア割り込みのような制御を得る。この
状態での重要な制約は、プリエンプティブスケジューラ
が制御を得るソフトウェア割り込みは他のISR又はリ
アルモードBOSSサービスを割り込むことができない
という制限である。
【0068】このインプリメンテーションでは、システ
ムドライバ60はタイマ割り込みを直接フックする。各
タイマ時間割り込みで、システムドライバ60は最初
に、BOSS22のタイマISRに対する割り込みを連
鎖し、次いで割り込みそれ自体を処理する。システムド
ライバ60は、プリエンプティブスケジューラが呼び出
して周期的なタイマの要求の設定することができる機能
を提供する。タイマが切れる度に、システムドライバ
は、割り込み時間のプリエンプティブスケジューラに対
するコールバック機能を作成する。この機能を使用する
ことにより、プリエンプティブスケジューラはnミリ秒
ごとにタイマ割り込みをフックすることができる。
【0069】他のISR又はリアルモードBOSSサー
ビスへの割り込みを回避するために、システムドライバ
は、ISRレジスタ及び現在のスタックセグメント中の
情報を検査する。システムドライバはISRレジスタを
検査して、コールバック機能が実行される前に未決定の
ハードウェア割り込みが存在しないようにする。リアル
モードサービスが割り込まれないようにするために、シ
ステムタイマは現在のスタックセグメントを検査すると
ともに、現在のスタックセグメントがリアルモードであ
るかプロテクトモードであるかを決定する。リアルモー
ドの場合、制御はリアルモードサービスにリターンされ
る。そうでない場合、現在のプロセスが優先される。
【0070】現在のプロセスを優先するために、プリエ
ンプティブスケジューラは以下のように動作する。コー
ルバック機能が制御を獲得するときのスタックの成分
は、システムドライバのタイマISRから決定される。
この情報から、現在実行されている命令を識別できる。
x86ファミリーからのインテルプロセッサでは、C
S:IPはこの命令を識別する。IPは命令ポインタを
意味し、これを、現在実行されている命令のオフセット
を含むレジスタとする。CSはコードセグメントを意味
し、これを、現在実行されている命令を含むコードセグ
メントに対するセレクタを有するレジスタとする。この
場合割り込まれたコードのCS:IPを、スタブ許可プ
ロシージャのCS:IPに置き換える。割り込みがリタ
ーンすると、スタブ許可プロシージャが制御を獲得す
る。許可コードのスタブパートはこの場合、割り込まれ
たコードのCS:IPをプッシュし、割り込みをシミュ
レートするフラグを立て、リアル許可プロシージャに飛
び越す。
【0071】現在実行しているプロセスを優先する際
に、オペレーティングシステムは再入問題を回避する必
要がある。ウィンドウズ処理オペレーティングシステム
のような非プリエンプティブなシステムでは、多数のコ
ードが非再入である。プロセスが非再入である場合、プ
ロセスを優先することができず、この際プリエンプティ
ブ状態の間再入可能である。ウィンドウズ処理プロセス
を優先して再入できない。ウィンドウズディスプレイパ
ラダイムが原因で、ディスプレイを使用するウィンドウ
ズ処理プロセス間の時分割を行うことができない。この
問題は、これらウィンドウズ処理プロセスがそれぞれ再
入可能でないユーザモジュールのような同一の基準ウィ
ンウドウモジュールを呼び出すことが原因で発生する。
しかしながら、バックグランドプロセスはユーザモジュ
ールに対する直接の呼び出しを作成しないすなわちディ
スプレイを使用する。このように、パックグランドプロ
セスを、再入問題が最も少ないフォアグランドプロセス
とともに優先的に時分割することができる。
【0072】再入問題を最小にする一般的な方策では、
バックグランドプロセスとともに時分割することができ
る「システムプロセス」と称される単一のモノリシック
プロセスとして全てのフォアグランドプロセスをみな
す。フォアグランドプロセスは、ウィンドウズ処理プロ
セス、オフィスマシンフォアグランドプロセス及びオフ
ィスマシン入出力プロセスを含むことができる。バック
グランドプロセスはバックグランドオフィスマシンプロ
セスを含む。図2のアプリケーションの分離に反映され
るこの分類により、ディスプレイを使用するプロセスを
有する再入問題が回避される。バックグランドプロセス
が非再入コードに対する呼び出しを作成するので、再入
問題が発生するおそれがある。残存する再入問題を種々
の方法でアドレス指定することができる。これら問題の
解決方法の例を特定のスケジューラの例を参照して説明
する。
【0073】既に要点を説明したプリエンプティブスケ
ジュールを種々の方法で実行することができる。後に説
明するスケジューラの例では、スケジューラを、ウィン
ドウズカーネル42及びオフィスマシンOSカーネル4
0を使用して実行することができる。概して、スケジュ
ーラを、図1で説明したような単一のオペレーティング
システムカーネル26に属するものと考えることができ
る。しかしながら、オペレーティングシステムを説明す
るためには、非プリエンプティブスケジュール及びプリ
エンプティブスケジュールを含むスケジューラのより低
い優先順位での実行をより詳細に説明するのが有益であ
る。
【0074】本例に従うスケジューラは、ウィンドウズ
カーネル42が機能的であるという利点を有する。ウィ
ンドウズカーネル42、ユーザモジュール80及びオフ
ィスマシンOSカーネル40は全て、プロセススケジュ
ールの役割を果たす。全てのプロセスはウィンドウズカ
ーネル42に対して同一に見える−それぞれがウィンド
ウズプロセスとして現れる。ウィンドウズカーネル42
の事象セマフォーを制御することにより、ユーザモジュ
ール80は、ウィンドウズプロセス82及びオフィスマ
シンフォアグランドプロセス84を含むフォアグランド
プロセス70のスケジュールを制御する。オフィスマシ
ンOSカーネル40は、バックグランドオフィスマシン
プロセス86のスケジュールを制御する。ウィンドウズ
カーネル42は、データ構造中のシステム状態の情報を
維持し、したがって現在実行しているプロセスに気付く
必要がある。これを達成するために、ウィンドウズカー
ネルはプロセス間のコンテキスト切替を実行する。した
がってウィンドウズカーネルは、現在のプロセスの正確
な状態の情報を維持することができる。
【0075】ウィンドウズカーネル42は指示された許
可機能及び阻止機能も与える。これによりプロセスを、
プロセスを許可又は阻止する際にスケジュールすべき次
のプロセスを明確に特定することができる。オフィスマ
シンOSカーネル40は、プリエンプティブスケジュー
ルを実行する指示された許可機能及び阻止機能を用い
る。
【0076】スケジューラのインプリメンテーション
を、オフィスマシンの複雑さ及びスケジューラがサポー
トするアプリケーションプログラムのタイプに依存す
る。低い優先順位のオフィスマシンは、ウィンドウズプ
ログラムのような図形ウィンドウ処理プロセスをサポー
トできない。オペレーティングシステムは、オフィスマ
シン入出力に関連するフォアグランドプロセスと、バッ
クグランドプロセスとだけをサポートすることができ
る。この場合、オフィスマシンOSカーネル40は、全
てのプロセスをバックグランドプロセスと見なし、全て
のプロセスを優先的にスケジュールする。より高い優先
順位のオフィスマシンは、ウィンドウズ処理アプリケー
ションのような図形ウィンドウ処理プロセス、オフィス
マシンフォアグランドプロセス及びオフィスマシンバッ
クグランドプロセスを含むことができる。この場合、ウ
ィンドウズ処理アプリケーション及びオフィスマシンフ
ォアグランドプロセスを単一の「システム」プロセスと
みなす。このシステムプロセス内のプロセスは非優先的
にスケジュールされ、システムプロセス及びバックグラ
ンドプロセスは、時分割を変更することにより優先的に
スケジュールされる。
【0077】図6は、本発明の第1実施例によるスケジ
ューラのフローダイヤグラムである。このスケジューラ
は代表的には、オフィスマシンフォアグランドプロセス
及びオフィスマシンバックグランドプロセスのみを有す
る低い優先順位のオフィスマシンで実行される。オフィ
スマシンOSカーネル40は全てのプロセスをリアルタ
イムバックグランドプロセスとみなし、全てのプロセス
を優先的にスケジュールする。図6は、各優先点で、す
なわちオフィスマシンOSカーネル40のプリエンプテ
ィブスケジューラが制御を得る場合nミリ秒ごとの一実
施例でのスケジューラの動作を説明する。
【0078】最初に、プリエンプティブスケジューラは
その内部データ構造を検査して、より高い優先順位のタ
スクをスケジュールする必要があるか否かを見る。より
高い優先順位のタスクが準備できているか否かの決定の
プロセスを、スケジューラデータ構造を参照して以下説
明する。より高い優先順位のタスクが準備されていない
場合、制御は、次の優先点までウィンドウズカーネルが
リターンする(121)。
【0079】次いで、プリエンプティブスケジューラ
は、現在のプロセスを優先できるか否かを決定するため
に検査する。このために、スケジューラは、プロセス又
は優先されたDLLのコードセグメントと、オペレーテ
ィングシステムの非再入モジュールのコードセグメント
のリストとを比較して、プロセス又は優先されたDLL
が非再入であるか否かを決定する。プリエンプティブス
ケジューラは、プロセス又は優先すべきDLLが危険地
域に存在するか否かも検査する。再入問題と危険区域の
うちのいずれかが存在する場合、プリエンプティブスケ
ジューラはコンテキスト切替を行うウィンドウズカーネ
ル42を呼び出さない。
【0080】しかしながら、前記条件がいずれも存在し
ない場合、プリエンプティブスケジューラは、コンテキ
スト切替を実行する(124)ウィンドウズカーネルを
呼び出す。
【0081】図7は、本発明の第1実施例によるオペレ
ーティングシステムのプロセスのプロセス状態ダイヤグ
ラムである。このダイヤグラムは、状態間の遷移及び遷
移をトリガする事象とを示す。プロセス状態ダイヤグラ
ムは、バックグランドプロセス及びフォアグランドプロ
セスに対して同一である。その理由は、プロセスの両タ
イプと同様とみなされるからである。
【0082】状態間の遷移は以下のようにして発生す
る。実行プロセス(128)は、これが空メッセージキ
ューにGetMessage呼び出し132を作成する場合「阻止
状態」130に遷移する。阻止プロセスは、新たなメッ
セージが阻止プロセスに対して到達すると(136)、
準備状態134に遷移する。実行プロセス(128)は
次の三つの瞬時に準備状態134に遷移する。 1)実行プロセスが許可呼び出しを作成する際 2)新たなプロセスが創成されるときに発生するLoadMo
dule呼び出しの際 3)オフィスマシンOSカーネルが実行プロセスを優先
する際(138)
【0083】準備状態のプロセスのみがスケジュールさ
れる(140)。ウィンドウズカーネル42は、準備を
始める最初のプロセスをスケジュールする。この最初の
プロセスがスケジュールされた後、プリエンプティブス
ケジューラは、最後のプロセスが阻止する(すなわち空
キューにGetMessage呼び出しを作成する)まで、スケジ
ュールを引き継ぐ。スケジュールされる準備をプロセス
がしていない場合、制御はウィンドウズカーネル42内
に停止する。
【0084】最高位インテリジェントオフィスマシンで
は、スケジュールがより複雑になる。その理由は、フォ
アグランドプロセス及びバックグランドプロセスが互い
に異なるようにスケジュールされるからである。既に説
明したように、基準ウィンドウズプロセスのようなフォ
アグランドプロセスを、再入問題が原因のために優先的
にスケジュールできない。この問題をアドレス指定する
ために、ウィンドウズプロセス及びオフィスマシンフォ
アグランドプロセスを含むフォアグランドプロセス70
は、システムプロセスのOMOSカーネルによる一つの
スケジュール可能なエンティティと見なされる。システ
ムプロセスはプロセッサ時間の一部、代表的には時分割
の50%に割り当てられ、バックグランドプロセスとと
もに優先的にスケジュールされる。
【0085】優先したシステムDLLをバックグランド
プロセスが呼び出そうと試みる場合には、再入問題が発
生するおそれがある。低いの優先順位のオフィスマシン
の実施例は、優先が適切であるか否かを決定するプロセ
スを検査するコードセグメントを使用する。この解決
は、使用できるとしても、より多くのセグメントを検査
する必要がある場合にはより高い優先順位のマシンでは
有効ではない。最高優先順位のオフィスマシンにおける
他の解決方法として、バックグランドプロセスによるシ
ステムプロセスに対する全ての呼び出しは、オフィスマ
シンOSカーネル40によってトラップされる。呼び出
し中、バックグランドプロセスは一時的に、システムプ
ロセスでウィンドウカーネル42による非優先的にスケ
ジュールしたものと見なされる。一旦呼び出しが完了す
ると、プロセスはバックグランドプロセスに戻り、プロ
セスを優先的にスケジュールすることができる。あらゆ
る残りの再入問題はコードセグメントアプローチによっ
てアドレス指定される。
【0086】図8及び図9は、最高優先順位オフィスマ
シンの実施例に対するプロセス状態ダイヤグラムであ
る。図8はフォアグランドプロセスのプロセス状態ダイ
ヤグラムを示す。フォアグランドプロセスは一つのシス
テムプロセスと見なされる。図9はオフィスマシンバッ
クグランドプロセスのプロセス状態ダイヤグラムを示
す。これらバックグランドプロセスを、システムプロセ
スとともに優先的にスケジュールされるリアルタイムプ
ロセスとする。図4及び7のプロセス状態ダイヤグラム
が類似しているとしても、フォアグランドプロセスとバ
ックグランドプロセスとが互いに異なるようにスケジュ
ールされるのでプロセス状態ダイヤグラムはより複雑と
なる。プリエンプティブスケジューラと非プリエンプテ
ィブスケジューラとではプロセスが相違する状態となる
ので、ダイヤグラムは、各状態遷移に対する各スケジュ
ーラの取り得る状態からのプロセスの状態を示す。図8
に示したフォアグランドプロセスのプロセス状態ダイヤ
グラムは、プリエンプティブスケジューラ及び非プリエ
ンプティブスケジューラのフォアグランドプロセスの状
態間の遷移を表す。略語NPS及びPSは非プリエンプ
ティブスケジューラ及びプリエンプティブスケジューラ
をそれぞれ意味する。
【0087】フォアグランドプロセスの状態は、フォア
グランドプロセスがプリエンプティブスケジューラによ
って優先される(146)場合を除いて、各遷移に対す
る各スケジューラで同一である。この場合、フォアグラ
ンドプロセスは、それがプリエンプティブスケジューラ
によって優先されている(150)間非プリエンプティ
ブスケジューラの準備状態に遷移する。一旦プリエンプ
ティブスケジューラが、先取りされたプロセスを再びス
ケジュールする(148)と、プリエンプティブスケジ
ューラ及び非プリエンプティブスケジューラの実行状態
となる(152)。プリエンプティブスケジューラは、
次の時分割の実行に対する優先されたプロセスをスケジ
ュールする。
【0088】フォアグランドプロセスが優先される場合
を除き、図4及び5を参照して説明した全ての他の点に
ついてスケジュールされる。優先されない場合、フォア
グランドプロセスは、図4のように実行状態(14
2)、阻止状態(156)及び準備状態(156)間で
遷移する。実行状態152から阻止状態154への遷移
は、ウィンドウズカーネルに対するWaitEvent 呼び出し
158で発生する。阻止状態154から準備状態156
への遷移は、ウィンドウズカーネルに対するPostEvent
呼び出し160で発生する。実行プロセスは、許可呼び
出し162の準備状態156に遷移し、準備プロセスは
非プリエンプティブスケジューラ164によってスケジ
ュールされる。非プリエンプティブスケジュールはした
がって、図4に示したものと非常に類似している。
【0089】図9に示すバックグランドプロセスのプロ
セス状態ダイヤグラムは、プリエンプティブスケジュー
ラ及び非プリエンプティブスケジューラのバックグラン
ドプロセスの状態間の遷移を表す。バックグランドプロ
セスの状態は、バックグランドプロセスがオペレーティ
ングシステムの非再入モジュールを呼び出す(170)
場合を除いて、各遷移に対する各スケジューラで同一で
ある。この場合、プロセスはプリエンプティブスケジュ
ーラで阻止され、非プリエンプティブスケジューラ(1
72)によりスケジュールの準備がされる。一旦非プリ
エンプティブスケジューラにより準備されると、バック
グランドプロセスは両スケジューラで実行状態に遷移す
る(176)。
【0090】バックグランドプロセスがオフィスマシン
OSカーネル40と常に通信する間、非プリエンプティ
ブスケジューラ又はプリエンプティブスケジューラによ
ってバックグランドプロセスをスケジュールすることが
できる。オフィスマシンOSカーネル40に対するWait
Event 呼び出し78において、バックグランドプロセス
は、両スケジューラで実行状態(176)から阻止状態
(180)に遷移する。オフィスマシンOSカーネル4
0に対するPostEvent 呼び出し182において、バック
グランドプロセスは、阻止状態(180)から準備状態
(184)に遷移する。一旦準備状態となると、バック
グランドプロセスは、非プリエンプティブスケジューラ
により非優先的にスケジュールされ、又はプリエンプテ
ィブスケジューラにより優先的にスケジュールされる。
バックグランドプロセスは、両スケジューラの実行状態
176から、プリエンプティブスケジューラに対する許
可呼び出し又はプリエンプティブスケジューラにより優
先された場合(188)の両スケジューラの準備状態に
遷移する。
【0091】図10は、最高位オフィスマシンの実施例
のプリエンプティブスケジューラのフローダイヤグラム
である。このフローダイヤグラムにより、バックグラン
ドプロセスがシステムプロセスとともに優先的にスケジ
ュールすることができるのにどれくらいのリアルタイム
を要するかの例を与えることができる。プロセスは一般
にこれら優先順位に基づいてスケジュールされる。同一
の優先順位を有するプロセスはラウンドロビン方式でス
ケジュールされる。
【0092】スケジューラは以下のように動作する。第
1工程では、現在のプロセスを優先できるか否か検査す
る(200)。これは、再入問題がアドレス指定される
場合である。この実行では、再入問題を、全てのフォア
グランドプロセスをスケジュールのためのシステムプロ
セスと見なすことによりアドレス指定する。さらに、メ
モリ管理のようなオペレーティングシステムのキー部分
及びスケジュール部分を優先できない。いずれのコード
も優先されないようにするために、これら部分が現在実
行されている場合に決定する検査コードセグメントのプ
ロセスを用いる。
【0093】現在のプロセスを優先できない場合、スケ
ジューラは制御を優先点の制御のプロセスに戻す(20
1)。
【0094】現在のプロセスを優先できる場合、スケジ
ューラは、システムプロセスが現在優先されているか否
かを決定する(202)。これを達成するために、状態
の変化を検査して、システムプロセスが最後の時分割で
優先されたか否かを見る。この検査を、スケジューラデ
ータ構造を参照して後に詳細に説明する。
【0095】システムプロセスが優先されない場合、ス
ケジューラは、現在実行しているプロセスがシステムプ
ロセスであるか否か決定する(204)。プロセスを種
々の方法で検査することができる。検査を迅速にするた
めに、バックグランドプロセス又はシステムプロセスの
ときには現在のプロセスをオフィスマシンOSカーネル
40にキャッシュする。このキャッシュされた変数は現
在のプロセスIDに対して検査され、これらが現在の状
態に整合する場合には使用される。状態が整合しない場
合、現在のプロセスのタイプを種々の方法で決定するこ
とができる。ある方法ではバックグランドプロセスのリ
ストを維持し、このリストを探索し、整合が見つからな
い場合には現在のプロセスがシステムプロセスであると
仮定する。他の方法では、プロセスに対するタイプID
を記憶して、このタイプを一つのルックアップで見つけ
ることができる。
【0096】システムプロセスが現在のプロセスでない
場合、次のステップは、システムプロセスが準備状態に
あるか否か(206)を決定すべきである。この決定は
種々の方法で行われる。これを行う方法のうちの一つで
は、プロセスリストを維持し、次いでこのリストを探索
してシステムプロセスが準備状態にあるか否かを決定す
る。
【0097】システムプロセスが準備状態にある場合、
スケジューラは、システムタスクが実行状態であること
を表示する現在の状態を設定して、新たな準備システム
プロセスを許可するよう指示する(208)。
【0098】システムプロセスが現在のプロセスである
場合、次のステップは、より高い優先順位のバックグラ
ンドプロセスが準備状態であるか否かを決定すべきであ
る(210)。これを決定するために、パックグランド
プロセスに情報を有する内部データ構造を検査して、よ
り高い優先順位のプロセスをスケジュールする必要があ
るか否かを見る。
【0099】より高い優先順位をスケジュールする必要
がある場合、スケジューラは現在の状態をより高い優先
順位のプロセスに設定して、そのプロセスを許可するよ
うに指示する(212)。スケジューラシステムは、シ
ステムプロセスが優先状態にあることを示すよう変化自
在に状態を設定し、制御がステップ204から直接来た
場合にはタイプIDをセーブする。
【0100】システムプロセスが優先順位にある場合、
スケジューラは、優先システムプロセスであることを示
すよう変化自在に状態をリセットし、前にセーブされた
システムプロセスを許可するように指示する(21
4)。スケジューラは現在の状態も設定して、システム
タスクが実行状態であることを示す。
【0101】より高い優先順位のパックグランドプロセ
ス、準備システムプロセス又は優先システムプロセスの
うちのいずれかをスケジュールする必要がある場合、ス
ケジューラはウィンドウズカーネルを呼び出してコンテ
キスト切替を実行する(216)。
【0102】スケジューラは、以下のデータ構造を使用
して実行される。明確のために、用語「タスク」を、用
語「プロセス」に互いに交換できる。
【表5】
【0103】二つの大域データ構造、すなわちシステム
の全てのバックグランドプロセスを含むnpprHeadにより
指摘された単純リンクリストと、現在準備状態にあるプ
ロセスに対するポインタのアレイとして配置された実行
キューとを維持することができる。完全なリンクリスト
を用いて、例えばプロセス処理を確認する又はメッセー
ジ同時通信を実行する探索のためのアクセス可能な場所
の全ての能動プロセスを保持する。簡単には、処理を、
特定のプロセスを確認する数とする。スケジュール動作
の効率を増大させるために、実行キューは、準備状態の
プロセスのみを記憶する。
【0104】データ構造のもっとも頻繁な動作は、より
高い優先順位のプロセスが準備状態であるか否かを決定
することである。これをできるだけ効率よく行うため
に、現在の最高の優先順位のプロセスを、大域変数nppr
CurHighPriTaskに記憶する。各時分割で、現在実行して
いるタスク処理をこのプロセスのタスク処理と比較し
て、プロセスが整合しているか否か確認する(npprCurHi
ghPriTask->hTask) 。この変数の値は、プロセスの状態
が変化するすなわちプロセスの優先順位が変化する事象
でのみ変化することができ、これらの全ては著しく低い
周波数で発生する。このような事象のそれぞれで、この
変数の値を再演算する。実行キューは実行の準備をする
プロセスのみを含むので、この構造の予期しうる数は非
常に小さい。プロセスの数が少ない状態では、この変数
を再演算する最も効率的な方法は、アレイを介した単純
な線型探索である。しかしながら他の形態の探索を用い
ることもできる。
【0105】変数npprCurHighPriTaskは、優先スケジュ
ーラによりスケジュールされた最後のプロセスをポイン
タに記憶させる。npprCurTask の値は、システムプロセ
スがスケジュールされた場合にはNULLとなり、この場合
hCurSysTask はこのプロセスに対する処理を保持する。
hPreemptedSysTask は、最後の時分割で優先された任意
のシステムプロセスをこの処理に記憶させる。それ以外
ではNULLとする。
【0106】オペレーティングシステムを、特定の実施
例を参照して詳細に説明したが、本発明を種々の方法で
実施することができる。例えば、個々のカーネルを使用
する代わりに、プリエンプティブスケジューラ及び非プ
リエンプティブスケジューラを、図1に示すような単一
のカーネルで実現することができる。システム中のメッ
セージサービスを、ユーザモジュールのメッセージサー
ビス及びオフィスマシンOSカーネルのメッセージサブ
システムとは反対に単一のメッセージサブシステムで行
うことができる。
【0107】本発明の原理を種々の実施例を用いて説明
したが、このような原理の範囲内で本発明の構成及び細
部を変形できることは当業者には容易である。
【図面の簡単な説明】
【図1】本発明の実施例によるオペレーションシステム
のアーキテクチャを示すブロック図である。
【図2】本発明の実施例によるオペレーションシステム
のより詳細なブロック線図である。
【図3】本発明の実施例によるオペレーションシステム
のソフトウェアプロセス間の通信形態を示すブロック図
である。
【図4】オペレーションシステムカーネルの取り得る状
態の非プリエンプティブスケジューラのプロセス状態を
示す線図である。
【図5】本発明の実施例のユーザモジュールからの非プ
リエンプティブスケジューラのプロセス状態を示す線図
である。
【図6】本発明の第1実施例によるスケジューラのフロ
ーチャートである。
【図7】本発明の第1実施例によるオペレーションシス
テムのプロセス状態を示す線図である。
【図8】本発明の別の実施例によるオペレーションシス
テムにおけるシステムプロセスのプロセス状態を示す線
図である。
【図9】本発明の別の実施例によるオペレーションシス
テムのバックグランドプロセスのプロセス状態を示す線
図である。
【図10】本発明の別の実施例によるスケジューラのフ
ローチャートである。
【符号の説明】
20 オペレーティングシステム 22 BOSS 24 装置ドライバ 26 カーネル 28 図形サービス
───────────────────────────────────────────────────── フロントページの続き (72)発明者 フランクリン ディー ファイト ジュニ ア アメリカ合衆国 ワシントン州 98006 ベル ヴュー エス イー フィフティセ ブンス プレイス 16658 (72)発明者 アラル メネゼス アメリカ合衆国 ワシントン州 98005 ベルヴュー エヌ イー サーティーンス ストリート 13930 6−2 (72)発明者 キム ステブンス アメリカ合衆国 ワシントン州 98052 レッドモンド エヌ イー ワンハンドレ ッドサーティセカンド アヴェニュー 9016

Claims (27)

    【特許請求の範囲】
  1. 【請求項1】 ソフトウェアをインストールするための
    プロセッサ及びメモリを有するオフィスマシン用の図形
    ウィンドウ処理オペレーティングシステムにおいてリヤ
    ルタイム処理をサポートするに際し、 ウィンドウ処理アプリケーションをスケジュールする非
    プレエンプティブスケジューラと、ウィンドウ処理アプ
    リケーション及びリヤルタイム処理アプリケーションを
    優先的にスケジュールするプレエンプティブスケジュー
    ラと、プレエンプティブスケジューラ及び非プレエンプ
    ティブスケジューラをプロセスと連結させるメッセージ
    サブシステムとを有する図形処理オペレーティングシス
    テムを用意し、 ウィンドウ処理アプリケーションを1個のスケジュール
    可能なプロセスに分類することによりウィンドウ処理ア
    プリケーションを優先的にスケジュールすることを阻止
    し、 前記非プレエンプティブスケジューラを用いてウィンド
    ウ処理アプリケーションを非優先的にスケジュールし、 リヤルタイム処理アプリケーションを優先的にスケジュ
    ールする際、 割込モジユールにより発生した割込に応じて前記プレエ
    ンプティブスケジューラに制御信号を送り、 現在実行中のプロセスを優先させることができるか否か
    決定し、 現在実行中のプロセスのプロセス型式を識別し、 より高い優先順位のリヤルタイム処理アプリケーション
    が前記スケジューラによりスケジュールされるために準
    備されているか否かを決定し、 現在実行中のプロセスの型式及び優先順位に基いてスケ
    ジュールされるために用意されたプロセスをスケジュー
    ルし、 現在実行中のプロセスとスケジュールされたプロセスと
    の間で前後を切り換えることにより現在実行中のプロセ
    スを優先させるリアルタイム処理をサポートする方法。
  2. 【請求項2】 リヤルタイム処理アプリケーション非再
    入モジュールに対する呼出信号を作り、この呼出信号を
    前記非再入モジュールに対してトラップし、 前記呼出が完了するまでリヤルタイム処理アプリケーシ
    ョンを非優先的に一時的にスケジュールする工程をさら
    に含む請求項1に記載の方法。
  3. 【請求項3】 請求項1に記載の方法において、前記非
    プレエンプティブスケジューラがウィンドウ処理アプリ
    ケーションをスケジュールするに際し、 ウィンドウ処理アプリケーションに対するメッセージキ
    ューを維持し、 ウィンドウ処理アプリケーションに対するメッセージキ
    ューのメッセージが到達した時、ウィンドウ処理アプリ
    ケーションを準備状態に配置し、 実行中のウィンドウ処理アプリケーションがメッセージ
    コールを発したとき、準備状態のウィンドウ処理アプリ
    ケーションをラウンドロビン法でスケジュールし、 メッセージキューが実行中のウィンドウ処理アプリケー
    ションに対してメッセージを含んでいないとき、実行中
    のウィンドウ処理アプリケーションを阻止された状態に
    配置する方法。
  4. 【請求項4】 請求項1に記載の方法において、前記プ
    レエンプティブスケジューラがnミリ秒毎にプロセッサ
    からの制御信号を得るに際し、 タイマ割込を行ない、 前記プレエンプティブスケジューラがnミリ秒毎にプロ
    セッサからの制御信号を得るようにタイマ割込をフッキ
    ングし、 プロセッサのスタックを変更して前記タイマ割込をプレ
    エンプティブスケジューラの許可された手順に戻す方
    法。
  5. 【請求項5】 請求項1に記載の方法において、実行中
    のプロセスが優先されるか否か決定する工程が、 実行中のプロセスのコードセグメントをチェックする工
    程と、 実行中のプロセスのコードセグメントを非再入モジュー
    ルのコードセグメントを比較して制御が非再入モジュー
    ル内にあるか否かを決定する工程とを含む方法。
  6. 【請求項6】 請求項1に記載の方法において、実行中
    のプロセスのプロセス型式を識別する工程が、 実行中のプロセス型式をキャッシュされた変数でキャッ
    シングする工程と、 キャッシュされた変数を実行中のプロセスの識別変数と
    比較して、キャッシュされた変数と実行中のプロセス識
    別変数とが整合するか否か決定する工程とを含む方法。
  7. 【請求項7】 実行中のプロセスの識別変数をスケジュ
    ーラデータ構造体に記憶する工程と、 前記キャッシュされた変数と実行中のプロセスの識別変
    数とが整合しない場合、実行中のプロセスの識別変数を
    チェックすることによりプロセス型式を決定する工程と
    をさらに含む請求項6に記載の方法。
  8. 【請求項8】 請求項1に記載の方法において、より高
    い優先順位のプロセスが準備状態にあるか否かを決定す
    る工程が、 より高い優先順位のプロセスを識別する変数を実行中の
    プロセスを識別する変数と比較する工程と、 より高い優先順位のプロセスを識別する変数を、プロセ
    スの状態又は優先順位を変化させるイベントに応じて再
    演算する工程とを含む方法。
  9. 【請求項9】 ソフトウェアをインストールするための
    プロセッサ及びメモリを有するオフィスマシン用の図形
    ウィンドウ処理オペレーティングシステムにおいてリヤ
    ルタイム処理をサポートするに際し、 リヤルタイム処理アプリケーションを優先的にスケジュ
    ールするスケジューラ、及び前記スケジューラをプロセ
    スと通信されるメッセージサブシステムを有する図形ウ
    ィンドウ処理オペレーティングシステムを用意し、 割込モジュールにより発生した割込の際、前記スケジュ
    ーラに制御信号を送り、 割込の際にプロセスをスケジュールするに当って、 より高い優先順位のプロセスが準備されているか否かを
    決定し、 実行中のプロセスを優先できるか否かを決定し、 実行中のプロセスが優先されることができると共により
    高い優先順位のプロセスが準備されている場合、現在実
    行しているプロセスとスケジュールされるように準備さ
    れているより高い優先順位のプロセスとの間の前後を切
    り換えることにより現在実行中のプロセスを優先させる
    方法。
  10. 【請求項10】 請求項9に記載の方法において、前記
    制御信号を送る工程が、 タイマ割込を行なう工程と、 前記プレエンプティブスケジューラがnミリ秒毎にプロ
    セッサの制御信号を得るようにタイマ割込をフッキング
    する工程と、 前記タイマ割込が前記プレエンプティブスケジューラの
    許可された手順に戻るようにプロセッサ中のスタックを
    変更する工程とを含む方法。
  11. 【請求項11】 請求項9に記載の方法において、より
    高い優先順位のプロセスが準備されているか否かを決定
    する工程が、 最も高い優先順位のプロセスを特定する変数を実行中の
    プロセスを識別する変数と比較する工程と、 最も高い優先順位のプロセスを特定する変数を、プロセ
    スの状態又は優先順位を変更させるイベントに応じて再
    演算する工程とを含む方法。
  12. 【請求項12】 請求項9に記載の方法において、実行
    中のプロセスを優先させるか否かを決定する工程が、 プロセスを実行中のコードセグメントをチェックする工
    程と、 プロセスを実行中のコードセグメントを非再入モジュー
    ルのコードセグメントと比較して制御が非再入モジュー
    ル内にあるか否かを決定する工程とを含む方法。
  13. 【請求項13】 フォーグランドプロセス及びバックグ
    ランドプロセスに対するメッセージキューを維持する工
    程と、 メッセージが当該プロセスに対するメッセージキューに
    到達したとき、プロセスを準備状態に置く工程と、 優先されたプロセスを準備状態に置く工程と、 準備状態のプロセスをスケジュールする工程と、 メッセージキューが実行中のプロセスに対するメッセー
    ジを含んでいない場合、当該プロセスを阻止状態に置く
    工程とを含む方法。
  14. 【請求項14】 カーネルと、このカーネルと通信し、
    リヤルタイム処理プロセスのスケジューリングに用いら
    れる割込を与える割込みモジュールとを具え、前記カー
    ネルが、 リヤルタイム処理アプリケーション及びウィンドウ処理
    アプリケーションと通信し、これらアプリケーションを
    互いに並びにオペレーティングシステム中のプロセスと
    通信させるメッセージサブシステムと、 前記メッセージサブシステムと通信し、ウィンドウ処理
    されるアプリケーションを非優先的にスケジュールする
    非プレエンプティブスケジューラと、 前記メッセージサブシステムと通信し、リヤルタイム処
    理アプリケーションを優先的にスケジューリングするプ
    レエンプティブスケジューラであって、リヤルタイム処
    理アプリケーションの優先順位を決定し、決定された優
    先順位に基いてリヤルタイム処理アプリケーションを優
    先的にスケジューリングするプレエンプティブスケジュ
    ーラと、 前記メッセージサブシステムと通信して前記リヤルタイ
    ム処理アプリケーション及びウィンドウ処理アプリケー
    ションに対するセマフォ呼出を受信すると共に、前記プ
    レエンプティブスケジューラ及び非プレエンプティブス
    ケジューラと通信してリヤルタイム処理アプリケーショ
    ン及びウィンドウ処理アプリケーションのスケジューリ
    ングを制御するイベントセマフォとを含むリヤルタイム
    処理アプリケーションをオペレーティングシステム中で
    サポートするオペレーティングシステム。
  15. 【請求項15】 請求項14に記載のオペレーティング
    システムにおいて、前記プレエンプティブスケジューラ
    が非プレエンプティブスケジューラと通信し、ウィンド
    ウ処理されるアプリケーションに対してリヤルタイム処
    理アプリケーションを優先的にスケジュールするオペレ
    ーティングシステム。
  16. 【請求項16】 請求項14のオペレーティングシステ
    ムにおいて、前記メッセージサブシステムが、ウィンド
    ウ処理されるアプリケーションに対するメッセージを記
    憶する第1のメッセージキューと、リヤルタイム処理ア
    プリケーションに対するメッセージを記憶する第2のメ
    ッセジキューとを含むオペレーティングシステム。
  17. 【請求項17】 請求項14に記載のオペレーティング
    システムにおいて、前記ウィンドウ処理アプリケーショ
    ンがオフィスマシンフォーグランドアプリケーションを
    含み、前記メッセージサブシステムが前記オフィスマシ
    ンフォーグランドアプリケーションと通信し、前記非プ
    レエンプティブスケジューラが前記オフィスマシンフォ
    ーグランドアプリケーションからメッセージを受け取る
    と共に非プレエンプティブスケジューラに対してセマフ
    ォ呼出を作成するオペレーティングシステム。
  18. 【請求項18】 請求項14に記載のオペレーティング
    システムにおいて、前記カーネルが第1及び第2のカー
    ネルを含み、第1のカーネルがプレエンプティブスケジ
    ューラを含み、第2のカーネルが非プレエンプティブス
    ケジューラを含むオペレーティングシステム。
  19. 【請求項19】 請求項18に記載のオペレーティング
    システムにおいて、前記メッセージサブシステムが、オ
    フィスマシンフォーグランド及びバックグランドアプリ
    ケーションと通信する第1のメッセージサブシステム
    と、ウィンドウ処理アプリケーションと通信する第2の
    メッセージサブシステムとを含むオペレーティングシス
    テム。
  20. 【請求項20】 ソフトウェアをインストールするため
    のプロセッサ及びメモリを含むオフィスマシンの図形ウ
    ィンドウ処理オペレーティングシステムであって、カー
    ネルと、このカーネルと通信してリヤルタイム処理プロ
    セスのスケジューリングに用いられる割込を与えるタイ
    マとを含み、前記カーネルが、リヤルタイム処理アプリ
    ケーション及びウィンドウ処理アプリケーションと通信
    し、これらアプリケーションを互いに並びにオペレーテ
    ィングシステム中のプロセスを通信させるメッセージサ
    ブシステムと、 このメッセージサブシステムと通信し、リヤルタイム処
    理アプリケーションをウィンドウ処理アプリケーション
    に対して優先的にスケジュールすると共にリヤルタイム
    処理アプリケーションの優先順位を決定するスケジュー
    ラと、 前記メッセージサブシステムと通信してリヤルタイム処
    理アプリケーション及びウィンドウ処理アプリケーショ
    ンに対するセマフォ呼出を受け取ると共に、プレエンプ
    ティブスケジューラ及び非プレエンプティブスケジュー
    ラと通信してリヤルタイム処理アプリケーション及びウ
    ィンドウ処理アプリケーションの状態情報を維持するイ
    ベントセマフォとを含む図形ウィンドウ処理オペレーテ
    ィングシステム。
  21. 【請求項21】 ウィンドウ処理されるプロセスをスケ
    ジュールする非プレエンプティブスケジューラを有する
    図形ウィンドウ処理オペレーティングシステムにおける
    リヤルタイム処理をサポートするに際し、 プレエンプティブスケジューラを図形ウィンドウ処理オ
    ペレーティングシステムと関連させ、このプレエンプテ
    ィブスケジューラが、現在実行中のプロセスが実行のた
    めのリストにスケジュールされているプロセスに対して
    優先すべきであるか否かを周期的に決定する工程と、 ウィンドウ処理プロセスを、プレエンプティブスケジュ
    ーラにより実行のためのリストにスケジュールされ得る
    システムプロセスとして分類する工程と、 これらシステムプロセスのうちのウィンドウ処理プロセ
    スを、非プレエンプティブスケジューラを用いてスケジ
    ュールする工程と、 リヤルタイム処理プロセス及びシステムプロセスをプレ
    エンプティブスケジューラを用いてスケジュールする工
    程とを具え、 前記システムプロセスがプレエンプティブスケジューラ
    によりスケジュールされたとき、非プレエンプティブス
    ケジューラによりウィンドウ処理プロセスをスケジュー
    ルする図形ウィンドウ処理オペレーティングシステムに
    おけるリヤルタイム処理をサポートする方法。
  22. 【請求項22】 請求項21に記載の方法において、前
    記プレエンプティブスケジューラを関連させる工程が、
    プレエンプティブスケジューラをオペレーティングシス
    テムに組み込むことを含む方法。
  23. 【請求項23】 請求項21に記載の方法において、リ
    ヤルタイム処理プロセス及びシステムプロセスをプレエ
    ンプティブスケジューラを用いてスケジュルする工程
    が、 実行中のプロセスを優先させることができるか否か決定
    する工程と、 実行中のプロセスの優先順位を識別する工程と、 より高い優先順位のプロセスがスケジュールするために
    準備されているか否か決定する工程と、 より高い優先順位のプロセスをスケジュールする工程
    と、 スケジュールされたより高い優先順位のプロセスとの前
    後を切り換えることにより実行中のプロセスを優先させ
    る工程とを含む方法。
  24. 【請求項24】 ウィンドウ処理されるプロセスを非優
    先的にスケジュールし、他のプロセスを優先的にスケジ
    ュールする図形ウィンドウ処理オペレーティングシステ
    ムであって、 現在実行中のプロセスを実行のためのリストにスケジュ
    ールされているプロセスに対して優先させるべきか否か
    を周期的に決定するプレエンプティブスケジューラと、 ウィンドウ処理プロセスを、前記プレエンプティブスケ
    ジューラにより実行のためのプロセスのリストにスケジ
    ュール可能なシステムプロセスにグループ化する手段
    と、 前記プレエンプティブスケジューラと通信し、システム
    プロセス中のウィンドウ処理されるプロセスをスケジュ
    ールする非プレエンプティブスケジューラとを具え、 前記システムプロセスがプレエンプティブスケジューラ
    によりスケジュールされたとき、ウィンドウ処理される
    プロセスを非プレエンプティブスケジューラによりスケ
    ジュールする図形ウィンドウ処理オペレーティングシス
    テム。
  25. 【請求項25】 カーネルと、このカーネルと通信し、
    リヤルタイム処理プロセスのスケジューリングに用いら
    れる割込を与える割込みモジュールとを具え、前記カー
    ネルが、 リヤルタイム処理アプリケーション及びウィンドウ処理
    アプリケーションと通信し、これらアプリケーションを
    互いに並びにオペレーティングシステム中のプロセスと
    通信させるメッセージサブシステムと、 前記メッセージサブシステムと通信し、ウィンドウ処理
    されるアプリケーションを非優先的にスケジュールする
    非プレエンプティブスケジューラと、 前記メッセージサブシステムと通信し、リヤルタイム処
    理アプリケーションを優先的にスケジューリングするプ
    レエンプティブスケジューラであって、リヤルタイム処
    理アプリケーションの優先順位を決定し、決定された優
    先順位に基いてリヤルタイム処理アプリケーションを優
    先的にスケジューリングするプレエンプティブスケジュ
    ーラと、 前記メッセージサブシステムと通信して前記リヤルタイ
    ム処理アプリケーション及びウィンドウ処理アプリケー
    ションに対するセマフォ呼出を受信すると共に、前記プ
    レエンプティブスケジューラ及び非プレエンプティブス
    ケジューラと通信してリヤルタイム処理アプリケーショ
    ン及びウィンドウ処理アプリケーションのスケジューリ
    ングを制御するイベントセマフォとを含むリヤルタイム
    処理アプリケーションをサポートするオペレーティング
    システムを含むオフィスマシン。
  26. 【請求項26】 請求項25に記載のオフィスマシンに
    おいて、オフィスマシンをファクス装置としたオフィス
    マシン。
  27. 【請求項27】 請求項25に記載のオペレーティング
    システムにおいて、オフィスマシンを複写機としたオフ
    ィスマシン。
JP7255225A 1994-09-30 1995-10-02 オフィスマシンのオペレーティングシステム及び方法 Withdrawn JPH08212086A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US31602694A 1994-09-30 1994-09-30
US08/316026 1994-09-30

Publications (1)

Publication Number Publication Date
JPH08212086A true JPH08212086A (ja) 1996-08-20

Family

ID=23227143

Family Applications (1)

Application Number Title Priority Date Filing Date
JP7255225A Withdrawn JPH08212086A (ja) 1994-09-30 1995-10-02 オフィスマシンのオペレーティングシステム及び方法

Country Status (2)

Country Link
US (1) US5742825A (ja)
JP (1) JPH08212086A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017157099A (ja) * 2016-03-03 2017-09-07 キヤノン株式会社 情報処理装置、情報処理装置の制御方法、及びプログラム

Families Citing this family (75)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ATE188793T1 (de) * 1994-10-12 2000-01-15 Touchtunes Music Corp Intelligentes system zur numerischen audio- visuellen reproduktion
US6363409B1 (en) * 1995-04-24 2002-03-26 Microsoft Corporation Automatic client/server translation and execution of non-native applications
GB2304944A (en) * 1995-09-12 1997-03-26 Ibm Support for application programs in a distributed environment
US5822584A (en) * 1995-10-13 1998-10-13 Compaq Computer Corporation User selectable priority for disk array background operations
US5835964A (en) * 1996-04-29 1998-11-10 Microsoft Corporation Virtual memory system with hardware TLB and unmapped software TLB updated from mapped task address maps using unmapped kernel address map
US5889990A (en) * 1996-11-05 1999-03-30 Sun Microsystems, Inc. Information appliance software architecture with replaceable service module providing abstraction function between system library and platform specific OS
DE19648422C2 (de) * 1996-11-22 2000-03-30 Hans Beckhoff Verfahren und Vorrichtung zum Implementieren eines echtzeitfähigen Steuerprogramms in einem nicht-echtzeitfähigen Betriebsprogramm
US6745224B1 (en) * 1996-12-06 2004-06-01 Microsoft Corporation Object framework and services for periodically recurring operations
US6412035B1 (en) * 1997-02-03 2002-06-25 Real Time, Inc. Apparatus and method for decreasing the response times of interrupt service routines
US5978912A (en) * 1997-03-20 1999-11-02 Phoenix Technologies Limited Network enhanced BIOS enabling remote management of a computer without a functioning operating system
US5872957A (en) * 1997-05-01 1999-02-16 International Business Machines Corporation Method for flexible simulation modeling of multi-component systems
JPH10328163A (ja) * 1997-05-28 1998-12-15 Siemens Ag 核スピン断層撮影装置のためのパルスシーケンスの制御方法及び装置
US6111894A (en) * 1997-08-26 2000-08-29 International Business Machines Corporation Hardware interface between a switch adapter and a communications subsystem in a data processing system
US6075939A (en) * 1997-09-27 2000-06-13 Lynx Real-Trime Systems, Inc. Tightly coupled, scalable module based micro-kernel operating system architecture
US6430593B1 (en) * 1998-03-10 2002-08-06 Motorola Inc. Method, device and article of manufacture for efficient task scheduling in a multi-tasking preemptive priority-based real-time operating system
KR100550579B1 (ko) * 1998-04-10 2006-06-21 엘지엔시스(주) 현금자동지급기의 제어부
US6502123B1 (en) 1998-06-09 2002-12-31 Advanced Micro Devices, Inc. Isochronous system using certified drivers to ensure system stability
US6704763B1 (en) 1998-06-09 2004-03-09 Advanced Micro Devices, Inc. Hardware enforcement mechanism for an isochronous task scheduler
US6418459B1 (en) 1998-06-09 2002-07-09 Advanced Micro Devices, Inc. Isochronous task scheduling structure for a non-real-time operating system
US6421702B1 (en) 1998-06-09 2002-07-16 Advanced Micro Devices, Inc. Interrupt driven isochronous task scheduler system
US6434589B1 (en) * 1998-06-19 2002-08-13 Tellabs Operations, Inc. Telecommunications job scheduling
US6868433B1 (en) 1998-09-11 2005-03-15 L.V. Partners, L.P. Input device having positional and scanning capabilities
US6636896B1 (en) 1998-09-11 2003-10-21 Lv Partners, L.P. Method and apparatus for utilizing an audibly coded signal to conduct commerce over the internet
US6745234B1 (en) 1998-09-11 2004-06-01 Digital:Convergence Corporation Method and apparatus for accessing a remote location by scanning an optical code
US6704864B1 (en) * 1999-08-19 2004-03-09 L.V. Partners, L.P. Automatic configuration of equipment software
US6823388B1 (en) 1998-09-11 2004-11-23 L.V. Parners, L.P. Method and apparatus for accessing a remote location with an optical reader having a programmable memory system
US7392945B1 (en) 1998-09-11 2008-07-01 Lv Partners, L.P. Portable scanner for enabling automatic commerce transactions
US7191247B1 (en) 1998-09-11 2007-03-13 Lv Partners, Lp Method for connecting a wireless device to a remote location on a network
US6845388B1 (en) * 1998-09-11 2005-01-18 L. V. Partners, L.P. Web site access manual of a character string into a software interface
US7379901B1 (en) 1998-09-11 2008-05-27 Lv Partners, L.P. Accessing a vendor web site using personal account information retrieved from a credit card company web site
US7386600B1 (en) 1998-09-11 2008-06-10 Lv Partners, L.P. Launching a web site using a personal device
US7440993B1 (en) 1998-09-11 2008-10-21 Lv Partners, L.P. Method and apparatus for launching a web browser in response to scanning of product information
US6366946B1 (en) * 1998-12-16 2002-04-02 Microsoft Corporation Critical code processing management
US6584503B1 (en) 1999-07-07 2003-06-24 International Business Machines Corporation Method, system and program for establishing network contact
US6487521B1 (en) 1999-07-07 2002-11-26 International Business Machines Corporation Method, system, and program for monitoring a device to determine a power failure at the device
US6871285B1 (en) 1999-07-07 2005-03-22 International Business Machines Corporation Method, system and program for detecting communication code information
US6453268B1 (en) 1999-07-07 2002-09-17 International Business Machines Corporation Method, system, and program for monitoring a device with a computer using user selected monitoring settings
US7996843B2 (en) 1999-08-25 2011-08-09 Qnx Software Systems Gmbh & Co. Kg Symmetric multi-processor system
US7140015B1 (en) * 1999-09-29 2006-11-21 Network Appliance, Inc. Microkernel for real time applications
US7016060B1 (en) 1999-12-08 2006-03-21 International Business Machines Corporation Method, system, and program for reconfiguring logical printers in a network printing system
CA2402389A1 (en) * 2000-03-08 2002-09-19 Shuffle Master, Inc. Computerized gaming system, method and apparatus
US7988559B2 (en) * 2001-03-08 2011-08-02 Igt Computerized gaming system, method and apparatus
US7043641B1 (en) * 2000-03-08 2006-05-09 Igt Encryption in a secure computerized gaming system
AU2001257566A1 (en) * 2000-05-08 2001-11-20 Transilica, Inc. Priority in a portable thread environment
US6829687B2 (en) * 2000-12-28 2004-12-07 International Business Machines Corporation Volume data net backup
US6591358B2 (en) * 2001-01-26 2003-07-08 Syed Kamal H. Jaffrey Computer system with operating system functions distributed among plural microcontrollers for managing device resources and CPU
US7222347B2 (en) * 2001-03-29 2007-05-22 Intel Corporation Method and apparatus for processing real-time events associated with a wireless communication protocol
CA2460046C (en) * 2001-09-10 2014-06-10 Igt Method for developing gaming programs compatible with a computerized gaming operating system and apparatus
EP1293895A3 (en) * 2001-09-14 2006-01-25 Ricoh Company, Ltd. Program execution apparatus, method for creating an executable program and address solution method
US7178147B2 (en) * 2001-09-21 2007-02-13 International Business Machines Corporation Method, system, and program for allocating processor resources to a first and second types of tasks
US7647591B1 (en) * 2001-09-26 2010-01-12 Palmsource Inc. Method for dynamically enabling the expansion of a computer operating system
US7931533B2 (en) 2001-09-28 2011-04-26 Igt Game development architecture that decouples the game logic from the graphics logics
US8708828B2 (en) 2001-09-28 2014-04-29 Igt Pluggable modular gaming modifiers and configuration templates for gaming environments
US6902481B2 (en) 2001-09-28 2005-06-07 Igt Decoupling of the graphical presentation of a game from the presentation logic
US20030140174A1 (en) * 2002-01-08 2003-07-24 Tsutomu Ohishi Method for generating application for information processing apparatus and image forming apparatus
US20030203755A1 (en) * 2002-04-25 2003-10-30 Shuffle Master, Inc. Encryption in a secure computerized gaming system
JP3882760B2 (ja) * 2003-02-18 2007-02-21 株式会社デンソー タスク間通信方法、プログラム、記録媒体、電子機器
US20040226016A1 (en) * 2003-05-08 2004-11-11 Samsung Electronics Co., Ltd. Apparatus and method for sharing resources in a real-time processing system
US7146439B1 (en) * 2003-06-27 2006-12-05 Emc Corporation Management of background copy task for point-in-time copies
US7305446B2 (en) * 2003-11-03 2007-12-04 International Business Machines Corporation Method and system for processing ingress messages for a state based application associated with a network processor
US7784062B2 (en) * 2004-06-18 2010-08-24 General Electric Company Event based operating system, method, and apparatus for instrumentation and control systems
US20060010446A1 (en) * 2004-07-06 2006-01-12 Desai Rajiv S Method and system for concurrent execution of multiple kernels
EP1724684A1 (en) * 2005-05-17 2006-11-22 BUSI Incubateur d'entreprises d'AUVEFGNE System and method for task scheduling, signal analysis and remote sensor
US7996659B2 (en) * 2005-06-06 2011-08-09 Atmel Corporation Microprocessor instruction that allows system routine calls and returns from all contexts
US20070050765A1 (en) * 2005-08-30 2007-03-01 Geisinger Nile J Programming language abstractions for creating and controlling virtual computers, operating systems and networks
US20070074192A1 (en) * 2005-08-30 2007-03-29 Geisinger Nile J Computing platform having transparent access to resources of a host platform
US20070074191A1 (en) * 2005-08-30 2007-03-29 Geisinger Nile J Software executables having virtual hardware, operating systems, and networks
US20070050770A1 (en) * 2005-08-30 2007-03-01 Geisinger Nile J Method and apparatus for uniformly integrating operating system resources
US20070067769A1 (en) * 2005-08-30 2007-03-22 Geisinger Nile J Method and apparatus for providing cross-platform hardware support for computer platforms
JP2007128244A (ja) * 2005-11-02 2007-05-24 Sony Corp 情報処理方法および装置、記録媒体、並びにプログラム
US8365187B2 (en) * 2010-02-22 2013-01-29 Juniper Networks, Inc. Analysis of short term CPU spikes in an operating system kernel
WO2012044557A2 (en) * 2010-10-01 2012-04-05 Imerj, Llc Auto-configuration of a docked system in a multi-os environment
WO2013074866A1 (en) 2011-11-16 2013-05-23 Flextronics Ap, Llc Feature recognition for configuring a vehicle console and associated devices
US9411637B2 (en) 2012-06-08 2016-08-09 Apple Inc. Adaptive process importance
CN106021000B (zh) * 2016-06-02 2018-06-01 北京百度网讯科技有限公司 用于机器人操作系统的共享内存管理方法和装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5012409A (en) * 1988-03-10 1991-04-30 Fletcher Mitchell S Operating system for a multi-tasking operating environment
US5210873A (en) * 1990-05-25 1993-05-11 Csi Control Systems International, Inc. Real-time computer system with multitasking supervisor for building access control or the like
US5220653A (en) * 1990-10-26 1993-06-15 International Business Machines Corporation Scheduling input/output operations in multitasking systems
US5237684A (en) * 1991-08-12 1993-08-17 International Business Machines Corporation Customized and versatile event monitor within event management services of a computer system
US5396345A (en) * 1991-12-19 1995-03-07 Ricoh Company, Ltd. Multi-function machine for combining and routing image data

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017157099A (ja) * 2016-03-03 2017-09-07 キヤノン株式会社 情報処理装置、情報処理装置の制御方法、及びプログラム

Also Published As

Publication number Publication date
US5742825A (en) 1998-04-21

Similar Documents

Publication Publication Date Title
JPH08212086A (ja) オフィスマシンのオペレーティングシステム及び方法
US5903752A (en) Method and apparatus for embedding a real-time multi-tasking kernel in a non-real-time operating system
US6732138B1 (en) Method and system for accessing system resources of a data processing system utilizing a kernel-only thread within a user process
US5721922A (en) Embedding a real-time multi-tasking kernel in a non-real-time operating system
US5394547A (en) Data processing system and method having selectable scheduler
US5469571A (en) Operating system architecture using multiple priority light weight kernel task based interrupt handling
US5752031A (en) Queue object for controlling concurrency in a computer system
US6834385B2 (en) System and method for utilizing dispatch queues in a multiprocessor data processing system
JP4690437B2 (ja) ネットワークアプリケーションにおける通信方法、通信装置及びそのためのプログラム
FI114663B (fi) Menetelmä ja järjestelmä käyttöjärjestelmätoimintojen suorittamiseksi sekä elektroniikkalaite
US20050015768A1 (en) System and method for providing hardware-assisted task scheduling
KR20070083460A (ko) 다중 커널을 동시에 실행하는 방법 및 시스템
US20070288941A1 (en) Sharing kernel services among kernels
EP2296089A2 (en) Operating systems
US20020065953A1 (en) Priority in a portable thread environment
WO2006055864A2 (en) Method and apparatus for implementing task management of computer operations
JP2000330806A (ja) 計算機システム
US6961934B2 (en) Portable thread environment
WO1996035167A1 (en) System and method for providing cooperative interrupts in a preemptive task scheduling environment
JP3938343B2 (ja) タスク管理システム、プログラム、及び制御方法
US20070198997A1 (en) Customer framework for embedded applications
US7076551B2 (en) Using remote procedure calls to manage co-processor resources
EP1265148B1 (en) Using software interrupts to manage communication between data processors
WO2004061663A2 (en) System and method for providing hardware-assisted task scheduling
US8424013B1 (en) Methods and systems for handling interrupts across software instances and context switching between instances having interrupt service routine registered to handle the interrupt

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20021203