본문 바로가기

Computer Science/Operating System

(4)
<운영체제> 멀티프로세스와 멀티스레드 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을..
<운영체제> 프로세스 메모리 1. 프로세스 모델 * 프로세스란 - 프로세스란 운영체제 입장에서 하나의 작업단위이다. - 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램을 의미한다. - 프로그램의 실행은 파일 시스템에 존재하던 실행파일이 메모리에 적재된다는 의미를 가지며, CPU를 할당 받아 명령을 수행하고 있는 상태를 의미한다. - 즉 프로세스는 실행 중인 프로그램을 의미하며, 프로세스의 주소공간을 가상 메모리라고 칭한다. * PCB - 프로세스 제어 블록(Process Control Block)은 프로세스를 실행하는 데 필요한 정보를 보관하는 자료구조이다. - 프로그램이 메모리에 올라와 이 PCB를 얻었을 때 비로소 프로세스가 된다. - 모든 프로세스는 고유의 PCB를 가지며, 프로세스 생성 시 만들어져서 종료시 폐기된다. -..