月別アーカイブ: 11月 2016

ゾンビとか

何十年も前ですが、若い頃の話です。

先輩方が、カフェで雑談しおられて、「このこ」「あのこ」「そのこ」と言う単語を頻繁に使って、会話しておられて、子供さんのことでも話されているのかと思いましたが、内容が変です。よく聞きますと、プログラムの動作モード(挙動)について、事前に考察して、設計書の草案を考えていると言う状況だった様です。

内容は違いますが、下記の様な会話でした。

あの子と、その子と、共有記憶領域で連携を持っていて、この子が、状況を確認するんだけど、無応答でタイムアウトになったら、どうしたらいいかな?。

放置するとゾンビになるし、困るよね、 killしておくべきかな?。30秒毎にチェックして、一斉にkillする様なプロセス作ろうか?。

ふーんそのプロセスは常時起動時にしておくのかな?、落ちたらどうなるんだろう、いっそ、デーモンとして動かした方がいいのじゃないのかな?。

デーモン化すると言う事だと、サービス周りをいじるの?。それより時刻起動で周期的に動かすのはどうなんだろう。

いやいや、それだと、複数起動する条件もあるかもしれないし、へたしたら、さらにそれが、ゾンビ化しない?

じゃぁ、この件については、一度プロトタイプを作って、どう言う挙動をさせるのが良いか、確認する様にしてみよう。

とか

そんなの感じの会話でした。

よく聞けば、UNIX系ソフトエンジニアがプログラムの連携動作について、相談している会話だけど、知らない人が聞いたら、誤解するんじゃないかと思いました。

プログラムがオペレーティングシステム上で動く時の単位をプロセスがと言ったりするのですが、プロセスの起動時と終了について、プロセスの生成とか、プロセスの終了と言わずに、生まれるとか、死ぬとか、言っていた時期がありました。プロセスの終了が不具合で正常に終了しないことがありまして、動いていないのに残存することがあるんですが、この状態をゾンビ化したとか、そういう言い方をします。生きているプロセスや、ゾンビ化したプロセスを、強制終了させるコマンドにkillコマンドというのがあるのですが、聞こえが、よくないですよね、killって日本語だと、殺すと言う意味ですから、ゾンビをkillする。とかゾンビを殺すとか悪い言葉ですよね。

当時のプログラマは、普通の人々ですが、会話がですね、傍で聞いていて、まずいです。人格を疑いたくなる様な話をして居る様な聞こえ方をしています。

今の時代にそういう言い方をしていたら、ソフト業界のプロフェッショナルな人達に、ばかにされるのかもしれないのですが…。

当時、私は、そういう環境になじんで行きました。

またある日、親戚が大勢来ている時に、会社から電話がかかって来ました。大変にお怒りで、「長期休暇とるんだったら、お前のプロセス全部落としてかえれよ!。30個以上もプロセスが起動しているじゃないか!。みたら、全部エディターで、ソースコードをいじっているけど、出社するまで、このまま、置いておくつもりか?」と言う内容でした。

ソース閲覧していて、ctrl+zで、中断かけて、他のコードを閲覧して、さらにそれをctrl+zで中断してとかしていて、最後にキチンと全部終わらせずに、端末電源オフしていたとか、不用意に、ログイン状態のセッションが切れてゾンビ化していたとか、そう言う事でした。

そこで、電話口で私は、「あー、申し訳ございませんでした、始末できていませんでした。どうぞ、システム管理者権限で、その子たち全部、殺しておいてください。」と申しましたら、「新入り、お前のせいで、いらない仕事おが増えたよ、ハイ終わった。全部殺したぞー、出社しても、閲覧中のコードをみれないから、また探しなさいよ!。きついことを言ったけど、休暇中は会社のことを忘れて、せいぜい骨休めしてこいよー」と最後は優しいお言葉をいただきました。

で、電話を置いて、振り向きましたら、集まっている親戚の方々の表情がなぜか硬い。

一応、誤解のない様に、事情を説明しましたが、お年寄りにご理解をいただけたのかが、不明でした。

