# ㄐㄉㄐㄒ
# 101交大

Ans:E
A:Test&Set,swap皆為硬體
E:就是保護shared variable

Ans:E
A:在run time
B:kernel使用slab
C:select unmodified
D:inverted Page Table是共用

Ans:D
D:是一種file system的structure,在windows是file
linux有一regular,dictonary,symbolic link,device,named pipe,socket

Ans:B
disk busy所以瓶頸在disk,所以和host interface無關

Ans:B
A:因為他假設在現代計算機中,讀取操作可以通過大的內存快取來加速,因此寫入性能成為瓶頸。
B:log重點在提高寫入
C:假設隨機寫入成本很高
D:假設空間不足不是問題,更專注在性能上
E:因為會將log中的操作順序寫入到block,所以不會無限delay

Ans:BCD
A:user data寫入1~n-1 寫入操作2~n
E:1 disk

Ans:BCDE
BCDE皆在memory

Ans:CDE
Singnatured-based:偵測已知特徵來辨認惡意軟體
Anomaly-base:偵測異常行為來辨認惡意軟體
A:突變了所以一定不知道
B:要確認privacy stealing malware已知才能偵測到
D:不算一種attack,但是用來檢測哪邊可以attack
E:要用strncpy(buffer, argv[1], sizeof(buffer)-1)

Ans:BD
A:有DNS attack
B:VM的好處,可以監測軟體,又不影響os
C:像是https就無法阻擋
E:Anomaly-based

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後

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交大

Ans:D
A:邏輯格式化又叫高階格式化,創建file system在上面,低階格式化則是硬碟出場抹去此盤資料的行為
D:NAS透過標準網路連接,通常是區域網路
E:因為C-SCAN反向不執行任務,所以大家waiting or response time會更平均

Ans:D
因為最後一格要插入/0,不能使用

Ans:E
A:throughput
B:mini computer在嵌入式系統仍受歡迎
C:Moor's定律仍有效
D:不只這些


Ans:ADE
A:Java interpreter會轉java bytecode,再由JVM使用JIT轉machine code
B:MSLI改成CLI,都是JIT
E:管道皆FIFO,一種IPC方式,Anonymous pipe:單向,要父子關係,Named pipe:單向,不用父子關係,Windows pipe:雙向,不用父子


Ans:AE
E:題目說資料結構不影響page fault rate,但實際上會影響

Ans:AC


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應該同時


Ans:BD
# 103交大

Ans:A
C:有kmalloc,vmalloc,malloc,前兩個是分配kernel的memory,後者是user的memory,kmalloc確保在physical address連續,vmalloc和malloc確保在virtual address連續


Ans:D
載入inode要花1次,存到5120要花5120次,接著5120在10th node的第二個,所以讀9th花1,讀10th的資料花3,共5125次

Ans:E
E:write through仍需要載入資料到memory



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

Ans:BCE
A:file system可以掛載到任何點,只有root file system必須要mounted at root level

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負責轉


Ans:D
安裝在手機,所以用64GB去存,每個app最多512MB,64GB/512MB=128

Ans:C
同時執行,所以看記憶體,working set是app一段時間所需memory,所以2GB/256MB=8
# 104交大

Ans:A


Ans:E
C:OS追蹤CPU使用率、page-fault rate,由working-set model或 page-fault frequency scheme來決定是否已經產生thrashing。

Ans:E
要確保confidentiality在最外面就要用kpb加密,這樣只有bob解得開,而E比D好是因為D對M做了kpb的RSA加密,但RSA加密不適合大資料

Ans:A
第一碼代表special permissoin bit
4 (SetUID):執行時以檔案擁有者的身份執行
2 (SetGID):執行時以群組的身份執行
1 (Sticky Bit):對於目錄,僅擁有者可刪除或修改其中的檔案
接下來三碼代表:owner,group,other

Ans:ABCDE

Ans:BE
A:NFS可以mounted任何地方
C:1block 256 pointer,first level 256kB,two level 64MB
D:通常用off line,on line會花很多時間在I/O

Ans:BCDE
A:大多數時候安全,但仍有不安全的時候
B:防火牆可以過濾,但像是https的攻擊就無法防禦到
C:入侵檢測系統,相比防火牆更動態

Ans:B
A:33,slt最後會拉回第一個bit的ALU,所以要加1
E:52/23=2.2,非2



Ans:C
在4cylce時,因為sub和beq有data hazard,所以停1cycle,這時在IF的人是add,他的PC=44,所以adder output 48

Ans:D
在4cylce時,因為sub和beq有data hazard,所以停1cycle,這時在ID的人是beq,但他要跳,所以adder是輸出目的位置,40+4+7*4=72

