1주차
<aside>
✅ 프로세스와 스레드
Paging과 Segmentation
</aside>
- 멀티 프로세스 대신 멀티 스레드를 사용하는 이유 / 멀티 프로세스의 장점과 단점을 설명하시오
- 장점 : 하나의 프로세스가 죽어도 다른 프로세스에게는 영향을 끼치지 않음
- 단점 : 각각 독립된 메모리 영역을 갖고 있어 작업량이 많을 수록 오버헤드가 발생하고, Context Switching으로 인한 성능 저하를 유발함
- 프로세스와 스레드의 차이를 설명하시오
- 프로세스는 하나의 작업 단위, 스레드는 프로세스 안에서 실행되는 흐름의 단위
- 프로세스는 자원을 공유하지 않지만, 스레드는 자원을 공유함
- 멀티 스레드의 장점과 단점을 설명하시오
- 장점 : 프로세스의 응답시간이 단축되고 시스템의 처리율이 향상됨. 코드, 데이터, 힙 영역을 공유하기 때문에 자원 소모가 적음
- 단점 : 프로그램 디버깅이 어렵고, 하나의 스레드에 문제가 생기면 전체 프로세스에 영향을 미칠 수 있음
- 스택을 스레드마다 독립적으로 할당해야하는 이유는?
- 스택은 함수 호출시 전달되는 인자, 되돌아갈 주소값 및 함수 내에서 선언하는 변수 등을 저장하기 위해 사용되는 메모리 공간이므로 스택 메모리 공간이 독립적이라는 것은 독립적인 함수 호출이 가능하다는 것이고 이는 독립적인 실행 흐름이 추가되는 것이다. 따라서 스레드 정의에 따라 독립적인 실행 흐름을 추가하기 위한 최소 조건으로 독립된 스택을 할당한다.
- 프로세스 상태를 전부 설명하시오
- 메모리 관리가 필요한 이유를 설명하시오
- 외부 단편화와 내부 단편화에 대해 설명하시오
- Paging과 Segmentation의 차이
- 페이징은 고정 크기를 가지고, 세그멘테이션은 가변 크기를 가짐
- 페이징은 내부 단편화 발생 가능, 세그멘테이션은 외부 단편화 발생 가능
- Paging과 Segmentation을 사용하는 이유
- 메모리 단편화를 해결하고자
- 다중 프로그래밍 시스템에서 여러 프로세스를 수용하기 위해 주기억장치를 동적 분할하는 메모리 관리 기법이 필요하기 때문.
- 메모리 할당시 메모리를 좀 더 효울적으로 남는 메모리가 없게 할당해 주기 위해서
2주차
<aside>
✅ Context Switching
CPU 스케줄링
데드락
</aside>
- context switching에서 오버헤드가 일어나는 이유
- 오버헤드란 어떤 처리를 하기 위해 들어가는 간접적인 처리 시간과 메모리를 의미합니다. 문맥 교환을 할 때는 CPU가 아무런 일을 할 수 없기 때문에 문맥 교환이 잦으면 오버헤드가 일어나게 됩니다.
- 식사하는 철학자 문제를 설명하고, 문제를 해결해보시오
- 해결 방안 :
- 5명 말고 4명
- 두개의 포크를 모두 들 수 있을 때 포크를 든다.
- 홀 짝을 나누어 홀수는 왼쪽부터, 짝수는 오른쪽 부터
- context switching이 무엇인지 왜 필요한지 설명해보세요.
- cpu scheduling에서 선점 방식 중 가장 현대적인 방식에 대해 설명해보세요.