❓ 프로세스와 스레드의 차이를 설명해주세요(필수)
✅ 한줄 요약
프로세스는 독립 실행 단위, 스레드는 그 내부 작업 단위입니다.
💬 부가 설명
프로세스는 메모리 공간과 자원을 독립적으로 가지고 실행되고, 스레드는 같은 프로세스 내에서 자원을 공유하며 실행됩니다. 그래서 스레드는 생성 비용이 더 낮고 전환이 빠릅니다.
❓ 스택 영역과 힙 영역의 차이는 무엇인가요?
✅ 한줄 요약
스택은 함수 실행 시 사용하는 고정 메모리, 힙은 동적 할당 메모리입니다.
💬 부가 설명
스택은 함수 호출과 지역 변수에 사용되며, LIFO 구조로 빠르게 할당/해제됩니다. 반면 힙은 동적 메모리로 사용자가 직접 관리해야 하며, 속도는 느리지만 유연합니다.
❓ 멀티 프로세싱을 하는 이유는?
✅ 한줄 요약
CPU 여러 개를 활용해 병렬 처리 성능을 높이기 위해서입니다.
💬 부가 설명
멀티 프로세싱은 여러 작업을 병렬로 수행하여 시스템 자원을 효율적으로 활용하고 전체 처리량을 증가시킵니다. 특히 CPU가 여러 개일 때 유리합니다.
❓ Shared Memory 방식과 Message Passing 방식의 차이는?
✅ 한줄 요약
공유 메모리는 빠르지만 동기화 필요, 메시지 전달은 안전하지만 느립니다.
💬 부가 설명
Shared Memory는 메모리를 공유해 빠르지만 동기화가 필요하고 복잡합니다. Message Passing은 각 프로세스가 독립적으로 데이터를 주고받기에 안정적이지만 성능은 낮을 수 있습니다.
❓ 멀티 스레드 vs 멀티프로세스(필수)
✅ 한줄 요약
멀티스레드는 자원 공유로 가볍고 빠르며, 멀티프로세스는 안정성이 높습니다.
💬 부가 설명
멀티스레드는 자원을 공유하므로 메모리 사용이 적고 빠르지만, 하나의 스레드가 죽으면 전체에 영향을 줄 수 있습니다. 반면 멀티프로세스는 안정적이지만 메모리 비용이 큽니다.
❓ 멀티스레드의 장점과 단점
✅ 한줄 요약
장점은 자원 효율성과 빠른 처리, 단점은 하나가 죽으면 전체에 영향 가능성.
💬 부가 설명
멀티스레드는 컨텍스트 스위칭이 빠르고 자원 공유로 효율적입니다. 하지만 동기화가 어렵고, 한 스레드 문제로 전체가 멈출 수 있는 단점도 있습니다.
❓ 사용자 스레드와 커널 스레드의 차이점은 무엇인가요?
✅ 한줄 요약
사용자 스레드는 커널에 인식되지 않으며, 커널 스레드는 운영체제가 관리합니다.
💬 부가 설명
사용자 스레드는 사용자 수준에서 관리되고 커널이 인식하지 않아 속도는 빠르지만, 하나가 블로킹되면 전체가 멈출 수 있습니다. 커널 스레드는 커널이 직접 관리해 안정적입니다.
❓ 컨텍스트 스위칭이란?(필수)
✅ 한줄 요약
작업 전환 시 이전 상태를 저장하고 다음 작업 상태를 불러오는 과정입니다.
💬 부가 설명
컨텍스트 스위칭은 하나의 작업 상태를 저장하고, 다른 작업의 상태를 복원하는 과정으로 CPU 자원을 효율적으로 분배하기 위해 필요합니다. 다만 오버헤드가 발생할 수 있습니다.
❓ 멀티스레드 프로그래밍과 장점에 대해 설명하시오
✅ 한줄 요약
하나의 프로세스에서 여러 작업을 동시에 처리해 효율성을 높이는 것입니다.
💬 부가 설명
멀티스레드 프로그래밍은 하나의 프로그램이 여러 작업을 동시에 처리하게 만들어 응답성을 높이고 자원을 효율적으로 사용할 수 있게 합니다.
❓ 동기 / 비동기의 차이를 설명하시오(필수)
✅ 한줄 요약
동기는 순차적 처리, 비동기는 대기 없이 다른 작업 가능하게 합니다.
💬 부가 설명
동기는 요청한 작업이 끝나야 다음 작업이 시작되고, 비동기는 작업을 요청만 하고 바로 다음 작업을 수행할 수 있어 응답 속도를 높일 수 있습니다.
❓ 프로세스의 각 Section에는 무엇이 저장되는가?
✅ 한줄 요약
텍스트, 데이터, 힙, 스택 등으로 나뉘며 각기 다른 정보를 담습니다.
💬 부가 설명
텍스트 영역은 코드, 데이터 영역은 전역변수, 힙은 동적 메모리, 스택은 함수 호출 정보가 저장됩니다. 각 영역은 독립적으로 관리됩니다.
❓ 프로세스 통신 방법에는 무엇이 있는가?
✅ 한줄 요약
프로세스 간 통신 방법에는 공유 메모리, 메시지 전달 등이 있습니다.
💬 부가 설명
공유 메모리는 메모리 공간을 공유하고, 메시지 전달은 데이터를 주고받는 방식입니다. 목적에 따라 효율성이나 안정성을 선택합니다.
❓ cpu 스케줄링이 무엇인지 사용하는 이유가 무엇인지 말하시오
✅ 한줄 요약
CPU를 효율적으로 사용하기 위한 작업 스케줄링 기법입니다.
💬 부가 설명
여러 프로세스가 동시에 실행되도록 CPU를 분배하여 시스템 성능과 응답성을 높입니다. 시분할 시스템에서 특히 중요합니다.
❓ cpu 스케줄링 종류와 간단한 설명
✅ 한줄 요약
FCFS, SJF, Priority, RR 등 다양한 방식이 있습니다.
💬 부가 설명
FCFS는 순서대로, SJF는 실행시간이 짧은 순, RR은 시간할당 방식, Priority는 우선순위 기반입니다. 상황에 따라 선택합니다.
❓ 경쟁상태에 대한 설명
✅ 한줄 요약
여러 프로세스가 자원을 동시에 요구하며 충돌이 발생하는 상태입니다.
💬 부가 설명
공유 자원에 대해 여러 프로세스가 동시에 접근하려고 할 때 발생합니다. 데이터 불일치나 충돌이 생길 수 있습니다.
❓ 경쟁상태가 발생하는 경우와 해결법
✅ 한줄 요약
자원을 동시에 요청하거나 점유하며 발생하며, 동기화로 해결합니다.
💬 부가 설명
예를 들어 두 프로세스가 서로 자원을 점유한 채 상대 자원을 기다리는 경우입니다. 락, 세마포어 등을 이용한 동기화로 해결합니다.
❓ 임계영역에 대한 설명과 임계영역에서 발생하는 문제
✅ 한줄 요약
임계영역은 동시에 접근하면 문제가 생기는 코드 구간입니다.
💬 부가 설명
임계영역은 한 번에 하나의 스레드만 접근해야 하는 코드입니다. 적절한 동기화 없이는 경쟁 상태나 데이터 손상이 발생할 수 있습니다.
❓ 뮤텍스 vs 세마포어의 차이점
✅ 한줄 요약
뮤텍스는 1개 자원, 세마포어는 여러 개 자원 관리에 사용됩니다.
💬 부가 설명
뮤텍스는 상호배제를 위한 락으로 하나의 자원을 보호하며, 세마포어는 동시에 여러 개를 제어할 수 있어 범용적입니다.
❓ Swapping에 대해 설명해주세요
✅ 한줄 요약
Swapping은 프로세스를 메모리와 디스크 간에 교체하는 기법입니다.
💬 부가 설명
주 기억장치가 부족할 때 일부 프로세스를 디스크로 내보내고 필요 시 다시 불러오는 방식으로, 메모리 공간 확보에 사용됩니다.
❓ 단편화(Fragmentation)는 어떻게 나눌 수 있나요?
✅ 한줄 요약
내부 단편화와 외부 단편화로 나뉩니다.
💬 부가 설명
내부 단편화는 할당된 공간의 남는 부분, 외부 단편화는 사용 가능한 공간이 나뉘어 실제 할당이 어려운 경우를 말합니다.
❓ 가상 메모리란 무엇이고 도입 시 어떠한 효과를 얻을 수 있나요?
✅ 한줄 요약
가상 메모리는 물리 메모리보다 큰 메모리를 쓰는 기술입니다.
💬 부가 설명
가상 메모리는 보조기억장치를 이용해 물리 메모리보다 큰 주소 공간을 사용하는 기법입니다. 프로그램은 더 큰 메모리를 쓰는 것처럼 동작할 수 있습니다.
❓ 요구 페이징(Demand Paging)에 대해 설명해주세요.
✅ 한줄 요약
요구 페이징은 필요한 시점에만 페이지를 로딩하는 방식입니다.
💬 부가 설명
요구 페이징은 처음부터 모든 페이지를 로딩하지 않고, 실제로 접근할 때 해당 페이지만 메모리에 불러와 효율을 높입니다.
❓ 페이지 교체 알고리즘이란 무엇인가요?
✅ 한줄 요약
페이지 교체 알고리즘은 페이지 부족 시 교체할 대상을 고르는 방식입니다.
💬 부가 설명
페이지가 가득 찬 상황에서 새로운 페이지를 불러오기 위해 어떤 페이지를 제거할지를 결정하는 정책입니다.
❓ 페이지 교체 알고리즘에 대해서 알고계신 것 모두 말씀해주세요.
✅ 한줄 요약
FIFO, LRU, LFU, OPT 등 다양한 알고리즘이 존재합니다.
💬 부가 설명
FIFO는 먼저 들어온 페이지 제거, LRU는 가장 오래 안 쓴 것 제거, OPT는 앞으로 가장 멀리 사용될 페이지 제거 방식입니다.
❓ 논리주소와 물리주소가 무엇인가요?
✅ 한줄 요약
논리주소는 프로그램 관점 주소, 물리주소는 실제 메모리 주소입니다.
💬 부가 설명
논리주소는 CPU나 프로그램이 사용하는 주소이며, MMU를 통해 물리주소로 변환되어 실제 메모리에 접근합니다.
❓ 메모리 할당 알고리즘에 대해 알려주세요.
✅ 한줄 요약
First Fit, Best Fit, Worst Fit 등의 방법이 있습니다.
💬 부가 설명
First Fit은 처음 맞는 공간, Best Fit은 가장 딱 맞는 공간, Worst Fit은 가장 큰 공간을 할당하는 방식입니다.
❓ 운영체제에서 페이징은 무엇인가요?
✅ 한줄 요약
페이징은 메모리를 고정 크기 블록으로 나누는 기법입니다.
💬 부가 설명
페이징은 메모리를 동일한 크기로 나눠 관리하며, 주소 매핑이 간단해지고 단편화를 줄일 수 있습니다.
❓ 페이징의 장단점 설명해주세요.
✅ 한줄 요약
단편화를 줄이고 주소 공간을 효율적으로 활용할 수 있습니다.
💬 부가 설명
페이징은 외부 단편화를 줄이지만 내부 단편화는 발생할 수 있습니다. 주소 계산이 단순한 것이 장점입니다.
❓ 페이징과 세그멘테이션 차이에 대해 설명해주세요
✅ 한줄 요약
페이징은 고정 크기, 세그멘테이션은 논리적 단위로 분할합니다.
💬 부가 설명
페이징은 물리적 단위 기반, 세그멘테이션은 논리적 단위로 메모리를 나눠 각 세그먼트에 다른 크기를 할당할 수 있습니다.
❓ TLB가 무엇인지, TLB miss와 hit가 일어나는 경우에 대해 설명해주세요.
✅ 한줄 요약
TLB는 주소 매핑 속도를 높이는 캐시이며 miss/hit 발생 시 처리 차이가 있습니다.
💬 부가 설명
TLB는 가상주소와 물리주소의 매핑을 캐싱해 속도를 높입니다. miss 발생 시 페이지 테이블을 참조해야 하므로 느려집니다.