스레드가 도입된 배경으로 프로세스의 문제점을 잘못 설명한 것은? ④ 프로세스 스케줄링의 복잡성을 줄이려 했다. 해설: p.192
프로세스와 스레드의 관계에 대한 설명으로 틀린 것을? ③ 프로세스는 자신에게 속한 모든 스레드의 부모이다. 해설: 프로세스는 자신에게 속한 모든 스레드의 컨테이너이다. 자신에게 속한 스레드의 부모는 메인 스레드이다.
멀티태스킹 프로그램을 작성하는데 있어서 각 태스크를 프로세스로 만드는 것과 스레드로 만드는 방법 중 스레드로 만드는 방법이 유리한 이유로 맞는 것은? ② 프로세스들은 주소 공간이 완전히 분히되어 있어 공유 공간을 만들기 위해 운영체제의 도움을 받아야 하지만, 멀티스레드를 이용하는 경우 프로세스 내에 공유 변수 등을 통해 쉽게 통신할 수 있기 때문이다. 해설: ① 프로세스는 실행단위가 아니다. 공유 데이터를 여러 스레드가 액세스할 때는 동기화가 필요하다. ③ 스레드 또한 부모 관계가 존재한다. ④ 최근 운영체제는 프로세스를 스레드를 담는 컨테이너 개념으로 이용한다.
스레드에 관한 정보를 저장하는 구조체를 무엇이라고 부르는가? ② TCB 해설: p.215
다음 중 다른 한 가지는? ③ TLS(Thread Local Storage) 해설: 다른 세가지는 TCB에 관련된 또 다른 용어이다. p.206
다음 중 프로세스와 스레드 중 선택하여 문장을 완성하라. 운영체제의 실행 단위는 스레드이며 프로세스는 스레드들이 공유하는 환경을 제공한다. 프로세스들은 각각 독립적인 메모리 공간에서 실행되므로 프로세스 사이에 데이터를 주고 받는데 심각한 어려움이 있다. 응용프로그램을 실행시키기 위해 운영체제는 프로세스을(를) 만든다. 하나의 프로세스가 실행되면 반드시 한 개의 스레드가 자동으로 만들어지고 이것을 스레드라고 부른다. 하나의 프로세스는 여러 개의 스레드를 가질 수 있다. 프로세스가 실행중이라는 뜻은 프로세스에 속한 스레드 중 한 개의 스레드가 현재 CPU에 의해 실행되고 있음을 뜻한다. 그러므로 운영체제 스케줄러에 의해 스케줄되는 단위는 스레드이며, 프로세스에 속한 모든 스레드가 종료할 때 프로세스도 종료된다.
(1) 1개의 CPU가 여러 스레드를 번갈아 실행할 때 -> concurrency (2) 2개의 CPU에서 2개의 스레드가 각각 동시에 실행될 때 -> paralleism (3) CPU가 스레드의 입출력으로 인해 유휴(idle) 상태에 있지 않고 다른 스레드를 실행할 때 -> concurrency (4) 멀티 코어 CPU가 여러 스레드를 같은 시간에 동시에 실행할 때 -> parallelism 해설: p.204
concurrency 해설: p.204
④ 스래드가 속한 프로세스 주소 공간 내에 해설: p.206
④ 스레드 코드는 프로세스의 공간 밖에 별도의 공간에 적재된다. 해설: 스레드 코드는 프로세스 코드 영역에 있는 코드를 이용한다. 프로세스 내부에 있는 스레드들은 모든 코드를 공유한다.
① 다른 스레드가 접근할 수 없는 스레드만의 사적인 공간이다. 해설: p.206
④ 스레드 A가 할당받은 100바이트 공간은 다른 프로세스에 속한 스레드도 액세스할 수 있다. 해설: 스레드 A가 할당받은 100바이트 공간은 같은 프로세스에 속한 스레드만 이용할 수 있다.
④ 스레드 크기 해설: p.216
④ 스레드 시작 시간 해설: p.216
③ 스레드가 시스템 호출을 하여 커널로 진입한 직후 해설: 스레드가 시스템 호출을 하여 커널로 진입한 후 컨텍스트 스위칭이 발생하기 직전
④ 프로세스 컨텍스트 스위칭이 개념적으로 스레드 컨텍스트 스위칭보다 단순하다. 해설: 스레드 컨텍스트 스위칭이 개념적으로 프로세스 컨텍스트 스위칭보다 단순하다.
② 스레드가 종료되면 스레드가 속한 프로세스도 종료된다. 해설: 모든 스레드가 종료되면 스레드가 속한 프로세스도 종료된다.
① 스레드에서 파일을 여는 함수 해설: p.226
② 커널에 의해 스케줄되는 스레드 해설: p.225
④ 스레드 라이브러리에 의해 스케줄되는 스레드 해설: p.226
③ 여러 스레드가 각코어에서 동시에 실행될 수 있기 때문에 멀티 코어 CPU를 가진 시스템에 적합하다. 해설: 하나의 코어에서 교차적(concurrenty: 동시성)으로 실행되기 때문에 단일 코어 CPU를 가진 시스템에 적합하다.
③ 여러 스레드가 각 코어에서 동시에 실행될 수 잇기 때문에 멀티 코어 CPU를 가진 시스템에 적합하다. 해설: ① 관련없음 ② 시스템 호출이 발생하기 때문에 함수 호출에 비해 스레드 생성이 오래 걸린다. ④ 커널코드를 마음대로 접근하는 것이 아니라 커널에 의해 스케줄링되는 스레드인 것이다.
① 응용프로그램에서 생성한 각 스레드를 멀티 코어 CPU에 할당하여 응용프로그램 실행에 높은 병렬성을 얻을 수 있기 때문 해설: ② 관련 없음 ③ 사용자 레벨 스레드보다 실행 속도가 느리다. ④ 커널의 스케줄링은 스레드 라이브러리가 더 빠르다.
사용자 레벨 스레드가 담긴 커널 스레드가 Blocked가 되기 때문이다. 해설: p.233