본문 바로가기
혼자 공부하는 것들/운영체제

[운영체제] 프로세스 상태 +실습을 통해 직접 깨우치기!

by applepick 2020. 9. 28.
반응형

이번에는 프로세스 상태에 대한 공부를 해볼 것이다.

 

프로세스 상태는

new, ready, running, waiting, terminated로 나눠질수있습니다.

이런식의 로직을 가지고있다.


리눅스 기반에 운영체제에서 공부했습니다.

 

running.c 코드

#include<stdio.h>

int main()
{
	do { } while (1);
}

아래와 같은 명령어를 사용해보자.

 gcc -o running  running.c
 ./running  &
 ps  -l

1) ps  -l   명령을 수행하면 프로세스의 상태는 어떻게 표시되는가?

 - R로 표기된다.

2) ps  -l   명령을 반복하여 수행해보면 표시는 바뀌는가, 그렇지 않은가?

 - 바뀌지않는다.

3) 이 표시가 의미하는 프로세스의 상태는 무엇인가?

 - 실행중 또는 실행가능 (실행 큐에 있음)

3)프로세스의 실제 상태는 변하고 있는가 그렇지 않은가?

- read ->running으로 running->read로 계속 바뀐다.


blocked1.c 코드

#include<stdio.h>

int main()
{
	sleep(3600);
}

아래와 같은 명령어를 사용해보자.

gcc  -o  blocked1  blocked1.c
./blocked1  &
ps  -l

1) ps  -l   명령을 수행하면 프로세스의 상태는 어떻게 표시되는가?

 - s로 표기된다.

2) ps  -l   명령을 반복하여 수행해보면 표시는 바뀌는가, 그렇지 않은가?

 - 바뀌지않는다.

3) 이 표시가 의미하는 프로세스의 상태는 무엇인가?

 - 깨울수있는 sleep 상태이다. block상태

4)프로세스의 실제 상태는 변하고 있는가 그렇지 않은가?

- 변하지 않는다. 3600초가 지나면 ready상태로 돌아간다.


blocked2.c 코드

#include<stdio.h>

int main()
{
	int a;
	scanf(“%d”, &a);
}

아래의 명령어를 사용하자.

gcc  -o  blocked2  blocked2.c
./blocked2    //foreground로 수행
다른 터미널을 하나 더 실행시켜,
ps  -l   -u  자신의login_id

1) 프로세스의 상태는 무엇인가?

 - s상태가된다

2) 프로세스의 실제 상태는 변하고 있는가 그렇지 않은가?

- 입력을 받으면 read로 갔다가 running으로 갔다가 종료된다.


blocked3.c 코드

#include<stdio.h>

int main()
{
	int i;
	do {
	sleep(1);
	for (i = 0; i < 100000000; i++);
	} while (1);
}

아래의 명령어를 입력해보자.

gcc  -o  blocked3  blocked3.c
./blocked3  &
ps  -l

1) ps  -l   명령을 수행하면 프로세스의 상태는 어떻게 표시되는가?

 - s 상태로 표기된다.

2) ps  -l   명령을 반복하여 수행해보면 표시는 바뀌는가, 그렇지 않은가?

 - 바뀐다. S ->R -> S로 변한다.

3)프로세스의 실제 상태가 어떤 변화를 겪고 있는지 적으시오.

 - block상태에서 1초후에 ready로바뀌고 running으로 바뀌고 또반복한다.. 

러닝상태가 충분히 길면 block가아니라 바로 ready로 간다.

반응형

댓글