#프로세서, 프로그램, 프로세스 구분
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)을 구현해야 하며, 멀티 스레딩에 비해 운영체제에 부담을 줌
출처
(블로그) 프로세서와 프로세스의 차이
(블로그) 프로세스와 스레드 차이
(블로그) 멀티프로세싱/멀티스레드/멀티태스킹 차이
(블로그) 멀티프로세싱/멀티스레드 차이
'Programming > Old' 카테고리의 다른 글
#배열리스트와 연결리스트의 차이 (0) | 2017.08.04 |
---|---|
#프로세스 주소 공간에 대해. (0) | 2017.08.04 |
#Natural Language Processing With Python 실습 관련 (0) | 2017.07.31 |
011. JAVASCRIPT Session 사용 정리 (0) | 2016.11.22 |
010. Visual C++ DLL의 생성과 사용 (0) | 2016.11.18 |