[CS] Process

이지현·2023년 4월 5일
0

Java

목록 보기
25/46

✔️ Process

1. Process란?

  • 실행중에 있는 프로그램
  • 프로세스 내부에는 최소 하나의 스레드(thread)를 가지고 있는데, 보통 스레드 단위로 스케줄링을 함
  • 프로세스가 되는 과정 : 하드디스크에 있는 프로그램 실행 → 실행을 위한 메모리 할당이 이루어짐 → 할당된 메모리 공간으로 바이너리 코드가 올라감

2. Process의 메모리 구조(프로세스 하나당 하나씩 존재함)

  • Code 영역 : 프로그램을 실행시키는 실행 파일 내의 명령어들이 올라감
  • Data 영역
    ◦ Static 영역 : 전역 변수와 정적 멤버변수의 데이터 저장, 프로그램의 시작부터 종료까지 데이터가 메모리에 남아있음
    ◦ Stack 영역 : 지역 변수의 데이터 저장, 해당 메서드가 호출될 때 메모리에 할당되고 메서드가 종료되면 사라짐
    ◦ Heap 영역 : 참조형의 데이터 객체의 실제 데이터 저장, Heap 영역의 참조값을 Stack 영역의 객체가 갖고 있음
    💡 위 3가지 영역은 T 구조를 가지고 있음

3. Process 상태 변화

(1) 상태 종류

  • New : 프로세스가 막 생성된 상태
  • Ready : 프로세스가 CPU에 실행 되기 위해 대기하는 상태
  • Running : 프로세스에 포함된 명령어가 실행되고 있는 상태
  • Waiting : 프로세스가 특정 자원이나 이벤트를 기다리는 상태
  • Terminated : 프로세스가 실행을 완료한 상태

(2) 상태 전이 동작

동작설명
Ready → Running (Dispatch)우선순위가 높은 프로세스 선정하여 명령어 실행
Running → Ready (Timer runout)클럭이 인터럽트를 발생시켜 선점권을 빼앗음
Running → Waiting (Block)프로세스가 입출력, 자원 등을 기다리기 위해 대기로 전환
Waiting → Ready (Wake up)입출력이 완료되거나 자원이 할당되어 다시 실행

위 내용은 다음 블로그를 참고하였습니다.

profile
2022.08 ~ 2023.09 / 현재 티스토리 이전 : https://jihyun-devstory.tistory.com/

0개의 댓글