SlideShare ist ein Scribd-Unternehmen logo
1 von 33
Downloaden Sie, um offline zu lesen
タイマー
@uchan_nos
第14回 自作OSもくもく会
2019/01/20
時間計測の必要性
• 時計表示
• タスク切り替え
• sleep関数の実装
• 時間計測はOSを構成する基礎技術の1つ
パソコン用タイマーの種類
• PIT
• RTC
• HPET
• ACPI PM Timer
• Local APIC Timer
• TSC
PIT
• PIT: Programmable Interval Timer
• Programmable = 周期などを設定できる
• Interval = 間隔
• 「30日でできる!OS自作入門」でおなじみ
• 一定周期ごとに割り込みを発生させる
• ビープ音を鳴らす
• レガシーデバイス
RTC
• RTC: Real Time Clock
• 日時(年月日,時分秒)を扱う時計
• バッテリバックアップされている唯一のタイマー
• レガシーデバイス
HPET
• HPET: High Precision Event Timer
• High Precision = 高精度
• Event = ?(特に意味はないと思う)
• 分解能が100nsより優れていることが保証されている
• = 周波数が10MHz以上
• 割り込みを発生させられる
• レガシーデバイス(後述)
ACPI PM Timer
• PM: Power Management
• Power Management = 電源管理
• ACPI規格で定められているタイマー
• もともとはスリープ状態の時間を測るため,らしい
• でも,汎用的に使える
Local APIC Timer
• Local APIC規格で定められたタイマー
• Local = CPUコア内
• APIC = Advanced Programmable Interrupt Controller
• 各CPUコア内に存在する
→ 使用時オーバーヘッドが小さい
• 割り込みを発生させられる
TSC
• TSC: Time Stamp Counter
• 各CPUコア内に存在する
• CPUの動作クロックを数えるカウンタ
• CPUが省電力状態になっても周波数が変わらないもの
→ Invariant TSC
タイマーまとめ
名前 周波数 割り込み レガシー
PIT 1.193182MHz 可 レガシー
RTC 32.768KHz 可 レガシー
HPET 機種依存,レジスタから取得可 可 レガシー
ACPI PM Timer 3.579545MHz 不可
Local APIC Timer 機種依存,取得不可 可
TSC 機種依存,取得不可 不可
Invariant TSC 機種依存,レジスタから取得可 不可
レガシーデバイス
• Legacy = 遺産
• 現代におけるレガシーデバイスの定義(筆者独自の定義)
• 存在をシステマチックに確かめる術がないもの
• レジスタにアクセスしてみないとデバイスの有無が分からない
• 電源管理できないもの
• 省電力モードでも常に動き続ける
• この定義で行けばHPETはレガシーではないが…
HPETはレガシーデバイスか
• “N-series Intel Pentium Processors and Intel Celeron
Processors Datasheet - Volume 1 of 3”, Feb. 2016
• によれば,NシリーズのPentiumおよびCeleronでは
HPETはPCU-iLB内に存在
• PCU = Platform Controller Unit
• iLB = The Intel Legacy Block
• iLBは8259 PIC, I/O-APIC, 8254 PIT, HPET, RTCを含む
• → HPETはレガシーデバイスの仲間!
XSDTを確認してみる
• XSDT = ACPIのルートテーブル
• NシリーズCerelon搭載パソコン
• CPU: Celeron N3050
• PC名: Shuttle XS36V5
• 確かにHPETがXSDTに無い!
• ちなみにQEMUでは
FACP, APIC, HPET, BGRT が見える
筆者おすすめの組み合わせ
• 初期計時:ACPI PM Timer
• 普段使い:Local APIC Timer
• ACPI PM Timerは規格ではオプショナルだが事実上標準ぽい
• https://japan.zdnet.com/article/20365868/
• 「ACPI対応のマザーボードであれば、このタイマーが提供される。」
• Local APIC TimerはIntel SDMに載っている標準デバイス
初期計時のためのタイマー選定 1/2
• 最初から動作周波数が分かっているタイマーを使って
Local APIC Timerの周波数を測りたい
• 動作周波数が既知のタイマー
• PIT
• RTC
• HPET
• ACPI PM Timer
• Invariant TSC
• なるべく分解能が優れ,レガシーでないタイマーを選びたい
初期計時のためのタイマー選定 2/2
• レガシーでない,周波数が既知のタイマー
• ACPI PM Timer
• Invariant TSC
• Invariant TSCはレジスタから周波数を取得できるが,
BIOSの設定によってはズレることがある
• Bus Clockを変更するとズレる
• CPUによってはTSCがInvariantではない
• ということで,ACPI PM Timerを選ぶのをおすすめする
普段使いのためのタイマー選定
• 割り込みに対応したタイマーの中で,
動作オーバーヘッドが小さいものを使いたい
• 割り込みに対応したタイマー
• PIT
• RTC
• HPET
• Local APIC Timer
• この中でレガシーでないのはLocal APIC Timerのみ
• 動作オーバーヘッドが最も小さいのもLocal APIC Timer
タイマーの接続図
CPUコア
Local APIC Timer
Platform Controller Hub
ACPI PM Timer
バス
• Local APIC Timer, TSC
• CPUコア内に実装されている
• PIT, RTC, HPET, ACPI PM Timer
• CPU外に実装されている
• アーキテクチャ依存の場所
• Intel 5シリーズ以降はPCH内
TSC
RTCPIT HPET
ACPI PM Timerの使い方
UEFIで起動してからタイマーで時間を測るまでの道のり
大まかな流れ
• ACPIのXSDTを得る
• XSDTからFADTを探す
• FADTのPM_TMR_BLKレジスタを読む
• TMR_VALレジスタを読む
XSDTを得る
• ACPIのXSDTを取得する
• UEFI環境での方法は大神さんの同人誌が参考になる
• 『フルスクラッチで作る!x86_64自作OS パート2』
http://yuma.ohgami.jp/x86_64-Jisaku-OS-2/01_acpi.html
• ざっくり言うと
• EFI_SYSTEM_TABLE
• → EFI_CONFIGURATION_TABLE
• → RSDP
• → XSDT
XSDTからFADTを探す
• FADTのシグネチャは”FACP”
• テーブル名とシグネチャが異なるので注意!
• XSDTは64ビットアドレスの配列
• 順にアドレスが指す先を読んでFADTを探す
ACPI Specification, Version 6.2 Errata Aより
Sig = “FACP”である
ディスクリプタを探す
FADTのPM_TMR_BLKレジスタを読む
• FADTの位置が分かればPM_TMR_BLKレジスタを読める
• PM_TMR_BLKはFADT先頭から76バイト目
ACPI Specification, Version 6.2 Errata Aより
TMR_VALレジスタを読む
• PM_TMR_BLKはACPI PM Timer関連の
レジスタブロックを指すアドレス
• PM_TMR_BLKの説明に“System port address”とある
• メモリアドレスではなくI/Oポートのアドレスである
• movではなく,in命令で読む
• uint32_t pm_tmr_blk = *(uint32_t*)(fadt_addr + 76);
• uint32_t tmr_val = io_in32(pm_tmr_blk);
TMR_VALレジスタ
• 3.579545MHzでカウントアップし続ける
• 24ビットで1周 = 約4.69秒で1周
• 時間を測るにはこんな風にする(1秒測る例)
• uint32_t initial_val = io_in32(pm_tmr_blk);
• uint32_t target_val = initial_val + 3579545;
• While (io_in32(pm_tmr_blk) < target_val);
target_valが
24ビット以上に
ならないように
注意
Local APIC Timerの使い方
LVT Timerレジスタを設定
• LVT Timerレジスタ = FEE0 0320H
• ビット18:17でモードを設定
• 00b: One-shotモード
• 01b: Periodicモード
• 10b: TSC-deadlineモード
• 他のビットは割り込み関係の設定.
• ビット16を1にしておくと割り込みが発生しない.
Initial Countレジスタを設定
• Initial Countレジスタ = FEE0 0380H
• 0より大きな値を書くとタイマーの動作開始
• One-shotモード
• 値がCurrent Countレジスタにコピーされ,
Current Countレジスタがカウントダウンされる
• Periodicモード
• Current Countレジスタが0になると割り込み発生後,
Initial Countレジスタから値が再設定される
• 詳しくはIntel SDM Vol.3, “10.5.4 APIC Timer”
Periodicモード
Initial Countレジスタ
に値Nを書き込む
Current Countレジスタの値
0
N
時刻
割り込み 割り込み
補足: レジスタアドレスの謎
• Local APIC Timer関連のレジスタはアドレス固定
• Initial Countレジスタ = FEE0 0380H
• LVT Timerレジスタ = FEE0 0320H
• しかし,Local APIC Timerは各コア毎に存在するはず
• 同じアドレスなのに,なぜ区別できるのだろうか
CPUコア1
Initial Count
メモリバス
FEE0 0320
DDR SDRAM
EAX
mov [eax], ebx
LVT Timer
アドレスデコーダ
0003 0000EBX
FEE0 0000H
- FEE0 0400H
CPUコアN
Local APICレジスタへのアクセスは
CPUコア内部で完結する
→同じアドレスでも競合しない

