Engineer Hacks

インフラサーバ系エンジニアが考えたこととか勉強したことのメモ

SystemSoftware2010_02メモ

SystemSoftware2010_02のメモ

前回同様に2回目もメモ。

研究者にとって重要なのは、アイデアじゃなくて、最初は問題定義。これは、ビジネスの世界でも一緒だね。Seedsベースの一発勝負は、失敗することも多い。

What is system calls?

System call is the interface between user side and kernel side. System calls are divided into :

  • process management
  • file management and I/O
  • file system management
  • network

授業で例になってたのは、open()、read()、write(); そりゃそうか。

The number of system calls of Linux 2.6.19 is about 320.

How system calls are executed?

  • user process: prepare argument such as filename.
  • user process: execute trap or interruption. これで、割り込み発生して、カーネル側にうつる
  • kernel: determine which system call is beign requested.
  • kernel: verify permission. これ、セキュリティ・ホールになりがち。
  • kernel: Do system calls here! 待たなくちゃいけないときは、ここでsleep。
  • kernel: 構造体とかをスッキリしてreturn.
  • user process: おかえりなさい。

ちなみに、setuidより

int $0x80

が、割り込みアセンブラ。interruptのこと。

How big?

around 5.6 + 1.3 M lines. 1/3 codes are about driver which is the biggest part of kernel codes. Second one is arch, such as CPU code.