unix

UNIX 6th code reading - unix/sys2.c

はじめに 今回はunix/sys2.cを見ていきます。ファイルシステム関連のシステムコールがそろっています。各システムコールの説明はユーザマニュアルにも載っているので、合わせて目を通すことをお勧めします。 read( ), write( ) read( )(5711行目)はreadシス…

UNIX 6th code reading - unix/rdwri.c

はじめに 今回はunix/rdwri.cを見ていきます。ファイルの読み書き処理が中心です。 readi( ) readi( )(6221行目)は、inodeに対応するデータの内容をディスクから読み出します。readi( )を呼び出す前に、u.u_base, u.u_offset, u.u_count, u.u_segflgを設定し…

UNIX 6th code reading - unix/fio.c

はじめに 今回はunix/fio.cを見ていきます。u.u_ofile[ ]やfile[ ]の割り当てや、権限チェックなどの関数が揃っています。 getf( ) getf( )(6619行目)は、ファイルディスクリプタから、該当のfile構造体を取得してそれをreturnします。ファイルディスクリプ…

UNIX 6th code reading - unix/subr.c

はじめに 今回はunix/subr.cを見ていきます。仮想的なblock Noから物理デバイスのblock Noに変換するbmap( )を中心に、subr(サブルーチン)の名前の通り、他の関数からよく呼ばれる関数が揃っています。 bmap( ) ファイル中のアクセスしたいデータのオフセッ…

UNIX 6th code reading - unix/namei.c

はじめに 今回はunix/namei.cを見ていきます。システムの中で、ファイルがどのように扱われているかが見えてくると思います。 namei( ) 以前のエントリで書いたように、ファイルはディレクトリによって木構造として管理されています。パスを使うことで、各フ…

UNIX 6th code reading - unix/iget.c

はじめに 今回はunix/iget.cを見ていきます。iget.cはコア中のinode[ ]リソース管理が主です。他に、新たなinodeの生成(ファイルの生成)や、ディレクトリへのエントリ追加に関する処理などがあります。 コア中のinode[ ] unix/inode.hの中でinode構造体の配…

UNIX v6で削除したファイルの復元をしてみた

はじめに 先日、Lions' Commentary on UNIXの読書会に参加したときにUNIX v6のファイルシステム周りのコードを読みました。ファイルのクローズ・削除のあたりを読んでいたときに、あることに気づきました。「ファイル削除するときに、ブロックデバイスのデー…

Lions’ Commentary on UNIX 読書会メモ#12

はじめに Lions本読書会#12に参加してきました。メモを残しておきます。今回は18章を読みました。 togetter 関連ツイートをtogetterでまとめました。 http://togetter.com/li/222603 私のツイートは表記のゆれが大きいので、参考にされる場合は注意して呼ん…

UNIX 6th code reading - unix/alloc.c

はじめに unix/alloc.cを見ていきます。alloc.cではブロックデバイス中のinode領域やデータ領域の割り当て・解放を行っています。 ブロックデバイスのinode領域の割り当て&解放 各ブロックデバイスに対応したsuperblock(filsys構造体(5561行目))がコア中に…

UNIX 6th code reading - mount

はじめに 前回「ブロックデバイスからコアメモリへのinode割り当てを解説する」と言ったのですが、その前にマウントについてまとめます。 マウントとは? マウントとはデバイスをOSに認識させ、OSから使えるようにする仕組みです。 mount構造体 mount構造体…

合宿の成果発表時に使用した資料&togetterまとめ

はじめに 先日の10/15-16にLions本読書会2011秋合宿に参加してきました。そのときの成果発表資料を公開しておきます。また、合宿関連のtweetをtogetterでまとめました。 資料 成果発表に使用した資料はこちらです。UNIX v6 emulator on HTML5 and JavaScript…

どんなときにpanicで落ちる?UNIX V6の話(Lions本合宿のLTネタ)

これが下記を基にしたプレゼン資料です。https://docs.google.com/present/edit?id=0AdSF0S1K6MqxZGNwNjVqOWZfMHM4cno4bWQz&hl=en_US 他の方々の資料はここで見られます。https://sites.google.com/site/lionscommentaryonunixreading/2011autumncanp/result…

Lions’ Commentary on UNIX 読書会メモ#11

はじめに Lions本読書会#11に参加してきました。メモを残しておきます。今回は17章を読みました。 togetter 関連ツイートをtogetterでまとめました。 http://togetter.com/li/190744 終わりに 次回のLions本読書会は11月27日(日)に開催される予定です。「OS…

UNIX V6 file system hack toolのC++版の現状を動画で紹介

前回のエントリでUNIX v6 file system hack toolのHTML5&JavaScript版の紹介をしました。今回はC++版の紹介をします。よろしければご覧ください。コードは現在200-300行くらいです。HTML5&JavaScript版と同様、思っていたより簡単に作れました。

Lions’ Commentary on UNIX 読書会メモ#10

はじめに Lions本読書会#10に参加してきました。メモを残しておきます。今回は16章と17章の最初のほうを読みました。 togetter 関連ツイートをtogetterでまとめました。 http://togetter.com/li/180482 終わりに 次回のLions本読書会は9月18日(日)に開催され…

