프로세스 개요
프로세스를 생성하게 되면 물리적인 메모리에 직접 할당하는 것이 x 가상메모리에 할당
user area: 사용자 프로세스의 코드와 데이터 자료구조가 위치
kernel area: 커널(os)이 동작하기 위한 코드와 데이터 전역적인 자료구조가 위치
User area | Kernel area |
프로세스가 생성되면 커널/운영체제는 개별 프로세스별로 관리 정보를 담고 있는 프로세스제어블럭(PCB)을 생성
- 프로세스 상태: 현재 상태정보 저장<< cpu 스케줄링
- 프로세스 번호: 프로세스 식별 번호
- 프로그램 카운터(PC): 문맥교환이 발생할 경우 다음에 실행할 위치값 저장
- 레지스터(고속의 저장 장치): 문맥교환이 발생할 경우 현재 프로세스의 실행 상태 정보 저장
- 메모리 정보
🔽 프로세스 상태 전이도
dispach: cpu 스케줄러에 의해서 cpu를 할당하고 있는 상태
running(실행): 유저모드와 커널모드를 반복하면서 프로그램이 동작하게 됨
running 상태에 있는 프로세스를 내부적으로 살펴보면 2가지 모드로 동작함 => 유저모드, 커널모드
유저모드: 사용자 코드 실행 ---(system call 발생)---> 커널모드: os 실행
system call: 커널에게 해당 자원을 사용한다고 요청하는 것
blocking system call: 대기모드로 빠지게 함 -> I/O 함수 발생(매우 느린 연산 함)
wake up: 프로세스가 자원을 할당받는 상태.
timer runout: 실행중인 프로세스가 제한된 시간을 모두 소모해 cpu 점유를 빼앗기는 상태
Context Switching(문맥교환): 수행 중인 프로세스가 새로운 프로세스에게 cpu를 반환하고 빠져나오는 상황