단의 개발 블로그
프로세스 본문
프로세스란
프로세스란 프로그램이 실행된 것을 의미한다. 프로세스가 실행되기 위해서는 아래 4가지 자원이 필요하다.
- CPU time
- Memory
- Files
- I/O devices
프로세스의 레이아웃
- Text section - 실행 코드가 위치한다.
- Data section - 전역 변수가 위치한다.
- Heap section - 동적 메모리가 위치한다. (자바 new 객체 생성 시 heap에 할당)
- Stack section - 프로그램 내 함수가 위치한다.
프로세스의 생명주기
- New - 프로세스가 생성된 상태
- Running - 프로세스가 실행된 상태
- Waiting - 다른 프로세스가 CPU를 점유해서 현재 프로세스가 기다리는 상태
- Ready - Waiting 상태 에서 실행을 대기하는 상태
- Terminated - 프로세스가 종료된 상태
PCB
프로세스가 가져야 하는 모든 정보가 저장된 블록이다. 아래와 같은 정보를 가지고 프로세스를 실행한다.
- Process State - 프로세스의 상태
- Program counter - 프로세스가 실행해야 하는 메모리 위치
- CPU registers - cpu 안에 있는 레지스터
- CPU-scheduling information - cpu를 주고 받기 위한 정보
- Memory-management information - 메모리 정보
- Accounting information - 어떤 유저인지
- I/O status information - i/o 상태 관련 정보
싱글 스레드 실행
멀티 스레드
라이트 스레드
멀티 프로세싱, 멀티 스레드
큐잉 다이어그램
컨텍스트 스위치