생성(created) 상태 : 커널 공간에 PCB등이 만들어지고 프로세스가 처음 생성되는 상태이다.
준비(ready) 상태 : 기억 장치 등 필요한 모든 자원을 할당 받은 상태에서 프로세서를 할당 받으려고 대기하는 상태이다.
즉, 프로세서를 할당 받게되면 즉시 실행이 가능한 상태이다.
실행(running) 상태 : 프로그램 코드가 프로세서에 의해 실행되고 있는 상태, 프로세스가 필요한 모든 자원을 할당 받은 상태이다.
대기(blocked) 상태 : 프로세스가 필요한 자원을 요청하고 이를 할당 받을 때까지 기다리는 상태이다.
* 실행하다 I/O 등에 의해서 중단된 상태
지연 (suspended) 준비 상태 : 프로세스가 기억장치를 제외한 다른 모든 필요한 자원들을 보유한 상태이다.
지연 (suspended) 대기 상태 : 프로세스가 대기 상태에서 기억 장치를 잃은 상태이다.
종료(exit) 상태 : 프로세스의 실행을 종료하였으나 아직 프로세스에 대한 정보가 남아있는 상태이다. Zombie 상태라고도 한다.
디스패치(dispatch) 또는 스케줄(schedule) :준비 상태에서 프로세서를 할당 받아 실행 상태로 전이하게 되는 이벤트이다.
선점(preemption) 또는 time runout : 실행 상태의 프로세스가 프로세서 시간 할당량 끝나거나 우선순위가 높은 프로세스가 들어왔을 때 프로세서를 반납하고 준비상태로 전이하게 되는 이벤트이다.
대기(block) : 실행 상태의 프로세스가 자원을 요청하여 대기 상태로 전이하게 되는 이벤트이다.
웨이크업(wakeup) : 대기(지연대기) 상태에서 프로세스가 요청한 자원이 할당되어 준비(지연준비) 상태로 전이하게 되는 이벤트이다.
스왑 인(swap-in) 또는 재활동(resume) : 지연준비(지연대기) 상태에서 기억장치를 할당받아 준비(대기) 상태로 전이하게 되는 이벤트이다.
스왑 아웃(swap-out) 또는 지연(suspend) : 지연 (대기) 상태에서 기억장치를 잃어 지연 준비(지연 대기) 상태로 전이하게 되는 이벤트이다.
[출처] [리눅스] 프로세스 상태 전이도|작성자 자바킹
[리눅스] 프로세스 상태 전이도 : 네이버 블로그 (naver.com)
-----------------------------------------------------------------------------------------------------------------------------------------------
kernel timer: 운영체제의 프로세스 관리를 위해 사용하는 기본적인 타이머
우분투의 경우 주파수=250Hz, 주기=4ms이다.
프로그램을 실행을 하면 터미널에서 잡고 있는 bash쉘이 fork라는 함수를 이용해서 자기 bash와 동일한 자식 프로세스를 만들고, main에서 구현한 프로그램을 교체해서 새로운 자식 프로세스를 실행시킴. 대기 Queue에 process가 적재를 위한 타이밍을 기다리고 있음.
현재 실행 중인 프로세스도 있을건데 그 친구 기준으로는 4ms만큼 실행 후 준비 혹은 대기 상태로 보내지고 기다리다가 다시 실행되는거임.
실행시간 4ms는 운영체제가 사용자가 ctrl c를 눌러서 종료시키지 않는 이상 무조건 보장함
실행시간 4ms가 지나면 다음 context 정보를 꺼내오고 실행
context는 어떠한 프로세스의 메모리, 명령어 등에 대한 모든 정보를 의미함.
예를 들어서 250개의 프로세스를 while(1) 돌린다고 생각해보자.
250개의 동영상을 볼 때 4ms 실행하고 1초뒤에 4ms를 실행한다고 할때, 아무리 메모리 처리를 잘해도 동영상처럼 보이지 않을거라는 거임. 다른 프로세스가 동작하는 동안 sleep하고 있는 zombie 상태이기 때문에.
고로 사용하지 않는 프로세스는 종료시켜라..!
사용하지 않고 대기중인 프로세스는 반드시 swap-out을 통해 지연대기 상태로 보내라.
swap memory는 잘 사용되지 않거나, 사용될 일이 적은 프로세스를 ram에 프로세스를 저장하지 않고 HDD로 보내버리는거임 (속도가 더 느림)
'Linux BSP' 카테고리의 다른 글
[Linux] 부트 로더 Boot Loader란? (0) | 2024.02.07 |
---|---|
[Linux BSP] U-Boot Bootloader 빌드(ubuntu 호스트 크로스 컴파일) (0) | 2024.02.07 |
[Ubuntu] Ctag 사용 (0) | 2024.02.02 |
[Linux] Linux 명령어 (0) | 2024.02.01 |
[Linux BSP] Linux 교차 개발 환경 세팅하기 (1) | 2024.01.31 |