728x90
Process
- 운영체제에서 실행되는 프로그램의 인스턴스
- 각 프로세스는 자체 메모리 공간을 갖고, 다른 프로세스와 메모리를 공유하지 않음
- 독립적으로 실행되며, 프로세스 간 통신은 시스템 자원(파이프, 소켓 등)을 통함
Context Switching
- CPU가 새로운 프로세스를 수행하기 위해 기존의 프로세스를 교체하는 작업
Thread
- 프로세스가 만들어내는 작업자
- 프로세스와 메모리 Data 영역을 공유하고, 개별 Stack, Text 영역을 가짐
- 사용 이유: 컨텍스트 스위칭보다 적은 비용으로 여러 개의 작업을 처리 가능
Thread Programming
- 자원을 효율적으로 사용하고, 좋은 성능을 만들기 위해 스레드 필요
- 무거운 작업을 진행하며, 동시에 다른 스레드에서 다른 작업을 처리할 수 있음
- 스레드 전환 비용이 프로세스의 컨텍스트 스위칭보다 비용이 쌈
Thread 제어권
- 해당 스레드를 점유하여 사용하며 작업을 처리하는 데 사용하는 주체
- 스레드 제어권은 함수가 가지고 있음
- A라는 함수를 호출할 때, A에서 사용하려는 스레드 제어권은 A 함수가 가지고 있음
- async 등을 호출하지 않으면 일반적으로 코드 실행
- 만약, DispatchQueue.main.async를 사용 시 해당 블록 안의 스레드 제어권은 시스템에게 넘기고, 시스템 내부에서 스케쥴링하여 처리
- 시스템에게 스레드 제어권을 넘겨서 코드가 언제 실행될 지 모름
- 스레드 제어권을 시스템에게 넘기기 때문에 QoS를 통해 우선순위 부여
728x90
'Swift > Basic' 카테고리의 다른 글
Data Type (0) | 2024.11.07 |
---|---|
Concurrency (0) | 2024.11.07 |
GCD (0) | 2024.10.31 |
Memory Management (0) | 2024.10.31 |
Memory (0) | 2024.10.31 |