오버헤드
가 많아지게 된다. 따라서 이보다는 프로세스 안에서 여러 Thread를 만들어 나가는 것이 더 효율적이다.user에 대한 Responsiveness를 향상
시킨다. Context Switching?
작업의 주체가 현재 Context를 잠시 중단하고, 다른 Context를 실행하는 것.
CPU의 코어가 1개라면, 동시에 단 하나의 프로세스만 실행이 가능하다. CPU scheduling을 통해 하나의 CPU를 여러 작업들이 공유할 수 있게 CPU 시간을 나누어 작업을 수행한다. 이 때 프로세서가 지금까지 실행되던 프로세스(A)를 중지하고 다른 프로세스(B)의 PCB 정보를 바탕으로 프로세스(B)를 실행하는 것을 Process Context Switching이라고 한다. 동일한 프로세스 속에서 하나의 쓰레드(a)를 중지하고 다른 쓰레드(b)의 TCB 정보를 바탕으로 쓰레드(b)를 실행하는 것을 Thread Context Switching이라고 한다.
core가 여러 CPU chip 형태를 띠거나, 칩 안에 여러 개가 존재하게 될 때, 이러한 시스템을 다중 코어(multi core)또는 다중 처리기(multiprocessor)시스템이라고 부른다.
single computing core 상에서 concurrency는 단순히 Thread의 실행이 시간에 따라 교대로 실행된다는 것을 의미한다.
multiple core system 상에서는 시스템이 개별 thread를 각 core에 배정할 수 있기 때문에 concurrency는 thread들이 parallel하게 실행될 수 있다는 것을 의미한다.
하나 이상의 task를 동시에 수행할 수 있는 시스템에 대해 병렬적(parallel)이라고 말한다.
병행 실행 시스템은 모든 task가 진행하게끔 함으로써 하나 이상의 task를 지원한다.
따라서 병렬 실행 없이 병행 실행하는 것이 가능하다.
CPU 스케줄러는 시스템의 프로세스 사이를 빠르게 오고 가며 모든 프로세스를 진행시켜 마치 병렬 실행하는 듯한 착각을 주게 한다. (실제는 병행 실행을 하는 것)