UNIX の機能でほしいものは? [1999.11]

ほしい機能は人によるだろう.アーケードゲームを移植してほしい人,時刻表ソフトがほしい人,数テラバイトのメモリを使用可能にしてほしい人.ここでは回答子がほしいもので,カーネルのサポートが必要なものをまず二つあげる.自分で書いて LinuxFreeBSD に貢献しろ,との激励は謹んで承ります.

  1. プロセスと端末の再接続の機能: パソコンからの遠隔ログイン中に通信ソフトのバグに遭遇したり,OS 自体がハングしたとき,パソコンの再起動とともに接続先の UNIX プロセスは消えてしまう.プロセスが残っていてもその端末に接続する術はない.編集中のエディタバッファが残っているのに.
  2. 走行中のプロセスの状態をファイルに保存する機能: 停電を越えて計算を継続したいとき,途中結果の保存と復帰,といったコードを個別に書かねばならない.特定のポイントで実行中のメモリイメージ等を保存して通常の実行型ファイルを作成することは,TeX や Emacs, 一部の Lisp 処理系が独自に実現している.これを標準にしてほしい.

実はこれらの機能は実装されている例がある.2.の機能は例えば,CRAY の UNIX OS, UNICOS の checkpoint だ.計算を継続するために計算機の停止時に自動的にプロセス状態を保存して,立ち上がったら実行を再開することができる.これはいわゆる汎用機の OS では当り前の機能だった.1.は DEC SYSTEM-20 の OS TOPS-20 (原型は BBN 研究所の TENEX ) にある detach/attach 機能だ.ユーザは logout のかわりに detach と打つと,計算機との接続が切れる.しかしプロセスの状態は保持されていて,次にログインしたときに detach したプロセスに再接続することができる.遠隔ログインが事故で切断されたときにも自動的に detach されていてエディタバッファも保存されている.この安心感はいまの UNIX では得られない.

TENEX は研究者のための OS として開発され,MULTICS からも大きく影響を受けている.この点では生い立ちは UNIX とよく似ている.だが,はじめからユーザフレンドリであることを目標にして CPU やメモリ資源をユーザインタフェースに投入した点で,先駆的である.


DEC SYSTEM-20 の写真
‡ UNIX でも screen プログラムを使えば,端末を切り離すことができる.[2003.6.28]


画像処理システムに Lisp がはいっている? [2000.1]

画像処理システム (フォトレタッチソフト) や描画ツールは典型的な対話的なアプリケーションソフトだ.目で結果を確かめながら操作していく.それもキーボードよりマウス等のポインティングデバイスの出番が多い.だが,対話的といっても定型処理や繰返し処理など計算機にやらせるべき仕事もある.処理の組み合せに新たな名前をつけてシステムの拡張もしたい.このためシステム独自のスクリプト言語を組み込むのはよく行なわれていた.

この拡張のための言語として Lisp を組み込んである対話処理システムをよく見かける.画像処理システムの Gimp (The GNU Image Manipulation Program) もそのひとつで,Lisp の一方言である Scheme 処理系が備わっている.さらに有名なのは画面エディタの GNU Emacs で,備わっている Emacs-Lisp 処理系は単なる拡張用の言語ではない.逆に,Emacs 自体が Emacs-Lisp で書かれているといったほうがよいだろう.記述言語そのものなのだから,機能追加や拡張が可能なのは当然だ.もちろん,大きな処理は C 言語で書いてある.しかし Lisp はその生誕のときから,SUBR と言って,アセンブラでかかれたサブルーチンを本体とする関数を取り込んでいた.本体が C でも立派な Lisp 関数になるのだ.

対話システム骨格として Lisp を使う利点は,動的なデータチェックを基本とするので,データタイプを自由に設計できる,基本データを構造化する S 式の存在,シンプルな引数評価と関数呼び出しのメカニズム,インタプリタによる対話的な実行が基礎にある,関数を加えることで機能が増えていく,などである.回答子も,Pentium の I/O ポートをアクセスする関数を Lisp に組み込んで,デバイスのレジスタを Lisp から読み書きしてドライバのデバッグをしている.繰返しやパラメタを変えての再実行も簡単だ.小さなデバッグ関数を蓄積してだんだん強力なデバッグ環境が構築されていく.

Lisp がもう40年以上も生き残っているのは単に熱狂的なファンがいるからではなく,その優れた性質のためである.近々 Lisp ユーザの情報交換のための会議が東京で開かれるので,この機会にプログラム言語としての Lisp にも興味をもってほしい.


