Concurrency : 병행처리
: 여러가지 일을 동시에 실행하는 것
- 소프트웨어적으로 4 level 이 존재한다.
- instruction level : 2개 이상의 기계어 명령어를 동시에 실행
- statement level : 2개 이상의 high-level 명령어 동시에 실행
- unit level 보다 어렵다.
- 동시에 실행될 문장과, 데이터 전송을 고려해야함
- unit level : 2개 이상의 sub프로그램 동시에 실행
- program level : 2개 이상의 프로그램 동시에 실행
- 소프트웨어에서 병행처리를 해결하는 방법
- Parallel Execution : 병렬처리
- PipeLine
- 한 사람이 나르는 거리가 줄어든다.
- 결과값 → 입력값
- 앞 : ‘생산자’ —> 뒤 : ‘소비자’
- Ex) 자동차 공정 시스템
- 목적
- 프로그램을 빠르게 동작시키기 위해
- 프로그램의 확장성을 높히기 위해 모듈화 (유연성을 높힘)
- cuncurrent algorithm 은 scalable(확장 가능하다)
- 하드웨어가 빠르게 바뀌기 때문에 특정 장치에서만 동작해서는 안된다.
Multiprocessor Architectures
- SMP
- Multicore : 더 대세
- CPU의 코어를 최대한 활용하는 것이 잘짜는 것이 중요하다
- mips : 단위 시간당 처리량의 기본단위
Categories of Concurrency
- physical concurrency
- 실제로 CPU가 여러개, 프로그램을 분할해서 실행
- logical concurrency
- 하나의 CPU에서도 분할해서 실행
- 실제로는 한 시각에서 CPU는 하나의 작업만 한다. 그렇지만 Concurrency 하게 보임
- Time Sharing 방법을 사용 하기 때문
- 빠르게 교대하면서 실행
- 실제 컴퓨터에서는 physical,logical 둘 다 일어난다.
- 실제로는 입출력이 cpu 사용보다 오래걸린다.
- throughput : 단위 시간당 처리량 → 이걸 높이려면 CPU가 많이 일해야 된다.
Process : 실행의 단위
- task 라고 생각해도 된다.
- 프로그램이 할당되기 위해서 code, data, Stack&Heap 메모리가 할당되어야 한다.
- 메소드에 있는 이것들이 CPU에 할당되면서 실행된다. (운영체제의 역할)
- 시간별로 끊어서 실행 하는것 : 시분할(Time Sharing) 방법 실행
- CPU가 하나면 시분할 방법으로 실행, 스케쥴링의 대상이 된다.
- 프로그램에서 실행하기 위해서는 open 명령으로 하는데 그것을 OS에게 요청을 한다.
Thread : Process 안에 독립된 실행 단위