[운영체제] 프로세스

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

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


프로그램과 프로세스

프로그램: 디스크에 저장된 수동적인 엔티티(binary sequence)
프로세스: 실행 중인 액티브 엔티티(execution sequence)

프로세스의 구성 요소

  1. 프로그램 코드: 실행될 명령어 집합
  2. 관련 데이터 세트: 프로그램 실행에 필요한 데이터

동적 저장공간 할당

  • 스택(Stack): 함수 호출 시 리턴 주소와 지역 변수를 저장 (LIFO 구조)
  • 힙(Heap): 동적 메모리 할당을 위해 사용

실행 순서와 스택 구조

스택 구조

  • 스택 포인터(Stack Pointer): 스택 최상단 원소의 주소
  • 스택 베이스(Stack Base): 스택 최하단 원소의 주소
  • 스택 리미트(Stack Limit): 스택 최대 크기 제한

함수 호출 시 동작

  1. 함수 호출 시 리턴 주소를 스택에 저장(push)
  2. 함수 종료 시 리턴 주소를 참조하여 복귀(pop)

프로세스 제어 블록 (PCB)

⭐⭐⭐⭐운영체제가 각 프로세스를 관리하기 위해 사용하는 핵심 자료구조

운영체제의 핵심이다

PCB의 주요 역할

  1. 프로세스 상태 저장: 프로세스 중단 후 재개를 위해 PC(Program Counter)와 레지스터 상태 저장
  2. 프로세스 간 컨텍스트 스위칭 지원: CPU가 다른 프로세스로 전환될 때 필요한 정보 제공

PCB 구성 요소

  • PID(Process ID): 고유 프로세스 식별자
  • 프로세스 상태: New, Ready, Running, Blocked, Terminated 등
  • 레지스터 상태: 프로그램 카운터, 스택 포인터 등
  • 메모리 관리 정보: 페이지 테이블, 메모리 범위 등
  • CPU 스케줄링 정보: 우선순위, CPU 점유 시간 등
  • I/O 상태 정보: 열린 파일 목록, 할당된 입출력 장치 등

PCB는 일반적으로 커널 스택에 저장되며, 이중 연결 리스트로 관리됨.

 


프로세스 이미지

유저 레벨 문맥

  • 사용자 프로그램과 데이터 및 실행 중 사용되는 스택 포함

시스템 레벨 문맥

  • PCB와 같은 운영체제가 관리하는 정보 포함

프로세스 상태 모델

2-상태 모델

  1. Running: 현재 실행 중인 상태
  2. Not Running: 실행 대기 중 또는 대기 상태
단점: Not Running 상태의 모호함으로 인해 실용성이 낮음.


5-상태 모델

  1. New: 생성된 초기 상태
  2. Ready: 실행 준비 완료
  3. Running: CPU에서 실행 중
  4. Blocked: 특정 이벤트(I/O 작업 등) 대기
  5. Terminated: 실행 종료

다중 큐를 통해 효율적으로 관리 가능


7-상태 모델 (보류 상태 추가)

  1. Blocked/Suspend (블록/보류): 보조 메모리에서 이벤트 대기
  2. Ready/Suspend (준비/보류): 보조 메모리에 있지만 메인 메모리에 로드되면 즉시 실행 가능

보류 상태는 메모리 부족 문제를 해결하고 우선순위 기반 관리에 유용


디스패처와 컨텍스트 스위칭

디스패처(Dispatcher)

  • Ready 상태에서 Running 상태로 전환 담당
  • 컨텍스트 스위칭을 수행하며, 사용자 모드(User Mode)로 전환
  • 프로세스가 다시 시작할 때 사용자 프로그램이 올바른 위치를 찾을 수 있도록 한다.
  • 따라서 dispatcher의 처리속도가 빠르면 빠를수록, 시스템 성능이 향상된다.

프로세스 스위치

주요 원인

  1. 타이머 인터럽트
  2. 시스템 호출(Supervisor Call)
  3. 예외(Exception)

모든 인터럽트가 반드시 프로세스 전환을 의미하지는 않음.


저작자표시 비영리 동일조건 (새창열림)

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

[운영체제] 프로세스 스케줄링  (0) 2025.01.28
[운영체제] 프로세스 관리  (0) 2025.01.28
[운영체제] 오퍼레이팅 시스템 개요  (0) 2025.01.28
[운영체제] 메모리  (0) 2025.01.28
[운영체제] virtual box에서 ubuntu 설치 및 터미널 명령어 실행하기  (0) 2023.07.09
'CS/OS' 카테고리의 다른 글
  • [운영체제] 프로세스 스케줄링
  • [운영체제] 프로세스 관리
  • [운영체제] 오퍼레이팅 시스템 개요
  • [운영체제] 메모리
abyss-s
abyss-s
프론트엔드 개발합니다!
  • abyss-s
    abyss-s의 블로그입니다.
    abyss-s
  • 전체
    오늘
    어제
    • 분류 전체보기 (194)
      • Web (17)
        • JavaScript (6)
        • TypeScript (1)
        • React (6)
        • 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 (17)
        • 멋쟁이 사자처럼 (2)
        • OSSCA (3)
        • LG U+ URECA (5)
        • Project (2)
        • Conference (2)
      • IT (3)
      • AI (0)
      • Git & Github (5)
      • Notion (1)
      • Statistics (11)
      • Book (5)
      • Diary (1)
      • Game (1)
  • 블로그 메뉴

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

    • Github
    • Baekjoon
    • X
    • LinkedIn
  • 공지사항

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

  • 태그

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

  • 최근 글

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

티스토리툴바