日本 Lisp ユーザ会 主催の JLUG Meeting 2000


シグナルとはなんですか? [2000.2]

UNIX でユーザのプログラムが走るには,OS の助けが必要だし,何よりハードウェアがいる.プログラムそのものが単独で走るわけではない.このプログラムの外の世界からプログラムに知らせを送るのがシグナルだ.シグナルには32個や64個の種類があってそれぞれ名前が付いている.そして,シグナルごとに,どのような場合にそのシグナルがプログラムへ (正確にはプロセスへ) 送られるかが決まっている.浮動小数点演算で0で割算をしたといった例外が発生した,メモリの存在しないアドレスをアクセスした,といったプログラムが予想外の動きをしてそれをハードウェアが検知してシグナルの形で知らせてくるもの,読み手のいないパイプに書き込んだ,セットしてあったタイマの時間がきた,存在しないシステムコールを呼ぼうとした,など OS が検知するものがある.プログラム実行中に端末からコントロール C などの文字を打ってプログラムを止めるのも,割込み文字が打たれた,というシグナルが送られるのだ.ここまでは20年前の UNIX V7の時代から存在するが,その後シグナルの種類が増えてきて,今では,ウィンドウの大きさが変わった,というシグナルまで飛んでくる.ずいぶんレベルの違うものが同じインタフェースになってしまっている.

シグナルが送られたプロセスは何も用意をしていなければシグナルごとに決まった動作をする.多くのシグナルはプロセスを終了させる.無視するのがデフォルトのシグナルもある.プログラムでシグナルが発生したときに実行する関数 (シグナルハンドラ) を指定することができる.ウィンドウの大きさが変わったら合わせて表示を変更するといったプログラムが書けるわけだ.シグナルハンドラはいつ実行されるかわからない関数となる.ハンドラ内で使える関数は限られているのでマニュアルをよく見てほしい.

read など時間がかかるシステムコールは,待ちの間にシグナルがくると待ちが解除されることがある.OS によっては自動的に再実行してくれたりする.中断すると何も読まずに戻ったり,要求より短い文字数だけで戻ることがある.よって大域変数 errno などを調べて場合によっては再実行するといったプログラムを書かなければいけない.


Lisp の入手方法は? [2000.4]

やっぱり,Lisp といわれても,プログラムを動かしてみないと実感がわかないだろう.最近は,UNIX 上だけでなく,いわゆる Windows 上でも動作する Lisp が数多く無料で公開されている.大半は Common Lisp か Scheme だ.

Common Lisp (以下 CL) は1980年代までの Lisp を整理したもので1994年に ANSI 規格になっている.ただし,CL は Lisp だが,Lisp は CL ではない.Lisp の方言が加わったと思えばいいだろう. KCL (Kyoto Common Lisp) は日本発の処理系で,その後継は現在 GNU ソフトウェアのひとつ gcl として入手できる.C 言語との連係もよく,シンプルで扱いやすい.カーネギーメロン大学で同じ頃から開発されいた CMUCL も有志の手で保守されている.gcl や CMUCL は FreeBSD のパッケージにもなっているので,簡単にインストールすることができる. Lisp が商売の Franz 社 の Allegro CL (acl) は売り物だが,非商用利用に限って無料で入手できる.Linux / FreeBSD 版もそろっている.Franz のページには CL で書かれた http サーバへのリンクがあったりする.Lisp が生まれたころには存在しなかったネットワークのプログラムもどんどん吸収してしている.

Scheme は1975年に最初の MIT メモが書かれ,その後,広く使われるようになった Lisp 方言である.アルゴリズム言語 Scheme 報告書の形で規定されている. MIT の学生の初年度の必須科目の教材でもあり,簡潔でありながら大きな記述力をもった言語である.本家は MIT-Scheme だろう.このリンク先から入手できる. DrScheme は初級者レベルからフルサポートまで,複数のレベルを備えた処理系だ.表示もグラフィカルで使っていて楽しい処理系である.これもリンク先から入手できる.Windows 版もある.

忘れていけないのは Emacs Lisp で,Emacs (Mule, Meadow) 組込みだが立派な Lisp だ.すでにあなたも知らずに使っているかもしれない.さあ,さっそく Lisp を手に入れて,free() 不要のプログラミングを楽しんでほしい.


† 竹内郁雄: やっぱり,Lisp だね,bit Vol.32, No.5, PP.33-39, 共立出版 2000
日本 Lisp ユーザ会 のページからたどれる Lisp 関連情報 もよくまとまったページだ [2003.6.29]


ファイル転送に便利なツールは? [2000.5]

