SlideShare a Scribd company logo
StackExchangeで見た
システムプログラミング案件
八重樫 剛史
https://twitter.com/hogegashi
https://github.com/yaegashi
自己紹介
● 八重樫 剛史 (やえがし たけし)
● ゲーム会社勤務のエンジニア、だがゲームプログラマではない
● GNU/Linux と組み込みシステムが興味・関心の中心
仕事とか
● いろんな組み込みシステム向けに GNU/Linux や Android の
実行環境・開発環境をブートストラップしてきた
● 版権ものをよく扱うのでコンテンツ保護機構を
考案・実装したりもする
● 最近の案件は RasPi が MQTT を Go したら IoT した
みたいなやつ
趣味とか
● 競技プログラミング (下手の横好き)
○ TopCoder を 2 年続けてようやくイエローコーダー
○ Google Code Jam 2016 は順当に Round 1 敗退
● Ingress (ひきこもりの L16)
● 電子工作・FPGA (時間がない)
● StackExchange 回答陣 (ほぼ引退)
StackExchange 見てますか?
● 海外の巨大 Q&A サイト
● 特定ジャンル向けの姉妹サイトがたくさんある
○ Stack Overflow stackoverflow.com
○ Server Fault serverfault.com
○ Ask Ubuntu ask.ubuntu.com
○ スタック・オーバーフロー ja.stackoverflow.com ← 日本語版
● ぐぐるとよく引っかかるのでお世話になったことがある人は多いと思います
StackExchange 効能
● ゲーミフィケーションのさじ加減がよくできている
● 参加者がみな熱心で、質問・回答ともに質が高いものが多く、勉強になる
● Reputation や Badge を稼ぐことで英語の読み書き能力がどんどん向上する
● 自分の興味のあるジャンル・サイトに参加して腕を磨こう!
私の主戦場: Unix & Linux
● unix.stackexchange.com
● 低レベルから高レベルまで様々なレイヤの話題
● マイナーな処理系にやたら詳しい人がいる
○ マイナー商用 Unix (AIX とか HP-UX とか)
○ マイナーシェル (ksh93 とか yash とか fish とか)
○ マイナーシェル機能 (coproc とか)
● GNU/Linux 環境に慣れきって Posix とか忘れてしまってることを実感する
○ シェルスクリプトの回答は #!/bin/sh でなく #!/bin/bash で始めておいたほうが無難
私の戦績: Unix & Linux
● 2015年6月に始めたところ妙にはまってしまい、
3 ヶ月あまりで200以上の回答を投稿し5000以上のreputationを稼いだ
● その後は飽きた
U&L システムプログラミング案件
各質問にはタグがついており、自分が回答した質問もタグで検索できる
U&L システムプログラミング案件
むかし自分が回答した /dynamic-linking タグの質問
U&L システムプログラミング案件
Q: LD_LIBRARY_PATH environment variable
拙い語彙の英語でも通じるし upvote や accept がもらえます
U&L システムプログラミングおもしろ案件
Q: 実行中にシステムコールを全く行わない unix コマンドってある?
U&L システムプログラミングおもしろ案件
Q: 実行中にシステムコールを全く行わない unix コマンドってある?
A: Unix プロセスって終了するのにも exit() を呼んで
システムコールしないといけないから、ないよ。
・・・本当だろうか?
Q: システムコールを使わずに終了するプログラム書ける?
int main()
{
return 0;
}
安直な回答
Q: システムコールを使わずに終了するプログラム書ける?
$ echo 'int main(){return 0;}' | gcc -static -x c -
$ strace ./a.out
execve("./a.out", ["./a.out"], [/* 56 vars */]) = 0
uname({sysname="Linux", nodename="hf", ...}) = 0
brk(NULL) = 0xeec000
brk(0xeed1c0) = 0xeed1c0
arch_prctl(ARCH_SET_FS, 0xeec880) = 0
readlink("/proc/self/exe", "/home/yaegashi/a.out", 4096) = 20
brk(0xf0e1c0) = 0xf0e1c0
brk(0xf0f000) = 0xf0f000
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or
directory)
exit_group(0) = ?
+++ exited with 0 +++
実際には libc ランタイムが main() の前後でたくさんシステムコール呼んでる
Q: システムコールを使わずに終了するプログラム書ける?
$ echo 'int _start(){return 0;}' | gcc -x c - -nostdlib -nostartfiles
$ strace ./a.out
execve("./a.out", ["./a.out"], [/* 56 vars */]) = 0
--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0x1} ---
+++ killed by SIGSEGV (core dumped) +++
Segmentation fault (core dumped)
libc ランタイムなしで 0 を返す関数だけのプログラムを作って実行すると…
いまのところの結論
● Linux カーネルではプロセスが終了するには
自分で exit_group() というシステムコールを呼ぶ必要がある
● さもなければ、誰かにシグナルを送ってもらって止めてもらうしかない
● シグナルで終了したプロセスは exit code が シグナル番号+128 になる
● ということは、システムコールを使わずにプログラムを正常終了
つまり exit code 0 でプロセス終了する方法はない?
Q: システムコールを使わずに終了するプログラム書ける?
ところでシグナルって何種類あるのか?
・・・システムコールを使わずに、何種類のシグナルを出せるだろうか?
とりあえず Linux on x86_64 という条件でチャレンジしてみよう!
$ kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
SIGSEGVをシステムコールなしで出す
もっとも簡単?
$ echo 'void _start(){}' | gcc -x c - -nostdlib -nostartfiles
$ strace ./a.out
execve("./a.out", ["./a.out"], [/* 57 vars */]) = 0
--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0x1} ---
+++ killed by SIGSEGV (core dumped) +++
Segmentation fault (core dumped)
SIGSEGVをシステムコールなしで出す
ちなみに空の関数を最適化つきでコンパイルすると、
GCCは repz retq という見慣れないコードを吐く
$ echo 'void _start(){}' | gcc -O -x c - -nostartfiles -nostdlib
$ objdump -d
a.out: file format elf64-x86-64
Disassembly of section .text:
0000000000400144 <_start>:
400144: f3 c3 repz retq
http://repzret.org というサイトに解説がある
SIGFPEをシステムコールなしで出す
整数ゼロ除算などで発生する
$ echo 'int _start(){return 1/0;}' | gcc -x c - -nostartfiles -nostdlib
<stdin>: In function '_start':
<stdin>:1:22: warning: division by zero [-Wdiv-by-zero]
$ strace ./a.out
execve("./a.out", ["./a.out"], [/* 57 vars */]) = 0
--- SIGFPE {si_signo=SIGFPE, si_code=FPE_INTDIV, si_addr=0x40014f} ---
+++ killed by SIGFPE (core dumped) +++
Floating point exception (core dumped)
SIGFPEをシステムコールなしで出す
あれ、でも 1/0 って定数・即値じゃないのかね?
$ echo 'int _start(){return 1/0;}' | gcc -O -x c - -nostartfiles -nostdlib
<stdin>: In function '_start':
<stdin>:1:22: warning: division by zero [-Wdiv-by-zero]
$ objdump -d
a.out: file format elf64-x86-64
Disassembly of section .text:
0000000000400144 <_start>:
400144: b8 01 00 00 00 mov $0x1,%eax
400149: b9 00 00 00 00 mov $0x0,%ecx
40014e: 99 cltd
40014f: f7 f9 idiv %ecx
400151: c3 retq
SIGFPEをシステムコールなしで出す
Clang は GCC とはまた違ったコードを吐くぞ?
$ echo 'int _start(){return 1/0;}' |
clang -O -x c - -nostartfiles -nostdlib
<stdin>:1:22: warning: division by zero is undefined [-Wdivision-by-zero]
int _start(){return 1/0;}
^~
1 warning generated.
$ objdump -d
a.out: file format elf64-x86-64
Disassembly of section .text:
0000000000400150 <_start>:
400150: c3 retq
SIGILLをシステムコールなしで出す
このへんからアセンブリ言語を使う必要がでてくる
$ echo '.global _start;_start:mov %ax,%cs' |
gcc -x assembler - -nostdlib -nostartfiles
$ strace ./a.out
execve("./a.out", ["./a.out"], [/* 57 vars */]) = 0
--- SIGILL {si_signo=SIGILL, si_code=ILL_ILLOPN, si_addr=0x4000d4} ---
+++ killed by SIGILL (core dumped) +++
Illegal instruction (core dumped)
SIGTRAPをシステムコールなしで出す
有名問題 (BINARY HACKS にも書かれている)
$ echo 'int3' | gcc -x assembler - -nostdlib -nostartfiles
$ strace ./a.out
execve("./a.out", ["./a.out"], [/* 57 vars */]) = 0
--- SIGTRAP {si_signo=SIGTRAP, si_code=SI_KERNEL} ---
+++ killed by SIGTRAP (core dumped) +++
Trace/breakpoint trap (core dumped)
SIGBUSをシステムコールなしで出す
● 伝統的に x86 ではアラインメントされないメモリアクセスができてしまう
● じゃあ x86 で SIGBUS ってどうやって出すのか?
● システムコールを使っていいならファイルを mmap() して
ファイルサイズ外のオフセットのアドレスをアクセスすれば出る
SIGTRAPをシステムコールなしで出す
実は x86 は EFLAGS の AC ビットというのを立てると
アラインメントなしのメモリアクセスで例外を出すようになるらしい
$ echo 'pushf;orl $0x40000,(%rsp);popf;movl $0,1' |
gcc -x assembler - -nostdlib -nostartfiles
$ strace ./a.out
execve("./a.out", ["./a.out"], [/* 57 vars */]) = 0
--- SIGBUS {si_signo=SIGBUS, si_code=BUS_ADRALN, si_addr=0} ---
+++ killed by SIGBUS (core dumped) +++
Bus error (core dumped)
stackoverflow.com: How to get a “bus error”?
SIGKILLをシステムコールなしで出す
ちょっとずるい方法
無限ループするプログラムを作って CPU time に limit を設定して殺してもらう
$ echo 'jmp .' | gcc -O -x assembler - -nostdlib -nostartfiles
$ ulimit -t 1
$ strace -rt ./a.out
0.000000 execve("./a.out", ["./a.out"], [/* 57 vars */]) = 0
0.997027 +++ killed by SIGKILL +++
Killed
SIGXCPUをシステムコールなしで出す
おまけ
CPU time に soft limit を設定すると SIGKILL の前に SIGXCPU を送ってもらえる
$ echo 'jmp .' | gcc -O -x assembler - -nostdlib -nostartfiles
$ ulimit -t 10
$ ulimit -S -t 1
$ strace -rt ./a.out
0.000000 execve("./a.out", ["./a.out"], [/* 57 vars */]) = 0
0.997119 --- SIGXCPU {si_signo=SIGXCPU, si_code=SI_KERNEL} ---
0.118958 +++ killed by SIGXCPU (core dumped) +++
CPU time limit exceeded (core dumped)
システムコールなしで出せるシグナルはまだあるだろうか?
他にもうまい方法を考案された方はぜひ教えてください!!
$ kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
まとめ
● StackExchange のシステムプログラミング案件を紹介しました
● システムコールを使わずにシグナルをもらう方法を考えました
● システムコールを使わずに正常終了するプログラムを書く方法を募集中
おわり

