About Me

I master in Bare Programming: C Language, Linux, Assembly Code, Operating System(OS), Raspberry Pi.
I also have experience in Cyber Security and Deep Learning

Education

    M.S. in Computer Science & Information Engineering
    National Central University, Sept. 2023 - Now
    Rank: 1 / 138 (0.72%)
    GPA: 4.3/4.3
    Advanced Defense Lab
    Advisor: Prof. Fu-Hau Hsu(許富皓博士)

    B.S. in Computer Science & Information Engineering
    National Chi Nan University, Sept. 2019 - Jun. 2023

Projects

    Bare Programming on rpi3 (Raspberry Pi 3)
    Jan. 2024 – Now
    Tool: C language, Raspberry Pi 3, GDB
    Github Code

      Booting Implementation

    • Implement traversal devicetree to find the information of device rip3.
    • Implement initial ramdisk through archive format cpio.
    • Implement a bootloader that loads kernel images through UART.
    • Demo Video 1

      Exception and Interrupt Implementation

    • Implement Synchronous Exception through enable CPU core timer to print something in the specific second. (Shown in Figure 1)
    • Implement Asynchronous Read and Write through UART's interrupt handler putting/getting data in/from buffer.(Shown in Figure 2)
    • Demo Video 2

      Figure 1: Synchronous Exception Flowchart

      Figure 2: Asynchronous Read and Write Flowchart

      Thread and User Process Implementation

    • Implement Run Queues, Wait Queues, Scheduler and Context Switch. (Shown in Figure 3)
    • Implement Syscalls including fork(), exit(), kill(), read(), write(), etc. (Shown in Figure 4)
    • Implement POSIX Signal including signal() and kill(). (Shown in Figure 4)
    • Demo Video 3

      Figure 3: Multithread Flowchart

      Figure 4: Syscalls and POSIX Signal Flowchart

      Virtual Address Implementation

    • Implement 4-level Page Table for Kernel Process and User Process.(Shown in Figure 5)
    • Implement the function mmap() with VMA (Virtual Memory Area) for User Process.
    • Implement Page Fault Handler(Shown in Figure 6), Demand Paging and Copy-on-Write.
    • Demo Video 4

      Figure 5: Kernel/User Paging Flowchart

      Figure 6: Page Fault Handler Flowchart

    Tracing of Linux Kernel Code
    Sep. 2023 – Jan. 2024
    Tool: C language, Linux V6.7 environment (Released Jan-2024), GDB.

    (1) What the difference of the Virtual/Physical Address of the below items of different threads? (Shown in Figure 7)

    • Global Variable
    • Local Variable
    • Thread Variable
    • Function foo()
    • Function main()
    • GNU C Library Function printf()
    • Local Heap Variable

    Figure 7: The comparison of different items of different threads.

    -----------------------------------------------------------------------------------------------------

    (2) What are the different segments of the process assigned? (Shown in Figure 8)

      We are looking for following segments:
    • Text Segment
    • Data Segment
    • BSS Segment
    • Heap Segment
    • Stack Segment
    • Library Segment

    Figure 8: The distribution of different segments.

    -----------------------------------------------------------------------------------------------------

    (3) How the Linux Scheduler do when we modify the priority of each process?

      Case 1: Normal Process
    • Goal: In order to observe how the Normal Process with different priorities competes for the right to use the CPU in the run queue, and the operation status of CFS (Completely Fair Scheduler).
    • Conclusion: It can be found that the number of their content switches is very high, with an average of 300,000 times, and their execution time is about 60 seconds. There is no different execution time due to different priorities. (Shown in Figure 9)
    • Figure 9

      Case 2: Real Time Process (Fist in First out)
    • Goal: In order to observe how the Real Time Process with different priorities competes for the right to use the CPU in the run queue, and the operation status of schedule policy Fist in First out.
    • Conclusion: 10 Real Time Processes with different priorities. It can be found that the lower the priority, the longer the execution time and the more times the content switch is performed. (Shown in Figure 10)
    • Figure 10

      Case 3: Real Time Process (Round Robin)
    • Goal: In order to observe how the Real Time Process with different priorities competes for the right to use the CPU in the run queue, and the operation status of schedule policy Round Robin.
    • Conclusion: 10 Real Time Processes with different priorities. It can be found that the lower the priority, the longer the execution time and the more times the content switch is performed. (Shown in Figure 11)
    • Figure 11

    5G TCP proxy Project
    Feb 2024 – Dec. 2024
    Tool: C language, DPDK (Data Plane Development Kit)

    • Work with ITRI(Industrial Technology Research Institute 工研院).
    • Implementing TCP Proxy on a 5G base station to intercept traffic, replacing the TCP congestion algorithm between them, mitigating speed losses caused by wireless network packet loss.

Contest Experience

      Google Universal Image Embedding
      Jul. 2022 – Nov. 2022
      Tool: Python, TensorFlow, Keras, Pytorch, etc.

      • It’s a Deep Learning contest from Kaggle hold by the Google
      • Design an Embedding Model to turn the raw image into Feature Embedding with Dimension less than 64, and project these Feature Embeddings to the Hyperplane for Clustering.
      • Rank: 58 / 1009 (5%)

      Figure 12: The models we use.

Skills

  • Languages:C (Intermediate), Assembly Code (Intermediate), C++ , Python, Bash, Java, HTML, CSS, JavaScript

  • Development Tools: ARM/X86(Intermediate), Git(Intermediate), Debugger(Intermediate), Copilot, ChatGPT, Docker, Proxmox

  • Domain Knowledge: Operating System(Intermediate), Embedded Software/Firmware(Intermediate),Linux, BIOS, Networking, Computer Organization, Data Structure, Algorithm, Cyber Security