---
# System prepended metadata

title: ㄐㄉㄐㄒ

---

# ㄐㄉㄐㄒ
# 101交大
![image](https://hackmd.io/_uploads/S1qOA8BP1e.png)
Ans:E
A:Test&Set,swap皆為硬體
E:就是保護shared variable
![image](https://hackmd.io/_uploads/rkCnCLBP1g.png)
Ans:E
A:在run time
B:kernel使用slab
C:select unmodified
D:inverted Page Table是共用
![image](https://hackmd.io/_uploads/ByUZJDBvyg.png)
Ans:D
D:是一種file system的structure,在windows是file
linux有一regular,dictonary,symbolic link,device,named pipe,socket
![image](https://hackmd.io/_uploads/Skk2ywHw1l.png)
Ans:B
disk busy所以瓶頸在disk,所以和host interface無關
![image](https://hackmd.io/_uploads/SyAxlDrwyx.png)
Ans:B
A:因為他假設在現代計算機中，讀取操作可以通過大的內存快取來加速，因此寫入性能成為瓶頸。
B:log重點在提高寫入
C:假設隨機寫入成本很高
D:假設空間不足不是問題,更專注在性能上
E:因為會將log中的操作順序寫入到block,所以不會無限delay
![image](https://hackmd.io/_uploads/SyiT-wBwkg.png)
Ans:BCD
A:user data寫入1~n-1 寫入操作2~n
E:1 disk
![image](https://hackmd.io/_uploads/B1pzzPrPyg.png)
Ans:BCDE
BCDE皆在memory
![image](https://hackmd.io/_uploads/r1LrfvBD1x.png)
Ans:CDE
Singnatured-based:偵測已知特徵來辨認惡意軟體
Anomaly-base:偵測異常行為來辨認惡意軟體
A:突變了所以一定不知道
B:要確認privacy stealing malware已知才能偵測到
D:不算一種attack,但是用來檢測哪邊可以attack
E:要用strncpy(buffer, argv[1], sizeof(buffer)-1)
![image](https://hackmd.io/_uploads/S1fOQwHvke.png)
Ans:BD
A:有DNS attack
B:VM的好處,可以監測軟體,又不影響os
C:像是https就無法阻擋
E:Anomaly-based
![image](https://hackmd.io/_uploads/BJByVvHPyg.png)
Ans:BC
預設是優先權越高數值越高
A:time quantum小是IO bound,他們優先權高,所以是對IO bound有利
B:優先權改變所以是multilevel
C:time quantum大是CPU bound,通常會time quantum expired,可以看到數字增加
D:數字減少
E:KDE和GNOME是interact app,算是IO bound,他的priority會變小在sleep後
![image](https://hackmd.io/_uploads/S1sbHDBPJe.png)
Ans:ACD
thread共享code section, data section(有包括heap), os resources
A:他是malloc的資料,malloc資料存在heap,但若問buffer不共享,因為他是區域變數,在stack
B:ptr2是區域變數,在stack
C:i,j,k是static變數,在data section
D:a,b,c是global變數,在data section
E:buffer2是區域變數,在stack
# 102交大
![image](https://hackmd.io/_uploads/rJ_tWr0wJe.png)
Ans:D
A:邏輯格式化又叫高階格式化,創建file system在上面,低階格式化則是硬碟出場抹去此盤資料的行為
D:NAS透過標準網路連接,通常是區域網路
E:因為C-SCAN反向不執行任務,所以大家waiting or response time會更平均
![image](https://hackmd.io/_uploads/B1hkQSCP1x.png)
Ans:D
因為最後一格要插入/0,不能使用
![image](https://hackmd.io/_uploads/HJHvQBRD1x.png)
Ans:E
A:throughput
B:mini computer在嵌入式系統仍受歡迎
C:Moor's定律仍有效
D:不只這些
![image](https://hackmd.io/_uploads/r19sNHCwyl.png)
![image](https://hackmd.io/_uploads/Hk5YNHAvkg.png)
Ans:ADE
A:Java interpreter會轉java bytecode,再由JVM使用JIT轉machine code
B:MSLI改成CLI,都是JIT
E:管道皆FIFO,一種IPC方式,Anonymous pipe:單向,要父子關係,Named pipe:單向,不用父子關係,Windows pipe:雙向,不用父子
![image](https://hackmd.io/_uploads/SyAh_BCwyl.png)
![image](https://hackmd.io/_uploads/ryApuSAPyx.png)
Ans:AE
E:題目說資料結構不影響page fault rate,但實際上會影響
![image](https://hackmd.io/_uploads/r1DFKH0vJl.png)
Ans:AC
![image](https://hackmd.io/_uploads/By25FrADkx.png)
![image](https://hackmd.io/_uploads/HyIpKSCP1e.png)
Ans:ABCE
A:9個bit可用3個3bitCLA處理,他們會產生3個bit,要用另外一個3bitCLA處理,1+3=4
B:因為他們在較低的bit,當然較快
C:Gi+1=Gi+Pi*Ci
D:c4,c5,c6應該同時
![image](https://hackmd.io/_uploads/B1VRd8Aw1g.png)
![image](https://hackmd.io/_uploads/ryKEKL0v1g.png)
Ans:BD

# 103交大
![image](https://hackmd.io/_uploads/HkTNZN1_kg.png)
Ans:A
C:有kmalloc,vmalloc,malloc,前兩個是分配kernel的memory,後者是user的memory,kmalloc確保在physical address連續,vmalloc和malloc確保在virtual address連續
![image](https://hackmd.io/_uploads/ryfGMNkdJe.png)
![image](https://hackmd.io/_uploads/ryJQzE1_ye.png)
Ans:D
載入inode要花1次,存到5120要花5120次,接著5120在10th node的第二個,所以讀9th花1,讀10th的資料花3,共5125次
![image](https://hackmd.io/_uploads/Skf4NV1_kl.png)
Ans:E
E:write through仍需要載入資料到memory
![image](https://hackmd.io/_uploads/ryYDNEk_1l.png)
![image](https://hackmd.io/_uploads/HyD_ENJdyx.png)
![image](https://hackmd.io/_uploads/Sk55E4yu1x.png)
Ans:AC
A:假設資料都是因為compulsory miss,且16GB也夠的話,增加記憶體的確沒影響
B:執行時間不止受clock rate,也受miss penalty影響,所以若他的miss rate減少,他的termination time要減少
C:如B所述
D:不只first-time data會影響page fault,conflict或capacity miss也會影響,所以如果一開始就讀完全部資料,且記憶體夠大,則執行時間應該縮短
E:miss rate不可能0,一定有complusory miss
![image](https://hackmd.io/_uploads/ByQRL4ydJl.png)
Ans:BCE
A:file system可以掛載到任何點,只有root file system必須要mounted at root level
![image](https://hackmd.io/_uploads/SJ8C9VJOke.png)
Ans:BD
B:1+0.4*0.25=1.1
C:(1+0.4*2+0.4*0.25)/1.1
D:(1+0.4*3)/(1.1(1.9/1.1))
E:complier負責轉
![image](https://hackmd.io/_uploads/B1bfmB1dyl.png)
![image](https://hackmd.io/_uploads/Byz7QS1dJl.png)
Ans:D
安裝在手機,所以用64GB去存,每個app最多512MB,64GB/512MB=128
![image](https://hackmd.io/_uploads/ByhqmB1_Jl.png)
Ans:C
同時執行,所以看記憶體,working set是app一段時間所需memory,所以2GB/256MB=8
# 104交大
![image](https://hackmd.io/_uploads/r1cjSB1O1l.png)
Ans:A
![image](https://hackmd.io/_uploads/rkseIr1dyx.png)
![image](https://hackmd.io/_uploads/SkykPSyu1e.png)
Ans:E
C:OS追蹤CPU使用率、page-fault rate，由working-set model或 page-fault frequency scheme來決定是否已經產生thrashing。
![image](https://hackmd.io/_uploads/SJAgDr1dye.png)
Ans:E
要確保confidentiality在最外面就要用kpb加密,這樣只有bob解得開,而E比D好是因為D對M做了kpb的RSA加密,但RSA加密不適合大資料
![image](https://hackmd.io/_uploads/BkaFKBJuJg.png)
Ans:A
第一碼代表special permissoin bit
4 (SetUID)：執行時以檔案擁有者的身份執行
2 (SetGID)：執行時以群組的身份執行
1 (Sticky Bit)：對於目錄，僅擁有者可刪除或修改其中的檔案
接下來三碼代表:owner,group,other
![image](https://hackmd.io/_uploads/S1nDoHJ_Jx.png)
Ans:ABCDE
![image](https://hackmd.io/_uploads/H15UZIydkl.png)
Ans:BE
A:NFS可以mounted任何地方
C:1block 256 pointer,first level 256kB,two level 64MB
D:通常用off line,on line會花很多時間在I/O
![image](https://hackmd.io/_uploads/rJMPSUkdJg.png)
Ans:BCDE
A:大多數時候安全,但仍有不安全的時候
B:防火牆可以過濾,但像是https的攻擊就無法防禦到
C:入侵檢測系統,相比防火牆更動態
![image](https://hackmd.io/_uploads/r15i8UyOkx.png)
Ans:B
A:33,slt最後會拉回第一個bit的ALU,所以要加1
E:52/23=2.2,非2
![image](https://hackmd.io/_uploads/HJ8XdLydJe.png)
![image](https://hackmd.io/_uploads/ryOhtU1Oke.png)
![image](https://hackmd.io/_uploads/HyqrdUJuJl.png)
Ans:C
在4cylce時,因為sub和beq有data hazard,所以停1cycle,這時在IF的人是add,他的PC=44,所以adder output 48
![image](https://hackmd.io/_uploads/By_IuL1O1e.png)
Ans:D
在4cylce時,因為sub和beq有data hazard,所以停1cycle,這時在ID的人是beq,但他要跳,所以adder是輸出目的位置,40+4+7*4=72 
![image](https://hackmd.io/_uploads/r1xOdLku1x.png)
Ans:B
![image](https://hackmd.io/_uploads/r1bKO8k_Je.png)
Ans:E
![image](https://hackmd.io/_uploads/rJTK_Lkuyl.png)
Ans:E
add在ID偵測到和lw有hazard,所以七偵測,八停

# 105交大
![image](https://hackmd.io/_uploads/SyfiKxlO1x.png)
Ans:CD
C:兩階段鎖可是race condition可連續化,鎖分為兩階段,第一階段是擴展階段,在此階段中，鎖被獲取，且不釋放任何鎖,第二階段是收縮階段,在此階段中，鎖被釋放，且不再獲取任何鎖
![image](https://hackmd.io/_uploads/BJL2jexd1x.png)
Ans:AB
A:five components:Input,Output,Data path,memory,control
C:CPU bound,所以CPU burst長
D:管理thread也需要資源,所以適量就好
E:long term決定mix程度
![image](https://hackmd.io/_uploads/rkkyReg_1x.png)
Ans:ACDE
B:NAS 提供檔案系統存取，而 SAN 提供低層次的區塊存取，類似於本地硬碟
C:皆是NAS的file system
D:因為他是block level
E:NAS通常用區域網路連接
![image](https://hackmd.io/_uploads/rk8GJZld1g.png)
![image](https://hackmd.io/_uploads/Hy871bgO1l.png)
Ans:ABCD
A:將他從原本的memory space分離出來避免影響parent
B:因為child process不跟parent processe共享os資源
C:可以設定child process的權限,讓他只能做某些事
D:透過跑不同的UID設定權限
E:跟DDOS無關,仍然會遭到攻擊
![image](https://hackmd.io/_uploads/HkcYbZeu1x.png)
Ans:AD
A:5+4=9
B:兩兩間皆有data hazard,9+8=17
C:用complier做stall,所以stall lw後面,剩下forwarding,9+1=10
D:hazard detection會偵測,所以停1 stall,9+1=10
E:add跟lw有data hazard, forwarding會送
![image](https://hackmd.io/_uploads/SkGBV-xdyl.png)
Ans:AB
A:在mem決定要不要跳,stall 3 cycle,所以1+0.3*3=1.9
B:更深的pipeline會加重data hazard
C:要加flush防止猜錯
D:移到EXE,所以hazard加重,不一定改善
E:最快就是在ID

# 106交大
![image](https://hackmd.io/_uploads/H1R4dKe_kx.png)
Ans:ABD
B:最長stage
C:Exceptions 也是一種 control hazard 的形式,都需要清空 Pipeline 和轉移控制
![image](https://hackmd.io/_uploads/rypgqFldke.png)
Ans:ABC
interrupt會發生AB,I/O complete會發生C
![image](https://hackmd.io/_uploads/ryvuctgdkx.png)
Ans:ACD
A:兩種方式讀file,一個透過read()這種I/O system call直接讀,另外一個是mmap()這個system call,將file 映射到memory,接下來要讀取就不用system call,只要一般記憶體操作
C:fork()或vfork()是system call
D:I/O指令
![image](https://hackmd.io/_uploads/rkSW3Fe_Jx.png)
Ans:BD
A:就是要防止race condition,所以可以
B:test-and-set是特權指令,可在user space使用system call去保護shared memory的資源
C:busy wating
![image](https://hackmd.io/_uploads/SkA7pYgdkx.png)
![image](https://hackmd.io/_uploads/SyiEpYeOke.png)
Ans:D
B:page file是指virtual memory size,所以跟實體記憶體無關
![image](https://hackmd.io/_uploads/B19gCYldJx.png)
Ans:AB
A:disk traffic是指對disk做操作,由於memory增大,所以更多東西可以直接放到memory,read disk減少,所以只剩write disk
B:因為資料都在memory,所以disk seek減少
C:journaling file system在發生變化時，它先把相關的資訊寫入一個被稱為日誌的區域，然後再把變化寫入主檔案系統。在檔案系統發生故障（如核心崩潰或突然停電）時，日誌檔案系統更容易保持一致性，並且可以較快恢復,所以仍然需要,畢竟memory不保存資料
D:encryption是傳到disk做的check bit,所以不減少,增加clock rate才會減少
![image](https://hackmd.io/_uploads/HkCfe5l_1l.png)
Ans:BD
A:不同檔案系統很麻煩
B:改個指標
C:同A
D:將valid改成invalid
![image](https://hackmd.io/_uploads/HkG5l5gOyg.png)
Ans:B
Principle of Least Privilege每個用戶、應用程式或系統應僅被授予執行其任務所需的最小權限，以減少安全風險
A:是Defense in Depth Principle,因為多個防禦系統
C:Security Testing and Audit Principle,持續地測試和審查系統，以確保安全機制正確運行並能夠抵禦潛在威脅
D:Security Patching and Change Management Principle,修補已知的漏洞、增強系統安全性，並確保系統始終運行最新的安全修正版本
![image](https://hackmd.io/_uploads/HkKPZqxdJl.png)
Ans:ABCD
A:Static Code Analysis可在編譯階段檢查程式碼，偵測超出陣列邊界的寫入，防止潛在的緩衝區溢位漏洞
B:Address Space Layout Randomization,ASLR技術,透過隨機化程式庫的基底位址，增加攻擊者預測記憶體位置的難度，從而減少緩衝區溢位攻擊
C:同B
D:Java 和 Python 等高級語言具備內建的記憶體管理功能，例如邊界檢查和垃圾回收，這些機制在執行時可以防止直接存取記憶體，從而降低緩衝區溢位
# 107交大
![image](https://hackmd.io/_uploads/HkC8vvSwJx.png)
Ans:D
A:不能直接在hardward,要轉機器語言才能在hardware執行
B:同系列也不能執行
C:Assembler read 組合語言
![image](https://hackmd.io/_uploads/BJ9qdwHw1x.png)
Ans:BD
five components:Input,Output,Data path,memory,control
four computer system:Input,Output,processor,memory
A:CPU是datapath加control
B:
* Datapath:
The component of the processor that performs arithmetic operation
* Control:
The component of the processor that commands the datapath, memory, and I/O devices according to the instrutions of the program

D:Input和Output
![image](https://hackmd.io/_uploads/H1E1qDrvke.png)
Ans:CD
A:response time單位是時間,throughput是工作量
B:user care response time
D:提高clock rate才會減少response time
![image](https://hackmd.io/_uploads/BJDd9vBPkl.png)
Ans:BD
A:不會加大memory容量,且是為了減少AMAT
B:many byte in size所以是spatial locality
C:太大cost大
D:Cache由硬體(cache control)控制,OS不用知道,但OS知道MMU
![image](https://hackmd.io/_uploads/S1rUnwHPJl.png)
![image](https://hackmd.io/_uploads/H1TP2Prvyx.png)
Ans:BD
A:magnetic是sequential
B:
![image](https://hackmd.io/_uploads/HkFxCDrwkx.png)
C:組合語言
D:cache set size太大會使miss penalty太高,所以降低size使penalty降低;而在page這邊,因為page fault要去memory搬,penalty太高,所以希望能增加page,降低miss rate,使penalty降低
![image](https://hackmd.io/_uploads/H1mBlurDkg.png)
Ans:ACD
選擇有參數可調的
![image](https://hackmd.io/_uploads/B1r0eOHP1g.png)
Ans:CD
A:這是deadlock revocery
B:zombie process才有memory leak的問題
C:因為資源申請不一定通過,所以同時跑的變少
D:會讓可先做完得做,有可能低優先權的先拿到資源
![image](https://hackmd.io/_uploads/r1vw-uBDke.png)
Ans:D
A:64bit通常適合4 level以上
B:inverted page table存每個process,大家共用,增加search time,但減少memory使用,因為原本是每個process有自己的page table
C:外碎
![image](https://hackmd.io/_uploads/rJQwEdrvke.png)
Ans:AB
C:signed by the 憑證機構
D:使用secret key做hash
![image](https://hackmd.io/_uploads/HJEIrOSPkx.png)
Ans:A
A:除RSA都為對稱
B:RC4是stream
C:非對稱有public key
D:password會加密
![image](https://hackmd.io/_uploads/HJkXvdSPyl.png)
Ans:ABC
A:使用strcpy要檢查size
B:因為沒限制字數,所以會buffer-overflow
C:strcpy會return目的位址,當發生buffer-overflow他就會返回非法的位址,這就是buffer-overflow attack
D:strncpy不會overflow
![image](https://hackmd.io/_uploads/H167d_BD1g.png)
![image](https://hackmd.io/_uploads/Hk9KO_Bvye.png)
![image](https://hackmd.io/_uploads/Bkv5u_Bw1x.png)
Ans:D
Authentication驗證性,所以Bob想知道它是由Alice傳,所以M直接送,但M有可能同樣,所以可透過對M做hash,再由Ksa加密,Bob只要用kpa解密,再對M做hash,檢查是否一樣,即可知道是Alice送的
![image](https://hackmd.io/_uploads/HyVet_Svyg.png)
Ans:C
Confidentaility保密性,不想讓大家知道,所以M要加密,但M很大所以不適合用RSA加密,所以用AES Kda加密,但大家沒有Kda所以要送Kda出去,所以使用Kpb加密可使其只能被Bob解密
![image](https://hackmd.io/_uploads/Hk8SYOSPkl.png)
Ans:D
兩個都要,所以資料的部分就是31題的東西,他們用Kda加密,再將Kda用Kbp加密送出去
# 108交大
![image](https://hackmd.io/_uploads/S1St9YBP1x.png)
Ans:CD
A:register,stack,pc不共享
B:pc不共享
C:因為multi-core只會用kernel
D:他們有共享資料所以有RC
![image](https://hackmd.io/_uploads/Byr-nFBwyg.png)
Ans:ABD
A:虛擬記憶體的好處
C:moidfied才要write
D:Page fault由os處理
![image](https://hackmd.io/_uploads/HkP-6Krv1x.png)
Ans:ABCD
A:Inverted page table,PID是tage,data是PPN
B:
* hash page table
將logical address的page透過雜湊運算，取得hash table內的bucket address。每個bucket，都用link list來連接擁有相同hashing number的page number跟frame number。後來再去link list中搜尋符合的page number，取得frame number，在與offset相加取得physical address。
Hashed table內的element有：
1.虛擬的page number(bucket address)
2.Mapped page frame的值
3.到下一個element的指標

C:outer link,inner frame number
D:因為每層都連到一個page table,page table又在memory所以penalty高
![image](https://hackmd.io/_uploads/ryziRFBvyl.png)
Ans:ABC
A:連續對大檔案很好
B:file fragmentation是說檔案非連續的分佈
C:linked的random最差,使用FAT可以改善
D:extent是Continguous的link版,透過新的小單位link,因為是連續所以不允許file fragmentation,會定期壓縮
![image](https://hackmd.io/_uploads/HywRkcrwke.png)
Ans:CD
A:增加clock rate,要可平行化才可以透過增加core降低response time(這邊的response time是完成任務的時間,非OS的定義)
B:不同ISA不可比較
D:沒考慮指令間的強度

![image](https://hackmd.io/_uploads/SkTuxqHvyl.png)
Ans:ACD
A:Simplicity favors regularity:指令大小一樣,暫存器位子一樣,三個register
B:smaller is faster:只有32個register
C:Make the common case fast:beq的pc relative,常數指令
D:Good design demands good compromises:三種指令格式
![未命名](https://hackmd.io/_uploads/HkklmcHwyg.jpg)
Ans:B
A:通常最差
B:因為硬體可重複使用,所以省成本,也可最小化硬體
C:multi-cycle需要latch
D:二跟三最常見
![image](https://hackmd.io/_uploads/HkNCQ5BvJe.png)
![image](https://hackmd.io/_uploads/r18JEqrPke.png)
Ans:BC
A:算數錯誤所以沒正確答案可算出來
BC:暫停或忽略是常見做法
D:公認的complier也無法避免
![image](https://hackmd.io/_uploads/HkBDN5Bvyl.png)
![image](https://hackmd.io/_uploads/HkVuEqrwJg.png)
Ans:D
因為cache size是4 line,每個line可存一個instruciton,又因為是direct所以有指令要mod 4得出cache index,所以i(0)和i(4)對應到同一個欄位,他們有conflict miss,每五次有兩次miss,所以hit rate是3/5
![image](https://hackmd.io/_uploads/rJu7Icrv1l.png)
Ans:A
fully所以有位子就放
ic:
012340123401234...
cache:
012301230123012...
H/M:
000000000000000...
![image](https://hackmd.io/_uploads/SyVEwcrDkl.png)
Ans:B
MRU所以換剛剛換的
ic:
012340123401234...
cache:
012330122301123...
H/M:
000001110111011...
# 109交大
![image](https://hackmd.io/_uploads/Sk0mK9BDkx.png)
Ans:ABC
A:因為把非必要的都移到user,所以要使用時都要呼叫kernel,communication overhead大
B:shared memory由os保護,一般user使用自己的memory不用system call
C:DMA每block傳interrupt,可減少interrupt
![image](https://hackmd.io/_uploads/HJzHq9BP1g.png)
Ans:ABD
B:PID不變,code section,data section改變
C:I/O blocking所以去waiting
![image](https://hackmd.io/_uploads/rJwncqBDJg.png)
Ans:BC
B:heap是動態的
![image](https://hackmd.io/_uploads/BkFLjcBDke.png)
Ans:AD
B:page table由VMM和MMU管理
C:page table由process大小決定,所以不便,但frame number會變
![image](https://hackmd.io/_uploads/rJSGa5SDyg.png)
Ans:AC
A:Vector將多條指令打包成一個,所以對bandwidth要求較少,而GPU透過高速的bandwidth去減少memory latency
B:vector仍有hazard,基本上多多少少都有hazard,只是多跟少而已
C:WSC重視disk,cpu利用低
D:卡在S1
![image](https://hackmd.io/_uploads/SyCpRqrP1e.png)
![image](https://hackmd.io/_uploads/HJM11iBv1l.png)
Ans:ACD
A:仍須透過pipeline register傳遞
C:停1cycle
D:reservation station的input來自instruction fetech/decode unit和commit unit
![image](https://hackmd.io/_uploads/BJcwQoSwyl.png)
Ans:D
匿名分頁（anonymous pages）：由於這些分頁沒有對應到實際的檔案，所以被叫做「匿名」的分頁，stack 跟 heap 就是屬於這種類型。如果您的程式使用 malloc() 或 new，那麼配置的記憶體就屬於這種。
可以被修改就不能skip,只有像kernel的才可以
D:swap size滿了就不能swap
![image](https://hackmd.io/_uploads/BkkxBiHwJg.png)
![image](https://hackmd.io/_uploads/SJLbHsHw1e.png)
![image](https://hackmd.io/_uploads/ryvA4oBPJe.png)
Ans:B
經過not+2-mux+and+4-mux=1+1+2+4=8
![image](https://hackmd.io/_uploads/ry83SirDyl.png)
Ans:D
經過2-mux+32 * adder+4-mun=2+32 * 3+4=102
![image](https://hackmd.io/_uploads/r1G_IsBDJx.png)
![image](https://hackmd.io/_uploads/rJgYIiSw1x.png)
Ans:D
經過not+2-mux+32 * adder+4-mux=1+2+32 * 3+4=103
# 110交大
![image](https://hackmd.io/_uploads/SJ61sbdw1e.png)
Ans:ABD
A:tree不能共享,因為絕對路徑唯一,只有acylic,general graph可以透過symbol link共享
B:有symbolic link就有懸空pointer,所以會指向不存在的
C:在count變零前,file不會刪除,General graph才可能
D:General graph需要garbage collection,因為reference counter在general graph沒有用處
![image](https://hackmd.io/_uploads/ByOnTz_vyg.png)
Ans:BD
A:Buddy會一直找他可以放的,slab才是先創建好
B:slab類似一個pool,會存在用的跟空的
C:Buddy必定是2的冪次方
D:Buddy是為了減少外碎,所以分配好幾塊,沒被使用的可以合在一起,但因尺寸是2^m,所以內碎嚴重,slab透過更小的尺寸緩減Buddy的內碎,尺寸也是2的冪次方
![image](https://hackmd.io/_uploads/ByrN-m_vkx.png)
Ans:AC
A:system call算是一種trap
B:用system call table 來找尋對應的 trap service routine,ISR 是for interrupt
D:DMA用來處理I/O和memory
![image](https://hackmd.io/_uploads/S1HdXmuDJg.png)
Ans:B
receive是blocking,所以一定收得到
send blocking,所以receive發生在send前的話會收不到,但在後就收得到
![image](https://hackmd.io/_uploads/SJgXN7dw1e.png)
Ans:BCD
A:降低,因為他卡大家
BC:I/O優先權高
![未命名](https://hackmd.io/_uploads/S18F4muDJx.jpg)
Ans:ACD
A:這邊有提到他將task分成好幾個sub-task,所以可以透過增加core,降低response time
D:因為Ca有較少的MIPS且花的時間少,所以他的指令強大,相比Cb更像CISC
![image](https://hackmd.io/_uploads/S1wmUXdPyg.png)
Ans:BD
A:因為j可跳更遠
C:sticky bit 1 bit
![image](https://hackmd.io/_uploads/BJPeD7_w1g.png)
Ans:BC
A:ALU非clock觸發的,這邊用control signal比較好,且clock通常出發時序電路(Register,PC,Data MEM,那些在架構中只與pipeline register相連的)非組合電路
D:用stall可解
![image](https://hackmd.io/_uploads/HJh1cXuPyl.png)
Ans:C
A:stall就好
B:不保證in-order completion,可以重排指令,使用reorder of buffer可使fetech仍是sequential,但執行是out of order
D:in-order仍有WAR dependence,但是不會造成hazard
![image](https://hackmd.io/_uploads/r1vqiXOP1l.png)
Ans:BC
A:AMAT短不代表每個都短
D:L1 miss rate*(L1 miss penalty)
![image](https://hackmd.io/_uploads/B1KShmuvkl.png)
Ans:BCD
B:main memory兩個都有用到
C:cache controller是硬體
D:用non-blocking cache繼續做能做的
# 111交大
![image](https://hackmd.io/_uploads/Skz5fPYPkg.png)
![image](https://hackmd.io/_uploads/rk2izPFDJe.png)
Ans:AC
condition variable像是一種flag,當他被signal代表大家可以搶,所以沒人搶的話也沒關係,semaphore比較像是計數器,會記錄有多少人在裡面
![image](https://hackmd.io/_uploads/ByrcQvFv1g.png)
Ans:BD
A:不會整個加載
B:將file存到user space,才會快
C:read(),write()仍是普通的I/O操作,依然是對文件做讀寫,不是memory
D:標準I/O會被映射到kernel,所以要做的時候會複製kernel到user
![image](https://hackmd.io/_uploads/Hk0pNg5ukg.png)
Ans:ABCD
前2048是存block,接著存1-level的table,2-level table, 3-level table,每個table有2048個entry
direct=2K * 4K=8M
1-level indirect=2K * 4k=8M
2-level indirect=2K * 2K * 4K=16M
3-level indirect=2K * 2K * 2K * 4K=32T
![image](https://hackmd.io/_uploads/r1d4HwYPJx.png)
Ans:BD
A:Linux對於用不到的會自動卸載
B:Linux透過binfmt,維護一張函數表,當核心需要執行一個二進制檔案時，會參考這個函數表，逐一檢查每種格式的處理器
C:slab for kernel
D:static會有多個copy很浪費,dynamic就一份copy
![image](https://hackmd.io/_uploads/B1fRBl5u1x.png)
Ans:B
A:C=A-B-1 (0,1,0,2),C=B-A-1 (1,0,0,2)
B:slt所以B要反轉,接著因為有二補數運算,所以Cin要加1,最後把結果拉回C0,其他皆設為0
C:C=A < B (1,0,1,3),其他跟B一樣
D:判斷相等和less無關,只要D0一個bit就好,透過NOR生成
![image](https://hackmd.io/_uploads/Hy9j8vtD1l.png)
Ans:A
A:DMA結束時會interrupt CPU,所以需要interrupt才能用DMA
B:memory mapped I/O跟DMA並無直接關係
C:DMA不能接受複雜的I/O
D:非問題,資料一致性才是問題
![image](https://hackmd.io/_uploads/BJgqux9d1x.png)
Ans:BC
IF,ID暫停,所以保留這兩個pipeline register的值,PC也不改變,所以除了BC,ID/EXE write也要設為0
![image](https://hackmd.io/_uploads/HJ8oFvKPyg.png)
![image](https://hackmd.io/_uploads/r1lCtPFvke.png)
Ans:B
1-level page table + 1-level cache = 100 + 1
![image](https://hackmd.io/_uploads/ByE-qDtD1e.png)
Ans:C
1-level page table + 2-level page table + 1-level cahce + 2-level cache + memory = 100 + 100 + 1 + 10 + 100 = 311
![image](https://hackmd.io/_uploads/HyjS5DFDJe.png)
Ans:C
linked list entry is 4所以要存0 1 2 3 4,共五次
5 * 100 + 1-level cache + 2-level cache + memory = 500 + 1 + 10 + 100 = 611
![image](https://hackmd.io/_uploads/By-n9DYvyg.png)
Ans:C
1-level page table + 1-level cache + 0.4(2-level cache) + 0.1(memory) = 100 + 1 + 4 + 10 = 115
# 112交大
![image](https://hackmd.io/_uploads/BJKjsvYvyg.png)
Ans:CD
A:每個process有自己的virtual address, shared memory應該是mapped to the same physical address
B:X得事情跟Y無關
C:可以swap
D:virtual memory允許比實際記憶體大的process跑
![image](https://hackmd.io/_uploads/BJGGaDtPkl.png)
Ans:CD
A:DMA是跟I/O
B:加快,因為I/O都由DMA做掉,CPU專注在計算上
CD:皆可
![image](https://hackmd.io/_uploads/ryNRpvtvyg.png)
Ans:AD
BC:可透過link的方式直接連過去
![image](https://hackmd.io/_uploads/HyTcJuFvJg.png)
Ans:AC
B:process stack不共享,呼叫很多function才會run out stack
C:System contention scope
D:stack section
![image](https://hackmd.io/_uploads/rk-9xdKvye.png)
Ans:BC
A:會進到waiting queue,非busy
C:pthread_cond_signal() signal一個,pthread_cond_broadcast() signal多個
D:通常繼續執行或等被救的人做完
![image](https://hackmd.io/_uploads/HJCOMuYP1g.png)
Ans:ABC
B:single cycle沒load-use hazard
![image](https://hackmd.io/_uploads/rJ_JmutwJg.png)
# 113交大
![image](https://hackmd.io/_uploads/rJ9FSMnvkg.png)
Ans:ABCD
A:CR0是control register,只能在ring0
B:HLT是Halt,暫停CPU,直到中斷產生,ring0
C:Load Global Description Table,載入全域描述表,ring0
D:Load Interpret Description Table,載入中斷描述表,ring0
![image](https://hackmd.io/_uploads/Bk9L8f3w1l.png)
Ans:ABCD
position-independent是指指令與當前所在位址無關,像是beq那種就是有關
C:觸發trap
![未命名](https://hackmd.io/_uploads/ByIeDMnDyl.jpg)
![image](https://hackmd.io/_uploads/Hy0ZwM2D1g.png)
Ans:CD
A:在17行的時候,buffer設定成可讀,寫,執行,在23行時,透過sprintf將字串送給buffer,在25行時,buffer設定成不可讀,寫,執行,所以在31行執行printf時,會發生段錯誤
B:buffer所指向的資料區塊在heap,因為是alligned_alloc生成
C:pagesize是local variable,在stack
D:因為aligned pagesize,所以是他的倍數
![image](https://hackmd.io/_uploads/r1x4dz3Dyl.png)
Ans:AD
B:stack不共享
C:read write仍是I/O指令,所以還是要os,除非用memory mapped file之類的
![image](https://hackmd.io/_uploads/SJUgtz2vyx.png)
Ans:ABD
A:SSD contoller雖然是硬體,但他可通過他的韌體也就是software layer,去管理哪邊寫比較好
C:DRAM不會發出interrupt,應該是由CPU發出interrupt
D:因為anonymous沒有備份,所以使用swap space去儲存
![image](https://hackmd.io/_uploads/H1MZcGnw1l.png)
Ans:CD
A:user只能使用virtual address
B:page table由os管理,所以不能在user space發出page fault,應該在kernel由MMU發出
C:cow會在要修改才複製一份出去
D:當發生TLB miss時,CPU要去page table找,找不到才會由OS介入
![image](https://hackmd.io/_uploads/Skcn9G2DJe.png)
Ans:AC
B:副檔名可選
C:UNIX semantics
D:raw partition就是沒file system,但開檔案一定要file system
![image](https://hackmd.io/_uploads/HyPvjMnPJx.png)
Ans:CD
A:2 stall
B:pc = pc + 4 + sign-ext(imm) * 4
C:這邊的tagged不是cache的tag,比較像dirty bit那種標記,所以可以加速
D:相關性分支預測器(Correlating Branch Predictors): 用其他分支的表現（可能也包含自己這個分支）來做預測
通常以(M,N) Predictors表示，其表示利用最近的M個branch的taken/not taken所構成的pattern，由這個pattern來選擇要看那一個branch-prdicttion buffer，而branch-prdiction buffer的每一個entries都是N bit的counter。
![image](https://hackmd.io/_uploads/rk3Unz3wkl.png)
Ans:AB
A:很吃記憶體,所以增加memory的效能有好處
B:在邊緣運算所以資料不會回傳中心,很安全
C:GPU耗能還是要擔心的
D:仍受功耗限制
![image](https://hackmd.io/_uploads/r1F4aM2v1l.png)
Ans:ABD
一個p跟好幾個d做xor,將d所在位置轉成二進位,要與1位址的p做xor
B:增加p4可以得知雙錯誤,但無法更正















