본문 바로가기
CS

[혼공컴운] 프로세스 개요

by 데브겸 2023. 3. 30.

프로세스: 보조기억장치에 있는 프로그램을 메모리에 적재하고 실행한 것

  • 포그라운드 프로세스: 사용자가 볼 수 있는 공간, 즉 바로 앞에서 실행되는 프로세스
  • 백그라운드 프로세스: 사용자가 볼 수 없는 공간, 즉 뒤에서 실행되는 프로세스. 다만, 유저와 상호작용 가능
  • 데몬 (혹은 서비스): 뒤에서 돌아가면서도 사용자가 직접 제어하지 않는 프로세스

 

프로세스의 커널 영역 - 프로세스 제어 블록 (Process Control Block; PCB)

  • 프로세스를 식별하기 위한 여러 정보들이 저장되는 공간.
    • 운영체제가 프로세스를 생성하는 동시에 고유한 PCB를 생성
    • 프로세스 실행이 종료되면 운영체제는 PCB를 폐기함
  • 커널 영역에 존재
  • PCB에 저장되는 정보
    • 프로세스 ID (PID): 특정 프로세스를 식별하기 위한 고유한 번호 (같은 프로그램이라고 해도 실행되었을 때 각기 다른 PID 지님)
    • 레지스터 값: 이전까지 사용했던 레지스터의 중간값들 (프로그램 카운터, 메모리 버퍼 레지스터 값 등등)
    • 프로세스 상태
    • CPU 스케쥴링 정보: 프로세스의 우선순위 (언제 CPU를 할당받을지)
    • 메모리 관리 정보: 프로세스가 어느 메모리에 있는지, 즉 주소를 저장해야 함
    • 사용한 파일과 IO장치 목록: 어떤 IO 장치가 이 프로세스에 할당되었고, 어떤 파일들이 필요한지 

 

문맥 교환

  • 문맥(Context): 프로세스 수행을 위해 기억해야 할 정보들 (ex. 레지스터 값, 메모리 관리 정보, 사용한 파일과 IO장치 목록 등)
  • 프로세스 간 CPU 자원 이용이 번갈아가며 이용될 때 과정은 다음과 같음
    • 기존 실행되던 프로세스의 문맥 정보를 백업
    • 다른 프로세스 실행
    • 이전 프로세스의 문맥 복구 후 재실행
  • 위와 같이 새로운 프로세스를 실행하기 위해 문맥을 PCB로부터 복구하여 프로세스를 실행하는 것을 문맥 교환이라고 함
  • 문맥 교환에 사용되는 시간, 메모리 등을 자원을 오버헤드라고 한다.

 

프로세스의 사용자 영역

  • 정적 할당 영역: 크기가 고정된 영역
    • 코드 영역: 코드 그 자체, 즉 기계어로 작성된 명령어들이 저장되는 영역. 읽기 전용 공간
    • 데이터 영역: 임시 데이터가 아닌 프로세스 유지에 필요한 데이터들을 저장
  • 동적 할당 영역: 사용자에 의해 크기가 달라질 수 있는 영역
    • 힙 영역:
      • 사용자가 직접 할당할 수 있는 저장 공간. 힙 영역에 메모리 공간을 할당하고, 이후에는 반환해야 함.
      • 반환하지 않을 경우 메모리 누수(memory leak)가 발생할 수도 있음
    • 스택 영역: 
      • 임시적으로 사용할 데이터를 저장하는 공간

https://velog.io/@turningtwenty/운영체제(Operating System) - 프로세스와 프로세스 관리