More Related Content

What's hot

Ylug 110th kpatch code reading
Ylug 110th kpatch code readingYlug 110th kpatch code reading
Ylug 110th kpatch code reading
Masami Hiramatsu
 
デバドラを書いてみよう!
デバドラを書いてみよう!デバドラを書いてみよう!
デバドラを書いてみよう!
Masami Ichikawa
 
SystemV IPC
SystemV IPCSystemV IPC
SystemV IPC
Masami Ichikawa
 
Altera SDK for OpenCL解体新書 : ホストとデバイスの関係
Altera SDK for OpenCL解体新書 : ホストとデバイスの関係Altera SDK for OpenCL解体新書 : ホストとデバイスの関係
Altera SDK for OpenCL解体新書 : ホストとデバイスの関係
Mr. Vengineer
 
4章 Linuxカーネル - 割り込み・例外 5
4章 Linuxカーネル - 割り込み・例外 54章 Linuxカーネル - 割り込み・例外 5
4章 Linuxカーネル - 割り込み・例外 5
mao999
 
高速な暗号実装のためにしてきたこと
高速な暗号実装のためにしてきたこと高速な暗号実装のためにしてきたこと
高速な暗号実装のためにしてきたこと
MITSUNARI Shigeo
 
SpectreとMeltdown:最近のCPUの深い話
SpectreとMeltdown:最近のCPUの深い話SpectreとMeltdown:最近のCPUの深い話
SpectreとMeltdown:最近のCPUの深い話
LINE Corporation
 
