사전 배경 지식 (프로세스의 의미)
프로그램(program) : 컴퓨터가 실행할 수 있는 명령어들의 집합
프로세스(process) : 컴퓨터에서 실행 중인 프로그램, 각각의 프로세스는 독립된 메모리 공을 할당 받으며 명령어들과 데이터를 가짐
CPU(Central Processing Unit) : 명령어를 실행하는 연산 장치
메인 메모리(Main Memory) : 프로세스가 CPU에서 실행되기 위해 대기하는 곳
IO(Input/Output) : 파일을 읽고 쓰거나, 네트워크의 어딘가와 데이터를 주고 받는 것, 입출력 장치와 데이터를 주고 받는 것
단일 프로세스 시스템의 뜻과 단점
단일 프로세스 시스템은 한 번에 하나의 프로그램만 실행됨. 단점은 CPU 사용률이 좋지 않음.
해결책 : 여러 개의 프로그램을 메모리에 올려놓고 동시에 실행시키자! IO 작업이 발생하면 다른 프로세스가 CPU에서 실행됨. -> 멀티프로그래밍
멀티프로그래밍의 등장과 특징
CPU 사용율을 극대화 시키는 것이 목적.
멀티프로그래밍의 단점
CPU 사용 시간이 길어지면 다른 프로세스는 계속 대기
해결책 : 프로세스는 한번 CPU를 사용할 때 아주 짧은시간(=quantum)만 CPU에서 실행되도록 하자! -> 멀티태스킹(multitasking)
멀티태스킹의 등장과 특징
프로세스의 응답 시간을 최소화 시키는 것이 목적
멀티태스킹의 아쉬움
하나의 프로세스가 동시에 여러 작업을 수행하지는 못함
프로세스의 컨텍스트 스위칭(context switching)은 무거운 작업
프로세스끼리 데이터 공유가 까다로움
듀얼 코어가 등장했는데 잘 쓰고 싶음
스레드 개념과 특징, 멀티스레딩의 등장
프로세스는 한 개 이상의 스레드를 가질 수 있다.
CPU에서 실행되는 단위 (unit of execution)
같은 프로세스의 스레드들끼리 컨텍스트 스위칭은 가볍다
스레드들은 자신들이 속한 프로세스의 메모리 영역을 공유
stack, stack pointer, code 등은 고유하다.
스레드 등장으로 확장된 멀티태스킹 개념
확장된 멀티태스킹 개념이란
여러 프로세스와 여러 스레드가 아주 짧게 쪼개진 CPU time을 나눠 갖는 것
멀티프로세싱 개념
두 개 이상의 프로세서나 코어를 활용하는 시스템
예제로 살펴보는 개념들