Ans:B

Ans:E

Ans:E
add在ID偵測到和lw有hazard,所以七偵測,八停
# 105交大

Ans:CD
C:兩階段鎖可是race condition可連續化,鎖分為兩階段,第一階段是擴展階段,在此階段中,鎖被獲取,且不釋放任何鎖,第二階段是收縮階段,在此階段中,鎖被釋放,且不再獲取任何鎖

Ans:AB
A:five components:Input,Output,Data path,memory,control
C:CPU bound,所以CPU burst長
D:管理thread也需要資源,所以適量就好
E:long term決定mix程度

Ans:ACDE
B:NAS 提供檔案系統存取,而 SAN 提供低層次的區塊存取,類似於本地硬碟
C:皆是NAS的file system
D:因為他是block level
E:NAS通常用區域網路連接


Ans:ABCD
A:將他從原本的memory space分離出來避免影響parent
B:因為child process不跟parent processe共享os資源
C:可以設定child process的權限,讓他只能做某些事
D:透過跑不同的UID設定權限
E:跟DDOS無關,仍然會遭到攻擊

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會送

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交大

Ans:ABD
B:最長stage
C:Exceptions 也是一種 control hazard 的形式,都需要清空 Pipeline 和轉移控制

Ans:ABC
interrupt會發生AB,I/O complete會發生C

Ans:ACD
A:兩種方式讀file,一個透過read()這種I/O system call直接讀,另外一個是mmap()這個system call,將file 映射到memory,接下來要讀取就不用system call,只要一般記憶體操作
C:fork()或vfork()是system call
D:I/O指令

Ans:BD
A:就是要防止race condition,所以可以
B:test-and-set是特權指令,可在user space使用system call去保護shared memory的資源
C:busy wating


Ans:D
B:page file是指virtual memory size,所以跟實體記憶體無關

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才會減少

Ans:BD
A:不同檔案系統很麻煩
B:改個指標
C:同A
D:將valid改成invalid

Ans:B
Principle of Least Privilege每個用戶、應用程式或系統應僅被授予執行其任務所需的最小權限,以減少安全風險
A:是Defense in Depth Principle,因為多個防禦系統
C:Security Testing and Audit Principle,持續地測試和審查系統,以確保安全機制正確運行並能夠抵禦潛在威脅
D:Security Patching and Change Management Principle,修補已知的漏洞、增強系統安全性,並確保系統始終運行最新的安全修正版本

Ans:ABCD
A:Static Code Analysis可在編譯階段檢查程式碼,偵測超出陣列邊界的寫入,防止潛在的緩衝區溢位漏洞
B:Address Space Layout Randomization,ASLR技術,透過隨機化程式庫的基底位址,增加攻擊者預測記憶體位置的難度,從而減少緩衝區溢位攻擊
C:同B
D:Java 和 Python 等高級語言具備內建的記憶體管理功能,例如邊界檢查和垃圾回收,這些機制在執行時可以防止直接存取記憶體,從而降低緩衝區溢位
# 107交大

Ans:D
A:不能直接在hardward,要轉機器語言才能在hardware執行
B:同系列也不能執行
C:Assembler read 組合語言

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

Ans:CD
A:response time單位是時間,throughput是工作量
B:user care response time
D:提高clock rate才會減少response time

Ans:BD
A:不會加大memory容量,且是為了減少AMAT
B:many byte in size所以是spatial locality
C:太大cost大
D:Cache由硬體(cache control)控制,OS不用知道,但OS知道MMU


Ans:BD
A:magnetic是sequential
B:

C:組合語言
D:cache set size太大會使miss penalty太高,所以降低size使penalty降低;而在page這邊,因為page fault要去memory搬,penalty太高,所以希望能增加page,降低miss rate,使penalty降低

Ans:ACD
選擇有參數可調的

Ans:CD
A:這是deadlock revocery
B:zombie process才有memory leak的問題
C:因為資源申請不一定通過,所以同時跑的變少
D:會讓可先做完得做,有可能低優先權的先拿到資源

Ans:D
A:64bit通常適合4 level以上
B:inverted page table存每個process,大家共用,增加search time,但減少memory使用,因為原本是每個process有自己的page table
C:外碎

Ans:AB
C:signed by the 憑證機構
D:使用secret key做hash

Ans:A
A:除RSA都為對稱
B:RC4是stream
C:非對稱有public key
D:password會加密

Ans:ABC
A:使用strcpy要檢查size
B:因為沒限制字數,所以會buffer-overflow
C:strcpy會return目的位址,當發生buffer-overflow他就會返回非法的位址,這就是buffer-overflow attack
D:strncpy不會overflow



