코딩요
쉬운코드 기술 블로그
코딩요
전체 방문자
오늘
어제
  • 분류 전체보기 (54)
    • 개발자로 성장하기 (11)
    • 컴공 (25)
      • 운영체제 (12)
      • 알고리즘 (1)
      • 데이터베이스 (11)
      • 네트워크 (1)
    • 쉬운코드 (15)
      • 쉬운코드 소개 (6)
      • 쉬운코드 영상 보는 법 (3)
      • 쉬운코드 정정 보고서 (1)
      • 쉬운코드 스토리 (4)
      • 기타 이것저것 (1)
    • 면접 tip (3)

공지사항

  • 아이폰 앱에서는 슈퍼땡스 보내지 말아주세요ㅠㅠ
  • 쉬운코드 멤버십을 소개합니다
  • 쉬운코드 운영 철학

인기 글

hELLO · Designed By 정상우.
글쓰기 / 관리자
코딩요

쉬운코드 기술 블로그

프로세스는 최소한 하나의 스레드를 가진다 (맥북에서 확인하기)
컴공/운영체제

프로세스는 최소한 하나의 스레드를 가진다 (맥북에서 확인하기)

2022. 10. 9. 18:12

 

오늘날의 컴퓨터에서 프로그램 동작 방식

 

 

프로그램이 컴퓨터에서 실행되면 그걸 프로세스라고 부른다

 

그 프로세스는 최소 한 개의 스레드를 가진다

 

스레드는 CPU 코어에서 실제로 실행되는 실행 단위다

 

오늘은 실제로 그러한지 맥북에서 테스트해보는 내용이다

 

 

 


 

 

맥북에서 테스트를 위한 프로그램 작성

 

 

 

C언어로 아주 간단한 프로그램을 아래처럼 작성했다

 

// 파일 이름 : hello.c

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

int main(void)
{
    printf("Hello, world!\n");  // 화면에 출력
    sleep(10);                  // 10초 sleep

    return 0;                   // 정상적인 종료를 의미
}

 

 

이 코드 어디에서도 명시적으로 스레드를 만드는 코드는 없다

 

단지 프로그램을 실행하면 호출되는 main() 함수가 있을 뿐이다

 

 

 

위의 코드 파일 이름을 hello.c 라고 했을 때

 

이 프로그램이 컴퓨터에서 실행될 수 있게끔 아래의 명령어를 통해 컴파일 해주자

 

gcc hello.c -o hello

 

 

 

그러면 실행 가능한 프로그램이 파일 형태의 hello 라는 이름으로 생성된다

 

이제 hello 프로그램을 아래의 명령어로 실행해 보자

 

./hello

 

 

 

그러면 Hello, world! 를 출력하고 10초 동안 가만히 기다린 후에 프로그램이 종료된다

 

프로그램 종료 후의 터미널 창은 아래와 같다

 

 

 


 

 

이 프로그램이 실행 중일 때 스레드를 가지고 있을까?

 

 

이 실험을 하기 위해 ./hello 를 통해 프로그램이 실행되는 동안

 

 

다른 터미널 창을 하나 열고 아래의 명령어를 수행해 보자

 

이 명령어는 hello 라는 이름의 프로세스에 속한 스레드들 정보를 가져오는 명령어다

 

pgrep hello | xargs ps -M

 

 

 

이 명령어의 수행 결과는 아래와 같다

 

 

 

USER 이름만 편집해서 쉬운코드로 바꿨고 나머지는 터미널에서 캡처한 결과를 그대로 보여준다

 

 

 

이 결과를 통해 알 수 있는 것은

 

hello 프로그램이 실행되는 동안, 즉, 프로세스가 동작하는 동안

 

해당 프로세스에는 스레드도 하나가 있다는 것을 알 수 있다 (두 번째 라인이 해당 스레드 정보를 표현)

 

(참고로 hello 프로세스의 프로세스 ID는 18575 임을 알 수 있다)

 

 

 

 


 

 

 

정리하면

 

기본적으로 프로세스는 반드시 스레드를 하나 가진다

 

그래야만 한다

 

왜냐하면 오늘날 컴퓨터에서는 스레드가 CPU 코어에서 실제로 실행되는 실행 단위이기 때문이다

 

 

 

 

 

 

 

 

쉬운코드는 본질에 충실합니다

 

 

 

 

 

👉 " 프로세스와 스레드 차이 많이 헷갈려 하는 포인트 " 글 보러 가기

 

👉 " 프로세스 스레드 영상 " 보러 가기 

 

👉 macOS에서 pgrep, xargs, ps 명령어를 알고 싶다면?

 

 
저작자표시 비영리 변경금지 (새창열림)
    '컴공/운영체제' 카테고리의 다른 글
    • [OS] 멀티태스킹(multitasking)이란?
    • 프로세스와 스레드의 관계를 바라보는 두 가지 세계관
    • 프로세스와 스레드 차이 많이 헷갈려 하는 포인트
    • CPU 도움 없이는 스레드 동기화가 어려운 이유
    코딩요
    코딩요
    8년차 백엔드 개발자가 이해하기 쉽게 설명합니다. 배워서 남주는 블로그! 이해하기 쉬운 기술 블로그! 쉬운코드입니다 :)

    티스토리툴바