몇 가지 개념들
1. 레지스터 / CPU 캐시
● 레지스터 - CPU 내부에서 연산에 사용하는 데이터를 저장하는 메모리
● CPU 캐시 - 메인 메모리 접근을 빠르게 하기 위해 CPU 내부나 바로 옆에 탑재하는 작은 메모리 (메인 메모리의 입출력 병목현상 해소)
2. 프로그램 / 프로세스 / 스레드
● 프로그램 - 컴퓨터에서 특정 작업을 수행하는 일련의 명령어들의 모음
● 프로세스 - 연속적으로 실행되고 있는 프로그램 (실행을 위해 시스템(커널)에 등록된 작업)
● 스레드 - 프로세스 내에서 실행되는 흐름의 단위
3. 동시성 / 병렬성
● 동시성 - 여러 개의 작업을 빠르게 바꿔가며 하나씩 수행하는 것 (논리적 개념)
● 병렬성 - 여러 개의 작업을 동시에 수행하는 것 (물리적 개념)
4. (선점형 OS) 우선순위 스케줄링 알고리즘 / (선점형 OS) 라운드 로빈 스케줄링 알고리즘
● 우선순위 스케줄링 알고리즘 - 각각의 프로세스마다 우선순위를 부여해서 우선순위가 높은 프로세스를 실행
● 라운드 로빈 스케줄링 알고리즘 - 같은 우선순위의 프로세스들간의 형평성을 위해 실행의 최소 단위 시간 간격 설정
5. 기아(starvation) 현상 / 에이징(Aging) 기법
● 기아(starvation) 현상 - 낮은 우선순위의 프로세스가 실행되지 않는 현상 (입출력시간때문에 자주 나타나지는 않음)
● 에이징(Aging) 기법 - 자원 할당을 오래 기다린 프로세스에게 기다린 시간에 비례하여 높은 우선순위를 부여하는 것
5. 멀티프로그래밍 / 멀티태스킹 / 멀티프로세싱 / 멀티스레딩
● 멀티프로그래밍 - CPU 작업과 입출력 작업을 병행하는 것
● 멀티태스킹 - OS의 스케줄링에 의해 task(프로세스보다 확장된 개념)를 번갈아가며 수행하는 것
● 멀티프로세싱 - 여러 개의 프로세서(프로세스X)가 서로 협력적으로 일을 처리하는 것
● 멀티스레딩 - 하나의 프로세스의 여러 개의 스레드를 동시 / 병렬 수행하는 것
헷갈리는 것들
1. 프로그램 하나에서 두 코드가 동시 / 병렬 실행 -> 멀티스레딩
2. 프로그램 두개가 동시 실행 -> 멀티태스킹
3. 하나 이상의 프로세스를 여러 프로세서가 병렬 처리 -> 멀티프로세싱
---> 멀티태스킹은 프로세스들을 처리하는 것
---> 멀티스레딩과 멀티프로세싱은 프로세스를 어떤 방식으로 처리하는지에 대한 것
4. 멀티스레딩과 멀티프로세싱의 차이 : 멀티스레딩은 한 프로세스의 스레드를 나누어 처리하는 것이고 멀티프로세싱은 한 개 이상의 프로세스를 여러 CPU 에서 처리하는 것 (서로 장단점이 있으며 메모리 공유 방식에 차이가 있다)
5. 멀티프로그래밍과 멀티태스킹의 차이 : 멀티프로그래밍은 자원낭비를 막는 것이고 멀티태스킹은 여러 프로그램을 수행하기 위한 것