2011-01-01から1年間の記事一覧
はじめに 今回はパイプを見ていきます。ソースコードのunix/pipe.cを中心に追っていきます。 パイプの仕組み パイプとはプロセス間の通信を実現する仕組みのことです。各プロセス毎に固有のアドレス空間を持っているため、通常は他プロセスが持っているデー…
はじめに 今回はunix/sys3.cを見ていきます。 fstat( ), stat( ) fstat( )(6014行目)はfstatシステムコールのハンドラです。stat( )(6028行目)はstatシステムコールのハンドラです。fstatもstatもファイルのinode情報を取得するシステムコールです。異なるの…
はじめに 今回はunix/sys2.cを見ていきます。ファイルシステム関連のシステムコールがそろっています。各システムコールの説明はユーザマニュアルにも載っているので、合わせて目を通すことをお勧めします。 read( ), write( ) read( )(5711行目)はreadシス…
はじめに 今回はunix/rdwri.cを見ていきます。ファイルの読み書き処理が中心です。 readi( ) readi( )(6221行目)は、inodeに対応するデータの内容をディスクから読み出します。readi( )を呼び出す前に、u.u_base, u.u_offset, u.u_count, u.u_segflgを設定し…
はじめに 今回はunix/fio.cを見ていきます。u.u_ofile[ ]やfile[ ]の割り当てや、権限チェックなどの関数が揃っています。 getf( ) getf( )(6619行目)は、ファイルディスクリプタから、該当のfile構造体を取得してそれをreturnします。ファイルディスクリプ…
はじめに 今回はunix/subr.cを見ていきます。仮想的なblock Noから物理デバイスのblock Noに変換するbmap( )を中心に、subr(サブルーチン)の名前の通り、他の関数からよく呼ばれる関数が揃っています。 bmap( ) ファイル中のアクセスしたいデータのオフセッ…
はじめに 今回はunix/namei.cを見ていきます。システムの中で、ファイルがどのように扱われているかが見えてくると思います。 namei( ) 以前のエントリで書いたように、ファイルはディレクトリによって木構造として管理されています。パスを使うことで、各フ…
はじめに 今回はunix/iget.cを見ていきます。iget.cはコア中のinode[ ]リソース管理が主です。他に、新たなinodeの生成(ファイルの生成)や、ディレクトリへのエントリ追加に関する処理などがあります。 コア中のinode[ ] unix/inode.hの中でinode構造体の配…
はじめに 先日、Lions' Commentary on UNIXの読書会に参加したときにUNIX v6のファイルシステム周りのコードを読みました。ファイルのクローズ・削除のあたりを読んでいたときに、あることに気づきました。「ファイル削除するときに、ブロックデバイスのデー…
はじめに Lions本読書会#12に参加してきました。メモを残しておきます。今回は18章を読みました。 togetter 関連ツイートをtogetterでまとめました。 http://togetter.com/li/222603 私のツイートは表記のゆれが大きいので、参考にされる場合は注意して呼ん…
はじめに unix/alloc.cを見ていきます。alloc.cではブロックデバイス中のinode領域やデータ領域の割り当て・解放を行っています。 ブロックデバイスのinode領域の割り当て&解放 各ブロックデバイスに対応したsuperblock(filsys構造体(5561行目))がコア中に…
download https://chrome.google.com/webstore/detail/jpfhljpnmimfljemkjpdabacnljadadh?hl=jaしょっぱいツールですがMA7に応募してみました! screen shot how to use この動画で紹介している内容から以下の機能を追加しています。chrome右上の眼鏡ボタン…
はじめに 前回「ブロックデバイスからコアメモリへのinode割り当てを解説する」と言ったのですが、その前にマウントについてまとめます。 マウントとは? マウントとはデバイスをOSに認識させ、OSから使えるようにする仕組みです。 mount構造体 mount構造体…
はじめに 先日の10/15-16にLions本読書会2011秋合宿に参加してきました。そのときの成果発表資料を公開しておきます。また、合宿関連のtweetをtogetterでまとめました。 資料 成果発表に使用した資料はこちらです。UNIX v6 emulator on HTML5 and JavaScript…
これが下記を基にしたプレゼン資料です。https://docs.google.com/present/edit?id=0AdSF0S1K6MqxZGNwNjVqOWZfMHM4cno4bWQz&hl=en_US 他の方々の資料はここで見られます。https://sites.google.com/site/lionscommentaryonunixreading/2011autumncanp/result…
はじめに Lions本読書会#11に参加してきました。メモを残しておきます。今回は17章を読みました。 togetter 関連ツイートをtogetterでまとめました。 http://togetter.com/li/190744 終わりに 次回のLions本読書会は11月27日(日)に開催される予定です。「OS…
前回のエントリでUNIX v6 file system hack toolのHTML5&JavaScript版の紹介をしました。今回はC++版の紹介をします。よろしければご覧ください。コードは現在200-300行くらいです。HTML5&JavaScript版と同様、思っていたより簡単に作れました。
はじめに Lions本読書会#10に参加してきました。メモを残しておきます。今回は16章と17章の最初のほうを読みました。 togetter 関連ツイートをtogetterでまとめました。 http://togetter.com/li/180482 終わりに 次回のLions本読書会は9月18日(日)に開催され…
前回のエントリでUNIX v6 file system hack toolを作り始めたことを書きました。HTML5+JacaScript版がそれなりに形になってきたので、動画で紹介してみました。よろしければご覧ください。肝心のhack toolはこちらからアクセスできます。http://gachapin.jp/…
はじめに 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+…
はじめに 前回のエントリの続きで、今回もUNIX v6のファイルシステムを見ていきます。前回はブロックデバイスを中心に見ていきました。今回はコアメモリを中心に見ていきます。 コアメモリ中のファイル関係のデータ構造 inode構造体 アクティブなファイルのi…
はじめに 今回からUNIX v6のファイルシステムを見ていきます。いきなりLions本18章を読み解いていくのは難しいと感じたので、まずはファイルシステムの概要をまとめてみました。今回はブロックデバイス上での処理を中心にまとめていきます。次回はコアメモリ…
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…
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本読書会#8でプロセス切り替えについてもおさらいをした方がいいという話が出ました。そこで解説動画を作ってみましたので公開します。アドレス周りの解説動画もあわせてご覧いただけると理解がしやすいと思います。 http://d.hatena.ne.jp/ta…
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.…
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…
はじめに 前回のエントリでバッファの状態遷移図を描きました。それに関連して、ブロックバッファはディスクキャッシュとして効率化が図られているということをまとめます。 ディスクキャッシュの効率を高めるには B_DONEフラグが立っているとき、そのバッフ…