Mul light アプリケーション編 1.0

101 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.

1. CDからデータ(ファイル)を読み取る 2. ヘッダ情報を読み取り、必要なメモリを確保 3. テキスト領域とデータ領域を読み取り、メモリに配 置 4. プログラム・カウンタやスタック・ポインタを設定 5. プロセスにCPUを割り当て、実行

6.

▪ CD(ATAPI)ドライバを実装 ▪ ISO 9660(CDのファイルシステム)読み取りプログ ラムを実装

7.

▪ アプリケーションファイルの先頭にある独自形式の ヘッダを読み取る ▪ ヘッダに記述されているサイズに従ってメモリを確保 アプリケーションファイルの構成 オフセット サイズ 内容 ヘッダ部分 +0x00 4Byte アプリケーション全体のサイズ +0x04 8Byte シグネチャ:"MLAppli\0" +0x0c 4Byte スタック領域サイズ +0x10 4Byte ヒープ領域サイズ +0x14 12Byte +0x20 予約 アプリケーション本体 現在製作中のOSはelfフォーマットにする予定・・

8.

▪ CDからデータ(テキスト・データ領域)を読み取り、 メモリに展開 アプリケーションのメモリマップ オフセット サイズ +0x0000 104B +0x0104 280B +0x0180 内容 TSS リスト構造用ポインタ アプリケーション名 アプリケーションファイルパス 可変 LDT アプリケーション本体 etc... 可変 ヒープ領域 可変 スタック領域 4KiB 特権レベル0用スタック領域 ここに展開

9.

▪ プログラム カウンタを0に設定 ▪ セグメンテーション方式により、プロセス毎にメモリ領域を設 定しているため、0でOK ▪ スタック ポインタをスタック領域の末尾に設定