- 프로그램: 컴퓨터에 실행할 수 있는 명령어들의 집합
- 프로세스(process)
- 컴퓨터에서 실행중인 프로그램 각각의 프로세슨느 독립된 메모리 공간(가상메모리) 할당, 명령어들과 데이터를 가짐
- CPU: 명령어를 실행하는 연산 장치
- 메인 메모리: 프로세스가 CPU에서 실행되기 위해 대기하는 곳
- I/O(Input/Output)
- 파일을 읽고 쓰기
- 네트워크의 어디가과 데이터를 주고 받는것
- 입출력 장치와 데이터를 주고 받는것
- 단일 프로세스 시스템 : 한번에 하나의 프로그램만 실행 -> CPU 사용률이 좋지 않음
- 멀티 프로그래밍: 단일 프로세스 시스템의 해결책으로 여러개 프로그램을 메모리에 올려 놓고 동시에 실행시키자
- I/O 작업 발생시 다른 프로세스가 CPU 점유
- 하나의 프로세스가 CPU 점유시간이 길어지면 다른 프로세스는 계속 대기
- 멀티 태스킹: 멀티 프로그래밍의 해결책으로 프로세스는 한번 CPU 사용할 때 아주 짧은 시간(quantum)만 CPU에서 실행되도록 하자
- 프로세스의 응답시간을 최소화하여 유저가 여러프로세스가 동시에 실행되고 있다고 느끼게 함
- 스레드(Thread) 등장 배경
- 하나의 프로세스가 동시에 여러 작업 수행 불가
- 프로세스의 컨텍스트 스위칭(CPU 점유를 교체하는 작업)은 매우 무거운 작업
- 프로세스 끼리 데이터 공유가 까다로움
- 듀얼코어의 등장으로 듀얼코어를 잘 사용하고 싶음
- 스레드 특징
- 프로세스는 한개 이상의 스레드를 가질 수 있다.
- CPU에서 실행되는 단위(unit of execution)
- 같은 프로세스의 스레들 끼리의 컨텍스트 스위칭은 가볍다
- 스레드들은 자신들이 속한 프로세스 메모리 영역 공유
- 멀티스레딩: 하나의 프로세스가 동시에 여러작업을 수행하는게 가능
- 확장된 멀티 태스킹 - > 여러 프로세스와 여러 스레드는 아주 짧게 쪼개진(quantum)시간을 나누어 갖는것
- 멀티 프로세싱: 두개 이상의 프로세스나 코어로 활동하는 시스템
'CS > Computer Science' 카테고리의 다른 글
MVC(Model-View-Controller) 패턴 (0) | 2024.12.12 |
---|---|
프로세스/스레드 메모리 구조 및 동기화 정리 (0) | 2024.12.11 |
02/07 함수형 프로그래밍 (0) | 2023.02.07 |
02/06 IPC(Inter Process Communition) (0) | 2023.02.06 |
2/2 애자일 방법론 (0) | 2023.02.06 |