CS 공부/취업준비 이론정리
기술면접 - 운영체제
imsmile2000
2024. 3. 26. 17:09
💡 프로세스와 쓰레드의 차이에 대해 설명해주세요
프로세스
- 실행 중인 프로그램, 완벽히 독립적이기 때문에 메모리 영역을 다른 프로세스와 공유하지 않는다.
- 최소 1개의 쓰레드를 가지고 있다
쓰레드
- 프로세스 내에서 stack만 따로 할당 받고, 그 외의 메모리 영역을 공유하기 때문에 다른 쓰레드의 실행 결과를 즉시 확인할 수 있다.
- 프로세스 내에 존재하며 프로세스가 할당받은 자원을 이용해 실행된다.
💡 멀티 프로세스와 멀티 쓰레드의 특징
멀티 프로세스
- 하나의 프로세스가 죽어도 다른 프로세스에 영향을 끼치지 않고 계속 실행됨
- 멀티 쓰레드보다 많은 메모리 공간과 CPU 차지
멀티 쓰레드
- 멀티 프로세스보다 적은 메모리 공간을 차지하고 문맥 전환이 빠름
- 하나의 프로세스가 죽으면 전체 쓰레드가 영향을 받음 (동기화 문제)
💡 멀티 쓰레드의 동시성과 병렬성
동시성: 멀티 작업을 위해 싱글 코어에서 여러 개의 쓰레드가 번갈아 실행하는 것
병렬성: 멀티 작업을 위해 멀티 코어에서 한 개 이상의 쓰레드를 포함하는 각 코어들을 동시에 실행하는 것
💡 Deadlock 데드락이란?
프로세스들이 자원을 점유한 상태에서 서로 다른 프로세스의 자원을 요구하며 무한정 기다리는 상황
Deadlock의 4가지 조건
- 비선점(nonpreemptive): 다른 프로세스의 자원을 뺏을 수 없음
- 교착 상태(Circular wait): 두 개 이상의 프로세스가 자원 접근을 기다릴 때, 프로세스 간의 사이클이 형성되어야함 (P0-P1...Pn-P0)
- 점유 대기(Hold & Wait): 공유 자원에 대한 접근 권한을 가진 채로 다른 자원에 대한 접근 권한 요구
- 상호 배제(Mutual exclusion): 한 번에 한 프로세스만 공유 자원에 접근 가능
💡 동기와 비동기의 차이
동기
- 순차적, 직렬적으로 task 수행
- 서버에 데이터를 요청하고 데이터가 응답될 때까지 이후의 task는 blocking(작업 중단) 된다.
비동기
- 병렬적으로 task 수행
- 서버에 데이터를 요청하고 데이터가 응답될 때까지 대기하지 않고 즉시 다음 task를 계속해 수행
💡 H
💡 H