-
[SW 정글 57일차] 프로세스 상태기타/SW 사관학교 정글 2021. 9. 29. 02:51
오늘은 Pintos PROJECT1 THREADS의 첫번째 과제인 Alaram Clock을 reimplement시키기위해 알아야 할 프로세스 상태에 대해 정리하려고 한다.
1. 프로세스 상태
어떠한 프로그램이 실행되었을 때, 커널로부터 메모리를 할당받으면서 프로세스가 되는데 프로세스는 위의 사진과 같은 상태를 가진다.
한 부분씩 보며 해당 상태가 어떠한 상태인지 이해해보자.
1) create 상태
create 상태는 작업(job)을 커널에 등록하고 PCB할당 및 프로세스가 생성된 상태이다.
create 상태에서는 가용 메모리 공간을 체크하여 메모리를 할당받은 프로세스는 ready 상태, 할당받지 못한 프로세스는 suspende ready 상태로 전이를 한다.
2) Ready 상태
ready 상태는 프로세서 이외에 다른 모든 자원을 할당받은 상태로 프로세서 할당 대기 상태 혹은 즉시 실행 가능한 상태로 볼 수 있다.
schduler에 의해 CPU를 선점할 수 있게 되면 running 상태로 전이할 수 있다.
3) Running 상태
running 상태는 프로세서와 필요한 자원을 모두 할당받은 상태이다.
running 상태인 프로세스가 있는데 interrupt가 일어나면 해당 프로세스는 ready 상태로 전이되고 I/O 요청이나 event를 기다려야하는 상황이라면 프로세스는 sleep(blocked)상태로 전이된다.
4) sleep(blocked) 상태
프로세서 이외에 다른 자원을 기다리는 상태로 I/O요청에 대한 결과나 event의 결과를 할당받게 되면 ready 상태로 전이된다.
5) Suspended 상태
Suspended 상태는 메모리를 할당 받지 못한 상태이다.
위에서 Create 상태에서 잠깐 언급했는데 Suspended ready 상태는 초기에 프로세스가 메모리를 할당받고자 할 때, 메모리를 할당받지 못하면 Suspended ready 상태가 된다.
위와 같은 상황 이외에 ready 상태이거나 sleep 상태인 프로세스가 Suspended 상태가 될 수 있다.
커널 또는 사용자에 의해 할당받은 메모리를 반납하는 경우가 생기는데 이 경우에 할당받았던 memory image를 swap device에 보관한다.
[오늘의 나는 어땠을까?]
오늘은 구현에 들어가기 전에 운영체제에 대한 기초개념을 잡기위해 유튜브에서 한국기술교육대 채녈에서 제공하는 운영체제 강의를 들었다.
일단은 이번 project 1에 필요한 동기화까지 들었는데 개인적으로 만족한 상태로 목표한 양을 수강했다.
강의를 다 듣고 동료에게 커널 스레드에 대한 질문을 받았다.
내가 이해한대로 설명을 했지만 그 동료를 완벽히 이해시키지 못했고 그 순간에 '내가 너무 겉핥기로 공부했나'라는 생각이 들었다.
더 deep하게 공부했다면 내가 이해한 것을 잘 설명하여 그 동료를 이해시켰을 것이다.
오늘 배운 것은 많지만 내가 알고 있는 것을 다른 사람에게 설명할 수준으로 하지는 못했다는 생각이 든다.
너무 조급하게 공부했고 일단은 pintos과제 구현이라는 것이 있다는 것에 빨리 개념을 익혀야겠다는 생각에 강의에 너무 의존한 공부를 한 것같다.
내일은 조금 더 시간을 내어 다시 복습하며 공부를 해야겠다.
'기타 > SW 사관학교 정글' 카테고리의 다른 글
[SW 정글 60일차] Pintos Project 1. Priority Inversion 해결하기 (0) 2021.10.01 [SW 정글 58일차] Pintos Project 1. Alarm clock (0) 2021.09.30 [SW 정글 56일차] Pintos 입문하면서 용어 정리하기 (0) 2021.09.28 SW 정글 7주차 회고 (0) 2021.09.27 [SW 정글 55일차] HEAD 메소드는 왜 쓸까? (0) 2021.09.26