본문 바로가기
컴퓨터/운영체제

프로세스 개요

by lacuca9 2024. 9. 11.

프로그램은 실행되기 전엔 보조기억 장치에 있는 데이터 덩어리이다.

프로그램을 메모리에 적재하고 실행하는 순간 프로세스가 된다.

 

이 과정을 '프로세스를 생성한다' 라고 표현한다.

 

 

포그라운드 프로세스 (foreground process)

  • 사용자가 볼 수 있는 공간에서 실행되는 프로세스

백그라운드 프로세스 (background process)

  • 사용자가 볼 수 없는 공간에서 실행되는 프로세스
    - 사용자와 직접 상호작용이 가능한 프로세스
    - 상호작용 없이 정해진 일만 하는 프로세스 (service)

프로세스 제어 블록

  • 모든 프로세스는 실행을 위해 CPU가 필요하지만 자원은 한정됨.
    돌아가면서 한정된 시간 만큼만 CPU를 쓴다.
    정해진 시간칸큼 CPU를 쓰고, 인터럽트가 발생하면 차례 양보
  • 이를 위해 사용하는 자료구조가 프로세스 제어 블록 (PCB)
    • 프로세스 관련 정보를 저장하는 자료 구조
    • 프로세스를 식별하기 위해 꼭 필요한 정보들이 저장됨
    • 프로세스 생성 시 커널 영역에 생성, 종료 시 폐기

'새로운 프로세스가 생성되었다 = 운영체제가 PCB를 생성했다'



 

PCB에 담기는 대표적인 정보

  • 프로세스 ID (=PID)
    특정 프로세스를 식별하기 위해 부여하는 번호
  • 레지스터 값
    자신의 차례가 오면 이전까지 쓴 레지스터
    중간 값을 모두 복원 -> 싱행 재게
    프로그램 카운터, 스택 포인터 ...
  • 프로세스 상태
    입출력 장치를 사용하기 위해 기다리는 상태,
    CPU를 사용하기 위해 기다리는 상태,
    CPU 이용 중인 상태...
  • CPU 스케줄링 정보
    프로세스가 언제, 어떤 순서로 CPU를 할당받을지에 대한 정
  • 메모리 정보
    어느 주소에 저장되어 있는지에 대한 정보
    페이지 테이블 정보
  • 사용한 파일과 입출력장치 정보
    할당된 입출력장치, 사용중인(열린) 파일 정보

 

문맥 교환 (context switch) 

  •  한 프로세스에서 다른 프로세스로 실행 순서가 넘어가면?
  • 기존 프로세스  A는 지금까지의 중간 정보를 백업
    • 프로그램 카운터 등 각종 레지스터 값, 메모리 정보, 열었던 파일, 사용한 입출력장치 등
    • 이러한 중간 정보 == 문맥 (context)
    • 다음 차례가 왔을 때 실행을 재개하기 위한 정보
    • "실행 문맥을 백업해두면 언제든 해당 프로세스의 실행을 재개할 수 있다"
  • 뒤이어 실행할 프로세스 B의 문맥을 복구
    • 자연스럽게 실행 중인 프로세스가 바뀜

 

 

프로세스의 메모리 영역


코드
영역 (=텍스트 영역)

  • 실행할 수 있는 코드, 기계어로 이루어진 명령어 저장
  • 데이터가 아닌 CPU가 실행할 명령어가 쓰기 금지(read-only)

데이터 영역

  • 잠깐 쓰고 없애는게 아닌 프로그램 실행 동안 유지할 데이터
  • ex) 전역 변수

------ 위 까진 정적할당 영역 ------

 

 영역

  • 프로그램을 만드는 사용자, 즉 프로그래머가 직접 할당할 수 있는 저장공간

스택 영역

  • 데이터가 일시적으로 저장되는 공간
  • (데이터 영역에 담기는 값과는 달리) 잠깐 쓰다가 말 값들이 저장되는 공간
  • ex) 매개 변수, 지역 변수

------ 위 까진 동적할당 영역 ------

 

 

 

 

 

 

 

 

 

 

 

 

사진 출처

혼자공부하는 컴퓨터 구조 + 운영체제

https://www.youtube.com/watch?v=kFWP6sFKyp0&list=PLYH7OjNUOWLUz15j4Q9M6INxK5J3-59GC

 

'컴퓨터 > 운영체제' 카테고리의 다른 글

운영체제란?  (0) 2024.09.07