티스토리 뷰
단일 / 다중 스레드
프로세스가 다중 스레드를 가지게 되면 동시에 하나 이상의 작업을 수행할 수 있다.
다중 스레드의 장점 - 응답성, 자원 공유, 경제성, 다중 처리기 구조의 활용
CPU 스케줄링
CPU 자원을 언제 어느 프로세서에 배당할지 결정
CPU 이용률, 처리량을 최대화하고 총 처리시간, 대기시간, 응답시간은 최소화시키는게 목표
선점, 비선점 스케줄링 - 비선점 스케줄링은 한 프로세스가 CPU를 할당받으면 다른 프로세스가 뺏을 수 없다 > 교착상태의 조건
스케줄링의 종류
- 비선점 스케줄링
FCFS - 선입선처리
SJF(Shortest Job First) - 작업시간이 짧은 프로세스 우선
HRN(Highst Response ratio Next) - 대기시간+작업시간/작업시간 짧은 순으로 우선. SJF에서 작업시간이 긴 작업의 대기시간이 길어지는 것 보완
- 선점 스케줄링
RR(Round Robin) 스케줄링
시분할 시스템을 위해 설계. 시간 할당량 동안 프로세스를 실행한다. > 시간 할당량이 크면 FCFS와 비슷, 시간 할당량이 작으면 문맥 교환이 많아짐
SRT(Shortest Remaining Time) - 가장 짧은 시간이 소요되는 프로세스 먼저 수행
다단계 큐(MLQ, Multi Level Queue) - 각각의 큐가 별도의 스케줄링 알고리즘 사용
다단계 피드백 큐(MFQ) - 프로세스가 큐 사이를 이동하여 실행되며, 응답시간이 짧은 프로세스는 단계 1에서 즉시 수행, 계산 위주의 작업은 낮은 단계에서 충분한 시간동안 CPU를 할당받음.
ex) UNIX 시스템
- 교착 상태
둘 이상의 서로 다른 프로세스가 자원을 점유하면서 다른 프로세스에 할당되어 있는 자원을 요구하는 경우
상호배제(다른 프로세스가 자원을 점유해 사용할 수 없음)
점유와 대기(자원을 점유한 프로세스가 하나 이상 존재하고 이 프로세스는 다른 프로세스의 자원을 점유하기 위해 대기)
비선점
환형 대기(프로세스와 자원이 원형을 이루며 자원을 갖고 있으며 다른 프로세스에게 자원을 요구)
- 해결방안 : 교착상태 예방/회피/탐지/복구
메모리 관리
- 스와핑
프로세스가 메모리에 있는 것 뿐만 아니라 임시로 예비 저장장치로 보내졌다가 되돌아옴
실제 물리 메모리 크기보다 큰 경우에도 실행할 수 있음
- 고정 분할
메모리를 똑같이 고정된 크기로 분할하여 여러 프로세스를 동시에 배정
- 가변 분할
메모리의 어떤 부분이 사용하는지 파악하는 테이블을 통해 공간 할당
메모리 관리 정책
반입(Fetch) 정책 - 언제 가져올지 결정
요구/예상 반입 정책 - 예상은 미리 옮기는 방법
배치(Placement) 정책 - 어디 위치할지 결정
최초 적합 - 첫번째 가용 공간
최적 적합 - 가능한 공간 중 가장 작은 곳
최악 적합 - 가장 큰 곳
교체(Replacement) 정책 - 어떤 것을 제거하고 새 프로그램을 넣을지
페이지 부재가 발생하면 공간을 만들기 위해 제거할 페이지를 선택
페이지 교체기법
FIFO
최적교체 - 페이지 프레임 수가 증가하면 페이지 부재가 더 증가하는 FIFO 모순을 해결하기 위한 정책
LRU - 페이지마다 카운터를 두어 가장 오랫동안 사용하지 않은 페이지 제거(카운터 때문에 시간 오버헤드가 발생)
ㄴSCR(2차 기회 알고리즘) - 자주 쓰이는 페이지가 대체되는 걸 막기 위해 참조 비트 사용(프로세스가 수행되면 1로 바꿈)
ㄴNUR(개선된 2차 기회 알고리즘) - 참조 비트에 변경 비트도 사용.
계수 기반 페이지 교체
ㄴLFU - 참조 횟수가 가장 작은 페이지 교체(단점 - 바로 전에 사용된 페이지가 교체될 수도 있음)
ㄴMFU - 가장 작은 참조 횟수를 가진 페이지가 최근 참조되었다고 추정
가상 기억장치
실 기억장치와 주소 매핑이 필요
논리 어드레스 공간을 블록으로 나누어 용량이 맞는 블록을 로드
- 세그먼테이션
논리적 블록 단위. 사용할 때 할당됨. 외부 단편화가 발생할 수 있다(프로그램의 크기보다 분할이 작은 경우)
- 페이징
고정된 단위를 할당. 내부 단편화가 발생할 수 있다.