본문 바로가기
IT지식/운영체제

[운영체제] 프로세스와 쓰레드

by five-sun 2022. 12. 4.
728x90

출처: https://velog.io/@codemcd/운영체제OS-5.-프로세스-관리

 

[운영체제(OS)] 5. 프로세스 관리

1. 프로세스(Process) 프로세스는 메인 메모리에 할당되어 실행중인 상태인 프로그램을 말한다. 프로그램은 일반적으로 하드디스크(보조기억장치)에 저장되어 아무 일도 하지 않는 상태이다. 프로

velog.io

프로세스(Process) : 

프로세스는 메인 메모리에 할당되어 실행중인 상태인 프로그램을 말한다. 프로그램은 일반적으로 하드디스크에 저장되어 아무 일도 하지 않는 상태이다.

 

프로세스 상태?

  • New : 프로그램이 메인 메모리에 할당.
  • Ready :  할당된 프로그램이 초기화와 같은 작업을 통해 실행되기 위한 모든 준비를 함.
  • Running : CPU가 해당 프로세스를 실행.
  • Waiting : 프로세스가 끝나지 않는 시점에서 I/O로 인해 CPU를 사용하지 않고 다른 작업을 함.(해당 작업이 끝나면 다시 CPU에 의해 실행되기 위해 Ready 상태로 돌아간다.)
  • Terminated : 프로세스가 완전히 종료.

프로세스 상태 전이도

PCB(Process Control Block) : 프로세스에 대한 모든 정보가 모여있는 곳. Task Control Block 이라고도 한다.

 

프로세스 큐 : 프로세스는 수행하면서 상태가 여러 번 변하는데 이에 따라 서비스를 받아야하는 곳이 다르다. 프로세스는 일반적으로 여러 개가 한번에 수행되므로 그에 따른 순서가 필요하다. 이러한 순서를 대기하는 곳이 큐이다.

아래와 같은 여러 큐가 존재하는데, 각 큐 내부에 저장된 실제 데이터는 각 프로세스 PCB가 저장되어 있다. 순서를 기다리는 공간이 있다면 이 순서를 정해주는 알고리즘도 존재한다. 이러한 알고리즘을 스케줄링 이라고 한다.

  • Job Queue :  하드디스크에 있는 프로그램이 실행되기 위해 메인 메모리에 할당 순서를 기다리는 큐. - Job Scheduler (Long -term Scheduler)
  • Ready Queue :  CPU 점유 순서를 기다리는 큐. - CPU Scheduler (Short - term Scheduler)
  • Device Queue : I/를 하기 위한 여러 장치가 있는데, 각 장치를 기다리는 큐. - Device Scheduler

 

앞서 말한 Multiprogramming을 프로세스 부분에서 더욱 설명하자면 Multiprogramming은 단일 프로세서(CPU) 환경에서 여러 개의 프로세스가 동시에 실행되는 것을 말한다. (실제로 동시에 실행되지는 않는다.) 여러 프로세스가 실행되려면 이 프로세스들은 모두 메인 메모리에 존재하고 있어야 한다.

 

출처: https://velog.io/@codemcd/운영체제OS-7.-쓰레드Thread

 

[운영체제(OS)] 7. 쓰레드(Thread)

1. 프로세스와 생성과 종료 프로세스는 프로세스에 의해 만들어진다. 컴퓨터가 부팅이 되면 운영체제가 메모리에 올라오는데 운영체제가 처음으로 수행하는 일 중에 하나는 최초의 프로세스를

velog.io

Thread : 내부의 흐름(맥) 이다.

일반적으로 하나의 프로그램은 하나의 쓰레드를 갖는다.

 

다중 쓰레드(Multithreads)?

하나의 프로그램에 쓰레드가 2개 이상 존재하는 것을 다중 쓰레드라고 한다.

하나의 프로그램에 여러 개의 쓰레드가 있을 수 있는 이유는 쓰레드가 빠른 시간 간격으로 스위칭되기 때문이다. 이러한 동작으로 사용자는 여러 쓰레드가 동시에 실행되는 것처럼 보인다.

하나의 CPU에서 여러 쓰레드가 스위칭에 의해 동시에 수행되는 효과 = concurrent,

여러 CPU에서 여러 스레드가 실제로 동시에 수행되는 것은 = simultaneous 라고 한다

 

현대의 운영체제의 context switching 의 단위는 프로세스가 아닌 쓰레드 단위이다.

 

Thread in Process

한 프로세스에는 기본적으로 하나의 쓰레드가 존재한다. 프로세스는 code, data 메모리 공간이 존재하고, 이는 여러 쓰레드가 공유한다. 이외에도 프로세스의 자원인 file, I/O 등은 여러 쓰레드가 공유하지만, 각 스레드가 고유하게 가지고 있는 것은 PC, SP, registers, stack 등이 있다.

728x90

'IT지식 > 운영체제' 카테고리의 다른 글

[운영체제] POSIX  (0) 2022.12.04
[운영체제] 입출력 관리  (1) 2022.12.04
[운영체제] IPC란?  (0) 2022.12.04
[운영체제] 운영체제의 구조와 동작원리 + @  (0) 2022.12.04
[운영체제] 운영체제란?  (0) 2022.12.03