Overview
This course is intended to be an introductory course for those interested in systems programming. I tried to keep this course very simple and easy to understand. In order to do that I created this slide deck that is short and concise, with programming example to compliment them. I will introduce you to the main concepts so you will have a strong foundation and base point to dive deeper into these topics and cover additional topics on your own.
General Course Contents
Overview
This course is intended to be an introductory course for those interested in systems programming. I tried to keep this course very simple and easy to understand. In order to do that I created this slide deck that is short and concise, with programming example to compliment them. I will introduce you to the main concepts so you will have a strong foundation and base point to dive deeper into these topics and cover additional topics on your own.
General Course Contents
System calls and how they interact with the kernel
File manipulation looking at how to create, delete, and edit files using system call
(briefly) Memory management and how exactly Unix deals with virtual memory addressing
Processes: how to create one and what they are used for.
Threads and how they are used.
Synchronization issues that arise when using processes and threading
Lecture to cover the course contents and what you to expect!
Recognize the different categories of system calls.
Understand what a system call is and system calls are used for.
Visualize the Unix operating system structure.
Tell the difference between the user space and kernel space.
See what each layer within each space is and used for.
See the process for using systems call in C.
Become familiar with using linux "man" pages to aid in development.
Learn the different types of file streams and learn how to find the variables in header files.
Write "hello world" using a system call.
Learn and implement different file manipulation system calls.
Proper way to check the return values to ensure that an error did not occur
How to utilize the open() system call to open or create a file
How to utilize the close() system call to close a file
Become familiar with the different create modes when using the open() system call
Create file permissions using octal values
How to utilize the remove() system call to delete a file
How to utilize the read() system call to read text from a file
How to iterate over a file to read all the contents
How to write text to a file using the write() system call
How to utilize the lseek() system call to write text to different parts of a file
Using lseek() to write to the beginning, middle, and end of a file
Utilize lseek() whence argument to specify where to write text in file: SEEK_SET, SEEK_CUR, SEEK_END
Learn the basis of processes
See examples of windows and linux processes in action
Process memory mapping. See how linux can use the same virtual memory address for two instances of the same program.
Understand the different process states of a process
Learn the basics of a process scheduler
Learn the main process related system calls
Utilize the fork() system call to fork a child process
Utilize the execv() system call to fork a new process & load a program into the child memory address space
Realize the differences between fork() and execv()
Implement the wait() system call and understand what it does
Write a simple fork C program to show the parent child relationship using the fork() system call
Use system calls to write unix based system calls
Use execv() system call to implement the GCC command
Learn the basis of threads, what they are and how to use them
Recognize that there are different libraries to create multi-threaded applications
Learn the pthread library
Learn how to create a thread
Learn how to terminate a thread
Learn how to wait for a thread to finish executing by using pthread_join
Learn the proper way to wait for multiple threads to finish executing using pthread_join
Experience create a simple thread program
Learn the technique for creating multiple threads
Learn the proper technique for waiting for multiple threads to finish executing
Recognize the challenges when passing variables to a thread safe function
Learn the proper technique for passing variables into a thread safe function
Learn the basics and concepts of synchronization using semaphores
Learn how to use semaphores to handle critical sections
Critical Section examples
Learn what semaphores are and how they solve synchronization issues
How to use a semaphore count
Signal() method: learn what it does and how to use it
wait() method: learn what it does and how to use it
Become aware of the common synchronization problems
Go over the bounded buffer problem
Understand the bounded buffer pseudocode
Go over an example of the bounded buffer problem
OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.
Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.
Find this site helpful? Tell a friend about us.
We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.
Your purchases help us maintain our catalog and keep our servers humming without ads.
Thank you for supporting OpenCourser.