[OS] 프로그램의 흐름 단위

Eugene CHOI·2022년 2월 10일
0

Task

보는 사람에 따라서 실행되는 하나의 프로그램을 의미하기도 하고 최소 작업 단위를 의미하기도 합니다. 후자의 경우 스레드와 프로세스 모두 Task가 될 수 있습니다.
저는 하나의 프로그램으로 이해하겠습니다. 이 말은 한 Task를 처리하는데 하나 이상의 프로세스가 필요하다는 의미입니다.

Program

프로그램은 컴파일한 코드와 초기화 전역변수, 문자열과 문자열 상수 등 정적 데이터를 포함하는 정적인 개체입니다.

Process

프로세스는 프로그램 카운터나 레지스터처럼 현재 어떤 자원을 사용하는지 관련 정보가 들어 있는 동 적인 개체이다.

프로그램과 관련된 모든 데이터가 메모리에 적재되어 연속적으로 실행 중인 상태를 말합니다. 따라서 운영체제로부터 자원을 할당받는 작업의 단위를 의미합니다. 여러개의 프로세스를 동시에 사용하여(Multi Process) 하나의 작업(Task)를 처리할 수도 있습니다.

  • 장점
    각 프로세스는 독립적인 메모리 자원을 가지기 때문에 Multi Process로 동작하는 Task의 경우 하나의 프로세스가 강제종료 되더라도 프로그램 동작이 가능합니다.
  • 단점
    Context Switching 비용이 발생합니다.

Thread

스레드는 하나의 프로세스 보다 더 작은 작업 흐름의 단위를 가집니다. 한 프로세스는 최소 1개 이상의 스레드를 가집니다.

  • 장점
    메모리 자원을 공유하기 때문에 생성이 빠르고 정보 교환이 쉽고 메모리를 효율적으로 사용할 수 있습니다.
  • 단점
    동시에 여러 스레드가 하나의 자원을 참조하는 경우 동기화 문제가 발생합니다.
    한 프로세스 안의 여러 스레드 중 한 스레드가 오류가 발생하여 비정상적으로 종료된다면 다른 스레드도 모두 종료됩니다. 따라서 대부분의 프로그래밍 언어에서는 스레드의 강제 종료를 막고 있습니다.

Thread Safety

여러 스레드가 동시에 동작하여도 안전함을 보장한다는 의미입니다.
한 변수를 여러 스레드가 동시에 읽기/쓰기를 하여도 오류가 나지 않도록 동작한다는 의미입니다.

Context Switching

CPU가 여러 일을 완전하게 동시에 처리할 수는 없습니다. 여러 프로세스를 돌아가면서 처리하게 되는데 이 프로세스 전환 작업을 Context Switching이라고 합니다.

Multi

  • Multi Processing: 프로세서 하나 이상이 서로 협력하여 일을 처리하는 것입니다.

  • Multi Programming: 프로세서가 입출력 작업의 응답을 대기할 동안 다른 프로그램을 실행할 수 있도록 하는 것입니다.

  • Multi Tasking: 하나 이상의 프로그램이 프로세서 하나에서 운영체제의 스케쥴링에 따라 조금씩 번갈아가며 수행하는 것입니다. 정해진 시간동안 교대로 작업을 수행하는 것을 의미합니다.

  • Multi Thrad: 프로세스 하나에서 여러 개의 스레드를 동시에 실행하는 것입니다.

profile
Hi, my name is Eugene CHOI the Automotive MCU FW developer.

0개의 댓글