HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🐣
프론트엔드 데브코스 3기 교육생
/
📚
3기 스터디 가이드
/
📒
CS 학습 스터디
/
🧵
프로세스/쓰레드(승준)
🧵

프로세스/쓰레드(승준)

프로그램, 프로세스와 쓰레드란?

  • 프로그램: 컴퓨터가 실행할 수 있는 명령어들의 집합, 코드로 이루어진 파일.
  • 프로세스: 컴퓨터에서 실행 중인 프로그램, 즉 실행 상태로 들어간 프로그램을 말한다.
    • 각각의 프로세스는 독립된 메모리 공간을 할당 받는다.
      • 각 프로세스는 별도의 주소 공간에서 실행되며, 한 프로세스는 다른 프로세스의 변수나 자료구조에 접근할 수 없다.
      • 한 프로세스가 다른 프로세스의 자원에 접근하려면 프로세스 간의 통신(IPC, inter-process communication)을 사용해야 한다.
    • 프로세스는 각각 독립된 메모리 영역(Code, Data, Stack, Heap의 구조)을 할당받는다.
notion image
  • 쓰레드: 프로세스 안에서 실행되는 여러 흐름 단위
    • 스레드는 프로세스 내에서 각각 Stack만 따로 할당받고 Code, Data, Heap 영역은 프로세스의 것을 공유한다.
    • 같은 프로세스 안에 있는 여러 스레드들은 같은 힙 공간을 공유한다. 반면에 프로세스는 다른 프로세스의 메모리에 직접 접근할 수 없다.
    • 한 스레드가 프로세스 자원을 변경하면, 다른 이웃 스레드(sibling thread)도 그 변경 결과를 즉시 볼 수 있다.
notion image
 
notion image
 
notion image
 

PCB

프로세스의 문맥을 저장, 커널의 스택 공간에 위치(사용자가 접근할 수 있는 보호된 메모리 영역).
notion image
 
 
  • PCB들을 연결할 수 있는 Pointer
  • OS가 관리상 사용하는 정보
    • Process State(ready, running, wait 등), Process ID(프로세스만의 ID)
    • scheduling information priority(프로세스한테 CPU를 주기 위한 우선순위 관련 정보)
  • CPU 수행 관련 하드웨어 값(프로세스 문맥을 표시하기 위한 정보)
    • Program counter, registers(어떤 정보를 담고 일하고 있었는가)
  • 메모리 관련
    • code, data, stack의 위치 정보(물리적 메모리에서 어디에 위치하고 있는가)
  • 파일 관련
    • Open file descriptors(프로세스가 오픈하고 있는 파일은 어떤 것들이 있는지)
 
 

TCB

쓰레드의 문맥을 저장
notion image
  • 구성 요소
    • PC
    • registers
    • stack
 
  • 쓰레드가 동료 쓰레드와 공유하는 부분
    • Code
    • Data
    • Heap
 
notion image
 
notion image
 
 

발전 역사

  • 단일 프로세스 시스템: 한 번에 하나의 프로그램만 실행된다. 다른 프로그램을 실행시키려면 이 기존의 프로그램 실행을 끝내고 실행시켜야 했다.
    • 이 시스템의 단점: CPU 사용률이 좋지 않다. IO 작업이 끼어 있다면, 그 IO 작업이 끝나고 결과가 돌아올 때까지 기다리기 때문이다.
    • notion image
    • IO(input/output) 작업: 파일을 읽고 쓰거나(from HDD) 네트워크 통신을 하거나 입출력 장치(마우스, 키보드)와 데이터를 주고 받는 것.
notion image
 
  • 멀티 프로그래밍: 여러 개의 프로그램을 메모리에 올려놓고 동시에 실행시키자. 그리고 저 IO 작업이 발생할 때 그 남는 시간에 다른 프로그램을 올려서 실행시키자.
    • 목적: CPU 사용률을 극대화 시키는 것.
      • IO 작업이 발생하면 다른 프로세스가 CPU에서 실행된다.
    • 이 시스템의 단점: CPU 사용 시간이 길어지면 다른 프로세스는 계속 대기하게 된다.
