0. 프로세스와 쓰레드
|
프로세스 |
쓰레드 |
정의 |
프로그램이 메모리에 로딩되어 실행중인 상태 |
하나의 프로그램 내에서 여러 개의 실행흐름을 두기 위한 모델 |
영역 |
프로세스 별로 독립된 리소스를 할당받음 |
같은 프로세스 내의 자원을 공유 |
1. 프로세스 생성
1) 이름 결정
2) 프로세스 리스트에 추가
3) 우선순위 부여
4) *PCB 생성
5) 초기자원 할당
*PCB(Process Control Block)
>프로세스 제어 블럭.
>프로세스에 대한 중요정보가 저장.
>프로세스가 생성될 때 생성, 완료시 제거. //'완료'라는게 뭘 나타내는건지 아직 불명확.
>부모/자식 프로세스 관계에서도 공유되지 않음.
>운영체제가 제어를 다른 프로세스에게 넘겨줄 때, 현재 실행 중인 프로세스의 정보를 해당 PCB에 저장 후 넘김.
2. 프로세스 상태
1) 생성(New): 생성만 된 상태, 운영체제에 의한 실행 불가.
2) 준비(Ready): 실행을 위해 CPU 할당을 기다림.
3) 실행(Run): CPU를 할당받아 실행됨.
>Dispatch: 준비 -> 실행
>Timer Runout: 실행 -> 준비 (CPU 사용시간 만료)
4) 대기(Wait): 실행(Run) 중에, 특정 작업(입출력 등)을 기다리는 동안 멈추어 있는 상태.
5) Wake Up: 대기 -> 준비
6) 종료(Exit): 작업이 완료되어 CPU 할당이 해제됨.
2. 프로세스 교착 상태(DeadLock)
-둘 이상의 프로세스가, 자신의 자원을 놓아주지 않으면서 상대의 자원을 기다리는 무한 대기 상태.
-조건
1) 상호 배제(Mutual Exclusion): 프로세스들이 자원에 대한 배타적 통제권을 요구할 때.
2) 점유와 대기: 다른 프로세스의 자원을 요구하며, 자신의 자원을 해제하지 않고 기다릴 때
3) 비선점 조건: 상대 프로세스의 자원사용을 도중에 선점할 수 없을 때.
4) 환형 대기 조건(Circular wait): 이런 상태가 고리형으로 이뤄질 때(서로 엮여서 해결 불가)
-해결 방안
>교착상태 예방: 교착 조건을 부정하여 미리 막음.
> 〃 회피: 교착 가능성을 염두하고 적절히 회피 //설명이 겁나 애매하게 나와있음 ㅡㅡ
> 〃 탐지: 교착 발생시 원인을 규명하여 해결.
> 〃 복구: 교착을 일으킨 프로세스를 종료, 교착 상태의 자원을 선점하여 해결.
3. 프로세스 메모리 구성
-코드 영역: 프로그램 동작 코드(명령어)가 담김.
-데이터 영역: 전역 변수, 정적(Static) 변수.
-스택 영역: 지역 변수, 매개 변수, 리턴 어드레스.
-힙 영역: 동적 메모리.
4.프로세스 스케줄링
-프로세스의 실행 순서 결정.
-'어떤 프로세스에게 CPU 사용권을 넘겨줄 것인가'
-CPU 성능 평가 요소 //왜 갑자기 이 설명이 튀어나오는건지 모르겠지만, 일단 외우셈
1) CPU 이용률(Utilization): 프로세스들이 CPU를 사용하는 비율, CPU가 쉬는 시간을 측정하여 나머지 시간을 사용.
2) 시스템 처리율(Throughput): 단위 시간당 완료된 작업 수.
3) 반환 시간(Turnaround Time): 작업에 소요되는 모든 수행시간.
4) 대기 시간(Waiting Time): 프로세스가 준비 큐에서 대기하는 시간.
5) 응답 시간(Response Time): 프로세스가 요구한 시점부터 응답하기까지 걸린 시간.
-스케줄링 정책
>선점형 스케줄링 정책(Preemptive Scheduling Policy)
>>어떤 프로세스가 CPU를 사용중에도. 더 높은 우선순위의 프로세스에 의해 선점당할 수 있는 방식.
>>실시간 프로세스, 대화식 시분할 시스템에서 유용.
>>종류
1) 최단 잔여 시간(SRT: Short Remaining Time)
-> 가장 빨리 종료될 수 있는 작업을 우선 처리.
2) 순환할당 스케줄링(RR: Round Robin)
-> 각 프로세스에게 번갈아가며, 동일한 사용시간을 할당.
3) 다단계 큐(Feedback)
-> 우선순위 별로 큐를 준비.
-> 대기 큐에 따라 정해진 스케줄링 실행.
-> 큐 내의 작업은 FCFS 방식으로 처리.
-> 일반적으로 사용됨.
>비선점형 스케줄링 정책(Non-Preemptive)
>>CPU를 사용중인 프로세스가 제어를 넘겨주어야 사용 가능.
>>종류
1) 선입선출(FIFO)
-> 도착한 순서대로 처리.
2) 우선순위(Priority) 스케줄링
-> 작업 중요도에 따라 처리.
-> 중요도가 동일할 시, 도착 순서를 비교.
-> 무한 정지, 기아 상태가 될 수 있음
->> 에이징 기법으로 해결.
*)최단작업 우선 처리(SJF)
-> CPU 사이클이 작은 것부터 처리.
-> 선점, 비선점 모두 사용가능.
>기한부(Deadline) 스케줄링
>>명시된 시간 내에 작업이 완료되도록 하는 방식.
>>실시간 처리 시스템에 유용.
'Subject > 정보보안 산업기사' 카테고리의 다른 글
1장] 운영체제 - 6) 유닉스 & 리눅스 (0) | 2017.01.02 |
---|---|
1장] 운영체제 - 5) 분산 운영체제, 보안 운영체제 (0) | 2017.01.01 |
1장] 운영체제 - 4) 파일시스템 (0) | 2016.12.30 |
1장] 운영체제 - 3) 기억장치, 단편화 (0) | 2016.12.22 |
1장] 운영체제 - 1) 개요, 기능, 역사 (0) | 2016.12.19 |