이숭간 공부기록
프로세스 상태도 _ Five-state 본문
728x90
프로세스는 실행되면서 매 순간 상태가 변한다. 이 상태를 정의하는 이름들은 OS종류에 따라 다르지만, 대부분 OS에서 같은 개념을 갖는다.
이를 보통 Five-state라 한다.
1. new : 프로세스가 생성중
프로세스가 생성되었지만 아직 OS에 의해 승인받지 못한 상태
2. ready : 프로세스가 CPU에 할당되기를 기다림, running할 준비가 된상태
CPU를 제외한 다른 자원이 준비완료된 상태
보조기억장치(하드웨어) 에 있는 프로그램을 실행시켜 메모리에 로드된 상태
3. running : 명령어들이 실행중
프로세스가 CPU를 할당받아 실제로 프로세스가 수행되고 있는 상태
4. waiting : 프로세스가 어떤 사건 (event)가 일어나기를 기다림
프로세스가 실행하다가 할당받은 CPU를 반납하고, 입출력 작업이 완료되기를 기다리는것같은 특별할한 사건을 기다림
입출력을 수행하는동안 CPU를 놀리면 안되니까
5. terminated : 프로세스의 실행이 종료
프로세스의 실행이 완료되고 할당된 CPU를 반납함
- 프로세스가 만들어지는 과정의 상태가 new이고 프로세스가 다 수행되어 종료될때 잠시 생기는 state가 terminated임
- 즉 new하고 terminated는 운체가 프로세스를 만들거나 종료시킬때 잠시 임시적으로 있는 state를 말하고 이외의 3개의 상태가 돌아가면서 프로세스가 수행되는것
- ready랑 waiting의 차이가 뭘까?
- 둘다 똑같이 어떤 상태의 변화를 기다리는건 맞지만, ready는 실행준비가 완료되어있는 상태에서 다른애가 차지하고있는 cpu를 기다리고 있는것이고, waiting은 I/O나 다른 이벤트가 발생하기를 기다리는것을 나타내는 상태다.
- 예를들어, 메이플게임에서 게임이 실행되어 프로세스가 running상태였는데 내가 로그인을 하느라 아이디 패스워드를 치는동아는 i/o 가 완료되기를 기다려야하는데, 이 짧은 순간에도 CPU는 놀리면 안되기 때문에 (낭비니까) 그때 CPU는 그 작업(프로세스)를 waiting상태로 바꾸고 다른 프로세스를 가져와서(ready상태에있는 프로세스) 인풋을 기다리는 동안 running으로 돌리는것
- 만약 내가 입력을 다한경우, 프로세스가 CPU에게 인터럽트 신호를 걸어서 나 입력 다했어!! 이제 안기다려도돼! 라는 신호를 보냄. 그럼 이제 다시 waiting 에서 ready로 변하게됨
- Ready -> running
- 운영체제가 "스케줄링"을 통해 ready상태의 프로세스들 중에서 하나를 골라 CPU에게 할당해줌
'CS공부 > 운영체제' 카테고리의 다른 글
[OS] 뮤텍스와 세마포어 (0) | 2021.07.28 |
---|