7th

UNIX 7th code reading - ブロックデバイスのリソース管理

はじめに 今回はsuperblockに関する処理や、alloc( ), ialloc( )などブロックデバイスのリソース管理を見ていきます。 iinit( ) 起動時のmain( )からiinit( )が呼ばれ、root deviceの初期化が行われます。root deviceの、0から数えた1番目のblock(=superbloc…

UNIX 7th code reading - ファイルのクローズ処理

はじめに 今回はファイルのクローズ処理を見て行きます。 close( ) 下記のようにCのプログラムからオープン済みのファイルディスクリプタを引数にclose( )を実行すると、 close( fp ) ; libcのclose( )からcloseシステムコール(sys close(=6))が発行され、cl…

UNIX 7th code reading - ファイルの読み書き処理

はじめに 今回はファイルの読み書き処理を見ていきます。クローズ処理は次回に回します。 read( ), write( ) read( ) http://www.tamacom.com/tour/kernel/unix/S/99.html#L12 write( ) http://www.tamacom.com/tour/kernel/unix/S/99.html#L20 ユーザプログ…

UNIX 7th code reading - ファイルのオープン処理

はじめに 今回もUNIX 7thのコードを読み解いていき、6thとの差分を明らかにしていきます。今回はファイルのオープン時の処理を見ていきます。 creat( ), open( ) ユーザプログラムからsys open(既存のファイルのオープン), sys creat(新規にファイルを生成。…

UNIX 7th code reading - data block mapping

はじめに 「itrunc( )が7thと6thではかなり変わっているよ」というコメントを頂きました。 window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if (d.getElementById(id)) return t; js = d.create…

UNIX 7th code reading - process switch (context switch)

はじめに 前回のエントリで、UNIX 6thと7thでprocess switch(context switch)の仕様が違うかもしれないという話をしました。今回はそれを明らかにするために、7thのsave( )とresume( )を確認していきます。newproc( )で生成したプロセスがswtch( )で選択され…

UNIX 7th code reading - main

はじめに 今回は起動時に実行されるmain( )を見ていきます。あまり細かいところは追っていかないつもりです。処理を関数に切り出しているところとか、cの文法が変わって変更されているところとかには触れません。論理的・設計的に変更のある箇所だけ注目して…

UNIX 7th code reading - 6thとの差分

はじめに Unix 6th Edition readingが一息ついたので、7th Editionのreadingに移ります。6thのときと同じように、ここでメモを書いていこうと思っています。今回は、6thと7thの差分をざっと明らかにして、どういう方針でメモを書いていくかを決めます。 ソー…