x86とコンテキストスイッチ
x86とコンテキストスイッチx86とコンテキストスイッチ
x86とコンテキストスイッチ
Masami Ichikawa
 
PHPとシグナル、その裏側
PHPとシグナル、その裏側PHPとシグナル、その裏側
PHPとシグナル、その裏側
do_aki
 
OpenCM IDE、OpenCM 485 EXPを用いてのDynamixel Xシリーズの制御
OpenCM IDE、OpenCM 485 EXPを用いてのDynamixel Xシリーズの制御OpenCM IDE、OpenCM 485 EXPを用いてのDynamixel Xシリーズの制御
OpenCM IDE、OpenCM 485 EXPを用いてのDynamixel Xシリーズの制御
ROBOTIS Japan
 
Minix smp
Minix smpMinix smp
Minix smp
Masami Ichikawa
 
Mincs 日本語版
Mincs 日本語版Mincs 日本語版
Mincs 日本語版
Masami Hiramatsu
 
パケットジェネレータipgenから見るnetmap
パケットジェネレータipgenから見るnetmapパケットジェネレータipgenから見るnetmap
パケットジェネレータipgenから見るnetmap
furandon_pig
 
From IA-32 to avx-512
From IA-32 to avx-512From IA-32 to avx-512
From IA-32 to avx-512
MITSUNARI Shigeo
 
