在並行運算領域,哲學家就餐問題(英語:Dining philosophers problem)是一個經典問題,此問題可能會導致死結(deadlock)或飢餓(starvation)。
常見的解決方式有服務生解法,資源分級解法,Chandy/Misra解法。細節可參考 wiki 的 哲學家就餐問題。
解決此問題的基本概念,便是讓共享的資源在不同執行緒內可以受到控制,但有時因為設計不良,便會出現競爭危害(race hazard)。又稱為競爭條件(race condition)
本篇將針對 race condition 的偵測及解決方式作一介紹。
2017年2月27日 星期一
2017年2月25日 星期六
Cross compile valgrind for ARM-Linux
紀錄一下編譯 valgrind 的過程,也許有天會用得到。
1. Download valgrind
2. 編譯程式
3. 確認檔案編譯正確,並用 qemu-arm 檢查檔案是否可以正確執行
1. Download valgrind
使用的版本是 valgrind 3.12.0 -- 20 October 2016.
可從此處下載 http://www.valgrind.org/downloads/valgrind-3.12.0.tar.bz2
2. 編譯程式
$ wget http://www.valgrind.org/downloads/valgrind-3.12.0.tar.bz2
$ tar jxvf ./valgrind-3.12.0.tar.bz2
$ cd valgrind-3.12.0/
先修改目錄下的 configure, 尋找 armv7, 取代成 arm
$ CC=arm-none-linux-gnueabi-gcc ./configure --host=arm-none-linux-gnueabi --target=arm-none-linux-gnueabi --prefix=$HOME/test/valgrind CFLAGS=-static
$ make
$ make install
3. 確認檔案編譯正確,並用 qemu-arm 檢查檔案是否可以正確執行
$ file valgrind4. 若安裝路徑有問題,可以使用下列方式安裝
valgrind: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), statically linked, for GNU/Linux 2.6.16, not stripped
./configure --prefix=/target/board/pathReference:
make install DESTDIR=/local/path
- http://www.valgrind.org/
- https://github.com/svn2github/valgrind/blob/master/README
- http://ottoshare.blogspot.tw/2012/03/valgrind.html
- http://stackoverflow.com/questions/16920581/valgrind-in-arm-cortex-a8-issue-configure-error-unsupported-host-architecture
- http://stackoverflow.com/questions/11307465/destdir-and-prefix-of-make
2017年2月9日 星期四
RTSP SDP 的 profile-level-id
晚上看到對岸同胞的部落格,將重點整理如下,作一記錄。
在 RTSP Describe 所回覆的 SDP 內容中,會出現下列的描述,此處 packetization-mode 與 profile-level-id 各是什麼意思呢
在 RTSP Describe 所回覆的 SDP 內容中,會出現下列的描述,此處 packetization-mode 與 profile-level-id 各是什麼意思呢
a=fmtp:96 packetization-mode=1;profile-level-id=4D0029;sprop-parameter-sets=Z00AKZpigPAET8uAtQEBAUAAAPoAADqYOhgA9CAAA7msrvLjQwAehAAAdzWV3lwo,aO48gA==
訂閱:
文章 (Atom)