개발 도구/CS 면접 도구(19)
-
CS 공부 & 면접 맛보기 0x13 [운영체제] : UNIX 메모리 구조 설명
질문UNIX 메모리 구조에 대해서 설명하시오.면접 답변UNIX 시스템에서 메모리 구조는 Code, Data, BSS, Heap, Stack의 5개 영역으로 구성됩니다. 각 영역은 프로그램의 실행과 메모리 관리에 중요한 역할을 합니다.메모리 구조 구성 요소1. Code (코드 영역)정의: 실행 가능한 기계어 코드가 저장되는 메모리 영역.특징: 읽기 전용, 프로그램이 실행되는 동안 수정 불가능.2. Data (데이터 영역)정의: 전역 변수와 static 변수 중 초기화된 변수가 저장되는 메모리 영역.특징: 프로그램 시작 시 할당, 종료 시 해제.3. BSS (Block Started by Symbol)정의: 전역 변수와 static 변수 중 초기화되지 않은 변수가 저장되는 영역.특징: 실행 시 0으로 초기화..
2025.01.29 -
CS 공부 & 면접 맛보기 0x12 [운영체제] : 페이지 교체 알고리즘의 종류 설명
질문페이지 교체 알고리즘이란 무엇인가요?면접 답변페이지 교체 알고리즘(Page Replacement Algorithm)은 메모리 부족 상황에서 페이지를 메모리에 적재할 때, 기존 페이지 중 어떤 것을 제거할지 결정하는 알고리즘입니다. 페이지 교체 알고리즘의 종류1. FIFO (First-In-First-Out)가장 먼저 들어온 페이지를 먼저 제거하는 방식.장점: 구현이 단순하고 직관적.단점: 오래된 페이지가 꼭 불필요한 페이지라는 보장이 없음.2. OPT (Optimal Page Replacement)앞으로 가장 오래 사용되지 않을 페이지를 제거하는 방식.장점: 페이지 부재(Fault)를 최소화함.단점: 미래의 메모리 접근을 예측할 수 없으므로 이론적 알고리즘에 불과함.3. LRU (Least Recen..
2025.01.27 -
CS 공부 & 면접 맛보기 0x11 [운영체제] : 페이징이란
질문페이징(Paging)이란 무엇인가요?면접 답변페이징(Paging)은 하나의 프로세스가 사용하는 메모리 공간이 연속적이어야 한다는 제약을 없애는 메모리 관리 기법입니다. 도입 이유: 외부 단편화와 압축 작업을 해소하기 위해 고안되었습니다. 동작 방식: 물리 메모리는 프레임(Frame)이라는 고정 크기의 블록으로 나뉩니다. 논리 메모리(프로세스 메모리)는 페이지(Page)라는 고정 크기의 블록으로 나뉩니다. 장점:논리 메모리는 물리 메모리에 연속적으로 저장될 필요가 없음.외부 단편화(External Fragmentation) 해결 가능.남는 프레임에 페이지를 효율적으로 배치.단점:내부 단편화(Internal Fragmentation) 문제 해결 불가.예시: 페이지 크기가 4K..
2025.01.24 -
CS 공부 & 면접 맛보기 0x10 [운영체제] : Process 상태 변화 과정
질문프로세스의 상태 변화 과정은 어떻게 이루어지나요?면접 답변프로세스의 상태 변화는 Submit → Hold → Ready → Run → Wait/Exit의 순서로 진행됩니다. 각 상태는 프로세스의 실행 흐름과 자원 할당 상황을 반영합니다. 1. Submit (제출)사용자가 작업을 시스템에 제출한 상태입니다.아직 메모리에 적재되지 않은 상태이며, 작업 대기열에 들어가 있습니다. 2. Hold (대기)제출된 작업이 스풀 공간(디스크의 할당 위치)에 저장된 상태입니다.Spooling(스풀링)느린 입출력 장치의 속도를 보완하기 위해 사용되는 기법입니다.입출력 데이터를 직접 장치에 전송하지 않고 디스크에 임시 저장한 뒤, 한 번에 처리합니다. 3. Ready (준비)프로세스가 CPU를 할당받기 위해 대기 중인 ..
2025.01.22 -
CS 공부 & 면접 맛보기 0x0F [운영체제] : 인터럽트와 트랩
인터럽트와 트랩질문인터럽트(Interrupt)와 트랩(Trap)의 차이점은 무엇인가요?면접 답변인터럽트(Interrupt)와 트랩(Trap)은 모두 CPU의 정상적인 명령어 흐름을 제어하는 메커니즘입니다. 그러나 발생 원인과 동작 방식에서 차이가 있습니다. 인터럽트(Interrupt): 외부 하드웨어 장치(키보드, 마우스, 타이머 등)에 의해 발생. 비동기적으로 발생하며, 현재 실행 중인 프로세스를 일시 중지하고 처리. 트랩(Trap): 소프트웨어에 의해 발생하는 예외 상황이나 시스템 호출로 발생. 동기적으로 발생하며, 예외 상황(예: 0으로 나누기) 처리 또는 OS 서비스 요청. 1. 인터럽트(Interrupt)란?정의: 인터럽트는 CPU가 프로그램 ..
2025.01.20 -
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