Ans:D
Authentication驗證性,所以Bob想知道它是由Alice傳,所以M直接送,但M有可能同樣,所以可透過對M做hash,再由Ksa加密,Bob只要用kpa解密,再對M做hash,檢查是否一樣,即可知道是Alice送的

Ans:C
Confidentaility保密性,不想讓大家知道,所以M要加密,但M很大所以不適合用RSA加密,所以用AES Kda加密,但大家沒有Kda所以要送Kda出去,所以使用Kpb加密可使其只能被Bob解密

Ans:D
兩個都要,所以資料的部分就是31題的東西,他們用Kda加密,再將Kda用Kbp加密送出去
# 108交大

Ans:CD
A:register,stack,pc不共享
B:pc不共享
C:因為multi-core只會用kernel
D:他們有共享資料所以有RC

Ans:ABD
A:虛擬記憶體的好處
C:moidfied才要write
D:Page fault由os處理

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高

Ans:ABC
A:連續對大檔案很好
B:file fragmentation是說檔案非連續的分佈
C:linked的random最差,使用FAT可以改善
D:extent是Continguous的link版,透過新的小單位link,因為是連續所以不允許file fragmentation,會定期壓縮

Ans:CD
A:增加clock rate,要可平行化才可以透過增加core降低response time(這邊的response time是完成任務的時間,非OS的定義)
B:不同ISA不可比較
D:沒考慮指令間的強度

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:三種指令格式

Ans:B
A:通常最差
B:因為硬體可重複使用,所以省成本,也可最小化硬體
C:multi-cycle需要latch
D:二跟三最常見


Ans:BC
A:算數錯誤所以沒正確答案可算出來
BC:暫停或忽略是常見做法
D:公認的complier也無法避免


Ans:D
因為cache size是4 line,每個line可存一個instruciton,又因為是direct所以有指令要mod 4得出cache index,所以i(0)和i(4)對應到同一個欄位,他們有conflict miss,每五次有兩次miss,所以hit rate是3/5

Ans:A
fully所以有位子就放
ic:
012340123401234...
cache:
012301230123012...
H/M:
000000000000000...

Ans:B
MRU所以換剛剛換的
ic:
012340123401234...
cache:
012330122301123...
H/M:
000001110111011...
# 109交大

Ans:ABC
A:因為把非必要的都移到user,所以要使用時都要呼叫kernel,communication overhead大
B:shared memory由os保護,一般user使用自己的memory不用system call
C:DMA每block傳interrupt,可減少interrupt

Ans:ABD
B:PID不變,code section,data section改變
C:I/O blocking所以去waiting

Ans:BC
B:heap是動態的

Ans:AD
B:page table由VMM和MMU管理
C:page table由process大小決定,所以不便,但frame number會變

Ans:AC
A:Vector將多條指令打包成一個,所以對bandwidth要求較少,而GPU透過高速的bandwidth去減少memory latency
B:vector仍有hazard,基本上多多少少都有hazard,只是多跟少而已
C:WSC重視disk,cpu利用低
D:卡在S1


Ans:ACD
A:仍須透過pipeline register傳遞
C:停1cycle
D:reservation station的input來自instruction fetech/decode unit和commit unit

Ans:D
匿名分頁(anonymous pages):由於這些分頁沒有對應到實際的檔案,所以被叫做「匿名」的分頁,stack 跟 heap 就是屬於這種類型。如果您的程式使用 malloc() 或 new,那麼配置的記憶體就屬於這種。
可以被修改就不能skip,只有像kernel的才可以
D:swap size滿了就不能swap



Ans:B
經過not+2-mux+and+4-mux=1+1+2+4=8

Ans:D
經過2-mux+32 * adder+4-mun=2+32 * 3+4=102


Ans:D
經過not+2-mux+32 * adder+4-mux=1+2+32 * 3+4=103
# 110交大

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沒有用處

Ans:BD
A:Buddy會一直找他可以放的,slab才是先創建好
B:slab類似一個pool,會存在用的跟空的
C:Buddy必定是2的冪次方
D:Buddy是為了減少外碎,所以分配好幾塊,沒被使用的可以合在一起,但因尺寸是2^m,所以內碎嚴重,slab透過更小的尺寸緩減Buddy的內碎,尺寸也是2的冪次方

Ans:AC
A:system call算是一種trap
B:用system call table 來找尋對應的 trap service routine,ISR 是for interrupt
D:DMA用來處理I/O和memory

Ans:B
receive是blocking,所以一定收得到
send blocking,所以receive發生在send前的話會收不到,但在後就收得到

