• 検索結果がありません。

簡易オペレーティングシステムの設計

N/A
N/A
Protected

Academic year: 2021

シェア "簡易オペレーティングシステムの設計"

Copied!
2
0
0

読み込み中.... (全文を見る)

全文

(1)

情報システム工学科  平成14年度後期「自主課題研究」

簡易オペレーティングシステムの設計

064

番  本  武尊

1.  研究課題

windows

linux

など既存のオペレーティングシステ ムの内部構成を理解し、理解をより深めるため、実際 に現在最も普及している

Intel

CPU

上で(FDから 起動する)簡易

OS

を設計・実装してみる.

2.  設計計画

簡易版なので、以下の機能に絞って設計していく.

① 

IPL(ブート処理部)の設計

  電源が入ってから、CPUがディスクの先頭

512byte

をメモリに読み込み、そこで実際にカーネル(OS 核)を読み込むことによって

OS

が起動する.

② 

VRAM

描画ルーチンの設計

 

VGA

で描画する基本的なルーチンを設計

③  割り込み処理部の設計

  ここではキーボードからの割り込みとタイマー割り 込みのみ設計する.

④  メモリ管理部の設計

  フラットモデル.ページングは使用しない.ファース トフィット方式、連結リストを用いて領域割り当て 及び開放を行う.

⑤  タスク管理部の設計

  プロセスの生成、切り替えを実験してみる.

3.  設計内容

保護モードでのメモリ管理

[リアルモード]

[プロテクトモード]

[グローバルディスクリプタテーブル]

[セグメント・セレクタ]

[セグメント・ディスクリプタ]

メモリ管理サブシステムの設計 基本フラットモデル

開放は可変分割方式ファーストフィット方式 空き領域の管理方式にはリスト(チェイン)方式 割込みと例外の処理

IRQ

と割込み

[割り込みディスクリプタテーブル]

タスク管理 タスクの実行

[タスク・ステート・セグメント(TSS)]

タスクの切り替え カーネルの構築

4.  プログラム(OS)の動作

Start_kernel();

_sys_init_vga();

_sys_init_io();

_sys_init_idt();

_sys_mm_init();

set_tss();

set_seg_desc();

LLDT

命令

process1();

void process1() { while (1) {

_sys_printf("PROCESS1 ");

switch_task(0x30);

} }

void process2() { while (1) {

_sys_printf("process2 ");

switch_task(0x20);

}

}

(2)

情報システム工学科  平成14年度後期「自主課題研究」

実行結果 

PROCESS1 process2 PROCESS1 process2 PROCESS1 process2 PROCESS1 process2 PROCESS1 process2 PROCESS1 process2 PROCESS1 process2 PROCESS1 process2 PROCESS1 process2 PROCESS1 process2 PROCESS1 …

5.  まとめ

オペレーティングシステムの基本的な内部構成を設 計・実装することによって、OSのブラックボックス的 なものは結構解消された.ブート処理部はアセンブラで 記述しなければならないためアセンブラの学習にもな った.またブート処理部も含め、割り込み処理、メモリ

管理、タスク生成・切り替えの設計・実装などハード ウェアに密接する部分の設計ではターゲットとする

CPU

及び基盤

BIOS

のアーキテクチャの理解が不可欠 であることがわかった.

参考文献

[1]

インテル・アーキテクチャ・ソフトウェア・デベロ ッパーズ・マニュアル 下巻

http://ime.nu/www.intel.co.jp/jp/developer/design/p entium/manuals/

[2]

「詳解 

LINUX

カーネル」 

O’REILLY

[3]

「オペレーティングシステム  第

2

版  設計と理論

および

MINIX

による実装」 

A・S・タネンバウム

+A・S・ウッドハル

参照

関連したドキュメント

コンクリート標準示方書 [ 施工編 ] には「養生」とし

を稼働させ Host Linux、残る Core を計算 Core として定 義し、計算 Core 上で McKernel を動作させる。Host Linux と McKnernel は IHK

アセンブリ言語assembly language: 機械語と一対一対応する符丁ニーモニックで プログラムを記述したもの アセンブラassembler: アセンブリ言語で記述されたプログラムを 機械語に直すプログラム −→ CPUのアーキテクチャによって それぞれ異なる互換性がない —電子計算機概論I 4—... しかし、この方法では、

Lock-holder preemption 問題 •   VMMは , 仮想 CPU(VCPUs)を物理CPU上でスケジューリン グして実行している •  VCPU1がロックを保持

図 3 は Intel Xeon CPU の Linux クラスタで MPI による特異値分解 (svd) と固有値計算 (eig) を行い、その経過時間 ( 秒 ) を比較して

可視化システムを次の計算機環境上に実装した.Web サーバを実行する PC は,Intel Xeon E5-2609 1.7 GHz (CPU),62

5.2 設定 5.2.1 ドメイン管理

63 図 7 V 字モデル 5 システム設計構成