사전 간단 지식
- CPU : 명령어를 해석하고 실행하는 장치
- 프로그램 : 명령어들의 집합체
- 메모리
- 운영 체제 : 컴퓨터 시스템을 운영하고 관리하는 소프트웨어
- 시스템 버스 : 요소들을 연결해주는 역할
프로세스와 스레드
프로세스는 운영체제로부터 자원을 할당받는 작업의 단위이고
스레드는 프로세스 내에서 실행되는 여러 작업의 단위이다.
-
예를 들어서 컴퓨터에게 주어지는 처리 방법과 순서를 기술한 일련의 명령문 집합체인 프로그램을 실행 했을 때, 보조 메모리에 있던 것이 주메모리에 올라와서 작업이 진행되는 것이다.
=> 프로세스가 생성된다는 의미는 프로그램이 실행된 동적인 상태가 된다는 것이다.
-
그렇게 된다면 CPU는 프로세스가 해야할 작업을 수행하고, 작업을 수행하는 단위가 스레드인 것이다.
-
만약 작업을 해야할 작업이 하나이면 싱글 스레드, 여러개면 멀티 스레드이다.
멀티 스레드의 장단점
- 장점 : 멀티 스레드에서 스레드끼리 메모리 공유와 통신이 가능하다; 자원의 낭비를 막고 효율성을 향상할 수 있다.
- 단점 : 한 스레드에 문제가 생기면 전체 프로세스에 영향을 미친다.
동시성(병행성) vs 병렬성
동시성(concurrency)
- 한 번에 여러 작업을 동시에 다루는 것을 의미한다(스위칭을 한다)
- 논리적 개념이다. 싱글 스레드(asyncio), 멀티 스레드 적용이 가능하다.
병렬성(Parallelism)
- 한 번에 여러 작업을 병렬적으로 처리하는 것을 의미한다(at the same time)
- 멀티 코어, 멀티 스레딩
- 파이썬에서는 스레드가 병렬성으로 구현될 수 없다. GIL(Global Interpreter Lock), 동시성으로 구현이 돼야한다.