他には、満員電車で、専門用語的に、得意そうに、お話をされているのを目撃することがありました。電話の向こうの方の話される内容をきかずに、ただ目の前の方が電話で話される内容をきいていると、とても危ないお仕事の人か、または人の道を踏み外した人に見えてしまって、一般の方々には、そう見えてもしょうがない状況でした。もしも、このかたの彼女のご両親が、探偵など雇って、素行調査でもされている最中なら、縁談はまとまらないのじゃないかと思える様な、そういうシーンでした。

ということで、ある程度、キチンとした言葉で意思疎通できる様にしてある方が、人生は穏やかに過ごせるだろと思います。

以上

 

時計について

私の使っている、コンピュータは、閏秒にびくともしない。

だって、電気代ケチって、ほぼ毎日電源オフ、通電するのは使う時だけだから。

唯一、このブログを動かしているノートパソコン (MINI-ITX)が、動いて居るけど、多分問題は無い。ハズ。

時間情報を配っていないし。

NTPクライアントとして、時間情報をよそからもらうけど、多分大丈夫。

(以下の文章で、誤認していましたので、訂正致します。閏秒挿入は、8:59:60でした。午前0時だと勘違いしていました。)

なお、関連情報へは、こちらのNICTのページからアクセスできます。

 

NTPサーバーから、時間情報を貰うタイミングを、午前0時にしていないので、きわどいその瞬間に遭遇しない。と言うのと、日々NTPサーバーから時間情報を貰った時に、コンピュータの中でカウントして居る時間情報との誤差があった時の対応動作は、日々発生していて、珍しい事でも無いし、NTPクライアントの動作モードと言うか、設定は「ジワーッと、長時間かけて調整する。ズレがデカすぎたら、調整は諦める。」で動かしているつもりなので、私の場合、特段閏秒で、困る事は起きないはずなんです。

<余談>

パソコンには、内部にハードウェアとして、時計チップが搭載されては居ますけど、そんなには、高精度じゃ無いはず。

高精度である必要が無いらしいです。

ほとんど見ないで動いていて、時計チップにアクセスするのって、起動時と時計チップに制御かけるコマンドを発行した時ぐらいだと思う。終了時に書き換えているのかは、勉強不足で、知りません。

CPUは、超高速動作していますが、IOデバイスは、CPUの超高速動作に比べて爆遅くて、時計チップに対する読み書きは「隣町の駅まで時計見に行って来ます。」的な悠長な話らしいです。

OSが、プロセスから時間情報を要求される回数は膨大で、時計チップ読みに行くなんて、悠長な事はやってられなくて、メモリー上に、年月日、時分秒、ミリ秒、マイクロ秒、のカウンターを設けて、プログラムでカウントアップしながら、あまたのプロセスからの時間情報読み出し要求に応える方がレスポンスが良いらしいです。

コンピュータ起動時に、ハードウェアの時計チップから、時間情報を読み出して、OS起動完了後、NTPクライアントが起動して、最初に貰ってきた時間情報と、時計チップとどっちの時間を採用するかですが、初回は無条件にNTP側の情報を信頼する事で良さそうに思いますが、利用環境毎にケースバイケースかも知れませんから、重要な設備やコンピュータは、キチンとした知識をお持ちの方々が検討されれば良いのだとおもいます。

さて、メモリー上で、カウントアップしながら管理している時間情報と、NTPサーバーから貰った、時間情報に乖離があったら、自分の時計がズレているのか、NTPサーバーが、ズレているのか、判りませんから、時間情報の情報源のNTPサーバーは、二台以上指定して、時間情報を見比べて、自分の時計がズレているのか、判断する様な設定でコンピュータを運用するのが良いのでしょう。

でも、サーバー的ポジションで、使わないなら、トラヒックを増やさない様にNTPサーバー1台指定で、十分じゃないかと思います。

最後は、乖離があったらどうするかですが、

1.一発で合わす。(時刻起動プログラムに影響するリスク?)

2.ジワーッと合わす(正確な現在時刻にたどり着くまでに時間がかかる)