Weitere ähnliche Inhalte

Was ist angesagt?

あるコンテキストスイッチの話
あるコンテキストスイッチの話あるコンテキストスイッチの話
あるコンテキストスイッチの話nullnilaki
 
OCIランタイムの筆頭「runc」を俯瞰する
OCIランタイムの筆頭「runc」を俯瞰するOCIランタイムの筆頭「runc」を俯瞰する
OCIランタイムの筆頭「runc」を俯瞰するKohei Tokunaga
 
はりぼて OS で ELF なアプリを起動してみた
はりぼて OS で ELF なアプリを起動してみたはりぼて OS で ELF なアプリを起動してみた
はりぼて OS で ELF なアプリを起動してみたuchan_nos
 
ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門Hirotaka Kawata
 
UEFIベアメタルプログラミング
UEFIベアメタルプログラミングUEFIベアメタルプログラミング
UEFIベアメタルプログラミングYuma Ohgami
 
BoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうかBoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうかYuki Miyatake
 
【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮
【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮
【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮Hibino Hisashi
 
PHPとシグナル、その裏側
PHPとシグナル、その裏側PHPとシグナル、その裏側
PHPとシグナル、その裏側do_aki
 
第11回ACRiウェビナー_東工大/坂本先生ご講演資料
第11回ACRiウェビナー_東工大/坂本先生ご講演資料第11回ACRiウェビナー_東工大/坂本先生ご講演資料
第11回ACRiウェビナー_東工大/坂本先生ご講演資料直久 住川
 
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
PHP-FPM の子プロセス制御方法と設定をおさらいしようPHP-FPM の子プロセス制御方法と設定をおさらいしよう
PHP-FPM の子プロセス制御方法と設定をおさらいしようShohei Okada
 
