---
# System prepended metadata

title: '2.1 : 賦予應用程式生命的系統呼叫'
tags: [Linux 核心設計]

---

Linux 核心設計: 賦予應用程式生命的系統呼叫
===
:::warning
注意！這是上課筆記
:::

:::info
原始課程在這裡
- [影片](https://www.youtube.com/watch?v=rPWt6KgL8uQ)
- [講義](https://hackmd.io/@sysprog/linux-syscall?type=view)

Original by [jserv](http://wiki.csie.ncku.edu.tw/User/jserv)
:::

---



| Section | Time| Description |
| -------- | -------- | -------- |
| 1 | [00:00:11](https://youtu.be/rPWt6KgL8uQ?si=ZHyjs72Rm0n2Hpn0&t=11) | 1. linux 1992 年釋出原始碼(92共識)<br>2. tux web server 讓 linux 差點走歪路。<br>3. 大約有380 system call 支持應用程式。<br>4. sendfile()的範例。|
| 2 | [00:16:13](https://youtu.be/rPWt6KgL8uQ?si=jZj4xc60EY22cE_d&t=973) | 1. 論文 "Analyzing a Decade of Linux System Calls".<br>2. POSIX規範 for OS 和 自由軟體 |
| 3 | [00:27:34](https://youtu.be/rPWt6KgL8uQ?si=NsR13h_fcjVz15dx&t=1654) | 1. ltrace() for library call.<br>2. hello world 的範例。|
| 4 | [00:39:14](https://youtu.be/rPWt6KgL8uQ?si=D9AM1i92Fe1UJ0ez&t=2354) | 1. call gate.<br>2. priority and privileged. |
| 5 | [00:47:58](https://youtu.be/rPWt6KgL8uQ?si=vrCN3oz_eQsJgMro&t=2878) | 1. 文章 "System Calls Make the World Go Round".<br>2. strace() trace system call.<br>3. 直接 call system call write(). |
| 6 | [01:00:50](https://youtu.be/rPWt6KgL8uQ?si=0XEiTQ_E3RxZjbG2&t=3650) | 1. syscall().<br>2. unix 2038 問題。<br>3. arm and intel 架構的 system call. |
| 7 | [01:10:49](https://youtu.be/rPWt6KgL8uQ?si=jGzWrwsDxMbCa7a6&t=4249) | 1. 文章 "Computer Science from the Bottom Up: System Calls". |
| 8 | [01:19:27](https://youtu.be/rPWt6KgL8uQ?si=yPKK2i_3-eMtxY4N&t=4767) | 1. 透過 kprobes + eBPF 來追蹤系統呼叫。<br>2. 介紹 eBPF。<br>3. eBPF is in-kernel virtual machine.<br>4. demo.<br>5. nc(). |
| 9 | [01:32:20](https://youtu.be/rPWt6KgL8uQ?si=1Y-xu1mY4bH5OCOl&t=5540) | 1. strace()/ptrace() 成本很高。<br>2. 繼續實驗 eBPF。<br>3. 文章解析 “Introducing eBPF Kernel probes”。|
| 10 | [01:42:06](https://youtu.be/rPWt6KgL8uQ?si=qAON1Kd9l-lW9iBb&t=6126) | 1. Linux 核心對系統呼叫的實作機制。<br>2. 文章 "Anatomy of a system call, part 1".<br>3. syscall table entries. |
| 11 | [01:59:31](https://youtu.be/rPWt6KgL8uQ?si=mTwMuFpY-zChZS7B&t=7171) | 1. vsyscall and vDSO.<br>2. git 的函式庫（使用 ldd 指令）。<br>3. 文章 “什麼是 Linux vDSO 與 vsyscall？——發展過程”.<br>4. gettimeofday().<br>5. AMD 發明 x86_64 syscall.<br>6. 發展 vsyscall 的原因：降低CPU模式切換。 |
| 12 | [02:16:30](https://youtu.be/rPWt6KgL8uQ?si=3xLgbFBau3o2JCAA&t=8190) | 1. 虛擬記憶體 for user mode read only.<br>2. vDSO for debugging.<br>3. ALSR 的導入避免固定定址攻擊。<br>4. HRT(high resolution timer) 的應用。|
| 13 | [02:34:23](https://youtu.be/rPWt6KgL8uQ?si=tOsdMaET-OZd4G-Z&t=9263) | 1. 文章 “gettimeofday、clockgettime 以及不同時鐘源的影響”。<br>2. 文章 “vDSO on arm64”.<br>3. 總結。 