おおえす作成の手引(いち) きそちしき編 Ver 1.1 Copyright © makihata.

Slides:



Advertisements
Similar presentations
1 B10 CPU を作る 1 日目 解説 TA 高田正法
Advertisements

コンピューター概論 (パソコン編) 慶應義塾大学 環境情報学部一年 祖父江 塁. パソコンとゲーム機、何が違 う? マルチタスク ・ PC は情報を同時に複数処 理することが出来る。 (たくさんの仕事を考えながら同時進 行で進めることでゆっくりだけどた くさんの仕事が出来る。) シングルタスク ・ゲーム機は情報をただひとつだ.
理学院 宇宙理学専攻 惑星物理学研究室 修士 2 年 徳永 義哉
計算機工学III オペレーティングシステム #14 ファイル: より進んだファイルシステム 2006/07/21 津邑 公暁
榮樂 英樹 LilyVM と仮想化技術 榮樂 英樹
入 出 力 管 理 オペレーティングシステム 6/26/09.
Linux インストール      のための基礎知識 物理実験 I 情報実験第9回 2003/12/12 中神 雄一.
物理実験 I 情報実験第9回 2004/12/10 小西 丈予 2003/12/12 中神 雄一
物理実験 I 情報実験第9回 Modified 2005/12/2 徳永 義哉Original 2003/12/12 中神 雄一
1.コンピュータと情報処理 p.20 第1章第1節 3.ソフトウェア ソフトウェア 基本ソフトウェア
Android と iPhone (仮題) 情報社会とコンピュータ 第13回
プログラミング入門 電卓番外編 ~エクセルで関数表示~.
プログラミング入門 (教科書1~3章) 2005/04/14(Thu.).
3-1 MySQLについて 発表者:藤村元彦 自然言語処理研究室.
計算機システムⅡ 主記憶装置とALU,レジスタの制御
情報工学基礎(改訂版) 岡崎裕之.
テープ(メモリ)と状態で何をするか決める
自作組込みOSを エミュレータで 動かしてみた 坂井弘亮 (KOZOSプロジェクト) Twitter ID:kozossakai.
OSとコマンド OS:コンピュータを使うための基本プログラム コマンド:OS上で使用できる命令 OS本体であるカーネルの内部コマンド
ファイルシステムとコマンド.
Debian GNU/Linux ー Linuxインストールに必要な基礎知識 ー 三上 彩 鈴木 倫太郎
(original Takagi & Saito, 2007)
App. A アセンブラ、リンカ、 SPIMシミュレータ
2007/1/18 山下 諒蔵 佐藤 春旗 前田 俊行 大山 恵弘 佐藤 秀明 住井 英二郎
さとりすと Satori Ghost Editor 里々ゴーストの統合開発環境を作ったよ page: 1/25
プログラムはなぜ動くのか.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
第5回 CPUの役割と仕組み3 割り込み、パイプライン、並列処理
発表者 2011/01/08 楽しい256バイトイントロの 世界 発表者 2011/01/08.
BASIC、ときどき機械語 田中二郎@日本橋学館大学.
デジタル回路(続き) コンピュータ(ハードウェアを中心に)
Ibaraki Univ. Dept of Electrical & Electronic Eng.
3 Macintoshの基本操作(3) 3.1 エイリアス エイリアスを作る ファイルなどの分身となるファイル アイコンを選択
型付きアセンブリ言語を用いた安全なカーネル拡張
プロジェクト演習Ⅱ インタラクティブゲーム制作 イントロダクション2
1.コンピュータと情報処理 p.18 第1章第1節 2.コンピュータの動作のしくみ CPUと論理回路
前坂 たけし (北大院・理) 其の壱 はじめての BIOS 前坂 たけし (北大院・理)
コンピュータ系実験Ⅲ 「ワンチップマイコンの応用」 第1週目 アセンブリ言語講座
プログラミング言語入門.
オペレーティングシステム イントロダクション
Ibaraki Univ. Dept of Electrical & Electronic Eng.
アルゴリズムとデータ構造 補足資料5-1 「メモリとポインタ」
第7回 授業計画の修正 中間テストの解説・復習 前回の補足(クロックアルゴリズム・PFF) 仮想記憶方式のまとめ 特別課題について
Ibaraki Univ. Dept of Electrical & Electronic Eng.
コンピュータの基本構成について 1E16M001-1 秋田梨紗 1E16M010-2 梅山桃香 1E16M013-3 大津智紗子
実物投影機の使い方 その① テレビにつないでみよう。.
コンピュータ概論B ー ソフトウェアを中心に ー #02 システムソフトウェアと アプリケーションソフトウェア
VBで始めるプログラミング こんにちは、世界。 /28 NARC.
未使用メモリに着目した 複数ホストにまたがる 仮想マシンの高速化
環境システム科学演習(後半) FORTRAN & C(以降FORTRANと省略して呼びます)は富士通
情報とコンピュータ 静岡大学工学部 安藤和敏
先週の復習: CPU が働く仕組み コンピュータの構造 pp 制御装置+演算装置+レジスタ 制御装置がなければ電卓と同様
オペレーティングシステム i386アーキテクチャ(1)
コンピュータの仕組み 〜ハードウェア〜 1E15M009-3 伊藤佳樹 1E15M035-2 柴田将馬 1E15M061-1 花岡沙紀
コンピュータにログイン 第1章 コンピュータにログイン 啓林館 情報A最新版 (p.6-13)
Linux の世界に 触れてみよう! 情報実験 第 3 回 (2005/10/21)
第5回 メモリ管理(2) オーバレイ方式 論理アドレスとプログラムの再配置 静的再配置と動的再配置 仮想記憶とメモリ階層 セグメンテーション
明星大学 情報学科 2012年度前期     情報技術Ⅰ   第1回
第1章 いよいよプログラミング!! ~文章の表示 printf~
計算機アーキテクチャ1 (計算機構成論(再)) 第一回 計算機の歴史、基本構成、動作原理
コンピュータアーキテクチャ 第 3 回.
プログラミング入門 電卓を作ろう・パートI!!.
コンピュータアーキテクチャ 第 2 回.
コンピュータアーキテクチャ 第 5 回.
計算機アーキテクチャ1 (計算機構成論(再)) 第二回 命令の種類と形式
コンピュータアーキテクチャ 第 5 回.
SMP/マルチコアに対応した 型付きアセンブリ言語
第7章 そろそろ int 以外も使ってみよう! ~データ型 double , bool~
明星大学 情報学科 2014年度前期     情報技術Ⅰ   第1回
強制パススルー機構を用いた VMの安全な帯域外リモート管理
Presentation transcript:

