uchan note

プログラミングや電子工作の話題を書きます

FIFOバッファ

この記事はプログラミング,とりわけ自作OSに興味を持った計算機科学初心者の方に向け,FIFOバッファの紹介,および具体的な実装例を紹介するものです. FIFOバッファとは何か,自作OSでの応用例,ナイーブな実装例と性能を多少考慮した改良例を紹介します.

割り込み「ベクタ」と呼ぶ理由

割り込みハンドラへのポインタを配列状に並べたものを「割り込みベクタテーブル」と呼びます。英語ではInterrupt Vector Table。なぜ「ベクタ(ベクトル)」という語が使われるのか疑問に思い、ツイッターで聞いたりした結果、ベクタはポインタとほぼ同じ意…

セキュリティキャンプ2019全国大会 OS開発ゼミ 紹介

このページはセキュリティキャンプ全国大会 2019 の集中開発コース「OS 開発ゼミ」の紹介ページです. OS 開発ゼミ 基本情報 OS 開発ゼミの基本的な情報は以下の通りです。 イベント:セキュリティキャンプ全国大会 2019 コース:集中開発コース トラック:…

【技術書典6】「Local APICタイマー入門」を出します(ダウンロード頒布有)

大人気の技術書オンリーの同人誌即売会「技術書典 6」が、2019/04/14(日)に池袋サンシャインシティで開かれます。 今回は「Local APICタイマー入門」を出しますので、そのお知らせです。 頒布情報 日時 2019 年 4 月 14 日(日) 場所 池袋サンシャインシ…

std::function のオーバーヘッド計測

C++

C++ の std::function による呼び出しオーバーヘッドを計測してみました.

C++ autoの使いどころ・使わない方が良い場面

C++

この記事では C++11 から導入された型推論 auto の使いどころ,使うべきでない場面を紹介します. 可読性や保守性の高いプログラムにするために記事が役立てば幸いです. (筆者の考え方が偏っているかもしれません.是非,ご意見ご感想をお寄せください) …

uchanの自作OS的な自分史

筆者(uchan)は現在,自作OSの分野で精力的に活動しています.そんな筆者も最初から知識が有ったわけではありません.当然ですが最初は初心者でした.このエッセイは,筆者の自作OS人生を振り返り,何のきっかけで自作OSに足を踏み入れ,どうやって成長した…

ClangdでC++ソースコードを補完する際にコンパイルオプションを指定する方法

この記事では Clangd を使って C++ のソースコードを補完する際に独自のコンパイルオプションを指定する方法を説明します.

そこのあなた!OSCに出展してみない?

皆さんはOSC(オープンソースカンファレンス)はご存知ですか?一言で言えば「オープンソースの文化祭」的イベントで、OSSを開発、利用、販売しているような企業やコミュニティが集まってブース展示やセミナーを開催します。 私は参加自体は以前からしていま…

QEMUのトレース機能でOSのデバッグを支援する

この記事では QEMU が持つ「トレース」および DPRINTF マクロの機能を有効化して OS 開発のデバッグに役立てる方法を説明します. 自作 OS アドベントカレンダー 2018 の 1 日目の記事です. OS,特にハードウェアを制御するドライバの開発はなかなか苦労す…

讃岐うどんの楽しみ方

uchanは讃岐うどんが好きでたまに香川に行きます.うどんマニアのように食べ尽くしたというわけではありませんが,香川には5回ぐらい行っており,割と色々なうどん屋さんに行きました.讃岐うどん未経験の方が讃岐うどんを楽しめるよう,メモを書くことにし…

プロフィール

このブログの著者(uchan)のプロフィールをまとめるページです.随時更新します. 2014 年から現在 2018/08 セキュリティキャンプ全国大会 2018 にて「システムプログラミングトラック」のトラックリーダー,および当該トラック内の「OS 開発ゼミ」講師を務…

osdev-jpとしてOSCに出展しました!

OSC(オープンソースカンファレンス)2018 Tokyo/Fallというイベントに、OS開発コミュニティ"osdev-jp"として出展しました。osdev-jpとしては初の出展でしたので、記念として記事を書いています。

【技術書典5】「C++でできる!OS自作入門」を出します(ダウンロード頒布有)

大人気の技術書オンリーの同人誌即売会「技術書典 5」が、2018/10/08(月・祝)に池袋サンシャインシティで開かれます。 秋葉原 UDX ではないのでご注意を! 今回は「C++でできる!OS自作入門」を出しますので、そのお知らせです。 頒布情報 日時 2018 年 10…

Rust より C++ が優れている 12 のポイント

若干釣りタイトルですが,私が「Rust にはない C++ の良さ」を募ったところ,12 個ほどの優れている点が報告されたので,まとめてみます. 背景 私は 2018/10/08 開催予定の技術書典5で,『C++でできる!OS自作入門』と題して,Clang+LLD で C++ を使って OS…

セキュリティキャンプ 2018「フルスクラッチ OS を書こう!」テーマまとめ

