본문 바로가기

전체 글26

프로세스 메모리 관리 모델과 가상 메모리 구조 운영체제는 각 프로세스마다 메모리 모델을 만들어 관리합니다. 이를 이해하는 것은 프로그램이 실행되는 메커니즘을 정확히 파악하는 데 필수입니다. 본 글에서는 가상 메모리와 프로세스 메모리 구조를 분석하고, 각 영역(Stack, Heap, Text, Global)의 동작을 자세히 살펴보겠습니다.1. 운영체제의 가상 메모리 관리 개요가상 메모리란?가상 메모리(Virtual Memory)는 실제 물리 메모리(RAM)의 크기보다 더 큰 메모리 공간을 추상화하여 제공하는 기술입니다. 프로세스는 자신의 전체 메모리 공간을 갖는 것처럼 동작하며, 실제 메모리 할당은 운영체제가 제어합니다.프로세스는 자신만의 4GB 공간(32bit 기준, 64bit에서는 훨씬 더 큼)을 가진 것처럼 동작가상 주소 ↔ 실제 물리 주소는 M.. 2025. 7. 17.
파서(Parser)란? 파서(Parser)HTML, XML, 프로그래밍 언어 소스 코드, JSON 등을 받아서 의미 있는 구조(Tree 등)로 만드는 역할 파서(Parser)는 입력된 텍스트 데이터를 일정한 문법에 따라 구조화된 데이터로 분석하고 변환하는 프로그램 또는 알고리즘입니다.웹 브라우저 핵심: HTML, CSS, JS 모두 파싱을 통해 트리 구조로 구성됨컴파일러의 핵심: 모든 프로그래밍 언어의 컴파일 과정에서 필수데이터 처리: XML, JSON, Markdown 등 구조화된 데이터 해석에 필수파서의 위치: 전체 처리 흐름에서의 위치[원시 문자열 입력] ↓ Tokenizer / Lexer ↓ Parser ↓ [구문 트리(Syntax Tree) 또는 DOM Tree 생성]To.. 2025. 7. 17.
JSON과 XML: 웹 데이터 교환 방식 비교 분석 💬데이터 교환?웹 개발에서 데이터를 교환하는 데 필수적인 두 가지 형식, JSON(JavaScript Object Notation)과 XML(eXtensible Markup Language)에 대해 자세히 알아보고자 합니다.이 두 형식은 웹 서버로부터 데이터를 받거나 컴퓨터 간에 데이터를 전송하는 데 사용될 수 있으며, 모두 사람이 읽을 수 있는(self-describing) 자가 설명적인 구조를 가지고 있고, 계층적인 구조로 값을 값 안에 포함할 수 있습니다. 또한 다양한 프로그래밍 언어에서 파싱(parsing)되고 사용될 수 있으며, XMLHttpRequest를 사용하여 가져올 수 있다는 공통점을 가지고 있습니다.하지만 이 두 형식은 중요한 차이점들을 가지고 있어 각각의 용도와 장단점이 명확하게 나.. 2025. 7. 16.
리눅스(Linux)란 무엇인가? 리눅스란?리눅스(Linux)는 오픈소스로 개발된 유닉스(Unix) 계열 운영체제입니다. 서버, 클라우드, 모바일, IoT, 그리고 백엔드 개발 환경에 이르기까지 **전 세계적으로 가장 널리 사용되는 운영체제 중 하나입니다.전 세계 웹 서버의 약 90% 이상이 리눅스 기반으로 운영됩니다.왜 개발자에게 리눅스가 중요한가?서버 환경 대부분이 리눅스 기반터미널 명령어로 시스템 제어 가능스크립트를 통한 자동화 및 배포 작업Docker, Kubernetes, Git 등 DevOps 도구들이 리눅스 환경에 최적화macOS는 리눅스처럼 동작하는 유닉스 계열 OS리눅스의 구성 요소 구성 요소 설명 커널 (Kernel)하드웨어와 소프트웨어 사이를 중계하는 핵심쉘 (Shell)사용자가 입력한 명령을 해석하고 실행하는 인터.. 2025. 7. 16.
git vs GitHub git이란?git(Global Information Tracker)은 파일의 변경 이력을 추적하고, 이전 상태로 되돌리거나 협업 중 충돌을 해결할 수 있게 해주는 버전 관리 시스템(VCS) 입니다.분산형 버전 관리 시스템(DVCS, Distributed Version Control System)모든 개발자는 자신의 PC에 전체 프로젝트의 변경 이력을 로컬 저장소로 갖고 있음중앙 서버가 없어도 각자가 독립적으로 버전 관리 및 복구 가능git 동작 구조Working Directory(작업 디렉토리): 실제 개발자가 작업하는 파일/폴더 공간Staging Area(스테이징): 커밋 전, 기록할 변경 사항을 잠시 모아두는 곳Repository(로컬 저장소): 커밋한 모든 변경 이력이 저장되는 공간Remote(원격.. 2025. 7. 15.
Redis란 무엇인가?: Spring Boot에 캐시로 적용해보기 💬 왜 인메모리 데이터베이스가 필요할까? PostDM 프로젝트는 사용자들이 견적서를 생성하고 조회할 수 있는 플랫폼입니다. MySQL 기반인 프로젝트의 핵심 API인 견적서 상세 조회 API에 대해 JMeter를 활용한 성능 테스트를 진행했습니다. 그 결과 평균 응답 속도가 약 60ms로 나타났는데, 이는 일반적인 웹 API 기준으로는 나쁘지 않은 수준입니다. 하지만 견적서 상세 조회 API는 현재로는 수정/삭제 기능이 없고, 내용 변화가 없기 때문에 캐싱을 적용한다면 더 나은 응답 수준을 보여줄 수 있을 거라 생각했습니다.따라서 이번 글에서는 Redis가 무엇인지 정리하고, 프로젝트에서 어떻게 적용했는지 정리해보고자 합니다.인메모리 데이터베이스와 Redis인메모리 데이터베이스?인메모리 데이터베이스는 .. 2025. 7. 10.