DOM 5(Process, Thread)

Glass·2022년 10월 10일
0

프로세스?

  • 프로세스는 컴퓨터위에서 즉 운영체제 위에서 독립적으로 메모리에서 실행되고 있는 프로그램을 말한다.
  • 음악 재생프로그램, 사진 뷰어 프로그램 등 여러가지 프로그램들은 각각의 프로세스를 가지고 있다.

----OS-----
[A프로그램], [B 프로그램] , [C 프로그램]

  • 운영체제 위에 3개의 프로세스가 동작하고 있다.

  • 각각의 프로세스는 메모리 위에서 서로 독립적으로 실행이 된다.

  • A 프로세스가 문제가 생긴다면 A프로세스만 죽는다.
    ex) 안드로이드 휴대폰 에서 음악재생 프로그램에 문제가 생겨서 죽어도 카톡 프로그램엔 영향이 없다.

  • 각각의 프로세스는 저마다 리소스 자원들이 정해져 있다.

  • 즉 프로세스 마다 할당된 메모리나 데이터들이 저장되어 있다.

Code : 프로그램을 실행하기 위한 코드

Stack : 함수들이 어떤 순서로 실행되어야 하는지 이 함수가 끝나면 어디로 가야하는지에 대한 정보를 저장하고 있다.

Heap : 동적으로 할당된 변수를 저장

Data : 전역 변수나 정적 변수

동적 변수와 전역 변수?
c 언어 기준

  • 기본적인 동적(dynamic) 변수로써 변수 선언과 동시에 메모리에 할당되며 변수 사용이 모두 끝남과 동시에 메모리가 해제
  • 정적(static) 변수는 전역변수와 동일하게 컴파일시 메모리에 할당되며, 프로그램 종료시 메모리가 해제된다.
  • 정적 변수는 전역변수처럼 변수의 범위를 벗어나는 경우에도 값을 유지하는 속성을 가지고 있다.
  • 각각의 프로세스는 자기들에게 필요한 코드와 동작하고 있는 순서를 기억하고 있는 Stack
  • 데이터들이 들어있는 Heap과 Data들이 있다.

쓰레드?

  • 쓰레드는 한 프로세스 안에서 여러 개가 동작할 수 있다.

  • 쓰레드는 각각 저마다 해야 되는 업무를 배정받는다.

  • 쓰레드들마다 자신의 역할을 수행한다.

  • 쓰레드는 자신들이 해야 하는 일(함수)호출을 기억해야 된다.

  • 함수호출을 기억해야 되기 때문에 쓰레드마다 스택이 할당이 되어져 있다.

음악을 들으면서 사진 편집을 동시에 제공하는 어플이 있다.

  • 음악재생 쓰레드

  • 편집 쓰레드

  • 서버에서 데이터를 받아와서 뿌려주는 쓰레드

  • 결국은 한 프로그램을 위헤서 일해야 되므로 프로세스에 지정된 코드와 데이터 힙들을 공통적으로 접근한다.

  • 공통적으로 접근해서 공통적으로 업데이트가 가능하다.

  • 쓰레드들은 동시다발적으로 발생할 수 있기 때문에 프로세스가 더 효율적으로 일을 할 수 있도록 도움을 준다.

  • 프로세스가 하나의 일만 한다면 음악을 듣는 동안 사진 편집은 불가능.

  • 쓰레드는 일을 수행할 때 어디에서부터 어디까지 일을 했는지 어디로 가야하는지 일에 흐름을 기억할 수 있는 고유의 스택이 지정되어져 있다.

  • 데이터, 코드, 힙 같은 공통적인 데이터 리소스는 프로세스 에 있다

  • 때문에 쓰레드들은 프로세스에 공통적으로 할당된 리소스에 동시로 접속해서 동시로 업데이트 해야 되므로 서로 공유하면서 사용한다.

멀티쓰레딩이 까다롭고 어려운 이유

  • 멀티쓰레딩 잘 못하면 공통적으로 업데이트를 해버려서 순서가 맞지 않는 문제가 발생할 수 있다.

정리

프로세스

  • 컴퓨터위에서 즉 운영체제 위에서 독립적으로 메모리에서 실행되고 있는 프로그램을 말함
  • 프로그램 들은 각각의 프로세스를 가지고 있다.
  • 프로세스는 메모리 위에서 서로 독립적으로 실행 된다
    그러므로 저마다 리소스 자원들이 정해져 있다. 즉 프로세스 마다 할당된 메모리나 데이터들이 지정되어 있다.

쓰레드

  • 프로세스 안에는 쓰레드가 존재한다.

  • 쓰레드는 한 프로세스 안에서 여러 개가 동작할 수 있다.

  • 쓰레드는 가각 저마다 해야 되는 역할을 수행한다.

  • 쓰레드는 자신들이 해야하는 일을 기억해야 하기 때문에 쓰레드마다 스택이 할당되어져 있다.

  • 자기가 어디에서부터 어디까지 일을 했는지 어디로가야하는지 흐름을 기억할 수 있는 고유 스택이 지정되어져 있고
    데이터, 코드, 힙 같은 공통적인 데이터리소스는 프로세스에 있다.

  • 때문에 쓰레드들은 프로세스에 공통적으로 할당된 리소스에 동시로 접속해서 동시로 업데이트 해야하므로 서로 공유하면서 사용한다.

0개의 댓글

관련 채용 정보