おおえす作成の手引(いち) きそちしき編 Ver 1.1 Copyright © makihata

お詫び この資料は、あくまでOSをどのように作るかを示しているので、重要なところしかピックアップしていません。そのため、すべてを理解することはできないと思います。とりあえずどんなふうにOSを組んでいくのか、それを理解して、その後につなげていただけたら幸いです。

OSのはじまり その昔、高速に計算を行うコンピュータが登場したとき、そのいかめしい機械は、起動させれば、町の電燈が暗くなり、運転すれば冷房代をとんでもなく食った。このような時代、プログラマはコンピュータの前にはいなかった。プログラマは紙にプログラムを書き、それをコンピュータ室の作業員に手渡して、数日後にその結果を受け取る、そんなことがおこなわれていた。 もちろん、プログラムは絶え間なく申し込まれるわけではなく、一時間に一回ぐらいのペースで申し込まれただろう。では、その一時間の間、コンピュータは起動しておくべきだろうか?普通に考えれば、プログラムがたくさん集まってからコンピュータを起動し、連続で実行したはずである(起動するコストが高いから)。また、プログラムに優先度みたいなものがあるとすれば、作業員は、その優先度の高いプログラムを最初に機械に入れてくれるだろう。 これこそがOSの原点である。つまり、このコンピュータ室の作業員をプログラムとしてあらわしたものなのである。

