You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
Linuxカーネルプログラミング初心者に対して、ソースコードのビルドから始め、カーネルソースコードの修正、モジュールの作成方法を説明します。またパフォーマンス向上のために必要なメモリの割り当て、スケジューラ、同期といった複雑なテクニックを説明し、実際にどのようにプログラミングして活用すればよいのか、その要点と、つまずきやすいポイントなども教えてくれます。Linuxカーネルに関する知識を広く学ぶことが可能です。 推薦の言葉 はじめに Ⅰ部 基礎知識 1章 Linuxカーネルプログラミング入門 1.1 開発環境の構築 1.1.1 システム要件 1.1.2 Linuxディストリビューションとカーネルの選択 1.1.3 仮想マシンへのLinuxのインストール 1.1.4 インストール済みのUbuntu仮想マシンイメージ 1.1.5 OSBoxes Ubuntu 22.04のセットアップ 1.1.5
Operating System in 1,000 Lines Hey there! In this book, we're going to build a small operating system from scratch, step by step. You might get intimidated when you hear OS or kernel development, the basic functions of an OS (especially the kernel) are surprisingly simple. Even Linux, which is often cited as a huge open-source software, was only 8,413 lines in version 0.01. Today's Linux kernel
はじめに:本記事の趣旨 以下、C言語、Linux環境を前提とする。 複数のファイルディスクリプタへのイベントを管理したいとき、例えばselect()を使用する方法があるが、噂では1これはかなり遅く(O(n))、性能を求めるならepollインターフェースを使うのが良い、とのことらしい。 しかしながら、 epollインターフェースは各関数が何を行なっているのかがよく分からない。故にどこで何を呼べば求めている処理を実現できるのかが明瞭でない。 以下では、 select()の使用法と対応させながら、epollインターフェースの使用法を簡明にまとめる。 よって、前者の挙動をある程度理解していることが前提となる。 また、例として、 listen用のソケットディスクリプタと、各クライアントと接続されたソケットディスクリプタ群とを管理するコードを使用 する。その為、ソケット通信に関する最低限の知識も前提と
2038年問題が思ったよりヤバい。検出ツールを作って脅威性評価してみた論文 | Kansai Open Forum 2024
1000行でOSを作ってみよう 本書では、小さなOSをゼロから少しずつ作っていきます。 OSと聞くと腰が引けるかもしれませんが、OS (特にカーネル) の基本機能は案外単純です。巨大なオープンソースソフトウェアとしてよく挙げられるLinuxでさえ、バージョン0.01はたった8413行でした。様々な要求に応えるために次第に肥大化していっただけで、当初は大変素朴な実装になっていました。 本書ではコンテキストスイッチ、ページング、ユーザーモード、コマンドラインシェル、ディスクデバイスドライバ、ファイルの読み書きをC言語で実装します。これだけ様々な機能が詰め込まれているのに、コードは合計でたった1000行未満です。 「1000行なら1日でできそう」と思うかもしれませんが、初学者には少なくとも3日はかかるでしょう。OS自作のハマりポイントは「デバッグ」です。アプリケーション開発とは違うデバッグ手法
はじめに 実は bash に組み込まれた echo コマンドは POSIX に準拠していません。しかし 2023 年に予定されている次期 POSIX (Issue 8) の改定で、POSIX 準拠の動作になります。🎉🎉🎉 私のこの言い方には違和感を感じるかもしれません。「POSIX に違反している bash が問題点を修正して、POSIX に準拠させるのではないのか?」と。いいえ違います。POSIX 側が仕様を修正することで、bash は何も変更せずに過去のバージョンも含めて POSIX に準拠するようになります。面白いですね。 この記事は echo コマンドの移植性の問題の歴史を振り返りながら、それを例に POSIX 標準化団体がどのような方針で標準規格を策定(改定)しているかを伝える一石二鳥な記事です。シェルスクリプトと POSIX の関係について知りたい方におすすめします。 こ
拙著、「[試して理解]Linuxのしくみ ~実験と図解で学ぶOS、仮想マシン、コンテナの基礎知識【増補改訂版】」が10/17日に発売されることになりました。本記事はその宣伝のためのブログエントリです。 [試して理解]Linuxのしくみ ―実験と図解で学ぶOS、仮想マシン、コンテナの基礎知識【増補改訂版】 作者:武内 覚技術評論社Amazon まずは本書がどのようなものかについて説明し、その後に、すでに第一版を読まれている方向けに第一版と本書の差分について説明します。 どんな本なのか 筆者は過去にLinuxカーネル開発をしていたのですが、そのころから次のような思いをずっと持っていました。 OS、とくにOSカーネルについての広く浅い知識はOSカーネル開発者だけではなく多くの技術者にとって役立つはず 当時OSカーネルについての知識を得ようとすると、OSを作ったりサポートしたりする人用の難しくて分
三行でまとめると シグナルハンドラ内でprintf()してはいけない というより、余計な処理を書いてはいけない もう一度言う、シグナルハンドラで余計なことをするな、非常に大事なことだ はじめに シグナルハンドラでやってよい処理は非常に限られるのに、全くルールを守らないサンプルコードが世の中に大量に出回っている。printf()するなんてもってのほかなのだが、カジュアルにそこらじゅうで見かけて非常に悲しい。 この記事では、そんな状況を少しでも改善したいと思い初心者向きに書いたものだ。そのため、下記では、回避するにはどう実装すればよいのか、ルールを破るとどうなるのか、といった点を先に簡潔に記述する。 なぜしてはいけないのか、POSIXだとかリエントラントだとか、は下の方に追いやっている。玄人は読んでてウズウズするだろうが、細かい話はできるだけ目につかないような構成としたため了解いただきたい。
Is there a way to connect to an ssh session that was disconnected? We are having problems with our network connection to a remote site that we are working on separately; however, in the mean time we experience a large number of disconnects due to lost packets while connected to servers at the remote location. Many times the session stays active for a while, and sometimes it happens to be in the mi
電子メール、ネットワーク機器集中管理、異常検知、分散処理、クラウド基盤などのシステム開発に従事。古代Rubyist。 CLI や TUI なアプリケーションを使っていると、端末の画面が崩れてしまうことがよくあります。 たとえば、こんな TUI が、 環境によってはこんな感じで崩れます。 スクロールなどをしながらしばらく使っているとさらにどんどん崩れていきます。 こうなってしまった場合、とりあえず Ctrl-l で画面を再描画することで、大抵はなんとか読める程度にリセットできますので、ことあるごとに Ctrl-l を連打することになります。 ですが、どうしようもないケースもままあります。 例えば、私の場合は以下のようなシチュエーションで困ります。 w3m でテーブルなどを表示するとレンダリングが崩れる less でログの閲覧の際に表示されるべき文字が表示されず見落としが発生する Wander
を設定してから再度試した所 bar が表示された。backupcopy は編集中のファイルによって自動で判別する auto がデフォルトになっている為、試す際には明示的に yes に設定しないといけない。 bash の実装確認 evalstring.c の parse_and_execute でコマンドが処理されており、input.c の with_input_from_buffered_stream で読み込みの準備が行われている。バッファの読み込みの本体は y.tab.c つまりパーサから直接呼ばれており、このパーサは fgets(3) で読み込まれつつ実行される為、一括でファイルが読み込まれている訳ではない。 while/do でループ実行した際に、ファイルを書き換えられたら戻り先はどうなるか、についてはスクリプトはバッファ付きで読み込まれており、そのバッファがファイルシステムから読
C 言語 : HTTP サーバーとクライアントをつくるC 言語: libevent を使って HTTP クライアントをつくるC 言語: OpenSSL を使って HTTPS クライアントをつくるC 言語: OpenSSL を使って HTTPS サーバーをつくるC 言語: libevent を使って HTTPS サーバーをつくるC 言語: libuv を使って TCP echo サーバーをつくる Linux Socket Programming の著者が公開しているサンプルコード (ssl_server.c)をもとに書いた。 オンラインのドキュメントは10年ぐらい前のものが多く、サンプルコードで型の指定が不適切なものがあったりしてサンプルコードを探すのに苦労した。出版された教科書を読む必要がありそうだ。 OpenSSL の初期化でどの関数を呼び出せばよいのかで少し悩んだ。Wikibook と
Peter Jay Salzman, Michael Burian, Ori Pomerantz, Bob Mottram, Jim Huang 1 Introduction 1.1 Authorship 1.2 Acknowledgements 1.3 What Is A Kernel Module? 1.4 Kernel module package 1.5 What Modules are in my Kernel? 1.6 Is there a need to download and compile the kernel? 1.7 Before We Begin 2 Headers 3 Examples 4 Hello World 4.1 The Simplest Module 4.2 Hello and Goodbye 4.3 The __init and __exit Mac
はじめに やめろ、ではなく、やめたほうがいい。です。自分のユースケースに合ってるか今一度確認することを推奨します。基本的にはAlpineは避けたほうが良い、というのが2021年時点での私の認識です。 なんで? libcに一般的な互換性が不足しているからです。Ruby、Python、Node.jsなどでNativeモジュールをバンドルしているアプリケーションの場合、パフォーマンスの劣化や互換性の問題にぶち当たる場合があります。 superuser.com あとは他のベースイメージの軽量化もそれなりに進んできていて、Alpineが定番軽量イメージと言う認識は2018年頃には消えつつあったかなという認識でいます。 どうすりゃええねん ※Debian Slimがあるやんってツッコミ結構もらったんですが、Slimは当たり前過ぎてもう紹介しなくていいかなっていう甘えで省略していました。よろしくおねがい
概要 ソケットプログラミングに関するTipsをメモレベルで記載する。 切断検知と経路切断 TCPコネクションの切断検出 対向がclose()、shuttdown()、プログラム終了等をしたときの切断検出について。 OSをシャットダウンさせた場合も通常はアプリケーションの終了処理が走り、正常な切断が動く。 受信側の切断検出は、recv()がlength==0で返ってきたとき、または、errno==ECONNRESETとなる。(ECONNRESETはRSTによって切断された場合) 送信側の切断検出は、切断された後2回目のsend()がエラーとなる。 ※相手がclose()→こちらがsend()→相手にパケットが飛ぶが待ち受けプログラムがいないためRST応答が来る→もう1度send()→エラー ※send()自体はカーネルの送信バッファにデータコピーするだけなので、TCPレベルの応答(送信完了)
Things will never be the same again after the dust settles. And yes, I’m talking about Linux. As I write this, most of the world is in lockdown due to COVID-19. It’s hard to say how things will look when this is over (it will be over, right?), but one thing is for sure: the world is no longer the same. It’s a weird feeling: it’s as if we ended 2019 in one planet and started 2020 in another. While
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く