[운영체제]Thread의 실습 및 이해
류명운
·2015. 3. 30. 12:58
209~214p [예제 4-1] ThreadTester.java를 직접 실행하여 자바플랫폼에서의 스레드를 생성, 시작, 휴면, 출력해보기
과제에 앞서, ①스레드가 무엇인지, ②프로세스와 스레드의 비교, ③스레드의 종류, ④본 과제에서 실습하여 본 멀티스레딩의 개념, ⑤본인 PC의 스레드 확인에 대한 이해 및 정리를 하고 ⑥[ex 4-1] 코드 및 분석(주석처리), ⑦[ex 4-1] 출력결과를 끝으로 과제를 마치겠습니다.
1. 스레드(Thread) 란?
스레드는 전자 게시판의 종류이기도 한다. 스레드 형식 전자 게시판 문서를 보시려면, 스레드 플로트형 게시판 문서이다. 두 개의 스레드를 실행하고 있는 하나의 프로세스, 스레드(thread)는 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위를 말한다. 일반적으로 한 프로그램은 하나의 스레드를 가지고 있지만, 프로그램 환경에 따라 둘 이상의 스레드를 동시에 실행할 수 있다. 이러한 실행 방식을 멀티스레드(multithread)라고 한다.
2. 프로세스(Process)와 스레드(Thread)의 비교
멀티프로세서와 멀티스레드는 양쪽 모두 여러 흐름이 동시에 진행된다는 공통점을 가지고 있다. 하지만 멀티프로세서에서 각 프로세스는 독립적으로 실행되며 각각 별개의 메모리를 차지하고 있는 것과 달리 멀티스레드는 프로세스 내의 메모리를 공유해 사용할 수 있다. 또한 프로세스 간의 전환 속도보다 스레드 간의 전환 속도가 빠르다. 멀티스레드의 다른 장점은 CPU가 여러 개일 경우에 각각의 CPU가 스레드 하나씩을 담당하는 방법으로 속도를 높일 수 있다는 것이다. 이러한 시스템에서는 여러 스레드가 실제 시간상으로 동시에 수행될 수 있기 때문이다. 멀티스레드의 단점에는 각각의 스레드 중 어떤 것이 먼저 실행될지 그 순서를 알 수 없다는 것이 있다.
3. 스레드의 종류
2.1 스레드 기본 데이터
스레드도 프로세스와 마찬가지로 하나의 실행 흐름이므로 실행과 관련된 데이터가 필요하다. 일반적으로 스레드는 자신만의 고유한 스레드 ID, 프로그램 카운터, 레지스터 집합, 스택을 가진다. 코드, 데이터, 파일 등 기타 자원은 프로세스 내의 다른 스레드와 공유한다.
2.2 스레드 특정 데이터
위의 기본 데이터 외에도 하나의 스레드에만 연관된 데이터가 필요한 경우가 있는데, 이런 데이터를 스레드 특정 데이터(Thread-Specific Data, 줄여서 TSD)라고 한다. 멀티스레드 프로그래밍 환경에서 모든 스레드는 프로세스의 데이터를 공유하고 있지만, 특별한 경우에는 개별 스레드만의 자료 공간이 필요하다. 예를 들어 여러 개의 트랜잭션을 스레드로 처리할 경우, 각각의 트랜잭션 ID를 기억하고 있어야 하는데, 이때 TSD가 필요하다. TSD는 여러 스레드 라이브러리들이 지원하는 기능 중의 하나이다.
4. 멀티스레딩(Multithreading)이란?
멀티스레딩(Multithreading) 컴퓨터는 여러 개의 스레드를 효과적으로 실행할 수 있는 하드웨어 지원을 갖추고 있다. 이는 스레드가 모두 같은 주소 공간에서 동작하여 하나의 CPU 캐시 공유 집합과 하나의 변환 색인 버퍼 (TLB)만 있는 멀티프로세서 시스템 (멀티 코어 시스템)과는 구별한다. 그러므로 멀티스레딩은 프로그램 안에서 병렬 처리의 이점을 맛볼 수 있지만 멀티프로세싱 시스템은 여러 개의 프로그램들을 병렬로 처리할 수 있다. 멀티프로세싱 시스템이 여러 개의 완전한 처리 장치들을 포함하는 반면 멀티스레딩은 스레드 수준뿐 아니라 명령어 수준의 병렬 처리에까지 신경을 쓰면서 하나의 코어에 대한 이용성을 증가하는 것에 초점을 두고 있다.
5. 본인 PC의 스레드 개수를 확인하는 방법
Ctrl + Shift +Esc 버튼을 누르거나 작업 표시줄에서 마우스 오른쪽 버튼을 눌러 작업 관리자를 선택하시면, 성능탭 ‘CPU 사용 현황’에서 확인할 수 있습니다. |
6. [예제 4-1] 코드 및 분석(주석처리)
7. [예제 4-1] 출력 결과
'삶의 늪에 들어 가기 전 > 정리중(미정리)' 카테고리의 다른 글
[한국성서대학교/한국성서대] 묵상지 5주차 (8) | 2015.03.30 |
---|---|
[네트워크 프로그래밍1]프로세스 상태 전이도 (0) | 2015.03.30 |
[데이터베이스 프로그래밍]각 Key에 대한 관계 알아보기(벤다이어그램) (0) | 2015.03.26 |
[한국성서대학교/한국성서대] 묵상지 4주차 (2) | 2015.03.25 |
[한국성서대학교/한국성서대] 묵상지 3주차 (0) | 2015.03.24 |