프로세스와 스레드
부셔버리자
상태 | 설명 |
---|---|
생성 상태 | 저장장치에 저장된 프로그램이 메모리로 올라와 실행되어 프로세스가 되는 상태로 커널 영역에 프로세스 제어블록이 만들어진다. 생성된 후에는 준비상태로 이동한다. |
준비 상태 | 실행을 기다리는 모든 프로세스가 준비 큐에서 자기 차례를 기다리는 상태다. 실행될 프로세스를 CPU 스케줄러가 선택한다. |
실행 상태 | 선택된 프로세스가 타임 슬라이스를 얻어 CPU를 사용하는 상태다. 작업을 마치면 완료 상태로 가고 작업을 끝내지 못하면 준비 상태로 되돌아간다. |
대기 상태 | 실행 상태에 있는 프로세스가 입출력을 요청하면 입출력이 완료될 때까지 기다리는 상태다. 입출력이 완료되면 준비상태로 이동한다. |
완료 상태 | 프로세스가 종료된 상태다. 사용하던 모든 자원은 반납되고, 메모리에서 지워지며, 프로세스 제어 블록은 폐기된다. |
fork() 시스템 호출은 실행 중인 프로세스를 복사하는 함수다. 이때 실행하던 프로세스는 부모 프로세스, 새로 생긴 프로세스는 자식 프로세스로서 둘은 부모- 자식 관계가 된다.
exec() 시스템 호출은 이미 만들어진 프로세스의 구조를 재활용하는 것이다.
프로세스의 코드에 정의된 절차에 따라 CPU에 작업 요청을 하는 실행 단위다.
커널 스레드 1 to 1 모델 - 독립적인 관리
sleep 100 | 전면 프로세스 | |
---|---|---|
sleep 100& | 전면 프로세스 |
& 을 사용함으로서 강제적으로 후면으로 지정