I am interested in Systems research. For now, I am extremely interested in various topics in Operating Systems. Currently, I am working on providing Operating System support for some near-memory accelerators.
Linux is not the best-fit OS for every system with emerging new technologies. See this video for more details. It is the time to create a new OS, although, it is undoubtedly hard. With the aim to redesign a new OS, I have to know more about hardware - that is how I developed my interest in computer architecture.
I used to be willful (in a derogatory sense). In other words, I would devote myself to what I loved, but put limited effort on things I disliked. Below is the timeline about what I was, and what I am now:
09/2018 ~ 07/2020: Wandering
Obtaining Mathematics degree
Taking math-related CS courses with limited programming projects
Math - not that interesting as I thought
07/2020 ~ 09/2020: Preparing
Learning CS354 - Intro to Systems to get familiar with C programming language
Forcing myself to write code using emacs
Preparing for OS course in Fall 2020
Pointers in C - quite interesting
09/2020 ~ 12/2020: Struggling
Entering OS World:
30 ~ 40 hours per project in OS course
First time in my life - "I am learning what I do love"
Submitting grad school applications:
I was weak, so did not apply for PhD
12/22/2020: Critical Point
Get the Research Opportunity!
01/2021 ~ 05/2021: Big Change & Research Preparation
Not the willful (in a derogatory sense) person anymore:
Taking system courses - I love them
Academic Writing course - I disliked this course, but managed to get 100/100, best student in class.
The first semester I got GPA 4.0
Learning Linux device drivers & computer architecture
06/2021 ~ Present: Research
Two summer courses
What will happen when executing "$ ls"?
The $ is a prompt put out by a login shell (in this case bash). This means that it is waiting for you, the user, to type some command. Typing ls causes the keyboard driver to recognize that characters have been typed. The keyboard driver passes them to the shell which processes that command by looking for an executable image of the same name. It finds that image, in /bin/ls. Kernel services are called to pull the ls executable image into virtual memory and start executing it. The ls image makes calls to the file subsystem of the kernel to find out what files are available. The filesystem might make use of cached filesystem information or use the disk device driver to read this information from the disk. It might even cause a network driver to exchange information with a remote machine to find out details of remote files that this system has access to (filesystems can be remotely mounted via the Networked File System or NFS). Whichever way the information is located, ls writes that information out and the video driver displays it on the screen. (source)
What is multi-programming?
Assume we have only one CPU (single core), the operating system resorts to trickery by running each process in turn for a short period. This period of time is known as a time-slice. This trick is known as multi-processing or scheduling and it fools each process into thinking that it is the only process.