본문 바로가기
운영체제

운영체제 Chatper 4 4-1 Thread

by PlusUltraCode 2024. 7. 18.

프로세스와 스레드의 차이

1. 프로세스 (Process)

  • 정의: 실행 중인 프로그램의 인스턴스.
  • 생성 방법: fork() 함수를 사용하여 부모 프로세스에서 자식 프로세스를 생성.
  • 특징:
    • 부모 프로세스의 모든 코드를 복사하여 자식 프로세스를 생성.
    • 프로세스는 독립적인 실행 단위이며, 서로 메모리를 공유하지 않음.
    • 각 프로세스는 고유한 코드, 데이터, PCB, 스택을 가짐.
    • 운영 체제는 프로세스의 독립성을 유지하며, 같은 프로그램에서 생성된 프로세스인지 여부는 중요하지 않음.

2. 스레드 (Thread)

  • 정의: 프로세스 내에서 실행되는 독립적인 실행 단위.
  • 생성 방법: 프로세스 내에서 여러 스레드를 생성하여 동시 실행.
  • 특징:
    • 동일한 프로세스 내에서 스레드들은 코드, 데이터, PCB, 스택을 공유.
    • 스레드는 프로세스 내에서 여러 함수들을 동시에 실행할 수 있게 함.
    • 멀티스레딩 환경에서는 하나의 프로세스 안에 여러 스레드가 존재하며, 운영 체제는 각 스레드를 독립적인 실행 단위로 처리.

fork() 함수 사용 예시

#include <unistd.h>
#include <stdio.h>

int main() {
    fork(); // 자식 프로세스를 생성
    for(int i = 0; i < 10; i++) {
        sleep(1);
        printf("%d\n", i); // 부모와 자식 프로세스가 각각 0부터 9까지 출력
    }
    return 0;
}
  • 이 프로그램은 시작하자마자 fork()를 통해 자식 프로세스를 생성.
  • 부모와 자식 프로세스는 각각 독립적으로 0부터 9까지 출력.

프로그램과 프로세스, 프로세스와 프로그램의 관계

  • 프로그램과 프로세스
    • 하나의 프로그램은 여러 개의 프로세스를 가질 수 있음.
  • 프로세스와 프로그램
    • 하나의 프로세스는 여러 프로그램을 실행할 수 있음.
    • 프로세스는 프로그램의 실행 인스턴스이므로, 특정 프로그램에 한정되지 않음.

멀티스레딩 (MultiThreading)

  • 특징:
    • 하나의 프로세스 내에서 여러 스레드가 실행.
    • 스레드들은 동일한 프로세스의 자원을 공유하며, 동시에 여러 작업을 수행.
    • 운영 체제는 각 스레드를 독립적인 실행 단위로 처리하므로, 동일 프로세스 내의 스레드인지 여부는 중요하지 않음.
  • 예시:
    • 이 프로그램은 두 개의 스레드를 생성하여 각각 0부터 9까지 숫자를 출력.
  •  
#include <pthread.h>
#include <stdio.h>
#include <unistd.h>

void* print_numbers(void* arg) {
    for(int i = 0; i < 10; i++) {
        sleep(1);
        printf("%d\n", i);
    }
    return NULL;
}

int main() {
    pthread_t thread1, thread2;
    pthread_create(&thread1, NULL, print_numbers, NULL);
    pthread_create(&thread2, NULL, print_numbers, NULL);

    pthread_join(thread1, NULL);
    pthread_join(thread2, NULL);
    return 0;
}

요약

  • 프로세스는 독립적인 실행 단위로, 각 프로세스는 메모리를 공유하지 않으며 독립적으로 실행됨.
  • 스레드는 프로세스 내의 독립적인 실행 단위로, 동일 프로세스 내의 다른 스레드와 메모리를 공유함.
  • 멀티스레딩은 하나의 프로세스 내에서 여러 스레드를 생성하여 동시에 여러 작업을 수행하는 방법.

'운영체제' 카테고리의 다른 글

운영체제 Chatper 4 4-3 Thread  (0) 2024.07.18
운영체제 Chatper 4 4-2 Thread  (1) 2024.07.18
운영체제 Chatper 3 3-3 Process  (0) 2024.06.25
운영체제 Chapter 3-1 Process  (0) 2024.06.25
운영체제 Chapter3 3-2 Process  (0) 2024.06.25