Suche senden
Hochladen
Understanding Linux Kernel 輪読会 第9回 シグナル
•
Als PPTX, PDF herunterladen
•
2 gefällt mir
•
998 views
Yuito Murase
Folgen
シグナルの実装を追う気がする
Weniger lesen
Mehr lesen
Ingenieurwesen
Melden
Teilen
Melden
Teilen
1 von 16
Jetzt herunterladen
Empfohlen
Tizen2.2へのアップデート手順書 20130913
Tizen2.2へのアップデート手順書 20130913
Keigo Kubo
はてなブックマーク in Scala
はてなブックマーク in Scala
Lintaro Ina
85. contaminación de la basura en mi escuela
85. contaminación de la basura en mi escuela
dec-admin
261. el tráfico y sus repercusiones ambientales
261. el tráfico y sus repercusiones ambientales
dec-admin
Junit in mule
Junit in mule
Sunil Komarapu
Package thermal pathways
Package thermal pathways
Kamal Karimanal
Berry sour surprise
Berry sour surprise
astoeckling
Triz nfs-slide-part3
Triz nfs-slide-part3
NFSTRIZ
Empfohlen
Tizen2.2へのアップデート手順書 20130913
Tizen2.2へのアップデート手順書 20130913
Keigo Kubo
はてなブックマーク in Scala
はてなブックマーク in Scala
Lintaro Ina
85. contaminación de la basura en mi escuela
85. contaminación de la basura en mi escuela
dec-admin
261. el tráfico y sus repercusiones ambientales
261. el tráfico y sus repercusiones ambientales
dec-admin
Junit in mule
Junit in mule
Sunil Komarapu
Package thermal pathways
Package thermal pathways
Kamal Karimanal
Berry sour surprise
Berry sour surprise
astoeckling
Triz nfs-slide-part3
Triz nfs-slide-part3
NFSTRIZ
IS Unit 7_Network Security
IS Unit 7_Network Security
Sarthak Patel
Clini cast datapalooza presentation (1)
Clini cast datapalooza presentation (1)
Jack Challis
174. los infiltrados
174. los infiltrados
dec-admin
351.creando el área de juego
351.creando el área de juego
dec-admin
ตลาดสำคัญในบางกอก กลุ่มที่ 4 ชั้นม.3 3
ตลาดสำคัญในบางกอก กลุ่มที่ 4 ชั้นม.3 3
katnakamol
Chocolate box
Chocolate box
astoeckling
Market vision capabilities for goma - 083112 [final]
Market vision capabilities for goma - 083112 [final]
mvculture
Recommended safer work practices for nursing
Recommended safer work practices for nursing
Hindustan Latex Family Planning Promotion Trust (HLFPPT)
Honores a la bandera
Honores a la bandera
dec-admin
Jardín de niños jean piaget
Jardín de niños jean piaget
dec-admin
Micro Nano Breakthrough - Wylde
Micro Nano Breakthrough - Wylde
jwylde
Math basketball
Math basketball
astoeckling
Mortgage Booklet
Mortgage Booklet
leonpreser
Spinfinityrussian
Spinfinityrussian
Иван Сухочев
Shades[1]
Shades[1]
monica134
Communication ppt Deliotte Project
Communication ppt Deliotte Project
Hindustan Latex Family Planning Promotion Trust (HLFPPT)
162. diseña el cambio vicente guerrero
162. diseña el cambio vicente guerrero
dec-admin
урок №5 4 класс
урок №5 4 класс
Dilyara Khalikova
Honores a la bandera
Honores a la bandera
dec-admin
2. maternal healthcare
2. maternal healthcare
Hindustan Latex Family Planning Promotion Trust (HLFPPT)
Weitere ähnliche Inhalte
Andere mochten auch
IS Unit 7_Network Security
IS Unit 7_Network Security
Sarthak Patel
Clini cast datapalooza presentation (1)
Clini cast datapalooza presentation (1)
Jack Challis
174. los infiltrados
174. los infiltrados
dec-admin
351.creando el área de juego
351.creando el área de juego
dec-admin
ตลาดสำคัญในบางกอก กลุ่มที่ 4 ชั้นม.3 3
ตลาดสำคัญในบางกอก กลุ่มที่ 4 ชั้นม.3 3
katnakamol
Chocolate box
Chocolate box
astoeckling
Market vision capabilities for goma - 083112 [final]
Market vision capabilities for goma - 083112 [final]
mvculture
Recommended safer work practices for nursing
Recommended safer work practices for nursing
Hindustan Latex Family Planning Promotion Trust (HLFPPT)
Honores a la bandera
Honores a la bandera
dec-admin
Jardín de niños jean piaget
Jardín de niños jean piaget
dec-admin
Micro Nano Breakthrough - Wylde
Micro Nano Breakthrough - Wylde
jwylde
Math basketball
Math basketball
astoeckling
Mortgage Booklet
Mortgage Booklet
leonpreser
Spinfinityrussian
Spinfinityrussian
Иван Сухочев
Shades[1]
Shades[1]
monica134
Communication ppt Deliotte Project
Communication ppt Deliotte Project
Hindustan Latex Family Planning Promotion Trust (HLFPPT)
162. diseña el cambio vicente guerrero
162. diseña el cambio vicente guerrero
dec-admin
урок №5 4 класс
урок №5 4 класс
Dilyara Khalikova
Honores a la bandera
Honores a la bandera
dec-admin
2. maternal healthcare
2. maternal healthcare
Hindustan Latex Family Planning Promotion Trust (HLFPPT)
Andere mochten auch
(20)
IS Unit 7_Network Security
IS Unit 7_Network Security
Clini cast datapalooza presentation (1)
Clini cast datapalooza presentation (1)
174. los infiltrados
174. los infiltrados
351.creando el área de juego
351.creando el área de juego
ตลาดสำคัญในบางกอก กลุ่มที่ 4 ชั้นม.3 3
ตลาดสำคัญในบางกอก กลุ่มที่ 4 ชั้นม.3 3
Chocolate box
Chocolate box
Market vision capabilities for goma - 083112 [final]
Market vision capabilities for goma - 083112 [final]
Recommended safer work practices for nursing
Recommended safer work practices for nursing
Honores a la bandera
Honores a la bandera
Jardín de niños jean piaget
Jardín de niños jean piaget
Micro Nano Breakthrough - Wylde
Micro Nano Breakthrough - Wylde
Math basketball
Math basketball
Mortgage Booklet
Mortgage Booklet
Spinfinityrussian
Spinfinityrussian
Shades[1]
Shades[1]
Communication ppt Deliotte Project
Communication ppt Deliotte Project
162. diseña el cambio vicente guerrero
162. diseña el cambio vicente guerrero
урок №5 4 класс
урок №5 4 класс
Honores a la bandera
Honores a la bandera
2. maternal healthcare
2. maternal healthcare
Understanding Linux Kernel 輪読会 第9回 シグナル
1.
LINUX輪読会 第9回 シグナル Y.MURASE
2.
シグナルって何でしたっけ • プロセス間通信の1手段 • kill(2)で他のプロセスに通知したり •
なんかやらかした時にカーネルから通知されたりする • 基本的渡されるのはシグナル番号だけ • 通知されたプロセスはシグナルハンドラを起動して対処する • かデフォルトの動作
3.
歴史的経緯 • Unix v2で追加されたシステムコール •
quit (= SIGQUIT) • intr (= SIGINT) • emit (= SGEMT) • ilgins (= SIGFPE) • ここらへんを整理するためにv4でsignalやらkillが導入 • もともとは異常が起きた時に通知するための仕組みだった • POSIXで汎用に拡張される
4.
一覧 • x86だとシグナルは64個ある • これを見る
http://goo.gl/GhJhrC • (何故アーキテクチャ依存?)
5.
リアルタイムシグナル: 背景 • シグナルは生成と配送の二段階で通知される •
生成: シグナルを相手のプロセスのデータ構造にぶち込む • 配送: 自分の所に来たシグナルを確認して対応する • 従来のシグナルでは生成と配送の回数が一致しないかも • 短い期間にSIGSEGVが二回来るとか • シグナルの配送順序に規定がない
6.
リアルタイムシグナル • → 新たにリアルタイムシグナルを導入 •
生成されたシグナルが配送されることを保証 • 小さいシグナル番号ほど優先度が高い • シグナル番号だけでなくより詳細なsiginfo_t構造体も渡される • シグナル番号はSIGRTMIN...SIGRTMAXの範囲 • どういう意味かはアプリケーション依存 • 従来のシグナルは1...SIGRTMIN-1に割り当て
7.
その他 • 同期/非同期 • 同期:対象はスレッド
(SIGSEGV, SIGILL) • 非同期:対象はスレッドグループ (SIGINT, killによる配送) • どれかが対処する • シグナルハンドラ • シグナルに対処するための関数 • スレッドグループ間で共有 • 特定のシグナル(SIGKILL, SIGSTOP)はデフォルトから変更できない • シグナルマスク • 配送されたらまずいシグナルを保留させる • スレッドが個別に持つ
8.
実装を見てみよう
9.
データ構造 • task_structにある • /include/linux/sched.h:1468
10.
シグナルの生成 • send_signal: /kernel/signal.c:1127 •
リアルタイムでなく既に生成済みなら終了(1045) • SIGSTOP, SIGKILLならビットだけ立てて終了(1053) • キューに追加するための領域を確保(1070) • 成功したらキューに繋いで初期化 • 失敗したら • リアルタイムシグナルは生成の失敗を通知 • 従来のシグナルは「キュー繋げなかったよ」と通知(生成自体は成功扱い) • 最後にビットを立てて終了
11.
シグナルの配送 • do_notify_resume(/arch/x86/kernel/signal.c:739) • プロセスがユーザー空間に復帰する直前に呼び出される(らしい) •
do_signal(699) • get_signal(/kernel/signal.c:2181) • ここでシグナルを取り出す(2251) • デフォルト動作はここで実行されるらしい(2280) • handle_signal(630) • setup_rt_frame(610)でレジスタの退避とスタックフレームの作成 • コンテクストスイッチを生じないので専用の関数を定義しているっぽい • シグナルハンドラはユーザ空間で実行 • シグナルハンドラが終了したらsigreturnで戻ってくる
12.
シグナルまとめ • 段階的に拡張されてきた歴史 • 異常通知 •
従来のシグナル • リアルタイムシグナル • ある程度一貫性があるようなないような • コードは割とわかりやすい
13.
余談 パイプ • みんなパイプ実装したから使い方わかるよね? •
int pipe2(int pipefd[2], int flags) • pipe2が実行されると • 一つのinodeオブジェクト • 二つのファイル • パイプバッファ • read/writeは最終的にここへの操作に行き着く
14.
余談 PLAN9のはなし • Plan9にはシグナルはない(代わりにnote) •
kill関数(not systemcall) • https://goo.gl/ib9jVN • 実際には /proc/[pid]/note に文字列を書き込んでいる • cf: http://goo.gl/IrftTG Plan9 - /sys/man/2/notify • なんかPlan9は色んなものをファイルに抽象化してるんだって
15.
余談 WINDOWSのIPC • https://goo.gl/IOVgy2
InterProcess Communication - MSDN
16.
参考URL • http://goo.gl/jW3Rp0 シグナルの誕生
- Plan9日記 • http://goo.gl/GhJhrC Linuxのシグナルまとめ
Jetzt herunterladen