unix

Memo: How to build OpenBSD from source code and add system call on QEMU

Introduction Memorandum for myself. I just follow these three articles. Thanks dude. http://undeadly.org/cgi?action=article&sid=20130109210346 http://www.onlamp.com/pub/a/bsd/2003/10/09/adding_system_calls.html http://www.openbsd.org/faq/f…

I published the PDP-11 Emulator implemented with JavaScript.

Introduction This entry follows the last entry.http://d.hatena.ne.jp/takahirox/20130707/1373178742I'll introduce my PDP11 emulator implemented with JavaScript because I almost achieved it. PDP-11 Emulator implemented with JavaScript You ca…

PDP-11 Emulator implemented with JavaScript.

Introduction Hi, it's been a while. I'll show you what I implemented recently today. PDP-11 Emulator implemented with JavaScript 2013/07/22 2013/07/21 2013/07/09 2013/07/07 I implemented a PDP-11 Emulator with JavaScript. You can see on th…

UNIX 6th システムプログラミング - init その4

はじめに 今回も引き続きinitのソースコードを見ていきます。今回でようやくinitも一段落です。 init http://minnie.tuhs.org/cgi-bin/utree.pl?file=V6/usr/source/s1/init.c前回のエントリで、single user modeの時の起動処理を確認することができました。…

「はじめてのOSコードリーディング」という本を出版します

はじめに 「はじめてのOSコードリーディング 〜UNIX V6で学ぶカーネルのしくみ〜」という本を2013年1月8日に技術評論社から出版します。はじめてのOSコードリーディング ~UNIX V6で学ぶカーネルのしくみ (Software Design plus)作者: 青柳隆宏出版社/メーカ…

UNIX 6th システムプログラミング - init その3

はじめに initのソースコードを、引き続き見ていきます。今回は起動時の処理であり、hangupが起きた時の再開ポイントでもある個所から始めます。そうそう、今さらなのですが、UNIX 6th システムプログラミング(code reading)のスタイルについてです。カーネ…

UNIX 6th システムプログラミング - init その2

はじめに 前回のエントリでinitの仕様を明らかにしたので、今回からはいよいよinitのコードを読んでいきます。 コンソールスイッチ と、本題に入る前に、前回のエントリで「コンソールスイッチって何?」と書いたところ、まごろくさんからコメントを頂きまし…

UNIX 6th システムプログラミング - init その1

はじめに 半年くらい抱えていたとあることが、一応一段落したので、またブログを更新していこうと思っています。UNIX v7 code readingを継続するのと、それに加えてUNIX v6 システムプログラミング(code reading)というものを始めます。他にもいくつかネタは…

UNIX v6クイズ合戦

はじめに 不意に始まった神々の戯れ(UNIX v6クイズ合戦)。楽しかったのでtogetterで記録しておきます。みなさんもUNIX v6クイズ合戦に参加して知識を深め合いましょう! togetter http://togetter.com/li/342105

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…

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

はじめに Lions本読書会#16に参加してきました。メモを残しておきます。今回は21章のパイプの振り返りを行いました。 togetter 関連ツイートをtogetterでまとめました。 http://togetter.com/li/291759 終わりに 次回のLions本読書会は5月27日(日)に開催され…

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(新規にファイルを生成。…

とあるPDP11/40のレジスタにまつわる議論

はじめに とあるエイプリルフールの夜に、ふいに始まったPDP11/40のレジスタにまつわる議論をまとめておきます。twitter上でもこのようなやり取りをしながら昔のUNIX, PDP11について読み解いていっているのが見せられたら面白いと思い、まとめました。最近古…

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の文法が変わって変更されているところとかには触れません。論理的・設計的に変更のある箇所だけ注目して…

JavaScriptとHTML5で作ったUNIX v6 emulatorっぽい何かの紹介

http://d.hatena.ne.jp/takahirox/20110827/1314441832の続き 紹介動画 免責 まだバグバグな状態です。無限ループなどにはまる可能性もあります。自己責任で使用してください。ローパワーなマシンだと結構遅いです。 使い方 下記のリンクをクリックしてくだ…

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

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

初めてのOS source code reading(UNIX 6th source code readingのススメ)

このエントリはhttp://d.hatena.ne.jp/takahirox/20120131/1328006885を和訳したものです。 はじめに 最近UNIX 6thのソースコードの読書メモを書き終えました。みさなんにもUNIX 6thのソースコードを読むことをオススメします。その理由をこのエントリで書い…

Why we should read UNIX 6th source code

Introduction Lately, I finished writing the note of UNIX 6th code reading.I recommend you to read the UNIX 6th source codes, too.I'll show you why it's so worthy, here. Summary UNIX 6th is appropriate for who has never read the source code…

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

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

UNIX 6th a.out cheat sheet

UNIX v6のa.outについてまとめた内容を一枚の絵にしてみました。ユーザマニュアル5のa.outの項目を絵にした感じです。いくつかはまだ理解できていなくて空白になっていますがご了承を。 この情報はUNIX v6 インタプリタの作成に必要なものなのですが、調べて…

UNIX 6th code reading - 対話型端末その2

はじめに 前回は対話型端末の外枠を確認しました。今回は端末の読み書き処理を見ていきます。インターフェイスにKLを使用しているという前提で読み解いていきます。Lions本で言うと25章にあたります。練習問題を除いた最後の章です。このUNIX v6 code readin…

UNIX 6th code reading - 対話型端末

はじめに 今回は対話型端末の処理方法を見ていきます。Lions本で言うと24章にあたります。 対話型端末とは 対話型端末とは何なのか、まずは調べてみました。テレタイプ端末というのがそれにあたるようです。http://ja.wikipedia.org/wiki/%E3%83%86%E3%83%AC…

UNIX 6th code reading - buffer pool

はじめに 前回のエントリでキャラクタデバイスハンドラの実装を確認しました。今回はその中で使用されていたbuffer pool, putc( ), getc( )の詳細を確認していきます。Lions本で言うと23章の内容です。 buffer pool buffer poolの実態は、7908行目、8140行目…

UNIX 6th code reading - キャラクタデバイスドライバ

はじめに 今回からLions本の最終セクションを見ていきます。今回は22章を扱います。最初にキャラクタデバイスとは何かを解説し、その後ラインプリンタのデバイスドライバを見ていきます。 キャラクタデバイスとは UNIXではデバイスを二つの種類に分けて扱っ…

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情報を取得するシステムコールです。異なるの…