프로그램과 프로세스
프로그램이란 사용자가 원하는 일을 할 수 있도록 프로그래밍 언어를 사용하여 수행절차를 표현해 놓은 명령어들의 집합이다. (정적인 상태의 파일)
프로세스는 컴퓨터에서 실행되고 있는 프로그램이다. 프로그램을 실행하면 os로 부터 실행에 필요한 메모리를 할당받고 프로그램의 코드를 실행하는데, 이때 실행되는 프로그램을 프로세스라고 한다.
스레드(Thread)
나의 스레드는 코드가 실행되는 하나의 흐름이기 때문에, 한 프로세스 내에 스레드가 두 개라면 코드가 실행되는 흐름이 두 개 생긴다는 의미입니다.
멀티 스레드(Multi-Thread)
일반적으로 하나의 프로세스는 하나의 스레드를 가지고 작업을 수행하게 됩니다.
하지만 멀티 스레드(multi thread)란 하나의 프로세스 내에서 둘 이상의 스레드가 동시에 작업을 수행하는 것을 의미합니다.
멀티 스레드는 각 스레드가 자신이 속한 프로세스의 메모리를 공유하므로, 시스템 자원의 낭비가 적습니다.
또한, 하나의 스레드가 작업을 할 때 다른 스레드가 별도의 작업을 할 수 있어 사용자와의 응답성도 좋아집니다.
멀티 프로세스(multi process)
여러 개의 CPU를 사용하여 여러 프로세스를 동시에 수행하는 것을 의미합니다.
멀티 프로세스는 각 프로세스가 독립적인 메모리를 가지고 별도로 실행되지만, 멀티 스레드는 각 스레드가 자신이 속한 프로세스의 메모리를 공유한다는 점이 다릅니다.
멀티 스레드와 멀티 프로세스 모두 여러 흐름을 동시에 수행하다는 공통점을 가지고 있습니다.
출처 : http://www.tcpschool.com/java/java_thread_multi
프로세스 실행 방식
포그라운드 프로세스(Foreground Process)
포그라운드 프로세스에서 포그라운드는 배경을 뜻합니다. 화면에서 유저와 상호작용을 하게되는 프로세스입니다. (ex. 크롬)
명령이 확인 되고 출력이 될 때 까지 기다리는 방식
백그라운드 프로세스(Background Process)
포그라운드 뒤에 배경, 화면 뒤에서 프로그램이 돌아가는 형태의 프로세서 (ex,바이러스 백신)
백그라운드 방식은 명령어 뒤에 &를 붙여서 실행하고, 다른 명령어를 추가적으로 입력할 수 있습니다.
하지만 백그라운드 방식으로 실행해도 사용자의 터미널 세션이 종료되면 실행중인 프로세스도 종료됩니다.
작업시간이 오래 걸리는 작업인 경우 nohup 명령어를 이용하여 백그라운드로 실행하면 사용자의 터미널 세션이 종료되어도 작업이 종료될 때까지 프로세스를 실행합니다.
프로세스 번호
현재 실행중인 백그라운드 프로세스의 순차적인 번호(인덱스, index)를 의미합니다.
부모, 자식 프로세스 프로세스는 전부 혼자서 독립하여 실행되고 있는 것이 아니라 , 부모 프로세스라고 불리는 상위 프로세스에 하위에 종속되어서 시행됨
ex)윈도우에서 브라우저를 실행하고 윈도우를 종료하는 경우에 브라우저가 먼저 종료되고 윈도우가 종료가 됨. (부모-윈도우, 자식-브라우저)
백그라운드 작업 중지 방법
1) Fg %작업번호 리턴후 컨트롤 c
2) kill -9 pid넘버 입력
bsd 와 unix의 차이-커멘드의 차이점이 있음1. Unix Option : 앞에 '-' (dash)가 붙는 옵션 표기방법
2. BSD Option : '-' 가 없음
3. GNU Option : 명령어 앞에 '--' (double dash)를 붙임
출처:https://whyprogrammer.tistory.com/300
프로세스(Process)란? 무엇 (포그라운드, 백그라운드 프로세스)
프로세스(Process)란? 무엇 (포그라운드, 백그라운드 프로세스) 프로세스는 자신이 사용하는 컴퓨터나 기기의 저장공간(ex. 하드디스크)에 저장되어있는 실행 코드(프로그램)가 메모리(ex 램)에 올
whyprogrammer.tistory.com
댓글