3.無視する。

など、どう言う動作モードにするか、自己責任で考える事になるのでしょう。

オーディオ

小学生の頃、友人のお家に遊びにゆきますと「セパレートステレオ」なるものが置かれていました。

私の家にも、レコードプレーヤーは有りましたが、ネットに写真が見当たりません。どちらかといえば、軽いタイプで、こちらのページに掲載されている写真のようなタイプだったと思います。

そんなにレコードもなくて、

「琵琶湖周航の歌」「池袋の夜」「1枚のレコードに複数曲入った童謡」

などが、ありました。

ラジオはおじいさんが真空管式ラジオを1台持っていました(おおざっぱにこんな雰囲気のラジオでした)、家にあったTVも真空管式でしたが、ネット上に写真が見当たらなくて、このかたのページに掲載されているTVみたいに足の生えているテレビでした。

小学校から中学になる頃、私が手にしたトランジスタラジオはSHARPのMINI BEARでした。

img_1297 img_1298

※[AM]のテプラは自分で貼りました。

高校の頃、我が家にラジカセが来ました。母親がブラザーミシンの何かの会員で、ミシンじゃなくてラジカセを買ったのですが、形からして、多分SANYOおしゃれなテレコです。

 

就職してから、ステレオを半年にひとつぐらいのペースで、買い集めたました。

レコードプレーヤー

FM/AMチューナー

プリ・メインアンプ

カセットデッキ

CDプレーヤー

スピーカー

より良い音で聞くには、コンセントのアース側を合わせると良い、というのをオーディオ関係の雑誌で読んでやっていました。

レコードプレーヤーと、チューナーの2つは今も動きます。スピーカーはエッジと言われる部分が劣化して外れてしまっています。湿度の多い環境に長年おいたのが良くなかったようです。CDプレーヤーとカセットデッキも湿気と埃で動作不調です。たぶんゴム類がダメになったと思われます。最後にプリメインアンプは、夏場の引っ越しの時に、私の汗が内部に入ってしまい、引越し後通電確認をしましたら、一瞬火を吹いて、その後通電できなくなりました。

7年ほど前、自作で、D級アンプのキットを作って鳴らしていました。

当時、「Tripath TA2020」と言うデジタルアンプ用ICがすごい性能らしいと言う話題をネットで読んでいまして、じゃぁ私も、と言う事で大阪日本橋かどこかでキットを買ってきまして作りました。電源ですが、電源は、可変電圧安定化電源を、以前から所有していましたので、それを使いました。

ステレオというより実験中基板の野ざらしみたいな雰囲気でしばらく鳴らしていました。

この頃私の音源は、ケンウッドのポータブルCDでCDを聞くとか、シャープ MD-MT77-AでMDに録音した音楽や自分で録音してきた、音の風景を聞くとかでした。

そんなにCDを持っていないのですが、「涙そうそう」とか「Aswad – Shine」とか「madonna evita」とか「NHK特集ルーブル美術館のテーマ曲」等を聞いていたと思います。

そして、ソーラーパネルで発電して、自動車用鉛バッテリーに充電し始めた頃なんですが、ステレオを聞くのに電源が変わると音が変わる、とくに自動車のバッテリーでステレオを駆動すると音が良い。というネットの話題に触発されまして、やってみた処。なかなか良い感じでした。(耳が悪いので気のせいかもしれませんけど)。しかし、アパートで大音量で鳴らすなんて、できませんから、人の居ない山間部のグランドで、こっそりと、または、山間部の公園の東屋でこっそりと、大音量試験(ぜんぜんこっそりとにならない)を敢行すべく、計画をねりましたが、自動車用バッテリを持ち運ぶのは無理と諦めて、12Vの電動ドライバー用バッテリー(ニカド:ニッケルカドミウム電池)で試してみました。聞いてみた感じは、なかなかいいかんじでした。

機材は、ポータブルCDと、自作デジタルアンプと、自作スピーカー(15cmフルレンジで組んだバスレフ)と、電動ドライバ用ニカド電池(12V)でした。

