Ubuntu needrestart로 업데이트 후 재시작이 필요한 서비스와 커널 찾기

apt upgrade로 libc6나 openssl 보안 업데이트를 받았다고 해서 이미 떠 있는 데몬까지 패치되는 것은 아니다. 실행 중인 프로세스는 교체되기 전의 라이브러리를 메모리에 그대로 매핑하고 있어서, 재시작하기 전까지는 취약한 코드가 계속…

Continue ReadingUbuntu needrestart로 업데이트 후 재시작이 필요한 서비스와 커널 찾기

머신러닝 입문 (6) — 자동미분(autograd) 직접 만들기

5편에서는 은닉층 하나짜리 신경망의 기울기를 손으로 유도했는데, 활성함수를 바꾸거나 층을 하나 더 얹으면 유도를 처음부터 다시 해야 한다. 프레임워크는 이 일을 자동미분(automatic differentiation)으로 대신한다. 이 글에서는 스칼라 autograd 엔진을 100줄…

Continue Reading머신러닝 입문 (6) — 자동미분(autograd) 직접 만들기

머신러닝 입문 (5) — 역전파를 손으로 계산하고 코드로 검증하기

4편까지의 모델은 층이 하나라 기울기를 종이에 한 줄로 적을 수 있었지만, 층을 쌓으면 손실이 합성함수가 되어 기울기를 연쇄법칙으로 뒤에서 앞으로 전달해야 한다. 이것이 역전파(backpropagation)다. 이 글에서는 은닉층 하나짜리 신경망의 역전파를…

Continue Reading머신러닝 입문 (5) — 역전파를 손으로 계산하고 코드로 검증하기

머신러닝 입문 (4) — 로지스틱 회귀와 이진 분류

압축 저장소를 만든다면 압축률을 정확히 맞히기보다 "이 파일을 압축할 가치가 있는가"를 먼저 판정해야 하고, 잘못 판정하면 CPU를 헛쓰거나 저장 공간을 손해 본다. 이 글에서는 같은 데이터로 원본의 30% 미만으로 줄어드는가를…

Continue Reading머신러닝 입문 (4) — 로지스틱 회귀와 이진 분류

머신러닝 입문 (3) — 경사하강법과 학습률

2편의 정규방정식은 손실이 이차식일 때만 쓸 수 있고, 로지스틱 회귀나 신경망에는 그런 닫힌 해가 없다. 그래서 대부분의 학습은 기울기를 따라 조금씩 내려가는 경사하강법(gradient descent)으로 한다. 이 글에서는 같은 데이터로 경사하강을…

Continue Reading머신러닝 입문 (3) — 경사하강법과 학습률

머신러닝 입문 (2) — 선형회귀를 밑바닥부터 구현하기

1편에서 np.linalg.lstsq가 내놓은 직선 ratio = 0.1936 * entropy - 0.6163이 무엇을 계산한 것인지는 건너뛰었다. 이 글에서는 손실을 미분해 정규방정식을 직접 풀고 lstsq와 같은 답이 나오는지 확인한 뒤, 설계행렬에 열을…

Continue Reading머신러닝 입문 (2) — 선형회귀를 밑바닥부터 구현하기

머신러닝 입문 (1) — 규칙 기반 코드와 학습 기반 코드의 차이

리눅스에서 개발하다 보면 대부분의 문제를 조건과 분기로 푼다. 그런데 이 파일을 gzip으로 압축하면 얼마나 줄어들까 같은 문제는 확장자로 if를 짜봐도 확장자 없는 실행 파일이나 이미 압축된 .gz에서 막히고, 머신러닝은 규칙을…

Continue Reading머신러닝 입문 (1) — 규칙 기반 코드와 학습 기반 코드의 차이

PLT 와 GOT – 리눅스 동적 링킹과 지연 바인딩

공유 라이브러리는 프로세스마다 다른 주소에 올라간다. ASLR이 켜져 있으면 같은 libc.so.6도 실행할 때마다 위치가 바뀐다. 그런데 .text는 읽기 전용으로 매핑되어 여러 프로세스가 물리 페이지를 공유하므로, call printf의 피연산자에 실제 주소를…

Continue ReadingPLT 와 GOT – 리눅스 동적 링킹과 지연 바인딩

LWN Weekly Report: 2026년 9월 10일 주요 뉴스

이번 주 LWN.net 위클리 에디션(9월 10일자) 주요 내용이다. 2년 넘게 끌어온 Rust never 타입(!) 안정화가 3,300개 크레이트를 흔드는 호환성 문제를 넘어 1.99에 들어가게 됐고, CERN은 컴파일러 플래그 하나 때문에 가속기…

Continue ReadingLWN Weekly Report: 2026년 9월 10일 주요 뉴스

리눅스 커널 spinlock·mutex 오용 디버깅 — DEBUG_SPINLOCK, DEBUG_MUTEXES, lockdep 실측 비교

스핀락(spinlock)과 뮤텍스(mutex)를 잘못 쓴 커널 코드는 대부분 조용히 지나간다. 초기화하지 않은 스핀락은 0으로 채워진 메모리라 x86에서는 그냥 동작하고, 스핀락 안에서 호출한 kmalloc(GFP_KERNEL)은 메모리가 넉넉하면 잠들지 않으니 아무 일도 없다. 그러다…

Continue Reading리눅스 커널 spinlock·mutex 오용 디버깅 — DEBUG_SPINLOCK, DEBUG_MUTEXES, lockdep 실측 비교