Mul light マルチタスク編 1.0

212 Views

March 24, 22

スライド概要

profile-image

slideshare が Scribd によって有料化されたので移行しました。

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
2.

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

3.

▪ マルライトと読む ▪ 学生の頃、作っていたOS ▪ x86上で動作する汎用OS ▪ ブートからアプリケーションまですべて自作(Clib除 く) ▪ Gnu assembler, C, C++で作成

4.

▪ CDブート(El Torito FDDエミュレート) ▪ メモリ管理(セグメンテーション方式、仮想記憶無し) ▪ デバイス管理 ▪ タイマ、キーボード、マウス、ATAPI(CD)、etc… ▪ 割り込み管理 ▪ GUI(←実はここが一番大変だった;) ▪ ファイルシステム(ISO 9660) ▪ システムコール ▪ アプリケーションシステム ▪ マルチタスク(←今回はここを解説します。)

5.

プロセスA プロセスB プロセスC 全て同時に動いているように見える!

6.

▪ 切り替えのきっかけはタイマ(PIT) (←これは普通。 たぶん。) ▪ 優先度は持ち時間制(Linuxみたいに複雑じゃないで す。) ▪ ハードウェアでスイッチ(Task State Segment)

7.

▪ x86アーキテクチャのタスク管理機能のデータ構造 ▪ タスクの状態(レジスタの値)を格納するデータ構造 ▪ 104バイトの構成 ▪ TSSにjmpすることでタスク切り替えができる ▪ Mul lightではTSSの構造体をリスト構造にしてある

9.

▪ TSSの構造体を循環リスト構造にすることで、マルチ タスクを実現 ▪ タスクをsleepさせるときはリストから切り離すだけ ▪ 最後のタスクが切り離されるときは、アイドルタスク をaddしている

10.

TSS TSS リスト構造ポインタ リスト構造ポインタ 各種メタデータ 各種メタデータ アプリケーション本体 アプリケーション本体 TSS TSS リスト構造ポインタ リスト構造ポインタ 各種メタデータ 各種メタデータ アプリケーション本体 アプリケーション本体

11.

▪ 各タスクに持ち時間を与える ▪ タイマ割り込みごとに実行中のタスクの持ち時間を減 らす ▪ 持ち時間が0になったら次のタスクに切り替え ▪ 持ち時間を調整することで優先度を付ける ▪ システム系タスクは持ち時間を多く設定

12.

優先度高