일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- OrderBy
- 프림
- Baekjoon
- 구현
- AWS
- 프로그래머스
- django
- 코딩테스트
- GROUPBY
- union find
- MST
- 다익스트라
- SQL
- 누적합
- 그래프 탐색
- 배포
- JOIN
- BFS
- Pirogramming
- 크루스칼
- 최단경로
- Database
- EC2
- 백준
- 피로그래밍
- 자바
- db
- Java
- 알고리즘
- SQL코딩테스트
Archives
- Today
- Total
NullNull
멀티 프로그래밍, 멀티 태스킹, 멀티 쓰레딩, 멀티 프로세싱 본문
프로그램
- 컴퓨터가 실행할 수 있는 명령어들의 집합
프로세스
- 컴퓨터에서 실행 중인 프로그램
- 각각의 프로세스는 독립된 메모리 공간을 할당 받음
- 명령어들과 데이터를 가짐
PCB - Process Control Block
- 특정한 프로세스를 관리할 때 필요한 정보를 포함하는 운영체제 커널의 자료구조
- 운영체제가 프로세스를 표현하는 방식
CPU
- 명령어를 실행하는 연산장치
메인 메모리
- 프로세스가 CPU에서 실행되기 위해 대기하는 곳
단일 프로세스 시스템
- 한 번에 하나의 프로그램만 실행됨 → 먼저 실행하고 있던 프로그램이 끝나야 다음 프로그램이 실행됨
- CPU 사용률이 좋지 않음
- 어떤 프로그램이 I/O작업을 한다고 할 때, CPU에서 작업하는 시간이 2초, I/O작업을 하는 시간이 8초라고 했을때 CPU는 총 10초 중 2초만 사용된다. 즉 CPU를 20%만 사용하게 된다.
- 해결법
- 여러 개의 프로그램을 메모리에 올려두고 동시에 실행해보자!
- CPU를 실행하다가 I/O작업을 하게 된다면 다른 프로그램이 CPU에서 동작한다.
- 멀티 프로그래밍!
멀티 프로그래밍
- 여러 개의 프로그램이 동시에 실행됨
- CPU의 사용률을 극대화 시키는 목적
- 단점
- CPU 사용 기간이 길어지면 다른 프로세스는 대기해야 한다.
- 해결법
- 한 번 CPU를 사용할 때 아주 짧은 시간만 CPU에서 실행하도록 하자
- 멀티 태스킹!
멀티 태스킹
- 동시에 여러 프로그램을 짧은 시간동안 번갈아가면서 실행됨
- 프로그램의 응답시간을 최소화 시키는 목적
하지만
- 여러 프로세스가 동시에 실행되지만, 하나의 프로세스가 동시에 여러 작업을 수행하지 못함
- 하나의 프로그램을 여러 개의 프로세스로 나눌 수도 있지만, Context Switching에서 많은 시간이 소요된다.
- 프로세스 끼리는 데이터의 공유가 까다롭다.
- 프로세스 끼리는 독립된 PCB를 가지고 이를 서로 공유하지 않기 때문이다.
- 해결책
- 쓰레드!
쓰레드
- 프로세스는 한 개 이상의 쓰레드를 가질 수 있음
- 쓰레드는 프로세스의 실행 흐름
- CPU에서 실행되는 단위
- 쓰레드는 PCB를 공유
- 같은 프로세스의 쓰레드끼리는 Context Switching이 많은 시간이 소요되진 않는다.
- PCB를 공유하기 때문이다.
- 즉, 같은 프로세스안의 쓰레드끼리 데이터 공유가 쉽다.
- 각 쓰레드는 동일한 프로세스 PCB의 힙 메모리 영역을 공유함
- 각 쓰레드는 고유한 영역을 가지게 됨 (스택, 스택 포인터, 프로그램 카운터)
멀티 쓰레딩
- 하나의 프로세스가 동시에 여러 작업을 실행하기 위함
- 멀티 태스킹의 개념이 여러 프로세스와 여러 쓰레드가 짧게 쪼개어진 CPU time을 나누어 가짐
멀티 프로세싱
- 두 개 이상의 CPU를 활용하는 시스템
정리
멀티 프로그래밍
: 하나의 프로그램이 CPU를 사용하다가 다른 작업으로 인해 남는 시간이 발생했을 때, 다른 프로그램을 실행하는 것
멀티 태스킹
: CPU의 작업 단위를 짧게 쪼개서 여러 개의 프로그램을 번갈아가며 짧은 시간 동안 실행하는 것
멀티 쓰레딩
: 프로세스 내에서 여러 개의 쓰레드를 형성하여 실행하는 것
멀티 프로세싱
: 여러 개의 CPU가 하나의 컴퓨터에 존재하여, 하나 이상의 프로세스를 동시에 처리하는 것
'Computer Science' 카테고리의 다른 글
Domain Name System (0) | 2022.11.29 |
---|---|
네트워크 지연(Network Delay) 의 종류 (0) | 2022.11.11 |
CORS (Cross Origin Resource Sharing) (0) | 2022.10.23 |
OSI 7계층 && Internet 5 계층 (4) | 2022.10.03 |
산업보안 관점에서 고려되어야 할 보안 요소 및 보안 대책 (0) | 2022.09.29 |
Comments