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

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

CPU (central processing unit)  : 명령어를 실행하는 연산 장치

메인 메모리(main memory) : 프로세스가 cpu에서 실행되기 위해 대기하는 곳

I/O (input/ output) : 파일을 읽고 쓰거나 네트워크의 어딘가와 데이터를 주고받는 것. 입출력 장치와 데이터를 주고받는것

 

초창기의 시스템

단일 프로세스 시스템 : 한번에 하나의 프로그램만 실행됨

단점 : CPU의 사용률이 좋지 않음

해결책 : 여러개의 프로그램을 메모리에 올려놓고 동시에 실행시킴. IO작업이 발생하면 다른 프로세스가 CPU에서 실행됨

 

멀티프로그래밍 : cPU의 사용을 극대화 하는데 목적

단점 : CPU사용 시간이 길어지면 다른 프로세스는 계속 대기해야한다. 

해결책 : 프로세스는 한번 CPU를 사용할 때 아주 짧은 시간 (=quantum)만 CPU에서 실행되도록 설정

 

그렇게 나온 것이 멀티태스킹(multitasking)

 멀티태스킹(multitasking) : 프로세스의 응답시간을 최소화 시키는데 목적이 있다.

(컴퓨터가 실행중인 프로그램에 바로바로 응답하게 하는것)

여러 프로그램이 동시에 실행되도록 느껴지게 하는것. 아주 짧은 시간동안 교대로 프로그램이 실행되기 때문이다.

 

아쉬움1 : 하나의 프로세스가 동시에 여러 작업을 수행하지 못함

아쉬움2 : 프로세스의 컨텍스트 스위칭은 무거운 작업

아쉬움3 : 프로세스끼리 데이터 공유가 까다로움 (메모리가 독립적으로 할당되기 때문)

아쉬움4 : 듀얼 코어가 등장했는데 잘 쓰고싶다

 

이런 것들을 극복하기 위해 등장한 개념

스레드(thread)

스레드의 특징

1.  듀얼 코어가 등장했는데 잘 쓰고싶다

2. 프로세스는 한 개 이상의 스레드를 가질 수 있다. 

3. 스레드는 CPU에서 실행되는 단위(unit of execution)

 - 이전에는 프로세스가 CPU에서 실행되는 단위였다면 이제 스레드가 단위가 된다. 

 - 이제 스레드가 기본 단위가 되었기 때문에 프로세스는 기본적으로 하나의 스레드를 가지게된다. 

4. 같은 프로세스의 스레드들끼리 컨텍스트 스위칭은 가볍다

5. 스레드들은 자신들이 속한 프로세스의 메모리 영역을 공유한다. (데이터 공유가 쉽다)

 

그림 출처 : 쉬운코드

 

공유하지 않는 것도 있다 . 이 그림에서 중요한 것은 메모리 영역을 공유한다. 

 

멀티스레딩 : 하나의 프로세스가 동시에 여러 작업을 실행하는데 목적이 있다 (여러작업 : 스레드)

멀티스레딩이 도입되면서 확장된 멀티태스킹을 개념 :

멀티태스킹 : 여러 프로세스와 여러 스레드가 아주 짧게 쪼개진 cpu time을 나눠 갖는다. 

기존에는 프로세스끼리의 아주 짧은 시간의 스위칭이라면 이제 프로세스, 스레드가 스위칭하는 것

 

멀티프로세싱(multiprocessing) : 두 개 이상의 프로세서나 코어를 활용하는 시스템

그림 출처 : 쉬운코드
그림 출처 : 쉬운코드
그림 출처 : 쉬운코드
그림 출처 : 쉬운코드
그림 출처 : 쉬운코드
그림 출처 : 쉬운코드

마지막장이 최근 컴퓨터의 운영체계라고 할 수 있다.

 

출처 쉬운코드

https://youtu.be/QmtYKZC0lMU

 

 

 

 

 

 

 

+ Recent posts