Q1. 프로세스와 쓰레드의 차이점이 무엇인가요?
A1.
프로세스는 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램이다.
쓰레드는 프로세스 안에서 실행되는 여러 흐름의 단위이다.
프로세스가 다른 프로세스에 접근하려면 IPC를 사용해야 하지만 쓰레드는 다른 스레드와 스택 영역을 제외한 메모리 영역을 공유하기 때문에 통신과정을 거칠 필요가 없다
Q1-1. IPC 종류가 무엇이 있는지 설명해보세요
A1-1. 익명 PIPE, Message Queue, Named PIPE, 공유메모리, 소켓이 있습니다
Q2. 데드락이 무엇인가요?
A2. 둘 이상의 프로세스가 자원을 점유해 놓고 상대방의 자원만을 기다리고 있어 무한 wait상태에 빠져있는 현상
Q2-1. 데드락 발생조건 4가지를 말해보세요
A2-1. 상호배제: 자원은 한 번에 한 프로세스만 사용 가능
점유대기: 최소한 하나의 자원을 점유하고 있으면서 다른 프로세스에 할당된 자원을 사용하기 위해 대기하는 프로세스 존재
비 선점: 한 프로세스에 할단 된 자원은 사용이 끝날 때까지 강제로 빼앗을 수 없음
순환대기: 순환 형태로 자원을 대기하고 있는 프로세스의 집합
Q3. CPU 스케쥴링이 무엇인가요?
A3. CPU를 효율적으로 사용하기 위해서 프로세스를 배정하는 방법
Q3-1. CPU 스케쥴링 방법의 종류에 대해 아시나요?
A3-1.
대표적인 비 선점 스케쥴링: FCFS, SJF, HRN
대표적인 선점 스케쥴링: Round Robin, Priority Scheduling
비선점형은 하나의 프로세스가 끝나지 않으면 다른 프로세스는 CPU를 사용할 수 없고, 선점형은 하나의 프로세스가 다른 프로세스 대신 CPU를 차지할 수 있습니다
Q4. Race condition(경쟁 상태)가 무엇인지 설명해주세요
A4. Race condition이란 두 개 이상의 프로세스(또는 쓰레드)들이 하나의 자원에 동시에 접근할 때 경쟁하는 상태를 뜻합니다
Q5. 컨텍스트 스위칭이란 무엇인가요?
A5. CPU가 이전 프로세스의 상태를 저장하고 다음에 진행할 프로세스의 정보를 읽어서 적용하는 과정
Q6. 뮤텍스와 세마포어에 대해 설명해주세요
A6. 뮤텍스는 락을 걸은 프로세스만 락을 해제할 수 있지만 세마포어는 다른 프로세스가 세마포어를 해제할 수 있습니다. 그리고 세마포어는 공유자원에 세마포어의 변수값만큼 접근할 수 있지만 오직 1개만의 프로세스만 접근할 수 있습니다.
0과 1의 값만 가지는 세마포어는 뮤텍스처럼 활용 가능합니다
Q7. 메모리 구조에 대해 설명해주세요
A7.
메모리 구조는 코드 영역, 데이터 영역, 힙 영역, 스택 영역으로 구성되어있으며 각 영역은 아래와 같습니다
코드 영역: 실행할 프로그램의 코드가 저장되는 영역
데이터 영역: 프로그램의 전역 변수와 static 변수가 저장되는 영역, 프로그램의 시작과 할당되고 종료되면 소멸
힙 영역: 사용자에 의해 메모리 공간이 동적으로 할당되고 해제되는 영역입니다.
스택 영역: 함수의 호출과 연관되는 지역변수와 매개변수가 저장되는 영역입니다. 스택 영역은 함수의 호출과 함께 할당되며, 호출이 완료되면 소멸합니다.
코드영역에서 스택영역으로 갈수록 높은 메모리 주소를 가집니다
3단계 요약노트 목적과 활용법은 아래 글을 읽어보시면 좋습니다
도움이 필요하시면 사연을 메일로 보내주세요
jek300300@gmail.com
도움이 되셨다면 공감과 구독 부탁드립니다
읽어주셔서 감사합니다
당신의 취업이 성공할 때까지 같이 하겠습니다! by 취업길잡이 Coy