멀티태스킹
1. 동시성(Concurrency)
- 하나의 processor가 여러 가지 task를 동시에 수행하는 개념
- 다른 task를 수행할 수 있는 시간에는 task를 전환해서 효율적으로 여러 개의 task를 동시에 수행하는 것처럼 보임
2. 병렬성(Parallelism)
- 유사한 task를 여러 processor가 동시에 수행하는 것
동기 vs 비동기 (Synchronous vs Asynchronous)
- 동기 : 어떤 일이 순차적으로 실행됨, 앞 작업이 종료되기를 무조건 기다렸다가 다음 작업을 수행
- 비동기 : 어떤 일이 비순차적으로 실행됨, 바운드되고 있는 작업을 기다리는 동안 다른 일을 처리하는 것
I/O Bound vs CPU Bound
- I/O 바운드 : 입력과 출력에서의 데이터(파일)처리에 시간이 소요될 때
- CPU 바운드 : 복잡한 수식 계산이나 그래픽 작업과 같은 엄청난 계산이 필요할 때
Process(프로세스)
- 프로그램을 구동하여 프로그램 자체와 프로그램의 상태가 메모리상에서 실행되는 작업 단위
Thread(스레드)
- 어떠한 프로그램 내, 특히 프로세스 내에서 실행되는 흐름의 단위
- 같은 작업을 좀 더 빠르게 처리하기 위해 여러 개의 스레드를 생성하기도 함
프로파일링(Profiling)
- 코드에서 시스템의 어느 부분이 느린지 혹은 어디서 RAM을 많이 사용하고 있는지를 확인하고 싶을 때 사용하는 기법
Scale Up vs Scale Out
- Scale-Up : 한 대의 컴퓨터의 성능을 최적화시키는 방법
- Scale-Out : 여러 대의 컴퓨터를 한 대처럼 사용