notion image
 
  • 멀티 태스킹: 프로세스는 한번 CPU를 사용할 때 아주 짧은 시간(quantum, ms 단위)만 CPU에서 실행되도록 하자.
    • 목적: 프로세스의 응답 시간을 최소화 시키는 것.
      • 동시성: 이를 통해 아주 짧은 시간 내에 여러 프로세스가 번갈아가며 실행되므로, 마치 동시에 실행되는 듯한 느낌을 사용자는 받을 수 있다.
    • 하나의 프로세스가 CPU를 계속해서 독차지 하지 않도록 아주 짧게 나누고 번갈아가면서 프로세스에게 CPU 주도권을 주는 것.
    • 이 시스템의 아쉬움들
      • 하나의 프로세스가 동시에 여러 작업을 수행하지 못한다.
      • 프로세스의 컨텍스트 스위칭은 무거운 작업이다.
      • 프로세스끼리 데이터 공유가 까다롭다.
        • 한 예로 Message Passing이 있는데 커널의 한 공간에 메시지 통신용 메모리를 할당하고, 이 구간을 통해 서로 데이터를 공유하는 것.
          • 따로 데이터 전달용 메모리를 마련해둬야 하므로 메모리 낭비 발생
          • 공유 시 커널 모드로 들어가니 속도가 느려질 수 있다.
      • 이제 싱글 코어가 아니라 듀얼 코어로 발전했는데 이를 더 효율적으로 사용하고 싶어짐.(컨텍스트 스위칭 비용을 줄이기 위함)
notion image
notion image
 
  • 멀티 쓰레딩
    • 목적: 하나의 프로세스가 동시에 여러 작업을 실행시킬 수 있도록 해주는 것.
    • 쓰레드
      • 프로세스는 한 개 이상의 쓰레드를 가질 수 있다.
      • CPU에서 실행되는 단위(unit of execution), 이제 프로세스가 아니라 쓰레드가 단위가 된 것임.
      • 같은 프로세스의 쓰레드들끼리는 컨텍스트 스위칭이 가볍다.
      • 쓰레드들은 자신들이 속한 프로세스의 메모리 영역을 공유한다. (Heap, Data, Code)
        • 허나 스택은 쓰레드 각각 가지고 있다. 이 스택은 공유하지 않는다.
        notion image
        PC, program counter(rip), 다음 명령어를 수행할 주소를 가르키는 포인터
    • CPU가 싱글 코어라면? → 멀티 태스킹
    • notion image
    • CPU가 듀얼 코어라면? → 멀티 쓰레딩(병렬로 진짜 동시에 두 개의 쓰레드를 실행한다)
    • notion image
 
  • 멀티 프로세싱: 두 개 이상의 프로세서나 코어를 활용하는 시스템, 이제 병렬성이 가능해진다.
notion image
cpu가 여러 쓰레드를 담당하면 멀티 태스킹
프로세스가 여러 쓰레드를 가지고 있으면 멀티 쓰레딩
cpu에 코어가 여러 개이면 멀티 프로세싱

여담

구글은 1개의 탭이 꺼져도 다른 것에 영향이 가지 않는다. 반면 IE는 1개의 탭이 꺼지면 다 꺼진다.
구글 탭들 → 멀티 프로세스
IE 탭들 → 멀티 쓰레드
 

참고

