タグ

linuxに関するyuroyoroのブックマーク (162)

  • メモリ管理、kmalloc、スラブアロケータ

    スリープする可能性があるかないかが重要。 メモリが確保できない時には、ページアウトして確保する可能性がある。 ページアウトには、入出力が伴う。入出力中は、プロセスは、 スリープする(blocked状態になる)。 割り込みハンドラ(授業の後で説明する)等、スリープできない場所がある。 入出力処理のためにメモリが必要になって、メモリを確保することがある。 メモリが確保できない時には、ページアウトして確保する可能性がある。 ページアウトには、入出力が伴う。 入出力処理のためにメモリが必要になって、メモリを確保することがある。 メモリが確保できない時には、ページアウトして確保する可能性がある。 ページアウトには、入出力が伴う。 入出力処理のためにメモリが必要になって、メモリを確保することがある。 メモリが確保できない時には、ページアウトして確保する可能性がある。 ページアウトには、入出力が伴う。

  • Memory Allocation Guide - Qiita

    もともと、Linux Kernelのソースコードの一部なので、GPLv2扱いになる(はずの認識)。 https://www.kernel.org/doc/html/latest/index.html Licensing documentation The following describes the license of the Linux kernel source code (GPLv2), how to properly mark the license of individual files in the source tree, as well as links to the full license text. https://www.kernel.org/doc/html/latest/process/license-rules.html#kernel-licensing

    Memory Allocation Guide - Qiita
  • libbpf-rsを使ったRustとeBPFプログラミング - Qiita

    この記事は、Supershipグループ Advent Calendar 2021の17日目の記事になります。 はじめに この記事ではeBPFを活用してLinuxカーネルにフック用プログラムを注入することにより、ネットワークパケット処理を拡張する例を示します。 その実装にあたり、Rustとlibbpfの統合を行うlibbpf-rsを使った開発体験を記したいと思います。 TL;DR libbpf-rsによってRustとeBPFを組み合わせたプログラムのコンパイルやロード処理の手間は省けるようになります。実際、システムコールの呼び出し部分はほとんど意識する必要がありませんでした。 一方でeBPFプログラミングで特に苦労したのは以下の点でした。 デバッグとテスト つまりeBPFプログラミングにおいて周辺的な問題がツールによって解決されていき、よりプログラムの機能そのものの問題に時間を割くことができ

    libbpf-rsを使ったRustとeBPFプログラミング - Qiita
  • オペレーティングシステム II(2020年)

    オペレーティングシステム II(2020年) このページは、筑波大学 情報科学類 を対象とした授業 オペレーティングシステム II のためのページです。 担当教員 新城 靖 教室 オンライン (3A207)。 期末試験は、教室で行うことを計画している。 学期曜日時限 秋C 水曜日5・6(一部金曜日3・4) 金曜日3・4(一部水曜日5・6) 科目番号(情報科学類) p ■連絡 2020/04/02 2020年度(2021年1月開始)の授業の日程は、 後日、このページに掲載します。 2020/12/25 2020年度(2021年1月開始)は、次の日に授業を行ないます。 2021年1月6日(水) 5-6時限 2021年1月8日(金) 3-4時限, 2021年1月13日(水) 5-6時限 2021年1月20日(水) 5-6時限 2021年1月27日(水) 5-6時限 2021年2月3日(水) 5-

  • https://tech.pepabo.com/2020/06/26/kernel-dive-tcp_mem/

    https://tech.pepabo.com/2020/06/26/kernel-dive-tcp_mem/
  • [試して理解] Linuxのプロセススケジューラのしくみ - Speaker Deck

    成長は小さな失敗の積み重ね 事業を支えるCARTAのフルサイクルエンジニアリング / growth-for-small-fail-fast-carta-fullcycle

    [試して理解] Linuxのプロセススケジューラのしくみ - Speaker Deck
  • linux-sched-history.pdf - Speaker Deck

    多言語化対応における TypeScript の型定義を通して開発のしやすさについて考えた / TSKaigi TypeScript Multilingualization

    linux-sched-history.pdf - Speaker Deck
  • A Heavily Commented Linux Kernel Source Code

  • Linux メモリ管理を理解したい - Qiita

    Linux カーネルのメモリ管理方法について、勉強したことをまとめる。 メモリ管理はハードウェアに強く依存するため、x86_64 かつ OS起動後に 64bitプロテクトモード に移行したあとに話を絞る。また、OS は CentOS7.6、カーネルは次のバージョンを利用する。 ]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) ]# uname -a Linux localhost.localdomain 3.10.0-957.21.3.el7.x86_64 #1 SMP Tue Jun 18 16:35:19 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux 概要 ノイマン型アーキテクチャ コンピュータの基的な構成のひとつ。次の図が参考になる。 ほぼ全てのコンピュータが、このアーキ

    Linux メモリ管理を理解したい - Qiita
  • I/O負荷の正確な状況はiowaitでは分かりません - Qiita

    さくらインターネットのアドベントカレンダー9日目として、サーバ屋らしく、運用に関するコマンドの使い方を紹介します。 サーバの負荷が高まってきたときに、vmstatやtopなどのコマンドで調査する事が出来ますが、I/O負荷をwa(iowait)によって判断する人も多いと思います。 ただ、結論から言うと、iowaitは正確にI/Oの負荷を表しているわけではありません。 これらを、実際に演習をしながら見ていきたいと思います。 iowaitとidle iowaitとはあくまでも、CPUが空いているのにI/Oがボトルネックになっているプロセスを示しているだけで、CPUの利用率が高いときにはI/Oがボトルネックになっていてもiowaitが上がりません。 同様に勘違いされがちなのが、id(idle)はCPUの空きを示しているというものですが、idleは必ずしもCPUの空き時間を示しているものではありませ

    I/O負荷の正確な状況はiowaitでは分かりません - Qiita
  • os-that-we-should-know?slide=81

    builderscon tokyo 2018 2018-09-08 10:00-11:00 @ Track-C

    os-that-we-should-know?slide=81
  • LKL.js: Linux kernelを直接JavaScript上で動かす - Blog posts by @retrage

    Linux kernelを直接JavaScript上で動かした. つまり,JSLinuxのようにEmulatorをJavaScriptで作成し, その上でLinuxを動かすのではなく, JavaScriptで書かれたLinuxを生成し,それを動かす,ということである. LKL.js Architecture リポジトリは以下の通り. https://github.com/retrage/linux/tree/retrage/em-v2 なお lkl.js Demo にデモを用意した. SharedArrayBufferを有効にして試してみてほしい. Linux Kernel Library (LKL) ここでは,Linux kernelをLibrary OSの形態の1つであるAnykernelにする Linux Kernel Library (LKL)を利用する. LKLはLinux ke

    LKL.js: Linux kernelを直接JavaScript上で動かす - Blog posts by @retrage
  • 20分でわかるgVisor入門

    2018年5月28日開催 『Container SIG 2018 Summer』のスライド資料です。Read less

    20分でわかるgVisor入門
  • netmap でわかる Linux カーネルハック入門 - かーねるさんとか

    以前のエントリー*1で、netmap API を使ったアプリケーションを作成する方法やデータ構造についてとりあげました。今回は少しレイヤーを下げて、カーネルのどのような機能を使って、netmap API が作られているのかについてまとめました。 Linux カーネルハックを始めてみたいけれど、何から手をつければよいかわからないという方にとって、netmap で使われているカーネルハックの方法について知ることは、とても良い導入の一つだと思います。 Linux カーネルハック netmap は、キャラクタデバイスのカーネルモジュールとして実装されています。今回はキャラクタデバイスのカーネルモジュールで何ができるのか、ということと、netmap がそれらをどのように使っているかについて説明します。 カーネルハックで、Linux カーネルに新しい機能を追加する場合に、カーネルのソースコードを直接変

    netmap でわかる Linux カーネルハック入門 - かーねるさんとか
  • Introduction · Linux Inside

    linux-insides A book-in-progress about the linux kernel and its insides. The goal is simple - to share my modest knowledge about the insides of the linux kernel and help people who are interested in linux kernel insides, and other low-level subject matter. Feel free to go through the book Start here Questions/Suggestions: Feel free about any questions or suggestions by pinging me at twitter @0xAX,

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

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

    Linuxシステムコール徹底ガイド | POSTD
  • Linuxプロセスとカーネル読解のとっかかり - Qiita

    概要 Linux Kernelを読み解くためのとっかかりとしてLinuxのプロセスの理解(SoftwareDesign2014年8月号の特集参照)に焦点をあててみたいと思います。プロセス、スレッド、CPUについての話の後、最新カーネルのダウンロードからちょっとした中身の確認までやります。サンプルコードもありますが、サービス影響のあるサーバでは実行しないでください。 プロセスとスレッド プロセスとは Linux上で動いているプログラム スレッドが無い時はプロセスが実行単位 スレッドとは Linuxプロセスにおけるスレッド 「1つのプロセスの中で複数の実行単位を持てるように機能拡張したもの」(SoftwareDesign2014年8月号) CPUにおけるスレッド 「最小の処理単位」 プロセス2が終わった後に処理できるプロセス3がある例 スレッドを利用しない場合(左図) プロセス2の処理が終わる

    Linuxプロセスとカーネル読解のとっかかり - Qiita
  • linuxカーネルで学ぶC言語のマクロ - Qiita

    はじめに 記事は電子書籍版もあります。 linuxカーネルはC言語のマクロを駆使して書かれています。それらのうち、凝ったマクロになじみの無い人には初見では意図がわからない&わかってみれば面白いであろうものをいくつか紹介いたします。対象読者は、C言語のユーザだけれども、マクロは定数定義くらいにしか使わないというライトなマクロユーザです。 マクロを使用する場所に依存するエラーを防ぐ 次のマクロは、二つの引き数の値を置換するだけの単純なものです。

    linuxカーネルで学ぶC言語のマクロ - Qiita
  • Linux シグナルの基礎

    TLPI (The Linux Programming Interface) 再々。 TLPI の輪読の際に @matsumotory よりシグナルセットあたりをまとめるようにと指令が出たので、拙遅な感じでまとめました。 シグナルとは プロセス間通信の一種。「プロセスにシグナルを送信すると、そのプロセスの正常処理に割り込んで、シグナル固有の処理(シグナルハンドラ) が実行される」プロセス側では、シグナルを受信した際の動作(シグナルハンドラ) を設定することや、シグナルをブロックすることも可能。 コンソールで、プロセスを終了させるためにkill -9 <PID>とかCtrl+Cとかした際にも、対象プロセスにシグナルが送信されている。 ちなみに、PID「1」の initsystemd にkill -9 1しても何も起らない。(そういえば昔、oom-killer に init を殺された覚

    Linux シグナルの基礎
  • Linux スケジューラーのコア実装とシステムコール - Qiita

    はじめに これは Linux Advent Calendar 2016 の第 11 日目の記事です。Linux のタスクスケジューラーのソースコードや関連するドキュメントなどを読んで分かったことをまとめました。とても長いです・・・ はじめにスケジューラーのアーキテクチャと重要な概念を紹介し、その後はスケジューラーコアとシステムコールの実装について分かったことを延々と述べます。調べきれなかったことや分からなかったことは TODO に残したので、コメント欄とかツイッターで教えてもらえると嬉しいです。間違いの指摘も大歓迎です。 ちなみに私が読み始めたきっかけは、スケジューラーのアーキテクチャ、スケジューリングアルゴリズム、スケジューリングアルゴリズムの切り替え方、nice 値やプロセッサアフィニティがスケジューリングに及ぼす影響、プリエンプションの流れ、マルチプロセッサにおけるタスクのロードバラ

    Linux スケジューラーのコア実装とシステムコール - Qiita