프로세스

CS) 프로세스와 스레드

2023. 2. 8. 18:17

프로세스, 스레드

프로세스란?

프로세스

  • 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램
  • 운영체제로부터 시스템 자원을 할당받으며, 자체 메모리 공간을 가지고 있다. 즉 프로세스는 서로 독립된 메모리영역(Code,Data,Stack,Heap)을 할당받는다.
  • 각 프로세스는 별도의 주소공간에서 실행된다 따라서 하나의 프로세스가 다른 프로세스의 변수나 자료구조에 접근할수 없다.(IPC,inter-process communication을 통해 다른 프로세스의 자원에 접근 가능하긴 하다)
  • 하나 이상의 스레드에 의해 실행되는 컴퓨터 프로그램의 인스턴스이다.

 

 

스레드란?

스레드

  • 프로세스 내에서 실행되는 독립적인 실행 단위
  • 병렬로 실행될수 있으며, 동일한 주소공간과 시스템 리소스(Code,Data,Heap)영역은 공유한다.(Stack영역은 스레드간 따로 할당을 받는다)
  • 프로세스와 다르게 공유하는 시스템 리소스 영역이 존재한다 따라서 한 스레드가 프로세스 자원을 변경하면, 다른 이웃 스레드(sibling thread)도 그 변경 결과를 즉시 볼수 있다.

 

멀티프로세스와 멀티 스레드

멀티프로세스

  • 멀티 프로세스란 여러 프로세스가 서로 협력적으로 일을 처리하는것을말한다..
  • 멀티프로세스의 장점
    • 멀티 프로세스를 사용하게되면 하나의 프로세스가 죽더라도 다른 프로세스에는 영향을 미치지 않는다(프로세스는 서로의 메모리공간을 공유하지 않으므로)
  • 멀티스레드의 단점
    • 반면 멀티 프로세스에서 발생하는Context Switching 의 작업에 의해 오버헤드가 발생할수 있다.
    • 또한 위에서 말했다 싶이 프로세스들은 IPC기법을 사용하지 않으면 서로의 메모리 영역을 공유할수 없기때문에 프로세스들 사이의 변수를 공유할수 없다.
    • Context Switching
      • CPU에서 여러 프로세스가 돌아가면서 작업을 처리할때의 과정을 말한다. 이때 동작중인 프로세스가 대기를 하며 해당 프로세스의 상태(Context)를 보관하고, 대기하고 있던 다음 순서의 프로세스가 동작하면서 이전에 보관했던 프로세스의 상태를 복구하는 작업을 말한다.

 

멀티스레드

  • 멀티 스레드란 하나의 프로세스를 여러개의 스레드를 통해 서로 자원을 공유하며, 이를 통해 작업처리 속도를 향상시키는 것이다.
  • 이때, 다수의 스레드가 특정 자원을 동시에 사용한다, 따라서 동기화 처리가 필요하며 동기화를 통해 스레드의 적업 처리 순서와 공유자원에 대한 접근을 제어해야한다.
  • 멀티스레드의 장점
    • 멀티 스레드는 상대적으로 멀티 프로세스보다 적은 메모리 공간을 차지한다.
    • 스레드는 Heap영역을 공유하므로 서로 데이터를 주고 받는 것이 간단해진다.
  • 멀티스레드의 단점
    • 반면 위에서 말한 자원 공유의 문제 즉 동기화 문제가 존재하며 서로의 Heap영역을 공유하기때문에 하나의 스레드에 문제가 발생하면 전체 프로세스가 영향을 받는다.
    • 이때 하나의 스레드가 죽는다해서 무조건적으로 모든 스레드가 죽는것은 아니다. 각 스레드가 얼마나 동기화 되어있는지에 따라 하나의 스레드가 죽더라도 다른 스레드가 죽지 않을수있다.(근데 만약 하나의 스레드가 죽어 모든 스레드가 죽게된다면 프로세스는 terminate된다)

 

 

