東工大での自作OSの講義を担当します
この記事は 自作OS Advent Calendar 2020 の2日目の記事です。
概要
uchan は東京工業大学で特任助教をしておりますが,なんと自作 OS の授業をさせていただけることになりました。 残念ながら今年度限りの開講ですが,なるべく楽しい授業を提供したいと思います。
- 期間:2020 年 12 月 4 日(金)~2021 年 1 月 29 日(金)
- 授業コマ:3,4 コマ(14:20~17:55)
- シラバス:2020年度 | システム開発プロジェクト応用第二 - TOKYO TECH OCW
- 内容:手を動かして OS を構成する
USB3.0ドライバ開発の道
この記事は 自作OS Advent Calendar 2020 の1日目の記事です。
概要
自作 OS である MikanOS 用の USB3.0 ホストコントローラドライバ(xHCI ドライバ)を開発する際に遭遇した様々な罠に遭遇しました。 罠の概要と解決した方法を集めて紹介します。
本文
本文はスライドです。
※12/1 に記事を間に合わせるために極限まで省力化したブログ記事ですみません( ;∀;)
C++ の release sequence の意味と役割
C++ の release sequence とはアトミック変数の読み書きに関するルールです。release sequence は release store を先頭とし,それに続く read-modify-write の列です。先頭の store,または後続の read-modify-write によって書き込まれた値を acquire load した際に store と load 間に happens-before 関係を付与するためのルールが release sequence です。この記事では release sequence が何を表すのかと,どんな時に役立つのかを解説します。
想定読者
- 最小限のオーバーヘッドで異なるスレッド間の操作に happens-before 関係を付けたい人
- C++ のメモリモデルを深く理解するために release sequence を理解しようとしている人
データ競合と happens-before 関係
この記事は,マルチスレッドのプログラムでしばしば見る,そして発見が困難であるバグ「データ競合」と,それを見つけるのによく使われる「happens-before 関係」について解説します。 筆者は特に x86-64 アーキテクチャにおけるバグ検出に興味がありますので,一般的な話というよりは x86-64 に寄せた話になります。
想定読者
- データ競合バグの発生原理やアトミック変数を使ったバグの防止方法を知りたいと思っているプログラマ
- データ競合バグを検出する手法,特に happens-before 関係を勉強したいプログラム解析手法の研究者
x86-64 & C++ を例に説明しますが,その他のアーキテクチャや言語にも通じる話もたくさんあります。
続きを読む