프로그램: 이미지 한개.
프로세스:메모리에 올라와, 실행을 시작한 프로그램
preemptive 때문에 multitasking이 된다.
1)piority alogorithm 2) round-robin algorithm(정해진 시간동안)
wating과 blocked의 차이 : 언제든 작업이 가능한가? I/O작업이 끝날때까지 불가능한가
context switching : cpu 레지스터의 저장되어 있는 값들( 새치기가 일어날떄 새치기 당하는 데이터들을 pcb로 업데이트 하는것)
어쩔수 없지만 자주하면 성능이 안좋아지고, 안하게 되면 멀티스레드 R-R 타임슬라이스가 지날때마다 시스템 부하
-> 타임슬라이스 길게 잡으면 멀티테스킹이 아니고, 적게 잡으면 자주 발생해서 시스템부하
프로세스는 실행흐름, 실행흐름이란 인스트럭션(기계어)의 나열
프로세스에서 스레드가 존재, 한개의 실행흐름이면 싱글스레드
multi processing - 여러개의 실행흐름을 돌리고, 각자 다른 공간을 갖고 있고 서로 공유해야될 데이터를 IPC를 통해서 전달하고, 이 데이터들을 shared resource
☆☆☆☆concurrency (동시성) program , 동시에 여러개의 실행 흐름이 필요하다
실행흐름을 하기위해선 - 인스트럭션이 실행되야되고, 이것은 함수발생을 야기한다 - 필요한것은? stack frame
stack frame이 발생하면, 그 내부에서 스텍 구간을 여러개의 스레드로 나눔.
concurrency programming동시성 프로그래밍 vs parallel programming 병렬 프로그래밍
하드웨어 1개 필요 cpu -> th1, th2, th3 single core multithreading
하드웨어가 2개 이상필요 cpu 1 cpu 2 -> task 1/2 씩 multicore multithreading