並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 25 件 / 25件

新着順 人気順

システムコールの検索結果1 - 25 件 / 25件

タグ検索の該当結果が少ないため、タイトル検索結果を表示しています。

システムコールに関するエントリは25件あります。 linuxシステムkernel などが関連タグです。 人気エントリには 『Linux システムコール 徹底入門』などがあります。
  • Linux システムコール 徹底入門

    Linux システムコールについて調べたことをまとめる。システムコールの仕組みを理解すると、 OS とアプリケーションがどのように連携して動いているのかを理解できるようになります。 システムコールは CPU に依存する処理が多いため、 x86_64 に絞ります。 検証環境]# cat /etc/redhat-release CentOS Linux release 8.0.1905 (Core) ]# uname -a Linux localhost.localdomain 4.18.0-80.11.2.el8_0.x86_64 #1 SMP Tue Sep 24 11:32:19 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux ]# cat /proc/cpuinfo | head processor : 0 vendor_id : GenuineInte

      Linux システムコール 徹底入門
    • ptrace より 100 倍速いシステムコールフック作った - かーねるさんとか

      新しい高性能で汎用的なシステムコールフックの仕組みを作ってみました。 モチベーションとして、システムコールをフックしてユーザー空間でエミュレートしたくなったのですが、現状、性能と汎用性を両立する仕組みがなさそうだったので、新しい方法を考えました。 今回のシステムコールフックの仕組みは以下のような特徴があります。 ptrace より 100 倍以上高速 LD_PRELOAD や既存のバイナリ書き換えツールより確実 カーネルへの変更なし、かつカーネルモジュールを使わない プログラムのソースコード、プログラムの再コンパイル不要 eBPF でトレーシングをしているけれど、できれば制約が少ないユーザー空間でトレーシングツールを作りたい。もしくは、gVisor のようなサンドボックスを作りたいけれど、ptrace による性能劣化が大きいので、他の高速なシステムコールフックの仕組みが使いたい、というよう

        ptrace より 100 倍速いシステムコールフック作った - かーねるさんとか
      • MicrosoftのLinux向け無料プロセス監視ツール「ProcMon」レビュー、システムコールごとの実行時間などを確認可能

        MicrosoftがWindows向けトラブルシューティングツール群「Windows Sysinternals」に含まれるプロセス監視ツール「Process Monitor(ProcMon)」をLinuxに移植します。このLinux版ProcMonはオープンソースソフトウェアとして公開され、さっそくプレビュー版がリリースされたので実際に使ってみました。 GitHub - microsoft/ProcMon-for-Linux: Procmon is a Linux reimagining of the classic Procmon tool from the Sysinternals suite of tools for Windows. Procmon provides a convenient and efficient way for Linux developers to tra

          MicrosoftのLinux向け無料プロセス監視ツール「ProcMon」レビュー、システムコールごとの実行時間などを確認可能
        • Linux システムコール 徹底入門

          Linux システムコールについて調べたことをまとめる。システムコールの仕組みを理解すると、 OS とアプリケーションがどのように連携して動いているのかを理解できるようになります。 システムコールは CPU に依存する処理が多いため、 x86_64 に絞ります。 検証環境]# cat /etc/redhat-release CentOS Linux release 8.0.1905 (Core) ]# uname -a Linux localhost.localdomain 4.18.0-80.11.2.el8_0.x86_64 #1 SMP Tue Sep 24 11:32:19 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux ]# cat /proc/cpuinfo | head processor : 0 vendor_id : GenuineInte

            Linux システムコール 徹底入門
          • システムコールを速く漏れなくフックする方法 | IIJ Engineers Blog

            ptrace、Syscall User Dispatch:カーネルが提供している ptrace や Syscall User Dispatch のような機能は、ユーザ空間でシステムコールのフックを実装するために利用できます。ですが、これらを利用すると、元のユーザ空間プログラム内部でのシステムコール呼び出しのコストが大きくなり、結果として、性能が大きく劣化してしまいます。(要件1を満たせない) eBPF :eBPF のようなカーネル内の関数へフックを適用できる仕組みもありますが、eBPF は XDP のような場合を除くと、基本的にカーネルの挙動を変更するためには利用できないため、カーネル機能をユーザ空間でエミュレートする、といった用途には適していません。(要件5を満たせない) ライブラリ関数の置き換え:標準ライブラリ(libc 等)は、沢山のシステムコールのラッパーライブラリ関数を実装してお

              システムコールを速く漏れなくフックする方法 | IIJ Engineers Blog
            • Go 1.14でシステムコールがEINTRエラーを返すようになった - Plan 9とGo言語のブログ

              Go 1.13までのゴルーチンの切り替えは、チャネルの送受信やシステムコール呼び出し、関数呼び出し前にコンパイラが暗黙的に挿入する処理などによって行われていました。そのため、上記の切り替わり操作を全く行わないループなどがあれば、そのゴルーチンがずっと実行されます。 func loop() { // この辺りにコンパイラがコード挿入している for { // 切り替わり処理が行われないので無限に実行される } } この結果、$GOMAXPROCSが1の場合はプログラムが停止します。コンパイラが挿入するコードは、インライン展開された場合やgo:nosplitディレクティブが記述された場合には行われないので、関数呼び出しをしていてもゴルーチンが切り替わらない場合はあります。 ゴルーチンの切り替えと関数のスタックチェック go doc compile/Compiler Directives Goの

                Go 1.14でシステムコールがEINTRエラーを返すようになった - Plan 9とGo言語のブログ
              • APIとかABIとかシステムコールとか - 覚書

                はじめに 本記事はLinux環境における次のようなことをざっくり理解するための記事です。 Application Programming Interface(API)って何? Application Binary Interface(ABI)って何? システムコールとAPIとABIの関係って? それぞれ何がどう違うの? この手の情報はググればwikipediaやらにいろいろ情報が載ってるんですが、初心者が理解するには細かいことまで書かれすぎていて、かつ、それぞれの関係がわかりにくいです。なので、用語を逐一解説するのではなく、ありがちな質問のQAという形をとりました。人によって用語の意味の揺らぎがあったりするんですが、私の解釈ということで。あからさまに間違っていたら指摘していただけると嬉しいです。 これを書こうと思ったきっかけは、以前こんなtweetを見かけたことです。それから「そういえば最

                  APIとかABIとかシステムコールとか - 覚書
                • GNU/Linux (x86/x86-64) のシステムコールをアセンブラから呼んでみる - CUBE SUGAR CONTAINER

                  今回は、表題の通り x86/x86-64 の GNU/Linux でシステムコールをアセンブラから呼んでみる。 システムコールは、OS (ディストリビューション) のコアとなるカーネルがユーザ空間のプログラムに向けて提供しているインターフェースのこと。 なお、アセンブラの実装に関しては以下の二つを試した。 NASM (Netwide Assembler) GAS (GNU Assembler) アセンブラには INTEL 記法と AT&T 記法という二つのシンタックスがある。 NASM はデフォルトで INTEL 記法を、GAS はデフォルトで AT&T 記法を使うことになる。 使った環境は次の通り。 $ uname -sr Linux 4.15.0-65-generic $ nasm -v NASM version 2.13.02 $ as -v GNU assembler versio

                    GNU/Linux (x86/x86-64) のシステムコールをアセンブラから呼んでみる - CUBE SUGAR CONTAINER
                  • Docker Compose で php-fpm が発行するシステムコールを見る - Shin x Blog

                    php-fpm の挙動を確認するために発行されるシステムコールを簡単に確認できる Docker Compose 環境を作りました。 github.com システムコール strace-php-fpm strace オプション php-fpm が発行するシステムコール例 ini ファイルの探索 nginx からの FastCGI リクエスト PHP ファイルの読み込み さいごに 参考 システムコール システムコールは、php-fpm のようなユーザプログラムが、ファイル操作やネットワーク通信、プロセス制御のようなカーネルが提供する機能を利用する仕組みです。PHP コードは PHP(ここでは php-fpm)で実行する必要があるので、php-fpm が発行するシステムコールを確認することで php-fpm や PHP コードがどのように動作しているかを知る手掛かりになります。 システムコールを

                      Docker Compose で php-fpm が発行するシステムコールを見る - Shin x Blog
                    • ptraceより100倍以上高速なエミュレートを実現 バイナリの書き換えでシステムコールをフックする

                      Kernel/VM探検隊は、カーネルやVM、およびその他なんでもIT技術の話題ジャンルについて誰でも何でも発表してワイワイ盛り上がろうという会です。yasukata氏は、バイナリの書き換えで、システムコールをフックする「Zpoline」の仕組みについて紹介しました。 システムコールをフックしたくなった理由 yasukata氏(以下、yasukata):yasukataといいます。発表を始めます。 今回は、「Zpoline」という、バイナリを書き換えることでシステムコールをフックする仕組みを紹介します。ここではx84-64のCPUで動作するLinuxを想定しています。(スライドを示して)ソースコードはこちらにURLがあるので、よろしければ見てみてください。あとでスライドも公開するので、そちらも併せてご覧ください。 まず、なぜシステムコールをフックしたくなったのかですが、個人的にカーネルに実装

                        ptraceより100倍以上高速なエミュレートを実現 バイナリの書き換えでシステムコールをフックする
                      • APIとかABIとかシステムコールとか

                        はじめに 本記事はLinux環境における次のようなことをざっくり理解するための記事です。 Application Programming Interface(API)って何? Application Binary Interface(ABI)って何? システムコールとAPIとABIの関係って? それぞれ何がどう違うの? この手の情報はググればwikipediaやらにいろいろ情報が載ってるんですが、初心者が理解するには細かいことまで書かれすぎていて、かつ、それぞれの関係がわかりにくいです。なので、用語を逐一解説するのではなく、ありがちな質問のQAという形をとりました。人によって用語の意味の揺らぎがあったりするんですが、私の解釈ということで。あからさまに間違っていたら指摘していただけると嬉しいです。 これを書こうと思ったきっかけは、以前こんなtweetを見かけたことです。それから「そういえば最

                          APIとかABIとかシステムコールとか
                        • システムコールとは何なのか - Qiita

                          なぜシステムコールについて気にするのか システムコールとはOSが提供する機能をアプリケーションが利用する仕組みのことですが、システムコールについて知ることはアプリケーションの働きを理解する上で重要です。 なぜならアプリケーションの動作の中で、重要なもののほぼ全てはシステムコールを利用して実現されているからです。 例えば、ネットワークを利用した通信、ファイルへの入出力、新しいプロセスの生成、プロセス間通信、コンテナの生成などは、システムコールを使用することで実現されています。 逆にシステムコールを使わずにアプリケーションが出来ることと言えば、CPU上での計算とメモリへの入出力くらいでしょう。 この記事で解説する内容 この記事で解説する内容は、システムコールの一般的な性質や仕組みについてです。 そもそもシステムコールとは何なのか、どのような仕組みで実現されているのかというところを解説します。

                            システムコールとは何なのか - Qiita
                          • dlmopen を使ってシステムコールのフックをいい感じにプログラミングする - かーねるさんとか

                            前回の記事で紹介しました Zpoline というシステムコールフックの仕組みだと、バイナリ書き換え後の関数を、システムコールフックから呼び出してしまうと、デッドロックもしくは無限ループが発生することがあるという問題がありました。 結果として、システムコールフックの実装に標準ライブラリ内の機能、例えば、printf 等が使えなくてプログラミングがしにくくなっていました。 この問題は、dlmopen という機能を使うと解決できると教えて頂いて、実際に大分簡単にフック関数を実装できるようになったので、今回の記事では、具体的な Zpoline での利用方法について説明します。 以下の GitHub 上のリポジトリに置いてあるソースコードは dlmopen を利用できるように変更してありますので、よかったら是非試してみてください。 github.com dlmopen の前に dlopen とは?

                              dlmopen を使ってシステムコールのフックをいい感じにプログラミングする - かーねるさんとか
                            • システムコールトレーシング: 吸い込まれる標準入力を観察する - にゃみかんてっくろぐ

                              Linuxその2 Advent Calendar 2020 18 日目の記事です。 「スクリプト書いてたんですが、なぜか途中で止まるんです」と言われた。 止まっている様子(シンタックスハイライトが綺麗でないので画像で) 確かに yarn gen で止まっている。 yarn start も date も実行されていない。終了コードは 0 で、正常だ。 「ファイルとして実行してみて」と伝えた。 最後まで実行される様子 最後まで実行された。 雰囲気で「たぶん 標準入力が吸い込まれている」と雑返答をしてしまったが、ここでその正体を明らかにしておきたい。 1. strace でシステムコールを記録する 2. システムコールから挙動を観察する 2-1. ヒアドキュメントの書き出し 2-2. 標準入力をヒアドキュメントに差し替え 2-3. bash を実行 2-4. 標準入力を読み込み 2-5. dat

                                システムコールトレーシング: 吸い込まれる標準入力を観察する - にゃみかんてっくろぐ
                              • マイクロソフト、「Windows Terminal」発表/Windows上でフル互換のLinuxシステムコールを実現する「WSL 2」/Webブラウザで動作する「Visual Studio Online」発表ほか、2019年5月の人気記事

                                マイクロソフト、「Windows Terminal」発表/Windows上でフル互換のLinuxシステムコールを実現する「WSL 2」/Webブラウザで動作する「Visual Studio Online」発表ほか、2019年5月の人気記事 先月、Publickeyは大幅にリニューアルしてレスポンシブデザインに対応しました。幸いなことに大きくレイアウトが崩れると言ったご報告はいただいていないのですが、もう少し行間があいたほうがいいなど、いくつかご意見をいただいているので、少しずつ修正していきたいと思っています。 ご要望などあれば気軽にPublickeyのツイッターやFacebookやメールなどでコメントいただければと思います。 では先月、2019年5月の人気記事を紹介していきましょう。 1位 [速報]マイクロソフト、「Windows Terminal」発表。タブ機能、コマンドプロンプト、Po

                                  マイクロソフト、「Windows Terminal」発表/Windows上でフル互換のLinuxシステムコールを実現する「WSL 2」/Webブラウザで動作する「Visual Studio Online」発表ほか、2019年5月の人気記事
                                • Docker と seccomp を組み合わせてシステムコールを制限する - kakakakakku blog

                                  seccomp (Secure computing mode) はプロセスに対してシステムコールを制限する Linux kernel の機能で,今回は「Docker と seccomp」を組み合わせて試す.ドキュメントは以下にある. docs.docker.com seccomp デフォルトプロファイル まず,Docker はデフォルトで seccomp をサポートしている.Docker (Moby) の GitHub リポジトリにデフォルトプロファイル default.json がある.プロファイルは長く感じるけど,比較的簡単に読める.基本的に SCMP_ACT_ERRNO(拒否) となり,ホワイトリストとして列挙したシステムコールを SCMP_ACT_ALLOW(許可) としている. moby/default.json at master · moby/moby · GitHub 基本

                                    Docker と seccomp を組み合わせてシステムコールを制限する - kakakakakku blog
                                  • Falcoとaws-for-fluent-bitを使ってCloudWatchにEKSノード上の危険なシステムコール情報を収集する(Proxy環境) - YOMON8.NET

                                    この記事はBeeX Advent Calendar 2020の12/12の記事です。 EKSのデータプレーンをどう選ぶか考えたとき、個人的にはFargateを積極的に使いたいところですが、まだ制限も多くて要件にフィットしない場合もあります。 そんな時に選択肢として挙がるManaged Node Groupですが、ReInvent2020でSpotインスタンスの利用できる機能が発表されたり、また使いやすくなったと感じています。 ここではそんな、Managed Node Groupで展開したEC2ノードのランタイムセキュリティをチェックする方法としてFalcoを使う手順を書いていきます。 概要としては以下の図の通りです。 Falcoは何か公式のドキュメントから引用します。 Falcoは実行時にカーネルからのLinuxシステムコールを解析し、強力なルールエンジンに対してストリームをアサートします

                                      Falcoとaws-for-fluent-bitを使ってCloudWatchにEKSノード上の危険なシステムコール情報を収集する(Proxy環境) - YOMON8.NET
                                    • ext4とoverlayfsのシステムコール速度の比較をしようとした - ローファイ日記

                                      Pepabo Adovent Calender 3日目の記事です。 qiita.com @udzura です。こないだDuolingoの話をガッツリしてしまったせいで記事に書くネタがなかったんですが、某ruby-jpで話題に出て気になったので当該の内容について調べてみました。 これで妥当な結果が出ているかどうか、適切なやり方かどうかのツッコミをお待ちしております...。 追記 strace は -c オプションのみだとsystem時間のみなので、ファイルシステム操作の全体の時間を計測するには -w オプションが必要だというご指摘がありました! hiboma.hatenadiary.jp 全体に初稿と比べて計測しなおしています。 環境の準備 ホスト VirtualBox上のUbuntu Bionicの kernel 5.0 を利用します。 ゲストコンテナの作成 FROM debian:10-

                                        ext4とoverlayfsのシステムコール速度の比較をしようとした - ローファイ日記
                                      • LXDのシステムコールインターセプション機能を試す(解決編) - TenForward

                                        3 回シリーズになるとは思ってなかったこのシリーズ、ついに解決編です。 tenforward.hatenablog.com 1 度目の mknod は成功するものの、なぜか続けて mknod を実行すると失敗してしまうという謎のトラブル。ふと、LXC のコミットログを眺めていると seccomp 関連の修正があり、見てみると簡単な修正ですが、コミットログと修正内容を見てピンと来ました。 それがこれです。 github.com 新しいカーネルではバッファーをゼロクリアしておく必要があるとのこと。これだと 1 度実行して成功しても、そのバッファに前のデータが残っていたらエラーになりそう!ということで試すとバッチリ成功しました。 これだけだとなんなので、今回のシステムコールインターセプション機能についてまとめておきましょう。 システムコールインターセプション機能 5.0 kernel で Add

                                          LXDのシステムコールインターセプション機能を試す(解決編) - TenForward
                                        • インフラエンジニアにおススメのシステムコール、参考記事とどう役に立つか|けいじ

                                          少し前の雑誌で恐縮ですが、今でもネットで手に入るWeb+DB PressのVol.120の特集「Webページが表示されるまで HTMLを運ぶプロトコルとシステムコールの裏側」がとてもいいので、紹介です。 WEB+DB PRESS Vol.120 https://www.amazon.co.jp/dp/B08Q764JKR/ref=cm_sw_r_tw_dp_0F5JA6ASV4K8YZTB3EJS インフラ分野でエキスパートになりたい人は、システムコールを学ぶべきと私は思うのですが、そのきっかけとして良い記事だと思います。 なお、サンプルがC言語で書かれているので、そこは「ふーん」と読み飛ばしてもいいと思います。 システムコールそのものの話は記事を読んでもらうとして、この記事で書かれている内容が実際の現場でどう使えるのか、私の経験を基に紹介してみたいと思います。仕組みを学ぶと例えばこんなこ

                                            インフラエンジニアにおススメのシステムコール、参考記事とどう役に立つか|けいじ
                                          • Fadis on Twitter: "コンテナ型仮想化はホストとカーネルを共有している為1つの脆弱性がホストに通る攻撃に繋がりやすい。一方ハイパーバイザ型はオーバーヘッドが辛い。そこでgVisorは、コンテナ内からのシステムコールをカーネルではなくカーネルのふりをする… https://t.co/g376NhSqPq"

                                            コンテナ型仮想化はホストとカーネルを共有している為1つの脆弱性がホストに通る攻撃に繋がりやすい。一方ハイパーバイザ型はオーバーヘッドが辛い。そこでgVisorは、コンテナ内からのシステムコールをカーネルではなくカーネルのふりをする… https://t.co/g376NhSqPq

                                              Fadis on Twitter: "コンテナ型仮想化はホストとカーネルを共有している為1つの脆弱性がホストに通る攻撃に繋がりやすい。一方ハイパーバイザ型はオーバーヘッドが辛い。そこでgVisorは、コンテナ内からのシステムコールをカーネルではなくカーネルのふりをする… https://t.co/g376NhSqPq"
                                            • 【アップデート】ECS on Fargateでサイドカーからプロセス/システムコール監視が簡単にできるようになりました! | DevelopersIO

                                              はじめに CX事業本部の佐藤智樹です。最近のアップデートでECS on FargateでPIDの名前空間をタスク内のコンテナ間で共有できるようになりました!以下の記事にアップデート後の出来ることや嬉しい点が書かれています。 上記記事で紹介されているLinuxカーネルパラメータの設定に関しては、以下の記事でも解説されております。本記事はpidModeの方にフォーカスしてご紹介します。 このアップデートの何が嬉しいのか これまでは本機能がなかったのでサイドカー側から本体のコンテナのプロセスやシステムコールの取得が難しくかったです。代表的な商用製品だとサイドカーコンテナ上で証跡取得用のプロセスを動かし、サイドカーのボリュームを本体側でマウントして動かす必要がありました。なので、以前までは商用製品を利用しないと、本体側のコンテナをReadOnly状態で運用したとしても、不審なプロセスやシステムコー

                                                【アップデート】ECS on Fargateでサイドカーからプロセス/システムコール監視が簡単にできるようになりました! | DevelopersIO
                                              • Fadis on Twitter: "Linuxに新しいシステムコールreadfileが入りたがっているらしい。readfileはファイルをopen、バッファ分だけread、closeを1回のシステムコールで行う。小さいファイルを大量に読む状況でシステムコールの回数が… https://t.co/fdmRrAE2vp"

                                                Linuxに新しいシステムコールreadfileが入りたがっているらしい。readfileはファイルをopen、バッファ分だけread、closeを1回のシステムコールで行う。小さいファイルを大量に読む状況でシステムコールの回数が… https://t.co/fdmRrAE2vp

                                                  Fadis on Twitter: "Linuxに新しいシステムコールreadfileが入りたがっているらしい。readfileはファイルをopen、バッファ分だけread、closeを1回のシステムコールで行う。小さいファイルを大量に読む状況でシステムコールの回数が… https://t.co/fdmRrAE2vp"
                                                • LXDのシステムコールインターセプション機能を試す(マウント編)(2) - TenForward

                                                  先のエントリーでは、コンテナ内から ext4 ファイルシステムのマウントができたのですが、実は security.syscalls.intercept.mount.shift という設定が効いていないようで、そこで時間切れでした(どこがうまく行ってないか書いてませんでしたが)。 tenforward.hatenablog.com そこで Ubuntu 20.04 もリリースされたことですし、もう一度試してみましょう。 前回のおさらい 前回と同様に /dev/vdb というディスクが存在し、パーティションをひとつだけ作成し、ext4 で mkfs しています。テストのために事前にホスト側でマウントし、testfile というファイルをひとつだけ作ってあります。 $ ls -l /mnt/ total 16 drwx------ 2 root root 16384 Apr 29 07:38 l

                                                    LXDのシステムコールインターセプション機能を試す(マウント編)(2) - TenForward
                                                  • Kubernetes と seccomp を組み合わせてシステムコールを制限する - kakakakakku blog

                                                    前回の記事では seccomp (Secure computing mode) に入門するために「Docker と seccomp」を組み合わせて試した.docker run コマンドの --security-opt オプションを使って seccomp プロファイルを指定した. kakakakakku.hatenablog.com 今回は「Kubernetes と seccomp」を組み合わせて試す.設定や手順などは以下のドキュメントに詳しく載っている. kubernetes.io 検証環境 まず,kind を使って検証環境を構築する.以下の kind-config.yaml のように,ワーカーノードに seccomp プロファイルを置いたホスト側のディレクトリをマウントする(kubelet に読み込ませる).ドキュメントには ./profiles と書いてあるけど,今回は Docker

                                                      Kubernetes と seccomp を組み合わせてシステムコールを制限する - kakakakakku blog
                                                    1

                                                    新着記事