SlideShare ist ein Scribd-Unternehmen logo
1 von 30
Downloaden Sie, um offline zu lesen
Kernel Overview
Kai Sasaki(@Lewuathe)
Linux Kernelとは
• Unix Likeなオペレーティングシステム
• 世界で最も成功したOSSのひとつ
• ハードウェアとアプリケーションの仲立ちと

なるような多くの機能を提供
• 最新安定版 3.19(2015年2月現在)
ディストリビューション
• ユーザランドの様々なソフトウェアを付属

させて配布
• Debian系(Ubuntu)
• Fedora系(RHEL, CentOS)
• この資料ではRHEL 7準拠
今日の話
1.カーネルの全体像
2.プロセスとメモリ管理(用語メイン)
3.ファイルシステム(用語メイン)
4.ネットワーク(用語メイン)
5.デバイス(用語メイン)
6.リソース制御(用語メイン)
7.カーネルインストール
カーネルの全体像
ソースツリーを眺める
ドキュメント
アーキテクチャ依存部
ブロックデバイス

共通部分
デバイスドライバ
ファイルシステム
スケジューラなど
メモリ管理
ネットワーク
プロセスとメモリ管理
• マルチタスクの実現のため複数プロセスを

スケジューリングする必要がある
• スケジューラ
• O(1): 経験則的な優先度変動を含む(~2.6.23)
• CFS: 現在 のCPU使用時間にのみ基づく
プロセスとメモリ管理
• Linuxのスケジューリングポリシー
• TSS(Time Sharing System)
• 割り当てられた時間だけCPUを使う
• リアルタイムクラス
• 静的な実行優先度を持つ
プロセスとメモリ管理
• Linuxではプロセスの静的な優先度は0-99
• TSSクラスでの実行優先度は常に0
• リアルタイムクラスの実行優先度は1-99に設定可
プロセスとメモリ管理
ただしO(1)スケジューラだとTSSクラスでも

動的に優先度が変更される。
•長時間CPUを占有→優先度下がる
•ユーザとのやりとりを行うような対話型プロセス

はCPU使用時間が短い→優先度上がる
結果的にユーザへの応答反応がよくなる
プロセスとメモリ管理
CFS(Completely Fair Scheduler)はvruntimeを基に

スケジューリングを実施
•すべてのプロセスからvruntimeが最も短いものに

CPUを割り当てる
•内部的に赤黒木で管理
14
9 14
8 12 27
3 13
15
17
ファイルシステム
• ブロックデバイスのデータをファイルとして

抽象的に管理するためのシステム
ファイルシステム
カーネル
ユーザプログラム
ブロックレイヤー
デバイスドライバ
HDD
ファイルシステム
• LinuxのファイルシステムはVFSと

個別のファイルシステムに分けられる
• proc, sysfs, cgroupfsなどカーネルの

インタフェースとしても実装されている
ファイルシステム
23のファイルシステムをサポート
ファイルシステム
file_operations構造体
inode_operations構造体
address_space_operations構造体 
VFS ext4
ext4_file_operations構造体
ext4_file_inode_operations構造体
ext4_dir_inode_operations構造体
ext4_da_aops構造体 
ファイルシステム
分類 例
UFS Base ext2
ジャーナリング ext3, ext4, XFS
ログストラクチャード nilfs2
Copy on Write Btrfs
ネットワーク
• Linuxのネットワークシステムは以下の4つに

分けられる
• ソケットインターフェイス
• プロトコルスタック
• ネットワークデバイス
• 付加機能
ネットワーク
ユーザプログラム
ソケットインタフェース
プロトコルスタック

(TCP/IPなど)付加機能
(ファイアウォール, 

NAT変換 etc)
ネットワークデバイス
関連の処理
カーネル
ネットワークデバイス
ネットワーク
netfilterがパケットフィルタリングやNAT変換の

機能を担っており、iptablesコマンドから操作
3.13からnftablesが実装され、nftコマンドで

ライブラリ(libnftnl)を経由して操作する
デバイス
• データの入出力、保存などを行うための機器
• カーネルはデバイスドライバを用いてこれらを制御
• デバイスの種類
• キャラクタデバイス
• ブロックデバイス
• ネットワークデバイス
デバイス
キャラクタデバイスはキャラクタ単位のデータを

ストリームとして扱う(例:キーボード)
キャラクタデバイスにアドレスなどの概念はない
一方でブロックデバイスはデータをブロック単位で

処理するデバイス。ランダムアクセス可

(例:ストレージデバイス)
通常はファイルシステムを構築してアクセスする
デバイス
ネットワークインタフェースはネットワーク通信

