프로세스과 프로세스와의 차이
프로그램(Program) :
하드디스크에 저장되어 실행을 기다리는 코드와 데이터덩어리
프로세스(Process) :
실행중인 프로그램 으로 실행을 위해 메모리(주기억장치)에 올려진 프로그램을 뜻한다.
즉 프로그램의 코드와 데이터가 메모리에 올라가면 프로세스가 된다.

프로그램 -> 실행 -> 프로세스 인스턴스 생성( = 메모리(Ram)에 적재)
프로세스들간에는 서로 메모리를 공유하지 않는다.
스레드 (cpu 이용의 기본단위)
프로세스 내에서 실제로 작업을 수행하는 주체 (흐름의 단위).
각 스레드는 ID, 프로그램 카운터, 레지스터 집합, 스택으로 구성되어있다.
모든 프로세스는 하나 이상의 스레드가 존재하며
스레드가 하나만 있으면 싱글(단일)스레드 두개이상 있으면 멀티(다중)스레드라 부른다.
스레드는 같은 프로세스에 속한 다른 스레드, 코드, 데이터 섹션, 열린 파일이나 신호 같은 OS(자원들을 공유한다.)
멀티태스킹
멀티태스킹이란?
OS를 통해 CPU가 작업하는데 필요한 시간을 프로세스 또는 스레드간에 나누는 행위.
실제 동작 원리:
사실은 여러개의 프로세스가 동시에 실행되는 것 처럼 보이지만.
CPU에서는 한번에 한가지 명령밖에 처리하지 못한다.
따라서 동시가 아닌 빠르게 프로세스들을 번갈아 실행하고관리(Context Switching)하는데
그 속도가 사람이 인지하지 못할 속도 인 것이다.
장점:
여러 프로그램을 동시에 열고 작업 할 수 있다.
멀티스래딩
멀티스래드란?
하나의 프로세서(Cpu)가 여러개의 스레드를 동시에 수행할 수 있게 해주는 것.
동작원리 :
하나의 프로세스를 다수의 스레드로 구분하여 자원을 공유하고,
자원의 생성과 관리의 중복을 최소화 하여 수행능력을 향상 시키는 것.
하나의 프로세스에는 여러개의 스레드를 만들 수 있고,
프로세스를 만드는 비용보다 스레드를 만드는게 더 저렴하여,
프로세스에 여러 스레드를 생성하여 병렬로 처리하는 것.
장점:
프로세스는 메모리영역을 서로 공유하지 않지만,
스레드는 stack을 제외한 데이터, 힙영역을 서로 공유하기 때문에 메모리 부분에서 효율적이다.
자원을 공유하여 중복을 찾아 생성을 최소화한다.

멀티프로세싱
멀티프로세싱이란?
다수의 프로세서(cpu)가 다수의 작업을 함께 처리하는 것을 의미.
두개 이상의 프로세서로 구성된 시스템의 운영체제다.
일반적으로 멀티태스킹과 멀티프로세싱이란 용어는 혼용된다.
하나의 프로세서가 고장나도 해당 프로세서가 진행중인 작업은
다른 프로세서에서 수행하고 있기 때문에 작업이 정지되지 않는다.
여러개의 프로세스가 처리되어야 할 때 동일한 데이터를 사용하면
멀티스레드와의 차이점으로는
멀티 프로세싱은 프로세스를 여러개로 늘려 여러개의 프로그램들을 처리하지만,
멀티 스레드는 하나의 프로그램을 여러개로 나누어 병렬로 처리를 한다.
장점:
- 각 데이터를 프로세서에게 할당할 필요없이 한 공간에 데이터를 저장한 후에
공유하여 사용하도록 하면 비용이 절감 될 수 있다. - 단일 처리 시스템 보다 많은 양의 작업들을 동시에 처리 할 수 있다.

멀티프로그래밍
멀티프로그래밍이란?
하나의 프로세서(Cpu)가 하나의 프로세스를 수행하는 동안 다른 프로세스에 접근할 수 있도록 하는 방법.

하나의 프로세스를 처리하는 과정에서 프로세서의 처리 속도와 입출력 속도간의 차이로
입출력 처리가 완료될 때까지 기다리는 시간이 발생하는데
이 시간을 다른 프로세스를 처리할 수 있도록 해주는 것.
Context Switching
컨텍스트 스위칭이란?
하나의 프로세스가 Cpu를 사용중인 상태에서다른 프로세스가 Cpu를 사용하도록 하기위해
이전 프로세스를 보관하고 새로운 프로세스를 메모리에 올리는 작업이다.
CPU를 사용하고 있는 프로세스가 변 할때 발생한다.

'기본지식' 카테고리의 다른 글
절차지향과 객체지향 (0) | 2023.04.28 |
---|---|
프레임 (0) | 2023.04.28 |
벡터의 정규화(Normalization) (0) | 2023.04.27 |
RAM 메모리 구조 (0) | 2023.04.27 |
재귀함수(recursion)란? (0) | 2023.04.27 |