Ans:BCD
A:降低,因為他卡大家
BC:I/O優先權高

Ans:ACD
A:這邊有提到他將task分成好幾個sub-task,所以可以透過增加core,降低response time
D:因為Ca有較少的MIPS且花的時間少,所以他的指令強大,相比Cb更像CISC

Ans:BD
A:因為j可跳更遠
C:sticky bit 1 bit

Ans:BC
A:ALU非clock觸發的,這邊用control signal比較好,且clock通常出發時序電路(Register,PC,Data MEM,那些在架構中只與pipeline register相連的)非組合電路
D:用stall可解

Ans:C
A:stall就好
B:不保證in-order completion,可以重排指令,使用reorder of buffer可使fetech仍是sequential,但執行是out of order
D:in-order仍有WAR dependence,但是不會造成hazard

Ans:BC
A:AMAT短不代表每個都短
D:L1 miss rate*(L1 miss penalty)

Ans:BCD
B:main memory兩個都有用到
C:cache controller是硬體
D:用non-blocking cache繼續做能做的
# 111交大


Ans:AC
condition variable像是一種flag,當他被signal代表大家可以搶,所以沒人搶的話也沒關係,semaphore比較像是計數器,會記錄有多少人在裡面

Ans:BD
A:不會整個加載
B:將file存到user space,才會快
C:read(),write()仍是普通的I/O操作,依然是對文件做讀寫,不是memory
D:標準I/O會被映射到kernel,所以要做的時候會複製kernel到user

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

Ans:BD
A:Linux對於用不到的會自動卸載
B:Linux透過binfmt,維護一張函數表,當核心需要執行一個二進制檔案時,會參考這個函數表,逐一檢查每種格式的處理器
C:slab for kernel
D:static會有多個copy很浪費,dynamic就一份copy

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生成

Ans:A
A:DMA結束時會interrupt CPU,所以需要interrupt才能用DMA
B:memory mapped I/O跟DMA並無直接關係
C:DMA不能接受複雜的I/O
D:非問題,資料一致性才是問題

Ans:BC
IF,ID暫停,所以保留這兩個pipeline register的值,PC也不改變,所以除了BC,ID/EXE write也要設為0


Ans:B
1-level page table + 1-level cache = 100 + 1

Ans:C
1-level page table + 2-level page table + 1-level cahce + 2-level cache + memory = 100 + 100 + 1 + 10 + 100 = 311

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

Ans:C
1-level page table + 1-level cache + 0.4(2-level cache) + 0.1(memory) = 100 + 1 + 4 + 10 = 115
# 112交大

Ans:CD
A:每個process有自己的virtual address, shared memory應該是mapped to the same physical address
B:X得事情跟Y無關
C:可以swap
D:virtual memory允許比實際記憶體大的process跑

Ans:CD
A:DMA是跟I/O
B:加快,因為I/O都由DMA做掉,CPU專注在計算上
CD:皆可

Ans:AD
BC:可透過link的方式直接連過去

Ans:AC
B:process stack不共享,呼叫很多function才會run out stack
C:System contention scope
D:stack section

Ans:BC
A:會進到waiting queue,非busy
C:pthread_cond_signal() signal一個,pthread_cond_broadcast() signal多個
D:通常繼續執行或等被救的人做完

Ans:ABC
B:single cycle沒load-use hazard

# 113交大

Ans:ABCD
A:CR0是control register,只能在ring0
B:HLT是Halt,暫停CPU,直到中斷產生,ring0
C:Load Global Description Table,載入全域描述表,ring0
D:Load Interpret Description Table,載入中斷描述表,ring0

Ans:ABCD
position-independent是指指令與當前所在位址無關,像是beq那種就是有關
C:觸發trap


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,所以是他的倍數

Ans:AD
B:stack不共享
C:read write仍是I/O指令,所以還是要os,除非用memory mapped file之類的

Ans:ABD
A:SSD contoller雖然是硬體,但他可通過他的韌體也就是software layer,去管理哪邊寫比較好
C:DRAM不會發出interrupt,應該是由CPU發出interrupt
D:因為anonymous沒有備份,所以使用swap space去儲存

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介入

Ans:AC
B:副檔名可選
C:UNIX semantics
D:raw partition就是沒file system,但開檔案一定要file system

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。

Ans:AB
A:很吃記憶體,所以增加memory的效能有好處
B:在邊緣運算所以資料不會回傳中心,很安全
C:GPU耗能還是要擔心的
D:仍受功耗限制

Ans:ABD
一個p跟好幾個d做xor,將d所在位置轉成二進位,要與1位址的p做xor
B:增加p4可以得知雙錯誤,但無法更正