のデータを扱う
キャラクタデバイス
ブロックデバイス
デバイス
• ハードウェアからの入出力を処理するために

割り込みが用いられる
• 割り込みには2種類
• ハードウェア割り込み
• ソフトウェア割り込み
リソース制御
メモリやCPUの公平な配分と効率的使用、

そして排他制御を担う
2.6.24以降リソースを統一的に制御するために

インタフェースが導入された
• cgroup
• namespace
リソース制御
cgroupはプロセスをグループ化して任意のリソースを
割り当てるためのフレームワーク
リソース制御
namespaceはカーネルが提供するリソースの

名前付けを共有できる空間を提供する
namespace 管理対象
PID プロセスID
UTS ホスト名、ドメイン
MOUNT ファイルシステムのマウント関係
Network ネットワークデバイスのルーティング
IPC 共有メモリ、セマフォ
UID ユーザID, グループID
リソース制御
カーネル
cgroup namespace
LXC or Docker
カーネルインストール
デモ
$ sudo su
# yum groupinstall “Development Tools”
# yum groupinstall “Additional Development”
# yum install asciidoc perl-ExtUtils-Embed xmlto zlib-devel 
newt-devel net-tools bc design pcutils-devel wget rpm-build gcc 

hmaccalc pesign
$ wget http://vault.centos.org/7.0.1406/updates/Source/SPackages/

kernel-3.10.0-123.8.1.el7.src.rpm
$ rpm -ivh kernel-3.10.0-123.8.1.el7.src.rpm
$ cd ~/rpmbuild/SPECS
$ rpmbuild --nodeps -bp --target=x86_64 kernel.spec
$ sudo su
# rpm -ivh —force ~/rpmbuild/RPMS/x86_64/

kernel-3.10.0-123.8.1.e17.local.x86_64.rpm

Weitere ähnliche Inhalte

Was ist angesagt?

Oracle xeインストール(linux環境)
Oracle xeインストール(linux環境)Oracle xeインストール(linux環境)
Oracle xeインストール(linux環境)
izuyuri
 
1 Linux入門 第1章 UNIX/Linuxとは
1 Linux入門 第1章 UNIX/Linuxとは1 Linux入門 第1章 UNIX/Linuxとは
1 Linux入門 第1章 UNIX/Linuxとは
Enpel
 
Linuxとオープンソースの世界
Linuxとオープンソースの世界Linuxとオープンソースの世界
Linuxとオープンソースの世界
Hiroe Orz
 
06 後期勉強会一年の部【加藤】
06 後期勉強会一年の部【加藤】06 後期勉強会一年の部【加藤】
06 後期勉強会一年の部【加藤】
yu-Linux
 
Gluster fsにおいて内在するincident要因
Gluster fsにおいて内在するincident要因Gluster fsにおいて内在するincident要因
Gluster fsにおいて内在するincident要因
TaikaiSebastianHirose
 

Was ist angesagt? (19)

輪講_Awamoto_20170601
輪講_Awamoto_20170601輪講_Awamoto_20170601
輪講_Awamoto_20170601
 
Oracle xeインストール(linux環境)
Oracle xeインストール(linux環境)Oracle xeインストール(linux環境)
Oracle xeインストール(linux環境)
 
UNIXことはじめ
UNIXことはじめUNIXことはじめ
UNIXことはじめ
 
勉強会資料 LT会 zfsで遊んでみた_公開版
勉強会資料 LT会 zfsで遊んでみた_公開版勉強会資料 LT会 zfsで遊んでみた_公開版
勉強会資料 LT会 zfsで遊んでみた_公開版
 
Osc201703 tokyo-clonezilla-v1.2 j
Osc201703 tokyo-clonezilla-v1.2 jOsc201703 tokyo-clonezilla-v1.2 j
Osc201703 tokyo-clonezilla-v1.2 j
 
ELK ではじめる自宅ネットワーク監視
ELK ではじめる自宅ネットワーク監視ELK ではじめる自宅ネットワーク監視
ELK ではじめる自宅ネットワーク監視
 
1 Linux入門 第1章 UNIX/Linuxとは
1 Linux入門 第1章 UNIX/Linuxとは1 Linux入門 第1章 UNIX/Linuxとは
1 Linux入門 第1章 UNIX/Linuxとは
 
使いこなせて安全なLinuxを目指して
使いこなせて安全なLinuxを目指して使いこなせて安全なLinuxを目指して
使いこなせて安全なLinuxを目指して
 