Zynq mp勉強会資料
Zynq mp勉強会資料Zynq mp勉強会資料
Zynq mp勉強会資料一路 川染
 
Visual C++で使えるC++11
Visual C++で使えるC++11Visual C++で使えるC++11
Visual C++で使えるC++11nekko1119
 
Concurrent Mark-Sweep Garbage Collection #jjug_ccc
Concurrent Mark-Sweep Garbage Collection #jjug_cccConcurrent Mark-Sweep Garbage Collection #jjug_ccc
Concurrent Mark-Sweep Garbage Collection #jjug_cccYuji Kubota
 
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Etsuji Nakai
 

Was ist angesagt? (20)

Glibc malloc internal
Glibc malloc internalGlibc malloc internal
Glibc malloc internal
 
あるコンテキストスイッチの話
あるコンテキストスイッチの話あるコンテキストスイッチの話
あるコンテキストスイッチの話
 
Linux Namespaces
Linux NamespacesLinux Namespaces
Linux Namespaces
 
OCIランタイムの筆頭「runc」を俯瞰する
OCIランタイムの筆頭「runc」を俯瞰するOCIランタイムの筆頭「runc」を俯瞰する
OCIランタイムの筆頭「runc」を俯瞰する
 
はりぼて OS で ELF なアプリを起動してみた
はりぼて OS で ELF なアプリを起動してみたはりぼて OS で ELF なアプリを起動してみた
はりぼて OS で ELF なアプリを起動してみた
 
ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門
 
Ext4 filesystem(1)
Ext4 filesystem(1)Ext4 filesystem(1)
Ext4 filesystem(1)
 
UEFIベアメタルプログラミング
UEFIベアメタルプログラミングUEFIベアメタルプログラミング
UEFIベアメタルプログラミング
 
BoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうかBoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうか
 
【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮
【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮
【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮
 
PHPとシグナル、その裏側
PHPとシグナル、その裏側PHPとシグナル、その裏側
PHPとシグナル、その裏側
 