OS作成の為の知識 OSの概念 まず、勉強しなければいけないのは、これです。参考書などでは余りにも抽象的なので、分かりにくいけど、少しはかじっておくことをお勧めします。 アセンブリ言語 アセンブリ言語は必須。特に、CPUのカーネルモード(OS用のCPUモード)、割り込みあたりでは必ずアセンブリに命を削らなければいけない。 周辺機器の 情報 ドライバなども自分で作る必要があるので、周辺機器に関する情報収集はかなり行うべき。他のOSのドライバ部分もかなり参考になるよ。 コンパイラ リンカ ローダー 私自身がまだ足を踏み入れてない場所。怖いよ~(w とりあえず、アセンブリは一通りできることとして、話を進めます。

とりあえず Boot sector MEM 起動 Data 【ブートプログラム】 OS(カーネル)が動作し始める前に、色々な準備を行うプログラム。 「OSを作っている」といえるまで、相当の時間がかかるでしょう。実際、今現在(2003.10)では、まだブートプログラムの状態です。 ではブートプログラムはどのような形で存在するのでしょうか?それはフロッピーの「ブートセクター」という領域(最初のセクタ)に生のプログラムを書き込むことにより「起動ディスク」を作成します。あとは、フロッピーに起動ディスクをいれて電源を入れればブートセクタに書き込まれたプログラムが実行される、というわけです。 Boot sector MEM Data 起動 生のプログラム PCが起動すると、自動で、あるメモリ領域に転送される。そして実行。 詳しい説明はこちらのサイトを参照してください。本気でバイブルだと思います! http://nobumasa-web.hp.infoseek.co.jp/

とりあえず2 先ほどの「生のプログラム」を「ブートプログラム」と言います。この部分は完全にアセンブリ言語で書くことになります。ブートプログラムとは、OSが起動する前の準備をするプログラムだといいましたが、別に文字を表示して、終了するだけでも、立派なブートプログラムなのですっ! ここは実際に作るのが一番の近道だと思いますので、作ってみたい人はこのサイトを参考に作ってみてください。 プログラマの隠れ里 http://www7.plala.or.jp/keny01/ アセンブリ言語の勉強にもなります。

BIOS OSがなければPrintf()やScanf()などの標準入出力が存在しません。しかし現代のPC(IBM互換機)にはBIOS(Basic Input/Output System)というものがあります。 これは、便利なサブルーチンがたくさん詰まったチップと考えてください。これは一部のOS本体でも利用される、縁の下の力もち的な存在です。たとえば、フロッピーの何セクターを読む、キーボードの入力をまつ、そのような基本的なことができます。 つまり、ブートプログラム中では、キーボードドライバや、フロッピードライバを自作する必要はない、ということなのです。 しかぁし! 後々、このBIOSを呼び出しできなくなります。そのときは、ドライバをガシガシ作りましょうっ☆ Kernel BootProgram BIOS

? 流れの図 BIOS Kernel Floppy Jump MEM 起動 MEM Kernel その後 BIOSコール BootProgram BIOSコール Floppy Kernel MEM BootProgram MEM BootProgram 起動 起動時に自動でメモリ領域に転送。 そして実行。 Jump Kernel BIOSの助けを借りてフロッピー内のカーネルをメモリ領域に転送、いろいろな準備の末、ジャンプ。 カーネルが動きはじめる *ブートプログラムとして読み出されるのは1セクタのみ、よってあとは自力でメモリに転送しなければならない

実は、CPUには二つのモードがあります。 リアルモード プロテクトモード

二つのモードの違い 命令が16BITである 保護機能がない 命令が32BITである その他OSに必要な機能がたくさん まず、普段私たちが触れているCPUはリアルモードの方です。リアルモードの特徴は 命令が16BITである これにより、CPUはアクセスできる物理メモリアドレスは1Mが最大となる。しかも、アクセスする際、連続したメモリ領域とすることができず、セグメントと呼ばれるブロックに区切ってアクセスする必要があり、その大きさは64Kまでに制限されている 保護機能がない UNIXなどのOSでは、多人数、もしくは多数のプログラムが混在するので、メモリ領域を各ユーザ、各プログラムで区切って、他人がその領域を勝手に書き変える、もしくは読むのを防ぐ必要がある。しかし、リアルモードは基本的に「人間が一人、プログラムも一つ(シングルユーザ、シングルタスク)」用に設計されているため、この保護機能がない。 プロテクトモードの特徴 命令が32BITである これにより、物理メモリを最大4Gまで扱うことができるようになる。もちろん、レジスタも拡張されているので、より大きな数値を扱うこともできる。 その他OSに必要な機能がたくさん 保護機能はもちろん、ほかにもOSに必要なさまざまなテクニックが、命令として存在する。これについては後述することにします。

モードの移行 リアルモード プロテクトモード 数命令で移行

Bitと開発環境 【CPUのBIT】 CPUが32BItということは、一つ一つのマシン語命令が32bitの数値やアドレスを扱えるということです。 16bitと32bitでは、プログラムもだいぶ変わってきます。16Bitなら16Bit用のコンパイラ(もしくはアセンブラ)で作成する必要があります。 モード Bit プログラム 開発環境 リアルモード 16 ブートプログラム アセンブラ プロテクトモード 32 カーネル Cコンパイラ ちなみに! プロテクトモードに突入するとBIOSコールがすべて使えなくなります。つまりドライバを書き始めることとなるわけです。