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
ノリでもいけるシェル自作
Search
ONOYAMA Shodai
August 23, 2021
Technology
0
25
ノリでもいけるシェル自作
2021年度第4回LT会
ONOYAMA Shodai
August 23, 2021
Tweet
Share
More Decks by ONOYAMA Shodai
See All by ONOYAMA Shodai
出張! #DevelopersIO IT技術ブログの中の人が語る勉強会 「【速報】AWSの生成AIサービスであるAmazon Bedrock がリリースされたので朝イチで触ってみた」について語る
oshanqq
0
370
EC2 Instance Connectを図解してみた
oshanqq
1
810
初海外・初ベガス・初re:Inventで新卒が感じたこと
oshanqq
1
550
エンジニア志望学生が"ブログの会社"に入社してみて思ったこと〜新卒目線のブログ戦略〜
oshanqq
1
820
Amazon BedrockとAmazon Kendraで数時間でRAGシステムを組んでみた
oshanqq
0
1.9k
AWSトレーニングのおかげでAWS認定試験に2週連続合格できた話
oshanqq
0
820
社会人歴的に最フレッシュなはずなので、新卒で入社してからの5ヶ月間を振り返ってみた
oshanqq
0
62
[福岡イベント版]成果報告!〜23年新卒ズがスクラム開発やってみた〜
oshanqq
0
690
はじめてのJAWS-UG はじめてのre:Inforce
oshanqq
0
470
Other Decks in Technology
See All in Technology
SPI原点回帰論:事業課題とFour Keysの結節点を見出す実践的ソフトウェアプロセス改善 / DevOpsDays Tokyo 2024
visional_engineering_and_design
4
1.9k
Terraformあれやこれ/terraform-this-and-that
emiki
8
1.3k
Cracking the KubeCon CfP
inductor
2
230
Reducing Cross-Zone Egress at Spotify with Custom gRPC Load Balancing Recap
koh_naga
0
200
20240418_Google ColabにLLMが搭載されたようなのでPython x データ分析の勉強方法を考えてみる
doradora09
0
120
長期間TiDBを使ってきた話 @ 私たちはなぜNewSQLを使うのかTiDB選定5社が語る選定理由と活用LT / Experiences with TiDB Over Time
chibiegg
2
870
KubeConにproposalを送りたい人へのアドバイス
sat
PRO
3
230
ユーザーストーリーのレビューを自動化したみたの
bun913
1
410
Compose Compiler Metricsを使った実践的なコードレビュー
tomorrowkey
1
220
NgRx Signal Store
rainerhahnekamp
0
150
20240416_devopsdaystokyo
kzkmaeda
1
220
Oracle Cloud Infrastructure:2024年4月度サービス・アップデート
oracle4engineer
PRO
1
190
Featured
See All Featured
Done Done
chrislema
178
15k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
30
6k
The Language of Interfaces
destraynor
151
23k
Building Flexible Design Systems
yeseniaperezcruz
319
37k
The Mythical Team-Month
searls
216
42k
StorybookのUI Testing Handbookを読んだ
zakiyama
13
4.6k
The Power of CSS Pseudo Elements
geoffreycrofte
60
5k
Imperfection Machines: The Place of Print at Facebook
scottboms
260
12k
Put a Button on it: Removing Barriers to Going Fast.
kastner
58
3k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
187
16k
BBQ
matthewcrist
80
8.8k
Statistics for Hackers
jakevdp
789
220k
Transcript
ノリでもいけるシェル自作 o-xian
名前 : o-xian 所属 : 九州工業大学 宇宙システム工学科3年生
・ あさって内視鏡こわい
本題
• シェル知ってる? • シェル使ってる?
シェルって何や ・ 人間の入力をOSに伝えるプログラム ・ 様々なコマンドを受け取る (ls, cd, pwd …) ・
bash, zshなど様々な種類がある
これを自作する
シェル自作に必要な知識 ・ プロセス ・ システムコール ・ カーネル
シェル自作に必要な知識 ・ プロセス ・ システムコール ・ カーネル
プロセス ・ お仕事中のプログラム cargo run -> プロセス プロセス プロセス
プロセス ・ プロセスは独立している プロセス プロセス
プロセス ・ どうやって外部にアクセスする? プロセス
シェル自作に必要な知識 ・ プロセス ・ システムコール ・ カーネル
カーネル ・ オペレーティングシステムの中核となる部分
システムコール ・ プロセスからカーネルへの「お願い」 お願い 実行 システムコール
システムコール ・ いろいろな種類がある。 create, execve, fork, stat… ・ 今回のLTで扱うシェル自作で使うのは fork,
execve
システムコール ・ fork() プロセスのコピーを作る ・ execve() プロセスを他のプロセスに変身させる
自作シェルの機能 ・ コマンドの実行 ※現状、過不足ない2単語のコマンドを受け付ける 例:cat Cargo.toml, ls –a …
コマンドの実行 ・ 親のプロセスが自身の複製(子プロセス)をつくる fork()
コマンドの実行 ・ 子プロセスが別のプログラムに変身する execve() 子プロセスが終了するまで待機
コマンドの実行 ・ プログラムが終了したら、親のプロセスが再開する 再開
今回のLTで扱うシェルの概要 ・ コマンドラインから入力を受け取る。 ・ 入力をパースする。 ・ プロセスをforkする。 ・ 親プロセスでは、子プロセスが終了するまで待機する。 ・
子プロセスではコマンドを実行する。 実行が完了したら子プロセスは終了する。 無限ループ
None
None
今後 ・ かろうじて「シェル」と言えなくもない状態 ー>機能拡張(組み込みコマンド、パイプetc…) ・ Rustの練習も兼ねる
質問どぞ