僕とコードとブルーハワイ

omega (@equal_001) の日記

Linux/UNIXの勉強メモ0

 

プログラムの記録媒体の歴史

・コンピュータのプログラムは、昔はデータレコーダーという、音楽カセットテープみたいなものに記録していた。

プログラム=音みたいな感じか。

情報は波で伝わる、光も無線も音も全部波がある。

ディスクからゲームが起動できるように、データレコーダー時代もゲームがあったと聞いた。(MSX動かしてゲームやってる動画がニコニコにうpされてた。)

カセットテープと同じ感じだから、今で言う二時配布だろうか、テレビやラジオから「音」を流してデータレコーダへ録音すればそのゲームがプレイできたらしい。

テープ式なのでデータアクセスは巻き戻し・送りでやる。色々アクセスしたいなら、巻き戻し・送り作業が膨大になって時間がいくつあっても足りない。

・今あるディスク形式は、テープを丸くしたもの。

データへアクセスするとき、データレコーダーのように一直線の道を行ったり来たりするより、円周の中にある一点へ瞬時に移動出来る方が物理的に早い。

レコードのイメージまんま。HDD分解したら円盤、ヘッド、ヘッド動かす機構、その他色々が詰まってる。レコード音源再生装置が丸々詰まってる感じ。

 

UNIXファイルシステムの構造とmount

・FHS(Filesystem Hierarchy Standard)という規格がある。例外はあるがこれがUNIX系OSの基本形式。

すべてのファイルとディレクトリは"/"(ルートディレクトリ)に配置される。/bin, /boot, /dev, /etc, /usr, /var, SWAP はインストール初期に大体ある。これらのディレクトリは必ず/以下に配置されている。(ディレクトリ構造の参照はwikiで)

・mountすれば他のデバイスをくっつけてディレクトリ構造の一部にできる。

例)デバイス1にUNIX系OSをインストールし"/"が生成される。/homeの容量を沢山とりたいのでデバイス2を/homeとしてmountする。

こうやってどんどん好きにデバイスを増やして"/"のファミリーを大きくできる。

複数ファイルシステムを1つにみせるためのものだと思えばおk。

コマンドラインで確認できるが、各デバイスにはそれぞれの識別番号みたいなのが与えられる。

デバイス1・・・/dev/hda

デバイス2・・・/dev/hdb

 

UNIXパーティションという概念(物理・論理)

・物理パーティション

デバイス1(/dev/hda)、デバイス2(/dev/hdb)…と物理的にパーティションを分けること。WindowsだったらCドライブとDドライブかって話。

・論理パーティション

一つのディスクに仮想パーティションをつくること。

普通は一つのディスクに4つのパーティションまでらしい。

例)

"/"や"/boot"はそれぞれ違う論理パーティションにいる。また、"/home"は違う物理パーティションにいる。

SWAP・・・/dev/hda1

/boot・・・/dev/hda2

/・・・/dev/hda3

/home・・・/dev/hdb1

(ここにあるhda"n"またはhdb"n" の整数nは適当。本当はFHSで数字が決まっているのかもしれない。)

パーティションの位置はディスクがフォーマットされるときに決定される。

 

ディスク(データレコーダ)の最初にはどんな情報が入っているか・ブートブログラム

・ディスクの最初の512BにMBR(Master Boot Record)というやつがある。コンピュータに電気を流すと、BIOSがこの部分(ROMとか不揮発RAMとも言われる)をロードする。

すると次に"同じディスクの"アクティブなパーティションのブートブロックにあるプログラム(ブートローダ)をロードする。ここでカーネルを実行するための準備がされる。

ブートローダには、どのカーネルを起動するのか選択させることができるプログラムがある。OSが2つ入っているPCを起動したとき、BIOSが立ち上がった後でどのOSを起動するか選べる画面になるが、アレが出来るようになる。(あれだ、TOSHIBAの僕のPCでは冬になるとペンギンさんがコロコロ転がる冬用画面になるアレだよ。)

一番最初に起動するディスクにしかブートローダはない。ここに、どれくらいのアクティブなパーティションがあって、そこにどんなカーネルがあるのかという情報が入っている。