[프로세스, 스레드] ⦁프로세스 -정의, 특징(독립 주소 공간), 세부특징(4영역), 스레드와의 관계(최소 1개) ⦁스레드 -정의, 특징(스택만 할당) ⦁멀티프로세스 -장점(안전성), 단점(오버헤드, Context Switching) ⦁멀티스레드 -장점(메모리 공유), 단점(안전성) [PCB, Context Switching] ⦁PCB(Process Control Block) -프로세스 메타데이터 저장(3영역), LinkedList 방식 추가 ⦁Context Switching -이전 프로세스 상태를 PCB에 보관, 다른 정보를 PCB에서 레지스터 적재 [CPU 스케줄링] ∙프로세스 상태 -New, Ready, Running, Waiting, Terminated ∙비선점 스케줄링 -FCFS(First Come First Served) -SJF(Shortest Job First) ∙선점 스케줄링 -Priority Scheduling(정적, 동적, 기아현상, Aging기법) -Round Robin(시간단위할당, 크면 FCFS, 작으면 Context Switching↑오버헤드) -Multilevel Queue(우선순위 할당, 각 큐 독자적, 이동 불가) -Multilevel Feedback Queue(동적 우선순위, Aging, 큐 간 이동, 짧은 작업 유리) ∙CPU 스케줄링 척도 -Response Time(작업이 처음 실행되기까지 걸린 시간) -Turnaround Time(실행 시간과 대기 시간을 모두 합한 시간) |
[데드락] ⦁발생조건 ➀상호배제: 자원은 한 번에 한 프로세스만 ➁점유대기: 최소 하나의 자원 점유, 추가로 점유하기 위해 대기 ➂비선점: 다른 프로세스에 할당된 자원 강제 회수 불가 ➃순환 대기: 대기 프로세스의 집합이 순환 형태로 자원을 대기 ⦁예방 ➀상호배제 부정: 여러 프로세스가 자원 공유(동기화 문제 발생 가능) ➁점유대기 부정: 모든 자원은 한번에 요구 ➂비선점 부정: 프로세스에 우선순위 부여 ➃순환 대기 부정: 자원에 고유번호 할당 후 순서대로 요구 ⦁회피 -은행원 알고리즘(미리 최대 요구 자원 파악, 사전 검사) ⦁탐지와 회복 -자원 할당 그래프로 탐지 -교착 상태 프로세스 종료 및 해제 [세마포어, 뮤택스] ⦁세마포어 -공유 자원 접근 제한 위한 0이상의 정수(P: 1->0, V:0->1) ⦁뮤텍스 ➀데커 알고리즘(flag, turn, 비선점) ➁피터슨 알고리즘(flag, turn, 선점) ➂제과점 알고리즘(가장 작은 수의 번호표 임계 구역 진입) [페이징, 세그먼테이션] ∙페이징 -프로세스->페이지(일정 크기) -메모리->프레임(페이지 크기) -CPU->페이지 테이블(페이지 인덱스, 프레임 인덱스)->메모리 주소 -내부 단편화 ∙세그먼테이션 -프로세스->세그먼테이션(동적크기)->메모리 -CPU->세그먼트테이블(base,limit)->메모리 -외부 단편화 [페이지 교체 알고리즘] ➀FIFO(First In First Out) ➁OPT(최적화, 미래) ➂LRU(Least Recently Used, 과거) ∙교체방식 -global(모든 프로세스 페이지 교체) -local(자기 프로세스 페이지만 교체, 중요도에따라 프레임 수 할당) ∙MMU(Memory Management Unit) |