Program - 저장 장치의 존재하는 하나의 파일을 의미하며 명령어 코드를 담고 있다
Process - 실행 중인 상태의 프로그램, 동일한 프로그램으로 여러 개의 프로세스를 생성할 수 있다. 각 프로세스를 프로그램의 인스턴스(instance)라고 한다
사용자가 프로세스를 생성하는 방법
위의 두 가지 방법은 사실 동일하다.
shell prompt를 보여주고 있는 shell process가 이미 실행 중인 process이기 때문이다.
다른 점은 shell process는 로그인 과정에서 시스템에 의해 실행 된다는 것이다.
여러 개의 명령어 라인을 ';'(세미클론)을 사용하여 한줄에 입력한다
파이프(|)를 사용하여 서로 협력하는 두개 이상의 프로세스를 생성할 수 있다.
ls \bin의 출력을 wc -w 의 입력으로 사용한다
wc: 문자 개수 출력/ -w: word ; -c :chracter
사용자가 shell prompt 상에서 명령어를 입력하여 생성한 프로세스
사용자가 실행한 프로세스가 생성한 또 다른 프로세스
프로세스의 주인은 이를 실행한 사용자이다
프로그램 파일의 소유주와 프로세스 소유주는 서로 다를 수 있다
ex) "ls" 명령은 "ls"라는 이름의 프로그램으로 저장되어 있고 이 프로그램(파일 형태)의 소유주는 관리자이다.
ps 명령을 사용하여 실행 중인 프로세스의 목록을 확인할 수 있다
사용자가 고유주인 프로세스는 2개
"bash"는 셸 프로세스이고, "ps -f"는 현재의 프로세스 목록을 보여주는 프로세스이다
"ps -f" 프로세스는 출력을 보여주는 시점에서는 존재했으나, 츨력이 끝난 지금은 아마 종료되어 없을 것이다.
UID (User ID) : 프로세스 소유주의 사용자 식별 번호이다.
PID (Process ID) : 프로세스의 식별 번호이다.
PPID (Parent Process ID) : 부모 프로세스의 식별 번호이다.
모든 프로세스는 자신을 생성해준 부모 프로세스가 있다
단 한 개 예외가 있다(init 프로세스)
대부분의 사용자 프로세스는 셸 프로세스가 부모 프로세스가 된다
위 예시에서 "ps -f"의 PPID 는 "bash"의 PID와 같다
전면 프로세스
후면 프로세스