System Programming

Course overview

In this course, we will learn UNIX/Linux system calls and its back ground concepts. The goals of this course are

  • Getting familiar UNIX/Linux development environments
  • Learning how to find required system call and the usage (e.g., man page, MSDN)
  • Improving your C-programming skill and ability for solving a given problem
  • Achieving better presentation and lecturing skill

Classes (Fall, 2018) - Class overview (pdf)

  • CPH341-01 (Mon. 11:00~13:00, Wed. 09:00~11:00) / 2nd Eng. Building #401
  • CPH341-02 (Mon. 09:00~11:00, Wed. 11:00~13:00) / 2nd Eng. Building #401

Setup Linux development environments

  • Linux(Ubuntu) Dev. environment setup on Windows 10 [Slides(Kor)]
    • Windows 10의 sub-system을 이용하여, Linux/Unix 개발 환경 구축하기 (Message queue is not supported)
  • Cygwin Dev. environment setup on Windows [Slides(Kor)]
    • Windows에서 Linux 개발 환경 구축하기 (Support IPC)

Lecture notes (in Korean)

Lecture 1. System Programming Overview

  • What is and Why system programming?
  • Why Unix/Linux, Basic commands
  • Compiling Environments
    • GNU C Compiler, Makefile & Make

Contents (schedule)

Lecture 2. Low-level File I/O (system call)

  • What is File?
  • Basic shell commands for files
  • File descriptor (fd)
  • Basic system calls for handling files

Contents (schedule)

Lecture 3. Buffered I/O (High-level File I/O)

  • What is Buffered IO
    • Kernel buffer and User-buffered IO
  • Standard IO

Contents (schedule)

Lecture 4. File an Directory

  • File organization
    • filename, i-node, data block
  • Directory organization
  • Hard link and Symbolic link

Contents (schedule)

Lecture 5. System Information

  • System information
  • User information
    • User IDs (Real , Effecitve, Saved)
  • Time information

Contents (schedule)

Lecture 6. Process Information

  • What is Process?
  • Process hierarchy
  • Processing running time
  • Environment variables

Contents (schedule)

Midterm Exam (10/24)

Lecture 7. Process Management

  • Running a New Process
  • Terminating a Process
  • Synchronization with Child processes

Contents (schedule)

Lecture 8. SIGNAL

  • What is Signal?
  • Signal handling
  • Sending, Blocking, Waiting Signals

Contents (schedule)

Lecture 9. Memory Mapping

  • Mapping a File to Memory
  • Synchronizing a File with a Mapping
  • IPC with a Memory Mapped File

Contents (schedule)

Lecture 10. Pipe

  • Stream redirection
  • Pipe
    • Anonymous pipe
    • Named pipe

Contents (schedule)

Lecture 11. IPC I

  • IPC in Unix/Linux
  • Message Queue

Contents (schedule)

Lecture 12. IPC II

  • Shared memory
  • Synchronization with Semaphore

Contents (schedule)

Final Exam (12/12)

Review for the final exam (12/17)


★ HPC Lab. 대학원생(진학 희망자), 학부 연구생 모집 중 ★

  • 고성능 컴퓨팅, GPGPU, 컴퓨터 그래픽스 등을 함께 공부/연구하고 싶으신 분들 연락주세요~! (bluekds 'at' koreatech.ac.kr)
  • 연구실 소개 (클릭)