セキュリティキャンプ 2018 全国大会の集中開発コースの講師をやったので報告です. 「フルスクラッチ OS を書こう!」というテーマで,自作 OS を一から作るお手伝いをしました. 「フルスクラッチ OS を書こう!」の概要 フルスクラッチと言いつつキャンプ…

「30 日でできる!OS 自作入門」のような段階的に進展するプログラムについての解説書の執筆を Git で支援する

プログラムについての解説書を Git を用いて執筆する方法の提案です. まえがき プログラミングに関する解説書には大きく分けて 2 つの系統があります. 1 つはテーマごとにサンプルプログラムを提示して解説するもの,もう 1 つは特定のプログラムの各部分…

SSD 周りの用語まとめ(M.2,PCIe,SATA,AHCI,NVMe)

SSD 関連の用語で違いがよく分からなかったりしませんか? 特に,M.2,PCIe(PCI Express),SATA(Serial ATA),AHCI,NVMe(NVM Express)などの用語が飛び交っていて,筆者も少しあいまいだったので,今回調査してまとめてみました. 概要 M.2 は「フォ…

OS自作入門の入門

この記事では OS 自作の最初の一歩の部分を紹介します.OS 開発を始める前に雰囲気をつかみたい,という方に向けて書いています. 「セキュリティキャンプ 2018」の「OS 開発ゼミ・フルスクラッチ OS を書こう!」の補足資料でもあります.

OS を作る!? 夏の集中開発ゼミ開催!

2018 年の夏季 3 日間で集中して OS を開発するイベントのご紹介です。なんと参加費、交通費、宿泊費など無料なので、学生さんは奮ってご参加ください! 概要 オペレーティングシステム(OS)は IT システムを構成する重要な要素です。しかし OS の中身を知…

【技術書典4】USB 3.0 ホストドライバ自作入門を出します(ダウンロード頒布有)

大人気の技術書オンリーの同人誌即売会「技術書典 4」が、2018/04/22(日)に秋葉原 UDX で開かれます。 今回は「USB 3.0 ホストドライバ自作入門」を出しますので、そのお知らせです。 頒布情報 日時 2018 年 4 月 22 日(日) 場所 秋葉原 UDX アキバ・ス…

seccamp2018

このページはセキュリティキャンプ全国大会 2018 の集中開発コース「OS 開発ゼミ」の紹介ページです. OS 開発ゼミ 基本情報 OS 開発ゼミの基本的な情報は以下の通りです。 イベント:セキュリティキャンプ全国大会 2018 コース:集中開発コース トラック:…

x86-64 モードのプログラミングではスタックのアライメントに気を付けよう

x86-64 モードというのは x86 系 CPU の動作モードの一つです.64 ビットモードとかロングモードと呼ばれることもあります. x86-64 モードではページングが必須だったり,セグメント CS や DS に設定するベースアドレスやリミットが無視されるなど,CPU 自…

How to reset NVRAM of MinnowBoard Turbot

This article expresses how to reset a NVRAM of a MinnowBoard Turbot. MinnowBoard Turbot is a x86_64 board for embedded use. Why this article is useful Enabling fast boot in BIOS setup utility will block you to enter to the utility again. Y…

OS 自作に便利な C++ の機能 10 選(後編)

自作 OS Advent Calendar 2017 11 日目の記事です(盛大に遅刻しました). 1 日目の記事 に引き続き,OS を書く際に便利な C++ の機能を紹介していきます.

レガシー BIOS が 2020 年で消えたあとの世界

11 月に入って,Intel が 2020 年までにレガシー BIOS サポートを完全に消そうとしているというニュースが飛び込んできました. www.itmedia.co.jp OS を自作する場合はいまだに BIOS に頼った起動コードを書くことが多いと思います. このニュースが意味す…

mdadm の write-intent bitmap と bad block log を競合させてみる

本記事は Linux Advent Calendar 2017 の 4 日目の記事です. 概要 Linux のソフトウェア RAID の機能を管理するための mdadm コマンドにまつわるバグの再現実験を行います. そのバグとは,次の記事で紹介されている「バグ 1」のことです. blog.cybozu.io

OS 自作に便利な C++ の機能 10 選(前編)

自作 OS Advent Calendar 2017 1 日目の記事です. 筆者が大好きな C++ の機能の中で,OS を書く際に便利なもの 10 個を紹介する予定です.

はてなブログで画像タグが展開されないバグの検証テスト記事

画像タグを張りつける条件によってはタグが展開されないことを確認するテスト.以下の画像をサンプルとして使う スペースによるコードブロック の後だとなぜか展開されない. [f:id:uchan_nos:20171126114150p:plain:w100] 2枚貼っても展開されない. [f:id:…

UEFI + iPXE で自作 OS をネットワーク起動する

概要 開発マシン上に置いた自作 OS のカーネルを,ネットワーク経由でターゲットマシンに読み込ませ,起動させるやり方についての記事です. ディスクイメージをネットワークブートする - Raphine Project の記事を大いに参考にしました.Raphine Project の…