Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
RustでOS作りたい話
Search
segfo
August 05, 2018
Technology
4
1k
RustでOS作りたい話
第13回:自作OSもくもく会LT
segfo
August 05, 2018
Tweet
Share
More Decks by segfo
See All by segfo
AI/LLM入門
segfo
0
110
ELFバイナリ静的解析入門
segfo
0
860
Other Decks in Technology
See All in Technology
ピープルウエア x スタートアップ
operando
1
3.2k
DSPy入門
tomehirata
6
880
短期間でRAGシステムを実現 お客様と歩んだ生成AI内製化への道のり
taka0709
1
180
Kotlinで型安全にバイテンポラルデータを扱いたい! ReladomoラッパーをAIと実装してみた話
itohiro73
3
240
datadog-incident-management-intro
tetsuya28
0
120
設計に疎いエンジニアでも始めやすいアーキテクチャドキュメント
phaya72
26
18k
Mackerelにおけるインシデント対応とポストモーテム - 現場での工夫と学び
taxin
0
110
InsightX 会社説明資料/ Company deck
insightx
0
190
新米エンジニアをTech Leadに任命する ー 成長を支える挑戦的な人と組織のマネジメント
naopr
1
350
進化する大規模言語モデル評価: Swallowプロジェクトにおける実践と知見
chokkan
PRO
3
460
実践マルチモーダル検索!
shibuiwilliam
3
560
SREのキャリアから経営に近づく - Enterprise Risk Managementを基に -
shonansurvivors
1
730
Featured
See All Featured
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
36
6.1k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.2k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.7k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
192
56k
Side Projects
sachag
455
43k
Optimizing for Happiness
mojombo
379
70k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
10
640
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Build The Right Thing And Hit Your Dates
maggiecrowley
38
2.9k
RailsConf 2023
tenderlove
30
1.3k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.5k
Transcript
RustでOS作りたい そんな話
はじめに
自己紹介 Twitter: @segfo Qiitaとかでいろいろ書いてます。 https://qiita.com/segfo 30日で作る本(30日では書けないけど)でこの世界に入門しました。
C言語難しくない???? 作りたいものを作れず、そこらじゅうエラー・例外ハンドラだらけ ちょっとコード書くとバッファオーバーフロー ちゃんと書かないとすぐ汚くなる。(だんだん混乱してくる) プログラミングが下手なので厳しさだけを感じる
つらい C言語以外でデバイス叩きたい
「RustでOSを作る」という選択肢 今回は「Rust」という言語を紹介します。 • 速度はC++並み • コンパイル時にバッファオーバーフローを一部検出できる • プログラミングが下手でも、ほぼ正常系で記述できる
Rustってなに? Mozillaが開発しているプログラミング言語 マルチパラダイムで、割と今風(※OOPとか)に書ける
そこでRust 簡潔に言うとC++の上位互換っぽい(C++よくわからない) クラス・継承の概念が使える GCを使わないけど、リソース管理ができる(Drop Traitという仕組みを使う) BOFするコードが有ったらコンパイルできない もしコンパイルできたとしても、実行時エラーで確実に止まってくれる
デモ x86_64 UEFI (LONGモード(64bit)で動作) デモで使用するプログラム https://github.com/segfo/rust-uefi-sample
コード コンパイルエラー
コード 実行時エラー(QEMU上)
panicの実装 panicしたらとりあえず、無限ルー プしとく実装。 RebootでもOK
UEFIブート&RustでOSを作る意味 • やりたいことに集中できる ◦ BIOSブート:Real mode→Protected mode→Long mode ▪ しかもコード書ける領域が
512バイト縛り(1セクタ分)しかない ◦ UEFIブート:Long mode ▪ コード書ける領域が実質無限 ◦ Rustは例外処理やパターンマッチが書きやすい ▪ 例外処理ばっかりなコードとはお別れできる • C/C++では「未定義動作」が一番OS作る上では一番厄介 ◦ Rustでは、未定義動作が徹底的に排除されている ◦ 典型的な「配列の溢れ」なんかは すべて定義された動作 (基本はpanic)に移行する ◦ 安全かつ安心して書きたいものを書ける 未定義を踏まないのでデバッグもしやすい
おわり