분류 전체보기 45

Node.js - Node.js를 직접 만들어보자

Node.js를 직접 만든다면? 런타임 구성 요소와 구현 예제Node.js는 V8 JavaScript 엔진과 libuv 비동기 I/O 라이브러리를 기반으로 동작하는 JavaScript 런타임.Node.js를 직접 만든다면 어떤 요소들이 필요한지, 그리고 실제로 C++로 구현해볼 수 있는 예제들을 통해 구조를 이해 ㄱㄱ1. Node.js의 기본 구성 요소Node.js는 아래와 같은 구성 요소로 이루어져 있음.JavaScript 엔진: V8 (또는 SpiderMonkey, JavaScriptCore)비동기 I/O: libuv 또는 직접 구현한 이벤트 루프C++ 네이티브 모듈: 파일 시스템, 네트워크 API 등바인딩 시스템: C++ API를 JS에서 호출할 수 있도록 연결2. V8을 사용한 간단한 JavaSc..

web 2025.05.07

동기화(synchronization) 기법 - Mutex와 Semaphore

동기화 도구: Mutex와 Semaphore 정리1. 개요- 동기화(synchronization) 기법- 멀티스레드/멀티프로세스 환경에서 공유 자원 충돌 방지- Race Condition(경쟁 조건) 방지2. 뮤택스 (Mutex)- Mutual Exclusion(상호 배제)- 하나의 스레드만 임계 구역 진입 가능- lock / unlock 방식- 소유권 있음 (잠근 스레드만 해제 가능)🔹 특징자원: 1개허용: 1스레드소유권: 있음Deadlock: 있음용도: 임계 구역 보호3. 세마포어 (Semaphore)- 동시 허용 수 제한- 내부 카운터로 접근 관리 (acquire/release)- 일반 세마포어: n개 허용- 이진 세마포어: 1개 허용 → 뮤택스 유사- 소유권 없음🔹 특징자원: n개허용: 지정 ..

Python - GIL와 메모리 관리

파이썬 GIL와 메모리 관리1. GIL (Global Interpreter Lock)이란? CPython 인터프리터는 한 번에 하나의 쓰레드만 바이트코드를 실행할 수 있도록 제한하는 전역 락(GIL)을 사용합니다. 모든 쓰레드는 GIL을 획득해야만 실행 가능 ❌ 문제: 여러 쓰레드가 동시에 참조 카운트를 조작하면 메모리 오류 발생 가능 ✔ 해결: GIL을 통해 바이트코드 실행을 직렬화하여 안전 보장2. 멀티쓰레딩은 못 쓰나? CPU 바운드 작업에서는 GIL로 인해 성능 향상 거의 없음. I/O 바운드 작업(네트워크, 파일, DB 등)은 GIL이 자동 해제되어 효과 있음 ✔ 대안: 멀티프로세싱, C 확장, async/await 활용3. GIL의 동작 방식 - 쓰레드는 GIL을 획득해야 Pyt..

통신 - OSI 7계층 간단 정리

📡 OSI 7계층 쉽게 이해하기네트워크 통신을 이해할 때 빠질 수 없는 OSI 7계층. 아래는 각 계층의 역할을 실제 장비와 예를 통해 간단하게 정리한 내용입니다.1️⃣ 물리 계층 (Physical Layer)역할: 전기적 신호를 주고받는 물리적인 장치 담당예시: 케이블, 커넥터, RS-232, RS-485, 이더넷(Ethernet) 등비트 단위로 0과 1을 주고받음2️⃣ 데이터 링크 계층 (Data Link Layer)역할: 신호를 프레임 단위로 정리해 오류 없이 전송예시: 프레임에 트레일러 붙이기, 에러 검출, 시작/정지 비트 등MAC 주소 사용 (LAN 통신 식별자)3️⃣ 네트워크 계층 (Network Layer)역할: 목적지까지의 경로 설정 및 주소 지정예시: IP 주소, 라우터, 슬레이브 번호..

engineering 2025.05.04

Python - 파이썬 구현체 CPython과 Python Virtual Machine의 동작 원리

