CST334: Operating Systems, Week 1
Identify the topics we covered in class -- you can start by listing them
- General Introduction to Operating systems
- Computer Architecture Review
- Linux and the Shell
- Programming in C
- Command Line Introduction
Explain what each of the topics were in your own terms -- take the identified topics and add a sentence or two describing them
General Introduction to Operating Systems
- Virtualization: The OS allows multiple programs to run at the same time, as if each has their own dedicated machine.
- Process and CPU Management: The OS schedules programs and processes to decrease the amount of time it takes for tasks to run.
- Memory Management: The OS tracks and assigns memory for programs to prevent one from interfering with another.
- Concurrency: The OS provides the ability to handle simultaneous operations to safely avoid issues.
- Persistence and File Systems: The OS manages files and long-term storage.
- Protection and Security: The OS enforces rules and policies on who can access what.
- User and Device Interaction: The OS provides the interface for programs and users to interact with hardware devices.
This included talking about system buses, such as the fast memory bus, the general I/O bus, and the peripheral bus, and how they connect the CPU, memory, and external devices. We also went over the memory hierarchy, which includes registers, cache, main memory, and magnetic disk. As you move through each level, capacity increases while access speed decreases. We also discussed how memory is arranged when a program runs. The main areas include the program code, the heap, free space, and the stack. Each section has a specific purpose during program execution and helps the system run applications efficiently.
Linux and the Shell
Linux is a common operating system used for servers, programming, and system administration. The shell lets you control the system by typing commands, which makes it easier to manage files, run programs, and perform tasks efficiently.
Programming in C
We talked about C as part of the C-family of languages and how it is not object-oriented, uses pass-by-value, and gives low-level access to memory and hardware. We also reviewed the different data types, including primitive and derived types, discussed the three different uses of void, and talked about how memory allocation generally works in C.
Command Line Introduction
We learned basic command line tools to navigate and work with files and directories, such as ls to list files, cd to change directories, pwd to show the current location, and mkdir and touch to create folders and files. We also used cat and echo to view and print text, practiced using .. to move up a directory, and were introduced to docker and make as tools for building and running software environments.
Identify least-understood topics -- of these topics, which was the hardest for you to write the descriptions?
I think diving into C will take time. I came from C++ at a previous school and then got used to working in Java at CSUMB, so shifting back into a lower-level, more manual style of programming is going to be an adjustment. The hardest topic to write a description for was the computer architecture review. I had to look back at my notes to make sure I explained it correctly. I also had to take computer architecture twice, so it’s not too surprising that it took a little extra effort.
Explain the nature of your confusion -- for these difficult topics, what pieces of them make sense and what pieces are difficult to describe?
For computer architecture, the part that makes the most sense to me is the number representation side. I actually enjoy doing decimal-to-binary-to-hex conversions and feel confident with that part. Where I struggle more is when the topic shifts into the bigger picture of how all the system components work together. Understanding buses, memory levels, and how programs are laid out in memory makes sense in theory, but once I start thinking about how everything fits together at the system level, it feels overwhelming and my eyes kind of glaze over.
Identify "aha" moments -- which topic did you find it easiest to write about, and why did it make sense?
The easiest topic for me to write about was the command line. I was already familiar with some of the basic commands because a friend introduced me to it at a surface level a couple of years ago, so a lot of it came back to me quickly. It was nice to connect what I already knew with what we covered in class.
Ask questions -- what do you think will come next? Are there any gaps that don't seem to be explained yet?
I think the next steps will probably go deeper into how the operating system actually manages processes and memory, since we only touched the surface so far. We reviewed the basics like file systems, the command line, and a little bit of C, so I’m guessing we’ll start connecting those pieces together and see more of what happens behind the scenes when programs run.
What connections did you see to other classes and applications -- have you used/heard/thought about these topics before?
I noticed connections to computer architecture and my earlier programming classes, especially with topics like memory, data types, and how programs run. Even though C feels different from what I’ve used recently, some ideas carry over from C++ and Java, so it was interesting to see those concepts applied at a lower level.

Comments
Post a Comment