ROP Illmatic: Exploring Universal ROP on glibc x86-64 (ja)
ROP Illmatic: Exploring Universal ROP on glibc x86-64 (ja)ROP Illmatic: Exploring Universal ROP on glibc x86-64 (ja)
ROP Illmatic: Exploring Universal ROP on glibc x86-64 (ja)
inaz2
 
Kiso sekkei 01rev03
Kiso sekkei 01rev03Kiso sekkei 01rev03
Kiso sekkei 01rev03
tetsuya matsuno
 
MINCS – containers in the shell script
MINCS – containers in the shell scriptMINCS – containers in the shell script
MINCS – containers in the shell script
Masami Hiramatsu
 
Gpgpu tomoaki-fp16
Gpgpu tomoaki-fp16Gpgpu tomoaki-fp16
Gpgpu tomoaki-fp16
tomoaki0705
 
Spectre/Meltdownとその派生
Spectre/Meltdownとその派生Spectre/Meltdownとその派生
Spectre/Meltdownとその派生
MITSUNARI Shigeo
 
4章 Linuxカーネル - 割り込み・例外 2
4章 Linuxカーネル - 割り込み・例外 24章 Linuxカーネル - 割り込み・例外 2
4章 Linuxカーネル - 割り込み・例外 2
mao999
 

What's hot (20)

Ylug 110th kpatch code reading
Ylug 110th kpatch code readingYlug 110th kpatch code reading
Ylug 110th kpatch code reading
 
デバドラを書いてみよう!
デバドラを書いてみよう!デバドラを書いてみよう!
デバドラを書いてみよう!
 
SystemV IPC
SystemV IPCSystemV IPC
SystemV IPC
 
Altera SDK for OpenCL解体新書 : ホストとデバイスの関係
Altera SDK for OpenCL解体新書 : ホストとデバイスの関係Altera SDK for OpenCL解体新書 : ホストとデバイスの関係
Altera SDK for OpenCL解体新書 : ホストとデバイスの関係
 
4章 Linuxカーネル - 割り込み・例外 5
4章 Linuxカーネル - 割り込み・例外 54章 Linuxカーネル - 割り込み・例外 5
4章 Linuxカーネル - 割り込み・例外 5
 
高速な暗号実装のためにしてきたこと
高速な暗号実装のためにしてきたこと高速な暗号実装のためにしてきたこと
高速な暗号実装のためにしてきたこと
 
SpectreとMeltdown:最近のCPUの深い話
SpectreとMeltdown:最近のCPUの深い話SpectreとMeltdown:最近のCPUの深い話
SpectreとMeltdown:最近のCPUの深い話
 
x86とコンテキストスイッチ
x86とコンテキストスイッチx86とコンテキストスイッチ
x86とコンテキストスイッチ
 
PHPとシグナル、その裏側
PHPとシグナル、その裏側PHPとシグナル、その裏側
PHPとシグナル、その裏側
 
OpenCM IDE、OpenCM 485 EXPを用いてのDynamixel Xシリーズの制御
OpenCM IDE、OpenCM 485 EXPを用いてのDynamixel Xシリーズの制御OpenCM IDE、OpenCM 485 EXPを用いてのDynamixel Xシリーズの制御
OpenCM IDE、OpenCM 485 EXPを用いてのDynamixel Xシリーズの制御
 
Minix smp
Minix smpMinix smp
Minix smp
 
Mincs 日本語版
Mincs 日本語版Mincs 日本語版
Mincs 日本語版
 
パケットジェネレータipgenから見るnetmap
パケットジェネレータipgenから見るnetmapパケットジェネレータipgenから見るnetmap
パケットジェネレータipgenから見るnetmap
 
From IA-32 to avx-512
From IA-32 to avx-512From IA-32 to avx-512
From IA-32 to avx-512
 
ROP Illmatic: Exploring Universal ROP on glibc x86-64 (ja)
ROP Illmatic: Exploring Universal ROP on glibc x86-64 (ja)ROP Illmatic: Exploring Universal ROP on glibc x86-64 (ja)
ROP Illmatic: Exploring Universal ROP on glibc x86-64 (ja)
 
