suminworld

전체 글 45

🛡️리눅스 백신 실습2 - ClamAV 실시간 보호 구현 (inotify + bash 자동화)

ClamAV 실시간 보호 구현 - inotify로 악성코드 실시간 탐지 및 격리 - 실습 이미지 첨부 예정이전 포스팅(https://suminworld.tistory.com/19)에서 ClamAV 기본 설치와 수동 검사를 다뤘습니다. 하지만 수동 검사는 이미 감염된 후에 발견한다는 치명적인 한계가 있습니다. 그래서 오늘은 파일이 생성되는 순간 자동으로 검사하는 실시간 보호 시스템을 구축해보겠습니다“φʕ•ᴥ•oʔ GitHub 레포지토리: https://github.com/sumin-world/suminworld-system-lab실습 목표Linux의 inotify API를 이해하고 활용하기파일 시스템 변경을 실시간으로 감지하는 방법 학습bash 스크립트로 ClamAV 자동 검사 시스템 구축악성코드 자동 격..

system 2025.11.26

Google Dev Challenge: C 언어 타입 변환의 함정

Google for Developers에서 제시한 C 언어 Dev Challenge 문제입니다. "코드는 단순하지만 동작은 그렇지 않다"는 주제로, signed와 unsigned int 비교 시 발생하는 예상치 못한 동작을 다룹니다.문제 소개Google for Developers의 Dev Challenge는 일상적인 버그의 원인을 탐구하는 시리즈입니다. 이번 문제는 얼핏 보기에 -1이 명백히 1보다 작아 보이지만, C 언어의 타입 변환 규칙이 개입하면서 예상과 다른 결과가 나오는 상황을 보여줍니다.코드 분석#include int main() { int a = -1; unsigned int b = 1; if (a C 표준의 타입 변환 규칙C 언어 표준에서는 usual arithmetic c..

concept 2025.11.25

[OS] 뮤텍스 + Block() 방식의 문제점 (Producer-Consumer Problem)

2025-2 운영체제론 강의안 Synchronization II : Semaphore and Condition Variable 일부 정리한 내용입니다 ʕ/·ᴥ·ʔ/1. 문제 상황 개요Producer-Consumer 문제는 생산자 스레드와 소비자 스레드가 하나의 공유 버퍼를 사용하는 상황을 말한다.뮤텍스(lock)는 공유 자원에 대한 상호 배제는 보장하지만, 버퍼가 비어 있거나 꽉 찬 상황에서의 "기다림"이나 "순서 제어"는 제공하지 못한다.이를 해결하기 위해 Block()/Unblock()으로 기다림을 구현하려 시도한 버전이 바로 6페이지의 코드이다.2. 사용된 코드 구조# insert (생산자):if (count == N) Block();buf[++rear % N] = item;Acquire(&l..

concept 2025.11.17

[운영체제론] Constant Time Coalescing (Case 1-4) 정리

2025-2 운영체제론 dynamic memory allocation 일부 Case 1: 양쪽 블록 모두 할당됨Constant Time Coalescing (Case 1)m1 1m1 1n 1n 1m2 1m2 1상수 시간 병합 – 경우 1 (Case 1)표기m1이전 블록의 크기 (size of previous block)n현재 해제되는 블록의 크기 (size of block being freed)m2다음 블록의 크기 (size of next block)1할당 상태 (allocated bit = 1)0free 상태 (free bit = 0)즉, "m1 1"은 "크기 = m1, 할당됨(1)"이란 뜻입니다. 각 블록은 [크기 / 할당여부] 구조의 헤더(혹은 푸터)로 표현됩니다.Case 1의 의미양 옆 블록(이전..

concept 2025.11.08