タグ

関連タグで絞り込む (284)

タグの絞り込みを解除

unixに関するsyo-yuのブックマーク (149)

  • カーネルを読んでみる - Plan9日記

    UNIXカーネルがC言語に書き換えられたのは3rd editionであり1973年のことなので、このバージョンのソースコードはPDP-11のフルアセンブリである。しかし、4221行とコンパクトだし、コメントも満載なので、アセンブリに対するアレルギーがなければ、pre K&R Cの文法に惑わされなくてよい分、V6カーネルよりも読みやすかったりして。どちらにしろPDP-11アーキテクチャの理解がある程度必要だけど。Gordon BellのページにPDP-11 handbookのコピーがあったので、興味がある人はそちらもどうぞ。 まずはシステムコール呼出しから。次のコードは、cat.sのopenシステムコールを呼び出す部分の抜粋だ。 2: mov r0,0f sys open; 0:..; 0システムコールの実現には、sys命令によるトラップを利用する。この際にパラメータをどのようにユーザからカ

    カーネルを読んでみる - Plan9日記
  • UNIX 1st ed.カーネルのソースコード - Plan9日記

    以前、「よみがえるUNIX 1st ed.」というエントリを書いたが、そのソースコードが公開されていた(unix-jun72)。SIMHシミュレータを使って、当時のUNIX環境を再現することもできる。すばらしい! まず、Subversionからコードをチェックアウトする。 $ svn co http://unix-jun72.googlecode.com/svn/trunk/ unix-jun72-read-onlypagesの下にOCRから取り込んだカーネルのアセンブリコード(u0.s, ..., u9.s, ux.s)とinit、shがある。まだこのころはアセンブリでカーネルが書かれていた。各ソースコードの概要はこんな感じ。 u0.s: 初期化 u1.s: システムエントリ、システムコール u2.s: 残りのシステムコール u3.s: プロセススイッチ、スワッピング u4.s: キャラ

    UNIX 1st ed.カーネルのソースコード - Plan9日記
  • ディレクトリの中にある大量の小さなファイルを高速に読み込む方法 - 射撃しつつ前転 改

    ディレクトリの中にある大量のファイルを高速に読み込む方法が知りたかったので、実験してみた。想定しているシチュエーションは、一つ一つのファイルは数KB程度だが数が多い、という場合である。適当な順番でアクセスすると、ランダムアクセスになってしまいとても時間がかかる。個々のファイルを読み込む順番はどうでも良く、すべてのファイルを処理することさえできればいいので、原理的にはシーケンシャルアクセスで処理できてしかるべきである。 まず、ファイルシステムについて。HDDやSSDなどのハードウェアにアクセスする際には、ファイル名などという概念はもちろん存在しない。ファイル名と実際のディスク上の対応を管理するのがファイルシステムの主な役割である。ファイルシステムは、ファイル名からそのファイルに対応するブロック番号(メモリアドレスみたいなもんだな)を調べて、そのブロック番号を指定してHDDやSSDにアクセスす

    ディレクトリの中にある大量の小さなファイルを高速に読み込む方法 - 射撃しつつ前転 改
  • Mac OS X Leopard - dynamic_pager を骨抜きに : 404 Blog Not Found

    2008年08月25日06:30 カテゴリTipsiTech Mac OS X Leopard - dynamic_pager を骨抜きに Mac OS X 10.5.1 Leopard アップルコンピュータ OS X で一ついやなものは、swapping. もちろんパートナーでなくて、実記憶と仮想記憶の、ね。 現在私が使っている MacBook Pro には、4GBのRAMが乗っている。滅多なことではswapしないと思いきや、する時にはする。特に VMWare Fusion を使うようになってからは。VMWareが提供するのは仮想マシンだけど、仮想マシンも物理メモリーを必要とするのだし。 問題は、メモリーをっているアプリケーションを終了しても、一度 swap out されたプロセスたちが実メモリーには戻ってこないこと。んで、一つでもswap outされているプロセスがあれば、/var/

    Mac OS X Leopard - dynamic_pager を骨抜きに : 404 Blog Not Found
  • 実行中のアプリケーションを外から観察するコマンド。 - こせきの技術日記

    strace システムコールをトレース。カーネルと何を話しているか。 strace -p PID でプロセスにアタッチ。実行中のプロセスをトレース。 straceを使ったデバッグ - SourceForge.JP Magazine : オープンソースの話題満載 Linuxカーネルの作り出す世界 − @IT自分戦略研究所 - ふつうのLinuxプログラミング 青木峰郎 システムコールとライブラリ関数 − @IT自分戦略研究所 システムコール・ライブラリルーチン - UNIX の部屋 ltrace 共有ライブラリの呼び出しをトレース。*.soと何を話しているか。 ltrace -p PID でプロセスにアタッチ。実行中のプロセスをトレース。 ltrace で共有ライブラリの関数呼び出しをトレースする - bkブログ 404 - エラー: 404 - Linux JF ƒ‰ƒCƒuƒ‰ƒŠ‚ÌŠ

  • MacPortsの基本的な使い方とコマンド

    Macに移行して2ヶ月になりそうな今日この頃、ようやくMacになれてきた熊谷です。こんにちは。 MacというかOSX上で開発を行う上で欠かせないものにMacPortsがあります。前回もちょっと触れたのですが、今回はこれについてもうちょっと触れたいたいと思います。 MacPortsとはOSXで利用可能なパッケージ管理システムで、これを使うことによりOSX上でより良いUNIX生活を送ることができるようになります。私自身、まだMacPortsを使い始めたばかりで勉強中なんですが、それを忘れないようにするためにもメモ書きします。 まず、MacPortsをインストールするためにはOSXの開発環境であるXcode Toolsをインストールしておく必要があります。Xcode ToolsはMacに付属しているDVDかDeveloper Connectionからダウンロードしてインストールしておきます。で、

    MacPortsの基本的な使い方とコマンド
  • C++ のプログラムのデバッグを楽にする方法

    Google が公開しているソフトウェアの解説シリーズ(→その1 , その2)の続きです。今回は google-glog を使ってスタックトレースを表示する方法についてご紹介します。 C++ でプログラムを書いているとよく遭遇するのがセグメンテーション違反というエラーです。不正なアドレスへのアクセスなどによりセグメンテーション違反が起きると、通常、 UNIX 系の OS では SIGSEGV というシグナルによってプログラムが終了するとともに、 core というファイルが作られます。 core ファイルにはデバッガから参照できるいろいろな情報が残っていますが、多くの場合に役に立つのは、スタックトレースという情報です。スタックトレースを見れば、プログラムがどこでクラッシュしたのか、どのような関数を経由してそこにたどり着いたのかがわかります。プログラムがクラッシュした箇所を特定できれば、単純な

    C++ のプログラムのデバッグを楽にする方法
  • lsコマンドをハックしてみよう

    ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog こんにちは、ショッピング事業部開発部の吉野です。 Yahoo!ショッピング開発部では新人エンジニア向けにコマンドのソースコードを読むことを奨励しています。 その初期の題材として、lsコマンドがよく挙げられます。 今回は「lsコマンドをハックしてみよう」と題し、lsコマンドについてお話しさせていただきます。 突然ですがエンジニアの皆さん、lsコマンドのソースコードを読んだことはありますか? 読んだことのない方はぜひ一度、目を通しておくことをおすすめします。 意外と知られていませんが、lsはcd,pwdなどのコマンドと違いシェルの組み込みコマンドではありません。 一口にlsと言っても、複数のソースコードが存在します。 代表的なのはGN

    lsコマンドをハックしてみよう
  • Solaris ZFSの基本的な仕組みを知る

    連載では、Solaris ZFS (以下 ZFS) の基的なコンセプトやアーキテクチャから、その機能や実用・応用例を解説するという流れでZFSをご紹介させていただきます。 今回は、ZFSの基的コンセプトとアーキテクチャの解説です。 Zの文字に込められた意味 ソースコードの複雑化と、扱うデータ量の増大に伴い、既存のファイルシステムでは管理性、拡張性、安全性、完全性、機能、性能が問題となることが多くなってきました。このような中、サン・マイクロシステムズ(以下、サン)のエンジニアチームは、まったく新しい、まるでコンピュータのメインメモリのように扱えるファイルシステムの開発を始めました。 目的は、既存のファイルシステムが抱える問題点をすべて解決し、管理が容易で、拡張性があり、安全でかつ完全性が保持され、便利な機能を持ち、高性能な、ある意味、究極のファイルシステムを作ることでした。 ZFSの「

    Solaris ZFSの基本的な仕組みを知る
  • OSXの固有コマンド - MacWiki

    -c creator[編集] ファイルのクリエータを creator に設定する。 クリエータとは Classic MacOS でファイルとそれを作成したアプリケーションを関連させるために用いられていた情報で、英数字または空白4文字からなる文字列で指定される。クリエータが空白を含む場合には必ず引用符で creator を囲む必要がある。 -d date[編集] ファイルの作成日を設定する。date の書式は mm/dd/[yy]yy [hh:mm:[ss] [AM | PM]] となる。date が空白を含む場合には引用符で囲まなければならない。 -m date[編集] ファイルの修正日を設定する。date の書式は -d オプションと同じ。 -t type[編集] ファイルタイプを設定する。ファイルタイプとは Classic MacOS でファイルの種類を示すために用いられていた情報で、

  • Linuxデスクトップで綺麗なフォントを使う方 - UNIX的なアレ

    gnome標準のフォントも悪くありませんが、もっと可視性に優れたフォントでターミナルを使ってみたいと思いませんか? 約5分ほどで、より可視性に優れたフォントをインストールすることができます。簡単にできるのでチャレンジしてみましょう!再起動は必要ありません。 なお、今回の手順はubuntu8.10でテストをしています。 必要なパッケージをインストールする cabファイルとなっているので、展開するためのツールをインストールします。 $ sudo apt-get install cabextract フォントをダウンロードする それではフォントをダウンロードして、展開します。最後にしっかりと展開されたか確認してください。以下のサイトからダウンロードをします。 http://osakattf.hp.infoseek.co.jp/ $ mkdir ~/src && cd ~/src $ wget h

    Linuxデスクトップで綺麗なフォントを使う方 - UNIX的なアレ
  • ncある限りぼくはどこまででもいけるッ! - (ひ)メモ

    多段SSHの話。 2008-05-02追記 ncの-w secオプションで、一定時間通信がなければncが終了するようにしました。このオプションを指定しないと、sshコネクションを切った後でもncのプロセスが残留してしまいます。 2010-03-08 OpenSSH 5.4以降のnetcat mode (ssh -W host:port ...) を使えば、ncコマンドは不要かも。 2010-11-08 zshでNo such file or directoryと言われるのは、これが原因かもhttps://bugzilla.mindrot.org/show_bug.cgi?id=1494 正攻法でこたつにアクセスするには下図のようなSSHアクセスを繰り返さなければならない、といった状況があるとする。 uchi ----> otonari otonari ----> genkan genkan

    ncある限りぼくはどこまででもいけるッ! - (ひ)メモ
  • GNU Emacs Color Theme Test

    Maverick Woo (Shan Leung) Hello, I am a Systems Scientist at CyLab in Carnegie Mellon University. I received my Ph.D. in Computer Science from Carnegie Mellon in 2009 and joined CyLab in 2011. My current research interests include software security and program analysis, with a focus on algorithm design and budget optimization. Contact pooh at cmu dot edu 4720 Forbes Ave., Room 2120 Carnegie Mellon

  • sanonosa システム管理コラム集: Linuxでそこそこ安全かつ楽にサーバを立てる方法

    【1.初めに】 要望がありましたので、今回はLinux(実際はRedhat系Linux)でそこそこ安全かつ楽にサーバを立てる際の手順を記してみます。 ※一応注意:今回は、試しにサーバを立てる程度であればこのくらいで十分ではないかと思うレベルを想定しています。サービスに投入するサーバでは私はもっと細かいところまで手を入れています。 【2.そこそこ安全かつ楽にサーバを立てる手順】 さて、いよいよ題です。サーバを立てる際は、不必要なものを全て取り除いてから必要なものを追加していくというのが基になります。以下の手順1~5では不要なものの除去、手順6~7で必要なものを追加し確認しています。それを踏まえまして。 ■手順1. OSをインストールします。(私はLinuxであればCentOSを入れることが多いです。その際私はインストールの種類をカスタムにしパッケージグループの選択では開発ツール以外全部チ

    sanonosa システム管理コラム集: Linuxでそこそこ安全かつ楽にサーバを立てる方法
  • The Open Group Base Specifications Issue 6

    <body> <h2>Frame Alert</h2> <p>This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client.<br> Link to<a href="mindex.html">Non-frame version.</a></p> </body>

  • Unix Command-Line Kung Fu

  • screenに関するtips - Linuxとかプログラミングの覚え書き -

    unix使いには、便利なscreenですが、トラブルもあります。 トラブル毎に原因と解決方法を整理してみました。 以下、screen の コマンドキーは、 デフォルトの "C-a" であるとします。設定で別のキーにしている場合は適宜読み替えてください。 時々フリーズする 症状: screen 経由で emacs を使っていると端末がかたまる場合がある。C-x C-s や C-s を押すと固まる。 症状: 時々フリーズする。キーを受け付けなくなる。C-q や C-a C-q を押すと復帰する。 原因: "C-a f"を押すなどして、フロー制御が有効なモードに切り替わったため。 解決方法: "C-a f"を押し、フロー制御をOffにすれば良い 参考URL: http://kyoto.cool.ne.jp/kinoka/pc/screen.html http://uragoya.com/2007

    screenに関するtips - Linuxとかプログラミングの覚え書き -
  • Unix Programming Frequently Asked Questions 日本語訳 - 1 プロセス制御 - 1.6 どうすればゾンビプロセスができることを防ぐことができますか?

    Go to the first, previous, next, last section, table of contents. 1 プロセス制御 1.1 新しいプロセスの生成: fork() 1.1.1 fork()は何をするのですか? #include <sys/types.h> #include <unistd.h> pid_t fork(void); fork()関数は存在しているプロセスから新しいプロセスを生成するために使用さ れます。新しいプロセスを子プロセスといい、すでに存在していたプロセスは親 プロセスといいます。fork()の戻り値をチェックすると、この両者を区別できま す。親プロセスには子プロセスのプロセスIDが返されますが、子プロセスには 0が返されるのです。 ですから、以下の簡単なコードがfork()の使い方の基になります。 pid_t pid; switch

  • 殺し損なったデーモンがポートを占有してしまったときの殺し方 - @kyanny's blog

    例えば apache をちゃんとシャットダウンしたはずなんだけどなぜか 0.0.0.0:80 みたいな特定のポートを占有されたままで(ちゃんとシャットダウンできてないけど apachectl stop では殺せなくなってしまった、 ps auwwx | grep httpd などにも出てこない)そいつらを殺してから再起動したい、という場合に、以下のようにするといい。 id:hideden は何でも知っているなぁ。ありがとう。 # lsof -i | grep 'TCP \*:81' | awk '{print $2}' | xargs killlsof -i でいろいろ出てくる。 netstat -an というのもある。違いはよくわからない。

    殺し損なったデーモンがポートを占有してしまったときの殺し方 - @kyanny's blog
  • cdd - screen の別WINDOWのカレントディレクトリに移動する zsh スクリプト - 2nd life (移転しました)

    現在は m4i さん作のcdd を tmux, bash, multi session +α に対応した - カワイイはつくれる のcddを使うのがオススメです。 screen を使ってると、別の作業している WINDOW のカレントディレクトリに移動したくなることってありませんか?私は月1000回ぐらいあります。で、毎回手動で打つのがめんどくさくなってきたので zsh スクリプト書いてみたら思っていた以上に便利だったので、汚いスクリプトですが公開します。 http://svn.coderepos.org/share/lang/zsh/cdd/cdd 使い方は、上記スクリプトを checkout したりダウンロードしたりしてから、.zshrc に autoload -U compinit compinit source ~/path/cdd # (cdd はこのファイル) するを追加します

    cdd - screen の別WINDOWのカレントディレクトリに移動する zsh スクリプト - 2nd life (移転しました)