운영체제 · 프로세스와 스레드 · 퀴즈
퀴즈: 프로세스와 스레드
문항 7개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.
같은 프로세스에 속한 두 스레드가 공유하지 않는 것은?
- 힙에 할당한 메모리 영역
- 함수 호출 스택
- 전역 변수와 정적 변수
- 열린 파일 디스크립터
fork() 가 부모의 주소 공간을 통째로 복사하는 것처럼 보이지만 실제로는 싼 이유는?
- 쓰기 시 복사로 페이지를 공유하다가 수정 시점에만 해당 페이지를 복사하기 때문
- 커널이 복사를 비동기로 미루기 때문
- 자식 프로세스는 메모리를 쓰지 않기 때문
- 부모가 곧바로 종료되기 때문
컨텍스트 스위치의 실제 비용에서 가장 큰 비중을 차지하는 것은?
- 레지스터 값을 PCB 에 저장하고 복원하는 시간
- PCB 를 새로 할당하는 시간
- 스위치 이후 캐시와 TLB 미스가 쏟아지는 간접 비용
- 스케줄러가 다음 프로세스를 고르는 시간
컨테이너에서 애플리케이션을 1번 프로세스로 띄웠더니 좀비 프로세스가 쌓인다. 원인은?
- 컨테이너 런타임이 시그널을 전달하지 않아서
- 1번 프로세스는 고아가 된 자식을 거둬야 하는데 일반 애플리케이션에는 그 코드가 없어서
- cgroup 의 프로세스 수 제한 때문에
- 컨테이너 안에서는 wait 시스템 콜이 동작하지 않아서
ps 출력에서 D 상태(중단 불가 대기)인 프로세스에 대한 설명으로 옳은 것은?
- 대개 디스크나 네트워크 파일시스템 I/O 를 기다리는 중이며 시그널로 즉시 깨울 수 없다
- 시그널을 정상 처리하므로 kill -9 로 즉시 종료할 수 있다
- CPU 를 100퍼센트 쓰며 계산 중이라는 뜻이다
- 종료했지만 부모가 거두지 않은 좀비 상태의 다른 이름이다
CPU 바운드 작업의 스레드 수를 코어 수보다 훨씬 크게 잡으면 생기는 일은?
- 처리량이 스레드 수에 비례해 증가한다
- 컨텍스트 스위치와 캐시 오염이 늘어 오히려 처리량이 떨어질 수 있다
- 운영체제가 자동으로 코어 수만큼만 실행해 아무 차이가 없다
- 메모리 사용량만 늘고 성능은 동일하다
일대일 스레드 모델(리눅스, 윈도우)이 다대일 모델보다 나은 점은?
- 한 스레드의 블로킹 시스템 콜이 다른 스레드를 멈추지 않고, 여러 코어에서 진짜 병렬 실행이 가능하다
- 스레드 생성 비용이 더 싸다
- 컨텍스트 스위치가 사용자 공간에서 일어나 더 빠르다
- 스레드 개수에 제한이 없다