Skip to content

Mangjun/linux-system-programming

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

7 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿš€ Linux System Programming Mastery (์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์‹ค์ „๋ฐ˜)

๋ณธ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋Š” ๋ฆฌ๋ˆ…์Šค ํ™˜๊ฒฝ์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ์šด์˜์ฒด์ œ๊ฐ€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ํ•ต์‹ฌ ์›๋ฆฌ๋ฅผ ์ดํ•ดํ•˜๊ณ , ํ˜„์—…์—์„œ ์š”๊ตฌํ•˜๋Š” ์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐ ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ… ์—ญ๋Ÿ‰์„ ๋งˆ์Šคํ„ฐํ•˜๊ธฐ ์œ„ํ•œ ์‹ค์Šต ๊ธฐ๋ก์ž…๋‹ˆ๋‹ค.

๋‹จ์ˆœํ•œ API ํ˜ธ์ถœ์„ ๋„˜์–ด, gdb๋ฅผ ํ†ตํ•œ ๋กœ์ง ๋””๋ฒ„๊น…, valgrind๋ฅผ ํ™œ์šฉํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ ํƒ์ง€, ๊ทธ๋ฆฌ๊ณ  ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค/์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ์˜ ๋™๊ธฐํ™” ๋ฌธ์ œ(Deadlock, Race Condition) ๋“ฑ ๋กœ์šฐ๋ ˆ๋ฒจ(Low-level)์—์„œ์˜ ๋™์ž‘์„ ๊นŠ์ด ์žˆ๊ฒŒ ๋ถ„์„ํ•˜๊ณ  ์ง์ ‘ ํ•ด๊ฒฐํ•ด ๋‚˜๊ฐ€๋Š” ๊ณผ์ •์„ ๋‹ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ’ป ๊ฐœ๋ฐœ ๋ฐ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ (Development Environment)

์™ธ๋ถ€ ์˜์กด์„ฑ์ด๋‚˜ ํ™”๋ คํ•œ IDE์˜ ๋„์›€ ์—†์ด, ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ด๊ณ  ํ‘œ์ค€์ ์ธ ํ„ฐ๋ฏธ๋„ ํ™˜๊ฒฝ์—์„œ ์‹ค์Šต์„ ์ง„ํ–‰ํ•˜์—ฌ ๋ฆฌ๋ˆ…์Šค ํ™˜๊ฒฝ ์ž์ฒด์— ๋Œ€ํ•œ ์ ์‘๋ ฅ๊ณผ ์›์ดˆ์ ์ธ ๋””๋ฒ„๊น… ๋Šฅ๋ ฅ์„ ๊ทน๋Œ€ํ™”ํ•ฉ๋‹ˆ๋‹ค.

  • OS Environment: Ubuntu 24.04 LTS (Docker Container)
  • SSH & Terminal: MobaXterm (์ปจํ…Œ์ด๋„ˆ ์›๊ฒฉ ์ ‘์†)
  • Text Editor: vim (ํ”Œ๋Ÿฌ๊ทธ์ธ ์—†๋Š” ์ˆœ์ˆ˜ vi ํ™˜๊ฒฝ)
  • Compiler & Build: gcc, Makefile
  • Debugging & Profiling: gdb, valgrind
  • Code Navigation: ctags

๐Ÿ“‚ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ ๋ฐ ์ „์ฒด ๋ชฉ์ฐจ (Table of Contents)

๋ฆฌ๋ˆ…์Šค ์‹œ์Šคํ…œ์˜ ๊ทผ๊ฐ„์„ ์ด๋ฃจ๋Š” 'ํŒŒ์ผ'๊ณผ 'ํ”„๋กœ์„ธ์Šค'๋ฅผ ์ค‘์‹ฌ์œผ๋กœ, ์‹ค๋ฌด์— ์ฆ‰์‹œ ์ ์šฉ ๊ฐ€๋Šฅํ•œ ์ฝ”์–ด ์ฃผ์ œ๋“ค๋กœ ์ปค๋ฆฌํ˜๋Ÿผ์„ ๊ตฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

Phase 1: ํŒŒ์ผ ์‹œ์Šคํ…œ๊ณผ ์ž…์ถœ๋ ฅ (File I/O Subsystem)

  • 01_file_basic/: ๊ณ ์ˆ˜์ค€(High-level) ํ‘œ์ค€ ์ž…์ถœ๋ ฅ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ธฐ์ดˆ (fopen, fread, fwrite ๋“ฑ)
  • 02_file_low/: ์ €์ˆ˜์ค€(Low-level) ์‹œ์Šคํ…œ ์ฝœ ์ธํ„ฐํŽ˜์ด์Šค (open, read, write, ํŒŒ์ผ ๋””์Šคํฌ๋ฆฝํ„ฐ์˜ ์ดํ•ด)
  • 03_file_advanced/: ๊ณ ๊ธ‰ ํŒŒ์ผ ์ œ์–ด (fcntl, ํŒŒ์ผ ์ž ๊ธˆ, I/O ๋ฉ€ํ‹ฐํ”Œ๋ ‰์‹ฑ, ๋ฉ”๋ชจ๋ฆฌ ๋งตํ•‘ ๋“ฑ)

Phase 2: ํ”„๋กœ์„ธ์Šค์™€ ์Šค๋ ˆ๋“œ ์ œ์–ด (Process & Thread Management)

  • 04_process/: ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ ๋ฐ ์ข…๋ฃŒ (fork, exec, wait), ์ข€๋น„/๊ณ ์•„ ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌ ๋ฐ ํ”„๋กœ์„ธ์Šค ๊ฐ„ ๋™๊ธฐํ™” ๊ธฐ๋ฒ•
  • 05_thread/: POSIX ์Šค๋ ˆ๋“œ(pthread) ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ™œ์šฉ, ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ์˜ ๋™๊ธฐํ™” (Mutex, Semaphore, Condition Variable)

Phase 3: ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹ ๊ณผ ์ด๋ฒคํŠธ (Signals)

  • 06_signal/: ๋น„๋™๊ธฐ์  ์ด๋ฒคํŠธ(Signal) ์ฒ˜๋ฆฌ ๊ตฌ์กฐ, ์‹œ๊ทธ๋„ ํ•ธ๋“ค๋Ÿฌ ๋“ฑ๋ก ๋ฐ ์•ˆ์ „ํ•œ(async-signal-safe) ํ•จ์ˆ˜ ์‚ฌ์šฉ

๐Ÿ’ก ๊ฐ ๋””๋ ‰ํ† ๋ฆฌ ๋‚ด๋ถ€์—๋Š” ์‹ค์Šต ์†Œ์Šค ์ฝ”๋“œ(.c, Makefile)๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

About

[6.6.114.1-microsoft-standard-WSL2] docker ubuntu:24.04 image - linux system programming

Resources

Stars

Watchers

Forks

Contributors