Kiso sekkei 01rev03
Kiso sekkei 01rev03Kiso sekkei 01rev03
Kiso sekkei 01rev03
 
MINCS – containers in the shell script
MINCS – containers in the shell scriptMINCS – containers in the shell script
MINCS – containers in the shell script
 
Gpgpu tomoaki-fp16
Gpgpu tomoaki-fp16Gpgpu tomoaki-fp16
Gpgpu tomoaki-fp16
 
Spectre/Meltdownとその派生
Spectre/Meltdownとその派生Spectre/Meltdownとその派生
Spectre/Meltdownとその派生
 
4章 Linuxカーネル - 割り込み・例外 2
4章 Linuxカーネル - 割り込み・例外 24章 Linuxカーネル - 割り込み・例外 2
4章 Linuxカーネル - 割り込み・例外 2
 

Similar to StackExchangeで見たシステムプログラミング案件

DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519Yasuhiro Ishii
 
Polyphony の行く末(2018/3/3)
Polyphony の行く末(2018/3/3)Polyphony の行く末(2018/3/3)
Polyphony の行く末(2018/3/3)
ryos36
 
NGS解析を始めた時にぶつかりがちな小さい壁あれこれ
NGS解析を始めた時にぶつかりがちな小さい壁あれこれNGS解析を始めた時にぶつかりがちな小さい壁あれこれ
NGS解析を始めた時にぶつかりがちな小さい壁あれこれ
DNA Data Bank of Japan center
 
関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPU関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPUTakuro Iizuka
 
HaskellではじめるCortex-M3組込みプログラミング
HaskellではじめるCortex-M3組込みプログラミングHaskellではじめるCortex-M3組込みプログラミング
HaskellではじめるCortex-M3組込みプログラミングKiwamu Okabe
 
OpenCLに触れてみよう
OpenCLに触れてみようOpenCLに触れてみよう
OpenCLに触れてみよう
You&I
 
Exploring the x64
Exploring the x64Exploring the x64
Exploring the x64FFRI, Inc.
 
about DakotagUI
about DakotagUIabout DakotagUI
about DakotagUI
Etsuji Nomura
 
どこでも動くゲームを作るためのベタープラクティス
どこでも動くゲームを作るためのベタープラクティスどこでも動くゲームを作るためのベタープラクティス
どこでも動くゲームを作るためのベタープラクティス
5mingame2
 
Xbyakの紹介とその周辺
Xbyakの紹介とその周辺Xbyakの紹介とその周辺
Xbyakの紹介とその周辺
MITSUNARI Shigeo
 
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
Hirotaka Kawata
 
PyOpenCLによるGPGPU入門
PyOpenCLによるGPGPU入門PyOpenCLによるGPGPU入門
PyOpenCLによるGPGPU入門Yosuke Onoue
 
JTF2020 クロスコンパイルだけが能ではない組み込みLinuxシステムのCI/CDインフラ構築
JTF2020 クロスコンパイルだけが能ではない組み込みLinuxシステムのCI/CDインフラ構築JTF2020 クロスコンパイルだけが能ではない組み込みLinuxシステムのCI/CDインフラ構築
JTF2020 クロスコンパイルだけが能ではない組み込みLinuxシステムのCI/CDインフラ構築
yaegashi
 
スタート低レイヤー #0
スタート低レイヤー #0スタート低レイヤー #0
スタート低レイヤー #0Kiwamu Okabe
 
CMSI計算科学技術特論B(14) OpenACC・CUDAによるGPUコンピューティング
CMSI計算科学技術特論B(14) OpenACC・CUDAによるGPUコンピューティングCMSI計算科学技術特論B(14) OpenACC・CUDAによるGPUコンピューティング
CMSI計算科学技術特論B(14) OpenACC・CUDAによるGPUコンピューティングComputational Materials Science Initiative
 
Kibanaでsysstatを可視化する
Kibanaでsysstatを可視化するKibanaでsysstatを可視化する
Kibanaでsysstatを可視化する
Kensuke Maeda
 
ふつうのLinuxプログラミング
ふつうのLinuxプログラミングふつうのLinuxプログラミング
ふつうのLinuxプログラミング
Shuhei KONDO
 
ロボットシステム学2015年第7回
ロボットシステム学2015年第7回ロボットシステム学2015年第7回
ロボットシステム学2015年第7回
Ryuichi Ueda
 
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)Takeshi Yamamuro
 

Similar to StackExchangeで見たシステムプログラミング案件 (20)

DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
 
Polyphony の行く末(2018/3/3)
Polyphony の行く末(2018/3/3)Polyphony の行く末(2018/3/3)
Polyphony の行く末(2018/3/3)
 