UNIX V6 file system hack toolの現状を動画で紹介

前回のエントリでUNIX v6 file system hack toolを作り始めたことを書きました。HTML5+JacaScript版がそれなりに形になってきたので、動画で紹介してみました。よろしければご覧ください。肝心のhack toolはこちらからアクセスできます。http://gachapin.jp/…

HTML5とC++で、それぞれUNIX v6のファイルシステムハック始めました

はじめに UNIX v6 code readingもファイルシステムに突入しました。コード読み解いてるだけじゃ物足りないなー。そうだ、UNIX v6 ファイルシステムをハックしてしまおう!と思ったのが今回の始まりです。 その前に UNIX v6ファイルシステム読み込みに関して…

UNIX 6th code reading - ファイルシステム概要その2

はじめに 前回のエントリの続きで、今回もUNIX v6のファイルシステムを見ていきます。前回はブロックデバイスを中心に見ていきました。今回はコアメモリを中心に見ていきます。 コアメモリ中のファイル関係のデータ構造 inode構造体 アクティブなファイルのi…

UNIX 6th code reading - ファイルシステム概要

はじめに 今回からUNIX v6のファイルシステムを見ていきます。いきなりLions本18章を読み解いていくのは難しいと感じたので、まずはファイルシステムの概要をまとめてみました。今回はブロックデバイス上での処理を中心にまとめていきます。次回はコアメモリ…

Lions’ Commentary on UNIX 読書会メモ#8 おさらい その2

はじめに Lions本読書会#8でプロセス切り替えについてもおさらいをした方がいいという話が出ました。そこで解説動画を作ってみましたので公開します。アドレス周りの解説動画もあわせてご覧いただけると理解がしやすいと思います。 http://d.hatena.ne.jp/ta…

UNIX 6th code reading - ディスクキャッシュの効率化

はじめに 前回のエントリでバッファの状態遷移図を描きました。それに関連して、ブロックバッファはディスクキャッシュとして効率化が図られているということをまとめます。 ディスクキャッシュの効率を高めるには B_DONEフラグが立っているとき、そのバッフ…

UNIX 6th code reading - バッファの状態遷移

はじめに 前回のエントリでバッファに関する説明を書きました。ソースを追っているだけではバッファの状態遷移の仕方がわかりづらかったので絵を描いてみました。 各フラグの説明 主要なものだけ簡単に。詳細はThe UNIX I/O Systemを読んでください。 B_READ…

Lions' Commentary on UNIX 読書会メモ#8 おさらい

はじめに Lions本読書会#8で詰まった箇所がありました。それを整理し、解説した動画を作ってみたので公開します。 説明動画 大きな流れ アドレス周りのおさらい estabur( ), sureg( )のおさらい xalloc( )のおさらい 訂正&補足 「メモリアドレスの話」の絵…

Lions’ Commentary on UNIX 読書会メモ#8

はじめに Lions本読書会#8に参加してきました。メモを残しておきます。今回は14章を読みました。 togetter 関連ツイートをtogetterでまとめました。 http://togetter.com/li/151577 今回詰まったポイント 今回一番ひっかかったポイントはxalloc( )の4457行目…

UNIX 6th code reading - バッファ

はじめに 今回は17章を読み解いていきます。17章はバッファ操作に関する内容が書かれています。15-17章はお互いに関連しているので繋がりを意識しながら読むと理解がしやすいと思います。 バッファの概要 バッファという機構を用いてブロックデバイスを操作…

UNIX 6th code reading - RKディスクドライバ

はじめに 今回は16章を見ていきます。PDP11で採用しているRKディスクのドライバを追います。なんとこのデバイスドライバは150行くらいで書かれています。 RKのレジスタ RKをコントロールするためのレジスタがあります。これらのレジスタに適切な値をセットす…

Lions’ Commentary on UNIX 読書会メモ#7

はじめに Lions本読書会#7に参加してきました。メモを残しておきます。今回は13章のトレースから14章のsched()までを読みました。 togetter 関連ツイートをtogetterでまとめました。 http://togetter.com/li/141363 トレースの流れについて トレースの流れが…

UNIX 6th code reading - prf.c(english translation)

this entry is the english translation of http://d.hatena.ne.jp/takahirox/20101123/1290485182 introduction today, i'll make the notes of prf.c. it deals with print messages, panic and so on.this entry follows http://d.hatena.ne.jp/takahirox…

UNIX 6th code reading - 基本入出力入門

はじめに 今回は15章を見ていきます。周辺デバイスとの入出力に関する章です。 参考資料 The Unix I/O System Lions本で参考文献として挙げられている論文 2238クラブに置いてありました。感謝 http://www.tom-yam.or.jp/2238/ref/index.html UNIXカーネルの…

UNIX 6th code reading - mfree(english translation)

this entry is the english translation of http://d.hatena.ne.jp/takahirox/20101107/1289099957 introduction today, i'll make notes of mfree( ) that releases assigned memory area.this entry follows http://d.hatena.ne.jp/takahirox/20110421/130…