# ㄐㄉㄐㄒ # 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可以得知雙錯誤,但無法更正