Month: August 2016

  • [COSCUP 2016] Day2 Lightning Talk: 三分鐘送 first kernel patch

    今天的 ‪#‎COSCUP2016‬ ‪#‎LightningTalk‬ 講的是「三分鐘送 first kernel patch」,本來是在 OOP in C 跟 patch 想要用哪個,後來想說這個標題比較竦動就用這個了。 本方法只是讓新手(如我)有個進門的機會,了解 Linux kernel patching 的機制與方法。 這也是為什麼在 kernel staging tree 的這些 driver 沒有用 automation 的方式把錯誤都處理乾淨。  最後誠徵加入翻譯,目前正在翻譯 Object-oriented design patterns in the kernel, part 1/part 2,歡迎一起翻譯! 三分鐘送 first kernel patch (for 新手) from Louie Lu

  • LWN – File permissions in the kernel [August 3, 2016 by corbet]

    Linux kernel 中的檔案權限設計 LWN – File permissions in the kernel [August 3, 2016 by corbet] from: http://lwn.net/Articles/696227/ permission bits in linux 在 8/2 號的時候,Baole Ni 為了把 kernel 中有關 file permission 的 code 從八進位修改成 macro 的樣式,送了高達 1285 個 patch。David Miller 直接說這是「patch 史上最糟的一個 submit」。更猛的是,他的 patch 信還送給了不只一位的 developer… 會有這樣的改動是因為,kernel 中有關權限的部份,其實已經在 linux/stat.h 已經有 macro 可以使用,像是 S_IRWXUGO 或是 S_IRUGO 這種表示方式,但大多數在 kernel code 的實作,還是使用 0444 這樣的八進位表示方式。 一場大戰就此開打,首先大家在看到這個 patch 之後,先不論他直接送上 1285…

  • 2016-08-09 Operating Systems: Three Easy Pieces – Virtualization part

    今天在看從 CS537 – Spring 2013 介紹的參考書籍:Operating Systems: Three Easy Pieces 一整天看了 Virtualization 的部份,從 Process 到 Segmentation 的部份。(中間跳過 9 跟 10) Virtualization 主要分成兩個部份,第一是 CPU 的虛擬化,首先談到有關 CPU 虛擬化 mechanisms (機制) 的部份,同時也提到 mechanisms 跟 policies (法則) 在設計的時候會將其脫勾,以便於後續的設計順利,這個部份在 LDD3e 開頭的時候也有提到。 CPU 虛擬化在設計的時候,首先要面對到 exception / interrupt handler 與 context switch 的機制設計,接著提到排程的設計,CPU想要確保所有的程式都能夠公平且有效的被執行,因此發展了許多的排程方式,從 FIFO、SJF、RR 到 Multi-Level Feedback Queue 等排班方式,現代的 Linux 則使用了 O(1) 、…

  • 2016-08-08 SSE/AVX instruction set performance

    github: https://github.com/grapherd/sse-avx-instruction-set-performance 今天照著 Performance of SSE and AVX Instruction Sets 看了一遍,然後實作了3個論文中提到的最佳化辦法: * Data Packing* Data Reuse* Asynchronous Data Transfer (prefetch) 把 repo clone 下來之後,可以用 make 產生所有的執行檔。執行 main 可以看三種方式在 native / sse / avx 狀況下的執行速度。

  • 2016-08-02 epoll 與 timeout

    Sasha Pivovarova 翻譯 持續暫停中 Q_________Q 看了文章後才發現,原來大家英文都很好,可以直接看懂文章。 要不然怎麼會到現在都沒有翻譯的文章呢。 一定是我功力太弱了,要加強! Linux epoll epoll 是一個 Linux 上 select 與 poll 的替代品,其他平台可以參看 /dev/poll 與 kqueue。 會碰到這個是因為還在看昨天的 server-framework,目前大致上了解 epoll 的用途。 不過在搞懂用途之前,一直狀牆。原因有兩個,一個是對 socket 不熟,一個是因為對 http 不熟。 有關 socket 的部份,最後是靜下心來看了這篇文章後,跟著一個一個做才了解要怎麼在 Linux 上 控制 socket。 http://beej-zhtw.netdpi.net/05-system-call-or-bust/5-1-getaddrinfo-start 有關 http 的部份,看了一下 http keep-alive 的東西。 有關 epoll 的部份,參考了許多的文章如 https://banu.com/blog/2/how-to-use-epoll-a-complete-example-in-c/ (原文) http://www.oschina.net/translate/how-to-use-epoll-a-complete-example-in-c (簡中) http://man7.org/linux/man-pages/man2/epoll_wait.2.html http://man7.org/linux/man-pages/man7/epoll.7.html (參考程式碼) https://segmentfault.com/a/1190000003063859 (參考程式碼, 理解不同 I/O 模式)…

  • 2016-08-02 SIMD and SSE

    翻譯 暫停一天 (沒有進展) SIMD and SSE 2016q1h2: http://wiki.csie.ncku.edu.tw/embedded/2016q1h2 做 raytracing 作業,花了大約5~6個小時把 math-simd-toolkit.h  全修成 SIMD 版本,但是發現要把其他部份也一併改掉,要花更多時間,只能先放在這邊了。 參考資料有: SIMD optimized dot and cross product functions ストリーミング SIMD 拡張命令の算術演算 SIMD and SSE 中文資料很少,下次可以來補齊這部份。 Server Framework 2016q1h3: http://wiki.csie.ncku.edu.tw/embedded/2016q1h3 正在搞懂這程式怎麼運作以及效能比較。

  • 2016-08-01 翻譯 kernel OODP part2

    2016-08-01 今天在做啥 Freja Beha Erichsen, by Christopher Peterson 翻譯 今天持續在 hackmd.io 上翻譯 Object-oriented design patterns in the kernel, part 2  成中文版。透過這篇文章,讓我一步一步去了解 kernel 中的物件導向狀況以及各種實作與歷史,不得不說作者功力非常了得。 翻譯的同時,有用到這些資源,像是: C99 spec, 為了翻譯去看 C99 spec 也是很正常的事情吧? LXR,the linux cross referencer,用來看某個版本的 code 的工具 POSIX Thread 透過 llnl.gov 給的 pthread tutorial 了解 pthread 的實作,從建立 pthread 到 mutex, condition variables 等,這個網站的好處是他有附上練習,透過練習可以更進一步的去觀察 pthread 的機制怎麼運作,pthread 的另外一個介紹可看這個 Multithreaded Programming (POSIX pthreads…