JP3613513B2 - オペレーティングシステムのタイマ管理方法 - Google Patents
オペレーティングシステムのタイマ管理方法 Download PDFInfo
- Publication number
- JP3613513B2 JP3613513B2 JP30523599A JP30523599A JP3613513B2 JP 3613513 B2 JP3613513 B2 JP 3613513B2 JP 30523599 A JP30523599 A JP 30523599A JP 30523599 A JP30523599 A JP 30523599A JP 3613513 B2 JP3613513 B2 JP 3613513B2
- Authority
- JP
- Japan
- Prior art keywords
- time
- task
- system timer
- timeout
- timeout time
- 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
Links
Images
Description
【発明の属する技術分野】
本発明はオペレーティングシステム(以下「OS」と略す)、特にマルチタスクOSにおける、各タスクのタイムアウト時間の管理方法に関するものである。
【0002】
【従来の技術】
複数のタスクを並列して実行するマルチタスクOSにおいては、これら複数のタスクを、各タスクごとにメモリ上の領域であるタスク管理ブロック(Task Control Block: 以下「TCB」と略す)を割り当てることにより管理している。特に各タスクのタイムアウト時間については、これらタスクのTCBをそのタイムアウト時間の早い順に並べたリスト構造を生成することにより管理している。このリスト構造を時間待ちリストと呼ぶ。
【0003】
図7(a)はこの時間待ちリストの概念図であり、システムタイマTは現在の時間200を示し(図中の”systim=200”)、時間待ちリストの始点Iのポインタはタイムアウト時間300の(図中の”tmo=300” )TCB1を指示している。これは具体的には時間待ちリストの始点Iに相当するアドレスのデータ中に、TCB1のアドレスを書き込むことにより実現される。また上記タイムアウト時間300はTCB1に書き込まれている。同様にTCB1のポインタはタイムアウト時間500のTCB2を指示し、TCB2のポインタは時間待ちリストの終点Fを指示している。
【0004】
ここでTCB3によって管理されるタイムアウト時間400のタスクが発生すると、図7(b)に示すようにポインタの繋ぎ換えにより、このTCB3は上記時間待ちリスト中のTCB1とTCB2との間に挿入される。このように時間待ちリストをタイムアウトの時間の早い順に配列するのは、タイムアウト時間を経過したタスクのTCBをこの時間待ちリストから削除する際に、この時間待ちリストの先頭のTCBから順に削除できるという便宜のためである。
【0005】
このような時間待ちリストによるタイムアウト時間の管理においては、以下に述べるようにシステムタイマの繰り返しが生じたときの処理が問題となる。
【0006】
即ち、例えば16bitの符号無し整数によるシステムタイマの場合、その上限値は65535(0xffff)であり、この時刻を超過するとシステムタイマの繰り返しが生じ、システムタイマの値は0に戻る。
【0007】
一般に、タスクのタイムアウト時間は、このタスクを管理するTCBからOSに対して、現在時刻からタイムアウトするまでの時間である解除時間を通知することによって指定される。
【0008】
従って、例えば現在時間65500に対して、これより時間300経過後にタイムアウトするようなタスクが発生した場合、OSはこのタスクのタイムアウト時間を65500+300=65800と算出する。
【0009】
ところが、この65800という時間はシステムタイマの上限値65535を超過しているために、このままの値ではシステムタイマが管理することができない。そこでOSはシステムタイマの繰り返し時刻を差し引いた値、即ち65800−(65535+1)=264をこのタスクのタイムアウト時間とし、TCBに書き込む。
【0010】
このタスクのタイムアウト時間264は上述したシステムタイマの繰り返しに起因する見かけの値であるので、図7(c)に示すようにこのタスクを管理するTCB4は上記時間待ちリスト中ではTCB2の末尾に挿入されなければならない。そしてこの適切な挿入を行うためには、この時間待ちリスト中の全てのTCBについて、それぞれ上記システムタイマの繰り返し時刻以前のものであるか否かを判断した上で、上記適切な挿入の位置を検索する必要があり、時間待ちリストの構成に時間がかかるという問題があった。
【0011】
このような問題点を解決する方法の一つが特許第2938072号である。この方法は、以下に説明する第1の時間待ちリストと、第2の時間待ちリストとの異なる2本の時間待ちリストを生成することを特徴とする。即ち、時間待ちのタスクが発生した際に、このタスクのタイムアウト時間がシステムタイマの繰り返し時刻以前であるか以降であるかを判断する。そして繰り返し時刻以前であれば第1の時間待ちリストへ、繰り返し時刻以降であれば第2の時間待ちリストへ、このタスクのTCBをタイムアウト時間の順に配列する。更に、システムタイマの繰り返しが生ずるたびに上記第1と第2の時間待ちリストを切り替えて、現在管理している時間待ちリストの先頭からタイムアウト時間を経過したタスクのTCBを削除する。
【0012】
【発明が解決しようとする課題】
しかし上記特許第2938072号の方法には以下のような問題がある。
【0013】
即ち、タイムアウト時間を経過したタスクのTCBを削除するにあたって、システムタイマの繰り返しが生ずるたびに管理する時間待ちリストを切り替えるために、この管理中の時間待ちリストを指示するポインタを設定する必要がある。そしてこのポインタの指示を上記繰り返しの都度切り替えなければならないため、メモリの使用量が大きくなり、処理に時間がかかる。
【0014】
本発明はこのような問題に鑑みてなされたものであり、メモリの使用量が少なく処理が高速なマルチタスクOSの管理方法を提供するものである。
【0015】
【課題を解決するための手段】
上記の課題を解決するために、本発明では以下の方法を採用している。
【0016】
先ず、メモリ上にシステムタイマの繰り返し時刻を示す連接符号を設定する。そして、上記繰り返し時刻以前のタイムアウト時間を持つタスクのタスク管理ブロックは、時間待ちリストの始点と上記連接符号との間に、タイムアウト時間の順に配設する。同様に、上記繰り返し時刻以降のタイムアウト時間を持つタスクのタスク管理ブロックは、上記連接符号と時間待ちリストの終点との間に、タイムアウト時間の順に挿入する。
【0017】
あるいは、全てのタスクのタスク管理ブロックをタイムアウト時間の順に配設するとともに、上記繰り返し時刻以降の最も早いタイムアウト時刻を持つタスクのタスク管理ブロックを指示するポインタを、メモリ上に設定する。
【0018】
以上により、全てのタスク管理ブロックを、一列のリスト構造によって管理することができる。このため、タスクのタイムアウト時間の管理としては、タイムアウト時間を超過したタスクのタスク管理ブロックを先頭から削除するだけでよい。また新規のタスク管理ブロックの挿入に当たっては、上記連接符号あるいはポインタの前後いずれか一方で挿入箇所の検索を行えばよい。従って高速でメモリ使用量の少ないタイムアウト時間の管理が可能となる。
【0019】
【発明の実施の形態】
以下、本発明の実施の形態について、図面を用いて説明する。
【0020】
(第1の実施の形態)
図1は本発明の第1の実施の形態によるリスト生成処理のフロー図である。このフロー図に基づく時間待ちリストの生成を図2を参照しながら説明する。
【0021】
先ず、図2(a)はタスクの発生していない初期状態を示している。本実施の形態におけるシステムタイマTは16bitの符号無し整数によるものとし、その上限値は65535(0xffff)であるとする。なお、システムタイマTの示している現在時刻63000(図中の”systim=63000”)は一つの例であって、特定の時刻を意味するものではない。
【0022】
この初期状態において、オペレーティングシステム(以下「OS」と略す)の管理する時間待ちリストは始点Iと連接符号Cのみからなる。始点Iとシステムタイマの繰り返し点を意味する連接符号Cとはそれぞれメモリ上に確保された領域であり、この領域内に他のメモリ領域のアドレスを書き込むことにより、タスク管理ブロック(Task Control Block: 以下「TCB」と略す)等を指示するポインタを設定することができる。TCBもまたメモリ上に確保された領域であり、始点I等と同様にTCB等を指示するポインタを設定することができる。
【0023】
この初期状態では始点Iのポインタは連接符号Cを指示し、連接符号Cのポインタは連接符号C自身を指し、当該連接符号Cがこの時間待ちリストの終点を兼ねるようにしている。
【0024】
ここで例えば、上記の初期状態において、解除時間1000のタスクT1が発生すると、このタスクT1のTCB1がOSに対してこの解除時間1000を通知し、時間待ちリストの生成が開始される。そしてシステムタイマTの示す現在時刻63000とこの解除時間1000とに基づいて、OSはこのタスクT1のタイムアウト時間を63000+1000=64000と算出する(図1ステップ10)。
【0025】
続いてシステムタイマTの上限値、即ち繰り返し時刻65355と上記タイムアウト時間64000との比較処理が行われ、始点Iと連接符号Cとの間にTCB1が挿入される(図1ステップ11YES→ステップ12)。即ち、図2(b)に示すように、始点IのポインタをTCB1を指示するように設定し、TCB1のポインタを連接符号Cを指示するように設定する。なお、図2(b)中の”tmo=64000” は上記タイムアウト時間64000がOSによってTCB1に書き込まれたことを示している。
【0026】
一方、上記タスクT1と同時に解除時間3000のタスクT2が発生した場合は、OSによりこのタスクT2のタイムアウト時間は63000+3000=66000と算出される。これはシステムタイマTの繰り返し時刻65355を超過するので、このタスクT2の6TCB2が連接符号Cの後方に挿入される(図1ステップ11NO→ステップ13)。即ち、連接符号CのポインタをTCB2を指示するように設定し、TCB2のポインタを連接符号Cを指示するように設定する。そしてこのときTCB2が管理するタイムアウト時間は66000−(65355+1)=464となる(図2(c))。
【0027】
以下同様に、上記繰り返し時刻以前のタイムアウト時間を持つタスクが発生した場合は、連接符号Cの前方にこのタスクのTCBが時間の順に挿入される。また、上記繰り返し時刻以降のタイムアウト時間を持つタスクが発生した場合は、連接符号Cの後方にこのタスクのTCBが時間の順に挿入される。従って全てのTCBを一列の時間待ちリストで管理できるようになるが、、各TCBの挿入位置を検索する処理は、各TCBのタイムアウト時間によって、連接符号Cの前方または後方の一方のみで行えばよい。
【0028】
図3(a)は上記のリスト生成処理によって生成された時間待ちリストの一例である。
【0029】
上述したように、全てのTCBを一列の時間待ちリストで管理しているため、タスクのタイムアウト時間の管理としては、タイムアウト時間を超過したタスクのTCBを先頭から削除するだけでよい(図3(b))。
【0030】
ここで、上記連接符号Cの前方のTCBが全て削除され(図3(c))、システムタイマTが繰り返しを生じた場合には、始点Iのポインタを連接符号Cの直後のTCB2を指示するように切り替える。そしてさらに連接符号Cのポインタを連接符号C自身を指すように切り替えて、図3(d)に示すような時間待ちリストを生成すれば、上記のリスト生成処理が繰り返し適用できる。
【0031】
以上では連接符号Cを初期状態から設定するものとして説明したが、連接符号Cを上記繰り返し時刻以降のタイムアウト時間を持つタスクが最初に発生した際に設定してもよい。
【0032】
即ち、初期状態においては、時間待ちリストの始点Iのポインタは終点Fを指示する(図4(a))。ここで終点Fは始点I等と同様なメモリ上の領域である。そしてシステムタイマTの繰り返し時刻以前のタイムアウト時間を持つタスクについては、TCBが上記始点Iと終点Fとの間に、タイムアウト時間の順に挿入される(図4(b))。上記繰り返し時刻以降のタイムアウト時間を持つタスクが最初に発生したとき、連接符号Cを設定するとともに上記連接符号Cの後方にこのタスクのTCBを挿入する(図4(c))。以降、TCBの削除については図3において説明した処理と同様である。
【0033】
(第2の実施の形態)
図5は本発明の第2の実施の形態によるリスト生成処理のフロー図である。このフロー図に基づく時間待ちリストの生成を図6を参照しながら説明する。
【0034】
始点I、終点F、システムタイマT、及びタスクのタイムアウト時間の算出方法については第1の実施の形態と同様であるので、説明を省略する。
【0035】
図6(a)はタスクの発生していない初期状態を(systim=63000)示し、始点Iのポインタは終点Fを指示している。この初期状態において、時間待ちのタスクT5(tmo=64000 )、タスクT6(tmo=65000 )が発生したものとする。この場合は図6(b)に示すように、OSはこのタスクT5、タスクT6をそれぞれ管理するTCB5、TCB6を始点Iと終点Fとの間に、タイムアウト時間の順に挿入する(図5ステップ51YES→ステップ54)。
【0036】
ここで、システムタイマTの繰り返し時刻を超過したタイムアウト時刻66000を持つタスクT7(tmo=464 )が発生した場合、OSはタスクT7のTCB7を、TCB6と終点Fとの間に挿入する。そして更に、図6(c)に示すように、メモリ上にこのTCB7を指示するポインタPを設定する。(図5ステップ51NO→ステップ52NO→ステップ54)
その後、時間待ちのタスクが発生した場合には、このタスクのタイムアウト時間が、ポインタPの指示するTCB7のタスクのタイムアウト時間より早いか否かを判断する(図5ステップ53)。そして早い場合はこのTCB7の前方に(図5ステップ53YES→ステップ57)、遅い場合はこのTCB7の後方に(図5ステップ53NO→ステップ56)、上記時間待ちのタスクのTCBをタイムアウト時間の順に挿入する。
【0037】
ここで、タイムアウト時間が上記TCB7のタスクよりも早く、且つ上記繰り返し時刻を超過しているタスクが発生したときは、ポインタPをこのタスクのTCBを指示するように切り替える(図5ステップ57)。これによって、ポインタPを常にシステムタイマTの繰り返し時刻以降の、最も早いタイムアウト時間を持つタスクのTCBを指示するように設定する。
【0038】
以上によって、全てのTCBを一列の時間待ちリストで管理できるようになるので、タイムアウト時間の管理に当たっては、タイムアウト時間を経過したタスクのTCBを上記時間待ちリストの先頭から削除すればよい。システムタイマTの繰り返し時刻を経過したときは、上記ポインタPを消去する。
【0039】
なお、以上ではポインタPを、システムタイマTの繰り返し時刻を超過したタイムアウト時間を持つタスクが、最初に発生したときに設定するものとしたが、初期状態でポインタPが終点Fを指示するように設定してもよい。また終点FがポインタPを兼ねるようにすることもできる。
【0040】
【発明の効果】
以上説明した方法により、全てのタスク管理ブロックを、一列のリスト構造によって管理することができる。このため、タスクのタイムアウト時間の管理としては、タイムアウト時間を超過したタスクのタスク管理ブロックを先頭から削除するだけでよい。従って高速でメモリ使用量の少ないタイムアウト時間の管理が可能となる。
【図面の簡単な説明】
【図1】本発明の第1の実施の形態によるリスト生成処理のフロー図。
【図2】本発明の第1の実施の形態により生成される時間待ちリストの概念図。
【図3】本発明の第1の実施の形態によるタスク管理ブロックの管理方法を示す概念図。
【図4】本発明の第1の実施の形態により生成される時間待ちリストの概念図。
【図5】本発明の第2の実施の形態によるリスト生成処理のフロー図。
【図6】本発明の第2の実施の形態により生成される時間待ちリストの概念図。
【図7】従来の時間待ちリストの概念図。
【符号の説明】
C 連接符号
P ポインタ
I 始点
F 終点
T システムタイマ
1、2、3、4、5、6、7 タスク管理ブロック
Claims (4)
- タスクのタイムアウト時間をシステムタイマとタスク管理ブロックの時間待ちリストとによって管理する、オペレーティングシステムのタイマ管理方法において、
上記システムタイマの繰り返し時刻を示す連接符号をメモリ上に設定する符号設定処理と
各タスクのタスク管理ブロックを、該各タスクのタイムアウト時間の順に、上記連接符号の前後に配設するリスト生成処理とを備えたことを特徴とする、オペレーティングシステムのタイマ管理方法。 - 上記連接符号が上記時間待ちリストの終点を兼ねる、請求項1に記載のオペレーティングシステムのタイマ管理方法。
- 上記連接符号を、上記システムタイマの繰り返し時刻以降のタイムアウト時間を持つタスクが最初に発生したときに設定する上記符号設定処理を備える、請求項1に記載のオペレーティングシステムのタイマ管理方法。
- タスクのタイムアウト時間をシステムタイマとタスク管理ブロックの時間待ちリストとによって管理する、オペレーティングシステムのタイマ管理方法において、
各タスクのタスク管理ブロックを、該各タスクのタイムアウト時間の順に配設するリスト生成処理と
システムタイマの繰り返し時刻以降の、最も早いタイムアウト時間を持つタスクのタスク管理ブロックを指示するポインタをメモリ上に設定するポインタ設定処理とを備えたことを特徴とする、オペレーティングシステムのタイマ管理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP30523599A JP3613513B2 (ja) | 1999-10-27 | 1999-10-27 | オペレーティングシステムのタイマ管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP30523599A JP3613513B2 (ja) | 1999-10-27 | 1999-10-27 | オペレーティングシステムのタイマ管理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2001125798A JP2001125798A (ja) | 2001-05-11 |
JP3613513B2 true JP3613513B2 (ja) | 2005-01-26 |
Family
ID=17942667
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP30523599A Expired - Fee Related JP3613513B2 (ja) | 1999-10-27 | 1999-10-27 | オペレーティングシステムのタイマ管理方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3613513B2 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1328925C (zh) * | 2004-01-14 | 2007-07-25 | 中兴通讯股份有限公司 | 对移动通信设备中内存数据库定时监控的方法 |
JP6508479B2 (ja) * | 2015-11-30 | 2019-05-08 | 京セラドキュメントソリューションズ株式会社 | 実行制御機器、実行制御プログラムおよびタスク実行システム |
CN112508449B (zh) * | 2020-12-21 | 2023-06-30 | 北京元心科技有限公司 | 任务执行方法、装置、电子设备及计算机可读存储介质 |
-
1999
- 1999-10-27 JP JP30523599A patent/JP3613513B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2001125798A (ja) | 2001-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
GB2386715A (en) | Method for the use of a stack in a Java accelerator device | |
JP3613513B2 (ja) | オペレーティングシステムのタイマ管理方法 | |
US5430874A (en) | Control method and system for managing memory control blocks of programmed tasks in a multi-processing system | |
JP2021509509A (ja) | 同時コピー・ガベージ・コレクションのためのコピーおよび転送 | |
EP3588319B1 (en) | Memory module | |
JP3579383B2 (ja) | データ構造内のデータ要素を両方向に成長可能に管理するための方法およびシステム、メモリ・システム | |
JP2000057013A (ja) | トレース情報採取装置及びプログラムを記録した機械読み取り可能な記録媒体 | |
JPH06139082A (ja) | タスクキュー管理方法 | |
JPS63124165A (ja) | 会話型情報処理システムのテキスト編集方式 | |
JP2000132409A (ja) | 待ち状態のないタスクのスタック共有方式 | |
JPH06119190A (ja) | タスク切替処理方式 | |
JP3075646B2 (ja) | タスク起動方式 | |
JPH0325624A (ja) | プログラム制御方式 | |
JP3541817B2 (ja) | パケット交換機 | |
JPH0580993A (ja) | ジヨブ実行順序制御方式 | |
JPH10222382A (ja) | デバイスドライバ実装方式 | |
JP2004021610A (ja) | タスク管理装置 | |
WO2004077297A1 (ja) | 非同期通信プログラム,非同期通信装置並びに非同期通信方法 | |
JPH0285933A (ja) | 情報処理装置 | |
JPH10171666A (ja) | タスク制御ブロック管理機構及びその管理方法 | |
JPH11288385A (ja) | データの加工装置 | |
JPS6367634A (ja) | フア−ムウエアロ−デイング方式 | |
JPH1165907A (ja) | データ管理システム | |
JPH0424828A (ja) | マルチタスク管理方式 | |
JPH09330239A (ja) | 排他制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20040924 |
|
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: 20041020 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20041022 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20071105 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081105 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091105 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091105 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101105 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |