본문 바로가기
CS

Program, Process, Thread

by 2__50 2023. 1. 19.
공부한 내용을 정리한 글입니다 
내용에 오류가 있거나 더 좋은 의견이 있다면 댓글로 남겨주세요.
배움에 큰 도움이 됩니다. 🖋

 

Program, Process, Thread 


Program과 Process

 

Program


  • 실행 가능한 파일(실행 가능하지만 아직 실행중이지 않은 파일)
  • 어떤 작업을 처리할 수 있도록 올바른 수행 절차를 표현해 놓은 명령어 집합
  • 크롬, 엑셀, 카카오톡 등

 

Process


 

  • 실행중인 Program(작업)
  • 운영체제로부터 메모리를 할당 받은 Program
  • 각 Process는 전용 메모리 영역을 사용한다.
  • 기본적으로 다른 Process의 변수나 자료구조를 공유하지 않는다. 협력이 필요할 경우 Process 간의 통신(Inter Process Communication)을 통해 접근한다

https://developer.chrome.com/blog/inside-browser-part1

 

Code : 프로그램 실행을 위한 코드
Data : 전역변수나 정적변수 할당
Heap : 변수를 선언해 문자, 객체 등을 할당 할 때 그것이 저장되는 공간. 동적으로 할당된 변수를 저장
Stack : 함수의 실행 순서, 함수 종료 후 돌아갈 곳 등에 대한 정보를 할당

 

Thread


- Process 안에서 실행되는 흐름의 단위

- Process에 할당된 메모리를 이용해 실행 된다

- 기본적으로 Process 하나에 Thread 하나(Thread가 여러개인 경우도 존재)

- 하나의 Program을 위해 일하기 때문에 공통의 데이터 자원(Code, Data, Heap)을 Process에서 공유해 접근하고 업데이트 한다. 그러나 일의 흐름을 기억하는 Stack은 Thread마다 개별 할당된다.

 


Chrome Browser

https://chromium.googlesource.com/playground/chromium-org-site/+/refs/heads/main/developers/design-documents/multi-process-architecture/index.md

 

  • 크롬은 하나의 Tab에 하나의 Renderer Process 를 할당한다. 그덕에 음악을 듣던 Tab에 오류가 발생해 강제 종료 되어도
    검색, 구글 스프레드시트 등을 이용하던 다른 Tab은 정상 작동 할 수 있다. Tab 갯수가 메모리의 수용 범위를 넘어갈 경우 하나의 Renderer에서 합쳐서 운영되기도 한다.
  • 다른 process들과 긴밀하게 연결되어 크롬 브라우저의 전체적인 내용을 담당하는 Browser process, 인터넷 통신을 하는 Network process, HTML을 받아 실제 화면을 렌더링하는 Renderer pocess 등으로 구성되었다.

https://developer.chrome.com/blog/inside-browser-part2

 


Javascript

위에서부터 코드를 한 줄씩 읽으며 한 번에 하나의 작업만 시행하는 Single-Thread 방식이다(동기적). 그러나 Javascript가 돌아가는 Browser 환경은 Multi-Thread 이므로 런타임에 이벤트 루프를 이용해 비동기 작업이 가능하다.


동시성

Program 하나가 여러 작업을 시분할로 조금씩 돌아가며 진행하는 것. 시분할사용. 작업의 전환 속도가 굉장히 빠르기 때문에 사람들이 느끼기에는 마치 동시에 진행되는 것처럼 보인다.


 

 

 

참고


https://chromium.googlesource.com/playground/chromium-org-site/+/refs/heads/main/developers/design-documents/multi-process-architecture/index.md 

 

Chromium - Multi-process Architecture

Multi-process Architecture This document describes Chromium's high-level architecture. Problem It‘s nearly impossible to build a rendering engine that never crashes or hangs. It’s also nearly impossible to build a rendering engine that is perfectly sec

chromium.googlesource.com

 

https://developer.chrome.com/blog/inside-browser-part1/

 

Inside look at modern web browser (part 1) - Chrome Developers

Learn how browser turn your code into functional website from high-level architecture to the specifics of the rendering pipeline.

developer.chrome.com

https://developer.chrome.com/blog/inside-browser-part2/

 

Inside look at modern web browser (part 2) - Chrome Developers

Learn how browser handles navigation request.

developer.chrome.com

https://kicksky.tistory.com/105

 

크롬 브라우저로 프로세스와 스레드 이해하기

요즘 CS 관련해서 프로세스와 스레드를 설명하는 여러 글들을 읽었는데, 좀 추상적인 개념이다보니 단박에 이해되지 않았다. 프로세스는 "운영체제가 시스템의 자원을 할당하는 작업의 단위"이

kicksky.tistory.com

https://prohannah.tistory.com/59

 

자바스크립트는 정말 싱글스레드일까?

자바스크립트는 싱글 스레드(Single thread) 언어라고 알려져 있다. 엄밀히 말하자면 자바스크립트의 메인 스레드가 싱글 스레드인 것이다. 하지만 크롬과 같은 웹 브라우저가 자바스크립트를 실행

prohannah.tistory.com

https://d2.naver.com/helloworld/2922312

https://d2.naver.com/helloworld/9274593

https://velog.io/@wonhee010/Process-vs-Thread-feat.-크로미움-브라우저

 

Process vs Thread (feat. 크로미움 브라우저)

Process와 Thread의 개념과 특징 그리고 차이점을 알아봤다. 또한, 크로미움 브라우저에서 Process와 Thread를 어떻게 사용하는지 확인해봤다.

velog.io

 

댓글