Thread(스레드)란?

2017. 3. 28. 19:43 from 리눅스

스레드란?

스레드(Thread) : 하나의 프로그램 내에서 여러 개의 실행 흐름을 두기 위한 모델

 

우리는 일상 생활에서 동시에 여러 일을 처리하면서 살아간다.

이를 소프트웨어 관점에서 해석하면 사람을 프로세서(실행 중인 프로그램)로 볼 수 있고 각 독립적인 일의 단위를 스레드(Thread)라고 한다. 즉 하나의 프로세서에서 병렬적으로 여러 개 작업을 처리하기 위해서는 각 작업을 스레드화하여 멀티스레딩이 가능하게 해야 한다.

 

스레드를 생성할 때마다, 해당 스레드만을 위한 메모리 공간(Stack)을 Thread Stack이라 부르는데, 스택이 필요로 하는 동작을 위한 필요 공간을 따로 제공한다.

그 외의 공간은 본래의 프로세스 메모리 영역을 공유




프로세스가 CPU에 대한 사용권을 운영체제로부터 확보하면 일정 시간만큼 CPU에게 처리사항을 요청할 수 있는데 만약 이때 해당 프로세스가 멀티 스레드화되어 있다면 각 스레드 별로 주어진 시간을 다시 쪼개어 요구사항을 처리하게 한다. 이러한 방법으로 하나의 CPU를 통해 사용권을 시간에 따라 적절히 스위칭 함으로써 병렬처리가 가능하다.

 

자바에서 스레드를 구현하기 위해서는 라이브러리 중 Thread 클래스 또는 Runnable 인터페이스를 이용해야 한다.

두 객체는 말 그대로 클래스와 인터페이스라는 차이점이 존재할 뿐 동일한 방법으로 스레드를 지원한다.

 

Thread 클래스 활용 단계

 

단계1 사용자 정의 클래스로 Thread 클래스를 상속

단계2 스레드화하고자 하는 명령문을 Thread 클래스의 인스턴스 메서드인 void run()에 기술

단계3 Thread 클래스를 상속받은 사용자 정의 클래스의 인스턴스를 생성하여 인스턴스 변수에 저장

단계4 단계 3에서 생성한 인스턴스 변수에 의해 Thread 클래스의 인스턴스 메서드 void start() 호출

 

*병렬처리를 위한 코드가 담긴 void run() 메서드는 직접 호출하지 않고 void start() 메서드를 호출하면 JVM이 void run() 메서드를 호출

 

자바는 다중상속을 지원하지 않으므로 스레드화하고자 하는 객체가 이미 다른 클래스를 상속받았다면 해당 클래스를 스레드화하기 위해서는 Thread 클래스 대신 Runnable 인터페이스를 구현함으로써 문제를 해결할 수 있다.




출처 : http://threestory.tistory.com/3 [양민스쿨]

Posted by 나무길 :

코스윅 : 학위과정에서 이수해야 하는 최소한의 수업이나 실습

포닥 : Post Doctoral Researcher. 박사학위 이후 연구자.(비정규직에 일하는 박사.)


독일 PI 연락?


독일어 시험 ZD (Zertifikat Deutsch)


외국인을 위한 영어로 진행되는 인터내셔널 석사과정 있음 (독일어 석사 과정과는 달리 학비가 학기당 최대 500~600만원인 경우가 있다.)


독일대학 석사 졸업자의 경우 독일인 졸업자와 같은 루트에서 박사과정에 진학할 수 있으며, 이는 입학이기 보다는 연구소의 정식 연구원으로 취업하는 개념에 가깝다. 석사 졸업학점이 우수해야 하며, 해당 분야의 연구를 위해 본인이 커리어를 잘 쌓았는지 어필하는 것도 물론 중요하다. 독일인 교수의 추천서가 있다면 아무래도 유리할 수는 있겠지만 일단 본인 스스로 기본적인 조건부터 갖추는 것에 집중하는 것이 좋다. 이 루트로 박사과정을 밟게 될 경우 독일 공무원에 준하는 월급이 제공되지만, 초임 연구원의 경우 1/4이나 1/2의 부분적 급여로 시작하는게 대부분이다. 이공계의 경우 박사과정 소요기간은 일반적으로 5년이며, 초반 2년간 고용 계약이 체결되며 이후 3년차에서 중간 심사를 통해 계약이 연장되는 형태이다. 자연과학 계열 전공의 경우 빨리 마치면 3년 안으로도 졸업이 가능할 수도 있다.



국내석사 졸업자와 독일 박사과정진학의 루트는 독일석사 졸업자의 루트와 개념이 다르다. 일단 연구분야와 관련되어 연구소를 선정후 컨택하여 객원연구원(Gastwissenschaftler) 자격으로 과정을 밟는 경우가 대부분이기 때문. 물론 연구업무와 관련된 급여가 없으며 소속 학교에 학생으로 등록 가능하고 DAAD와 같은 장학재단을 통해 외부 장학금을 지원받는 형태. 박사과정 중에 교수의 요청이나 졸업요건에 따라 일부 코스윅을 이수해야 하는 경우도 있다.



Posted by 나무길 :

Block RAM

2017. 1. 18. 23:56 from 하드웨어

Block RAM

Memory resources are another key specification to consider when selecting FPGAs. User-defined RAM, embedded throughout the FPGA chip, is useful for storing data sets or passing values between parallel tasks. Depending on the FPGA family, you can configure the onboard RAM in blocks of 16 or 36 kb. You still have the option to implement data sets as arrays using flip-flops; however large arrays quickly become expensive for FPGA logic resources. A 100-element array of 32-bit numbers can consume more than 30 percent of the flip-flops in a Virtex-II 1000 FPGA or take up less than 1 percent of the embedded block RAM. Digital signal processing algorithms often need to keep track of an entire block of data, or the coefficients of a complex equation, and without onboard memory, many processing functions do not fit within the configurable logic of an FPGA chip.

* 쉽게 말해서 온보드 메모리가 없는 경우, 많은 함수 처리는 FPGA 칩의 하드웨어 로직으로 적합하지 않다.


The inherent parallel execution of FPGAs allows for independent pieces of hardware logic to be driven by different clocks. Passing data between logic running at different rates can be tricky, and onboard memory is often used to smooth out the transfer using first-in-first-out(FIFO) memory buffers.

마지막 줄 해석 : FPGA 고유의 병렬 실행은 하드웨어 로직의 개별 부분이 서로 다른 클럭에 의해 구동되는 것을 가능하게 합니다. 서로 다른 속도로 실행되는 로직간 데이터를 전송하는 것은 매우 까다로워서, 온보드 메모리는 종종 first-in-first-out (FIFO) 버퍼를 사용하여 전송을 원활히 하는 데에 사용됩니다.


그림 17에서와 같이 FIFO 버퍼를 서로 다른 크기로 구성할 수 있으며, FPGA 칩의 비동기 부분간에 데이터 손실이 없도록 할 수 있습니다. 테이블 6은 다양한 FPGA 군에 임베디드된 사용자 구성가능한 Block RAM입니다.

'하드웨어' 카테고리의 다른 글

Multipliers and DSP Slices  (0) 2017.01.18
LUTs (Lookup Tables)  (0) 2017.01.18
Flip-Flops  (0) 2017.01.18
Flash Memory와 EEPROM 차이점  (0) 2017.01.18
Slew rate 란?  (0) 2016.08.19
Posted by 나무길 :