2011-01-01から1年間の記事一覧

UNIX 6th code reading - パイプ

はじめに 今回はパイプを見ていきます。ソースコードのunix/pipe.cを中心に追っていきます。 パイプの仕組み パイプとはプロセス間の通信を実現する仕組みのことです。各プロセス毎に固有のアドレス空間を持っているため、通常は他プロセスが持っているデー…

UNIX 6th code reading - unix/sys3.c

はじめに 今回はunix/sys3.cを見ていきます。 fstat( ), stat( ) fstat( )(6014行目)はfstatシステムコールのハンドラです。stat( )(6028行目)はstatシステムコールのハンドラです。fstatもstatもファイルのinode情報を取得するシステムコールです。異なるの…

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行目))がコア中に…

単語帳chrome extensionを作成してMA7に応募したよ

download https://chrome.google.com/webstore/detail/jpfhljpnmimfljemkjpdabacnljadadh?hl=jaしょっぱいツールですがMA7に応募してみました! screen shot how to use この動画で紹介している内容から以下の機能を追加しています。chrome右上の眼鏡ボタン…

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ファイルシステム読み込みに関して…

ブラウン運動の可視化プログラムを少し改造してみた

はじめに 光栄なことに、昨日のエントリに対し、結城浩さんからコメントを頂きました。 window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if (d.getElementById(id)) return t; js = d.createEle…

ブラウン運動の可視化プログラムをC++とHTML5でそれぞれ作ってみた

はじめに 久々にC++書きたいなー、とか、物理現象を可視化したいなー、とか、HTML5弄ってみたいなー、とか思っていました。そんな折、数学ガールを読んでいて、ふと目に付いた「ブラウン運動」の文字。そんなわけで「ブラウン運動の可視化」を題材にして、C+…

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

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

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

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

i made a bot replies CRC32 with GAE datastore and python

introduction i translated CRC32 calculation logic from C into pytohn, as you saw at the last entry.and i made a bot replies CRC32 using it with GAE datastore. i'll introduce it. sample @crc32hogeyou get a CRC32 reply if you tweet to it. ja…

the notes of ZIP workshop 1-3

introduction this entry follows http://d.hatena.ne.jp/takahirox/20110628/1309267617 the blog of the host. you can get handout. http://d.hatena.ne.jp/n7shi/20110529 atnd http://atnd.org/events/14792 what i did i implemented CRC 32 calculati…

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

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

the notes of PE workshop#4

introduction i attended PE workshop#4. i implemented a something compiler but i couldn't finish it there.after coming home, i finished it and confirmed it works. so i'll introduce it.links the blog of the host. handout, togetter and so on.…

the notes of ZIP workshop 1-2

introduction this entry follows http://d.hatena.ne.jp/takahirox/20110605/1307259596 the blog of the host. you can get handout. http://d.hatena.ne.jp/n7shi/20110529 atnd http://atnd.org/events/14792 what i did i made a zip archive tool with…

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

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