CSC 2331 Systems Programming

http://www.sju.edu/~ggrevera/csc2331/index.html

George J. Grevera, Ph.D.


contents:
course home
assignments
goals
professor
rules & regs
schedule
textbook

Course description

This course is an overview of the software required to integrate computer hardware into a functional system. The following topics are covered: operating systems as resource managers and as virtual machines; system calls, in particular those required for process and file management; interrupt driven systems; concurrency; memory management; and file systems, and security.

Required textbook(s)

A.S. Tanenbaum, "Modern Operating Systems," 3rd ed., Prentice Hall, Upper Saddle River, NJ, 2008.

An introduction to the vi editor is very useful. You are free to use emacs as well. Both vi and emacs are freely available for Windows.

You will find an introductory C programming text useful. An online version is available here and continued here. Another useful online resource is here. Although we will focus on C, C and C++ information is available at cplusplus.com.

An MPI tutorial as well as the MPI functions documentation is also useful.

Course goals and objectives

Students who complete this course should be able to perform the following tasks:
  • develop an understanding of the major components of an operating system
  • become proficient at programming in C language
  • summarize the principles underlying the design and construction of a typical operating system, giving particular recognition to the wider applicability of the ideas and the influences from such developments as high-level languages, networking, multimedia, and security concerns
  • use the facilities of the operating system to achieve a range of simple tasks, including enhancing the functionality by integrating new software components
  • identify the security issues associated with distributed web applications and be able to suggest mechanisms leading to a resolution of these problems

Prerequisites

  • Data structures

Major topics covered in the course

  • history of operating systems
  • operating systems as resource managers
  • operating systems as virtual machines
  • the C language
  • an overview of system calls
  • the interrupt driven operating system
  • the nucleus of an operating system - scheduling, interprocess communication
  • memory management, understanding the fork() and exec() system calls
  • file systems - reading and writing files
  • protection and security
  • parallel processing - multiprocessors vs. multicomputers (threads vs. MPI); client-server model; peer-to-peer model

Assignments/Projects

Please refer to the course schedule for a list of assignments. Note: The course includes a sequence of hands on assignments using the Linux operating system and the C programming language. Typical assignments include:

  1. a "standard" program written in C (for example an RPN calculator)
  2. a program that opens and reads one of the proc file system files and reports on it
  3. a program that uses shared memory
  4. use of User Mode Linux to write a program that retrieves data from the kernel
  5. use of User Mode Linux to write a new system call
  6. interprocess communication between processes on a single system
  7. interprocess communication between processes on different networked systems
  8. parallel processing using threads and MPI
  9. (if time permits) an introduction to PERL

Unless otherwise directed, email me a copy of your code. Also, hand in a printout of your code as well as a printout of sample test runs. Your code will also be graded according to readability as well as correct execution. A grade of 'A' requires correct, readable code as well as sufficient comments and example test runs.

I would also like you to use some code formatting standard such as the popular Indian Hill style guide. You are free to follow any other reasonable standard but please provide me with a reference to that standard.

You are required to use some professional-level code documentation framework such as doxygen (which supports C, C++, and Java). doxygen is typically installed by default with Linux. You must download it for use under Windows.


hit count
Valid XHTML 1.0! Valid CSS!