[운영체제] 프로세스 관리

2025. 1. 28. 01:30·CS/OS

전공 수업 내용 정리 (문제 발생시 비공개합니다.)

 


실행 모드

대부분의 프로세서는 두 가지 이상의 실행 모드를 지원

모드 연산자 메모리 CPU 레지스터
커널(시스템) 모든 연산자 실행 모든 곳 접근 모든 레지스터 접근
유저 연산자 특권 없음 내 메모리 영역만 특수 레지스터 없음

모드 스위치

모드 스위치는 현재 실행 중인 프로세스의 상태를 변경하지 않고 사용자 모드와 커널 모드 간에 프로세서를 전환할 수 있다.

이 과정에는 모드 컨텍스트 저장/복원에 따른 오버헤드가 포함됨.

인터럽트 비동기적인 외부 예외
트랩 현재 명령어 실행
시스템 호출 요청에 의해

모드 스위치의 주요 원인

  • 인터럽트: 비동기적인 외부 예외
  • 트랩: 현재 명령어 실행 중 발생
  • 시스템 호출: 프로그램의 요청에 의해 발생

프로세스 컨텍스트와 인터럽트 컨텍스트

  1. 프로세스 컨텍스트: 프로그램이 시스템 호출을 실행하거나 예외를 트리거할 때 발생. 커널이 "프로세스를 대신하여 실행"한다고 표현.
  2. 인터럽트 컨텍스트: 인터럽트 핸들러 실행 시 발생. 프로세스와 연결되지 않으며, 빠르고 간단하게 처리되어야 함. 절전 모드로 전환 불가.

프로세스 생성

프로세스 생성 이유:

  1. 새로운 일괄 처리 작업
  2. 대화형 로그온
  3. 운영체제의 서비스 제공
  4. 기존 프로세스에 의한 생성(스포닝)

프로세스 생성 방법:

  1. Directed 방식
  2. Cloning 방식 (프로세스 스포닝): 부모 프로세스의 복제본인 자식 프로세스 생성, 이후 프로세스의 기계코드, 데이터, 힙, 스택이 새로운 프로그램에 의해 재배치됨 = exec, 이때 프로세스 식별자(PID)는 바뀌지않음!

클로닝

Copy On Write (COW)

부모 프로세스의 페이지를 자식 프로세스와 공유하다가, 데이터 변경 시에만 새로운 페이지를 할당하는 기법

이를 통해 새롭게 할당되는 페이지를 최소화할 수 있다.

프로세스 종료

  1. 자발적 종료(Voluntary termination): exit() 함수를 통해 명시적으로 종료
  2. 비자발적 종료(Involuntary termination): 부모 프로세스나 OS에 의해 강제 종료 ex.kill 함수

좀비 프로세스와 고아 프로세스

  • 좀비 프로세스: 종료되었으나 부모 프로세스가 종료 상태값을 가져가지 않은 프로세스
  • 고아 프로세스: 부모 프로세스가 자식 프로세스보다 먼저 종료된 경우

Reaping

부모 프로세스가 wait() 함수를 통해 자식 프로세스의 종료 상태를 가져가고, 커널이 좀비 프로세스를 제거하는 과정

프로세스 종료 시 처리

  1. 등록된 클린업 핸들러를 역순으로 호출
  2. 각종 자원 해제
  3. 대기 중인 시그널이 있다면 저장
  4. 고아 프로세스의 경우, 부모 프로세스를 init 프로세스로 변경 (reparent)
저작자표시 비영리 동일조건 (새창열림)

'CS > OS' 카테고리의 다른 글

[운영체제] 스레드  (0) 2025.01.29
[운영체제] 프로세스 스케줄링  (0) 2025.01.28
[운영체제] 프로세스  (0) 2025.01.28
[운영체제] 오퍼레이팅 시스템 개요  (0) 2025.01.28
[운영체제] 메모리  (0) 2025.01.28
'CS/OS' 카테고리의 다른 글
  • [운영체제] 스레드
  • [운영체제] 프로세스 스케줄링
  • [운영체제] 프로세스
  • [운영체제] 오퍼레이팅 시스템 개요
abyss-s
abyss-s
프론트엔드 공부합니다.
  • abyss-s
    abyss-s의 블로그입니다.
    abyss-s
  • 전체
    오늘
    어제
    • 분류 전체보기 (188)
      • Web (16)
        • JavaScript (6)
        • TypeScript (1)
        • React (5)
        • Vue (0)
        • Storybook (1)
        • Next.js (1)
      • Backend & Infra (8)
        • Database (3)
        • Node.js (2)
        • SpringBoot (1)
      • PS (71)
      • CS (30)
        • OS (13)
        • Structure & Algorithm (5)
        • Network (10)
        • 정보처리기사 (2)
      • Language (18)
        • OOP (1)
        • JAVA (13)
        • C++ (4)
      • Activities (12)
        • 멋쟁이 사자처럼 (2)
        • OSSCA (3)
        • LG U+ URECA (3)
        • Project (2)
      • AI (0)
      • Git & Github (5)
      • Notion (1)
      • IT (4)
      • Statistics (11)
      • Book (4)
      • Diary (1)
      • Game (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 깃허브
    • 백준
    • 트위터
  • 공지사항

    • abyss-s의 티스토리에 오신 것을 환영합니다.
  • 인기 글

  • 태그

    DP
    Java
    BFS
    자바스크립트
    파이썬
    github
    백준
    통계학
    JavaScript
    운영체제
    React
    BAEKJOON
    코드트리
    네트워크
    생활코딩
    C++
    자바기반응용프로그래밍
    Python
    그리디
    OS
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
abyss-s
[운영체제] 프로세스 관리
상단으로

티스토리툴바