온갖 Level에서의 Thread 총정리( 하드웨어 스레드, os 스레드, native 스레드, kernel 스레드, user 스레드, green 스레드), 자바 스레드 모델
우리가 만든 프로그램(user program)은 OS Kernel을 통해서 컴퓨터(Memory, cpu , 그 외의 devices)내에서 실행이 된다. 오늘은 이 각 Level에서 존재하는 thread에 대해 살펴 볼 것이다. Hardware Thread( hyper-threading과 비슷 ) 물리적인 core마다 하드웨어 스레드가 2개 이상일 때, 그 각각의 스레드를 hardware thread라고 불린다. -> cpu/core 입장에서는 고민이 하나 있다. 그것은 메모리로부터 데이터를 read/write할 때, 데이터를 가지고 오는 시간이 상대적으로 길어서 cpu/core가 유휴 상태에 들어 간다는 것이다. 그래서 Intel에서 최초로 hyper threading 기법으로 cpu/core가 메모리를..
더보기
dead lock(교착상태) with JAVA
Deadlock(교착상태) 두 개 이상의 프로세스/스레드가 서로가 가진 리소스를 기다리는 상태 자동차는 프로세스/스레드를 나타내며, (1,2,3,4)는 리소스를 의미한다. 각 자동차는 직진을 하기 위해서, 2개의 리소스를 지나야 한다. 근데, 각 자동차가 동시에 직진을 하면, 오른쪽 그림과 같은 상태가 된다. 각 자동차는 1개의 리소스를 보유하고 있으나, 전진을 하기 위해서는 다른 자동차(프로세스/스레드)가 보유하고 있는 리소 스를 획득해야는데, 다른 자동차들도 또 다른 리소스를 획득하기 위하여 서로 대기 중이다. Deadlock이 발생하는 4가지 조건 1. Mutual exclusion : 리소스를 공유해서 사용할 수 없다, 즉 한 번에 1개의 프로세스/스레드만이 리소스를 가질 수가 있 다. 동시에 여..
더보기