分享到plurk 分享到twitter 分享到facebook

Week #3 (Mar 10) :: ARM Architecture

科技公司面試心得

教材

  • fork() 系統呼叫的原理
  • 一個fork的面試題
    • 假設 fork.c 編譯出來的結果是 fork,則可用這個指令計算 ‘-’ 數量: ./fork | wc -c
  • In fork() which will run first, parent or child?
    • sudo sysctl -w kernel.sched_child_runs_first=1
    • 基本能力鑑定 的第 4 題題意不清,所以沒有辦法作答
  • 在 GNU/Linux 上測試:事先開啟兩個虛擬終端機視窗,如下圖
    • 右邊是測試程式 (test.c),使用 watch -n 1 ./test 每秒更新執行結果一次。耐心凝視結果一陣子,是否發現輸出結果會跳動?
    • 使用左邊執行 sudo sysctl -w kernel.sched_child_runs_first=1,以便要求 Linux 排程器 (CFS) 讓 child process 優先於 parent process 執行

test.c 程式碼如下,編譯請用 gcc -o test -std=c99 test.c

    int main()
    {
       for (int i = 0; i < 3; i++) {
           if (fork() == 0) {
               printf("Child sees i = %d\n", i);
               exit(1);
           } else {
               printf("Parent sees i = %d\n", i);
           }
        }
    }
if (z == 1) R1 = R2 + (R3 * 4) 

對應的 ARM 組合語言為

addeqs r1, r2, r3, lsl #2

先修材料

作業須知 (Lab-39)

  • 作業描述: Lab 39
  • 截止日期: Mar 21, 2015 (含) 之前