Submit Search
Upload
Kernel vm study_2_xv6_scheduler_part1_revised
•
4 likes
•
762 views
Toshiaki Nozawa
Follow
カーネルVM勉強会第二回 scheduler 文字化けがあるけどひとまず
Read less
Read more
Technology
Report
Share
Report
Share
1 of 16
Download now
Download to read offline
Recommended
プロセスとコンテキストスイッチ
プロセスとコンテキストスイッチ
Kazuki Onishi
プロセスディスクリプタなどのプロセスのサブシステムとコンテキストスイッチのお話。
ラズパイでデバイスドライバを作ってみた。
ラズパイでデバイスドライバを作ってみた。
Kazuki Onishi
チップセットの概要とデバイスドライバの実装の話。
x86とコンテキストスイッチ
x86とコンテキストスイッチ
Masami Ichikawa
第1回 x86勉強会の発表資料
[Basic 9] 並列処理 / 排他制御
[Basic 9] 並列処理 / 排他制御
Yuto Takei
早稲田大学 高度データ関連人材育成コンソーシアム D-DATa ブロックチェーン エンジニアリング 基礎編 第9回 2018/3/1
Linuxのプロセススケジューラ(Reading the Linux process scheduler)
Linuxのプロセススケジューラ(Reading the Linux process scheduler)
Hiraku Toyooka
NLKB-005
[Basic 8] プロセスとスレッド / 入出力 / シェル
[Basic 8] プロセスとスレッド / 入出力 / シェル
Yuto Takei
早稲田大学 高度データ関連人材育成コンソーシアム D-DATa ブロックチェーン エンジニアリング 基礎編 第8回 2018/2/25
あるコンテキストスイッチの話
あるコンテキストスイッチの話
nullnilaki
2014年7月5日に行われたOSC名古屋、及び2014年7月12日にカーネル/VM探検隊@北陸 1でのスライドです。 楽しさ求めて、もうちょっとはじけちゃえ(ぴょんぴょんと)
OpenFlowをXenServerで試してみよう
OpenFlowをXenServerで試してみよう
Kimihiko Kitase
Recommended
プロセスとコンテキストスイッチ
プロセスとコンテキストスイッチ
Kazuki Onishi
プロセスディスクリプタなどのプロセスのサブシステムとコンテキストスイッチのお話。
ラズパイでデバイスドライバを作ってみた。
ラズパイでデバイスドライバを作ってみた。
Kazuki Onishi
チップセットの概要とデバイスドライバの実装の話。
x86とコンテキストスイッチ
x86とコンテキストスイッチ
Masami Ichikawa
第1回 x86勉強会の発表資料
[Basic 9] 並列処理 / 排他制御
[Basic 9] 並列処理 / 排他制御
Yuto Takei
早稲田大学 高度データ関連人材育成コンソーシアム D-DATa ブロックチェーン エンジニアリング 基礎編 第9回 2018/3/1
Linuxのプロセススケジューラ(Reading the Linux process scheduler)
Linuxのプロセススケジューラ(Reading the Linux process scheduler)
Hiraku Toyooka
NLKB-005
[Basic 8] プロセスとスレッド / 入出力 / シェル
[Basic 8] プロセスとスレッド / 入出力 / シェル
Yuto Takei
早稲田大学 高度データ関連人材育成コンソーシアム D-DATa ブロックチェーン エンジニアリング 基礎編 第8回 2018/2/25
あるコンテキストスイッチの話
あるコンテキストスイッチの話
nullnilaki
2014年7月5日に行われたOSC名古屋、及び2014年7月12日にカーネル/VM探検隊@北陸 1でのスライドです。 楽しさ求めて、もうちょっとはじけちゃえ(ぴょんぴょんと)
OpenFlowをXenServerで試してみよう
OpenFlowをXenServerで試してみよう
Kimihiko Kitase
デバドラを書いてみよう!
デバドラを書いてみよう!
Masami Ichikawa
第4回カーネル/VM探検隊LT
OpenvswitchでVPS
OpenvswitchでVPS
Daisuke Nakajima
2012/4/7のLT資料です。
動的ネットワークパス構築と連携したエッジオーバレイ帯域制御
動的ネットワークパス構築と連携したエッジオーバレイ帯域制御
Ryousei Takano
2013年3月 電子情報通信学会ネットワークシステム研究会
リアルタイムOsのカスタマイズ
リアルタイムOsのカスタマイズ
Kazuhiro Takahashi
RTOSのカスタマイズセミナの資料です。 演習テキストは別途
Lagopus 0.2
Lagopus 0.2
Masaru Oki
OpwnFlow software switch "Lagopus" release 0.2 overview. (In Japanese)
[Basic 7] OS の基本 / 割り込み / システム コール / メモリ管理
[Basic 7] OS の基本 / 割り込み / システム コール / メモリ管理
Yuto Takei
早稲田大学 高度データ関連人材育成コンソーシアム D-DATa ブロックチェーン エンジニアリング 基礎編 第7回 2018/2/25
Linux女子会 - お仕事メリハリ術♪(プロセススケジューラ編)
Linux女子会 - お仕事メリハリ術♪(プロセススケジューラ編)
Yahoo!デベロッパーネットワーク
スケジューラによる効率的なCPU利用を説明します♪
HandlerSocket plugin for MySQL
HandlerSocket plugin for MySQL
akirahiguchi
Memory sanitizer
Memory sanitizer
MITSUNARI Shigeo
Varnish 4.0 Release Party in Tokyo発表資料
Varnish 4.0 Release Party in Tokyo発表資料
Iwana Chan
v4rpの発表資料です Varnish4での変更点とかそんな感じ 元データはこちら https://docs.google.com/presentation/d/19hlLWtkvXLW7ZBcCZjqJRgJP-1JUvfqeRe7-J5cORJM/edit#slide=id.p
MINCS – containers in the shell script
MINCS – containers in the shell script
Masami Hiramatsu
第8回 コンテナ型仮想化の情報交換会@東京のMINCSの発表資料です。シェルスクリプトで実現するコンテナMINCSについて。 https://github.com/mhiramat/mincs
tokyo.vcl発表資料(VarnishCache3.0新機能とVUPの仕方)
tokyo.vcl発表資料(VarnishCache3.0新機能とVUPの仕方)
Iwana Chan
6/18クックパッドで行われたtokyo.vclでの発表資料です
SystemV IPC
SystemV IPC
Masami Ichikawa
Linux SystemV IPC
initとプロセス再起動
initとプロセス再起動
Takashi Takizawa
Varnishのログの眺め方
Varnishのログの眺め方
Iwana Chan
varnishncsa,varnishstat,varnishlogの簡単な解説
Hello, systemd
Hello, systemd
Emma Haruka Iwao
Systemd を使うと何がうれしいのかについて説明しています。
Kernel fcache-bug
Kernel fcache-bug
MITSUNARI Shigeo
how to find a bug in kernel/fs about wrong page cache flush in resizing MD device.
serverspecみんなで集めて(゚Д゚)ウマー?
serverspecみんなで集めて(゚Д゚)ウマー?
Sho Hashimoto
パケットジェネレータipgenから見るnetmap
パケットジェネレータipgenから見るnetmap
furandon_pig
iij/ipgenの紹介とnetmapの概要に関するスライドです。 第35回「ネットワーク パケットを読む会(仮)」の発表資料です。
Gluster fs and_swiftapi_20120429
Gluster fs and_swiftapi_20120429
Etsuji Nakai
【学習メモ#8th】12ステップで作る組込みOS自作入門
【学習メモ#8th】12ステップで作る組込みOS自作入門
sandai
12ステップで作る組込みOS自作入門 http://www.amazon.co.jp/dp/4877832394/ 坂井 弘亮(著) カットシステム
KVM+cgroup
KVM+cgroup
(^-^) togakushi
More Related Content
What's hot
デバドラを書いてみよう!
デバドラを書いてみよう!
Masami Ichikawa
第4回カーネル/VM探検隊LT
OpenvswitchでVPS
OpenvswitchでVPS
Daisuke Nakajima
2012/4/7のLT資料です。
動的ネットワークパス構築と連携したエッジオーバレイ帯域制御
動的ネットワークパス構築と連携したエッジオーバレイ帯域制御
Ryousei Takano
2013年3月 電子情報通信学会ネットワークシステム研究会
リアルタイムOsのカスタマイズ
リアルタイムOsのカスタマイズ
Kazuhiro Takahashi
RTOSのカスタマイズセミナの資料です。 演習テキストは別途
Lagopus 0.2
Lagopus 0.2
Masaru Oki
OpwnFlow software switch "Lagopus" release 0.2 overview. (In Japanese)
[Basic 7] OS の基本 / 割り込み / システム コール / メモリ管理
[Basic 7] OS の基本 / 割り込み / システム コール / メモリ管理
Yuto Takei
早稲田大学 高度データ関連人材育成コンソーシアム D-DATa ブロックチェーン エンジニアリング 基礎編 第7回 2018/2/25
Linux女子会 - お仕事メリハリ術♪(プロセススケジューラ編)
Linux女子会 - お仕事メリハリ術♪(プロセススケジューラ編)
Yahoo!デベロッパーネットワーク
スケジューラによる効率的なCPU利用を説明します♪
HandlerSocket plugin for MySQL
HandlerSocket plugin for MySQL
akirahiguchi
Memory sanitizer
Memory sanitizer
MITSUNARI Shigeo
Varnish 4.0 Release Party in Tokyo発表資料
Varnish 4.0 Release Party in Tokyo発表資料
Iwana Chan
v4rpの発表資料です Varnish4での変更点とかそんな感じ 元データはこちら https://docs.google.com/presentation/d/19hlLWtkvXLW7ZBcCZjqJRgJP-1JUvfqeRe7-J5cORJM/edit#slide=id.p
MINCS – containers in the shell script
MINCS – containers in the shell script
Masami Hiramatsu
第8回 コンテナ型仮想化の情報交換会@東京のMINCSの発表資料です。シェルスクリプトで実現するコンテナMINCSについて。 https://github.com/mhiramat/mincs
tokyo.vcl発表資料(VarnishCache3.0新機能とVUPの仕方)
tokyo.vcl発表資料(VarnishCache3.0新機能とVUPの仕方)
Iwana Chan
6/18クックパッドで行われたtokyo.vclでの発表資料です
SystemV IPC
SystemV IPC
Masami Ichikawa
Linux SystemV IPC
initとプロセス再起動
initとプロセス再起動
Takashi Takizawa
Varnishのログの眺め方
Varnishのログの眺め方
Iwana Chan
varnishncsa,varnishstat,varnishlogの簡単な解説
Hello, systemd
Hello, systemd
Emma Haruka Iwao
Systemd を使うと何がうれしいのかについて説明しています。
Kernel fcache-bug
Kernel fcache-bug
MITSUNARI Shigeo
how to find a bug in kernel/fs about wrong page cache flush in resizing MD device.
serverspecみんなで集めて(゚Д゚)ウマー?
serverspecみんなで集めて(゚Д゚)ウマー?
Sho Hashimoto
パケットジェネレータipgenから見るnetmap
パケットジェネレータipgenから見るnetmap
furandon_pig
iij/ipgenの紹介とnetmapの概要に関するスライドです。 第35回「ネットワーク パケットを読む会(仮)」の発表資料です。
Gluster fs and_swiftapi_20120429
Gluster fs and_swiftapi_20120429
Etsuji Nakai
What's hot
(20)
デバドラを書いてみよう!
デバドラを書いてみよう!
OpenvswitchでVPS
OpenvswitchでVPS
動的ネットワークパス構築と連携したエッジオーバレイ帯域制御
動的ネットワークパス構築と連携したエッジオーバレイ帯域制御
リアルタイムOsのカスタマイズ
リアルタイムOsのカスタマイズ
Lagopus 0.2
Lagopus 0.2
[Basic 7] OS の基本 / 割り込み / システム コール / メモリ管理
[Basic 7] OS の基本 / 割り込み / システム コール / メモリ管理
Linux女子会 - お仕事メリハリ術♪(プロセススケジューラ編)
Linux女子会 - お仕事メリハリ術♪(プロセススケジューラ編)
HandlerSocket plugin for MySQL
HandlerSocket plugin for MySQL
Memory sanitizer
Memory sanitizer
Varnish 4.0 Release Party in Tokyo発表資料
Varnish 4.0 Release Party in Tokyo発表資料
MINCS – containers in the shell script
MINCS – containers in the shell script
tokyo.vcl発表資料(VarnishCache3.0新機能とVUPの仕方)
tokyo.vcl発表資料(VarnishCache3.0新機能とVUPの仕方)
SystemV IPC
SystemV IPC
initとプロセス再起動
initとプロセス再起動
Varnishのログの眺め方
Varnishのログの眺め方
Hello, systemd
Hello, systemd
Kernel fcache-bug
Kernel fcache-bug
serverspecみんなで集めて(゚Д゚)ウマー?
serverspecみんなで集めて(゚Д゚)ウマー?
パケットジェネレータipgenから見るnetmap
パケットジェネレータipgenから見るnetmap
Gluster fs and_swiftapi_20120429
Gluster fs and_swiftapi_20120429
Similar to Kernel vm study_2_xv6_scheduler_part1_revised
【学習メモ#8th】12ステップで作る組込みOS自作入門
【学習メモ#8th】12ステップで作る組込みOS自作入門
sandai
12ステップで作る組込みOS自作入門 http://www.amazon.co.jp/dp/4877832394/ 坂井 弘亮(著) カットシステム
KVM+cgroup
KVM+cgroup
(^-^) togakushi
Openstack+Ceph設定ガイド
Openstack+Ceph設定ガイド
OSSラボ株式会社
Openstack/Icehouseでの、Ceph/Firefly分散ストレージ設定ガイド by オープンクラウド実証実験タスクフォース(OCDET) ストレージ基盤 WG
Lxc cf201207-presen
Lxc cf201207-presen
Kouhei Maeda
再lxcの話
Openresty
Openresty
ogawatti
OpenResty勉強会 初級者向け(公式ドキュメントを読んでいく回)
コンテナ情報交換会2
コンテナ情報交換会2
Masahide Yamamoto
コンテナ情報交換会@東京の発表資料
OpenStackでも重要な役割を果たすPacemakerを知ろう!
OpenStackでも重要な役割を果たすPacemakerを知ろう!
ksk_ha
Pacemaker は OpenStack 基盤の高可用化にも用いられている実例を紹介します。
Dive into RTS - another side
Dive into RTS - another side
Kiwamu Okabe
Project Loom - 限定継続と軽量スレッド -
Project Loom - 限定継続と軽量スレッド -
Yuichi Sakuraba
JJUG CCC 2019 Spring Project Loom - 限定継続と軽量スレッド -
Ubuntuで始めるコンテナ技術入門
Ubuntuで始めるコンテナ技術入門
Takenori Matsumoto
沖縄オープンラボ主催のハンズオンセミナー(2015/02/07)の資料
Ethernetの受信処理
Ethernetの受信処理
Takuya ASADA
Ethernetの受信処理
Apache CloudStack 4.0 インストール(ver0.5)
Apache CloudStack 4.0 インストール(ver0.5)
Yasuhiro Arai
CloudStack Advent Calendar jp: 2012 企画! http://atnd.org/events/34309
Apache cloudstack4.0インストール
Apache cloudstack4.0インストール
Yasuhiro Arai
仮想記憶入門 BSD-4.3を例題に
仮想記憶入門 BSD-4.3を例題に
magoroku Yamamoto
本当にわかる Spectre と Meltdown
本当にわかる Spectre と Meltdown
Hirotaka Kawata
セキュリティ・キャンプ全国大会2018
Boost9 session
Boost9 session
freedom404
第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西
Masahide Yamamoto
第一回コンテナ情報交換会@関西発表資料
2011.09.18 v7から始めるunix まとめ
2011.09.18 v7から始めるunix まとめ
Makiko Konoshima
まだぐだぐだです。もう少し追記します。
Seastar:高スループットなサーバアプリケーションの為の新しいフレームワーク
Seastar:高スループットなサーバアプリケーションの為の新しいフレームワーク
Takuya ASADA
iijlab seminar
10のJava9で変わるJava8の嫌なとこ!
10のJava9で変わるJava8の嫌なとこ!
bitter_fox
10のJava9で変わるJava8の嫌なとこ!
Similar to Kernel vm study_2_xv6_scheduler_part1_revised
(20)
【学習メモ#8th】12ステップで作る組込みOS自作入門
【学習メモ#8th】12ステップで作る組込みOS自作入門
KVM+cgroup
KVM+cgroup
Openstack+Ceph設定ガイド
Openstack+Ceph設定ガイド
Lxc cf201207-presen
Lxc cf201207-presen
Openresty
Openresty
コンテナ情報交換会2
コンテナ情報交換会2
OpenStackでも重要な役割を果たすPacemakerを知ろう!
OpenStackでも重要な役割を果たすPacemakerを知ろう!
Dive into RTS - another side
Dive into RTS - another side
Project Loom - 限定継続と軽量スレッド -
Project Loom - 限定継続と軽量スレッド -
Ubuntuで始めるコンテナ技術入門
Ubuntuで始めるコンテナ技術入門
Ethernetの受信処理
Ethernetの受信処理
Apache CloudStack 4.0 インストール(ver0.5)
Apache CloudStack 4.0 インストール(ver0.5)
Apache cloudstack4.0インストール
Apache cloudstack4.0インストール
仮想記憶入門 BSD-4.3を例題に
仮想記憶入門 BSD-4.3を例題に
本当にわかる Spectre と Meltdown
本当にわかる Spectre と Meltdown
Boost9 session
Boost9 session
第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西
2011.09.18 v7から始めるunix まとめ
2011.09.18 v7から始めるunix まとめ
Seastar:高スループットなサーバアプリケーションの為の新しいフレームワーク
Seastar:高スループットなサーバアプリケーションの為の新しいフレームワーク
10のJava9で変わるJava8の嫌なとこ!
10のJava9で変わるJava8の嫌なとこ!
Recently uploaded
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
t m
オープンエンドな進化から着想を得て、個々の大規模言語モデル(LLM)が、グループとして学習を進めながら、ノームエージェントとして機能するという概念を探求しています。これは、単一のモデルでは難しい複雑な問題を解決することを目的としています。具体的な方法として、遺伝的アルゴリズムと知識蒸留を組み合わせた学習プロセスを提案しています。知識蒸留によって学習を進め、同時に遺伝的アルゴリズムでハイパーパラメータを最適化することで、より効率的な学習を目指します。ドメインタスクとして、指示からPythonコードを生成するコード生成タスクを選択しました。実験では、学習に3つの学習モデルと1つの教師モデルを使用しました。その結果、HumanEvalのpass@1で精度が1.2%向上し、学習が進むにつれて学習率が最適化された兆候が見られました。しかし、大幅な精度向上を達成し、さまざまなハイパーパラメータを最適化するには、まだ課題が残っています。
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
Yuuitirou528 default
CS集会でお話した、通信技術のひとつである「変調」について解説した資料です。 https://x.com/vrc_cpu_science/status/1724784316738355560
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
Matsushita Laboratory
我々はこれまで,新たなモノを産出する過程において「便利にすること」によって副次的に生じる課題を「便利の副作用」と定義し,その低減を目的としてアイディアの発想支援手法を提案してきた. これまでの研究では,便利前後の行為の増減に着目することにより便利の副作用への気づきの誘発が示唆されたものの,行為の増減の提示による便利の副作用への気づきへの影響は十分に検討できていなかった. そのため,本稿では行為の提示により便利の副作用に気づき,それを防いだアイディアの発想の支援が可能かの検証を目的として実験を行い,その有効性について検証する. 実験では,行為の増減の提示の有無によりアイディア発想にどのような影響を与えるか検証を行う.
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
Xinhong Ma, Yiming Wang, Hao Liu, Tianyu Guo, Yunhe Wang, "When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Segmentation" NeurIPS2023 https://proceedings.neurips.cc/paper_files/paper/2023/hash/157c30da6a988e1cbef2095f7b9521db-Abstract-Conference.html
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
浜松で開催されたJSAI2024(第38回)での発表.
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
chiefujita1
RIZAPテクノロジーズ株式会社の会社説明資料です。
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
0207sukipio
JSAI2024の発表スライドです.
Recently uploaded
(8)
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
Kernel vm study_2_xv6_scheduler_part1_revised
1.
xv6 scheduler
Part 1 ( 修正版 ) @noztos 2012.9.2 カーネル VM 勉強会 第二回 OS 基礎 (xv6)
2.
Scheduling ●
ひとつの物理プロセッサを多重化する 複数の ( 仮想 ) プロ セッ サが存在する かのよ う に動作 ● ユーザープロセスに錯ーさせる – 専用のメモリ空間 – 専用プロセッサ 12/09/02 xv6 scheduler part1 2
3.
Multiplexing ●
タイマ割込み 100ms( 固定 ) ● 多重化の実装 1.コンテキスト切り替え:標準的機構 2.透過的コンテキスト切り替え方法 : タイ ー割ーみハンド ( プリエンプティブ ) マ ラ 3.複数 CPU × マルチプロセスの同時実行 : 競合回避のための lock 4.プロセス終了時 : メモリ、リソースの解放 12/09/02 xv6 scheduler part1 3
4.
Context Switching 12/09/02
xv6 scheduler part1 4
5.
Context Switching
● Scheduler thread を必ず経由 プロセスから system call or interrupt ↓ scheduler ↓ 他プロセスへ trap return ● Scheduler thread は CPU 毎 ● 旧スレッドの register をセーブ 保存し て いた新スレ ッ ド の register をリストア cf. swtch.S 12/09/02 xv6 scheduler part1 5
6.
Context Switching -
swtch() ● Thread について は知ら ず、 "contexts” を管理 す る のみ ● void swtch(struct context **old, struct context *new); # Save old registers # Load new registers movl 4(%esp), %eax movl 4(%esp), %eax # not 8(%esp) - popped return address above popl 0(%eax) # %eip movl %esp, 4(%eax) movl 28(%eax), %ebp movl %ebx, 8(%eax) movl 24(%eax), %edi movl %ecx, 12(%eax) movl 20(%eax), %esi movl %edx, 16(%eax) movl 16(%eax), %edx movl %esi, 20(%eax) movl 12(%eax), %ecx movl %edi, 24(%eax) movl 8(%eax), %ebx movl %ebp, 28(%eax) movl 4(%eax), %esp pushl 0(%eax) # %eip 12/09/02 xv6 scheduler part1 6
7.
Scheduling – sched()
● CPU を解放するには – ptable.lock を取得 – 取得している他の lock の解放 – 自身の proc->state の更新 – sched() の呼出 proc.c: yield(), sleep(), exit() からのみ ● sched() 内でもチェック + 割込み禁止確認 12/09/02 xv6 scheduler part1 7
8.
Scheduling – sched()
を抜けるとそこは ● sched() において swtch() を呼ぶことにより proc->context(=current context) から cpu->scheduler(=scheduler context) へー身 ● “Scheduler context へ変身” ... ということは swtch() から戻るのは proc.c:scheduler() そして何事もなかったかのように RUNNABLE プロセスを探す proc.c: scheduler() 内 l.214 – l.231 12/09/02 xv6 scheduler part1 8
9.
Scheduling – ptable.lock
● swtch() を呼ぶ前に ptable.lock を取得 lock の取得、解放は thread の責任 – Unusual swtch() 中の proc->state, cpu->context の 整合性保持をシンプルに ● おまけ情報 カーネル空間で使用する sleep() は、引数で lock を指定 void sleep(void*, struct spinlock*); ptable.lock で sleep() 呼ぶのは wait() のみ 12/09/02 xv6 scheduler part1 9
10.
Scheduling − ptable.lock
acquire() 〜 release() process(kernel space) scheduler yield() { sched() { scheduler() { acquire(ptable.lock); ... … sched(); swtch(); for(p = ptable.proc; …) { ... ... ここに …. 戻る } } swtch(); … } release(ptable.lock); } 12/09/02 xv6 scheduler part1 10
11.
Scheduling ー scheduler
thread ● swtch() による CPU 解放 Kernel thread: scheculer() から process: sched() から ● forkret() のみ swtch() によらないスケジューリング cf. Chapter 1 プロセス生成 forkret() → forkret1() → trapret() 12/09/02 xv6 scheduler part1 11
12.
Scheduling - scheduler()
For(;;) { 割込み許可 ptable.lock 取得 実行するプロセスを探す (proc[] の探索 ) プロセスが止まるまで走らせる ptable.lock 解放 } 12/09/02 xv6 scheduler part1 12
13.
Scheduling – scheduler()
実行可能プロセス探索 1.p->state == RUNNABLE を探す 2.見つかったら (CPU 毎に ) – proc にプロセス情報をセット – switchuvm() - プロセスページ切替 – p->state = RUNNNING – swtch() 12/09/02 xv6 scheduler part1 13
14.
Scheduling – scheduler()
lock について ● Schesuler() が ptable.lock を保持することは、 RUNNABLE プ ロセスが見つからない場合のように CPU アイ リ ド ングの特殊な ケースで重要である ● もし、アイドリング CPU のスケジュ ラが lock を継続的に保 ー 持してループしていれば、プロセスが動作している他の CPU ではコンテキスト切替やプロセス関連のシステムコールを実 行できない。つまり 他 CPU がプロセス状態を RUNNABLE に変 、 更することはできない。 ● 周期的に割り み許可するのは、 ー プロセスが IO を待っているた め 12/09/02 xv6 scheduler part1 14
15.
Scheduling ー プロセス状態の保持と
lock ● プロセス状態の一貫性 – プロ セスページテーブ ル – プロ セスカ ーネルスタ ッ ク – cpu->curproc が正しく proc[] を指している これを維持するため – ユーザースレッドで lock を取得 – スケジューラー又はカーネルスレッドで解放 ● あと プロセステーブルへの配置と 解放もあるよ wait→wakeup については注意な !( つづく ! かも ) 12/09/02 xv6 scheduler part1 15
16.
“lost wake up”
problem 12/09/02 xv6 scheduler part1 16
Download now