티스토리 뷰
기술면접
Howu
2023. 4. 18. 23:36
프로세스와 쓰레드의 차이
- 프로세스: 실행 중인 프로그램, 메모리 영역을 다른 프로세스와 공유하지 않고 프로세스는 최소 1개의 쓰레드를 가짐
- 쓰레드: 프로세스 내에서 Stack만 따로 할당받고 그 이외의 메모리 영역은 공유하기 때문에 다른 쓰레드의 실행 결과를 즉시 확인할 수 있음, 프로세스 내에 존재하며 프로세스가 할당받은 자원을 이용하여 실행
멀티 프로세스와 멀티 쓰레드
- 멀티 프로세스: 하나의 프로세스가 죽어도 다른 프로세스에 영향을 끼치지 않고 계속 실행된다는 장점이 있지만 멀티 쓰레드보다 많은 메모리 공간과 CPU 시간을 차지한다는 단점이 있다.
- 멀티 쓰레드: 멀티 프로세스보다 적은 메모리 공간을 차지하고 문맥 전환이 빠르다는 장점이 있지만 하나의 쓰레드에 문제가 생기면 전체 쓰레드가 영향을 받으며 동기화 문제가 생긴다는 단점이 있다.
멀티 쓰레드의 동시성과 병렬성
- 동시성: 멀티 작업을 위해 싱글 코어에서 여러 개의 쓰레드가 번갈아 실행되는 것을 말한다.
- 병렬성: 멀티 작업을 위해 멀티 코어에서 1개 이상의 쓰레드를 포함하는 각 코어들을 동시에 실행하는 것을 말한다.
- 멀티 쓰레드 환경에서의 주의사항: 다수 쓰레드가 공유 데이터에 동시에 접근하는 경우 상호배제 또는 동기화 기법을 통해 동시성 문제 또는 교착 상태가 발생하지 않도록 주의해야 한다.
데드락(Deadlock)
- 둘 이상의 프로세스들이 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 상황
- 데드락의 4가지 조건
- 비선점: 다른 프로세스의 자원을 뺏을 수 없음
- 순환 대기: 두 개 이상의 프로세스가 자원 접근을 기다릴 때, 관계가 순환적 구조
- 점유 대기: 공유 자원에 대한 접근 권한을 가진 채로 다른 자원에 대한 접근 권한을 요구
- 상호 배제: 한 번에 한 프로세스만 공유 자원에 접근 가능하며 접근 권한이 제한적일 경우
콘보이 현상(convoy effect)
- 작업 시간이 긴 프로세스가 먼저 큐에 도착해서 다른 프로세스의 실행 시간이 전부 늦춰져 효율성을 떨어뜨리는 현상
선점형 스케줄링과 비선점형 스케줄링의 차이
- 선점형은 하나의 프로세스가 다른 프로세스 대신에 CPU를 차지할 수 있음을 의미하고
- 비선점형은 하나의 프로세스가 끝나지 않으면 다른 프로세스는 CPU를 사용할 수 없음을 의미한다.
동기와 비동기
- 동기: 요청과 그 결과가 동시에 일어난다. 순서에 맞춰 진행된다는 장점이 있지만 여러 가지 요청을 동시에 처리할 수 없다. ex) 커피 주문을 받고 나올 때 까지 기다려야 함
- 설계가 매우 간단하고 직관적이지만 결과가 주어질 때까지는 아무것도 못하고 대기해야 한다.
- 비동기: 요청과 결과가 동시에 일어나지 않는다. 하나의 요청에 따른 응답을 즉시 처리하지 않아도 그 대기 시간동안 또 다른 요청에 대해 처리 가능한 방식
- 동기보다는 복잡하지만 결과가 주어지는데 시간이 걸리더라도 그 시간 동안 다른 작업을 할 수 있으므로 자원을 효율적으로 사용할 수 있는 장점이 있다.
임계영역
- 프로세스 간에 공유자원을 접근하는데 있어 문제가 발생하지 않도록 한 번에 하나의 프로세스만 이용하게끔 보장해줘야 하는 영역
- 문제 해결을 위한 3가지 조건
- 상호 배제: 하나의 프로세스가 임계 영역에 들어가 있다면 다른 프로세스는 들어갈 수 없어야 한다.
- 진행: 임계 영역에 들어 간 프로세스가 없는 상태에서 들어가려 하는 프로세스가 여러 개라면 어느 것이 들어갈지 결정해주어야 한다.
- 한정 대기: 다른 프로세스의 기아 방지를 위해 한 번 임계 구역에 들어간 프로세스는 다음 번 임계 영역에 들어갈 때 제한을 두어야 한다.
Context Switching
- 어떤 하나의 프로세스를 실행하고 있는 상태에서 인터럽트 요청에 의해 다음 우선 순위의 프로세스가 실행되어야 할 때 기존의 프로세스의 상태 또는 레지스터 값을 저장하고 CPU가 다음 프로세스를 수행하도록 새로운 프로세스의 상태 또는 레지스터 값을 교체하는 작업
« 2024/11 »
일 |
월 |
화 |
수 |
목 |
금 |
토 |
|
|
|
|
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |