ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 프로세스
    CS/운영체제 2025. 6. 8. 23:11

    유튜브에 공개된 『혼자 공부하는 컴퓨터 구조+운영체제』 강의를 보고 정리한 내용입니다.

     

    출처 : 유튜브 - 혼자 공부하는 컴퓨터 구조+운영체제


    프로세스

    = 실행 중인 프로그램

    종류

    • 포그라운드 프로세스
      • 사용자가 볼 수 있는 공간에서 실행되는 프로세스(메모장, 웹, 게임 ..)
    • 백그라운드 프로세스
      • 사용자와 직접 상호작용이 가능한 백그라운드 프로세스
      • 사용자와 직접 상호작용하지 않고 그저 정해진 일만 수행하는 프로세스(= 데몬, 서비스라고 부름)

    프로세스 제어 블록(PCB)

    • 모든 프로세스는 실행을 위해 CPU가 필요하다.
    • 하지만, CPU의 자원은 한정되어 있다.

    프로세스들은 돌아가며 한정된 시간 만큼만 CPU 사용

    • 자신의 차례에 정해진 시간만큼 CPU 이용
    • 타이머 인터럽트가 발생하면 차례 양보
      • 타이머 인터럽트? → 주기적으로 발생하는 하드웨어 인터럽트, 한정된 시간이 지났다고 알려줌

    “프로세스 제어 블록(PCB)은 빠르게 번갈아 수행되는 프로세스들을 관리하는 자료구조”

    • 프로세스 관련 정보를 저장하는 자료구조
    • ex) 상품에 달린 태그와 같은 정보
    • 프로세스 생성 시 커널 영역에 생성되며 종료시 폐기됨.

    PCB에 담기는 대표적인 정보

    • 프로세스 ID(= PID)
      • 특정 프로세스를 식별하기 위해 부여하는 고유한 번호(ex. 학교의 학번, 회사의 사번)
    • 레지스터 값
      • 프로세스는 자신의 실행 차례가 오면 이전까지 사용한 레지스터 중간 값을 모두 복원 → 실행 재개
      • PCB에 레지스터 값이 포함되는 이유? → 타이머 인터럽트가 발생해 중단됬을 경우, 다시 차례가 왔을 때 실행을 재개할 수 있기 때문
      • ex) 프로그램 카운터, 스택 포인터 ..
    • 프로세스 상태
      • 입출력 장치를 사용하기 위해 기다리는 상태, CPU를 사용하기 위해 기다리는 상태 등 여러 상태값
    • CPU 스케줄링 정보
      • 프로세스가 언제 어떤순서로 CPU를 할당받을지에 대한 정보
    • 메모리 정보
      • 프로세스가 어느 주소에 저장되어 있는지에 대한 정보(=저장된 메모리 위치)
      • 페이지 테이블 정보(메모리 주소를 알 수 있는 정보)
    • 사용한 파일과 입출력장치 정보
      • 할당된 입출력장치, 사용 중인(열려있는) 파일 정보
    • + 운영체제 일부 차이 존재

    문맥 교환(Context Switch)

    기존에 실행 중인 프로세스의 문맥을 백업하고, 새로운 프로세스 실행을 위해 문맥을 복구하는 과정

    여러 프로세스가 끊임없이 빠르게 번갈아 가며 실행되는 원리

     

    한 프로세스에서 다른 프로세스로 실행 순서가 넘어간다면?

    기존에 실행되던 프로세스는 지금까지의 중간 정보를 백업

    • 프로그램 카운터 등 각종 레지스터 값, 메모리 정보, 열었던 파일, 사용한 입출력장치 등
    • 이러한 중간 정보 == 문맥(context)
    • 다음 차례가 왔을 때 실행을 재개하기 위한 정보
    • “실행 문맥을 백업해두면 언제든 해당 프로세스의 실행을 재개할 수 있다”

    뒤이어 실행할 다음 프로세스의 문맥을 복구

    → 사용자와 직접 상호작용이 가능한 백그라운드 프로세스


    프로세스가 사용자 영역에서는 어떻게 저장될까?

    프로세스의 메모리 영역

    프로세스는 크게 코드 영역(=텍스트 영역), 데이터 영역, 힙 영역, 스택 영역으로 저장된다.

    크기가 고정된 영역(= 정적 할당 영역)

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

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

    데이터 영역

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

    크기가 가변적인 영역(= 동적 할당 영역)

    힙 영역

    • 프로그래머(=사용자)가 직접 할당할 수 있는 저장공간
    • 힙 영역에 메모리를 할당했다면, 반드시 메모리를 반환해야 함
      • 일부 언어는 GC가 이 역할을 대신 해주지만, 만약 반환하지 않는다면 메모리 누수(Memory Leak) 발생

    스택 영역

    • 데이터가 일시적으로 저장되는 공간
    • 일시적으로 사용할 값들이 저장되는 공간(ex. 매개 변수, 지역 변수)

    힙 영역과 스택 영역의 크기는 가변적

    • 일반적으로 힙 영역은 낮은 주소 → 높은 주소로 할당
    • 일반적으로 스택 영역은 높은 주소 → 낮은 주소로 할당

    출처 : 유튜브 - 혼자 공부하는 컴퓨터 구조+운영체제

    반응형

    'CS > 운영체제' 카테고리의 다른 글

    교착 상태를 예방하는 방법  (0) 2025.06.29
    CPU 스케줄링  (3) 2025.06.15
    프로세스 상태와 계층 구조  (3) 2025.06.08

    댓글

Designed by Tistory.