タグ

Linuxに関するohyajapanのブックマーク (54)

  • Linuxシステムコール徹底ガイド | POSTD

    要約 この記事では、LinuxカーネルにてLinuxプログラムがどのように関数を呼び出すのかについて紹介していきます。 システムコールを行う様々な方法、システムコールを行うための独自のアセンブリの作成方法(例あり)、システムコールへのカーネルエントリポイント、システムコールからのカーネルイグジットポイント、glibcのラッパ関数、バグなど多くの点について説明します。 要約 システムコールとは? 必要条件に関する情報 ハードウェアとソフトウェア ユーザプログラム、カーネル、CPUの特権レベル 割り込み モデル固有レジスタ(MSR) アセンブリコードでシステムコールを呼び出すことの問題点 レガシーシステムコール 独自のアセンブリを用いたレガシーシステムコールの使用 カーネル側での int $0x80 エントリポイント iret を使用したレガシーシステムコールからの復帰 高速システムコール 3

    Linuxシステムコール徹底ガイド | POSTD
  • Linuxのforkシステムコールをハックする - Qiita

    最近C言語で学ぶソケットAPI入門という投稿をアップさせて頂いていて、TCP、UDPを使ったプログラムまではとりあえず書いてみたので、そろそろネットワークプログラミングでは必要不可欠な並列化処理や多重化処理の方に移ろうと思っています。 そこで、今回はマルチプロセスの処理について掘り下げようと思ってます。マルチプロセスを実現するにあたって重要なシステムコールはforkです。 もともとLinuxで子プロセスを生成するシステムコールはforkというものであることは知っていますし、使い方も何となく知ってはいました。 ただ、それがどういった実装によって実現されているのかまでは知らなかったので、この際ちゃんとソースコードを追って調べてみました。 とはいえソースコードだけ追っていくのが辛い場面もあったりしたので、そんな時はとりあえずfork関数を使った適当なコードをgccで静的リンクさせたオブジェクトコ

    Linuxのforkシステムコールをハックする - Qiita
  • システムコールめもめも - Qiita

    概要 システムコールをいろいろ調べてみたので、自分の言葉で用語をまとめてみた。 修正しました(2017/4/25) 種類 i386 AMD INT $0x80/iret syscall/sysret(古いと使えないものもある) Intel INT $0x80/iret sysenter/sysexit(古いと使えないものもある) x86_64 AMD INT $0x80/iret syscall/sysret Intel INT $0x80/iret sysenter/sysexit syscall/sysret 特徴 INT $0x80/iret ソフトウェア割り込み発生させる。システムコールに特化していないのでsysenter、syscallよりオーバーヘッドがある 昔からある方法なのでほとんどのCPUは対応している?? sysenter/sysexitとsyscall/sysret

    システムコールめもめも - Qiita
  • RPMパッケージのリビルド

    お家で使うLinux SRPMパッケージのリビルドとインストール 12 Jun 2007 (初出:26 May 2001) RPMの使い方は Vine-Linuxならオンラインマニュアル中に、あるいはWeb上に RPMによるパッケージ管理があります。 とくに「5.3. RPM - RPM Package Manager」、 「5.4. ソースパッケージからバイナリパッケージを再構築(rebuild)する」などが参考になるでしょう。 *.src.rpm、*.nosrc.rpm などのソースパッケージ(SRPM)をリビルドすることにより、*.i386.rpm、*.noarc.rpm などのバイナリパッケージ(RPM)を作ることができます。 できあがったバイナリパッケージを root権限でインストーするのが基的な手順となります。 SRPMリビルドの環境設定 リビルドに必要なソフト ソースパッケ

  • Charming Python: Functional programming in Python, Part 3

  • ファイルディスクリプタについて(5) ~多重I/O「Multiplex I/O」の種類の特徴、使い方

    はじめに 前回は、プログラムの内外部から発行されたシグナルイベントを補足し、通知するためのシグナル用ディスクリプタ「signalfd」について解説しました。今回は、複数のファイルディスクリプタを一元管理する「多重I/O」機能について解説してきます。 連載概要 第1回:ディスクリプタの概要 第2回:イベント用ディスクリプタ「eventfd」の特徴 第3回:タイマー用ディスクリプタ「timerfd」の特徴 第4回:シグナル用ディスクリプタ「signalfd」の特徴 第5回:多重I/O「Multiplex I/O」の種類の特徴、使い方 第6回:多重I/Oの性能とC10K問題 第7回:シグナル駆動I/Oの特徴、使い方 第8回:非同期I/O「Asynchronous I/O」の使い方と性能差 第9回:ファイルディスクリプタパッシングの特徴、使い方 サンプルプログラムは100行前後程度までは画面に記載

    ファイルディスクリプタについて(5) ~多重I/O「Multiplex I/O」の種類の特徴、使い方
  • あるプロセスが利用しているメモリサイズを procfs 経由で調べる - naoyaのはてなダイアリー

    お題は「あるプロセスがどの程度の物理メモリを利用したかを知りたい」です。 手っとりばやく知りたいときは top や ps などで調べると良いでしょうか。例えば手元の coLinuxtop して M キーでソートすると emacs のプロセスが最もメモリを使っているようです。 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1923 naoya 18 0 23120 19m 3096 S 0.0 2.0 0:55.40 emacsメモリサイズは VIRT と RES がありますが、VIRT は Virtual の略で仮想メモリ領域のサイズ、RES が Resident の略で、実際に使用している物理メモリ領域のサイズ。19MB ほど使っているようです。この emacs のプロセスが利用するメモリ領域はざっくり 20MB 程度と

    あるプロセスが利用しているメモリサイズを procfs 経由で調べる - naoyaのはてなダイアリー
  • 「しまった」という時のためのext3undel | OSDN Magazine

    rmコマンドはデータを削除するためのパワフルなツールだ――が、ファイルやディレクトリを誤って削除してしまった場合にはそうとも言っていられない。しかしありがたいことに ext3undel ユーティリティを使えば、ext3ファイルシステム上で誤って削除してしまったデータを復旧することができる。ext3undelを使えば、ファイル名で指定したファイルを復旧させることもできるし、削除されたという印が付けられている全ファイルを復旧することもできる(ただしこの場合ファイル名は復旧できないため目的のファイルを見つけるためにファイルの内容を確認する必要がある)。 ext3ファイルシステム上の各ファイルは、2つの部分から構成されている。一つは、ファイル名、容量、作成日時、アクセス日時などのファイルのメタデータで、inodeというUnixのデータ構造の中に保存されている。もう一つの部分であるファイルの実際の内

    「しまった」という時のためのext3undel | OSDN Magazine
  • Linuxメモリ管理の最先端を探る(1/2) - @IT

    小崎 資広 2008/5/22 この記事では、Linux Kernel Watchの番外編として、Linuxの最近のメモリ管理周りの動きと、その背景のモチベーションについてお伝えしたいと思います。 メモリ管理は変更時のインパクトが大きいため、通常、Stable Tree(安定ツリー)ではあまり変更はなされません。しかし、Linuxカーネルメーリングリスト(LKML)の議論では「もうカーネル2.7は出ない」ともいわれており、十分なテストがなされたものであれば、アグレッシブなパッチでも受け入れられるようになっています。 また、メモリの急速な大容量化により、いままで問題にならなかった部分にスケーラビリティ上の問題が発生したという報告もちらほら出てきました。それを解消するためのさまざまな改善が提案されています。 こうした背景により、2007年から2008年にかけては相当面白いパッチが出てきました。

  • iproute2 入門

    Table of Contents3.1. なぜ iproute2 なのか?3.2. iproute2 の概略3.3. 事前の必要条件3.4. 現在の設定を調べてみる3.4.1. ip にリンクを表示させる3.4.2. ip に IP アドレスを表示させる3.4.3. ip に経路を表示させる3.5. ARP

  • http://www.linuxguide.it/commands_list.php

  • mixi Engineers’ Blog » Linux Programming、epollの話

    お久しぶりです、初めての日の夏に圧倒されているトールマエサカです。 今日はLinuxにおけるネットワークプログラミング関連のネタです。分散データベースサーバの開発過程で最近よくLinuxのepollというイベントハンドリング機能を使っています。これがまた優秀な機能なので紹介します。 このContextでいうイベントハンドラーはサーバがクライエントのリクエストを処理するためのメカニズムです。イベントの感知と通知は大雑把にいうと以下の三つの処理で構成されています: 一つもしくは複数のディスクリプタを監視 ディスクリプタの準備が整うまでハチ公のごとくひたすら待ち続ける 準備が整ったディスクリプタの通知 アプリケーションでの実装は一昔までselect(2)、もしくはpoll(2)というシステムコールで行われていました。二つとも役目は同じですがselect(2)の場合、kernelをいじらない限り

    mixi Engineers’ Blog » Linux Programming、epollの話
  • OOM Killer

    OOM Killer(Out of Memory Killer)は,システムが実メモリーと仮想メモリー空間(スワップ領域)を使い切り,必要なメモリー領域を新たに確保できない場合に,プロセスを強制終了させて空きメモリーを確保する,Linuxカーネルの仕組みです。OOM Killerは,空きメモリーが確保できないことによりシステム自体が停止するという最悪の事態を避けるために用意されています。 OOM Killerは,空きメモリーを十分確保でき,システム上損失のなるべく少ないプロセスを選んで,強制終了します。また,強制終了するプロセスの数がなるべく少なくなるようにしています。実際に,どのプロセスを強制終了するかは,カーネル内部のbadness()関数が決めます。 ただし,OOM Killerにより,システム上大切なプロセスが強制終了させられることもあります。システム・トラブルの原因に成り得ること

    OOM Killer
  • לינוקס דרייבר

    כשהיינו קטנים, היינו מקווים שלעולם לא נצטרך להמציא את הגלגל מחדש. ובכן, עם מערכות חשבוניות בענן, אתם...

  • An Interview With Linus Torvalds: Linux and Git - Part 1 30 Years Of Linux

    Jeremy founded Tag1 Consulting in 2007. He has been a contributing core Drupal developer since 2002, and helped establish Drupal as a successful CMS through the early popularity of his personal blog, KernelTrap.org. Over the years, he authored and maintained the core statistics module and throttle module, as well as the pager logic and the initial Drupal 5 installer. He continues to contribute to

    An Interview With Linus Torvalds: Linux and Git - Part 1 30 Years Of Linux
  • IBM リダイレクト - Japan

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    IBM リダイレクト - Japan
  • libaio(Linuxの非同期I/Oライブラリ)の使い方 - moratorium

    libaio(Linuxの非同期I/Oライブラリ)の使い方 2007-06-05 (Tue) 4:53 Unix Linuxで非同期I/Oを行うためのライブラリ「libaio」の使い方を書いてみる事にする。少し昔の話になるが、lighttpdが使用し、スループットを80%も上げたらしい。 TOEFLに向けて転置ファイルについての論文(Inverted files for text search engine [moffat 06])でReading対策をしていたところ、意外とスニペット(検索にヒットした箇所の前後の文章)を作るところが時間がかかるという事を教えてもらったので、適当にそれを例題にしてみる。具体的には以下のようなコードを非同期I/Oを使用して速くなるかどうか見てみる。 for (unsigned int i = 0; i < files.size(); i++) { FILE*

  • Yahoo | Mail, Weather, Search, Politics, News, Finance, Sports & Videos

    How a cheap, generic drug became a darling of longevity enthusiasts It's just water in a can. How did Liquid Death become a billion-dollar brand?

    Yahoo | Mail, Weather, Search, Politics, News, Finance, Sports & Videos
  • Two new system calls: splice() and sync_file_range() [LWN.net]

    The 2.6.17 kernel will include two new system calls which expand the capabilities available to user-space programs in some interesting ways. This article contains a look at the current form of these new interfaces. The splice() system call has a long history. First proposed by Larry McVoy in 1998; it was seen as a way of improving I/O performance on server systems. Despite being often mentioned in

  • CITI: Projects: Linux scalability: Accept() scalability on Linux

    Steve Molloy, CITI - University of Michigan linux-scalability@citi.umich.edu This report explores the possible effects of a "thundering herd" problem associated with the Linux implementation of the POSIX accept() system call. We discuss the nature of the problem and how it may affect the scalability of the Linux kernel. In addition, we identify candidate solutions and considerations to keep in min