코딩 도구/CS 면접 도구(14)
-
CS 공부 & 면접 맛보기 0x0E [운영체제] : 데드락(Deadlock)의 해결 방법
데드락(Deadlock)의 해결 방법질문데드락을 해결하는 방법은 무엇인가요?면접 답변데드락(Deadlock)은 교착상태 예방(Prevention), 회피(Avoidance), 발견(Detection), 회복(Recovery)의 네 가지 방법으로 해결할 수 있습니다. 1. 교착상태 예방(Prevention)교착상태 발생의 4가지 조건(비선점, 순환 대기, 점유 대기, 상호 배제) 중 하나를 제거하여 해결하는 방법입니다. 상호 배제(Mutual Exclusion) 부정: 여러 프로세스가 동시에 자원을 사용할 수 있도록 허용합니다. 단, 이 경우 동기화 문제가 발생할 수 있습니다. 점유 대기(Hold and Wait) 부정: 프로세스가 실행되기 전에 필요한 모든 자원을 할..
2025.01.17 -
CS 공부 & 면접 맛보기 0x0D [운영체제] : 데드락(Deadlock)
데드락(Deadlock)질문데드락(Deadlock)이란 무엇인가요?면접 답변데드락(Deadlock)은 둘 이상의 프로세스가 자원을 점유한 상태에서, 서로 상대방의 자원을 요구하며 무한정 기다리는 교착 상태를 의미합니다.데드락은 다중 프로세스 환경에서 자원 할당이 비효율적으로 이루어질 때 발생할 수 있으며, 프로그램의 실행이 중단되는 심각한 문제가 될 수 있습니다. 데드락의 4가지 필요 조건데드락이 발생하기 위해서는 다음 4가지 조건이 모두 만족되어야 합니다:1. 비선점(Non-preemptive)이미 할당된 자원은 강제로 빼앗을 수 없습니다.한 번 할당된 자원은 사용이 끝날 때까지 다른 프로세스가 사용할 수 없습니다.2. 순환 대기(Circular Wait)두 개 이상의 프로세스가 자원을 기다릴 때, 각..
2025.01.15 -
CS 공부 & 면접 맛보기 0x0C [운영체제] : Race Condition을 방지하는 방법
Race Condition을 제어하는 방법질문Race Condition을 방지하는 방법은 무엇인가요?면접 답변Race Condition(경쟁 상태)은 여러 스레드가 동시에 동일한 자원에 접근할 때 발생하는 문제입니다. 이를 방지하기 위해 다음과 같은 동기화 기법을 사용할 수 있습니다:뮤텍스(Mutex): 한 번에 하나의 스레드만 자원에 접근할 수 있도록 잠금(lock)을 제공하는 동기화 도구입니다.세마포어(Semaphore): 제한된 수의 스레드만 동시에 자원에 접근할 수 있도록 합니다.모니터(Monitor): 객체 수준의 동기화 도구로, 특정 객체에 대한 스레드 접근을 제어합니다.원자적 연산(Atomic Operations): 특정 연산을 한 번에 수행하여, 실행 중간에 다른 스레드의 개입을 방지하는 ..
2025.01.13 -
CS 공부 & 면접 맛보기 0x0B [운영체제] : Race Condition (경쟁 상태)
Race Condition (경쟁 상태)질문Race Condition(경쟁 상태)이란 무엇인가요?면접 답변Race Condition(경쟁 상태)란 둘 이상의 스레드가 동시에 동일한 자원에 접근하고, 이로 인해 예기치 않은 결과가 발생하는 상황을 의미합니다.발생 조건:공유 자원에 동시 접근.적절한 동기화가 없을 때 발생.해결 필요성:Race Condition은 데이터 손실, 예측 불가능한 동작, 프로그램 충돌 등을 일으킬 수 있습니다.Race Condition을 방지하는 다양한 동기화 방법은 다음 게시글에서 자세히 다루겠습니다.Race Condition의 원리 및 설명Race Condition 발생 원리상황: 두 개의 스레드가 동일한 변수 counter에 동시에 접근한다고 가정합니다.#include #in..
2025.01.11 -
CS 공부 & 면접 맛보기 0x0A [운영체제] : LRU 캐싱 (Least Recently Used Cache)
LRU 캐싱 (Least Recently Used Cache)질문LRU 캐싱이란 무엇인가요?답변LRU (Least Recently Used) 캐싱은 가장 오랫동안 사용하지 않은 데이터를 제거하는 페이지 교체 알고리즘입니다. 사용 빈도가 낮은 데이터를 제거함으로써 효율적으로 메모리를 관리할 수 있습니다.LRU 캐싱의 원리기본 아이디어: 페이지에서 가장 오랫동안 사용되지 않은 데이터를 제거.사용 사례: 메모리 제한이 있는 환경에서 효율적인 데이터 관리.특징: 최근 사용된 데이터는 페이지 상단에 유지되고, 오래된 데이터는 페이지 하단에 유지됨.LRU 캐싱의 구현 방법첫 번째 방법: 타임스탬프 활용원리: 데이터가 언제 사용되었는지 타임스탬프를 저장하여 가장 오래된 데이터를 제거.구현: 각 데이터에 타임스탬프를 ..
2025.01.10 -
CS 공부 & 면접 맛보기 0x09 [운영체제] : 프로세스와 스레드의 차이
프로세스와 스레드의 차이질문프로세스(Process)와 스레드(Thread)의 차이점은 무엇인가요?면접 답변프로세스(Process)는 실행 중인 프로그램의 인스턴스이고, 스레드(Thread)는 프로세스 내에서 실행되는 최소 실행 단위입니다.프로세스: 프로그램의 독립적인 실행 단위이며, 메모리 공간을 독립적으로 사용합니다.스레드: 프로세스 내의 실행 흐름이며, Stack을 제외한 메모리 공간을 공유합니다.프로세스 간 통신은 IPC(Inter-Process Communication) 기법을 사용해야 하며, 대표적으로 파이프, 소켓, 공유 메모리 등이 있습니다. 반면, 스레드는 Stack을 제외한 메모리 영역을 공유하므로 별도의 통신 없이 데이터 접근이 가능합니다.프로세스(Process)란?정의: 실행 중인 프..
2025.01.09