unix

UNIX 6th code reading - malloc(english translation)

this entry is the english translation of http://d.hatena.ne.jp/takahirox/20101024/1287923014 Introduction recently, i began to read "Lions' Commentary on UNIX".i think that it's not enough to understand to just only read it, so i decided t…

UNIX 6thに足し算システムコールを追加してみた

はじめに 先日「ぐだ生」(@magoroku15さんのUstream. この間までunix v7を取り上げていた)を見ていたところ「新人には足し算システムコールをとりあえず作らせる」という旨の発言がありました。それを聞いて「よっしゃ、やってみるか」と思ったのが今回の始…

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

はじめに Lions本読書会#6に参加してきました。メモを残しておきます。当初は13, 14章を読む予定でしたが、議論が白熱して13章の前半(トレースの前)までで時間が来てしまいました。進度は遅かったですが、今までで一番盛り上がった会とも言えそうです。さら…

UNIX 6th code reading - スワッピング

はじめに 今回は14章の「プログラムスワッピング」を読み解いてきます。 スワッピング処理とは 高速であるが、高価・小容量である物理メインメモリ(コアメモリ)を効率よく使用するためにプログラムスワッピングという機構があります。コアメモリが足りなくな…

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

はじめに Lions本読書会#5に参加してきました。そのときのメモを残しておきます。今回は12章「トラップとシステムコール」を読みました。当初は13章も読む予定だったのですが、12章があまりにボリュームがあったため12章だけを詳細に追うことになりました。…

UNIX 6th code reading - トレース

はじめに 今回はトレースを見ていきます。 トレースとは トレースとは子プロセスがソフトウェア割り込みを受け付けるたびに、親プロセスが介入する機会が与えられる機構のことです。ptraceというシステムコールを使って、別のプロセスのデータなどを操作でき…

UNIX 6th code reading - signalシステムコール続き

はじめに 今回は第13章の続きを見ていきます。 grow grow( )は引数で渡されたspを含むようにスタックを拡張します。既にスタックがspを含んでいたら拡張はしません。絵で描くとこんな感じです。 4141-4142 : 既にスタックが十分大きければreturn. 拡張しない…

UNIX 6th code reading - signalシステムコール

はじめに 今回は13章の続きを見ていきます。ソフトウェア割り込み周りのソースコードを追っていきます。今回は本当に単なるメモ状態です。 ssig ssigはsignalシステムコールを実現します。u.u_signal[n]に値を設定します(u.u_signal[arg1]=arg2)。 3618 : si…

UNIX 6th code reading - ソフトウェア割り込み(シグナル)

はじめに 今回から13章を見ていきます。量が多いので数回に分けてメモを書いていくつもりです。今回はソフトウェア割り込み(シグナル)の概要を確認します。 ソフトウェア割り込み(シグナル)とは シグナルとは以下のようなことを実現する機構です。 ユーザプ…

UNIX 6th code reading - fork, exec, breakシステムコール

はじめに 今回は12章の続きを追います。システムコールのfork, exec, breakを見ていきます。Lions本ではexec, fork, breakの順に扱っていますが、fork, exec, breakの順に見ていきます。こちらの方が理解しやすいと思います。 fork & exec system call fork…

UNIX 6th code reading - システムコール

初めての方はこちらを参照 http://d.hatena.ne.jp/takahirox/20101024/1287923014 はじめに 今回はunix v6のシステムコールについてまとめました。システムコールの詳細を知らずに12章の内容を追うのが大変だったため、まずはシステムコールについてまとめて…

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

はじめに Lions本読書会#4に参加してきました。そのときのメモを残しておきます。本に沿った内容は読書メモの方に反映していきます。このメモでは本の内容の範疇から越えた話題を中心記録しています。今回は10, 11章を読みました。 メモ @oracchaさんのツイ…

UNIX 6th code reading - trap.c

初めての方はこちらを参照 http://d.hatena.ne.jp/takahirox/20101024/1287923014 はじめに 12章です。12章は長いので2回に分けます。今回はCで書かれたtrap(2693)を見ていきます。以前のエントリで書いたように、このtrapには785 or 799から飛んできます。…

UNIX 6th code reading - PDP11割り込みに関するまとめ

初めての方はこちらを参照 http://d.hatena.ne.jp/takahirox/20101024/1287923014 はじめに Lions本読書会#4にてPDP11の割り込み機構が話題に上がりました。 そこで、PDP11 handbookやWikiPediaなどで調べてまとめてみました。ハードウェアレベルの割り込み…

UNIX 6th code reading - クロック割り込み

初めての方はこちらを参照 http://d.hatena.ne.jp/takahirox/20101024/1287923014 はじめに 今回は第11章です。クロック割り込みが起きたときの処理を見ていきます。 クロック割り込み時に行われる処理 ディスプレイレジスタの更新(PDP11/40ではno op) 時刻…

UNIX 6th code reading - 割り込み・トラップルーチンその2

