병렬성의 경우 하드웨어 의존도가 높고
동시성의 경우에는 소프트웨어에 대한 고민, 작업을 어떻게 나눌지, 어떻게 분배할지에 대한 고민이 필요합니다.
위에 것과 프로세스, 스레드와 연결이 되어집니다
동시성은 싱글 코어에서 멀티 스레드를 동작시키기 위한 방식을 말하고 멀티 태스킹을 위해서 여러 개의 스레드가 번갈아면서 실행되는 걸 말합니다.
병렬성은 멀티 코어에서 멀티 스레드를 동작시키는 방식을 말합니다.
프로세스는 운영체제로부터 자원을 할당받아서 프로그램을 실행하는 최소 단위를 말합니다.
스레드는 프로세스가 할당받은 자원을 이용하여 프로그램의 명령을 실행하는 최소 단위를 말합니다.
이 스레드는 프로세스 생성하는 비용을 줄기위해서 고안된 개념입니다. 프로세스는 만들어서 작업을 처리할려면, 프로세스에 자원을 할당하고, 서로 다른 프로세스 간의 정보를 교환하기 위해 IPC를 구현하고, 이를 통해서 정보를 교환해야하기 떄문에 이는 자원 소모로 이어집니다.
이 두개는 모두 동시성을 위해 고안된 개념
프로세서는 CPU의 일종이며, 프로세스와 다른 개념입니다. 각 프로세서가 자원을 공유하면서 프로세스를 처리하기 떄문에, 하나의 프로세서가 고장나도 작업은 정지되지 않습니다.
멀티 프로세싱의 장점은 하나의 프로세서가 고장이 나더라도 해당 프로세서가 진행 중인 작업은 다른 프로세서에서 수행하고 있기 떄문에 작업이 정지되지 않습니다.
멀티 프로세싱에는 두 가지 종류가 있습니다.
SMP(Symmetric Multiprocessing)
공유 메모리 구조를 가지고 있고 cpu가 동일한 처리를 하는 대칭 구조의 멀티 프로세싱 모델입니다.
ASMP(Asymmetric Multiprocessing)
공유 메모리구조를 뜻하며 각각 프로세서가 하는 일이 다릅니다.
한쪽 cpu에서만 os를 전담해서 처리할 수 있고, 특정 프로세스를 한쪽 cpu에서 전담하도록 처리하도록 합니다.
TASK란 운영체제에서 처리하는 작업의 단위 또는 정해진 일을 수행하기 위한 명령어 집합을 뜻합니다. 멀티 테스킹은 TASK를 OS의 스케쥴링에 의해 TASK를 번갈아가면서 수행하는 걸 의미합니다.
우선 순위에 의해서 제어권을 선점하여 처리하는 선점형 멀티테스킹과 작업이 끝날때까지 기다린느 비선점형 멀티테스킹이 있습니다.
하나의 cpu나 멀티코어 cpu에서, 하나의 코어가 동시에 여러개의 프로세스나 스레드를 처리하는 걸 말합니다.
하나의 프로세스를 다수의 스레드로 구분하여 자원을 공유하고 자원의 생성과 관리의 중복성을 최소화하여 수행 능력을 향상시키는 걸 말합니다.
SMT(Simultaneous Multithreading) 기술로 cpu코어는 1개인데 이를 여러개로 보이도록 만드는 기술