멀티 프로세싱은 하드웨어 장비의 관점, 멀티태스킹은 소프트웨어 운영체제의 관점
개념 : 운영체제(OS) → 프로세스(Process) → 스레드(Thread)
프로세스란, 실행 중인 프로그램의 인스턴스이다. 각 프로세스는 독립적인 메모리 공간을 갖고 있으며, 운영체제에서 별도의 작업 단위로 분리해서 관리된다. 각 프로세스는 별도의 메모리 공간을 갖고 있기 때문에 서로 간섭하지 않는다. 프로세스는 격리되어 관리되기 때문에 하나의 프로세스가 충돌하더라도 다른 프로세스에는 영향을 미치지 않는다.
프로세스의 구성 : 코드 섹션, 데이터 섹션, 힙, 스택
스레드란, 프로세스 내에서 실행되는 작업의 단위이다. 한 프로세스 내에는 여러 스레드가 존재할 수 있으며, 이들은 프로세스가 제공하는 동일한 메모리 공간을 공유한다. 스레드를 프로세스보다 단순하므로 생성 및 관리가 단순하고 가볍다.
스레드의 구성 : 공유 메모리, 개별 스택
스레드는 프로세스 내에서 실행되는 작업의 단위라고 했다. 한 프로세스 내에 하나의 스레드가 존재할 수도 있고 여러 스레드가 존재할 수도 있다. 이런 것을 단일 스레드, 멀티 스레드라고 한다.
👉결론적으로 프로세스는 실행 환경과 자원을 제공해주는 컨테이너 역할을 하고 스레드는 CPU를 사용해서 하나하나 실행한다.
👉멀티 쓰레딩은 CPU 사용률을 향상시키고 여러 작업을 동시에 처리할 수 있어 효율적이지만 멀티 쓰레드 프로세스의 경우 여러 쓰레드가 같은 프로세스 내에서 자원을 공유하면서 작업을 하기 때문에 발생할 수 있는 동기화, 교착상태와 같은 문제들을 고려해야한다.
단일 코어 스케줄링 과정(이러한 과정을 거친다는 점을 이해할 것)
멀티 코어 스케줄링 과정(이러한 과정을 거친다는 점을 이해할 것)
👉프로세스, 스레드와 스케줄링 정리
멀티 태스킹이란, 하나의 CPU를 사용하여 동시에 여러 작업을 수행하는 것을 말하는데 이를 위해 운영체제에서 스케줄링 기법을 제공한다.
프로세스는 실행 중인 프로그램의 인스턴스이다. 각 프로세스는 서로에게 영향을 주지 않는 격리된 메모리 공간을 가진다.
스레드는 프로세스 내에서 실행되는 작업 단위이다. 여러 스레드는 하나의 프로세스 내에서 자원을 공유한다. 실제로 CPU에 의해 실행되는 단위는 스레드이다.
스레드 A와 스레드 B가 있다고 가정하자. 멀티태스킹을 해야 하기 때문에 스레드 A만 계속 실행할 순 없다. 스레드 A를 잠시 멈추고, 스레드 B를 실행한다. 이후에 스레드 A로 그냥 돌아갈 수 없다. CPU에서 스레드를 실행하는데 코드가 어디까지 수행되었는지 위치를 찾아야 한다. 그리고 계산하던 변수들의 값을 다시 CPU로 불러와야 한다. 따라서 스레드 A를 멈추는 시점에 CPU에서 사용하던 값들을 메모리에 저장해두어야 한다. 그리고 이후에 스레드 A로 다시 돌아올 때 이 값들을 CPU에 다시 불러와야 한다. 이런 과정을 컨텍스트 스위칭이라고 한다.