第11回ACRiウェビナー_東工大/坂本先生ご講演資料
第11回ACRiウェビナー_東工大/坂本先生ご講演資料第11回ACRiウェビナー_東工大/坂本先生ご講演資料
第11回ACRiウェビナー_東工大/坂本先生ご講演資料
 
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
PHP-FPM の子プロセス制御方法と設定をおさらいしようPHP-FPM の子プロセス制御方法と設定をおさらいしよう
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
 
レシピの作り方入門
レシピの作り方入門レシピの作り方入門
レシピの作り方入門
 
Zynq mp勉強会資料
Zynq mp勉強会資料Zynq mp勉強会資料
Zynq mp勉強会資料
 
initramfsについて
initramfsについてinitramfsについて
initramfsについて
 
Visual C++で使えるC++11
Visual C++で使えるC++11Visual C++で使えるC++11
Visual C++で使えるC++11
 
ゼロからはじめるKVM超入門
ゼロからはじめるKVM超入門ゼロからはじめるKVM超入門
ゼロからはじめるKVM超入門
 
Concurrent Mark-Sweep Garbage Collection #jjug_ccc
Concurrent Mark-Sweep Garbage Collection #jjug_cccConcurrent Mark-Sweep Garbage Collection #jjug_ccc
Concurrent Mark-Sweep Garbage Collection #jjug_ccc
 
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
 

Ähnlich wie Timers

04 後期勉強会一年の部【小野寺】
04 後期勉強会一年の部【小野寺】04 後期勉強会一年の部【小野寺】
04 後期勉強会一年の部【小野寺】yu-Linux
 
Craft CMSに最適なサーバはどんな環境?
Craft CMSに最適なサーバはどんな環境?Craft CMSに最適なサーバはどんな環境?
Craft CMSに最適なサーバはどんな環境?Kei Mikage
 
NSG フローログを支える技術 - NVF Advanced Flow Logging
NSG フローログを支える技術 - NVF Advanced Flow LoggingNSG フローログを支える技術 - NVF Advanced Flow Logging
NSG フローログを支える技術 - NVF Advanced Flow Logging順也 山口
 
130711 01
130711 01130711 01
130711 01openrtm
 
Linuxの2038年問題を調べてみた
Linuxの2038年問題を調べてみたLinuxの2038年問題を調べてみた
Linuxの2038年問題を調べてみたwata2ki
 
20200709 fjt7tdmi-blog-appendix
20200709 fjt7tdmi-blog-appendix20200709 fjt7tdmi-blog-appendix
20200709 fjt7tdmi-blog-appendixAkifumi Fujita
 

Ähnlich wie Timers (9)

04 後期勉強会一年の部【小野寺】
04 後期勉強会一年の部【小野寺】04 後期勉強会一年の部【小野寺】
04 後期勉強会一年の部【小野寺】
 
Clock / Timer
Clock / TimerClock / Timer
Clock / Timer
 
Craft CMSに最適なサーバはどんな環境?
Craft CMSに最適なサーバはどんな環境?Craft CMSに最適なサーバはどんな環境?
Craft CMSに最適なサーバはどんな環境?
 
NSG フローログを支える技術 - NVF Advanced Flow Logging
NSG フローログを支える技術 - NVF Advanced Flow LoggingNSG フローログを支える技術 - NVF Advanced Flow Logging
NSG フローログを支える技術 - NVF Advanced Flow Logging
 
130711 01
130711 01130711 01
130711 01
 
Interrupts on xv6
Interrupts on xv6Interrupts on xv6
Interrupts on xv6
 
Linuxの2038年問題を調べてみた
Linuxの2038年問題を調べてみたLinuxの2038年問題を調べてみた
Linuxの2038年問題を調べてみた
 
20200709 fjt7tdmi-blog-appendix
20200709 fjt7tdmi-blog-appendix20200709 fjt7tdmi-blog-appendix
20200709 fjt7tdmi-blog-appendix
 
2016-ShowNet-PTP (Precision Time Protocol)
2016-ShowNet-PTP (Precision Time Protocol)2016-ShowNet-PTP (Precision Time Protocol)
2016-ShowNet-PTP (Precision Time Protocol)
 

Mehr von uchan_nos

MikanOSと自作CPUをUSBで接続する
MikanOSと自作CPUをUSBで接続するMikanOSと自作CPUをUSBで接続する
MikanOSと自作CPUをUSBで接続するuchan_nos
 
