프로세스
in Cs on Cs
- 프로그램 컴퓨터를 실행시키기 위해 차례대로 작성된 명령어 모음 브라우저 등
- 프로세스 컴퓨터 내에서 실행중인 프로그램을 일컫는 용어 브라우저 등의 프로그램이 실행된 CPU, Memory 등의 상황
- Process Lifetime 프로세스의 생성Creation 에서 종료Termination 까지의 기간 (프로그램이 시작된 후부터 꺼질 때 까지)
- Process State
Running CPU 에서 실행되고 있는 상태
-> Ready : CPU release 작동하던 CPU를 풀어줌
Ready CPU 에서 실행되기 위해 기다리는 상태
-> Running : CPU allocation CPU를 할당 받음
-> Block : Wait for Event 이벤트를 기다림
Block Event 를 기다리고 있는 상태 (예: 사용자의 input을 기다리는 등)
필요한 이유: Running 상태에서 기다리면 CPU 낭비 발생
-> Ready : Event Occurs 이벤트 발생
이벤트가 발생하더라도 CPU를 할당 받기 전까진 실행할 수 없기 떄문에 Ready
메모리 구조
- TEXT 섹션
- 프로그램에 있는 함수 코드, 제어문, 상수 등 포함
- 일반적으로 한 번 로딩 후엔 변치 않음
- JVM에서는 사용 않음
- node, 브라우저 등은 TEXT 영역 대신 코드 영역 별도 존재
- GVAR/BSS 섹션
- 범위(Scope)가 정해지지 않은 전역(global, static) 변수 포함
- GVAR은 초기 값이 0이 아닌 특정 값으로 지정한 경우 사용
- HEAP 섹션
- 동적으로 할당되는 메모리 공간
- 보통 힙 영역 할당 메모리 공간에 대한 주소를 참조
- STACK 섹션
- 함수 호출 시 지역 변수, 매개변수, 리턴 값등이 쌓임
def 함수1():
print("Hello, World!") # 1
return # 4
def 함수2():
함수1() # 2
return # 5
def 함수3():
함수2() # 1
함수1() # 6
return # 7
함수3() # 0
0. []
< # 0 call 함수3 in global >
1. [함수3]
< # 1 call 함수2 in 함수3 >
2. [함수3, 함수2]
< # 2 call 함수1 in 함수2 >
3. [함수3, 함수2, 함수1]
< # 3 call print in 함수1 >
4. [함수3, 함수2, 함수1, print]
< # 3 return print in 함수1 >
5. [함수3, 함수2, 함수1]
< # 4 return 함수1 in 함수2 >
6. [함수3, 함수2]
< # 5 return 함수2 in 함수3 >
7. [함수3]
< # 6 call 함수1 in 함수3 >
8. [함수3, 함수1]
< # 1 call print in 함수1 >
9. [함수3, 함수1, print]
< # 1 return print in 함수1 >
10. [함수3, 함수1]
< # 4 return 함수1 in 함수3 >
11. [함수3]
< # 5 return 함수3 in global >
12. []