프로세스 스케줄링 기법

  1. FCFS(First Come First Served)
    • 비선점형(Non-preemptive) 스케쥴링으로, 먼저 온 프로세스부터 처리하는 스케쥴링이다.
    • 단점
      • convoy effect(소요시간이 긴 프로세스가 먼저 도착하면 효율이 떨어진다)가 발생할수 있다.
  2. SJF(Shortest - Job - First)
    • 비선점형 스케쥴링으로, 다른 프로세스가 먼저오더라도 실행시간이 가장 짧은것 부터 처리하는 스케쥴링이다.
    • 단점
      • starvation(특정 프로세스의 동작시간이 지나치게길면 영원히 CPU를 할당받지 못하는현상)이 일어날수있다.
  3. SRT(Shortest Remaining time First)
    • 선점형 스케쥴링 으로, 새로운 프로세스가 도착할때마다 새로운 스케쥴링이 이루어진다.
    • 현재 수행중인 프로세스보다 짧은 동작시간을 가지는 프로세스가 들어오면 CPU를 재할당한다.
    • 단점
      • SRT또한 starvation이 생길수 있고, 새로운 프로세스가 도착할때마다 스케쥴링을 다시하기 때문에 CPU사용시간을 측정할수 없다.
  4. Priority Scheduling
    • 우선순위가 가장 높은 프로세스에게 CPU를 할당한다. (우선순위는 정수로표현하며 작은 정수일수록 우선순위가 높다)
    • 우선순위 스케줄링은 선점방식, 비선점방식 두방법 모두 가능하다.
    • 선점형 스케쥴링 방식을 사용하면, 더 높은 우선순위를 가진 프로세스가 도착하면 실행중인 프로세스를 멈추고 CPU를 선점한다.
    • 비선점형 스케쥴링 방식을 사용하면, 더 높은 우선순위인 프로세스가 들어오더라도 ready queue의 앞에 집어넣고 현재 실행중인 프로세스가 끝날때까지 기다린후 실행된다.
    • 단점
      • Starvation이 발생할수있다. 이때 발생하는 Starvation은 aging 기법으로 해결할수 있다.
    • 해결법
    • aging이란 아무리 우선순위가 낮은 프로세스라도 오래 기다렸으면 우선순위를 높여주어 Starvation을 예방한다.
  5. Round Robin
    • 현대적인 CPU 스케줄링
    • 각 프로세스는 동일한 크기의 할당 시간을 갖게 된다.
    • 할당 시간이 지나면 ready queue의 제일뒤에가서 다시 자기 차례가 올때까지 대기한다.
    • Round Robin은 CPU사용시간이 랜덤한 프로세스들이 섞여있을 경우에 효율적이다.
    • 단점
      • 할당 시간이 너무 커지면 FCFS와 같아지고, 너무작으면 잦은 contest switch로 overhead가 발생할수있다. 따라서 적정한 할당시간을 설정해야한다.

 

 

PCB,TCB

  • PCB(Process Control Block)
    • PCB란 특정 process의 정보를 저장하는 데이터 구조이다.
    • 프로세스의 상태, 메모리 할당, 그리고 process가 사용중인 resource등의 정보를 포함하고 있으며, 운영체제는 PCB에 있는 정보를 사용하여 프로세스의 실행을 관리한다.
  • TCB(Thread Control Block)
    • TCB란 스레드의 실행상태, 스택포인터, 프로그램 카운터등 스레드의 실행을 관리하기 위해 운영체제에서 필요로 하는 기타 정보를 포함하여 특정 스레드에 대한 정보를 저장하는 데이터 구조이다.
    • 다중 스레드 환경에서 각 스레드는 고유한 TCB를 가지고 있지만, 프로세스 내의 모든 스레드는 동일한 PCB를 공유한다.

 

 

Hyper-threading

  • Hyper-threading기술이란 다중 스레드 소프트웨어 응용 프로그램의 성능을 향상시키는 데 사용되는 기술이다.
  • 하이퍼 스레딩 기술을 통해 물리적 코어 하나가 두개의 논리적 코어로 나타나도록 작동을 하며 각각은 별도의 명령 스트림을 실행할수 있다.
  • 이 기술을 통해 운영체제는 단일 물리적 코어에서 더 많은 스레드를 예약할수 있수 있으므로 사용 가능한 병렬 처리의 활용도가 향상된다.

'CS' 카테고리의 다른 글

CS) Synchronous & Asynchronous  (0) 2023.02.12
CS) Function,Predicate  (0) 2023.02.08
CS) Functional Programming  (0) 2023.02.08
CS) Mutable,Immutable  (0) 2023.02.08
CS) Tokenizer,Lexer,Parser  (0) 2023.02.08

+ Recent posts