본문 바로가기

반응형

MultiThreading

(3)
[Python] GIL (Global Interpreter Lock) 파이썬에서 멀티쓰레딩과 같이 동시성, 병렬 작업 등에 대한 공부를 하다보면 항상 나오는 단어가 있다. 바로 GIL 이다. GIL 은 Global Interpreter Lock 의 줄임말로 파이썬 인터프리터의 동작과 관련된 용어이다. GIL 이 무엇인지 대략적으로는 알고있지만 자세하게, 그래서 실제 멀티 쓰레딩, 멀티 코어에서 어떻게 동작하는지는 알지 못해서 이번 기회에 좀 더 알아보려 한다. 1. GIL GIL 은 일종의 mutex 이다. 인터프리터에서 thread-safe 하지 않은 객체들에 대한 접근을 막기위해 사용하는 쓰레드 mutex 이다. 인터프리터에서 한 번에 하나의 쓰레드만 실행하도록 하여 쓰레드들 간의 동작에 동기화를 맞추도록 하는 동작 원리이다. 파이썬의 경우 CPython 인터프리터가 ..
[JAVA] 프로세스와 쓰레드 1. Process, Thread 프로세스란 간단히 말해서 실행중인 프로그램을 의미한다. 프로그램을 실행하면 OS 로부터 실행에 필요한 자원, 메모리를 할당받아 프로세스가 된다. 프로세스는 프로그램을 수행하는데 필요한 데이터와 메모리 등의 자원, 그리고 쓰레드로 구성되어 있다. 프로세스의 자원을 이용해서 실제로 작업을 수행하는 것이 바로 쓰레드이다. 모든 프로세스는 하나 이상의 쓰레드를 가지고 있으며, 둘 이상의 쓰레드를 가진 프로세스를 멀티쓰레드 프로세스, multi-threaded process 라고 한다. 하나의 프로세스가 가질 수 있는 쓰레드의 개수는 제한되어 있지 않으나, 쓰레드가 작업을 수행하는데 필요한 메모리가 한계에 다다르면 더이상 쓰레드를 만들 수 없다. - 멀티태스킹과 멀티쓰레딩 현재 ..
[OS] Thread & Multithreading 1. Process vs Thread - Process 프로세스는 실행 중인 프로그램을 의미한다. 프로세스에 대한 정보를 가지고 있는 Process Control Block에 의해 운영된다. 프로세스는 child process라고 불리는 다른 프로세스들을 생성할 수 있다. 프로세스는 제거되는데 더 많은 시간이 걸리며, 독립된 자원을 할당받기 때문에 다른 프로세스와 자원을 공유하지 않는다. 프로세스는 new, ready, running, waiting, terminated, suspended의 상태를 가진다. - Thread 스레드는 프로세스의 일부분으로 프로세스에서 동작하는 실행 단위이다. 한 프로세스는 여러 스레드를 가질 수 있다. 스레드는 running, ready, blocked 3개의 상태를 가진..

반응형