프로세스 (5) 썸네일형 리스트형 <운영체제> 멀티프로세스와 멀티스레드 1. 멀티프로세스 * 멀티프로세싱 - 하나의 응용프로그램을 여러 개의 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리하는 것을 의미한다. - 각 프로세스들은 독립적으로 동작하며 자원이 서로 다르게 할당된다. * 장점 - 여러 자식 프로세스 중 하나에 문제가 발생하면, 다른 프로세스에 영향없이 그 프로세스만 죽는다. 따라서 안정적으로 프로그램을 운용할 수 있다. - 구현이 비교적 간단하다. * 단점 - 메모리 사용량이 많다. - 프로세스 간 공유를 하려면 통신을 해야하므로 까다롭다. - 스케줄링에 따른 Context Switching이 잦아 성능저하의 우려가 있다. 스위칭은 캐시 메모리 초기화 등 무거운 작업이 진행되므로 많은 시간을 낭비한다. 2. 멀티스레드 * 멀티스레딩 - 최근에 가장 흔히 사용.. <운영체제> 프로세스 스케줄링 1. 스케줄링이란 * Context Switching - 멀티태스킹은 운영체제를 통해 CPU가 필요한 자원을 프로세스 또는 스레드에 나누는 행위를 의미한다. 우리가 여러 프로그램을 동시에 실행할 수 있는 이유가 멀티태스킹 덕분이다. - 지난 포스팅에서도 봤던 그림이다. 프로세스가 동시에 실행되는 것처럼 보이지만, 실제로 CPU는 한번에 한 가지 명령어 밖에 처리하지 못하기 때문에 동시는 아니다. - CPU는 동시가 아니라 아주 빠르게 프로세스들을 번갈아가며 실행하고 관리한다. 이렇게 번갈아 실행하는 행위를 Context Switching이라 한다. 빠른 스위칭 덕에 우리는 마치 동시에 프로세스가 돌아가는 것처럼 느끼게 된다. * CPU 스케줄러 - Context Switching을 할 때 CPU를 적절하.. <운영체제> 프로세스와 스레드 1. 프로세스 - 프로세스는 운영체제에서 메모리 영역을 할당받아 실행되는 독립적인 프로그램 인스턴스이다. - 동적인 개념으로는 실행된 프로그램을 의미한다. - 더 자세한 내용은 지난 글을 참고하자. * 특징 - 한 프로세스는 다른 프로세스에 접근할 수 없다. 만일 접근하려면 통신을 사용해야한다. - 프로세스 하나는 독립된 메모리영역을 받으며 내부에는 Code, Data, Stack Heap영역이 있다. - 프로세스는 최소 1개의 스레드(메인 스레드)를 가지고 있다. * 상태 - 프로세스는 아래와 같은 생명주기를 갖는다. - CPU는 여러 프로세스를 빠르게 번갈아 가며 작업해야하는데 이 때, PCB(Process control block)을 이용하여 위의 상태들을 관리하며 Context Switching을.. <메모리> V8 엔진의 메모리 1. 소개 * 소개 - V8 엔진은 웹 브라우저를 만드는 데 기반을 제공하는 오픈 소스 자바스크립트 엔진이다. 자바스크립트는 인터프리터 언어이기 때문에 코드를 해석하고 실행하는 엔진이 필요하다. V8은 자바스크립트를 컴파일하고 실행한다. - 필자는 웹 프론트 분야를 공부하며 자바스크립트를 사용하기 때문에 V8 엔진의 메모리 관리에 대해 공부하며 정리하고자 한다. - V8엔진은 노드JS, Deno, Electron과 같은 런타임 뿐만 아니라 크롬, 크로미움, 오페라, 엣지 등의 브라우저에서도 사용되므로 V8 엔진의 메모리 관리를 공부하는 것은 매우 중요하다. 2. 메모리 구조 * V8 메모리 구조 - 자바스크립트는 단일 스레드이고, V8 역시 자바스크립트 컨텍스트 당 단일 프로세스를 사용한다. - 실행 중.. <운영체제> 프로세스 메모리 1. 프로세스 모델 * 프로세스란 - 프로세스란 운영체제 입장에서 하나의 작업단위이다. - 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램을 의미한다. - 프로그램의 실행은 파일 시스템에 존재하던 실행파일이 메모리에 적재된다는 의미를 가지며, CPU를 할당 받아 명령을 수행하고 있는 상태를 의미한다. - 즉 프로세스는 실행 중인 프로그램을 의미하며, 프로세스의 주소공간을 가상 메모리라고 칭한다. * PCB - 프로세스 제어 블록(Process Control Block)은 프로세스를 실행하는 데 필요한 정보를 보관하는 자료구조이다. - 프로그램이 메모리에 올라와 이 PCB를 얻었을 때 비로소 프로세스가 된다. - 모든 프로세스는 고유의 PCB를 가지며, 프로세스 생성 시 만들어져서 종료시 폐기된다. -.. 이전 1 다음