이거 문제 풀이가 구글에 검색해도 안 나오더라고
다만 짝수번 문제는 정답이 아닐 수 있으니 확인바람
- 스레드가 도입된 배경으로 프로세스의 문제점을 잘못 설명한 것은?
1️⃣ 프로세스를 생성하는데 많은 시간이 걸리는 문제를 해결하고자 했다.
2️⃣ 프로세스 사이의 컨텍스트 스위칭에 걸리는 많은 시간을 줄이려 했다.
3️⃣ 프로세스 사이의 통신 어려움을 해소하려고 했다.
4️⃣ 프로세스 스케줄링의 복잡성을 줄이려 했다.
정답 및 풀이)
4
- 프로세스와 스레드의 관계에 대한 설명으로 틀린 것은?
1️⃣ 스레드의 주소 공간은 프로세스의 주소 공간 내에 형성된다.
2️⃣ 현대 대부분의 운영체제는 스레드 단위로 스케줄한다.
3️⃣ 프로세스는 자신에게 속한 모든 스레드의 부모이다.
4️⃣ 모든 프로세스는 내부에 최소 하나의 스레드를 가지고 있다.
정답 및 풀이)
3
- 멀티태스킹 프로그램을 작성하는데 있어서 각 태스크를 프로세스로 만드는 것과 스레드로 만드는 방법 중 스레드로 만드는 방법이 유리한 이유로 맞는 것은?
1️⃣ 공유 데이터를 여러 프로세스가 동시에 엑세스할 때 동기화가 필요하지만, 공유 데이터를 여러 스레드가 엑세스할 때는 동기화가 필요 없기 때문
2️⃣ 프로세스들은 주소 공간이 완전히 분리되어 있어 공유 공간을 만들기 위해 운영체제의 도움을 받아야 하지만, 멀티스레드를 이용하는 경우 프로세스 내에 공유 변수 등을 통해 쉽게 통신할 수 있기 때문이다.
3️⃣ 프로세스들은 부모 자식 관계로 복잡하지만 스레드 들 사이에는 이런 관계가 없어 관리하기 편하기 때문이다.
4️⃣ 최근 운영체제는 프로세스를 더 이상 다루지 않고 스레드만 다루기 때문이다.
정답 및 풀이)
2
- 스레드에 관한 정보를 저장하는 구조체를 무엇이라고 부르는가?
1️⃣ PCB
2️⃣ TCB
3️⃣ TLB
4️⃣ MMU
정답 및 풀이)
2
- 다음 중 다른 한 가지는?
1️⃣ TCB
2️⃣ scheduling entity
3️⃣ TLS(Thread Local Storage)
4️⃣ thread entity
정답 및 풀이)
3
- 다음 중 프로세스와 스레드 중 선택하여 문장을 완성해라.
보기)
운영체제의 실행 단위는 ()이며, ()는 ()들이 공유하는 환경을 제공한다. ()들은 각각 독립적인 메모리 공간에서 실행되므로 () 사이에 데이터를 주고받는데 심각한 어려움이 있다. 응용프로그램을 실행시키기 위해 운영체제는 ()를 만든다. 하나의 ()가 실행되면 반드시 한 개의 ()가 자동으로 만들어지고 이것을 ()라고 부른다. 하나의 ()는 여러 개의 ()를 가질 수 있다. ()가 실행중이라는 뜻은 ()에 속한 () 중 한 개의 ()가 현재 CPU에 의해 실행되고 있음을 뜻한다. 그러므로 운영체제 스케쥴러에 의해 스케줄되는 단위는 ()이며, ()에 속한 모든 ()가 종료할 때 ()도 종료된다.
정답 및 풀이)
운영체제의 실행 단위는 (프로세스)이며, (프로세스)는 (스레드)들이 공유하는 환경을 제공한다. (프로세스)들은 각각 독립적인 메모리 공간에서 실행되므로 (프로세스) 사이에 데이터를 주고받는데 심각한 어려움이 있다. 응용프로그램을 실행시키기 위해 운영체제는 (프로세스)를 만든다. 하나의 (프로세스)가 실행되면 반드시 한 개의 (스레드)가 자동으로 만들어지고 이것을 (스레드)라고 부른다. 하나의 (프로세스)는 여러 개의 (스레드)를 가질 수 있다. (프로세스)가 실행중이라는 뜻은 (프로세스)에 속한 (스레드) 중 한 개의 (스레드)가 현재 CPU에 의해 실행되고 있음을 뜻한다. 그러므로 운영체제 스케줄러에 의해 스케줄되는 단위는 (스레드)이며, (프로세스)에 속한 모든 (스레드)가 종료할 때 (프로세스)도 종료된다.
- 다음 설명은 concurrency parallelism 중 어떤 것인지 선택하라.
1️⃣ 1개의 CPU가 여러 스레드를 번갈아 실행할 때
2️⃣ 2개의 CPU에서 2개의 스레드가 각각 동시에 실행될 때
3️⃣ CPU가 스레드의 입출력으로 인해 유휴(idle) 상태에 있지 않고 다른 스레드를 실행할 때
4️⃣ 멀티 코어 CPU가 여러 스레드를 같은 시간에 동시에 실행할 때
정답 및 풀이)
1) concurrency
2) parallelism
3) concurrency
4) parallelism
- 다음 그림은 스레드 T1, T2, T3가 실행되는 과정을 보여준다. concurrency인가, parallelism인가?
정답 및 풀이)
concurrency
1개의 CPU가 타임 슬라이스를 통해 여러개의 스레드를 관리하기 때문
- 스레드가 활동하는 코드, 데이터, 힙, 스택은 어떤 메모리 공간에 형성되는가?
1️⃣ 스레드는 주소 공간을 가지지 않는다.
2️⃣ 스레드를 위해 할당한 별도의 사용자 공간에
3️⃣ 커널 공간 내에
4️⃣ 스레드가 속한 프로세스 주소 공간 내에
정답 및 풀이)
4
- 스레드의 주소 공간에 대한 설명으로 틀린 것은?
1️⃣ 프로세스 내에 선언된 전역변수는 프로세스 내에 생성된 모든 스레드에 의해 공유된다.
2️⃣ 스레드가 할당받은 동적 메모리 공간은 프로세스 내의 모든 스레드가 접근할수 있다.
3️⃣ 스레드마다 고유한 스택이 주어진다.
4️⃣ 스레드 코드는 프로세스의 공간 밖에 별도의 공간에 적재된다.
정답 및 풀이)
4
- 스레드 로컬 스토리지(TLS)란 어떤 메모리 공간인가?
1️⃣ 다른 스레드가 접근할 수 없는 스레드만의 사적인 공간이다.
2️⃣ 스레드가 실행되는 동안 함수의 지역 변수를 저장하는 공간이다.
3️⃣ 스레드가 전용으로 사용할 수 있는 하드 디스크 공간이다.
4️⃣ 모든 스레드가 공유하는 공유 공간이다.
정답 및 풀이)
1
- 스레드 A가 malloc(100)을 이용하여 동적 할당받은 100바이트 공간에 대해 틀리게 설명한 것은?
1️⃣ 100바이트는 프로세스의 힙 공간에 할당된다.
2️⃣ 스레드 A가 할당받은 100바이트 공간의 주소를 다른 스레드 B가 안다면 엑세스하는데 문제가 없다. 오히려 이런 방식으로 스레드 A와 스레드 B는 100바이트 공간을 통해 데이터를 주고받을 수 있다.
3️⃣ 스레드 A가 종료할 때 할당받은 100바이트 공간은 자동 반환되지 않는다.
4️⃣ 스레드 A가 할당받은 100바이트 공간은 다른 프로세스에 속한 스레드도 액세스할 수 있다.
정답 및 풀이)
4
- TCB에 저장되는 내용이 아닌 것은?
1️⃣ 스레드 번호
2️⃣ 스레드 컨텍스트
3️⃣ 스케줄링 우선순위
4️⃣ 스레드 크기
정답 및 풀이)
4
- TCB에 저장되는 내용이 아닌 것은?
1️⃣ PC 레지스터 값
2️⃣ CPU 총 사용 시간
3️⃣ PCB에 대한 주소
4️⃣ 스레드 시작 시간
정답 및 풀이)
3
- 다음 중 스레드 스케줄링이 일어나는 시점이 아닌 것은?
1️⃣ 스레드가 자발적으로 양보할 때
2️⃣ 스레드가 종료하였을 때
3️⃣ 스레드가 시스템 호출을 하여 커널로 진입한 직후
4️⃣ 스레드에게 현재 할당된 타임 슬라이스를 다 소진한 경우
정답 및 풀이)
3
- 프로세스 컨텍스트 스위칭과 스레드 컨텍스트 스위칭를 비교하여 잘 설명하지 못한것은?
1️⃣ 프로세스보다 스레드 사이의 컨텍스트 스위칭이 훨씬 빠르다.
2️⃣ 프로세스 컨텍스트 스위칭은 매핑 테이블(페이지 테이블) 교체와 관련된 작업을 수반하지만, 프로세스 내 스레드 컨텍스트 스위칭은 이 작업이 필요 없다.
3️⃣ 프로세스 사이의 컨텍스트 스위칭은 CPU 캐시에 대한 갱신 작업이 더 많이 요구된다.
4️⃣ 프로세스 컨텍스트 스위칭이 개념적으로 스레드 컨텍스트 스위칭보다 단순하다.
정답 및 풀이)
4
- 스레드 운용에 관한 설명 중 틀린 것은?
1️⃣ 스레드 양보는 실행 중인 스레드가 다른 스레드에게 실행을 양보하는 행위이다.
2️⃣ 스레드가 종료되면 스레드가 속한 프로세스도 종료된다.
3️⃣ 스레드 조인은 한 스레드가 다른 스레드가 종료할 때까지 대기하는 행위이다.
4️⃣ 스레드 양보 후 스레드는 준비 상태로 바뀐다.
정답 및 풀이)
2
- 스레드 라이브러리에 포함된 것이 아닌 것은?
1️⃣ 스레드에서 파일을 여는 함수
2️⃣ 스레드 생성 및 종료 함수
3️⃣ 스레드 양보 및 조인 함수
4️⃣ 스레드 스케줄러와 컨텍스트 스위칭 코드
정답 및 풀이)
4
- 커널 레벨 스레드의 정의는 무엇인가?
1️⃣ 커널 공간에서 커널 코드를 실행되는 스레드
2️⃣ 커널에 의해 스케줄 되는 스레드
3️⃣ 커널 수준의 중요한 작업을 하는 스레드
4️⃣ 부팅시부터 생성되어 커널 데이터를 접근하도록 만들어진 스레드
정답 및 풀이)
2
- 사용자 레벨 스레드의 정의는 무엇인가?
1️⃣ 응용프로그램에서 생성한 스레드
2️⃣ 응용프로그램에서 생성하였지만 커널에 의해 스케줄되는 스레드
3️⃣ 커널에 진입하지 못하고 사용자 코드만 실행하는 스레드
4️⃣ 스레드 라이브러리에 의해 스케줄 되는 스레드
정답 및 풀이)
3
- 사용자 레벨 스레드의 장점이 아닌 것은?
1️⃣ 스레드의 생성 및 컨텍스트 스위칭이 빠르다.
2️⃣ 커널에 부담을주지 않기 때문에 효율적이다.
3️⃣ 여러 스레드가 각 코어에서 동시에 실행될 수 있기 때문에 멀티 코어 CPU를 가진 시스템에 적합하다.
4️⃣ 운영체제 상관없이 멀티스레드응용프로그램 작성이 가능하므로 이식성이 높다.
정답 및 풀이)
3
- 커널 레벨 스레드의 장점은?
1️⃣ 커널이 직접 스케줄하므로 스레드의 실행에 안전이 보장된다.
2️⃣ 시스템 호출을 사용하여 스레드가 생성되므로 스레드 생성이 빠르다.
3️⃣ 여러 스레드가 각 코어에서 동시에 실행될 수 있기 때문에 멀티 코어 CPU를 가진 시스템에 적합하다.
4️⃣ 커널 코드를 마음대로 접근할 수 있어 시스템 프로그램을 작성하는데 적합하다.
정답 및 풀이)
3
- 최근 들어 운영체제는 사용자가 만든 스레드를 커널 레벨 스레드로 구현하는 추세이다. 그 이유는 무엇인가?
1️⃣ 응용 프로그램에서 생성한 각 스레드를 멀티 코어 CPU에 할당하여 응용프로그램 실행에 높은 병렬성을 얻을 수 있기 때문
2️⃣ 외부의 공격으로부터 스레드 실행의 보안성을높이기 위해
3️⃣ 커널 레벨 스레드는 사용자 레벨 스레드보다 실행 속도가 빠르기 때문
4️⃣ 스레드 라이브러리보다 커널의 스케줄링이 훨씬 빠르기 때문
정답 및 풀이)
1
- N개의 사용자 레벨 스레드를 1개의 커널 레벨 스레드로 매핑하는 N:1 매핑의 최대 단점은 응용프로그램에 속한 한 개의 사용자 레벨 스레드가 입출력을 수행하여 블록 상태가 되면 응용프로그램 내의 다른 모든 사용자 레벨 스레드가 스케줄(실행)될 수없다는 점이다. 이 과정을 자세히 설명하라.
정답 및 풀이)
응용 프로그램 내에 N개의 사용자 레벨 스레드가 하나의 커널 레벨 스레드에 매핑됩니다. 이 때 입출력을 수행하면 해당 스레드는 입출력이 완료될 때까지 블록 상태가 됩니다. 그러면 커널 레벨 스레드가 블록된 사용자 레벨 스레드를 대체할 다른 스레드를 스케줄할 수 없습니다. 따라서 입출력 작업이 오래 걸리면 성능에 영향을 끼치게 됩니다.
- 사용자 레벨 스레드와 커널 레벨 스레드의 매핑 기법으로 최근에 가장 많이 사용하는 것은?
1️⃣ N:1
2️⃣ 1:1
3️⃣ N:M
4️⃣ 비슷하게 사용된다.
정답 및 풀이)
2
- 사용자 레벨 스레드와 커널 스레드의 매핑 기법으로 1:1 기법을현재 가장 많이 사용하는 이유는?
정답 및 풀이)
병렬성의 장점이 있습니다. 각 사용자 레벨 스레드가 별도의 커널 스레드에 매칭되기 때문에 멀티코어를 효율적으로 사용할 수 있습니다. 또한 하나의 스레드가 다른 스레드에게 영향을 미치지 않고 독립적으로 실행되므로 오류나 예외가 발생 시 영향을 미치지 않습니다.