---
# System prepended metadata

title: 第一次會談後問答

---

## heap 和 stack 為何不相鄰？
1. 因為程式執行之初，作業系統無法事先知道哪一個會被大量使用，所以將兩者分別置於記憶體的邊緣，這樣只要兩者尚未碰撞，記憶體就能被充分利用。
2. 如果堆疊和堆積各自預留固定大小的區域，當其中一個區域未被充分利用時，就會造成浪費。[參考資料](https://gist.github.com/cpq/8598782) 
3. 只需監控堆疊和堆積的邊界是否相遇即可判斷記憶體是否耗盡

## heap 和 stack 何者佔用較多空間？
1. The most important reason that programs use dynamic memory allocation is that often they do not know the sizes of certain data structures until the program actually runs.，因為無法確認執行期間會用到的空間大小，所以多用heap來儲存資料
2. stack 則用來存放函式呼叫的區域變數、參數等，這些資料通常是已知且較小的固定大小，stack 的空間在程式啟動時就已經設定好；heap中儲存物件的實例，而且會一直存在直到被free掉 [參考資料](https://dev.to/felipejansendeveloper/heap-memory-vs-stack-memory-in-java-whats-the-difference-1lnm) 
3. 新發現：heap其實是一個大空間，依照需求分配空間儲存資料 ，並非一定像堆疊一樣 下面有資料才可以往上[參考資料](https://www.baeldung.com/cs/memory-stack-vs-heap) 

:::danger
應當參照第一手材料，例如 Linux 核心、GCC/glibc 手冊等資訊。
:::

## 802.11a/b/g/n
根據老師推薦用書：802.11無線網路技術導論
書中p.6

| IEEE標準  | 速度         | 頻段   |
| ------- | ---------- | ---- |
| 802.11  | 1、2Mbps    | 2.4G |
| 802.11a | 最高54Mbps   | 5G   |
| 802.11b | 5.5、11Mbps | 2.4G |
| 802.11g | 最高54Mbps   | 2.4G |

新發現：傳輸速率的重點是`頻寬 + 調變技術`
## IBSS
根據老師推薦用書：802.11無線網路技術導論
書中p.12
- 工作站可以彼此互相通訊，通常為小型且短暫。因為持續時間不長、規模小且特殊，因此又被稱為**ad hoc BSS**
### 補充：BSS
定義：是一組可以彼此通訊的裝置
### 補充：infrastructure BSS
定義：所有工作站之間的通訊都須經由基地台處理，必有兩個步驟：
 1. 工作站將frame傳給基地台
 2. 基地台將frame傳給目標工作站

優點：
1. 減少實體層的複雜度，工作站之間不須維護與其他工作站的連線狀態
2. 省電。基地台會幫處於省電模式的工作站暫存frame，等他要傳輸或接收時再傳給他
### 補充：網路界限
在同個物理區間之中，可以有複數個BSS，由於他們共用通一個頻段，所以會有效能上的消長

## roaming
書中提及相關概念，但並未明確指出`roaming`這個名詞。
當無線終端逐漸遠離目前關聯的AP時，終端感知到訊號強度逐漸下降，就會廣播偵測封包感知週邊AP的存在並與之互動。 當無線終端的訊號達到漫遊的閘限值之後，無線終端觸發漫遊，與新的AP進行關聯、與原有AP斷開連接，完成AP的切換[參考資料](https://www.wpgdadatong.com/blog/detail/75598) 

:::danger
參照 IEEE 802.11 規格書來回覆，不要只是鸚鵡學舌
:::

### 補充：BSS、ESS之間切換
- BSS：基地台認為可以切換時，就會觸發「重新連接」的服務，可以無痛轉移
- ESS：802.11並未支援ESS之間的轉換，意味著，在轉換期間必定會斷聯