운영체제 4장 연습문제 & Multithreaded program(소스코드 및 설명 포함)
- 최초 등록일
- 2014.01.16
- 최종 저작일
- 2010.05
- 7페이지/ 한컴오피스
- 가격 1,000원
목차
1. 4장 연습문제
2. Multithreaded 프로그램
본문내용
❍ 4장 연습문제
4.4 다음과 같은 프로그램 상태 중 어느 상태가 다중 스레드 프로세스의 스레드들 사이에 공유되는가?
a. 레지스터 값들
b. 힙 메모리
c. 전역 변수들
d. 스택 메모리
=> 스레드는 생성시 자신의 고유의 레지스터와 스택을 갖는다. 그리고 b.힙 메모리나 c.전역 변수들은 한 프로세스내의 여러 스레드들과 공유한다.
4.5 다수의 사용자 수준 스레드를 사용하는 다중 스레드 해결책은 단일 처리기 상에서 보다 다중 처리기 상에서 더 나은 성능을 보일 수 있는가?
스레드는 사용자 스레드와 커널 스레드가 있고, 커널 스레드는 운영체제가 지원하는 스레드 기능으로 구현되며, 커널이 스레드의 생성 및 스케줄링을 관리한다. 스레드가 시스템 콜 등으로 중단되더라도, 커널은 프로세스 내의 다른 스레드를 중단시키지 않고 게속 실행시켜준다. 다중처리기 환경에서 커널은 여러 개의 스레드를 각각 다른 처리기에 할당할 수 있다. 다만, 사용자 스레드에 비해 생성 및 관리하는 것이 느리다.
<중 략>
먼저 posix thread 인 pthread_create를 보면, 첫 번째 인자로 생성된 스레드의 id를 넘겨주고, 두 번째는 스레드의 특성을 설정할 때 사용되는데 주로 NULL이 온다. 세 번째 인자로 스레드가 생성되고 나서 실행될 함수명이 온다. 함수명은 그 자체로 주소이므로 함수명을 그대로 써준다. 마지막 네 번째 인자로는 세 번째 인자에서 호출될 함수에 전달하고자 하는 값을 넣어준다. 이번 과제에서 스레드의 body는 하나만 사용했고, 출력할 문자를 하나의 body에 각각 o와 x를 넘겨주었다. 그리고 pthread_join함수의 첫 번째 인자는 스레드 id가 오고, 이 id가 종료될 때까지 실행을 지연시킨다. 두 번째 인자는 스레드가 종료될 때 반환하는 값을 받을 수 있다. 이 함수를 쓰는 이유는 main함수가 종료될 때 스레드도 자동으로 종료되기 때문에 메인에서 스레드가 종료될 때까지 메인의 종료를 기다려야 한다.
참고 자료
없음