SlideShare a Scribd company logo
1 of 30
프로세스와 스레드
2021.06.15
이용우
항해톡 1회
• 하드웨어 개발자로 1년 6개월간 근무
• 세종사이버대학교정보보안학과2학년
• 삼성전자 소액주주
• 평범한 26살 청년
누구세요?
이용우
누구세요?
• NAS를 가지고 노는 걸 좋아하고요
• 오토핫키 툴 만들기를 좋아하고 • 만화 보는걸 좋아합니다.
1. 프로그램이 뭐에요?
2. 프로세스가 뭐에요?
3. 스레드가 뭐에요?
4. 멀티 프로세스는 뭐에요?
5. 멀티 스레드는 뭐에요?
6. 그래서요?
무슨 발표 해요?
프로그램이 뭐에요?
사전적 의미
[ Program ]
• 어떤 작업을 위해 실행할 수 있는 파일
• 사용자의 명령에 반응하는 소프트웨어
• 컴퓨터를 실행시키기 위해 차례대로 작성된 명령어의 모음
프로그램이 뭐에요?
프로그래머가 컴퓨터에 시킨 명령 및 작업들의 집합체
프로그램이 뭐에요?
프로그램의 종류
시스템 프로그램
• 컴퓨터 시스템과 하드웨어들을 제어 및 관리하는 프로그램
• 운영체제의 파일 관리, 프로그램 적재 및 통신을 수행한다.
프로그램이 뭐에요?
프로그램의 종류
응용프로그램
• 실행하는 동안 지속해서 컴퓨터의 성능을 소비하며 특정한 문제
나 업무를 해결하기 위한 목적으로 만들어진 프로그램
• 가장 대표적인 프로그램이자 소프트웨어
프로그램이 뭐에요?
소프트웨어란?
• 컴퓨터 프로그램과 프로그램의 개발, 운용, 유지 보수에 필요한 관
련 정보 일체이다.
• 컴퓨터 내부에서 구동되는 프로그램들을 포괄적으로 지칭한다.
프로세스가 뭐에요?
사전적 의미
[ Process ]
• 컴퓨터에서 CPU에 의해 연속적으로 처리 및 실행되고 있는 컴퓨
터 프로그램
• 운영체제가 관리하는 실행 단위
프로세스가 뭐에요?
프로세스란 실행 중인 프로그램이다.
프로세스가 뭐에요?
프로세스의 특징
• 프로세스는 각각 독립된 메모리 영역을 할당받는다.
• 기본적으로 프로세스는 최소 1개의 메인 스레드를 가지고 있다.
• 각 프로세스는 별도의 주소 공간에서 실행되며, 한 프로세스는 다
른 프로세스의 변수나 자료구조에 접근할 수 없다.
• 프로세스의 생성은 많은 시간과 자원을 소비한다.
프로세스가 뭐에요?
프로세스의 상태
• 준비 상태 (Ready State)
프로세스가 뭐에요?
프로세스의 상태
• 실행 상태 (Running State)
프로세스가 뭐에요?
프로세스의 상태
• 대기 상태 (Waiting)
프로세스가 뭐에요?
프로세스와 프로그램의 차이
• 프로그램 자체로는 생명이 없다.
• 프로그램은 보조 기억장치에 존재하며 실행되기를 기다리는 명
령어와 데이터의 묶음이다.
• 프로그램의 명령어와 정적 데이터가 자원을 할당받고 메모리에
적재되면 프로세스가 된다.
스레드가 뭐에요?
사전적 의미
[ Thread ]
• 프로세스 내에서 실행되는 여러 흐름의 단위
• 프로세스의 특정한 수행 경로
• 프로세스가 할당받은 자원을 이용하는 실행의 단위
스레드가 뭐에요?
스레드란 프로세스 내에서의 작업 단위이다.
스레드가 뭐에요?
특징
• 동일한 프로세스를 구성하는 스레드들은 할당된 메모리, 자원 등
을 공유할 수 있다.
• 하나의 프로세스는 여러 개의 스레드로 구성이 가능하다.
• 프로세스와 동일한 실행, 준비, 대기 상태를 가진다.
스레드가 뭐에요?
스레드의 장점
• 스레드는 프로세스보다 생성 및 종료 시간, 스레드간 전환 시간이
짧다.
• 스레드는 프로세스의 메모리, 자원 등을 공유하므로 상호 간의 통
신이 가능하다.
• 하나의 프로세스를 여러 개의 스레드로 생성하여 병행성을 향상
시킬 수 있다.
스레드가 뭐에요?
프로세스와 스레드 요약
싱글 프로세스
싱글 스레드
싱글 프로세스
멀티 스레드
멀티 프로세스
싱글 스레드
멀티 프로세스
멀티 스레드
멀티 프로세스는 뭐에요?
사전적 의미
[ Multi Process ]
• 하나의 응용프로그램을 여러 개의 프로세스로 구성하여 각 프로
세스가 하나의 작업을 처리하도록 하는 것이다.
멀티 프로세스는 뭐에요?
특징
• 프로세스 간 공유하는 자원이 존재하지 않아, 동일한 자원에 동시
접근해서 발생하는 Dead lock 문제가 발생하지 않는다.
• 부모-자식 관계이지만, 각각의 독립된 메모리 영역을 가진다.
• 여러 개의 자식 프로세스 중 하나에게 문제가 발생하면 그 자식 프
로세스 이외의 다른 프로세스로 영향이 확산되지 않는다.
멀티 스레드는 뭐에요?
사전적 의미
[ Multi Thread ]
• 하나의 응용프로그램을 여러 개의 스레드로 구성하고 각 스레드
로 하나의 작업을 처리하도록 하는 것이다.
멀티 스레드는 뭐에요?
특징
• 프로세스를 생성하여 자원을 할당하는 시스템 콜이 줄어들어 자
원을 효율적으로 관리할 수 있다.
• 스레드간 데이터를 주고받는 것이 간단해지고 시스템 자원 소모
가 줄어들게 된다.
• 스레드는 프로세스 내의 Stack 영역을 제외한
모든 메모리를 공유하기 때문에 통신의 부담이
적다.
멀티 스레드는 뭐에요?
하지만
• 스레드 간의 자원은 공유가 가능하기 때문에 자원의 동시접근 발
생오류 DeadLock이 발생할 수 있다.
• 논리 구조 설계 및 디버깅이 어려워 구현난이도가 증가한다.
• 하나의 스레드에 문제가 발생하면 전체 프로세스가 영향을 받는
다.
그래서요?
안정성 vs 효율성
감사합니다
Git : https://github.com/archepro84
slideshare : https://www.slideshare.net/LeeYoungWoo3
Blog : https://custom-li.tistory.com/
[길벗 출판사] 정보처리 기사 필기
세종사이버대학교컴퓨터개론
https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html
https://kosaf04pyh.tistory.com/38
참고자료