Linuxとオープンソースの世界
Linuxとオープンソースの世界Linuxとオープンソースの世界
Linuxとオープンソースの世界
 
Cms on SELinux
Cms on SELinuxCms on SELinux
Cms on SELinux
 
Flameにfirefox os2.1を入れてみた+α
Flameにfirefox os2.1を入れてみた+αFlameにfirefox os2.1を入れてみた+α
Flameにfirefox os2.1を入れてみた+α
 
OpenStackの情報をどこから得ているのか
OpenStackの情報をどこから得ているのかOpenStackの情報をどこから得ているのか
OpenStackの情報をどこから得ているのか
 
2013OSC関西@京都_CloudStackとCloudFoundaryがまるわかり!
2013OSC関西@京都_CloudStackとCloudFoundaryがまるわかり!2013OSC関西@京都_CloudStackとCloudFoundaryがまるわかり!
2013OSC関西@京都_CloudStackとCloudFoundaryがまるわかり!
 
Apache Spark+Zeppelinでアドホックなネットワーク解析
Apache Spark+Zeppelinでアドホックなネットワーク解析Apache Spark+Zeppelinでアドホックなネットワーク解析
Apache Spark+Zeppelinでアドホックなネットワーク解析
 
本の紹介「絵で見てわかるITインフラの仕組み」
本の紹介「絵で見てわかるITインフラの仕組み」本の紹介「絵で見てわかるITインフラの仕組み」
本の紹介「絵で見てわかるITインフラの仕組み」
 
06 後期勉強会一年の部【加藤】
06 後期勉強会一年の部【加藤】06 後期勉強会一年の部【加藤】
06 後期勉強会一年の部【加藤】
 
社内サーバインフラ勉強会(DB)
社内サーバインフラ勉強会(DB)社内サーバインフラ勉強会(DB)
社内サーバインフラ勉強会(DB)
 
201012 ips
201012 ips201012 ips
201012 ips
 
Gluster fsにおいて内在するincident要因
Gluster fsにおいて内在するincident要因Gluster fsにおいて内在するincident要因
Gluster fsにおいて内在するincident要因
 

Andere mochten auch

10分で分かるLinuxブロックレイヤ
10分で分かるLinuxブロックレイヤ10分で分かるLinuxブロックレイヤ
10分で分かるLinuxブロックレイヤ
Takashi Hoshino
 
自動並列化コンパイラをAndroidに適用してみた
自動並列化コンパイラをAndroidに適用してみた自動並列化コンパイラをAndroidに適用してみた
自動並列化コンパイラをAndroidに適用してみた
magoroku Yamamoto
 
オペレーティングシステム 第1回-公開用
オペレーティングシステム 第1回-公開用オペレーティングシステム 第1回-公開用
オペレーティングシステム 第1回-公開用
Ruo Ando
 

Andere mochten auch (19)

Linux device driver for dummies
Linux device driver for dummiesLinux device driver for dummies
Linux device driver for dummies
 
Linux Char Device Driver
Linux Char Device DriverLinux Char Device Driver
Linux Char Device Driver
 
Mosquito Attack
Mosquito AttackMosquito Attack
Mosquito Attack
 
10分で分かるLinuxブロックレイヤ
10分で分かるLinuxブロックレイヤ10分で分かるLinuxブロックレイヤ
10分で分かるLinuxブロックレイヤ
 
Yocto bspを作ってみた
Yocto bspを作ってみたYocto bspを作ってみた
Yocto bspを作ってみた
 
自動並列化コンパイラをAndroidに適用してみた
自動並列化コンパイラをAndroidに適用してみた自動並列化コンパイラをAndroidに適用してみた
自動並列化コンパイラをAndroidに適用してみた
 
React native
React nativeReact native
React native
 
Programming Embedded linux
Programming Embedded linuxProgramming Embedded linux
Programming Embedded linux
 
オペレーティングシステム 第1回-公開用
オペレーティングシステム 第1回-公開用オペレーティングシステム 第1回-公開用
オペレーティングシステム 第1回-公開用
 
Linux IO
Linux IOLinux IO
Linux IO
 
DMA Survival Guide
DMA Survival GuideDMA Survival Guide
DMA Survival Guide
 
Yocto Project ハンズオン プレゼン用資料
Yocto Project ハンズオン プレゼン用資料Yocto Project ハンズオン プレゼン用資料
Yocto Project ハンズオン プレゼン用資料
 
Linux scheduler
Linux schedulerLinux scheduler
Linux scheduler
 
linux device driver
linux device driverlinux device driver
linux device driver
 