OSを手作りするという趣味と仕事
OSを手作りするという趣味と仕事OSを手作りするという趣味と仕事
OSを手作りするという趣味と仕事uchan_nos
 
小型安価なFPGAボードの紹介と任意波形発生器
小型安価なFPGAボードの紹介と任意波形発生器小型安価なFPGAボードの紹介と任意波形発生器
小型安価なFPGAボードの紹介と任意波形発生器uchan_nos
 
トランジスタ回路:エミッタ接地増幅回路
トランジスタ回路:エミッタ接地増幅回路トランジスタ回路:エミッタ接地増幅回路
トランジスタ回路:エミッタ接地増幅回路uchan_nos
 
OpeLa: セルフホストなOSと言語処理系を作るプロジェクト
OpeLa: セルフホストなOSと言語処理系を作るプロジェクトOpeLa: セルフホストなOSと言語処理系を作るプロジェクト
OpeLa: セルフホストなOSと言語処理系を作るプロジェクトuchan_nos
 
自作言語でお絵描き
自作言語でお絵描き自作言語でお絵描き
自作言語でお絵描きuchan_nos
 
OpeLa 進捗報告 at 第23回自作OSもくもく会
OpeLa 進捗報告 at 第23回自作OSもくもく会OpeLa 進捗報告 at 第23回自作OSもくもく会
OpeLa 進捗報告 at 第23回自作OSもくもく会uchan_nos
 
サイボウズ・ラボへ転籍して1年を振り返る
サイボウズ・ラボへ転籍して1年を振り返るサイボウズ・ラボへ転籍して1年を振り返る
サイボウズ・ラボへ転籍して1年を振り返るuchan_nos
 
USB3.0ドライバ開発の道
USB3.0ドライバ開発の道USB3.0ドライバ開発の道
USB3.0ドライバ開発の道uchan_nos
 
Security Nextcamp remote mob programming
Security Nextcamp remote mob programmingSecurity Nextcamp remote mob programming
Security Nextcamp remote mob programminguchan_nos
 
Langsmith OpeLa handmade self-hosted OS and LPS
Langsmith OpeLa handmade self-hosted OS and LPSLangsmith OpeLa handmade self-hosted OS and LPS
Langsmith OpeLa handmade self-hosted OS and LPSuchan_nos
 
OpeLa セルフホストなOSと言語処理系の自作
OpeLa セルフホストなOSと言語処理系の自作OpeLa セルフホストなOSと言語処理系の自作
OpeLa セルフホストなOSと言語処理系の自作uchan_nos
 
自動でバグを見つける!プログラム解析と動的バイナリ計装
自動でバグを見つける!プログラム解析と動的バイナリ計装自動でバグを見つける!プログラム解析と動的バイナリ計装
自動でバグを見つける!プログラム解析と動的バイナリ計装uchan_nos
 
1を書いても0が読める!?隠れた重要命令INVLPG
1を書いても0が読める!?隠れた重要命令INVLPG1を書いても0が読める!?隠れた重要命令INVLPG
1を書いても0が読める!?隠れた重要命令INVLPGuchan_nos
 
レガシーフリーOSに必要な要素技術 legacy free os
レガシーフリーOSに必要な要素技術 legacy free osレガシーフリーOSに必要な要素技術 legacy free os
レガシーフリーOSに必要な要素技術 legacy free osuchan_nos
 
Building libc++ for toy OS
Building libc++ for toy OSBuilding libc++ for toy OS
Building libc++ for toy OSuchan_nos
 
プランクトンサミットの歴史2019
プランクトンサミットの歴史2019プランクトンサミットの歴史2019
プランクトンサミットの歴史2019uchan_nos
 
Introduction of security camp 2019
Introduction of security camp 2019Introduction of security camp 2019
Introduction of security camp 2019uchan_nos
 
USB3 host driver program structure
USB3 host driver program structureUSB3 host driver program structure
USB3 host driver program structureuchan_nos
 
業務時間で書いたパッチは誰のもの?OSS活動にまつわる罠 (builderscon tokyo 2018)
業務時間で書いたパッチは誰のもの?OSS活動にまつわる罠 (builderscon tokyo 2018)業務時間で書いたパッチは誰のもの?OSS活動にまつわる罠 (builderscon tokyo 2018)
業務時間で書いたパッチは誰のもの?OSS活動にまつわる罠 (builderscon tokyo 2018)uchan_nos
 

