Linux/Unix 환경의 핵심 프로그래밍

Unix Admin / System

수강대상

리눅스 시스템을 배우고자 하는 개발자 또는 학생 ( 서버관리자, 시스템 프로그래머, 유틸리티 개발자, 서버 프로그램 개발자, 리눅스 응용프로그램 개발자 , 네트워크 프로그램 개발자 )

선수과정

없음

강의환경

Compiler : gcc ver 4.3.3


ㆍ리눅스 사용상의 고급 테크닉을 배웁니다.

vi에디터의 기본기능 부터 고급 테크닉을 배웁니다.

bash shell의 사용법과 프로그램 기법을 배웁니다.

ctags를 사용한 소스분석, make의 의존성 관계규칙, 순환참조 make, auto make등 프로젝트 관리 방법을 배웁니다.

gcc의 최적화 기법, gdb의 사용법, cvs등의 버전관리 기법등을 배웁니다.

ㆍ리눅스의 시스템구조를 심도 있게 학습 합니다.

inode를 사용한 파일 시스템의 데이터 관리 기법에 대해 학습니다. 모든 리소스를 하나의 파일 처럼 보이게 하는 리눅스 가상 파일시스템의 구조를 학습합니다.

메모리 관리 기법인 가상 메모리의 페이징과 세그멘테이션의 분석, 버디시스템의 구성원리,슬랩얼로케이터의 구현원리에 대해 학습합니다.개발자 에게 어렵게 여겨지던 IPC, 동기화 제어 등을 깊이 있게 학습합니다

구현을 통해 원리를 이해 합니다.

시스템 구조를 아무리 잘 알고 있어도 구현하지 못하면 아무 소용 없지요. 모든 수업이 이론 보다는 구현을 중심으로 진행 됩니다.

프로그램을 실행시켜 보면 이론상의 설명이 자연스럽게 될것이고 때에 따라선 책의 오류도 파악할 수 있습니다.

ls,ps,top등 많은 유틸리티가 있지만 직접 구현하므로서 내부 구현 원리를 이해 합니다.

bash의 기능을 축소한 mini shell도 직접 구현하므로서 쉘의 구동 원리를 이해 합니다.

  • Section1. 개발환경이해
    • 리눅스 기본 명령어 사용법
    • vi 에디터 사용법
    • sed, awk, find, grep등 고급 유틸리티 사용법
    • gcc, gdb등 컴파일 디버거 사용법
    • make, 순환참조 make, auto make 사용법
  • Section2. shell script
    • ctags, cscope등 소스 분석툴 사용법
    • cvs, rcs등 버젼 관리 툴 사용법
    • bash shell script 기본 문법
    • bash shell script 고급 문법
    • Linux file system
  • Section3. system programming basic
    • system call I/O
    • Standard I/O Library
    • 파일 상태 와 디렉토리 구조
    • 프로세스 구조, 생성, 실행( fork, exec )
    • 프로세스 파괴 및 리소스 반납( exit, wait )
  • Section4. system programming advanced
    • 터미널과 프로세스 관계
    • 프로세스간 통신( signal, Pipe, Fifo )
    • System V IPC( 메시지큐, 세마포어, 공유메모리)
    • 동적라이브러리 생성 및 활용
    • file locking, I/O multiplexing