#프로세서, 프로그램, 프로세스 구분

Programming/Old 2017. 8. 6. 11:20

#프로세서

하드웨어 측면에서 컴퓨터 내에서 프로그램을 수행하는 유닛이며, 소프트웨어적으로는 데이터 포맷을 변환하는 역할을 수행하는 데이터 프로세싱 시스템을 의미하며 워드프로세서, 컴파일러, 어셈블러 등이 포함된다. 


#프로그램

컴퓨터가 처리할 일련의 작업 순서의 기술 및 작업에 필요한 어떤 데이터의 집합


#프로세스

메모리에 적재되어 프로세서에 의해 실행 중인 프로그램


#프로그램 실행 과정

1. 로더(*)는 메모리에 프로그램을 적재하고 실행 주소를 프로세서의 IP(=Instruction Pointer) 레지스터에 적재한다.

2. 프로세서는 IP레지스터에 저장된 주소로 메모리에 접근하여 실행할 명령어를 인출하여 IR(=Instruction Register)에 적재한다.

3. 프로세서는 IR에 저장된 명령어를 실행하고 IP에 다음에 실행할 명령어가 있는 주소 저장한다. 

4. 2, 3 과정을 반복하며 프로세스 수행.

*로더란 주기억장치에 프로그램을 적재 및 실행하는 운영체제의 일부 혹은 프로그램


#스레드

한 프로세스 내에서 동작하는 실행의 흐름으로, 프로세스 내의 주소 공간이나 자원을 공유하면서 실행한다.

기본적으로 프로세스의 생성과 함께 생성되는 스레드를 메인 스레드라고 한다. 프로세스는 복수의 스레드를 가질 수 있다.

프로세스 내에서 각자의 스택 공간을 제외한 나머지 공간과 시스템 자원을 공유하므로, 프로세스를 이용해 동시 처리할 때와 달리 자원 소모를 현격히 줄일 수 있다. 따라서 시스템 처리율 향상, 시스템 자원 소모 절감, 프로그램 응답시간 단축이 가능하다.

스레드 간 통신은 별도 자원을 이용하는 것이 아니라 전역 변수를 이용하여 데이터를 주고 받는다. 따라서 복수의 스레드가 동시에 전역 변수에 접근하며 충돌이 발생할 수 있으므로, 동기화를 잘 해야 한다.


#멀티프로세싱

여러 개의 프로세서가 협력하여 하나의 일을 처리


#멀티스레드

하나의 실행 흐름인 프로세스는 여러 개의 스레드를 가질 수 있음


#멀티태스

운영체제의 스케줄링에 따라 여러 개의 태스크(Task)를 번갈아 수행함

운영체제에서 지원하는 것으로 자원 공유를 위한 공유 메모리를 사용할 수 없음. 

따라서 IPC(Inter-Process Communication)을 구현해야 하며, 멀티 스레딩에 비해 운영체제에 부담을 줌


출처 

(블로그) 프로세서와 프로세스의 차이

(블로그) 프로세스와 스레드 차이

(블로그) 멀티프로세싱/멀티스레드/멀티태스킹 차이

(블로그) 멀티프로세싱/멀티스레드 차이

admin