Process와 Thread

노지수·2022년 5월 28일
0

프로그램이란?

  • 파일이 저장장치에 저장되어 있지만 메모리에는 올라가 있지 않은 정적인 상태이며, 어떠한 작업을 위해 실행할 수 있는 파일(컴퓨터가 실행할 수 있는 명령어들의 집합)

프로세스(Process)란?

  • 프로그램이 메모리에 올라와 운영체제로부터 CPU를 할당받고 프로그램이 실행되고 있는 상태.(컴퓨터에서 실행 중인 프로그램)
    ※ CPU : 명령어를 실행하는 연산장치

프로세스의 특징

  • 각각의 프로세스는 독립된 메모리 공간을 할당받는다.
  • 메모리 공간에는 명령어들과 데이터를 가지게 된다.
    ※ 메인 메모리 : 프로세스가 CPU에서 실행되기 위해 대기하는 곳

CPU 스케줄링(Scheduling)

  • 프로세스가 생성된 후 종료될 때까지 스케줄링 알고리즘을 통해서 모든 상태 변화를 결정하는 일을 한다.(CPU가 놀지않고 일을할 수 있도록 선택하는 역할)

스케줄링의 선점방식

비선점(Nonpreemptive) 스케줄링

장점

  • 프로세스 간의 오버헤드가 적다 -> context switching이 적다.
  • 모든 프로세스에 대한 공정한 처리가 가능하다.

단점

  • 특정 프로세스를 오래 기다려야 하는 상황이라면, 그동안 이미 실행됐지만, CPU에서는 활동하지 못하는 프로세스는 ready queue에서 기다리고 있기 때문에, 사용자 입장에서는 응답성이 느리다고 느낄 수 있다.

선점(Preemptive) 스케줄링

장점

  • 우선순위를 가진 프로세서들을 빠르게 처리할 수 있다.

단점

  • 오버헤드가 증가한다 -> context switching이 자주 발생한다

스케줄링의 알고리즘

  • FCFS(First Come First Served) : 먼저 도착한 순서대로 처리 ex) Queue방식
  • SJF(Shortest Job First) : 프로세스의 다음 CPU burst가 가장 짧은 프로세스부터 실행.
  • SRTF(Shortest remaining Time First) : 남은 CPU burst가 가장 짧은 프로세스부터 실행.
  • Priority : 우선순위가 높은 프로세스부터 실행.
  • RR(Round Robin) : time slice로 나눠진 CPU time을 번갈아가며 실행
  • Multilevel Queue : 프로세스를 그룹화해서 그룹마다 Queue를 두는 방식

스레드(Thread)란?

  • 프로세스(process) 내에서 실제로 작업을 수행하는 주체. 모든 프로세스는 한개 이상의 스레드가 존재한다.

스레드의 특징

  • 프로세스 내에서 각각 Stack만 따로 할당받고 Code, Data, Heap영역은 공유한다.
profile
프로그래밍, 개념 및 이론 기록

0개의 댓글