실행 중인 프로그램으로 보조기억장치에 있는 데이터 덩어리를 메모리에 적재하고 실행한 것을 프로세스라 말한다.
포그라운드 프로세스 : 사용자가 볼 수 있는 공간에서 실행되는 프로세스
백그라운드 프로세스 : 보이지 않는 공간에서 실행되는 프로세스
데몬(서비스) : 사용자와 상호작용하지 않고 정해진 일만 수행하는 백그라운드 프로세스
모든 프로세스가 CPU를 동시에 사용할 수 없기 떄문에, 프로세스 제어 블록이라는 프로세스와 관련된 정보를 저장하는 자료 구조를 이용하여 CPU를 비롯한 자원을 배분한다.
프로세스를 식별하기 위해 꼭 필요한 정보들이 저장되어 특정 프로세스를 식별하고, 해당 프로세스를 처리하는 데 필요한 정보를 판단한다.
저장하는 정보
프로세스 ID
레지스터 값
프로세스 상태
CPU 스케줄링 정보
메모리 관리 정보
사용한 파일과 입출력장치 목록
부모 프로세스 - 새 프로세스를 생성한 프로세스 자식 프로레스 - 부모 프로세스에 의해 생성된 프로레스
부모 프로세스는 fork를 통해 자신의 복사본을 자식 프로세스로 생성하고, 자식 프로세스는 exec를 통해 자신의 메모리 공간을 다른 프로그램으로 교체한다.
fork : 자기 자신 프로세스의 복사본을 만드는 시스템 호출로 부모 프로세스의 자원 ( 메모리 내의 내용, 열린 파일의 목록 등) 들이 자식 프로세스에 상속된다.
exec : 자신의 메모리 공간을 새로운 프로그램으로 덮어쓰는 시스템 호출로 코드 영역과 데이터 영역의 내용이 실행할 프로그램의 내용으로 바뀌고, 나머지는 알아서 초기화된다.