Anda di halaman 1dari 4

System Programming 2012

____________________________________ Systems Programming 2012


PROCESSES, COMMUNICATION, CONCURRENCY & THREADS

The goal of this course is to prepare students to design & program computer systems at operating system level. After attending this course, the student should be able to develop, test, and debug systems programs, written for operating systems (Linux/Unix) and computer networks. Programming languages: C/C++. Platform: Linux/Unix. Course Details: The course is a combination of lectures and lab assignments. Lectures will be given to introduce students to the system programming concepts and tools to develop system programs. Students will be introduced to C language and more advanced topics necessary for the successful completion of the assignments, such as library routines, OS system calls, threads, multithreading, network programming, debugging, etc. Attendance to the class is highly recommended. If you choose not to attend them, do not complain afterwards that you missed something! The assignments will start with relatively simple programs, where students can get themselves familiar with systems programming. After that, students are expected to complete a more difficult one. To make it easier for students, we split it into three parts to be realized one after the other. Each step must be realized before a given deadline. For programming assignments, teaming-up is not allowed. For projects, maximum of 2 students group is allowed. Programming assignments must be realized under Linux/Unix. Course Contents: Introduction to System Programming Fundamental concepts of operating system. System Programming libraries. Library routines & functions calls. Unix system calls. Introduction to Unix & C Programming Course Designed By: Omer Iqbal

System Programming 2012

Basic concepts. Linux Kernal. Unix environment for programming in C. Manipulating with OS using C. Programming Exercise. Processes & Threads Concepts How a program becomes a process. Process Environment. Process Termination. Threads and Thread of Execution. Process VS Thread. Layout of a Program Image. Library Function Calls. Function Return Values and Errors. Thread-Safe Functions. Use of Static Variables. Structure of Static Objects. Creating processes & threads in C. Unix Thread Library (p_thread()) Programming Exercise. Process in Unix Process Identification. Process State. UNIX Process Creation and fork. The wait Function. The exec Function. Background Processes and Daemons. Critical Sections. Programming Exercise. UNIX I/O Device Terminology. Reading and Writing. Opening and Closing Files. Blocking I/O & Non Blocking I/O The select Function The poll Function File Representation Filters and Redirection Programming Exercise.

Course Designed By: Omer Iqbal

System Programming 2012

Introduction to System Socket Programming Sockets for network communication. TCP Sockets. UDP Sockets. Programming Exercise. System Design alternatives Concurrent process models. Synchronous VS Asynchronous IO Models. Programming Exercise. Inter Process Communication Introduction to process communication. Pipes. Pipelines. FIFOs Pipes and the Client-Server Model POSIX IPC. POSIX:XSI Semaphore Sets. POSIX:XSI Shared Memory. POSIX:XSI Message Queues. Implementing Pipes with Shared Memory. Implementing Pipes with Message Queues. Programming Exercise. Signals Basic Signal Concepts. Generating Signals. Catching and Ignoring Signals (sigaction). Waiting for Signals (pause, sigsuspend and sigwait). Handling Signals: Errors and Async-signal Safety. Program Control with siglongjmp and sigsetjm.p Programming with Asynchronous I/O. Programmign Exercise. Concurrency & Threads POSIX Threads. Use of Threads to Monitor Multiple File Descriptors. Thread Management Thread Safety. User Threads versus Kernel Threads.

Course Designed By: Omer Iqbal

System Programming 2012

Thread Attributes. Programming Exercise. Thread Synchronization POSIX Synchronization Functions. Mutex Locks. At-Most-Once and At-Least-Once-Execution. Condition Variables. Signal Handling and Threads. Readers and Writers Problem. Deadlocks. The Producer-Consumer Problem. Buffer Implementation with Semaphores. Introduction to a Simple Producer-Consumer Problem. Bounded Buffer Implementation Using Condition Variables. Programming Exercise. Virtualization Virtualization concepts VMWare. Recommended Books: UNIX Systems Programming: Communication, Concurrency and Threads, by Kay A. Robbins and Steven Robbins, 2nd Edition, Prentice Hall. Unix Network Programming, by Kay A. Robbins and Steven Robbins, 3rd Edition. Unix IPC/XSI, 3rd/4th Edition. Operating System Concepts, Robert & Schethe, 4th Edition. Operating System Concepts Sixth Edition Avi Silberschatz Peter Baer Galvin Greg Gagne

Course Designed By: Omer Iqbal

Anda mungkin juga menyukai