More Related Content

Similar to Process and Thread

커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님NAVER D2
 
운영체제 인트로
운영체제 인트로운영체제 인트로
운영체제 인트로Junnie Jobs
 
2014.04.24.nrise 개발환경
2014.04.24.nrise 개발환경2014.04.24.nrise 개발환경
2014.04.24.nrise 개발환경Moon Soo Kim
 
꿀밋업시리즈3탄_Spring Boot를 활용한 마이크로서비스 개발과 페어프로그래밍(TDD)
꿀밋업시리즈3탄_Spring Boot를 활용한 마이크로서비스 개발과 페어프로그래밍(TDD)꿀밋업시리즈3탄_Spring Boot를 활용한 마이크로서비스 개발과 페어프로그래밍(TDD)
꿀밋업시리즈3탄_Spring Boot를 활용한 마이크로서비스 개발과 페어프로그래밍(TDD)VMware Tanzu Korea
 
WHAT / WHY / HOW WE’RE ENGINEERING AT SMARTSTUDY
WHAT / WHY / HOW WE’RE ENGINEERING AT SMARTSTUDYWHAT / WHY / HOW WE’RE ENGINEERING AT SMARTSTUDY
WHAT / WHY / HOW WE’RE ENGINEERING AT SMARTSTUDYHyun-woo Park
 
[스마트스터디]스마트스터디는 무엇을 / 왜 / 어떻게 만들어 왔는가
[스마트스터디]스마트스터디는 무엇을 / 왜 / 어떻게 만들어 왔는가[스마트스터디]스마트스터디는 무엇을 / 왜 / 어떻게 만들어 왔는가
[스마트스터디]스마트스터디는 무엇을 / 왜 / 어떻게 만들어 왔는가smartstudy_official
 
UI/UX 개선을 위한 빠른 프로토타이핑
UI/UX 개선을 위한 빠른 프로토타이핑UI/UX 개선을 위한 빠른 프로토타이핑
UI/UX 개선을 위한 빠른 프로토타이핑Dongsik Yang
 
소프트웨어 개발 프로세스 배경 설명
소프트웨어 개발 프로세스 배경 설명소프트웨어 개발 프로세스 배경 설명
소프트웨어 개발 프로세스 배경 설명Andrew Sungjin Kim
 
[D2CAMPUS] Tech meet up ; iOS 개발편
[D2CAMPUS] Tech meet up ; iOS 개발편[D2CAMPUS] Tech meet up ; iOS 개발편
[D2CAMPUS] Tech meet up ; iOS 개발편NAVER D2
 
Nodejs 발표자료
Nodejs 발표자료Nodejs 발표자료
Nodejs 발표자료shanka2
 
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019devCAT Studio, NEXON
 
