CST334 OS Week 1

 Intro Week

We covered:

  • Introduction to Operating Systems
  • Computer Architecture
  • Linux and the Shell
  • Programming in C
  • Command Line Intro
  • Math (binary <-> hex)
  • GDB debugging

Operating systems provide a way to connect user space programs to the hardware and resources in a safe and shared manner.

Computer architecture discusses the role of the cpu, memory, persistent storage, and other input/output devices like keyboards, mice, printers, displays, etc.

The history of Linux, Unit, and other *nix/Posix OSes were discussed.  Linux was derived from Unix ideas and approaches, but not from Unix code, as Unix code was closed source.  Richard Stallman created the GNU Project, the open source effort to deliver Unix-like tools (and more).  Linus Torvalds developed, and still maintains, the Linux kernel.  Today, the two together make GNU/Linux.

Programming in C is difficult.  It is difficult because, unlike a lot of other languages we've used up until now, C is "simple" and by simple we mean it does just what you tell it to do and no more.  Very few assumptions or interpretations are made.  Unlike something like Python (which is not a C-style language, but is written in C++) which does a lot for a programmer like manage memory, interpret ranges, objects, arrays in a "smart" and expected way, C does not of that.  The strengths of C include being very explicit for fine control of memory and is close to the hardware.  I'll admit I dreaded getting back in to C but was eventually having a lot of fun playing tricks (or so I think of it) with char array pointers.

The intro to the command line covered a lot I knew but a lot more I didn't.  There always seems to be more to learn with the command line.  Like cat, it is so simple but I never really used it before.  I knew a bit about pipes but can tell that topic is much wider than I think.  Bash stands for Borne Again Shell.

We did a good brief review of binary to/from hex.  The parts with how many bits needed to address how many bytes of memory was fun.   

I wish I ended up undersanding this more, but I did not do well with the gdb debugger.  I was able to reproduce some of the steps in the lesson, but was not able to reproduce the key debugging steps.  I ended up using C debugging tools in vscode for PA1.  Frankly it was probably easier.  I couldn't understand why I was seeing output from gdb was was talking about threads and killing threads.  Even the vscode debugger, which I read wraps the gdb debugger, would just stop after certain steps without apparent reason.

 

Comments

Popular posts from this blog

Project Management, Time Management, Study Skills, Outline Revisions - Week 2

Goal Setting, Time Mgmt Review, Expert Interview, Ethics Paper - Week 4

Goals; Capstone Project Ideas; Weekly Learning - Week 5