市販ステレオは、AC100V電源で動く製品ですから、バッテリーで駆動するには、電源回路を分解改造する必要が有り、出来ません。またバッテリーをAC100にインバーターで昇圧したとしても、濁ったAC100にしていては意味がありません。と言う事で、電池で駆動できる音源とアンプと言う組み合わせになりました。

デジタルアンプの出力はMAX20Wで、ステレオだから20W+20Wだったと思うんです。小さいでしょ。小さいアンプなのに、大音量にした時に「ふらつかない」「いきぎれしない」「われない」「音が澄んでいて濁らない」と、そんな印象を受けました。どう表現するといいのでしょう、騒音になることがなくて、くっきりしている。スッキリしていて、明瞭である。

変な言い方ですけど、騒音にならないんです。

でも、スピーカーから離れていくと、だんだんと、騒音に聞こえてきました。

15cmのスピーカーでは、コンサート会場みたいには出来ないとわかりました。

電池が十分な電力を供給できているのと、デジタルアンプICが良いのとで、いい音になっていたんだろうなと思います。そう言うふうなことをネットで書いている人がおられましたので、そうなんだろうと思います。

自作独立型ソーラーに、真面目に熱中すると、蓄電についてあれこれ考える事になりますので、電池の種類と特性について思いを馳せないでは居られなくなると思います。その心は、小さいパネルで一生懸命発電させても、電気がたまらないのはなぜ?と言う疑問と壁にぶつかるからなんですが、鉛蓄電池は安いし大容量何だけど、瞬間なら大電流を取り出せるけど、コンスタントに大電流を取り出そうとすると壊れるかもしれない。とか充電についても、チュルチュルといくらでも電気を流しこんで充電できるのかといえば、そうでもなくて、電極の電圧が徐々に上昇してきて、電解液の比重で見る充電完了率に至っていないにも関わらず、直ぐに電極電圧は印加限界電圧に到達してしまい、更に電圧が上がれば電極が劣化するので、一旦充電を止めて、電極電圧が規定値まで下がるのをみて、また電圧を印加するような、送り込む充電電流の制御をしてあげないと、いけなくなるとか、放電について、電池の容量を表す105Ahとかは、5時間率なのか20時間率なのかとか、結構面倒で、深放電する使い方にはディープサイクルタイプが必須とか、個体電池でもニカド、ニッケル水素リチウムイオンリチウムイオンポリマーなど、内部に貯め込むエネルギー密度や構造に応じて、特性が異なるなど、その他、大電力蓄電設備にはどう言うものがあるんだろうか?とかそう言う方向性の趣味。

あと、A級アンプ、B級アンプ、AB級アンプ、C級アンプ、D級アンプと呼び名があるらしいのですが、A,B,ABがアナログアンプで、Dはデジタルアンプで別物、Cは高周波で使うものらしく、オーディオとは関係がなさそう。

D級アンプは、デジタルだから、サンプリングして、シャノンの定理による標本化と量子化をして、掛け算など演算処理でもしているのかと、当初思ったのですが、全然違いました。

どっちかというと調光器トライアックとかのようなPWM制御っぽい事をしているみたいです。

A-D変換、D-A変換における理屈について、いろいろ難しい計算式が出てきますが、さっぱりわかりません。でもなんとなく「シャノンの標本化定理に基づく標本化と量子化を行い、デジタル符号に治すこと」と、「アンプでの増幅などで行われるデジタル処理(PWM風?)」の違いは、わかります。前者は符号化しそれを復号化しますが、後者は符号化も復号化もせず、時間軸制御に置き換えているのですよね。多分。

多分、「デジタルの符号化を伴うデジタル処理における出力のD-A変換は電圧が変化」し、「PWM制御におけるデジタル処理は電圧一定で、時間軸を制御してエネルギー量を変えている」のだろうと思います。

シャープの1ビットオーディオについては、シャノンの標本化定理を習っただけだと多分理解できないのですよね。

Tripath TA2020って開発元メーカーが倒産したあとも、いまだに出回っているとか、後継チップが出ているとか、面白いICのようです。