OS 3

[Interview Question] Docker를 써본 경험이 있나요? 컨테이너 vs VM 차이는 무엇인가요?

주로 백엔드 서버(Spring Boot), 데이터베이스(PostgreSQL, MongoDB), 캐시 서버(Redis) 같은 환경을 Docker 컨테이너로 띄워 개발과 테스트를 진행했습니다. 로컬 환경에서 팀원들마다 설정 차이가 생기는 문제를 줄이고, 동일한 환경을 빠르게 구성할 수 있어 협업에 큰 도움이 되었습니다. VM은 하이퍼바이저(VMware, VirtureBox) 위에 각각의 운영체제를 올려서 실행하기 때문에 하나하나가 독립적인 서버처럼 동작합니다. 그래서 보안과 안정성 측면에서는 강점이 있지만, 운영체제를 포함해야 하므로 무겁고 부팅 속도가 느린 단점이 있습니다. 컨테이너는 우리가 실행하려는 애플리케이션 파일, 런타임 환경, 환경변수 파일, 라이브러리 등을 하나의 이미지로 묶습니다.컨테이너는 운..

Interview Question 2025.09.04

[운영체제] 멀티스레딩 환경에서 발생하는 문제와 Deadlock을 피하는 방법

멀티스레딩은 CPU 자원을 효율적으로 활용하고 작업 성능을 높이는 데 유용한 기술이다. 하지만 여러 스레드가 동시에 자원에 접근할 수 있는 환경에서는 데이터 충돌, 교착 상태(Deadlock) 등 여러 문제가 발생할 수 있습니다.교착 상태의 조건과 이를 예방하기 위한 전략들을 정리해보자.멀티스레딩멀티스레딩은 프로세스 내 작업을 여러 개의 스레드, 멀티스레드로 처리하는 기법이며 스레드끼리 서로 자원을 공유하기 때문에 효율성이 높다. 예를 들어 웹 요청을 처리할 때 새 프로세스를 생성하는 대신 스레드를 사용하는 웹 서버의 경우 훨씬 적은 리소스를 소비하며, 한 스레드가 중단되어도 다른 스레드는 실행 상태일 수 있기 때문에 중단되지 않은 빠른 처리가 가능하다.멀티스레딩 환경에서 발생할 수 있는 문제1. 동기화..

OS 2025.06.08

[백엔드 면접 질문 준비] (6) JVM이란 무엇인가?

JVM이란?JVM(Java Virtual Machine)은 자바 프로그램을 실행하기 위한 가상 머신(Virtual Machine)입니다. 이름 그대로 물리적인 컴퓨터가 아니라, 프로그램 위에서 동작하는 소프트웨어 기반의 컴퓨터라고 이해할 수 있습니다. 자바로 작성된 코드는 .java 파일로 저장된 뒤, 자바 컴파일러(javac)를 통해 바이트코드(.class)로 변환됩니다. 이 바이트코드는 OS나 하드웨어와 무관한 중간 형태의 코드이며, JVM이 이 바이트코드를 해석하거나 실행합니다. 즉, JVM은 자바 바이트코드를 받아서 실제로 프로그램이 동작하도록 만들어주는 역할을 합니다. 왜 JVM이 필요한가?JVM의 가장 큰 특징은 운영체제(OS)에 독립적이라는 점입니다. 자바는 "한 번 작성하면, 어디서나 실행..

Interview Question 2025.04.05