More Related Content
PDF
【学習メモ#8th】12ステップで作る組込みOS自作入門 PDF
【学習メモ#7th】12ステップで作る組込みOS自作入門 PDF
【学習メモ#9th】12ステップで作る組込みOS自作入門 PDF
【学習メモ#6th】12ステップで作る組込みOS自作入門 PDF
【学習メモ#1st】12ステップで作る組込みOS自作入門 PDF
【学習メモ#3rd】12ステップで作る組込みOS自作入門 PDF
【学習メモ#4th】12ステップで作る組込みOS自作入門 PDF
【学習メモ#11th】12ステップで作る組込みOS自作入門 What's hot
PDF
【学習メモ#5th】12ステップで作る組込みOS自作入門 PDF
[Basic 8] プロセスとスレッド / 入出力 / シェル PDF
[Basic 7] OS の基本 / 割り込み / システム コール / メモリ管理 PDF
Linuxのプロセススケジューラ(Reading the Linux process scheduler) PDF
C++ Transactional Memory言語拡張の紹介 PDF
PDF
PDF
PDF
PDF
SpectreとMeltdown:最近のCPUの深い話 PDF
nakameguro_feature.cpp vol.8 PDF
Linux女子会 - お仕事メリハリ術♪(プロセススケジューラ編) PDF
PPT
PDF
Command Pattern #dezapatan PPTX
Completely Fair Scheduler (CFS) PDF
PPT
PDF
PDF
ロボコン勉強会向けStm32を用いてマスタースレーブシステム Similar to Minix Learning
PPTX
PDF
PDF
C base design methodology with s dx and xilinx ml PDF
PDF
PDF
PDF
PDF
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば PPTX
PDF
PDF
PEZY-SC programming overview PDF
PDF
PDF
PDF
PDF
リバースエンジニアリングのための新しいトレース手法 - PacSec 2010 PDF
PPT
PDF
PDF
Minix Learning
- 1.
- 2.
目的
• ML ==MINIX Learning
• 当初はMirBSD Learningでした ;-)
• MINIXの概観をつかみ、実際に使ってみる
- 3.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
アドレス空間
• テキストセグメント
• プログラムコード
•データセグメント
• 変数
• BRKシステムコールで拡
張される
• スタックセグメント
• 必要に応じて成長する
テキスト
データ
スタック
FFFF
0000
空き
[出典] A.S.Tanenbaum 『オペレーティング 設計と理論およびMINIXによる実装』図1-11
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
MINIXの内部構造
プロセス管理
[出典] A.S.Tanenbaum 『オペレーティング設計と理論およびMINIXによる実装』図2-26
ディスク
タスク
Tty
タスク
クロック
タスク
システム
タスク
イーサネット
タスク …
…
…
メモリ
マネージャ
ファイル
システム
ネットワーク
サーバ
init
ユーザ
プロセス
ユーザ
プロセス
ユーザ
プロセス
レイヤ
4
3
2
1
ユーザプロセス
サーバプロセス
入出力タスク
リソース管理
カーネル
- 19.
- 20.
MINIXの内部構造
プロセス管理
[出典] A.S.Tanenbaum 『オペレーティング設計と理論およびMINIXによる実装』図2-26
ディスク
タスク
Tty
タスク
クロック
タスク
システム
タスク
イーサネット
タスク …
…
…
メモリ
マネージャ
ファイル
システム
ネットワーク
サーバ
init
ユーザ
プロセス
ユーザ
プロセス
ユーザ
プロセス
レイヤ
4
3
2
1
ユーザプロセス
サーバプロセス
入出力タスク
割り込みを捉える
プロセス間通信
を処理する
- 21.
MINIXの内部構造
プロセス管理
[出典] A.S.Tanenbaum 『オペレーティング設計と理論およびMINIXによる実装』図2-26
ディスク
タスク
Tty
タスク
クロック
タスク
システム
タスク
イーサネット
タスク …
…
…
メモリ
マネージャ
ファイル
システム
ネットワーク
サーバ
init
ユーザ
プロセス
ユーザ
プロセス
ユーザ
プロセス
レイヤ
4
3
2
1
ユーザプロセス
サーバプロセス
入出力タスク
デバイス
ドライバ
ともいう
入出力系のプロセス
- 22.
MINIXの内部構造
プロセス管理
[出典] A.S.Tanenbaum 『オペレーティング設計と理論およびMINIXによる実装』図2-26
ディスク
タスク
Tty
タスク
クロック
タスク
システム
タスク
イーサネット
タスク …
…
…
メモリ
マネージャ
ファイル
システム
ネットワーク
サーバ
init
ユーザ
プロセス
ユーザ
プロセス
ユーザ
プロセス
レイヤ
4
3
2
1
ユーザプロセス
サーバプロセス
入出力タスク
FORK, BRK
MOUNT, READ
- 23.
MINIXの内部構造
プロセス管理
[出典] A.S.Tanenbaum 『オペレーティング設計と理論およびMINIXによる実装』図2-26
ディスク
タスク
Tty
タスク
クロック
タスク
システム
タスク
イーサネット
タスク …
…
…
メモリ
マネージャ
ファイル
システム
ネットワーク
サーバ
init
ユーザ
プロセス
ユーザ
プロセス
ユーザ
プロセス
レイヤ
4
3
2
1
ユーザプロセス
サーバプロセス
入出力タスク
シェル, エディタ, コンパイラ
など
- 24.
- 25.
- 26.
システムの初期化
• 16 [bit]か32[bit]でMINIXをコンパイルすることが
できる
• mpx88.sかmpx386.sが使われる
#include <minix/config.h>
#if _WORD_SIZE == 2
#include “mpx88.s”
#else
#include “mpx386.s”
#endif
- 27.
mpx386.s
• 32 bitCPU用の変数や関数の定義をする
• スタックフレームの設定や、
各種プロセッサレジスタの設定をする
• 用語いっぱいで難しいので、
Cプログラムのための準備をすると
考えて下さい
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
- 37.
- 38.
PUBLIC void driver_task(dp)
structdriver *dp;
{
int r, caller, proc_nr;
message mess;
…(中略)…
while(TRUE) {
receive(ANY, &mess);
caller = mess.m_source;
proc_nr = mess.PROC_NR;
…(中略)…
switch(mess.m_type) {
case DEV_OPEN: r = (*dp->dr_open)(dp, &mess); break;
case DEV_CLOSE: r = (*dp->dr_close)(dp, &mess); break;
…(中略)…
default: r = EINVAL; break;
}
…(中略)…
mess.m_type = TASK_REPLAY;
mess.REP_PROC_NR = proc_nr;
mess.REP_STATUS;
send(caller, &mess);
}
}
- 39.
struct driver {
_PROTOTYPE(char *(*dr_name), (void) );
_PROTOTYPE( int (*dr_open), (struct driver *dp, message *m_ptr) );
_PROTOTYPE( int (*dr_close), (struct driver *dp, message *m_ptr) );
_PROTOTYPE( int (*dr_ioctl), (struct driver *dp, message *m_ptr) );
_PROTOTYPE( struct device *(*dr_prepare), (int device) );
_PROTOTYPE( int (*dr_schedule),
(int proc_nr, struct iorequest_s) *request );
_PROTOTYPE( int (*dr_finish), (void));
_PROTOTYPE( void (*dr_cleanup), (void) );
_PROTOTYPE( void (*dr_geometry), (struct partition *entry) );
};
- 40.
- 41.
- 42.
- 43.
- 44.
- 45.
- 46.
- 47.
- 48.
- 49.
- 50.
- 51.
- 52.
- 53.
- 54.
- 55.
- 56.
- 57.
- 58.
- 59.
- 60.
- 61.
- 62.
- 63.
- 64.