CPython 실행 원리: Python Virtual Machine과의 연결1. 초기화 - Py_Initialize()CPython의 main() 함수 내부에서 호출Python VM(PVM) 구성에 필요한 환경을 세팅:내장 모듈 불러오기GC 초기화메모리 시스템 준비기본 네임스페이스 생성2. 스크립트 로딩 - PyRun_SimpleFileExFlags()Python 코드를 파일로부터 받아 실행하며 내부적으로 run_file → run_mod 호출3. 파싱 - AST 생성주요 함수 호출 흐름:PyParser_ASTFromFileObject()→ PyParser_ParseFileObject()→ PyParser_ASTFromNodeObject()역할:파이썬 코드를 읽고 문법 구조 분석AST(Abstract S..

Python - 파이썬이 돌아가는 원리

파이썬 프로그램이 돌아가는 원리1. 소스 코드 작성 (.py 파일) 사람이 읽을 수 있는 텍스트 코드 print("Hello, world!") ✔ 설명: .py 확장자 파일로 저장2. 인터프리터가 소스 코드 읽음 python hello.py 실행 시 인터프리터 동작 ✔ 설명: 기본 구현체는 CPython3. 파서 → 바이트코드 생성 문법 분석 후 AST 생성 AST를 바이트코드로 컴파일 ✔ 설명: .pyc 파일로 캐싱 가능4. Python VM이 바이트코드 실행 바이트코드 한 줄씩 해석 객체 생성, 변수 할당, 연산 수행5. 런타임 동작 - 메모리 관리 (GC) - 예외 처리 - 동적 타이핑 및 흐름 제어6. 결과 출력 또는 에러 발생 정상 실행 시 출력 예외 발생 시 Trac..

Plasma - 플라즈마 기초 -3

플라즈마 내 하전입자의 운동 🔋 전기장과 자기장에서의 입자 운동 외부 전기장과 공간전하 전기장이 존재 시, 입자는 충돌 사이 주기 동안 가속됨 충돌을 반복하면서 입자는 방향성을 띠고 무질서 운동 속도 증가 → 플라즈마 가열 전자 > 이온 > 중성입자 순으로 충돌빈도 높음 → 전자가 가장 많이 가열됨 🌀 자기장에서의 입자 운동 자기장 수직면에서 하전입자는 선회 운동 자기장과 전기장이 불균일한 경우, 입자는 수직 방향으로 변위 → 드리프트 발생 선회 반경: Larmor Radius 선회 주파수: Cyclotron Frequency 변위 운동: Drift Motion 플라즈마 관련 핵심 용어 🔑 주요 전위 관련 Floating Potential (Vf): 탐침에 흐르는 전류가 0일 때의 전압 Pl..

engineering 2025.05.02

Plasma - 플라즈마 기초 -2

플라즈마(Plasma)의 주요 파라미터 📐 1. 주요 파라미터 Electron Temperature (Te): 전자의 무질서 운동에너지. 1eV ≒ 11,600K Ion Temperature (Ti): 이온의 평균 운동 에너지 Electron Density (ne): 전자 수 밀도, 단위: #/cm³ Ion Density (ni): 이온 수 밀도 Plasma Potential (Vp): 플라즈마의 전위. 벽과의 포텐셜 차 Neutral Gas Density (n₀): 중성 입자의 밀도 Collision Mean Free Path: 입자 충돌 전 평균 비행 거리 플라즈마의 특성 ⚡ 전기적 특성 자유 전자 존재로 인해 전기 전도성 보유. 일반 고체와 달리 온도가 상승할수록 전도도 증가. 🧲 자기적 ..

engineering 2025.05.02

Plasma - 플라즈마란? 플라즈마 기초 -1

플라즈마(Plasma)란? 고온의 기체 상태에서 원자 또는 분자에 에너지가 가해져 전자가 이탈, 양이온과 자유전자가 공존하는 상태. 물질의 제4상태로 불리며, 통계적으로 충분한 이온과 전자가 존재하고 전기적 중성이 유지되어야 함. ⚛️ 플라즈마의 조건 충분한 수의 이온과 전자가 Boundary 내 존재 전체적으로 전기적 중성 상태 유지 구성: 전자 > 이온 > Radical > 원자 > 분자 순 ⚡ 플라즈마의 전기적 특징 전기적으로 양성인 플라즈마 내부에 음극(전자 및 음이온), 양극(양이온)이 동일 밀도로 존재함. 플라즈마의 종류 1. DC 플라즈마 Anode와 Cathode 사이의 전압으로 발생 Glow discharge 형태 Cathode에서 sheath 효과로 음극 작용 전도성 물질에만..

engineering 2025.05.02

대역폭 이론

대역폭(Bandwidth)이란? 일정 시간 동안 데이터가 통과할 수 있는 용량의 척도. 네트워크, 디지털 통신, 주파수 등 다양한 맥락에서 사용. 📡 기본 정의 단위 시간당 전송 가능한 데이터의 양 주파수 범위(Hz)로 표현되기도 함 셰논-하틀리 이론: 데이터 전송률은 대역폭에 비례 📶 대역폭의 종류 네트워크 대역폭: 인터넷, LAN 등의 데이터 통신 속도 데이터 대역폭: 디지털 시스템에서 처리 가능한 데이터 양 디지털 대역폭: 신호 처리, 전자 시스템에서의 데이터 처리 범위 📈 단위 및 연관 개념 비트율(bit rate): bps = bit/second 보율(Baud rate): 초당 전송 가능한 '심볼' 수 예시 1 심볼 = 2비트라면, Baud = bps / 2 시리얼 통신에서..

engineering 2025.05.02