初めての方はこちらを参照 http://d.hatena.ne.jp/takahirox/20101024/1287923014 はじめに 今回は10章に出てくるコードの詳細を追っていきます。 fuiword まずは通常動作を見ていきます。 通常動作 845 : この時点でスタックの先頭にはfuiwordを呼んだ命令(…

UNIX 6th code reading - 割り込み・トラップルーチン

初めての方はこちらを参照 http://d.hatena.ne.jp/takahirox/20101024/1287923014 はじめに 今回は10章です。トラップと割り込みルーチンを追っていきます。各トラップ・割り込みの個別処理は次章以降で扱われます。本章では個別処理に入る前・入った後の共…

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

はじめに Lions本読書会#3に参加してきました。 そのときのメモを残しておきます。本に沿った内容は読書メモの方に反映していきます。このメモでは本の内容の範疇から越えた話題を中心記録しています。今回は8, 9章を読みました。 メモ @oracchaさんのツイー…

UNIX 6th code reading - 割り込みとトラップの概要

初めての方はこちらを参照 http://d.hatena.ne.jp/takahirox/20101024/1287923014 はじめに 今回は9章です。割り込みとトラップについてです。9章では割り込み・トラップの概要のみを扱っており、コードはほとんど出てきません。 割り込みとトラップ 割り込…

UNIX 6th code reading - プロセス管理

初めての方はこちらを参照 http://d.hatena.ne.jp/takahirox/20101024/1287923014 はじめに 今回は8章です。 プロセスの切り替えについてです。 割り込みなどもプロセス切り替えの一種ですが、9章の内容なので今回は扱いません。また、今回の内容にはスワッ…

UNIX 6th code reading - プロセス

初めての方はこちらを参照 http://d.hatena.ne.jp/takahirox/20101024/1287923014 はじめに 今回は7章の内容を扱います。 プロセスとは 1つのプロセスが、シェルやエディタなどの1つのプログラムに対応しています。 プロセスを切り替えることで、実行するプ…

UNIX 6th code reading - sched - /etc/init実行まで

初めての方はこちらを参照 http://d.hatena.ne.jp/takahirox/20101024/1287923014 はじめに 6章の続きです。proc#0がproc#1を生成した後の話です。プロセスを切り替えた後にブートストラッププログラムを起動します。 Lions本に従い、初回起動時にどういう動…

UNIX 6th code reading - 6章まとめ

初めての方はこちらを参照 http://d.hatena.ne.jp/takahirox/20101024/1287923014 はじめに 第6章のまとめです。起動時の流れを絵にしてみました。また、6章の範囲外ですが、savu&retuに関してもまとめてみました。 /etc/init実行までの流れ /etc/init実行ま…

UNIX 6th code reading - main

初めての方はこちらを参照 http://d.hatena.ne.jp/takahirox/20101024/1287923014 はじめに 今回も6章の続きです。startからmainへジャンプした後の話です。 ここからCで書かれた領域に入っていきます。今回の範囲は特に難しい箇所もなかったので、本当に単…

UNIX 6th code reading - boot

初めての方はこちらを参照 http://d.hatena.ne.jp/takahirox/20101024/1287923014 はじめに 今回は6章の続きです。 カーネルAPRの設定や、それに対応する物理メモリ空間の話などです。 boot loader UNIX起動の流れ(307P参照) プロセッサ中のROMのブートスト…

UNIX 6th code reading - virtual address

初めての方はこちらを参照 http://d.hatena.ne.jp/takahirox/20101024/1287923014 はじめに 今回は6章です。内容が重いので2回以上にわけます。 今回は本題に入る前の準備です。 仮想アドレス 本題に入る前に、仮想アドレスと物理アドレスの関係を把握してお…

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

はじめに 先日、Lions' Commentary on UNIXの読書会#2に参加してきました。 その時に出た話題をメモとして残しておきます。 全ての話題を拾えたわけではないので、不足な点や補足などあればフォローをお願いいたします。本の内容に沿った話は、読書メモの方…

UNIX 6th code reading - prf.c

初めての方はこちらを参照 http://d.hatena.ne.jp/takahirox/20101024/1287923014 はじめに 今回は301p - のprf.cです。 メッセージの表示やpanicなどを扱います。 printf 2340 : printf(fmt,x1,x2,x3,x4,x5,x6,x7,x8,x9,xa,xb,xc) x2以降にはx1からポインタ…

UNIX 6th code reading - mfree

初めての方はこちらを参照 http://d.hatena.ne.jp/takahirox/20101024/1287923014 はじめに 今回は、割り当てられていたメモリ領域を開放するmfreeです。 ロジック イメージはこんな感じ。2564行で、開放するアドレスの、1つ後ろの空き領域までポインタを進…

Lions' Commentary on UNIX 読書会メモ#1

はじめに Lions' Commentary on UNIX 読書会に参加してきました。 忘れないうちに、出た話題をメモしておきます。カフェで話した内容もあり。自分の理解が足りず、うまく表現できていない部分もありますがご了承を。 今日の範囲 第5章 メモ shortの型ないよ…