Mehr von uchan_nos (20)

MikanOSと自作CPUをUSBで接続する
MikanOSと自作CPUをUSBで接続するMikanOSと自作CPUをUSBで接続する
MikanOSと自作CPUをUSBで接続する
 
OSを手作りするという趣味と仕事
OSを手作りするという趣味と仕事OSを手作りするという趣味と仕事
OSを手作りするという趣味と仕事
 
小型安価なFPGAボードの紹介と任意波形発生器
小型安価なFPGAボードの紹介と任意波形発生器小型安価なFPGAボードの紹介と任意波形発生器
小型安価なFPGAボードの紹介と任意波形発生器
 
トランジスタ回路:エミッタ接地増幅回路
トランジスタ回路:エミッタ接地増幅回路トランジスタ回路:エミッタ接地増幅回路
トランジスタ回路:エミッタ接地増幅回路
 
OpeLa: セルフホストなOSと言語処理系を作るプロジェクト
OpeLa: セルフホストなOSと言語処理系を作るプロジェクトOpeLa: セルフホストなOSと言語処理系を作るプロジェクト
OpeLa: セルフホストなOSと言語処理系を作るプロジェクト
 
自作言語でお絵描き
自作言語でお絵描き自作言語でお絵描き
自作言語でお絵描き
 
OpeLa 進捗報告 at 第23回自作OSもくもく会
OpeLa 進捗報告 at 第23回自作OSもくもく会OpeLa 進捗報告 at 第23回自作OSもくもく会
OpeLa 進捗報告 at 第23回自作OSもくもく会
 
サイボウズ・ラボへ転籍して1年を振り返る
サイボウズ・ラボへ転籍して1年を振り返るサイボウズ・ラボへ転籍して1年を振り返る
サイボウズ・ラボへ転籍して1年を振り返る
 
USB3.0ドライバ開発の道
USB3.0ドライバ開発の道USB3.0ドライバ開発の道
USB3.0ドライバ開発の道
 
Security Nextcamp remote mob programming
Security Nextcamp remote mob programmingSecurity Nextcamp remote mob programming
Security Nextcamp remote mob programming
 
Langsmith OpeLa handmade self-hosted OS and LPS
Langsmith OpeLa handmade self-hosted OS and LPSLangsmith OpeLa handmade self-hosted OS and LPS
Langsmith OpeLa handmade self-hosted OS and LPS
 
OpeLa セルフホストなOSと言語処理系の自作
OpeLa セルフホストなOSと言語処理系の自作OpeLa セルフホストなOSと言語処理系の自作
OpeLa セルフホストなOSと言語処理系の自作
 
自動でバグを見つける!プログラム解析と動的バイナリ計装
自動でバグを見つける!プログラム解析と動的バイナリ計装自動でバグを見つける!プログラム解析と動的バイナリ計装
自動でバグを見つける!プログラム解析と動的バイナリ計装
 
1を書いても0が読める!?隠れた重要命令INVLPG
1を書いても0が読める!?隠れた重要命令INVLPG1を書いても0が読める!?隠れた重要命令INVLPG
1を書いても0が読める!?隠れた重要命令INVLPG
 
レガシーフリーOSに必要な要素技術 legacy free os
レガシーフリーOSに必要な要素技術 legacy free osレガシーフリーOSに必要な要素技術 legacy free os
レガシーフリーOSに必要な要素技術 legacy free os
 
Building libc++ for toy OS
Building libc++ for toy OSBuilding libc++ for toy OS
Building libc++ for toy OS
 
プランクトンサミットの歴史2019
プランクトンサミットの歴史2019プランクトンサミットの歴史2019
プランクトンサミットの歴史2019
 
Introduction of security camp 2019
Introduction of security camp 2019Introduction of security camp 2019
Introduction of security camp 2019
 
USB3 host driver program structure
USB3 host driver program structureUSB3 host driver program structure
USB3 host driver program structure
 
業務時間で書いたパッチは誰のもの?OSS活動にまつわる罠 (builderscon tokyo 2018)
業務時間で書いたパッチは誰のもの?OSS活動にまつわる罠 (builderscon tokyo 2018)業務時間で書いたパッチは誰のもの?OSS活動にまつわる罠 (builderscon tokyo 2018)
業務時間で書いたパッチは誰のもの?OSS活動にまつわる罠 (builderscon tokyo 2018)
 

Timers