English for programmers
English for programmersEnglish for programmers
English for programmers
 
Getting start Java EE Action-Based MVC with Thymeleaf
Getting start Java EE Action-Based MVC with ThymeleafGetting start Java EE Action-Based MVC with Thymeleaf
Getting start Java EE Action-Based MVC with Thymeleaf
 
Ethernetの受信処理
Ethernetの受信処理Ethernetの受信処理
Ethernetの受信処理
 
10GbE時代のネットワークI/O高速化
10GbE時代のネットワークI/O高速化10GbE時代のネットワークI/O高速化
10GbE時代のネットワークI/O高速化
 
無線LANデバイスについて(kernelレベル)
無線LANデバイスについて(kernelレベル) 無線LANデバイスについて(kernelレベル)
無線LANデバイスについて(kernelレベル)
 

Ähnlich wie Kernel overview

オペレーティングシステム 第2回-公開用
オペレーティングシステム 第2回-公開用オペレーティングシステム 第2回-公開用
オペレーティングシステム 第2回-公開用
Ruo Ando
 
20031030 「読み込み専用マウントによる改ざん防止Linuxサーバの構築」
20031030 「読み込み専用マウントによる改ざん防止Linuxサーバの構築」20031030 「読み込み専用マウントによる改ざん防止Linuxサーバの構築」
20031030 「読み込み専用マウントによる改ざん防止Linuxサーバの構築」
Toshiharu Harada, Ph.D
 
Windows Azure で 2/29 に起こった問題のまとめ
Windows Azure で 2/29 に起こった問題のまとめWindows Azure で 2/29 に起こった問題のまとめ
Windows Azure で 2/29 に起こった問題のまとめ
Sunao Tomita
 
Next-L Enju 第1回開発ワークショップ資料
Next-L Enju 第1回開発ワークショップ資料Next-L Enju 第1回開発ワークショップ資料
Next-L Enju 第1回開発ワークショップ資料
Kosuke Tanabe
 

Ähnlich wie Kernel overview (20)

RHEL Atomic Hostのご紹介
RHEL Atomic Hostのご紹介RHEL Atomic Hostのご紹介
RHEL Atomic Hostのご紹介
 
Linuxとファイル
LinuxとファイルLinuxとファイル
Linuxとファイル
 
GoBoLinuxを試した
GoBoLinuxを試したGoBoLinuxを試した
GoBoLinuxを試した
 
CentOS Linux 8 の EOL と対応策の検討
CentOS Linux 8 の EOL と対応策の検討CentOS Linux 8 の EOL と対応策の検討
CentOS Linux 8 の EOL と対応策の検討
 
オペレーティングシステム 第2回-公開用
オペレーティングシステム 第2回-公開用オペレーティングシステム 第2回-公開用
オペレーティングシステム 第2回-公開用
 
Windows とコンテナの話
Windows とコンテナの話Windows とコンテナの話
Windows とコンテナの話
 
20031030 「読み込み専用マウントによる改ざん防止Linuxサーバの構築」
20031030 「読み込み専用マウントによる改ざん防止Linuxサーバの構築」20031030 「読み込み専用マウントによる改ざん防止Linuxサーバの構築」
20031030 「読み込み専用マウントによる改ざん防止Linuxサーバの構築」
 
Reading kernel org
Reading kernel orgReading kernel org
Reading kernel org
 
ロボットシステム学2015年第5回
ロボットシステム学2015年第5回ロボットシステム学2015年第5回
ロボットシステム学2015年第5回
 
Disaggregated Junos Software Infrastructure
Disaggregated Junos Software InfrastructureDisaggregated Junos Software Infrastructure
Disaggregated Junos Software Infrastructure
 
Agileツール適合化分科会(変更管理・バージョン管理)
Agileツール適合化分科会(変更管理・バージョン管理)Agileツール適合化分科会(変更管理・バージョン管理)
Agileツール適合化分科会(変更管理・バージョン管理)
 
BioDevOpsによる再現性のあるバイオインフォマティクス環境の構築
BioDevOpsによる再現性のあるバイオインフォマティクス環境の構築BioDevOpsによる再現性のあるバイオインフォマティクス環境の構築
BioDevOpsによる再現性のあるバイオインフォマティクス環境の構築
 
Agileツール適合化分科会(dev opsツール)
Agileツール適合化分科会(dev opsツール)Agileツール適合化分科会(dev opsツール)
Agileツール適合化分科会(dev opsツール)
 
Hyper-V + Linux {which Microsoft Loves}
Hyper-V + Linux {which Microsoft Loves}Hyper-V + Linux {which Microsoft Loves}
Hyper-V + Linux {which Microsoft Loves}
 
