ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 프로세스와 스레드
    Computer Science/IT용어 2021. 5. 6. 17:13

    프로그램

    어떤 작업을 위해 운영체제 위에서 실행할 수 있는 파일
    ex) 웹 브라우저, 워드 프로세서, 카카오톡 등

    프로세스

    운영체제 위에서 실행중인 프로그램
    프로그램 명령어와 데이터들이 메모리에 올라오고 실행 중 또는 실행 대기중인 상태

    프로세서(CPU)

    프로세스가 동작될 수 있도록 하는 하드웨어
    동작이란 프로그램의 자원들이 메모리에 올라오고, 실행 되어야 할 코드의 메모리 주소를 CPU의 레지스터로 올리는 것

    멀티태스킹

    사실 CPU는 한순간에 하나의 프로세스만 실행할 수 있음

    운영체제는 짧은 시간에 수십번~수천번 실행할 프로세스를 교체한다
    따라서 동시에 여러개의 작업이 실행되고 있다고 느끼는 것

    프로세스의 상태

    생성(Create)
    준비(Ready)
    실행(Running)
    대기(Blocked)
    종료(Terminated)

    PCB

    운영체제가 스케줄링을 하면서 프로세스를 스위칭 하기 위해 프로세스의 상태 어떤 프로세스를 어디까지 작업했는지 정보를 더 알아야 함
    프로세스를 제어하기 위한 모든 정보의 모음
    PID, 프로세스 상태, 다음에 실행할 명령어 주소, 이전에 작업하던 내용(레지스터)
    CPU 스케줄링 정보(우선순위, 최종실행시각, CPU 점유시간 등) 프로세스 주소 공간 등

    컨텍스트 스위칭

    인터럽트에 의해 프로세스의 실행이 교체되는 작업

    프로세스 구조

    스택 : 호출된 함수, 지역변수 등 임시 데이터
    힙 : 동적으로 생긴 데이터
    데이터 : 전역변수
    코드 : 프로그램의 코드

    작업에 흐름이 여러 갈래가 생기는 경우,
    여러개의 프로세스로 하나의 작업을 구성할 수 있음
    => 멀티 프로세스

    그러나 멀티 프로세스는 각각의 메모리 영역을 따로 할당받기 때문에 비효율적

    1. 컨텍스트 스위칭을 하는 과정에서 오버헤드가 크게 발생
    2. 같은 작업을 하기 위해 만든 멀티 프로세스 환경인데 각각의 영역을 따로 가지므로, 다른 프로세스의 정보를 이용하기 위해 프로세스간의 통신이 필요
      => 스레드 탄생의 배경

    스레드

    코드, 데이터, 힙 영역은 공유하고, 스택 영역은 독립적으로 할당
    컨텍스트 스위칭시 코드, 데이터, 힙 영역이 메모리와 CPU에 적재, 캐시 영역에도 적재
    프로세스에 있던 PCB는 메모리에 적재되고, 그 안의 레지스터 값들이 CPU 코어에 있는 레지스터 영역에 채워짐(레지스터 블록)
    따라서 컨텍스트 스위칭 발생 시 오버헤드가 감소(레지스터 값들만 변경)

    멀티 코어 멀티 스레딩

    각각의 코어가 L2캐시를 공유하고 있음(이곳에 코드, 데이터, 힙 데이터가 적재)

    멀티 스레드 주의점

    디버깅이 까다로움
    한 프로세스 안의 스레드에 문제가 생기면 같은 프로세스의 스레드도 문제가 생김
    같은 데이터를 공유하기 때문에 데이터 동기화에 신경을 써야 함

    정리

    스레드

    프로세스 내에서 실행되는 작업 흐름의 단위

    프로세스

    프로세서에 의해 동작하고 있는 프로그램
    프로세스의 특정 스레드가 실행 중, 그 특정 스레드는 프로세스가 가진 데이터를 참조
    스레드 단위 작업을 지원하기 위한 자원 할당의 단위

     

    작업은 프로세스 단위로 받고
    작업/스케줄링은 스레드 단위로 진행

     

     

    Reference

    https://www.youtube.com/watch?v=DmZnOg5Ced8

    댓글

Designed by Tistory.