- 第3章 オペレーティングシステム 3.1 用語〜 3.2.1 カーネル
モチベーション
以下のようなことを分析するとなれば OS とカーネルについての理解が不可欠
- システムコールの実行のされ方
- CPU のスケジューリングのしくみ
- メモリがパフォーマンスに影響を及ぼすしくみ
- ファイルシステムの I/O の処理の仕方
カーネルの基礎知識
- カーネルとは?
- ディスク/ネットワークインターフェースなどのデバイス、メモリ、CPU のスケジューリングなどを管理する
- カーネルモードという特権的な CPU モードで動作する
- ハードウェア - カーネル - システムコール - システムライブラリ - アプリケーション という階層構造
- カーネルの実行タイミング
- ユーザーモードのアプリケーションがシステムコールを呼び出したとき
- デバイスが割り込むを送ったとき
- カーネルクロックやメモリ管理タスク
- CPU リソースの競合などが発生する場合、カーネルがワークロードのパフォーマンスに影響を及ぼすことがある
クロックと Linux
- Unix カーネルにおけるクロック
- Unix カーネルでは歴史的に 60/100/1000 Hz クロックが実行されてきた(毎回の実行をティックとよぶ)
- システム時間の更新やタイマー、スレッドスケジューリングのためのタイムスライス終了、スケジュールされたカーネルルーチンの実行などが行われていて盛り盛りだった
- Linux は ティックレスカーネルを作ることを目指し、クロックローチンからオンデマンドの割り込みに機能をうつしている(システムタイマー割り込み)
カーネルモードとは
- デバイスへのフルアクセスおよび特権的な命令の実行を認めるモード
- デバイスアクセスを調停したり、プロセスとユーザーが互いのデータにアクセスするのを防いだりする
- プロセスはシステムコールを介して I/O などカーネルの特権的オペレーションを要求する
- ユーザーモードとカーネルモード間の遷移のことをコンテキストスイッチとよび、これには時間がかかるためオーバーヘッドとなる
- ユーザーモードのプロセス間のやりとりでもコンテキストスイッチが発生することがある
- ユーザーモードで特権的な命令を実行すると例外が投げられ、カーネルが適切に処理をおこなう
Pinned Articles
About
ウェブ界隈でエンジニアとして労働活動に励んでいる @gomi_ningen 個人のブログです
Tags
JavaScript
PowerShell
kibana
elasticsearch
fluentd
nginx
イベント
五十嵐裕美
村川梨衣
logrotate
IoT
Scala
Java
C言語
iputils
ICMP
WUG
mastodon
Swift
AWS
Clock
Windows
アーキテクチャ
PoEAA
iOS
DeviceFarm
プログラミング言語
OS
StepFunctions
Lambda
Serverless
terraform
ポエム
RHEL
ネットワーク
GraphQL
CloudWatch
Linux
Coreutils
network
nc
telnet
LinuxKernel
fpinscala
ELB
IAM
AppSync
EFS
Gradle
english