タグ

カーネルに関するindicationのブックマーク (46)

  • Linuxにおけるデバイスファイルの仕組み

    Linuxにおけるデバイスファイルはデバイスをファイルという概念を通して扱えるようにしたものです。デバイスファイルは通常のファイルと同様に読み書きを行うことができます。しかし実際には、その読み書きはデバイスドライバを通じてデバイスの制御に変換されます。 この記事では、デバイスファイルへの読み書きがどのようにデバイスの制御に変換されるのかを説明します。デバイスファイルはデバイスドライバとファイルの2つのコンポーネントに依存したものであるので、最初にデバイスドライバ、次にファイルについて説明し、最後にデバイスファイルがどのようにデバイスドライバと結び付けられるかを解説します。 この記事の内容は主に詳解 Linuxカーネル 第3版及びhttps://github.com/torvalds/linux/tree/v6.1によります。 目次 デバイスドライバ デバイスドライバの実例 read_wri

    Linuxにおけるデバイスファイルの仕組み
  • Linuxカーネル学習の敷居を下げたいという思いを実現した本、「Linuxのしくみ」

    以下イベントの発表資料です。 https://forkwell.connpass.com/event/273179/

    Linuxカーネル学習の敷居を下げたいという思いを実現した本、「Linuxのしくみ」
  • プロセス情報をデタラメにする攻撃「Process Herpaderping」の内部構造を紐解く | 技術者ブログ | 三井物産セキュアディレクション株式会社

    早速ですが、まずは以下の図1をご覧ください。 真ん中にメッセージボックスが表示されていますが、このメッセージボックスを表示するプロセスがどこから起動しているのか、つまり、実体EXEファイルの場所がこの図からわかるでしょうか? 図 1 プロセス情報がデタラメになっている様子 図1では、Process ExplorerやProcess Hackerで見る限り、プロセス名は「こんばんは!★」(拡張子なし)となっています。各ツールで表示されたプロセスのプロパティ情報を見ると、Process Explorerでは実体の場所がExplorer.exeであるかのように見えてしまっています。 一方でProcess Hackerでは、メッセージボックスのプロセスがMicrosoftの有効なデジタル署名を持っているかのように見えており、実体の場所が「こんばんは!★」を指しているように見えます。 では該当の「こ

    プロセス情報をデタラメにする攻撃「Process Herpaderping」の内部構造を紐解く | 技術者ブログ | 三井物産セキュアディレクション株式会社
    indication
    indication 2021/02/19
    訳が分からなくできる
  • Linuxがブートするまで

    普段Linuxを使っていながら、vmlinuzやinitrd.imgというファイルは何なのか、 あやふやにしか理解していなかったので、一通りLinuxマシンのブートの仕組みを 勉強してみた結果を書き留めておく。なお、BIOSとGRUB Legacyの環境を前提としている。 EFIやGRUB2を使った環境については、今後いずれ勉強していきたい。 基的にOSの起動は、単純・低機能なプログラムが、より複雑・高機能なプログラムを 読み込み起動するという処理を連鎖的に行う仕組みになっている。 Linuxでは、下記のプログラムが順に起動していく: BIOSブートローダ (GRUB)Stage 1Stage 1.5Stage 2LinuxカーネルInit以下では、それぞれのプログラムについて順に要約して述べていく。 1. BIOS現在一般的なx86/x86-64 CPUは、電源が投入されると、0xff

    indication
    indication 2020/08/17
    主にinitrdとinitramfsの2形式があるなんて、知らなかった…initrdでディスクドライバーをロードできなかったときの絶望感
  • トーバルズ氏が語ったLinuxカーネル開発者や開発の未来

    Steven J. Vaughan-Nichols (Special to ZDNET.com) 翻訳校正: 村上雅章 野崎裕子 2020-07-02 06:30 The Linux Foundationの「Open Source Summit」が米国時間6月29日から開催されている。オンライン開催となった今回のイベントでは、VMwareの最高オープンソース責任者Dirk Hohndel氏と、Linuxの生みの親であるLinus Torvalds氏が再び登場し、Linux開発について多岐にわたる会話を交わした。 これら著名な両氏の対談は、最近リリースされた「Linuxカーネル5.8」のサイズが大きいことについてのHohndel氏の質問から始まった。その質問は、新型コロナウイルス感染症(COVID-19)のまん延で開発者が自宅で作業するようになったのが、カーネルサイズの大きさに影響を与えた可

    トーバルズ氏が語ったLinuxカーネル開発者や開発の未来
    indication
    indication 2020/07/02
    1日20~30のpull-reqを越えようとしてる?!(昇天)
  • https://tech.pepabo.com/2020/06/26/kernel-dive-tcp_mem/

    https://tech.pepabo.com/2020/06/26/kernel-dive-tcp_mem/
    indication
    indication 2020/06/26
    linuxのTCPスタックすごい、フレームが再送される仕組みを使ってメモリ枯渇を乗り切ろうとするなんて。私ならRSTフラグしちゃう
  • DKMSが素晴らしい

    Dynamic Kernel Module Support(DKMS)は、アウトオブツリーモジュールを公開する上での強力な味方である。 Linuxカーネルは、モジュールを動的にインストールすることが出来る。この用途は主にドライバだが、ファイルシステムやDMターゲットの開発にもこの機構を使うことが出来る。ここでインストールとは、システムのどの場所からでもそのモジュールをmodprobe可能になってることと定義する(それ以降はmodprobe。confの仕事である)。 モジュールを、現在のカーネル向けにコンパイルして、インストールして、モジュールを修正した時にはまた新しいものをインストールするというのは、作業量的には大したことないのだが、果たしてあなたはモジュールをインストールする仕組みを"完全に"理解していて、あなたの理解が全ディストリビューションに通用するものであることを保証出来るだろうか

    DKMSが素晴らしい
    indication
    indication 2020/03/19
    linuxにやられているzfsonlinuxが使っていて感動を覚えた。initrdを勝手に作るあたり、感動した
  • 過去の難案件 PS2のカーネル開発 - Qiita

    はじめに 時はPlayStation2も そろそろ終わり。 PS2互換機がゲームセンター等で使われていた時代の事です 私は当時 超新人だったんだけどね ただ私は 大学を3ヶ月で光速中退して すぐにフリーランスになった変な経歴持ちです そんな時 ある人物が 掲示板に メモリマネージャやDMA、3DCGについて質問をしていた ちょうどその時期 仕事が楽だったので 光速で回答しました。 メモリマネージャ作りたいっていうので、簡単な方法として、連結リストでAllocateしていくと簡単だよ DMAについては 方向のふらぐがこーであーするだけだよ 3DCGについては DirectXを知識は入れてたので なんとなく回答 すると やり取りから1週間で 仕事してもらえますか? PS2の自社タイトルを作ってます。コアエンジニアが不足しています とメールアドレス宛にメッセージがきたので 請ける事に これがすべ

    過去の難案件 PS2のカーネル開発 - Qiita
    indication
    indication 2020/01/01
    PowerPCってだけで変態なのに、拡張命令が輪をかけてすごい。アセンブラ命令で頂点変換…メモリアロケータとかサラリと凄いことを書いてる。
  • CとRustで一から作るマイクロカーネルOS

    マイクロカーネルは浪漫に溢れる非常に作りがいのあるソフトウェアです。この記事は,「マイクロカーネルベースのOSの一から作ってIaaSで動かす」ことを目標に作ったマイクロカーネルベースのOS Resea(りーせあ)の設計と実装について軽くまとめた物です。 ソースコードはGitHubにあります。 マイクロカーネルとは Linuxのようなモノリシックカーネルでは色んな機能がカーネル空間で動きますが,マイクロカーネルではユーザプロセスたちが互いに通信しながらOSを作り上げます。プロセス・スレッド・仮想メモリ管理,プロセス間通信,タイマーといった必要最低限の機能だけをカーネルが担います。デバイスドライバやファイルシステムといった残りの機能は,独立したユーザプロセスとして動きます。たとえデバイスドライバが暴走しても他のコンポーネントを壊すことはないのです。マイクロカーネルは信頼性が高く,疎結合で美しい

    indication
    indication 2019/12/15
    tron系で割り込みがタスクスタックから消費されるから、計算が凄まじく面倒だったけど、メッセージだったら、上手く行けそう。凄く良いが、組み込みに持ってくにはつらいのがつらい…とりあえず、凄い。
  • 電源を切っても消えないメモリとの付き合い方

    Transcript ిݯΛ੾ͬͯ΋ফ͑ͳ͍ϝϞϦͱͷ෇͖߹͍ํ NAOMASA MATSUBAYASHI https://github.com/Fadis/kernelvm_20191019_samples αϯϓϧίʔυ Ϩδελ L1 cache L2 cache L3 cache DRAM SSD ϋʔυσΟεΫ ߴ଎Ͱ ༰ྔ୯Ձ͕ߴ͍ ௿଎Ͱ ༰ྔ୯Ձ͕͍҆ 1013 100 101 102 103 104 105 106 107 108 109 1010 1011 1012 10−10 10−9 10−8 10−7 10−6 10−5 10−4 10−3 10−2 ༰ྔ[bytes] ॻ͖ࠐΈͷϨΠςϯγ[ඵ] Ϩδελ L1 cache L2 cache 10−1 L3 cache DRAM SSD ϋʔυσΟεΫ ӬଓԽ͞Εͳ͍ ӬଓԽ͞ΕΔ 1013 100 101 10

    電源を切っても消えないメモリとの付き合い方
    indication
    indication 2019/10/21
    なかなか、難しそう。ただ、fast bootには凄く使えそう。
  • CUDAを一枚の絵にまとめてみた - OPTiM TECH BLOG

    まえがき 初めまして、R&Dチームの宮﨑です。趣味はFPSをやってます。150時間やってますが未だにドンかつをべられていません。普段は深層学習のベンチマークを取ったりしています。 実はひと昔前からあった深層学習。近年実用性が増して一大ブームとなっています。実用的になった背景の一つとしてGPUを用いた高速化により深層学習の学習及び推論が実用的な時間で実行できるようになったことがあります。NVIDIAから提供されるCUDAを用いるとC言語に拡張を加えた形式でCPU+GPUのヘテロジニアスコンピューティングを記述できます。 CUDAを使用するにはCPU+GPUの環境がどのようなハードウェア構成をしており、その上でCUDAがどのようなシステムを構築しているのかを理解する必要があります。この理解なしに漫然とサンプルコードを真似するだけでは意図通りのパフォーマンスが出なかったり、そもそもAPIの意味

    CUDAを一枚の絵にまとめてみた - OPTiM TECH BLOG
  • 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
  • 「Linuxのしくみ」をもっと早く読んでおけばよかったと後悔した - ばーろぐわにる

    きっかけ Linuxエンジニアとしての基礎力のなさを見抜かれ、これ読んでみるといいよとおすすめされたのがきっかけ。 gihyo.jp 大変お恥ずかしい話だが、自分はエンジニア7年目にして初めてLinuxについてのを読んだ。それまではなにか上手くいかないことがあればブログやQiitaを参考にコピペしてその場しのぎしていただけだった。 目次 第1章 コンピュータシステムの概要 第2章 ユーザモードで実現する機能 第3章 プロセス管理 第4章 プロセススケジューラ 第5章 メモリ管理 第6章 記憶階層 第7章 ファイルシステム 第8章 ストレージデバイス おもしろかったところ メモリ管理 プログラムは直接物理メモリにはアクセスしない。仮想メモリを通して物理メモリにアクセスする forkしたとき、仮想メモリは書き込み権限が付与されずに同じ物理アドレスが紐付いたままの状態。子プロセスで書き込みが走

    「Linuxのしくみ」をもっと早く読んでおけばよかったと後悔した - ばーろぐわにる
    indication
    indication 2019/06/20
    スケジューリングとか、ネットワーク関連を最近読んでないから、改めて勉強したい
  • linuxカーネル4.1のプロセススケジューラ(ドラフト) - Qiita

    はじめに 記事は昔書いたlinuxカーネル4.1のプロセススケジューラの実装について途中まで書いたけど諸事情により二年くらい放置していたドラフトです。死蔵するのももったいないので公開しておきます。今現在のカーネルに比べてずいぶんと変わっていること、未稿の部分がかなりあること、誤字脱字や「てにをは」は気にしていないこと、などにご注意ください。 このドキュメントを積極的に更新する予定は(少なくともこの場では)いまのところありません。 ある瞬間にCPU1で動作できる処理は1つだけです。この限りあるCPU資源をシステムに存在する プロセス間で分配するのがプロセススケジューラです。プロセススケジューラは大きく分けて 次のことをします。 全プロセスの間で平等にCPUを分配する スループットの最大化 レイテンシ(応答時間、ターンアラウンドタイム)の最短化 個々のコアのことであり、かつ、ハイパースレッド

    linuxカーネル4.1のプロセススケジューラ(ドラフト) - Qiita
  • 本の虫: Linus、今までの行いを謝罪し一時的にカーネルメンテナーの立場を退いて人の気持ちを勉強してくると発言

    Linus、今までの行いを謝罪し一時的にカーネルメンテナーの立場を退いて人の気持ちを勉強してくると発言 完全に背景事情を調べ上げたわけではないのだが、どうもLinusが毎年参加しているLinuxカーネルの会議に、Linusがスケジュールを間違えて参加できなくなるという事態が発生した。当のLinus人はもう20年も続いている会議だし自分がいなくてもやっていけるだろうと楽観視していたが、会議自体がLinusの都合にあわせてリスケジュールされた。 LinuxにおいてLinus Torvaldsといえば第一人者であり極めて重要な存在で、そのLinusが毎年参加している重要な会議にLinusが参加できないとあれば、その他のあらゆるコストを度外視して根回し調整を行い、Linusが参加できるようにイベント全体のリスケジュールを行うのは人間の感情から考えて当然である。しかし当のLinus人は他人の感情

    indication
    indication 2018/09/17
    人の気持ちを理解してくる…AI業界やばい(違うことを願う)
  • カーネルエクスプロイト入門 - Linuxカーネル解析の基礎 - - るくすの日記 ~ Out_Of_Range ~

    0. はじめに 記事は、Linuxを対象としたカーネルエクスプロイトの入門記事です。 カーネルエクスプロイトというのは、Linuxや*BSD、Windowsを始めとするカーネル自身の脆弱性を突くエクスプロイトです。 基的にカーネルはシステム内で最高権限を持つ特権モードで動作しているので、ここを悪用されるとシステムの大部分(ほぼ全て)を掌握されてしまいます。 エクスプロイトと言うと、普通はユーザー空間で動作しているアプリケーションのバグをつく物が多いですが、これだと限られたレベルの権限しか奪えません。 SELinuxやjailを始めとする、OSレベルでの保護機構に阻まれるとたちまち効力を失ったりします。 しかし、カーネル自体の脆弱性をつくカーネルエクスプロイトを利用すると最高権限での任意コード実行が可能なため、大抵の保護機構はものともしません。 このカーネルエクスプロイトが特に効力を発揮

    カーネルエクスプロイト入門 - Linuxカーネル解析の基礎 - - るくすの日記 ~ Out_Of_Range ~
    indication
    indication 2017/07/14
    メモリ管理の図がすごくありがたい
  • チュートリアル – システムコールの書き方 | プログラミング | POSTD

    しばらく前に私は、「 C言語でシェルを書く方法 」というタイトルで、皆さんが日常的に使っているツールの内部動作を理解するのに役立つチュートリアルを書きました。単純なシェルであっても、数例を挙げるだけでも read 、 fork 、 exec 、 wait 、 write それから chdir など多数のシステムコールが呼び出されていました。この探索に続く次なる旅として、今回はLinux環境においてシステムコールがどのように実装されているのかについて学んでいきましょう。 システムコールとは何か システムコールを実装するに当たって、それが何なのかをまずきちんと理解しておきましょう。そう遠くない昔の私がそうでしたが、素直なプログラマならシステムコールをCライブラリで提供されている関数のことだと定義するかもしれません。しかしこれは全く正しくありません。確かにCライブラリに含まれる関数群はシステムコ

    チュートリアル – システムコールの書き方 | プログラミング | POSTD
  • Unixプロセスとリソースの基礎を再確認した - えいのうにっき

    前置き 最近、「なるほどUnixプロセス ― Rubyで学ぶUnixの基礎」というを読んでいる。 tatsu-zine.com 僕の所属している会社・はてなでは「メンター制度」というものがある。はてなに所属する全てのエンジニアに、誰かしら(グレード的に自分より上となるエンジニア)をメンターとしてつける、という制度。メンターとメンティーは月に一度、1on1を実施する。 自分はセールスエンジニアという特殊な職種ではあるが、メンターとしてシスプラ(インフラ)部門のエンジニアの方に付いて頂くことになった。このことは僕にとって、とても有り難く、心強い。 というのも、入社から2ヶ月ちょっと、実際にセールスエンジニアとして業務を進めてみて、インフラ周りの基礎知識・ローレイヤーに関しての基礎知識が強く求められるなぁと...、、というか、それを知っているといないとでは、問題や課題についての理解の仕方も違っ

    Unixプロセスとリソースの基礎を再確認した - えいのうにっき
  • Linuxシステムコール徹底ガイド | POSTD

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

    Linuxシステムコール徹底ガイド | POSTD
  • Linux Insides : カーネル起動プロセス part4 | POSTD

    64ビットモードへの移行 Kernel booting process もパート4になりました。4回目の今回は、 プロテクトモード での最初の一歩についてご紹介します。CPUがサポートする ロングモード 、 SSE(ストリーミングSIMD拡張命令) 、 ページング方式 、そしてページテーブルの初期化やロングモードへの移行のお話しです。 注:このパートでは、アセンブリ言語のソースコードが頻出しますので、知識がない方は、事前に参考書を読むなどして理解を深めておいてください。 前回の パート では、 arch/x86/boot/pmjump.S 内にある32ビットのエントリーポイントにジャンプするところで終了しました。

    Linux Insides : カーネル起動プロセス part4 | POSTD
    indication
    indication 2015/12/11
    64版のシーケンス。再配置できるのには驚いた。