Courses/Computer Science/CPSC 457.F2013/Lecture Notes/ProblemOS

Jump to: navigation, search

In this session, we considered some of the driving philosophy behind the course and began to explore what a "program" was.

We discussed the concepts of time and space multiplexing.


Not only do I want you to come out of this course with an understanding of operating systems principles and the main algorithms involved in resource management, I want you to absorb and nurture some practical skills:

  • using a command line
  • accessing software documentation (i.e., the man pages)
  • experience using C for both user level and kernel programming (and knowing the difference in available environments)
  • understanding the context in which assembly code or machine code is used by the OS for certain critical pieces of functionality
  • understanding and practicing how to use assembly code to invoke system calls
  • the process of configuring and building a large piece of software, including the expense of compiling real large software
  • use of a version control systems (i.e., svn)
  • how to write, compile, and load loadable kernel modules (LKMs)
  • gaining familiarity and comfort navigating a very large code base and;
  • comfort using the LXR tool to navigate such a large code base
  • understand the OS environment as a confluence of several disciplines:
    • computer architecture
    • real software engineering of a complex code artifact
    • computer science concepts for managing concurrency and sets of resources
  • this environment allows you to
    • study how to design and manage hardware to support complex applications
    • see the kernel as a case study of complex applications
    • put into practice some of the software programming and problem solving skills you've learned so far in your undergraduate career

In this session, we became acquainted with a few tools:

  • gcc
  • cat
  • hexdump
  • objdump -d

We used these tools to consider this program:

int main(int argc, char* argv[])
  int i = 0;
  i = i++ + ++i;
  return i;


Scribe Notes