Nexters 21기 CS 스터디 첫 번째 주제로 프로세스와 스레드에 포스팅하게 되었습니다. 프로세스와 스레드의 차이를 알고 작동하는 방식에 대해 이해하는 것이 요점일 것 같습니다.
프로세스는 수행 중인 프로그램을 의미합니다.
디스크에 저장된 실행 파일을 프로그램이라고 하고, 메모리에 적재되어 CPU 자원을 할당 받아 실행되고 있을 때 프로세스라고 부릅니다.
운영체제는 다양한 프로그램을 Windows에서 Ctr+Alt+Delete 명령어를 통해 운영체제에 의해 관리되고 있는 프로세스의 목록을 확인할 수 있습니다.
특정 프로세스와 연관된 여러 정보를 수록한 블록입니다.
하나의 프로세스가 CPU 자원을 사용하다가 다른 프로세스가 CPU 자원을 사용하기 위해서는, 이전 운영체제가 프로세스의 상태를 기억하고 있어야 합니다. 프로세스 간 병행 수행을 위해 CPU 할당을 스위치 하는 것을 문맥 교환이라고 하고, 문맥 교환을 위해서 PCB를 필요로 합니다.
PCB에는 다음과 같은 프로세스의 상태가 저장됩니다.
하나의 응용 프로그램을 여러 개의 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리
ex) 구글 크롬 브라우저같은 경우 브라우저, 렌더러, 플러그인 프로세스로 나뉨
스레드는 스레드 ID, 프로그램 카운터, 레지스터 집합, 스택으로 구성되어 있습니다. 그리고 같은 프로세스에 속한 다른 스레드와 코드, 데이터 섹션, 열린 파일이나 신호 같은 운영체제 자원을 공유합니다.
각자 스택과 PC 레지스터 값을 가지고 있어 각각의 스레드가 독립적인 작업을 수행할 수 있고, 명령어의 어디까지 수행 했는지 알 수 있습니다.
하나의 프로세스를 멀티 스레드를 통해 자원을 공유하고, 자원의 생성 및 관리의 중복성을 최소화하여 수행 능력을 향상시키는 것을 멀티 스레딩이라고 합니다.
ex) 디스플레이 갱신, 네트워크 요청 응답들은 대부분 멀티 스레드(2개 이상의 스레드)로 동작합니다.
장점
단점
자원을 효율성 증대 및 처리 비용 감소 : 프로세스 생성 시 자원을 할당하는 시스템 콜이 감소하고, 스레드 간의 자원 공유가 간단하기 때문에 자원 소모가 적습니다.
응답 시간 단축 : 프로세스의 경우 Context Switching 시 CPU 레지스터, RAM과 CPU 사이의 캐시 메모리가 초기화되기 때문에 오버헤드가 큰 반면, 스레드는 Context Switching시 Stack영역만 처리하면 되므로 스레드 간의 문맥 교환 속도가 빠릅니다.
잘 보고 갑니다~! 개념이 헷갈릴 때 마다 들어와서 봐야겠어요~!!ლ(╹◡╹ლ)