mul light マルチタスク編 1.0

12
自自 OS Mul light 自自自自自自自

Upload: hideaki-sago

Post on 13-Aug-2015

716 views

Category:

Documents


4 download

TRANSCRIPT

自作 OS   Mul lightマルチタスク編

佐合 秀昭(さごう ひであき) twitter : @hideaki_sago facebook, google+ もやってます。将来の夢は PC 用汎用 OS を世に売り出すこと。打倒 Microsoft!!OS 屋のつもりですが、、仕事は Android アプリを

作ってます。

自己紹介

マルライトと読む学生の頃、作っていた OSx86 上で動作する汎用 OSブートからアプリケーションまですべて自作( Clib

除く)Gnu assembler, C, C++ で作成

自作 OS Mul light って?

CD ブート( El Torito   FDD エミュレート)メモリ管理(セグメンテーション方式、仮想記憶無

し)デバイス管理

タイマ、キーボード、マウス、 ATAPI ( CD )、 etc…割り込み管理GUI (←実はここが一番大変だった;)ファイルシステム( ISO 9660 )システムコールアプリケーションシステムマルチタスク(←今回はここを解説します。)

自作 OS   Mul light の実装機能

マルチタスクについて

プロセス A プロセス B プロセス C

全て同時に動いているように見える!

切り替えのきっかけはタイマ( PIT ) (←これは普通。たぶん。)

優先度は持ち時間制( Linux みたいに複雑じゃないです。)

ハードウェアでスイッチ( Task State Segment )

Mul light のマルチタスク

x86 アーキテクチャのタスク管理機能のデータ構造タスクの状態(レジスタの値)を格納するデータ構

造104 バイトの構成TSS に jmp することでタスク切り替えができるMul light では TSS の構造体をリスト構造にしてあ

Taks State Segment ( TSS )とは

Task State Segment ( TSS )の構成

TSS の構造体を循環リスト構造にすることで、マルチタスクを実現

タスクを sleep させるときはリストから切り離すだけ

最後のタスクが切り離されるときは、アイドルタスクを add している

Mul light のマルチタスク

Mul light のマルチタスク

TSS

リスト構造ポインタ

各種メタデータ

アプリケーション本体

TSS

リスト構造ポインタ

各種メタデータ

アプリケーション本体

TSS

リスト構造ポインタ

各種メタデータ

アプリケーション本体

TSS

リスト構造ポインタ

各種メタデータ

アプリケーション本体

各タスクに持ち時間を与えるタイマ割り込みごとに実行中のタスクの持ち時間を

減らす持ち時間が 0 になったら次のタスクに切り替え持ち時間を調整することで優先度を付けるシステム系タスクは持ち時間を多く設定

スケジューリング

スケジューリング

優先度高