NGS解析を始めた時にぶつかりがちな小さい壁あれこれ
NGS解析を始めた時にぶつかりがちな小さい壁あれこれNGS解析を始めた時にぶつかりがちな小さい壁あれこれ
NGS解析を始めた時にぶつかりがちな小さい壁あれこれ
 
関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPU関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPU
 
HaskellではじめるCortex-M3組込みプログラミング
HaskellではじめるCortex-M3組込みプログラミングHaskellではじめるCortex-M3組込みプログラミング
HaskellではじめるCortex-M3組込みプログラミング
 
OpenCLに触れてみよう
OpenCLに触れてみようOpenCLに触れてみよう
OpenCLに触れてみよう
 
Exploring the x64
Exploring the x64Exploring the x64
Exploring the x64
 
about DakotagUI
about DakotagUIabout DakotagUI
about DakotagUI
 
どこでも動くゲームを作るためのベタープラクティス
どこでも動くゲームを作るためのベタープラクティスどこでも動くゲームを作るためのベタープラクティス
どこでも動くゲームを作るためのベタープラクティス
 
Xbyakの紹介とその周辺
Xbyakの紹介とその周辺Xbyakの紹介とその周辺
Xbyakの紹介とその周辺
 
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
 
PyOpenCLによるGPGPU入門
PyOpenCLによるGPGPU入門PyOpenCLによるGPGPU入門
PyOpenCLによるGPGPU入門
 
JTF2020 クロスコンパイルだけが能ではない組み込みLinuxシステムのCI/CDインフラ構築
JTF2020 クロスコンパイルだけが能ではない組み込みLinuxシステムのCI/CDインフラ構築JTF2020 クロスコンパイルだけが能ではない組み込みLinuxシステムのCI/CDインフラ構築
JTF2020 クロスコンパイルだけが能ではない組み込みLinuxシステムのCI/CDインフラ構築
 
Glfw3,OpenGL,GUI
Glfw3,OpenGL,GUI Glfw3,OpenGL,GUI
Glfw3,OpenGL,GUI
 
スタート低レイヤー #0
スタート低レイヤー #0スタート低レイヤー #0
スタート低レイヤー #0
 
CMSI計算科学技術特論B(14) OpenACC・CUDAによるGPUコンピューティング
CMSI計算科学技術特論B(14) OpenACC・CUDAによるGPUコンピューティングCMSI計算科学技術特論B(14) OpenACC・CUDAによるGPUコンピューティング
CMSI計算科学技術特論B(14) OpenACC・CUDAによるGPUコンピューティング
 
Kibanaでsysstatを可視化する
Kibanaでsysstatを可視化するKibanaでsysstatを可視化する
Kibanaでsysstatを可視化する
 
ふつうのLinuxプログラミング
ふつうのLinuxプログラミングふつうのLinuxプログラミング
ふつうのLinuxプログラミング
 
ロボットシステム学2015年第7回
ロボットシステム学2015年第7回ロボットシステム学2015年第7回
ロボットシステム学2015年第7回
 
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
 

More from yaegashi

Terraforming Windows Virtual Desktop Infrastructure on Azure
Terraforming Windows Virtual Desktop Infrastructure on AzureTerraforming Windows Virtual Desktop Infrastructure on Azure
Terraforming Windows Virtual Desktop Infrastructure on Azure
yaegashi
 
Azure DevOps で実現する Unity アプリのハイパフォーマンス CI/CD
Azure DevOps で実現する Unity アプリのハイパフォーマンス CI/CDAzure DevOps で実現する Unity アプリのハイパフォーマンス CI/CD
Azure DevOps で実現する Unity アプリのハイパフォーマンス CI/CD
yaegashi
 
Customazed CLI: カスタムVMイメージ作成支援ツール
Customazed CLI: カスタムVMイメージ作成支援ツールCustomazed CLI: カスタムVMイメージ作成支援ツール
Customazed CLI: カスタムVMイメージ作成支援ツール
yaegashi
 
Goで作って配布するAzureコマンドラインユーティリティ
Goで作って配布するAzureコマンドラインユーティリティGoで作って配布するAzureコマンドラインユーティリティ
Goで作って配布するAzureコマンドラインユーティリティ
yaegashi
 
msgraph: Terraform provider for Microsoft Graph
msgraph: Terraform provider for Microsoft Graphmsgraph: Terraform provider for Microsoft Graph
msgraph: Terraform provider for Microsoft Graph
yaegashi
 
go generate 完全入門
go generate 完全入門go generate 完全入門
go generate 完全入門
yaegashi
 
