data life

[운영체제] 프로세스의 구조 본문

카테고리 없음

[운영체제] 프로세스의 구조

주술회전목마 2023. 1. 12. 19:00

프로세스 구조


 

STACK
임시 데이터 (함수호출, 로컬 변수..)


높은 메모리
(높은 주소)



















낮은 메모리
(낮은 주소)



⬇️
⬆️
HEAP
코드에서 동적으로 만들어진 데이터
DATA
변수 혹은 초기화된 데이터
TEXT (code)

 

🖥️ 컴퓨터의 구조

PC (Program Counter) + SP (Stack Pointer)

다음 실행할 코드 주소           스택 최상단 주소                                


STACK
c = 3   EFFBh
b = 2 EFFDh
⬆️ a=1 EFFEh
HEAP    
DATA c = 0  
CODE def add = (a,b) 0000h
         return a + b 0001h
c = 0; 0002h
c = add(1,2) 0003h
print(c) 0005h

CPU

PC 0005h
SP EFFBh

 

Heap

 

>> 사용자에 의해 메모리 공간이 동적으로 할당되고 해제된다.

>> 메모리의 낮은 주소 -> 높은 주소의 방향으로 할당된다.

 

컨텍스트 스위칭 (=문맥 교환)

CPU에 실행할 프로세스를 교체하는 기술

  • 하나의 프로세스가 CPU를 사용 중인 상태에서 다른 프로세스가 CPU를 사용하도록 하기 위해, 이전의 프로세스의 상태(문맥)를 보관하고 새로운 프로세스의 상태를 적재
  • PC, SP만 바꿔주면 프로세스 저장상태를 기반으로 실행 가능하다.

컨텍스트 스위칭 (=문맥 교환) 동작

프로세스1                 🔁                    프로세스2

1. 실행 중지할 프로세스 정보를 해당 프로세스의 PCB에 업데이트해서 메인 메모리에 저장한다.

2. 다음 실행할 프로세스 정보를 메인 메모리에 있는 해당 PCB 정보(PC, SP)를 CPU의 레지스터에 넣고 실행한다.

 

Process Control Block (PCB)

  • 현재 실행중인 프로세스의 모든 정보를 담고 있는 자료구조 테이블
  • 실행중인 프로세스는 모두 PCB를 가진다.
  • 프로세스 수행이 완료되면 PCB도 삭제된다.

     PCB에 담긴 모든 정보

  • 프로세스 고유 번호 (Process Id:PID)
  • 문맥 저장 영역
  • 프로세스의 현재 상태
  • 프로세스 우선 순위
  • 프로세스 할당 메모리 정보