[知識]運動完之後餓了請照吃!勿食過量!

Written on 1:28 下午 by Yu Lai

引述自 Personal Fitness Training Theory & Practice

嗯,一般論都是運動後短時間內不應該吃東西,我來提一點不一樣的看法。

其實在運動之後,全身血液的分配會產生暫時性的變化,肌肉充血,而相對的流到脂肪細胞的血就少了。因為血量分配的改變,血中的養分對肌肉與脂肪細胞的分配也會改變,這樣的情況會在半小時內很快的恢復正常。

在有個動物實驗中,運動後的動物被分成兩組,一組在運動後立即給食物,另一組則在四小時候才餵食,十個星期後在體重上雖無顯著差異,但對動物身材卻有顯著影響。立即餵食的動物脂肪組織比延遲餵食的動物脂肪組織重量少24%,且肌肉組織重量增高。該研究的結論是運動後肌肉對養分的競爭力增高,對能源儲存的分配造成明顯的影響。

在人體實驗中也有相似的結果,運動後的肌肉組織對醣類的儲存能力,以及蛋白質的合成能力都暫時增加,但這樣的能力這會在兩小時內明顯減退。另外,肌肉對三酸甘油脂的吸收能力優勢可以維持六個小時。

站在這個立場,運動後的半小時內其實是攝取食物的黃金時段,身體在這時給了一個把脂肪組織打入冷宮的時間,不趁此時更待何時?此外,運動中身體裡的肝醣被大量消耗,因此身體會處在低血醣的狀態,不適時補充一些營養的話,等於為身體準備了一個適合分解肌肉的環境,還維持好幾個小時...你運動是練心酸的嗎?Orz

運動中是消耗,運動完當然要補充。惟補充的應該是一些好吸收消化的東西。另外,絕不可因為『太餓』而過量,這應該很多先賢提過了,所謂運動後馬上吃東西會胖都是因為吃太多...

[技術] 如何避免Linux zombie process的產生

Written on 12:44 下午 by Yu Lai

最近在幫同事debug所遇到的zombie process的問題,Survey了一些心得,就po上來囉。

自Advanced Programming in the Unix Environment這本書:
The process that has terminated, but whose parent hasn't yet waited for it.

簡單的說,所謂zombie process(殭屍行程)的成因,在於某子行程已結束,但其父行程(parent process)並未取得該行程之結束狀態,則該行程就會變成zombie process,直到其父行程呼叫wait()取得該行程結束狀態。

Zombie process會造成kernel內部有多餘的一筆process資料儲存,佔了一筆資料量(process id, termination status, the amount of CPU time taken by the process等等資訊),但其卻已經結束了,若是系統load很高,造成的影響就更大了,譬如process數量到達上限,又發生有zombie process,可能就會產生無法執行程式的問題。因此我們必須避免zombie process的產生。

解決的方法之一就是利用Linux會在一個process的父行程結束時,自動把該行程的父行程變成init,也就是讓該process由init接管。因此,假設我們的父行程必須作自己的事情,並不想wait子行程結束而block時,我們可以利用兩次fork,讓第一次fork的process馬上結束,則第二次fork的grandchild將會自動變成init的子行程,這樣一來,最原先的行程將不必在作wait的動作,而該行程從此也跟第二次fork出來的行程毫無親屬關係了。兩者各作各的,誰先結束並不會影響對方。這就是fork兩次的用意:


if pid = fork()
//parent waits for first child to exit
waitpid(pid);
parent does things here...
else
//child
if fork()
//child
exit;
else
//granchild
grandchild does things here...