msgraph.go: Go言語で Microsoft Graph プログラミング
msgraph.go: Go言語で Microsoft Graph プログラミングmsgraph.go: Go言語で Microsoft Graph プログラミング
msgraph.go: Go言語で Microsoft Graph プログラミング
yaegashi
 
AnsibleでAzureの インフラを管理する話 + α
AnsibleでAzureの インフラを管理する話 + αAnsibleでAzureの インフラを管理する話 + α
AnsibleでAzureの インフラを管理する話 + α
yaegashi
 
msgraph-sshpubkey
msgraph-sshpubkeymsgraph-sshpubkey
msgraph-sshpubkey
yaegashi
 
Microsoft Graph API Library for Go
Microsoft Graph API Library for GoMicrosoft Graph API Library for Go
Microsoft Graph API Library for Go
yaegashi
 
Raspberry Pi + Go で IoT した話
Raspberry Pi + Go で IoT した話Raspberry Pi + Go で IoT した話
Raspberry Pi + Go で IoT した話
yaegashi
 
golang binary hacks
golang binary hacksgolang binary hacks
golang binary hacks
yaegashi
 
Ansible モジュール 作成・配布・貢献
Ansible モジュール 作成・配布・貢献Ansible モジュール 作成・配布・貢献
Ansible モジュール 作成・配布・貢献
yaegashi
 

More from yaegashi (13)

Terraforming Windows Virtual Desktop Infrastructure on Azure
Terraforming Windows Virtual Desktop Infrastructure on AzureTerraforming Windows Virtual Desktop Infrastructure on Azure
Terraforming Windows Virtual Desktop Infrastructure on Azure
 
Azure DevOps で実現する Unity アプリのハイパフォーマンス CI/CD
Azure DevOps で実現する Unity アプリのハイパフォーマンス CI/CDAzure DevOps で実現する Unity アプリのハイパフォーマンス CI/CD
Azure DevOps で実現する Unity アプリのハイパフォーマンス CI/CD
 
Customazed CLI: カスタムVMイメージ作成支援ツール
Customazed CLI: カスタムVMイメージ作成支援ツールCustomazed CLI: カスタムVMイメージ作成支援ツール
Customazed CLI: カスタムVMイメージ作成支援ツール
 
Goで作って配布するAzureコマンドラインユーティリティ
Goで作って配布するAzureコマンドラインユーティリティGoで作って配布するAzureコマンドラインユーティリティ
Goで作って配布するAzureコマンドラインユーティリティ
 
msgraph: Terraform provider for Microsoft Graph
msgraph: Terraform provider for Microsoft Graphmsgraph: Terraform provider for Microsoft Graph
msgraph: Terraform provider for Microsoft Graph
 
go generate 完全入門
go generate 完全入門go generate 完全入門
go generate 完全入門
 
msgraph.go: Go言語で Microsoft Graph プログラミング
msgraph.go: Go言語で Microsoft Graph プログラミングmsgraph.go: Go言語で Microsoft Graph プログラミング
msgraph.go: Go言語で Microsoft Graph プログラミング
 
AnsibleでAzureの インフラを管理する話 + α
AnsibleでAzureの インフラを管理する話 + αAnsibleでAzureの インフラを管理する話 + α
AnsibleでAzureの インフラを管理する話 + α
 
msgraph-sshpubkey
msgraph-sshpubkeymsgraph-sshpubkey
msgraph-sshpubkey
 
Microsoft Graph API Library for Go
Microsoft Graph API Library for GoMicrosoft Graph API Library for Go
Microsoft Graph API Library for Go
 
Raspberry Pi + Go で IoT した話
Raspberry Pi + Go で IoT した話Raspberry Pi + Go で IoT した話
Raspberry Pi + Go で IoT した話
 
golang binary hacks
golang binary hacksgolang binary hacks
golang binary hacks
 
Ansible モジュール 作成・配布・貢献
Ansible モジュール 作成・配布・貢献Ansible モジュール 作成・配布・貢献
Ansible モジュール 作成・配布・貢献
 

Recently uploaded

RaySheet Product Description Documentation - 2024.6.19
RaySheet Product Description Documentation - 2024.6.19RaySheet Product Description Documentation - 2024.6.19
RaySheet Product Description Documentation - 2024.6.19
GrapeCity, inc.
 
Bhyve Management Daemon Version 3.0 on FreBSD
Bhyve Management Daemon Version 3.0 on FreBSDBhyve Management Daemon Version 3.0 on FreBSD
Bhyve Management Daemon Version 3.0 on FreBSD
Yuichiro Naito
 