ファイル転送といってもいくつか種類がある.まず,俗にいうダウンロード. 他人が不特定多数に公開しているファイルを自分のマシンにもってくる意味になってしまったが,元はクロス開発した実行バイナリをターゲットマシンにロードすることを指していた.さて,ファイルのありかを archie で探して,匿名 ftp で get していたのもすでに過去の話.ウェブブラウザで検索して,リンクをセーブするのがもっとも手軽だ.仕組みもプロトコルもすべて隠蔽されている.自分の名前など,どんな情報が相手に伝わっているかを一度調べて見るべきだ.複数のファイルを取るには ncftp といったメニューや GUI ベースの ftp クライアントがいくつもある.コマンドラインなら wget が強力だ.

自分のアカウントのある計算機どうしなら,UNIX には 1983年の 4.2BSD からある ftp が今でもよく使われている.問題は相手計算機にログインするのにパスワードがそのままネット上を流れることだ.もちろんファイル内容も.モバイル環境や学会のターミナルルームで自分のノートパソコンから学校や会社の計算機と ftp でファイルを転送するのは避けよう.OpenSSH プロジェクトの ssh などを使ってパスワードやファイル内容を暗号化して送るようにしよう.

ファイルのバックアップや複数の計算機でのディレクトリのミラーリングなら,rdist , rsync などのツールが役立つ.オリジナルファイルのある計算機のファイル構成をそのままコピーしてくれる.1度送れば次回から増えたファイルだけを転送するし,消えたファイルは消してくれる.ただし,デスクの計算機とノートパソコンで両方でファイルを編集するようなときには使えない.ファイルバージョン管理システムの CVS などを使うようにするのが確実だ. CVS はファイル転送に ssh を使用することができるので安全でもある.

最近目立つファイル転送手段は添付書類つきメールだ.昔から,圧縮して uuencode でテキストに変換したファイルをメールで送ることは行なわれていた.いまや,WORD, Execl, PowerPoint といった『共通』フォーマットで埋め尽くされている.Pure な UNIX ユーザには煮ても焼いても食えないものなのだが,pure なユーザは絶滅しているのだろう.


biff の写真があると聞きましたが…? [2000.7]

科学の分野には見ただけで美しいものがたくさんある.星は写真でも美しいが,プレアデス星団を双眼鏡で見たときは驚いた.理科の実験で使った硫酸銅の鮮やかなブルーを見て,化学の世界を目指した者もいる.計算機科学も見ためで美しいところがないものか.モナ・リザをラインプリンタで打ち出したり,フラクタル図形をプロッタで描かせていたころに比べれば,CG はずいぶん発展してきれいになったが,感動の点で星団のレベルに達するのはしばらく先だろう.

計算機の世界で写真というと有名人の若い頃とか,昔の銘機のパネルになるのはちょっと寂しい.質問の biff はメール到着を知らせる UNIX コマンドだが,犬の名前である.A Quarter Century of UNIX (邦訳「UNIX の1/4世紀」) に写真が出ている. UNIX の生みの親 Dennis M. RitchieKen ThompsonPDP-11 の前にいる 写真 がある.この写真の前で,"Lions' Commentary on UNIX 6th Edition, with Source Code" (邦訳) を広げて本物のプログラマの作品を愛でるのは,気を落ち着かせるものだ.さらに,5th Edition から UNIX 32V のソースコードは The Unix Heritage Society から入手可能だ.そして,PDP-11 のシミュレータを The Computer History Simulation Project から入手し (FreeBSD なら ports/emulators/sim/ で make するだけ),v7 のディスクイメージを同じところか,または digital のページ から入手すると,いにしえの UNIX が目の前で再現する.v6 の /usr には Ken のディレクトリが残っている.Thompson のホームだ.中は空っぽだが.星は手にとれないが,計算機は何度でも甦るところがうれしい.

絵になるといえば,IC の写真は星のように美しい.STATE OF THE ART Stan Augrten, Ticknor & Fields 0-89919-195-9 はそんな写真を集めている.6502の写真 の写真の前で,apple ][ のエミュレータを ….


2238クラブ のページは PDP-11 関連の記述も充実している.[2003.8.8]
UNIX Version 6 on PDP-11 EmulatorUNIX version 7 on PDP-11 on simh のページに簡単に紹介されている.[2003.7.6]
DEC の計算機については,History of DIGITAL (日本語) に詳しい.[2003.7.6]
V6 Bug fixes からは,2000年問題を修正した UNIX Version 6 が得られる.[2003.8.8]


   タイトル一覧  ホーム
webmaster