OS

[운영체제] 프로세스/스레드/스택/큐

효진인데요 2023. 8. 9. 22:46

 

 

 

0.  Process (프로세스) 

 

  • 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램
  • 운영체제로부터 시스템 자원을 할당받는 작업의 단위
  • 즉, 동적인 개념으로는 실행된 프로그램을 의미
  • 각각 독립된 메모리 영역을 할당 / 별도의 주소 공간에서 실행
     한 프로세스가 다른 프로세스의 변수나 자료구조에 접근 불가
     다른 프로세스의 자원에 접근하기 위해선는 프로세스 간 통신을 사용해야 함
         (ex. 파이프, 소켓, 파일 등을 이용한 통신 방법 사용) 
  • 기본적으로 프로세스당 최소 1개의 스레드 (메인 스레드) 가짐

 

 

 

출처:https://jokerkwu.tistory.com/89

 

 

 


 

 

 

 

1.  Thread (스레드) 

 

  • 프로세스 내에서 실행되는 흐름의 단위
  • 하나의 프로세스에는 n 개의 스레드 존재
  • 한 프로세스 내에서 동작하는 여러 실행의 흐름
     프로세스 내의 주소 공간이나 자원을 같은 프로세스 내 스레드끼리  공유하며 실행
  • 동시 작동 가능 (병행 실행)

 

 

1.1 싱글 스레드

 

 

 

 

  • 하나의 프로세스에서 하나의 스레드로만 실행
  • 하나의 레지스터와 스택으로 표현 가능
  • 작업을 차례대로 처리

 

[ 장점 ]

  1. 문맥 교환 (context switch) 작업 요구 X
  2. 자원 접근에 대한 동기화 고려 필요 X
    멀티 스레드와 같이 여러 스레드가 동일한 프로세스의 자원 공유하는 경우 자원의 불일치 발생 가능
  3. 단순한 작업의 경우, 멀티스레드에 비해 효율적 (작업 전환 시간 필요 X)
  4. 프로그래밍의 난이도가 어렵지 않음
  5. CPU, 메모리 사용량 적음

 

[ 단점 ]

  1. 여러 개의 CPU 활용불가
  2. 복잡한 작업의 경우, 작업을 한번에 하나씩 처리하는 특성상 처리 속도 느림
  3. 에러 처리 못할 시 구동 정지 (활용할 다른 스레드 존재 X)

 

 

 

 

 

1.2 멀티 스레드

 

 

 

 

  • 두개 이상의 스레드를 활용
  • 메인 스레드 외의 다른 스레드를 이용하여 작업 병렬 수행

    사실 작업이 정확하게 동시에 일어나는 것은 아니나,
        엄청나게 빠른 속도로 문맥 교환이 일어나며
        사용자가 느끼기에는 동시에 실행되는구나~라고 인지

 

 

[ 장점 ]

  1. 하나의 스레드가 중단되거나 긴 작업을 수행하더라도 프로그램이 다운되지 않아 응답성 증가
    ex) 하나의 스레드에서 긴 작업을 처리하는 동안 사용자는 다른 스레드와 상호작용 가능
  2. 프로세스 내 자원들과 메모리 공유 ▷ 메모리 공간과 시스템 자원 소모 절약
  3. 스레드 간 통신이 쉬움
  4. 멀티 프로세서의 활용으로 병렬성이 증가

 

[ 단점 ]

  1. 문맥 교환, 동기화 등의 이유로 스레드 생성 시간이 오래 걸림
  2. 자원을 공유하기 때문에 한 스레드가 사용 중인 자원에 다른 스레드가 접근할 경우 자원 불일치 발생 가능
    ▷ 동기화 필요

 

 

 


 

 

 

 

 

2. Stack (스택)

 

출처:https://velog.io/@sbinha/%EC%8A%A4%ED%83%9D-%ED%81%90

 

 

  • 바구니 같이 생긴 구조
  • 한쪽 끝에서만 자료(데이터)를 넣고 빼는 작업이 이루어지는 자료구조
  • LIFO(Last In First Out) 후입선출
  • 스택의 맨 위 = top

 

 

 

[ 용어 ]

 

  1. push (삽입)  : top에 새로운 자료(데이터) 추가
  2. pop (삭제) : 가장 최근에 삽입된 자료(데이터) 삭제
  3. peek (읽기) : top에 해당하는 데이터 읽기
  4. stack underflow : 스택이 비어 있는데 pop을 시도했을 때 발생
  5. stack overflow : 스택이 꽉 차 있는데 push를 시도했을 때 발생

 

 

 


 

 

 

 

3. Queue (큐)

 

출처:https://velog.io/@sbinha/%EC%8A%A4%ED%83%9D-%ED%81%90

 

 

  • 줄을 서 있는 것과 같이 생긴 구조
  • FIFO(First-in, First-out) 선입선출
  • 데이터가 입력된 시간 순서대로 처리해야 할 필요가 있는 상황에서 이용

 

 

 

[ 용어 ]

 

  1. put / Enqueue (삽입)  : 큐 가장 뒤에 새로운 데이터 추가
  2. get / Dequeue (삭제) : 큐 가장 앞의 데이터 삭제
  3. queue underflow : 큐가 비어 있어 자료를 꺼낼 수 없는 경우 발생
  4. queue overflow : 큐가 꽉 차서 더이상 자료를 넣을 수 없는 경우 발생

 

 

 

 

 

 

728x90