タグ

system callに関するkanbayashiのブックマーク (16)

  • "make install"したソフトウェアを管理できる超便利ツール「Paco」 - RX-7乗りの適当な日々

    最近、Linuxではaptやyumなど、パッケージ管理ツールで多くのアプリケーションやライブラリが管理されるようになり、普通に利用している限りはソースからコンパイルして"make install"することがほとんどありません。 とはいっても、マイナーなソフトウェアをインストールしたりとか、まだパッケージ管理されていない最新バージョンのものを使いたい場合などは、ソースからコンパイルして"make install"をしたくなる場合も有るかと思います。 しかし、"make install"した場合の最大の欠点は、インストールしたソフトウェアの管理ができないことにあります。そのため、何が入っているのか分からなくなっているとか、アンインストールが出来ない、などのケースが起こりうるわけです。 特にアンインストールする可能性があるソフト(ほとんどのソフトがそうですが・・・)をインストールする場合は、わざ

    "make install"したソフトウェアを管理できる超便利ツール「Paco」 - RX-7乗りの適当な日々
  • コンピューター:C言語講座:FIFO(名前付きパイプ)について

    コンピューター:C言語講座:FIFO(名前付きパイプ)について 概要 FIFOは来、First In First Outというデータ形式の名称で、はじめに入ったデータがはじめに取り出されるという意味で、STACK形式のように最後に入ったデータがはじめに取り出されるのに対比するものですが、ここではプロセス間の通信に使用するFIFOを取り上げます。 TCP/IPプログラムでプロセス間で通信を行なう説明を行ないましたし、fork,exec,pipeでも同様にプロセス間で通信を行なえました。今回の話題のFIFOはPIPEによく似た感じのものですが、パイプは親があらかじめ準備してから子を起動して通信するのですが、FIFOはお互いに勝手に通信をはじめることが出来ます。ファイルのように名前をつけたパイプというイメージで、実際にUNIXではファイルのようにディレクトリ中に作成します。したがって、FIFO

  • Manpage of MKFIFO

  • Manpage of SYSCALLS

    i386 を含む多くのプラットフォームでは、ソケット関連のシステムコールは (glibc のラッパー関数を介してだが) すべて socketcall(2) 経由に多重されている。 同様に、System V IPC 関連のシステムコールは ipc(2) 経由に多重されている。 注意 以下の点に留意すること: * 以下のシステムコールは、 システムコール・テーブルにスロットが予約されているが、 標準のカーネルには実装されていない: afs_syscall(2), break(2), ftime(2), getpmsg(2), gtty(2), idle(2), lock(2), madvise1(2), mpx(2), phys(2), prof(2), profil(2), putpmsg(2), security(2), stty(2), tuxcall(2), ulimit(2), vs

  • Manpage of SYSCALL

    SYSCALL Section: Linux Programmer's Manual (2) Updated: 2007-07-26 Index JM Home Page roff page 名前 syscall - 間接システムコール 書式 #define _GNU_SOURCE /* or _BSD_SOURCE or _SVID_SOURCE */ #include <unistd.h> #include <sys/syscall.h> /* For SYS_xxx definitions */ int syscall(int number, ...); 説明 syscall() は number で指定されたアセンブリ言語インターフェースのシステムコールを、 指定された引き数をつけて実行する。 システムコールのシンボル定数はヘッダファイル <sys/syscall.h> に書かれて

  • linux のシステムコールをフックする : DSAS開発者の部屋

    最近、とあるクローズドソースなデバイス管理ツールの挙動が気になり、その動作について解析してみることにしました。 プログラムをデバッグしたり解析したい時、どんなシステムコールが呼ばれ、どのような引数が渡されているかを、調べることができる strace は非常に有用です。 しかし、strace では ioctl で渡される複雑なデータ構造を表示することはできないため、システムコールをフックして引数を表示するという手段を取ることにしました。 そんな訳で linux でシステムコールをフックする方法について調べて見たところ、意外といろいろな方法が有ることを知りましたので、試してみた方法を幾つか紹介したいと思います。 注)今回の実験に使用した linux kernel のバージョンは 2.6.25.11 です。異なるバージョンではこの実験通りにはならない場合があります。 LD_PRELOAD を使っ

    linux のシステムコールをフックする : DSAS開発者の部屋
  • マルチスレッドのコンテキスト切り替えに伴うコスト - naoyaのはてなダイアリー

    また Linux カーネルの話です。 Linux では fork によるマルチプロセスと、pthread によるマルチスレッドでの並行処理を比較した場合、後者の方がコストが低く高速と言われます。「スレッドはメモリ空間を共有するので、マルチプロセスとは異なりコンテキストスイッチ時にメモリ空間の切り替えを省略できる。切り替えに伴うオーバーヘッドが少ない。」というのが FAQ の答えかと思います。 が「オーバーヘッドが少ない」と一言にいわれても具体的にどういうことなのかがイメージできません。そこで Linux のスレッド周りの実装を見て見ようじゃないか、というのが今回のテーマです。 3分でわかる(?) マルチプロセスとマルチスレッド まずはうんちく。マルチプロセスとマルチスレッドの違いの図。以前に社内で勉強会をしたときに作った資料にちょうど良いのがあったので掲載します。Pthreadsプログラミ

    マルチスレッドのコンテキスト切り替えに伴うコスト - naoyaのはてなダイアリー
  • Kernel/Internal/プロセス管理/スレッド - PukiWiki

    LinuxThreads glibcに実装されているスレッド Kernel2.0からサポートされるようになった__clone() システムコールを利用することによって、カーネルレベルスレッドが利用可能になった。 実際に、この __clone() を利用して作成されたPthread ライブラリである linuxthreads (glibc版)のソースコードには、以下のような記述を見つけることができる。 /* Do the cloning */ pid = __clone(pthread_start_thread, (void **) new_thread, CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | __pthread_sig_cancel, new_thread); このシステムコールは Linux に固有であり、べったりと Li

  • 目指せプログラマー!

    目指せプログラマー!にようこそ。 当サイトはこちらに引っ越しました。 お手数をおかけしますが、上記サイトへご移動くださいませ。

  • Windowsでアプリケーションのシステムコールの呼び出しを監視・ロギングするようなアプリケーションはないでしょうか。…

    Windowsでアプリケーションのシステムコールの呼び出しを監視・ロギングするようなアプリケーションはないでしょうか。 あるいはそのようなAPIは提供されてないでしょうか。

  • 【図解】 LinuxサーバーとWindowsサーバーの違い | POP*POP

    LinuxサーバーとWindowsサーバーの違いについて面白い記事がありました。この記事では2種類のサーバの動きを可視化してどちらがセキュリティ的に安全かを論じています。 » Why Windows is less secure than Linux 下記の画像はあるWebページが呼び出された時のサーバー内のシステムの動きを表したマップ。2枚とも同じWebページを呼び出しています。 ↑ こちらApacheを使ったLinuxサーバーの場合(クリックで拡大します)。 ↑ こちらIISを使ったWindowsサーバーの場合(クリックで拡大します)。 こうやって可視化されると説得力がありますね。システムに詳しくない人でも、これら画像を見ればどちらがスムーズな動きをしているかわかりやすいのでは。 新しいサービスを立ち上げようという人でサーバー選びに悩んでいる方は参考にされてみてはいかがでしょうか(もち

    【図解】 LinuxサーバーとWindowsサーバーの違い | POP*POP
  • もわの台所: systemtap @ debian

    ユーザ空間からカーネル空間にプローブ関数を差し込めることが出来れば便利である。 systemtap を用いることでそれを行なうことが出来る。 debianでのインストール方法は SystemtapOnDebian で理解できる。 基的に必要なのは systemtap パッケージのインストール Kernel の再構築 kernel-img.conf の変更 だけだ。 Fedora や RedHat に対するインストール方法は こちら にある systemtap の紹介スライドに書いてある。 利用方法も上記のスライドに書いてある。 サンプルとなるスクリプトは こちら から入手が可能だ。 例えば top.stp を実行した結果は以下のようになる。 root# stap top.stp SYSCALL COUNT sys_gettimeofday 317 sys_select 70 sys_

  • IBM Developer

    IBM Developer
  • Omicron カーネル読書会/68

    kanbayashi
    kanbayashi 2007/11/11
    xm pauseを真似ると簡単にxmコマンドから,hypercallの実装までできる.
  • mallocを書く

    これまでのあらすじ: GC を忘れて、スマートポインタも忘れられるソフトウェアについてぼんやり考えていたわけです。小規模のソフトならメモリは確保しっぱなしで良い、 Apache なんかなら1アクセスごとにメモリプール作って終わったら全部まとめて解放すればいい、私が書くものはそんなものが多いだろう、と。 んで、解放のこと考えなきゃいけない malloc に対して解放に関して考えることが非常に少ない環境ならやること少ないだろう malloc って頭の中で考えても結構実装めんどいしな…と malloc を見てこれは無理だと思うわけです。貧乏症には無理。なんかややこしいし。そのへんは wo さんのこのあたりとかぶりつつ。 http://d.hatena.ne.jp/w_o/20051017#p1 ではこんなわけのわからんものは使わぬ、ということでとりあえず解放を考えない、外部挿し替えを意識した (

    mallocを書く
  • malloc - Wikipedia

    malloc(マロック, エムアロック)、calloc、reallocは、動的メモリ確保を行うC言語の標準ライブラリの関数である[1][2][3]。確保したメモリの解放にはfree関数を使用する。 mallocが使用する実際のメモリ確保機構には様々な実装がある。それらの性能は、実行時間と要求されるメモリの両面で様々である。 C言語は通常メモリを「静的メモリ確保」か「自動メモリ確保」で管理する。静的変数は主記憶上にプログラムが存在する期間中ずっと確保されている。自動変数(局所変数)は通常コールスタック上に確保され、対応するサブルーチンが実行中の間だけ存在する。しかし、いずれの方法も限界があり、確保できるメモリ量(変数のサイズ)はコンパイル時に決められてしまう。必要なサイズが実行時でないと判明しない場合、例えばディスク上のファイルから任意のサイズのデータを読み込むような場合、固定サイズのデータ

    kanbayashi
    kanbayashi 2007/11/04
    GNU Cライブラリ (glibc)はLinuxなどのbrkとmmapを使用している。brkシステムコールはヒープのサイズを拡張したり縮小したりできる。
  • 1