シグネチャで始めるRustプログラミング - Superteam Japan Developer Event
シグネチャで始めるRustプログラミング - Superteam Japan Developer Eventシグネチャで始めるRustプログラミング - Superteam Japan Developer Event
シグネチャで始めるRustプログラミング - Superteam Japan Developer Event
K Kinzal
 
Solanaで始めるRustプログラミング - Superteam Japan Developer Event
Solanaで始めるRustプログラミング - Superteam Japan Developer EventSolanaで始めるRustプログラミング - Superteam Japan Developer Event
Solanaで始めるRustプログラミング - Superteam Japan Developer Event
K Kinzal
 
RayPen Product Description Documentation - 2024.6.19
RayPen Product Description Documentation - 2024.6.19RayPen Product Description Documentation - 2024.6.19
RayPen Product Description Documentation - 2024.6.19
GrapeCity, inc.
 
クラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdf
クラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdfクラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdf
クラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdf
TatsuyaHanayama
 
RayBarcode Product Description Documentation - 2024.6.19
RayBarcode Product Description Documentation - 2024.6.19RayBarcode Product Description Documentation - 2024.6.19
RayBarcode Product Description Documentation - 2024.6.19
GrapeCity, inc.
 
RaySheetで解決できるシナリオ10選-業務改善に貢献する機能 - RaySheet Documentation
RaySheetで解決できるシナリオ10選-業務改善に貢献する機能 - RaySheet DocumentationRaySheetで解決できるシナリオ10選-業務改善に貢献する機能 - RaySheet Documentation
RaySheetで解決できるシナリオ10選-業務改善に貢献する機能 - RaySheet Documentation
GrapeCity, inc.
 
GPT - 振り返りフレームワークKPTをちょっとKAIZENしてちょうど良いフレームワークに。
GPT - 振り返りフレームワークKPTをちょっとKAIZENしてちょうど良いフレームワークに。GPT - 振り返りフレームワークKPTをちょっとKAIZENしてちょうど良いフレームワークに。
GPT - 振り返りフレームワークKPTをちょっとKAIZENしてちょうど良いフレームワークに。
Hibiki Mizuno
 

Recently uploaded (9)

RaySheet Product Description Documentation - 2024.6.19
RaySheet Product Description Documentation - 2024.6.19RaySheet Product Description Documentation - 2024.6.19
RaySheet Product Description Documentation - 2024.6.19
 
Bhyve Management Daemon Version 3.0 on FreBSD
Bhyve Management Daemon Version 3.0 on FreBSDBhyve Management Daemon Version 3.0 on FreBSD
Bhyve Management Daemon Version 3.0 on FreBSD
 
シグネチャで始めるRustプログラミング - Superteam Japan Developer Event
シグネチャで始めるRustプログラミング - Superteam Japan Developer Eventシグネチャで始めるRustプログラミング - Superteam Japan Developer Event
シグネチャで始めるRustプログラミング - Superteam Japan Developer Event
 
Solanaで始めるRustプログラミング - Superteam Japan Developer Event
Solanaで始めるRustプログラミング - Superteam Japan Developer EventSolanaで始めるRustプログラミング - Superteam Japan Developer Event
Solanaで始めるRustプログラミング - Superteam Japan Developer Event
 
RayPen Product Description Documentation - 2024.6.19
RayPen Product Description Documentation - 2024.6.19RayPen Product Description Documentation - 2024.6.19
RayPen Product Description Documentation - 2024.6.19
 
クラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdf
クラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdfクラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdf
クラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdf
 
RayBarcode Product Description Documentation - 2024.6.19
RayBarcode Product Description Documentation - 2024.6.19RayBarcode Product Description Documentation - 2024.6.19
RayBarcode Product Description Documentation - 2024.6.19
 
RaySheetで解決できるシナリオ10選-業務改善に貢献する機能 - RaySheet Documentation
RaySheetで解決できるシナリオ10選-業務改善に貢献する機能 - RaySheet DocumentationRaySheetで解決できるシナリオ10選-業務改善に貢献する機能 - RaySheet Documentation
RaySheetで解決できるシナリオ10選-業務改善に貢献する機能 - RaySheet Documentation
 
GPT - 振り返りフレームワークKPTをちょっとKAIZENしてちょうど良いフレームワークに。
GPT - 振り返りフレームワークKPTをちょっとKAIZENしてちょうど良いフレームワークに。GPT - 振り返りフレームワークKPTをちょっとKAIZENしてちょうど良いフレームワークに。
GPT - 振り返りフレームワークKPTをちょっとKAIZENしてちょうど良いフレームワークに。
 

StackExchangeで見たシステムプログラミング案件