Computer Science/Operating System

[OS] 프로세스 개요

kyxxn 2024. 4. 29. 19:44
728x90

프로세스란 ?

프로세스의 인스턴스로, 하드웨어에 있는 프로그램의 객체이다
메모리에 올라가게 됨

스택 영역 지역변수, 파라미터, 리턴 주소
데이터 영역 전역변수, 정적변수
힙 영역 동적할당
코드영역 프로그램 코드 (2진수)

프로세스 API 5가지

운영체제가 제공하는 프로세스 API 5가지

  • 생성 - 프로그램 실행
  • 삭제 - 프로세스 삭제
  • 대기 - 프로세스 대기
  • 각종 제어 - 일시중지하고 다시 시작
  • 상태 - 프로세스 상태를 얻음

프로세스 생성

  1. 프로그램 코드를 메모리로 적재함 (Load)

    게으른 적재 방식을 사용함
    → 모든 코드나 데이터를 메모리에 올리지 않고, 필요할 때마다 가져옴

    프로그램은 디스크에 실행가능 파일로 저장되어 있음

  2. 실행 시간 스택 할당

    → 지역변수, 함수 매개변수, 리턴 주소 등등의 스택영역 초기화

  1. 힙 생성

    실행 도중 동적으로 요구되는 공간을 할당함 (malloc)

  1. 입출력 초기화 작업

    → 파일 기술자의 0, 1, 2 (표준입력, 출력, 에러)

    I/O 또는 시그널 관련 자료구조 초기화

  1. 프로그램 시작점으로 분기하여 실행을 시작함

    주로 main(), CPU는 OS가 제어함

프로세스 상태

  1. 실행 (Running)

    → CPU가 프로세스에 포함된 명령을 실행 중

  2. 준비 (Ready)

    → 실행 준비는 되어 있지만 CPU가 사용 가능하지 않은 상태

    다른 프로세스가 실행중인 경우다

  3. 대기 (Blocked)

    → 프로세스가 다른 사건을 기다리는 동안, 프로세스의 실행이 중단되어 있는 상태

    입출력 요청이 발생한 상태

자료구조

운영체제도 일종의 프로그램이다.
프로세스 상태를 파악하기 위한 Process List와 같은 자료구조를 가짐
프로세스 정보를 알 수 있는 레지스터 문맥 (Register Context)도 가짐

퀴즈

  1. 프로세스의 running 상태를 blocked 상태로 바꾸는 POSIX API를
    하나 제시하고, 그 이유를 설명하시오.

    → Read (읽기 작업) - I/O 작업을 통해 프로세스가 실행 중에서 대기 상태로 들어간다.

    → Sleep

    → Waitpid

  2. 프로세스의 blocked 상태를 ready 상태로 바꾸는 사건 (event)를
    하나 제시하시오

    → Waitpid 종료

    → Sleep 끝나면

    → read 다 읽으면