프로세스와 스레드를 다룹니다.
프로세스란 무엇입니까?
- 컴퓨터에서 지속적으로 실행되는 컴퓨터 프로그램입니다.
- 종종 예약된 작업이라는 용어와 거의 동의어입니다.
절차 및 프로세스
- 프로그램: 하드디스크 등에 저장된 실행 가능한 코드를 말합니다.
- 프로세스: 프로그램 자체와 그 상태가 메모리에서 실행되도록 프로그램을 실행하는 작업 단위를 말합니다.
공정 특성
- 모든 프로세스에는 적어도 하나의 스레드(메인 스레드)가 있습니다.
- 각 프로세스는 별도의 주소 공간에서 실행되며 한 프로세스가 다른 프로세스의 리소스에 액세스할 수 없습니다.
- 프로세스가 다른 프로세스의 리소스에 액세스하려면 프로세스 간 통신(IPC)을 사용해야 합니다.
- 프로세스는 운영 체제에서 시스템 리소스를 할당합니다.
- 할당된 시스템 리소스의 예로는 CPU 시간, 주소 공간 및 별도의 메모리 영역이 있습니다.
독립 메모리 영역의 구조는 그림과 같이 Code, Data, Stack, Heap입니다.
- 코드 영역: 프로세스가 실행할 코드를 기계어로 저장하는 공간입니다.
(컴파일 타임에 결정, 읽기 전용) - 데이터 영역: 전역 변수와 정적 변수를 저장하는 공간입니다.
전역 변수 또는 정적 변수를 참조하는 코드는 컴파일 후 데이터 영역의 주소 값을 가리킵니다.
(컴파일 시 결정, 읽기-쓰기: 실행 중 변경 가능) - 힙 영역: 개발자가 관리하는 메모리 영역으로 힙 영역에 메모리를 할당하는 것을 동적 할당이라고 합니다.
(실행시 결정, 스택보다 더 많은 메모리 공간을 할당할 수 있지만 데이터 읽기 및 쓰기가 느림) - 스택 영역: 함수에서 선언한 로컬 변수, 매개 변수, 반환 값 및 반환 주소를 저장합니다.
스택의 LIFO(Last In First Out) 방식에 따르면 함수가 호출되면 기록되고 호출이 완료되면 제거된다.
(컴파일 시 결정, 고정 크기로 인해 스택 오버플로 오류가 발생할 수 있음)
스레드란 무엇입니까?
- 프로그램, 특히 프로세스 내에서 실행되는 프로세스 단위입니다.
- 프로세스는 할당된 리소스의 실행 단위를 사용합니다.
스레드의 특성
- 스레드는 프로세스의 코드 영역, 데이터 영역, 힙 영역, 스택 영역 중 하나의 스택만 할당하고 코드 영역, 데이터 영역, 힙 영역을 공유한다.
- 스레드는 프로세스 내의 주소 공간 또는 리소스가 동일한 프로세스 내의 스레드 간에 공유될 때 실행됩니다.
- 스레드는 동일한 프로세스의 여러 스레드와 동일한 힙 공간을 공유합니다.
반면에 한 프로세스는 다른 프로세스의 메모리에 직접 액세스할 수 없습니다.
인용하다
https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html
(OS) 프로세스와 스레드의 차이점 – Heee’s Development Blog
한 번에 한 걸음씩 먼 길을 간다.
gmlwjd9405.github.io
https://github.com/Seogeurim/CS-study/tree/main/contents/operating-system
GitHub – 서그림/CS-study: 진정한 컴퓨터 엔지니어가 되기 위한 지식 정리 공간
진정한 컴퓨터 엔지니어가 되기 위한 우리의 지식 조직 공간. GitHub에 계정을 생성하여 서그림/CS-스터디 발전에 기여해 주세요.
github.com
https://en.wikipedia.org/wiki/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4#
프로세스 – Wikipedia, 모두를 위한 백과사전
무료 백과사전 Wikipedia. –>
en.wikipedia.org
https://en.wikipedia.org/wiki/%EC%8A%A4%EB%A0%88%EB%93%9C_(%EC%BB%B4%ED%93%A8%ED%8C%85)
스레딩(컴퓨팅) – Wikipedia, 프리랜서 백과사전
무료 백과사전 Wikipedia. 프로세스는 두 개의 스레드를 실행합니다.
스레드는 프로그램 내에서, 특히 프로세스 내에서 실행되는 프로세스 단위입니다.
일반적으로 말하면
en.wikipedia.org