# 2024-04-16 問答簡記 > 檢討[第五次作業](https://hackmd.io/@sysprog/linux2024-homework5) ## williamS > [第五次作業](https://hackmd.io/@imNCNUwilliam/linux2024-homework5) * EWMA 在 Linux Kernel 中哪邊有用到呢? * 可做 CPU sched 的 estimated utilization。 ## weihsinyeh > [第五次作業](https://hackmd.io/@weihsinyeh/linux2024-homework5) * weakly-ordered V.S. strongly-ordered * 當 CPU 速度比 Main Memory 快上許多時,在硬體架構設計上,cache 設計讓 CPU load / store 省去每次存取 Main Memory 的成本,但還是受限於 instructions 的 execution orders。 * store buffer暫存 CPU store 指令,讓 CPU 不須等待 store instruction 完成即可進行下個 instruction ,==(帶來什麼優點呢?)== 允許 CPU 處理指令可不受限於 execution orders 。然而,在多核處理器系統中,需要處理 Cache Coherence 的問題。所以,還多了廣播給不同 CPU core 上的 cache 以及等待其他 CPU cache 完成對應 cacheline update 的 overhead。 * invalidate buffer 就沒有聽清楚了。 * rdtsc V.S. C STL gettime() * C STL gettime() 量測精準度到 microsecond 等級,執行多次取平均又可能會涵蓋其他不易觀察的 operations,例如:timer interrupt。 * about magic number ==0xbfff978== ? * debug Linux Kernel 的方式。 * 西元 2000 年時, 虛擬化 Virtualization 技術還未成熟,需要多一台機器,透過特殊的 cable 來連接要觀察的 Linux 系統。 * 後來可透過在 Linux Kernel 預先註冊 Exception Handler 來觀察特定事件被觸發時的 CPU 狀態。 * ... ## david965154 fork 仍需要時間成本,尤其是在遞迴期間才做 fork ,因此會不斷的進行 fork 直到 fork_count 到達設定值或者 partition 結束。不過剛剛有看到若設定值過大,執行時間會變很長的同時還會導致排序錯誤,但為什麼會導致排序錯誤 ? invoke mmap(2) to share among forked processes. sudo sysctl -w kernel.sched_child_runs_first=1,以便要求 Linux 排程器 (CFS) 讓 child process 優先於 parent process 執行 改進 concurrent (fork) merge sort: 1. 避免遞迴,降低 fork 的成本 2. 預先 fork (pre-forking) 3. 實作 workqueue // 參見 案例: Thread Pool 實作和改進 ### millaker ioctl demand paging page size: 4KB (trade-off) Arm64: 4KB, 16KB, 64KB CS:APP Chapter 9 (virtual memory) https://docs.kernel.org/admin-guide/mm/hugetlbpage.html (HugeTLB) KPTI dramatically increased this cost: directly, by switching the active page table at each context transition => ESCA: Effective System Call Aggregation for Event-Driven Servers ## jouae > "The purpose of computing is insight, not numbers." by Richard Hamming, Numerical Methods for Scientists and Engineers (1962). [第 9 週測驗](https://hackmd.io/@sysprog/linux2024-quiz9) 中提及的矩陣乘法,為何不同大小的方陣不能相乘?簡單歸納兩個結論: * 矩陣表示式是根據線性轉換而來 * 矩陣相乘是線性轉換間的合成 線性代數(linear algebra) 字面意思是在討論**線性**性質與**代數**結構,與一般工程數學或是工程學中的線性代數不同,數學系相關的線性代數出發點是**向量空間(vector space)**,所謂向量空間其實就是代數中的體(field)的延伸,對於一個體$(F,+,\times)$ 與一個集合 $V$ 會滿足[十個公理](https://en.wikipedia.org/wiki/Vector_space#Definition_and_basic_properties)。 從向量空間開始接續會討論到線性相依、線性獨立、基底,再來到**線性**這個性質 * 對兩個體為 $F$ 的向量空間 $V,W$ ,函數 $T:V_1\rightarrow V_2$ 為線性轉換,對所有係數 $c\in F$ 和 $a,b\in V$ 滿足以下特性: * 加法線性: $T(a+b)=T(a)+T(b)$ * 係數乘法: $T(ca)=cT(a)$ 線性組合、基底等等這些概念都是息息相關。由有序基底 $\beta=\lbrace v_1,v_2,\dots,v_n\rbrace$ 生成的向量空間 $V$ ,藉由係數 $a_1,a_2,\dots,a_n$ 對基底元素的線性組合,組合出任意向量 $x\in V$ 表示為 $$ x = \sum^n_{i=1} a_iv_i $$ 且每個係數皆唯一。 而以 $\beta$ 為基底的 $x$ 座標向量表示為 $$ [x]_{\beta}= \begin{bmatrix} a_1 \\ a_2 \\ \vdots \\ a_n \end{bmatrix} $$ 讓向量空間 $V$ 的有序基底為 $\beta=\lbrace v_1,v_2,\dots,v_n \rbrace$ 和向量空間 $W$ 的有序基底為 $\gamma=\lbrace w_1,w_2,\dots,w_m \rbrace$ ,以及一線性轉換 $T:T \rightarrow W$ 則對 $1\leq j\leq n$ 存在唯一係數 $a_{ij}\in F$ 對 $1\leq i \leq m$ 使得 $$ T(v_i) = \sum^m_{i=1}a_{ij}w_i,\quad \text{for }1\leq i \leq n. $$ * 藉由上述的表示法,可以得到一藉由基底 $\beta$ 和 $\gamma$ 線性轉換 $T$ 的矩陣表示式 $A=[T]_{\beta}^{\gamma}$ 舉[書本 p.81 例子 3](https://www.tenlong.com.tw/products/9781292026503),對線性轉換 $T:\mathbb{R}^2\rightarrow \mathbb{R}^3$ $$ T(a_1,a_2) = (a_1+3a_2,0,2a_1-4a_2). $$ 讓 $\beta$ 和 $\gamma$ 為標準有序基底。則 $T$ 由基底 $\beta$ 和基底 $\gamma$ 構成的矩陣表示法為 $$ T(1,0) = 1e_1+0e_2+3e_3,\quad T(0,1)=3e_1+0e_2-4e_3 $$ $$ [T]_{\beta}^{\gamma} = \begin{bmatrix} 1 & 3 \\ 0 & 0 \\ 3 & -4 \end{bmatrix} $$ 如果把有序基底的順序改一下變成 $\gamma'=\lbrace e_3,e_1,e_2\rbrace$ 則矩陣表示法為 $$ [T]_{\beta}^{\gamma'} = \begin{bmatrix} 3 & -4\\ 1 & 3 \\ 0 & 0 \end{bmatrix} $$ 再來探討下矩陣乘向量這個操作的數學含意。令 $x=(1,-1)^T$ 則 $$ [T]_{\beta}^{\gamma}x = 1\begin{bmatrix} 1 \\ 0 \\ 3 \end{bmatrix} -1 \begin{bmatrix} 3 \\ 0 \\ -4 \end{bmatrix}= \begin{bmatrix} 2 \\ 0 \\ 7 \end{bmatrix} $$ 可以看到 $[T]_{\beta}^{\gamma}$ 的行向量,藉由 $x$ 中的元素為係數做線性組合。 回到線性轉換以函數觀點來思考 $$ T(1,-1)=T(1,0)-T(0,1)= (1e_1+0e_2+3e_3)-(3e_1+0e_2-4e_3) $$ 其實就是先將基底 $\beta$ 中的元素線性組合出 $x$ 後以線性轉換得到函數映射至 $\mathbb{R}^3$ 基底元素的線性組合。 總結就是**矩陣是線性轉換的有序基底間的映射關係**,而矩陣乘向量是**將一空間的座標向量映射至另一個空間的座標向量** 接續討論矩陣乘矩陣是什麼?先講結論矩陣乘矩陣代表線性轉換的合成,**也因為是函數合成,除非特定情況下矩陣相乘不滿足交換律**。 * 令 $T:V\rightarrow W$ 和 $U:W\rightarrow Z$ 為線性轉換,其中 $UT:V\rightarrow Z$ 也為線性轉換。讓 $\alpha=\lbrace v_1, v_2, \dots, v_n\rbrace$ 、 $\beta=\lbrace w_1,w_2,\dots, w_m\rbrace$ 和 $\gamma=\lbrace z_1, z_2,\dots,z_p\rbrace$ 為向量空間 $V,W$ 和 $Z$ 各自的有序基底且矩陣表示式為 $A=[T]^{\beta}_{\alpha}$ 和 $B=[U]_{\beta}^{\gamma}$。則 $AB=[UT]_{\alpha}^{\gamma}$ 對 $1\leq j\leq n$ $$ \begin{align} (UT)(v_j) &= U(T(v_j))= U\left(\sum^m_{k=1}B_{kj}w_k\right) \\ &= \sum^m_{k=1}B_{kj}U(w_k) = \sum^m_{k=1}B_{kj}\left(\sum^p_{i=1}A_{ik}z_i\right) \\ &= \sum^p_{i=1} \left(\sum^m_{k=1} A_{ik}B_{kj}\right)z_i = \sum^p_{i=1}C_{ij}z_i. \end{align} $$ 其中 $C=AB$ 為矩陣相乘的結果,也是線性轉換 $UT$ 的矩陣表示式。至此我們可以瞭解矩陣乘矩陣和線性轉換合成之間的關聯。 而關於行列式的部分,強烈建議看看 [行列式 | 線性代數的本質 第五章 by 3Blue1Brown](https://www.youtube.com/watch?v=Ip3X9LOh2dk) 從幾何座標的角度講解 $2\times 2$ 和 $3\times 3$ 行列式值在幾何上的意義。 其中很重要的一個部分 $\text{det}(A)=0$ 也就是矩陣 $A$ 中的行或列向量並非線性獨立,這告訴我們矩陣的 $\text{rank}(A)\neq \text{dim}(A)$。**換言之 $A$ 並非以有序基底映射的矩陣表示式,也因為並非基底所以無法生成(span)原本線性轉換定義域的全空間。** 在[影片 3:05 處](https://youtu.be/Ip3X9LOh2dk?si=VMF4wPOp61wkgfLp&t=185) 可以看到兩向量張開的面積被壓縮成一條線,就是在告訴我們這個矩陣中的行或是列向量有線性相依的情況,無法生成原本的全空間,並非一組基底形成的矩陣表示式。 最後討論下影片最後的問題: 行列式 $\text{det}(AB)$ 與 $\text{det} (A)$ 和 $\text{det} (B)$ 的關係,其中 $\text{det} (A)$ 和 $\text{det} (B)$ 不為零,且 $A$ 和 $B$ 為大小相同的方陣可以寫成 $$ \text{det}(AB)=\text{det} (A)\text{det} (B) $$ 從計算可以證明這件事情,但從線性轉換跟幾何的角度思考,這件事情解釋起來就很簡單。由於皆為方陣,定義域和對應域的向量空間大小皆相同,$AB=[UT]_{\alpha}^{\gamma}$ 以線性轉換角度來看只是把一個有序基底 $\alpha$ 換成另一個有序基底 $\gamma$。將上述行列式的等號改以基底變換呈現為 $$ \text{det}([UT]_{\alpha}^{\gamma})=\text{det} ([T]^{\beta}_{\alpha})\text{det} ([U]_{\beta}^{\gamma}) $$ 等式右邊 $\text{det} ([T]^{\beta}_{\alpha})$ 是將面/體積從有序基底 $\alpha$ 映射至 $\beta$ 伸縮的係數,同理 $\text{det} ([T]^{\gamma}_{\beta})$。則兩個行列式相乘的過程就是,從 $\alpha$ 映射至 $\beta$ 做一次伸縮後得到的面/體積變化係數,乘上以基底 $\beta$ 為坐標系做一次映射至 $\gamma$ 坐標系的面/體積變化係數。 - [ ] 參考資料 * [Linear Algebra S. Friedberg A. Insel L. Spence Fourth Edition](https://www.tenlong.com.tw/products/9781292026503) * [行列式 | 線性代數的本質 第五章 by 3Blue1Brown](https://www.youtube.com/watch?v=Ip3X9LOh2dk)