참고
https://inpa.tistory.com/entry/%F0%9F%91%A9%E2%80%8D%F0%9F%92%BB-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4-%E2%9A%94%EF%B8%8F-%EC%93%B0%EB%A0%88%EB%93%9C-%EC%B0%A8%EC%9D%B4

 

프로세스(process)
  - 운영체제로부터 자원을 할당받은 작업의 단위
  - 프로그램을 실행 시켜 정적인 프로그램이 동적으로 변하여 '프로그램이 돌아가고 있는 상태'(컴퓨터에서 작업 중인 프로그램)
  - 메모리에 적재되고 CPU자원을 할당받아 프로그램이 실행되고 있는 상태
  
프로세스 한계
  - 프로세스 작업 하나만을 사용해서 프로그램을 실행하기에는 한계가 있다.
  ex) 파일을 다운받을때 다운이 완료될때까지 다른 동작을 하지 못하고 기다려야함

프로세스 자원 구조
  - 코드영역 : 개발자가 작성한 코드가 CPU가 해석 가능한 기계어 형태로 저장되어 있다.
  - 데이터 영역 : 코드가 실행되면서 사용하는 전역 변수, 각종 데이터들이 모여있다.
    - .data : 전역 변수, static 변수 등 데이터를 저장
- .BSS : 초기값 없는 전역 변수, static 변수가 저장
- .rodata : 상수(const) 키워드가 선언된 변수가 저장
  - 스택 영역 : 지역 변수와 같은 호출한 함수가 종료되면 되돌아올 임시적인 자료를 저장하는 독립적인 공간
  - 힙 영역 : 생성자, 인스턴스 같은 동적으로 할당되는 데이터를 위해 존재하는 공간
  
쓰레드(Thread)
  - 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위
  - 하나의 프로세스 내에서 동시에 진행되는 작업 단위
  - 여러개의 쓰레드가 존재할때 멀티(다중) 쓰레드 라고 부른다.

쓰레드의 자원 공유
  - 한 프로세스내에서 스레드끼리는 자원을 공유할 수 있다.
  - 쓰레드 끼리 자원을 공유하기 때문에 동시 작업이 가능하다.
  - code, data, heap은 프로세스 내에서 다른 쓰레드들과 공유가 된다.
  - heap 메모리는 고유하기 때문에 서로 다른 쓰레드에서 가져와 읽고 쓸 수 있다.

 

 

+ Recent posts