OpenSource Big Data Platform : Flamingo Project
OpenSource Big Data Platform : Flamingo ProjectOpenSource Big Data Platform : Flamingo Project
OpenSource Big Data Platform : Flamingo ProjectBYOUNG GON KIM
 
OpenSource Big Data Platform - Flamingo v7
OpenSource Big Data Platform - Flamingo v7OpenSource Big Data Platform - Flamingo v7
OpenSource Big Data Platform - Flamingo v7BYOUNG GON KIM
 
OpenSource Big Data Platform - Flamingo 소개와 활용
OpenSource Big Data Platform - Flamingo 소개와 활용OpenSource Big Data Platform - Flamingo 소개와 활용
OpenSource Big Data Platform - Flamingo 소개와 활용BYOUNG GON KIM
 
2013 공개SW데이 발표 - 구름IDE의 발자취와 미래
2013 공개SW데이 발표 - 구름IDE의 발자취와 미래2013 공개SW데이 발표 - 구름IDE의 발자취와 미래
2013 공개SW데이 발표 - 구름IDE의 발자취와 미래Sung-tae Ryu
 
제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기
제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기
제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기NAVER D2
 

Similar to Process and Thread (20)

커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님
 
운영체제 인트로
운영체제 인트로운영체제 인트로
운영체제 인트로
 
os question
os questionos question
os question
 
2014.04.24.nrise 개발환경
2014.04.24.nrise 개발환경2014.04.24.nrise 개발환경
2014.04.24.nrise 개발환경
 
꿀밋업시리즈3탄_Spring Boot를 활용한 마이크로서비스 개발과 페어프로그래밍(TDD)
꿀밋업시리즈3탄_Spring Boot를 활용한 마이크로서비스 개발과 페어프로그래밍(TDD)꿀밋업시리즈3탄_Spring Boot를 활용한 마이크로서비스 개발과 페어프로그래밍(TDD)
꿀밋업시리즈3탄_Spring Boot를 활용한 마이크로서비스 개발과 페어프로그래밍(TDD)
 
WHAT / WHY / HOW WE’RE ENGINEERING AT SMARTSTUDY
WHAT / WHY / HOW WE’RE ENGINEERING AT SMARTSTUDYWHAT / WHY / HOW WE’RE ENGINEERING AT SMARTSTUDY
WHAT / WHY / HOW WE’RE ENGINEERING AT SMARTSTUDY
 
[스마트스터디]스마트스터디는 무엇을 / 왜 / 어떻게 만들어 왔는가
[스마트스터디]스마트스터디는 무엇을 / 왜 / 어떻게 만들어 왔는가[스마트스터디]스마트스터디는 무엇을 / 왜 / 어떻게 만들어 왔는가
[스마트스터디]스마트스터디는 무엇을 / 왜 / 어떻게 만들어 왔는가
 
DevOps
DevOpsDevOps
DevOps
 
UI/UX 개선을 위한 빠른 프로토타이핑
UI/UX 개선을 위한 빠른 프로토타이핑UI/UX 개선을 위한 빠른 프로토타이핑
UI/UX 개선을 위한 빠른 프로토타이핑
 
소프트웨어 개발 프로세스 배경 설명
소프트웨어 개발 프로세스 배경 설명소프트웨어 개발 프로세스 배경 설명
소프트웨어 개발 프로세스 배경 설명
 
[D2CAMPUS] Tech meet up ; iOS 개발편
[D2CAMPUS] Tech meet up ; iOS 개발편[D2CAMPUS] Tech meet up ; iOS 개발편
[D2CAMPUS] Tech meet up ; iOS 개발편
 
Nodejs 발표자료
Nodejs 발표자료Nodejs 발표자료
Nodejs 발표자료
 
컴퓨터개론12
컴퓨터개론12컴퓨터개론12
컴퓨터개론12
 
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
 
Flamingo project v4
Flamingo project v4Flamingo project v4
Flamingo project v4
 
OpenSource Big Data Platform : Flamingo Project
OpenSource Big Data Platform : Flamingo ProjectOpenSource Big Data Platform : Flamingo Project
OpenSource Big Data Platform : Flamingo Project
 
OpenSource Big Data Platform - Flamingo v7
OpenSource Big Data Platform - Flamingo v7OpenSource Big Data Platform - Flamingo v7
OpenSource Big Data Platform - Flamingo v7
 
OpenSource Big Data Platform - Flamingo 소개와 활용
OpenSource Big Data Platform - Flamingo 소개와 활용OpenSource Big Data Platform - Flamingo 소개와 활용
OpenSource Big Data Platform - Flamingo 소개와 활용
 
2013 공개SW데이 발표 - 구름IDE의 발자취와 미래
2013 공개SW데이 발표 - 구름IDE의 발자취와 미래2013 공개SW데이 발표 - 구름IDE의 발자취와 미래
2013 공개SW데이 발표 - 구름IDE의 발자취와 미래
 
제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기
제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기
제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기
 

Process and Thread