기본용어

  1. 프로그램: 컴퓨터가 실행할수 있는 명령어들의 집합

  2. 프로세스: 컴퓨터에서 실행 중인 프로그램 각각의 프로세스는 독립된 메모리 공간을 할당 받는다.(메모리 공간에 명령어들과 데이터를 가진다)

  3. CPU: 명령어를 실행하는 연산 장치

  4. 메인 메모리 : 프로세스가 CPU에서 실행되기 위해 대기하는 곳

  5. IO(input/output) : 파일을 읽고 쓰거나 네트워크 어딘가와 데이터를 주고 받는것. 입출력 장치(마우스, 모니터, 키보드 등)와 데이터를 주거나 받는것.

단일 프로세스 시스템

가장 초창기의 시스템으로 한번에 하나의 프로그램만 실행된다. 또다른 프로그램이 실행 되려면 먼저 실행한 프로그램을 종료하고 다음 프로그램을 실행해야한다.

예를 들어 어떤 프로그램이 있는데 이프로그램은 CPU를 쓰기도 하고 IO작업을 하기도 한다. 이프로그램이 CPU에서 작업을 하다가 IO작업을 만난다면 CPU는 아무 작업도 하지 않는다. 실행중인 프로세스가 IO작업을 할때 CPU는 아무 작업도 하지 않기때문에 CPU사용률이 좋지 않다는 단점이 있다.

멀티 프로그래밍 시스템

단일 프로세스의 문제를 해결하기 위해 여러개의 프로그램을 메모리에 올리고 동시에 실행시키는 아이디어가 나오게 된다. IO작업이 발생하면 다른 다른 프로세스가 CPU에서 실행된다.
하지만 멀티 프로그래밍 시스템도 CPU사용 시간이 길어지면 다른 프로세스는 계속 대기하게 된다는 단점이 있다.

멀티 태스킹

멀티 프로그래밍의 문제를 해결하기 위해 프로세스가 CPU를 사용할 때 아주 짧은 시간동안 CPU에서 실행되게 하는 방법이다.
두 프로그램이 번갈아가며 아주 짧은 시간만큼 실행된다. 이런 방법을 멀티 태스킹이라고 한다. 멀티 태스킹은 프로세스의 응답 시간을 최소화 시키는데 목적이 있다. 사용자가 사용할때 여러 프로세스들이 교대로 실행이 되기 때문에 즉각적인 응답을 보여줘 동시에 여러 프로그램이 실행되는 느낌을 주게된다.
하지만 멀티 태스킹도 하나의 프로세스가 동시에 여러 작업을 수행하지는 못한다. 여러 프로세스를 만들어 실행시킬 수 있지만 프로세스를 여러개 만들어 동작시키기에는 여러 단점이 있다. 프로세스의 컨텍스트 스위칭은 무거운 작업이다. 또한 프로세스는 위에써놨듯 독립된 메로리 공간을 할당하고 있기 때문에 프로세스간 데이터 공유가 까다롭다.

 컨텍스트 스위칭이란 CPU에서 실행되기 위해 어느 한 프로세스에서 다른 프로세스로 작업이 교체되는것이다.

멀티 스레딩

듀얼 코어의 등장으로 코어가 두개인 CPU를 효과적으로 사용하기 위해 스레드(thread) 방식을 사용하게 된다. 스레드는 CPU에서 실행되는 단위가 되었고 프로세스는 기본적으로 하나의 스레드를 가지게 된다. 스레드 들은 자신들이 속한 프로세스의 메모리 영역을 공유하기 때문에 데이터 공유가 쉽다. 또한 같은 프로세스의 스레드들끼리 컨텍스트 스위칭은 훨씬 가벼워 진다.

싱글 스레드 vs 멀티 스레드

멀티 프로세싱

두개 이상의 프로세서나 코어를 활용하는 시스템을 멀티 프로세싱이라고 한다.

프로세서는 CPU나 Microprocessor라는 하드웨어를 의미하고 프로세서는 실제 메모리에 적재되어 프로세서에 의해 실행되고 있는 프로그램이다.

예제

싱글코어 CPU에 싱글-스레드 프로세스 2개

프로세스가 두개로 하나의 CPU에서 나눠서 쓰게된다. 이때 짧은 시간동안 번갈아 CPU를 사용한다.-> 멀티 태스킹

typecheck
멀티태스킹O
멀티스레딩X
멀티프로세싱X

0개의 댓글

Powered by GraphCDN, the GraphQL CDN