프로세스 개요

song·2023년 4월 7일

프로그램(Program), 프로세스(Process)

프로그램 (Program)

  • 컴퓨터가 수행할 명령어들의 집합으로, 특정 작업을 수행하도록 설계된 컴퓨터 소프트웨어
  • 실행되기 전까지는 보조기억장치에 있는 데이터 덩어리


    프로세스 (Process)
    : 프로그램이 메모리에 적재되고 실행되면 프로세스가 됨.

  • 포그라운드 프로세스 (foreground process)
    • 사용자가 볼 수 있는 공간에서 실행되는 프로세스

  • 백그라운드 프로세스 (background process)
    • 사용자가 볼 수 없는 공간에서 실행되는 프로세스
      사용자와 직접 상호작용이 가능한 백그라운드 프로세스
      상호작용 하지 않고 자기일만 하는 백그라운드 프로세스는 데몬, 서비스라고 함

프로세스 제어 블록 (PCB)

  • 프로세스와 관련된 정보를 저장하는 자료구조
  • 프로세스 생성 시 커널 영역에 생성, 종류 시 폐기
  • 상품 태그라고 생각하셈

PCB가 왜 필요?

  • 모든 프로세스는 실행되기 위해 CPU가 필요

  • CPU는 한정적이기 때문에 관리가 필요
    • 자신의 차례에 정해진 시간만큼 CPU 사용
    • 타이머 인터럽트가 발생하면 차례 양보

  • 이를 관리하기 위해 PCB 사용

PCB에 담기는 대표적인 정보 (운영체제마다 차이가 있음)

  • 프로세스 ID (=PID)
    특정 프로세스를 식별하기 위해 부여하는 고유한 번호

  • 레지스터 값
    • 프로세스는 자신의 실행 차례가 오면 이전까지 사용한 레지스터 중간 값을 모두 복원한다
      (전에 실행했던 작업을 이어서 하려고)
    • 프로그램 카운터, 스택 포인터 ...

  • 프로세스 상태

  • CPU 스케줄링 정보

  • 메모리 정보
    프로세스가 어느 주소에 저장되어 있는지에 대한 정보

  • 사용한 파일과 입출력장치 정보
    할당된 입출력장치, 사용 중인(열린) 파일 정보

문맥 교환 (context switch)

과정
1. 기존에 실행된던 프로세스 A의 중간 정보를 백업
2. 다음으로 실행할 프로세스 B의 문맥을 복구

중간 정보

  • 하나의 프로세스 수행을 재개하기 위해 기억해야 할 정보
  • 문맥 (context)
  • PCB에 기록된 정보들을 문맥이라고 생각해도 됨

프로세스의 메모리 영역

  • 코드 영역 (=텍스트 영역)
    • 실행할 수 있는 코드, 기계어로 이루어진 명령어 저장
    • 명령어를 저장하기 때문에 read-only

  • 데이터 영역
    • 프로그램이 실행되는 동안 유지할 데이터 저장
    • 전역 변수

  • 힙 영역
    • 프로그래머가 직접 할당할 수 있는 저장공간
    • 동적할당
    • 메모리 공간 할당했다면 반환도 해야 됨. (Garbage Collection)
      그렇지 않으면 Memory Leak 발생

  • 스택 영역
    • 데이터가 일시적으로 저장되는 공간
    • 매개변수, 지역변수

정적 할당 영역

코드 영역, 데이터 영역

동적 할당 영역

힙 영역, 스택 영역

<출처>
"혼자 공부하는 컴퓨터구조+운영체제".강민철.https://www.youtube.com/playlist?list=PLVsNizTWUw7FCS83JhC1vflK8OcLRG0Hl (2023.04.07)


책과 강의를 통해 학습한 내용을 요약 정리했습니다.
profile
인간은 적응의 동물

0개의 댓글