C (프로그래밍 언어) - 위키백과, 우리 모두의 백과사전
패러다임 명령형 프로그래밍 ( 절차적 프로그래밍), 구조적 프로그래밍 설계자 데니스 리치 개발자 데니스 리치, 벨 연구소 발표일 1972년 최근 버전 C17 최근 버전 출시일 2018년 6월(4년 전) 미리보기 버전 C2x ( N2731) 미리보기 버전 출시일 2021년 10월 18일(15개월 전) [1] 파일 확장자 .c,.h K&R, GCC, 클랭, 인텔 C, 마이크로소프트 비주얼
C (프로그래밍 언어) - 위키백과, 우리 모두의 백과사전
https://ko.wikipedia.org/wiki/C_(%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D_%EC%96%B8%EC%96%B4)
C (프로그래밍 언어) - 위키백과, 우리 모두의 백과사전
[10분 테코톡] 🌷 코다의 Process vs Thread
🙋‍♀️ 우아한테크코스의 크루들이 진행하는 10분 테크토크입니다. 🙋‍♂️ '10분 테코톡'이란 우아한테크코스 과정을 진행하며 크루(수강생)들이 동료들과 학습한 내용을 공유하고 이야기하는 시간입니다. 서로가 성장하기 위해 지식을 나누고 대화하며 생각해보는 시간으로 자기 주도적인 성장을 지향하는 우아한테크코스의 문화 중 하나입니다. 🌕우아한테크코스란 🌕 우아한테크코스는 일반 사용자용 서비스를 개발하는 회사가 필요로 하는 역량을 가진 프로그래머를 양성하기 위한 교육입니다.
[10분 테코톡] 🌷 코다의 Process vs Thread
https://www.youtube.com/watch?v=1grtWKqTn50
[10분 테코톡] 🌷 코다의 Process vs Thread
프로세스, 스레드, 멀티태스킹, 멀티스레딩, 멀티프로세싱, 멀티프로그래밍, 이 모든 것을 한 방에 깔끔하게 설명합니다!! 콘텐츠 퀄리티 만족하실 겁니다!
프로세스 #스레드 #멀티태스킹 #멀티스레딩 #멀티프로세싱 #멀티프로그래밍 개발자 면접에서 단골로 나오는 내용이기도 하죠. 스레드와 프로세스의 개발에서의 중요성은 두 말하면 입 아픕니다. 반드시 잘 이해하고 있어야 하는 개념이죠! 멀티태스킹, 멀티스레딩, 멀티프로세싱, 멀티프로그래밍.. 비슷한듯 비슷해도 조금다른 너~어어~~ 이 영상에 어떤 차이가 있는지 깔끔하게 담아봤습니다! 꼭 보세요! 두 번 보세요!!
프로세스, 스레드, 멀티태스킹, 멀티스레딩, 멀티프로세싱, 멀티프로그래밍, 이 모든 것을 한 방에 깔끔하게 설명합니다!! 콘텐츠 퀄리티 만족하실 겁니다!
https://www.youtube.com/watch?v=QmtYKZC0lMU
프로세스, 스레드, 멀티태스킹, 멀티스레딩, 멀티프로세싱, 멀티프로그래밍, 이 모든 것을 한 방에 깔끔하게 설명합니다!! 콘텐츠 퀄리티 만족하실 겁니다!
Process와 Thread의 차이
도커 이야기를 하면서 Process에 대해 다뤘습니다. 그렇다면 Thread도 더불어 알아 두고 둘의 차이를 이해하는 것이 매우 중요합니다. 해서 간단히 그 차이를 설명했습니다. 조만간 컴퓨터 구조와 운영체제론을 다룰 예정입니다. 그 때 더 자세히 하겠지만 개념적으로는 이 영상에서 다룬 수준을 알면 충분하리라 생각합니다. 오늘은 2022년 4월 22일 금요일 입니다. 불금 잘보내시기 바랍니다.
Process와 Thread의 차이
https://www.youtube.com/watch?v=x-Lp-h_pf9Q
Process와 Thread의 차이
[OS] 프로세스와 스레드의 차이 - Heee's Development Blog
Step by step goes a long way.
[OS] 프로세스와 스레드의 차이 - Heee's Development Blog
https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html
[OS] 프로세스와 스레드의 차이 - Heee's Development Blog
linux
torvalds • Updated Jan 29, 2023
pintos-kaist
casys-kaist • Updated Jan 28, 2023