프로세스
프로그램 → 하드디스크 등의 저장매체에 저장되는 실행 파일의 형태를 갖고있는 것
프로세스 → 프로그램이 메모리에 적재되어있는 상태를 뜻한다.
- 프로세스는 프로그램 실행에 필요한 모든 자원을 할당받는다.
- 코드공간 / 힙공간 / 스택공간 / 데이터공간 을 갖고있다.
프로세스는 기본적으로 코드공간 힙공간 스택공간 데이터공간 을 가집니다. (코데힙스)
프로세스의 특징
- 운영체제는 프로그램을 메모리에 적재하고 프로세스로 다루게 된다.
- 메모리 할당 → 코드 , 데이터 적재
- 프로세스들은 서로 독립적인 메모리 공간을 가지고 프로세스마다 고유한 번호 **(PID)**를 할당한다.
- 프로세스의 모든 정보는 커널에 의해 관리된다.
- 프로세스는 기본적으로 실행 - 대기 - 잠자기 - 대기 - 실행 - 종료 등의 생명주기를 가지고 커널에 의해 수행된다.
운용되는 동안에는 대기하고있는 프로세스 (기본적으로는 단순히 대기도 아닌 하드디스크에 저장되어있다.)
- 그럼 프로세서는 ? → 하드웨어적인 부분으로 하드웨어 처리기라는 의미를 갖고있다.
프로세스는 프로그램의 단위라고 할 수 있으며 프로그램의 정보를 저장한 인스턴스라고도 볼 수 있습니다.
프로세스 관리
- 커널 (운영체제의 핵심 부분을 의미합니다. 이 부분은 하드웨어와 소프트웨어 간의 인터페이스 역할을 하며, 프로세스 관리, 메모리 관리, 입출력 관리 등 시스템의 핵심적인 기능을 제공합니다. )
- 커널에 의해 커널 영역에 프로세스 테이블을 만들고 프로세스 목록을 관리한다.
- 그렇다면 한 프로그램을 여러번 실행할땐 ?
- 프로그램 실행시마다 독립된 프로세스가 생성되고 다중 인스턴스라고 부른다.
- 각 프로세스에 독립된 메모리 공간이 할당되며 별개의 프로세스로 취급한다.
- 프로그램 실행시마다 독립된 프로세스가 생성되고 다중 인스턴스라고 부른다.
프로세스 구성
- 코드 영역
- 프로그램의 코드가 적재되는 영역이다.
- 데이터 영역
- 프로그램의 변수 공간이라 볼 수 있다.
- 프로세스 적재시 할당되며 종료시 소멸된다.
- 힙 영역
- 동적으로 사용할 수 있도록 할당된 공간이다.
- 스택 영역
- 함수가 실행될 때 사용될 데이터를 위해 할당된 공간이다.
프로세스는 기본적으로 자바 혹은 자바스크립트와 같은 언어들의 컨텍스트와 비슷한 영역을 갖고있습니다.
스레드
- 스레드의 출현 목적
- 멀티태스킹의 문제점
- 커널에 많은 시간과 공간이 부담되며 시스템의 전체 속도를 저하시킨다.
- 효율적인 새로운 실행 단위가 필요했기 때문에 스레드가 출현했다.
- 멀티태스킹의 문제점
- 스레드는 기본적으로 프로세스보다 크기가 작다.
- 프로세스보다 생성 및 소멸이 빠르고 이로인해 컨텍스트 스위칭이 빠르다.
스레드의 개념
- 스레드는 실행 단위이며 스케줄링 단위이다.
- 하나의 작업의 개념을 갖고있다.
- 운영체제에게는 실행단위이고 스케줄링 단위이다.
- 스케줄링이란 ? → 시스템 내에서 실행될 작업들을 어떤 순서에 따라 할당하고 관리하는 것을 의미합니다.
- 스레드 또한 코드 데이터 힙 스택을 가진 실체이며 프로세스와 마찬가지로 스레드마다 TCB (스레드 컨트롤 블럭) 이 존재한다.
- 프로세스는 스레드들의 컨테이너라고 볼 수 있다.
- 쉽게 생각하자면 리액트의 useState 가 클로저 개념을 사용해서 캐싱하고 변화를 눈치채는것처럼 프로세스는 스레드를 캐싱해두고 작업에 대한 정보를 얻어서 관리한다고 생각하시면 돼요!
- 마찬가지로 프로세스는 회사 / 스레드는 직원에 비유할 수 있다.
- 직원 → 회사의 목적을 위해 일을 하는 단위
- 스레드 → 프로세스의 목적을 위해 동시에 실행될 작업 단위
- 프로세스는 스레드들의 공유 공간을 제공한다.
- 모든 스레드는 프로세스의 코드 데이터 힙을 공유하며 프로세스의 스택 공간을 나누어 사용한다. 따라서 스레드 사이의 통신이 용이하다. (멀티 프로세스와의 가장 큰 차이점)
- 프로세스의 속한 모든 스레드가 종료되면 프로세스가 종료된다.
- 프로세스는 스레드들의 컨테이너라고 볼 수 있다.
'학교공부' 카테고리의 다른 글
운영체제 이론 03-28 (정리) 프로세스와 커널 (0) | 2023.04.10 |
---|---|
정보통신 개론 03-27 (정리) 컴퓨터, 부울대수 , 데이터표현 (0) | 2023.04.09 |
네트워크 일반 03-22 (정리) OSI 7계층과 프로토콜 (0) | 2023.04.07 |
운영체제 이론 03-21 (정리) (0) | 2023.03.31 |
정보통신 개론 03-20 (정리) 정보통신 시스템의 구성 (0) | 2023.03.31 |