OS 01 | 프로세스(Process)와 스레드(Thread)

Kate Jung·2021년 10월 5일
0

Operating System

목록 보기
1/1
post-thumbnail

📌 프로세스(process)

🔹 개념

  • 프로그램이란
    • 작업을 위해 실행 가능한 파일
  • 프로세스란
    • 실행 중인 프로그램

🔹 프로그램을 프로세스로 바꾸는 법

프로그램 실행 = 프로그램을 프로세스로 바꾸기


  1. 운영체제는 프로그램을 실행하기 위해서, 프로그램을 메모리의 적당한 위치로 가져온다.

    동시에 운영체제는 PCB(Process Control Block)을 생성한다. (프로세스를 관리하기 위해)

    • PCB(Process Control Block)
      • 프로그램을 실행하기 위한 다양한 정보들이 있다.
      • 내부 정보
        • PID('프로세스 구분자'라고 지칭)
        • 메모리 관련 정보들
        • 각종 중간 값들(프로그램 카운터와 같은) 저장
  2. OS(운영체제)는 PCB 를 이용하여 프로그램을 프로세스로 만들어 프로그램을 실행함.


✦ 프로세스 5 가지 상태

프로세스 상태: 프로그램이 프로세스로 변환되고 실행이 끝나면 다시 프로그램으로 돌아가는 과정

  • 생성 상태 : 프로그램을 메모리에 가져와서 실행 준비완료된 상태. PCB 생성됨.
  • 준비 상태 : 실행을 기다리는 모든 프로세스가 자기 차례를 기다리는 상태
  • 실행 상태 : 선택된 프로세스가 CPU를 사용하는 상태
  • 대기 상태: 실행 상태에 있는 프로세스가 입출력을 요청하면 입출력이 완료될 때까지 기다리는 상태
  • 완료 상태 : 프로세스종료된 상태. PCB 삭제됨

🔹 프로세스의 구조

프로세스는 4가지 구조로 되어 있다.

  • 코드 영역 (code area)

    프로그래머가 작성한 프로그램이 코드 영역에 작성됨

  • 데이터 영역 (data area)

    코드가 실행되면서 사용한 변수나 파일들의 각종 데이터가 모여 있음

  • 스택 영역 (stack area)

    호출된 함수가 종료되면 되돌아올 메모리의 주소를 스택에 저장 or 변수 사용 범위에 영향을 미치는 영역을 구현할 때 사용됨

  • 힙 영역 (heap area)

    동적으로 할당되는 데이터들을 위해 존재하는 공간


  • 정적 영역 (선언 시 크기가 결정됨)
    • 코드/데이터 영역
  • 동적 영역 (프로세스가 실행되는 동안 크기가 변함)
    • 스택/힙 영역

✅ 프로그램이 프로세스로 전환되는 과정(+프로세스 구조) :
사용자가 프로그램을 실행 → 운영 체제는 프로그램을 메모리에 가져와 코드 영역에 넣고 프로세스 제어 블록(PCB)생성 → 메모리에 스택+힙 영역 확보 → 프로세스 실행

📌 스레드(thread)

🔹 정의 및 개념

  • 프로세스(process) 내에서 실제작업수행하는 주체
  • 프로세스의 코드에 정의된 절차에 따라 CPU에 작업 요청을 하는 실행 단위

  • 모든 프로세스에는 1 개 이상의 스레드가 존재하여 작업 수행

🔹 멀티 프로세스 vs 멀티 스레드

  • 오늘 날의 운영체제 : 멀티 스레드 형식 사용
    • 이유
      • 프로세스의 낭비 요소 제거
      • 프로세스 작업 유연성 획득

profile
복습 목적 블로그 입니다.

0개의 댓글