Windows Azure で 2/29 に起こった問題のまとめ
Windows Azure で 2/29 に起こった問題のまとめWindows Azure で 2/29 に起こった問題のまとめ
Windows Azure で 2/29 に起こった問題のまとめ
 
H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門
H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門
H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門
 
openstack+cephインテグレーション
openstack+cephインテグレーションopenstack+cephインテグレーション
openstack+cephインテグレーション
 
基礎教養としてのUbuntuサーバ_後編.pptx
基礎教養としてのUbuntuサーバ_後編.pptx基礎教養としてのUbuntuサーバ_後編.pptx
基礎教養としてのUbuntuサーバ_後編.pptx
 
GMO プライベート DMP 開発で 取り組んできた DevOps と今後の展望
GMO プライベート DMP 開発で 取り組んできた DevOps と今後の展望GMO プライベート DMP 開発で 取り組んできた DevOps と今後の展望
GMO プライベート DMP 開発で 取り組んできた DevOps と今後の展望
 
Next-L Enju 第1回開発ワークショップ資料
Next-L Enju 第1回開発ワークショップ資料Next-L Enju 第1回開発ワークショップ資料
Next-L Enju 第1回開発ワークショップ資料
 

Mehr von Kai Sasaki

Mehr von Kai Sasaki (20)

Graviton 2で実現する
コスト効率のよいCDP基盤
Graviton 2で実現する
コスト効率のよいCDP基盤Graviton 2で実現する
コスト効率のよいCDP基盤
Graviton 2で実現する
コスト効率のよいCDP基盤
 
Infrastructure for auto scaling distributed system
Infrastructure for auto scaling distributed systemInfrastructure for auto scaling distributed system
Infrastructure for auto scaling distributed system
 
Continuous Optimization for Distributed BigData Analysis
Continuous Optimization for Distributed BigData AnalysisContinuous Optimization for Distributed BigData Analysis
Continuous Optimization for Distributed BigData Analysis
 
Recent Changes and Challenges for Future Presto
Recent Changes and Challenges for Future PrestoRecent Changes and Challenges for Future Presto
Recent Changes and Challenges for Future Presto
 
Real World Storage in Treasure Data
Real World Storage in Treasure DataReal World Storage in Treasure Data
Real World Storage in Treasure Data
 
20180522 infra autoscaling_system
20180522 infra autoscaling_system20180522 infra autoscaling_system
20180522 infra autoscaling_system
 
User Defined Partitioning on PlazmaDB
User Defined Partitioning on PlazmaDBUser Defined Partitioning on PlazmaDB
User Defined Partitioning on PlazmaDB
 
Deep dive into deeplearn.js
Deep dive into deeplearn.jsDeep dive into deeplearn.js
Deep dive into deeplearn.js
 
Optimizing Presto Connector on Cloud Storage
Optimizing Presto Connector on Cloud StorageOptimizing Presto Connector on Cloud Storage
Optimizing Presto Connector on Cloud Storage
 
Presto updates to 0.178
Presto updates to 0.178Presto updates to 0.178
Presto updates to 0.178
 
How to ensure Presto scalability 
in multi use case
How to ensure Presto scalability 
in multi use case How to ensure Presto scalability 
in multi use case
How to ensure Presto scalability 
in multi use case
 
Managing multi tenant resource toward Hive 2.0
Managing multi tenant resource toward Hive 2.0Managing multi tenant resource toward Hive 2.0
Managing multi tenant resource toward Hive 2.0
 
Embulk makes Japan visible
Embulk makes Japan visibleEmbulk makes Japan visible
Embulk makes Japan visible
 
Maintainable cloud architecture_of_hadoop
Maintainable cloud architecture_of_hadoopMaintainable cloud architecture_of_hadoop
Maintainable cloud architecture_of_hadoop
 
図でわかるHDFS Erasure Coding
図でわかるHDFS Erasure Coding図でわかるHDFS Erasure Coding
図でわかるHDFS Erasure Coding
 
Spark MLlib code reading ~optimization~
Spark MLlib code reading ~optimization~Spark MLlib code reading ~optimization~
Spark MLlib code reading ~optimization~
 
How I tried MADE
How I tried MADEHow I tried MADE
How I tried MADE
 
Reading drill
Reading drillReading drill
Reading drill
 
Kernel ext4
Kernel ext4Kernel ext4
Kernel ext4
 
Kernel bootstrap
Kernel bootstrapKernel bootstrap
Kernel bootstrap
 

Kernel overview