명장 홈🤖 AI명장유튜브 AI 강좌를 함께 정리하고 함께 배우는 명장 플랫폼명장 게시판 홈요청하기
본문 태그 링크 끄기

AI 없이 C 직접 코딩하기: 유닉스 시스템 프로그래밍 배우기

Gabe Sampson · 2026-11-03 · 유튜브 시청 5,395 · 게시판 조회 0 · 외국인

응용머신러닝

유튜브 썸네일

난이도 응용#시스템프로그래밍#C언어#유닉스#파일입출력#커널

← 목록

저자: Gabe Sampson (외국인) · 원제: Coding C by Hand - No AI - Learning Unix Systems Programming

난이도 판정: C 코드와 read·write 같은 시스템 호출, 파일 디스크립터 등 저수준 개념을 다뤄 입문보다 높은 단계이다. 다만 교재를 따라가는 실습 중심 방송이라 수식이나 연구 논문 수준은 아니어서 응용으로 판단한다.

요약

진행자가 유닉스 교재 3장의 파일 입출력을 따라가며 read·write만으로 파일을 복사하는 C 코드를 직접 작성한다. 버퍼 크기가 성능에 주는 영향과 커널의 파일 디스크립터 구조를 짚고, 채팅 질문과 진로 고민도 함께 다룬다.

⏱ 00:001. 방송 시작과 환경 설정

⏱ 00:00진행자는 오늘의 목표를 유닉스 환경에서 C로 시스템 프로그래밍 실력을 깊게 키우는 것이라고 밝힌다. 사용하던 터미널 앱을 바꾸는 과정에서 창과 세션을 정리하고, Ghostty와의 차이에 대해서도 잠깐 이야기한다.

영상 장면 00:00
▶ 00:00 영상에서 보기

작업 환경을 맞추는 시간이 꽤 길었는데, 이 과정 자체가 시스템 도구를 이해하고 싶다는 문제의식과 이어져 있다고 설명한다.

⏱ 01:432. read 함수로 파일 복사 코드 짜기

⏱ 01:43교재 3장 예제를 따라 표준 입력에서 read로 버퍼 단위로 읽고, 읽은 만큼 표준 출력에 write하는 반복문을 작성한다. read의 반환값이 0보다 큰 동안 반복하고, 쓴 바이트 수가 읽은 수와 다르거나 음수가 나오면 오류로 처리하는 흐름을 한 줄씩 짚어 간다.

영상 장면 01:43
▶ 01:43 영상에서 보기

진행자는 코드에 집중하기 어렵다고 말하면서도, 입출력이 몇 개의 단순한 호출로 이루어진다는 점을 확인한다.

⏱ 09:493. 셸 리다이렉션과 파일 디스크립터 정리

⏱ 09:49교재는 이 프로그램이 파일을 직접 열고 닫지 않고, 셸이 미리 연결해 둔 표준 입출력을 그대로 사용한다고 설명한다. 덕분에 사용자는 셸의 입출력 재지정 기능으로 원하는 파일을 연결할 수 있고, 프로그램이 끝나면 커널이 열린 파일 디스크립터를 모두 정리한다.

영상 장면 09:49
▶ 09:49 영상에서 보기

이 방식은 텍스트 파일과 바이너리 파일을 구분하지 않으므로 어떤 파일에도 같은 코드를 쓸 수 있다는 점도 강조된다.

⏱ 10:324. 시청자 질문: 개발자 진로와 AI

⏱ 10:32채팅에서 AI가 모든 일을 하게 되면 시스템 프로그래밍을 배울 의미가 있느냐는 질문이 나온다. 진행자는 웹 백엔드 개발을 본업으로 하면서, 자신이 쓰는 운영체제와 컴파일러, 라이브러리가 어떻게 동작하는지 알고 싶어서 이 공부를 시작했다고 답한다.

영상 장면 10:32
▶ 10:32 영상에서 보기

그는 시스템 프로그래머가 자동화의 영향을 상대적으로 늦게 받을 것이라고 보면서도, 전문가로 성장하는 경로가 줄어드는 현실을 걱정한다. 임베디드와 로보틱스도 관심 분야로 꼽는다.

⏱ 15:405. 버퍼 크기 실험 결과

⏱ 15:40교재 그림 3.6은 큰 파일을 스무 가지 서로 다른 버퍼 크기로 읽은 결과를 보여준다. 버퍼가 1바이트일 때는 매우 오래 걸리고, 크기가 커질수록 시간이 급격히 줄다가 어느 지점부터는 차이가 작아진다.

영상 장면 15:40
▶ 15:40 영상에서 보기

최소 시간은 파일 시스템 블록 크기인 4096바이트 근처에서 나타나며, 그보다 더 키워도 이득이 거의 없다. 리눅스 ext4 환경에서 측정했다는 설명과 함께, 파일 시스템의 read-ahead가 작은 버퍼의 손해를 줄여 준다는 점도 소개된다.

⏱ 17:396. 교재 선택 이유와 목차

⏱ 17:39진행자는 여러 유닉스 교재를 비교한 끝에 이 책을 고른 이유를 설명한다. 리눅스 중심 교재와 비교했을 때 맥OS 사용자로서 특정 플랫폼에 치우치지 않는 책이 더 맞다고 느꼈다고 말한다.

영상 장면 17:39
▶ 17:39 영상에서 보기

목차에 시그널, 시스템 호출, 파일 입출력처럼 평소 궁금했던 주제가 모두 들어 있었다는 점도 선택의 이유다. Ghostty 같은 프로젝트의 코드를 보며 이해하지 못했던 부분을 이 책으로 메우고 싶다고 정리한다.

⏱ 21:417. 파일 공유와 커널의 자료구조

⏱ 21:41교재는 여러 프로세스가 같은 파일을 어떻게 공유하는지 설명하기 위해, 커널이 입출력에 쓰는 세 가지 자료구조를 소개한다. 각 프로세스는 프로세스 테이블 항목을 가지며, 그 안에 열린 파일 디스크립터의 표가 있고, 이 표는 커널의 파일 테이블과 연결된다.

영상 장면 21:41
▶ 21:41 영상에서 보기

이 관계를 알아야 한 프로세스가 파일 상태를 바꿨을 때 다른 프로세스에 어떤 영향이 가는지 이해할 수 있다. 이후 dup 함수를 배우기 위한 기초가 된다는 점도 함께 짚는다.

난이도 응용#시스템프로그래밍#C언어#유닉스#파일입출력#커널

← 목록으로
공유페이스북밴드

이 글에 대해 요청(숨김) 수정 요청