Category: Linux
-
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…
-
2016-07-30 繼續翻譯 OO design pattern in kernel,收到 stm32f4!
今天持續翻譯 LWN 的 Object-oriented design patterns in the kernel, part 1,因為裏面提到的例子跟 filesystem 非常有關,就拿起 Linux Kernel Development 3e 出來翻了。然後在物件導向的地方參看了 jserv 的影片 https://www.youtube.com/watch?v=IG6q8WX0sK4,比較理解 C 的物件導向的概念是如何實現的,連帶比較搞懂整篇文章例子與架構在做什麼了。 然後早上收到 jserv 寄來的開發板三塊!分別是 stm32f4-discovery、respberry pi 3 ver.b、linkit 7688,把玩了一下 stm32f4-discovery,在過程中遇到這個問題: 2016-07-30T16:15:44 WARN src/usb.c: Couldn’t find any ST-Link/V2 devices我的背景是 archlinux,用 lsusb 明明就有看到出現在裏面,卻沒有辦法找到 devices,照著前人的 note 重新編譯 st-link 跟 openocd 還是遇到相同的問題。最後在 google 搜尋了一下後,發現是沒有用 sudo 來執行,導致 st-util 無法找到 devices…,這在前人的 note…
-
Object-oriented design patterns in the kernel, part 1 中文翻譯
Object-oriented design patterns in the kernel, part 1 Neil Brown June 1, 2011 …