ヒソヤカにごにょごにょ。 導入 笛吹きプログラマ Mac OS X LionでUNIX V6を動かす http://simh.trailing-edge.com/software.html からunix v6のdisk imageを貰ってくる。 適当な場所に展開。 ここまではいい。 $ simh-pdp11 起動 このコマンドの所在も内容もわからないので、とりあえず brew install simh する。 とりあえずコマンドはおーけー。 で、 Voila, voila :: V6Unix install on SIMH $ pdp11 PDP-11 simulator V3.9-0 sim> set cpu u18 Disabling XQ sim> att rk0 unix0_v6_rk.dsk sim> set cpu u18 sim> att rk0 unix0_v6_rk.ds
はじめてのOSコードリーディング UNIX V6で学ぶカーネルのしくみが面白すぎたので備忘録。 今回は2章 プロセス、3章 プロセスの制御、7章 ブロックデバイスサブシステム、9章ファイルシステムを対象に書いていきます。 読み方 上記の書籍+ソースコードを以下からダウンロードしてIntelliJとかで開いて関数や変数を検索しながら読むのが良いです。ダウンロードするのはv6root.tar.gzです。 Index of /Archive/PDP-11/Distributions/research/Dennis_v6 $ mkdir v6 $ wget http://minnie.tuhs.org/Archive/PDP-11/Distributions/research/Dennis_v6/v6root.tar.gz $ tar xzf v6root.tar.gz -C ./v6 また実際に
xv6のページング周りをちょっと見てたので記録をφ(..)メモメモ 参照したドキュメントはbook-rev10.pdfです。 book-rev10.pdfのP21、 Figure 1-2にxv6のメモリレイアウトがあります。 仮想アドレスの0から0x80000000がユーザー空間で、0x80000000〜0xFFFFFFFFがカーネル空間ですね。カーネル空間のうち先頭の0x100000バイトはBIOSの領域となってます。 カーネルのアドレス空間はvm.cにあるkmap構造体で管理してます。 static struct kmap { void *virt; uint phys_start; uint phys_end; int perm; } kmap[] = { { (void*)KERNBASE, 0, EXTMEM, PTE_W}, // I/O space { (void*)KERN
はじめてのOSコードリーディング ~UNIX V6で学ぶカーネルのしくみ (Software Design plus) 作者: 青柳隆宏出版社/メーカー: 技術評論社発売日: 2013/01/09メディア: 単行本(ソフトカバー)購入: 56人 クリック: 1,959回この商品を含むブログ (29件) を見る ふと思いたって、上記をひととおり読んでみようという気になり、ノートにメモ(まとめ)を取っていきながら読み進んでいった。 途中から複雑になってまだ頭の中が整理され切れていないけど、とりあえず読了。 うーん、プロセスの切り替えの仕組みとか大雑把なところは分かったのだけれども、まだ「ソースコードを読むことによる深い理解」まで行っていない。 ソースコードに注力し過ぎて、まだ「点と点」が結ばれていない感じ。 各システムコールについてソースコードは詳細に解説されているのだけれども、例えばプロセス
このエントリはhttp://d.hatena.ne.jp/takahirox/20120131/1328006885を和訳したものです。 はじめに 最近UNIX 6thのソースコードの読書メモを書き終えました。 みさなんにもUNIX 6thのソースコードを読むことをオススメします。 その理由をこのエントリで書いていきます。 まとめ UNIX 6thは初めてOSのソースコードを読む人にうってつけ! 今すぐ読み始めましょう! UNIX 6thのソースコードはこちらなどで読むことができます。 http://minnie.tuhs.org/cgi-bin/utree.pl?file=V6 UNIX 6thのソースコードを読むことをオススメする理由 たったの10,000行 最近のLinuxカーネルのソースコードは100万行を超えています。全てを理解するのは至難の業です。 一方、UNIX 6thのカー
This are the manuals from Sixth Edition Unix. Thanks to aiju for helping getting this set up. TODO: For technical reasons Section 0 is not currently available. Manual Sections Section: 1 - General commands. - cat, sed, grep, etc. Section: 2 - System calls. - stat, open, wait, etc. Section: 3 - C library functions - printf, getpw, ttyn, etc. Section: 4 - Special files and devices - /dev/null, /dev/
Lions互換ソースコード オリジナルのソースコードにLions本の行番号を付加。 Lions本に特有のコメント等は反映されていない。 利用に際してはライセンスを尊重のこと。 Initialisation Process Information param.h 0100→ systm.h 0200→ seg.h 0300→ proc.h 0350→ user.h 0400→ low.s 0500→ m40.s 0600→ main.c 1500→ slp.c 1800→ prf.c 2300→ malloc.c 2500→ Traps, Interrupts and System Calls Process Management reg.h 2600→ trap.c 2650→ sysent.c 2900→ sys1.c 3000→ sys4.c 3400→ clock.c 3700→ s
注意 本文は1994年にソフトウェアデザイン誌に連載していたOS入門の原稿をベースにしています。ですからこの文章は1994年当時の状況をベースにしてかかれています。現在ではGNU/Linuxをシステム全体、Linuxをカーネルと区別しますが、本文中ではGNU/LinuxシステムをLinuxと呼んでいます。これは1994年当時の状況をそのまま残しているためです。 OSの歴史は、コンピュータが産まれてから20年ほど経った1960年代中期からスタートします。1960年中期にIBMが開発した商用コンピュータ・システム IBM System/360は、本格的なOS (OS/360)を搭載していました。それ以前のコンピュータ・システムは、部分的にはOSとしての機能を満たしたものがありますが、OS として機能及び概念が確立はしていません。IBM System/360が始めてOSの機能と概念を確立させまし
注意 現在X(旧Twitter)でのソーシャルログインができない事象を確認しています。事前にX(旧Twitter)側で再ログインした上でconnpassのソーシャルログインを行うか、 「ユーザー名(またはメールアドレス)」と「パスワード」の組み合わせでのログインをお試しください。合わせてFAQもご確認ください。 お知らせ 2024年9月1日よりconnpassサービスサイトへのスクレイピングを禁止とし、利用規約に禁止事項として明記します。 9月1日以降のconnpassの情報取得につきましては イベントサーチAPI の利用をご検討ください。 お知らせ connpassではさらなる価値のあるデータを提供するため、イベントサーチAPIの提供方法の見直しを決定しました。2024年5月23日(木)より 「企業・法人」「コミュニティ及び個人」向けの2プランを提供開始いたします。ご利用にあたっては利用
「Linuxのしくみを学ぶ - プロセス管理とスケジューリング」公開ページ こちらのページはSoftware Design誌 2009年12月号の記事「Linuxのしくみを学ぶ - プロセス管理とスケジューリング」の公開ページです。 「ハイパーバイザの作り方」も公開中ですので、こちらも是非ご覧ください。 公開中の記事 HTML PDF ePub mobi Kindle 原稿データ 全ての原稿データはgithub上で公開されています。 Pull RequestやIssuesを通じて文章の誤り訂正や解説の追記、各フォーマットの表示の改善などのコントリビューションを受け付けています。 改善された記事は随時このページにアップロードしていきます。 記事に関するご質問 記事を読んで何かわからなかった点があったり、疑問に思ったことがあれば以下の連絡先に問い合わせてください。 Twitter: @syuu
Lions' Commentary on UNIX 読書会で気になった所があるのでメモ。 型の種類と幅 PDP-11は16bitなコンピュータなのでレジスタ=アドレスは16bit=2byte。 これを前提に型の幅を考えると、 char 1byte int 2byte char* 2byte となるようだ。 short、void、void *、unsignedあたりは見当たらない…。 宣言 関数宣言はしないようだ。 関数コールは型チェック無しに書かれたとおりコンパイルされるのだろう。 返り値の型宣言が無いんだけど…? int coremap[CMAPSIZ], int swapmap[SMAPSIZ]がsystm.hに書かれているだけで.cに書かれていないのは今のCな感覚だととてもおかしいけど、宣言でなくて実体だという事か? systm.hをincludeしている.cは本当に一つしかないのか
Linux(リナックス、他の読みは#「Linux」の読み方で後述)とは、狭義にはUnix系オペレーティングシステムカーネルであるLinuxカーネルを指し、広義にはそれをカーネルとして周辺を整備したシステム全体のことをいう(GNU/Linuxも参照)。 Linuxは、狭義にはLinuxカーネル、広義にはそれをカーネルとして用いたオペレーティングシステムを指す。 LinuxはUnix系(英: Unix like、Unixライク)オペレーティングシステム (OS) の1つとされる。カタカナでは「リナックス」と表記されることが多い(「Linux」の読み方を参照)。Linuxは、スーパーコンピュータ、メインフレーム、サーバ、パーソナルコンピュータ、スマートフォン、組み込みシステム(携帯電話やテレビなど)など、幅広い種類のハードウェアで使用されている。 Linuxカーネルは、最初PC/AT互換機で多く
カーネルはLinuxシステムの中核をなす重要なソフトウエア部品です。Linuxを使いこなすためには,カーネルの動作や仕組みに対する理解が欠かせません。本連載では,Linuxカーネルの役割とその仕組みを体系的に紹介します。 第1回 カーネルの機能とその利用法 第2回 プログラムとプロセス 第3回 プロセス・スケジューリング 第4回 プロセス・メモリー管理 第5回 カーネル・メモリー管理 第6回 割り込み管理 第7回 ファイル・システム(前編) 第8回 ファイル・システム(中編) 第9回 ファイル・システム(後編) 第10回 ファイル名の文字コード 第11回 デバイス・ドライバ 第12回 ソケット・インタフェース 第13回 IPとルーティング 第14回 TCPとUDP 第15回 パケット・フィルタリングとQoS機能 第16回 排他制御機構 第17回 モジュール機構 第18回 カーネルの起動処理
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く