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
ELFバイナリ静的解析入門
segfo
0
800
Other Decks in Technology
See All in Technology
AWS SAW(AWS Support Automation Workflows)をもっと広めたい
kazzpapa3
2
170
サーバーサイドのデータプレーンプログラミング 〜 NVIDIA Blue Field / DOCA 〜
ebiken
PRO
1
230
AIを使って小説を書こう!【2024/10/25講演資料】
kamomeashizawa
0
160
話題のGraphRAG、その可能性と課題を理解する
hide212131
0
150
分布で見る効果検証入門 / ai-distributional-effect
cyberagentdevelopers
PRO
2
550
LeSSをはじめよう〜LeSSをはじめるとき、LeSSをはじめてから、知りたかったこと詰め合わせ〜
lycorptech_jp
PRO
2
210
WHOLENESS, REPAIRING, AND TO HAVE FUN: 全体性、修復、そして楽しむこと
snoozer05
PRO
3
3.6k
LLMアプリをRagasで評価して、Langfuseで可視化しよう!
minorun365
PRO
2
230
Tokyo dbt Meetup #10 dbt Cloudユーザー会 & パネルディスカッション
dbttokyo
1
180
サイバーエージェントにおける生成AIのリスキリング施策の取り組み / cyber-ai-reskilling
cyberagentdevelopers
PRO
1
130
生成AI×マルチテナントSaaSな新規事業を立ち上げる上でテックリードとして気を使った点の紹介
lunastera
0
530
AWS re:Inventを徹底的に楽しむためのTips / Tips for thoroughly enjoying AWS re:Invent
yuj1osm
0
180
Featured
See All Featured
Designing for humans not robots
tammielis
249
25k
Designing Experiences People Love
moore
138
23k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
31
2.6k
Building Your Own Lightsaber
phodgson
102
6k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
92
16k
Product Roadmaps are Hard
iamctodd
PRO
48
10k
Happy Clients
brianwarren
97
6.7k
Keith and Marios Guide to Fast Websites
keithpitt
408
22k
Designing on Purpose - Digital PM Summit 2013
jponch
115
6.9k
The Invisible Side of Design
smashingmag
297
50k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
41
9.2k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
6.9k
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)に移行する ◦ 安全かつ安心して書きたいものを書ける 未定義を踏まないのでデバッグもしやすい
おわり