본문 바로가기

스레드

온갖 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가 메모리를.. 더보기
cpu bound vs io bound 버스트(Burst) 어떤 현상이 짧은 시간 안에 집중적으로 일어나는 일. CPU 버스트(Burst) 프로세스가 CPU에서 한번에 연속적으로 실행되는 시간. (즉, time splice 동안 프로세스의 명령어들이 연속적으로 실행된 시간) I/O 버스트(Burst) 프로세스가 I/O 작업을 요청하고 결과를 기다리는 시간. 프로세스의 인생은 CPU Burst와 IO Burst의 연속 프로세스는 위 그림과 같이 CPU Burst 작업과 I/O 작업, 이 2가지 작업만을 번갈아 가면서 실행하게 되고, 실행이 끝이 난다. 대부분의 프로세스는 CPU Burst 8ms 내로 끝이 난다. CPU bound 프로세스 CPU Burst가 많은 프로세스. CPU Bound 프로세스의 예시 1. 동영상 편집 프로그램 -> 동영.. 더보기
Thread Context Switching vs Process Context Switching context switching(문맥 교환) CPU/코어에서 실행 중이던 프로세스/스레드가 다른 프로세스/스레드로 교체되는 것. ( 엄연히 말하면 위 정의는 틀렸다. 오늘날의 CPU는 실행 단위(unit of execution)를 스레드로 한다. 그렇기에 더이상 cpu는 프로세스를 실행한다는 말은 성립이 되지 않기에, 실행 중이던 프로세스가 다른 프로세스로 교체되는 것은 더 이상 성립이 되지 않는다. 만약 누군가가 프로세스에 대해 문맥 교환이 일어났다고 함은, 그건 싱글 스레드로 구성된 프로세스가 있는 데, 그 스레드가 다른 프로세스의 싱글 스레드로 교체가 되었다는 말이다.) Context 프로세스/스레드의 상태(cpu상태, 메모리 상태 등등) Context Switching이 일어나는 시점 1. 주어진.. 더보기
헷갈리는 개념들에 대한 정리(feat 프로세스, 스레드, 멀티태스킹, 멀티스레딩 etc) I/O 작업의 3가지 의미 1. 파일을 읽고 쓰는 것 2. 네트워크의 어딘가와 데이터를 주고 받는 것 3. 입출력 장치(EX.마우스, 키보드)와 데이터를 주고 받는 것 단일 프로세스 시스템(초창기의 OS Architecture) 한 번에 하나의 프로그램만 실행됨. 프로세스들이 순차적으로 실행이 되므로, 하나의 프로세스가 모두 실행이 완료되어야만 그 다음의 프로세스를 실행할 수 가 있다. 단점 : cpu 사용률이 매우 안 좋음. -> 프로세스의 I/O 작업 중 CPU는 유휴 상태에 들어 간다. 이러한 문제를 해결하기 위하여 여러 개의 프로그램을 메모리에 올려 놓고 동시에 실행시키자. 즉, I/O 작업이 발생하면 CPU를 놀게 놔 두는 것이 아니라, 대기 중인 프로세스를 올려 실행을 시킨다. 이것을 멀티 프.. 더보기