티스토리 뷰

프로세스(Process) ?

- 프로세스실행 중에 있는 프로그램(Program)을 의미한다.
- 스케줄링의 대상이 되는 작업(Task)와 같은 의미로 쓰인다.

- 프로세스 내부에는 최소 하나의 스레드(Thread)를 가지고 있는데, 실제로는 스레드 단위로 스케줄링을 한다.

- 하드디스크에 있는 프로그램을 실행하면, 실행을 위해서 메모리 할당이 이루어지고, 할당된 메모리 공간으로 바이너리 코드가 올라   가게 된다. 이 순간부터 프로세스라 부른다. 

 

프로세스 상태(Process state)

https://whereisusb.tistory.com/7

1. Running state

CPU에 의해서 실행되고 있는 상태

 

2. Ready State

CPU 할당을 받으면 바로 Running State로 들어가 실행할  수 있는 상태(CPU를 사용하지 않고 있다.)

 

3. Block State

Event를 기다리고 있는 상태. C언어로 프로그램을 짤 때 scanf 함수를 만나면 사용자가 키보드를 통해 값을 입력하고 엔터를 치기 전까지 그 프로그램은 아무런 일도 하지 않고 사용자의 응답을 기다리게 된다. 이러한 이벤트적인 행동을 기다리는 상태가 Block state이다.

 

★ Block state 가 필요한 이유?

Block state가 없다면 사용자의 응답을 Running state에서 받게 된다. 이럴 경우 사용자가 응답을 바로하지 않을 경우 CPU 효율 낭비가 발생할 수 있다. 따라서 효율적인 운영을 위해 Block state를 두게 된다.

 

★ Block state가 끝난 뒤 Ready state로 가는 이유?

CPU는 한가지 Process만 실행시키는 것이 아니므로 Ready state에서 실행 순서를 기다리게 된다. 

 

 

프로세스의 주소 공간(Address Space)

프로세스는 CPU에 의해서 실행이 되고 메모리에 저장되게 된다. 

프로그램이 실행되면 프로세스 주소 공간이 메모리에 할당되며 할당된 프로세스를 CPU 가 실행시키게 된다. 

즉, 프로그램이 실행되면 프로세스가 생성이 되고 메모리에 프로세스 주소 공간(Process Address Space)이 할당되게 된다. 프로세스 주소 공간의 내부는 Code, Data, Stack 부분으로 이루어진다. 

 

★ Code, Data, Stack 으로 구역을 나눈 이유 ?

최대한 데이터를 공유하여 메모리 사용량을 줄이기 위해서이다. 

Code는 같은 프로그램 자체에서는 모두 같은 내용이기 때문에 따로 관리하여 공유하기 때문에 Read only 이다. 

StackData를 나눈 이유는, 스택 구조의 특성전역 변수의 활용성을 위한 것이다.

 

프로그램 함수의 실행(스택)

 

 즉, 프로그램의 함수와 지역 변수는, 스택의 LIFO(Last In First Out) 특성을 가진 스택에서 실행된다. 따라서, 이 함수들 안에서 공통으로 사용되는 전역 변수를 따로 지정해주면 메모리를 아낄 수 있다. 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함