프로세스
- 프로그램: 디스크에 저장되어 있는 실행 가능한 파일
- 프로세스: 메모리에 올라가 있는 실행중인 프로그램
프로세스의 구조
-
하나의 프로세스는 크게 코드영역(code), 데이터 영역(date), 스택 영역(stack), 힙 영역(heap) 4가지로 이루어져 있습니다.
Code : 코드 자체를 구성하는 메모리 영역(프로그램 명령)
Data : 전역 변수, 정적 변수, 배열 등 (초기화된 데이터)
Stack : 지역변수, 매개변수, 리턴 값 (임시 메모리 영역)
Heap : 동적 할당 시 사용 (new(), mallock() 등)
프로세스 스케줄링
foreground process vs background process
- foreground process
- 일반적 프로세스 방법
- 쉘에서 해당 프로세스 실행을 명령한 후, 종료될 떄 까지 다른 입력을 하지 못하는 프로세스
- background process
- 사용자 입력과 상관없이 실행되는 프로세스, 맨 뒤에 & 붙여주면 된다
find / -name '*.py' > list.txt &
- 사용자 입력과 상관없이 실행되는 프로세스, 맨 뒤에 & 붙여주면 된다
프로세스 vs 바이너리
- 실행파일: 코드 이미지 또는 바이너리
- 프로세스: 실행 중인 프로그램
- 가상 메모리 및 물리 메모리 정보
- 시스템 리소스 관련 정보
- 스케줄링 단위
명령어
- ps: 프로세스 상태 확인
- a옵션: 시스템을 사용하는 모든 사용자의 프로세스 출력
- u옵션: 프로세스 소유자에 대한 상세 정보 출력
- x옵션: 터미널에 로그인한 후 실행한 프로세스가 아닌 데몬 프로세스 까지 확인
- kill: 프로세스 중지시키기
- 9옵션: 강제 종료 옵션