스택과 큐
스택
❗ 스택의 특징
👉 자료구조
- LIFO (후입선출)
👉 메모리에 올라간 구조 프로세스 메모리 구조
- 코데힙스
- 코드 영역
- 컴파일후 생성된 기계어
- CPU가 기계 명령어를 가져올때 사용되는 영역
- 프로그램 종료후에도 남아있음
- 데이터 영역
- 전역변수 정적변수
- 컴파일후 할당됨
- 프로그램 종료후에 같이 삭제
- 힙 영역
- 동적할당된 메모리 영역
- new delete, malloc free
- 컴파일중에 할당
- 프로그램 종료후에 같이 삭제
- 스택 영역
- 함수, 지역변수, 매개변수
- 스택 프레임이라고 함수의 호출 정보를 스택처럼 쌓도록 동작하는 구조
- 컴파일중에 할당
- 프로그램 종료후에 같이 삭제
- 코드 영역
👉 미로찾기
-
그래프탐색
- DFS는 보통 재귀로 해결하기도 하지만 스택을 이용해서도 DFS를 진행할 수 있다.
- 코드는 다음과 같다
-
인풋
- 다음 인풋 결과값이 1이면 잘 작동한것이다..(아마도)
10 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 1 0 0 1 0 1 1 0 1 1 1 0 0 1 0 1 1 0 0 0 1 0 0 1 0 1 1 0 1 0 1 0 0 1 0 1 1 0 1 0 1 0 0 1 0 1 1 0 1 0 1 0 0 1 0 1 1 0 1 0 0 0 0 1 0 0 1 1 1 1 1 1 1 1 1 1 0 1 9 8
- 다음 인풋 결과값이 1이면 잘 작동한것이다..(아마도)
-
작동 애니
큐
❗ 큐의 특징
👉 자료구조
- FIFO (선입 선출)
👉 알고리즘
- BFS에서 필수적으로 사용해야한다.
👉 OS CPU 스케쥴링
다음 프로세스를 선택하는데 있어
- linked lsit || binary tree
- FIFO queue
- Priority Queue
1. PCB(프로세스 제어블록) 의 구성요소 [3. 프로세스]
1. process state
1. new, ready, running, waiting, teminated
프로세스 상태 전이도
ready to run : dispatch
run to ready : time limit preemption
wait to ready : 우선순위 preemption
run to wait : non-preemptive
run to end : non-preemptive
_-------------------------------------------
2. SMP에서의 대기큐를 처리하는 2가지 방법 [5. 스케쥴링]
CPU스케쥴링의 개요
멀티 프로그래밍의 기본이라 할 수 있다.
CPU를 최대한 활용할 수 있도록
ready Queue 적절히 실행하는 방법
스케쥴링 단계
1. long-term
job스케쥴링 결정
new to ready state
load a process into memory
2. mid-term
swap out swap in process
3. short-term
인터럽트, 타임아웃, 디스패쳐, CPU스케쥴링
I/O 블록,
select a process to run on CPU
CPU에 고려해야할점은
ready queue 중에서
어떤걸 선택해서 실행해야하는가?
case
------------------------
1. preemptive
강제로 쫒아낼수있음
> 프로세스 상태
- 2. running -> ready(인터럽트 발생) -> timeout
- 3. waiting -> ready(인터럽트 발생) -> 높은 우선순위
장점 :
1.interactive system
3.real-time tasks
2.Good for handling
단점 :
1. 동기화 문제가 복잡.
2. Number of context switches increase.
------------------------
2. none-preemptive
쫒아낼 수 없음
switcing이 불가능
> 프로세스 상태
- 1. running -> waiting
- 4. teminated
장점 :
1. Scheduling overhead is smaller.
2. Number of context switches decrease.
3. Synchronization among processes becomes easier.
단점 :
interactive system
bad for handling
none real-time tasks
------------------------
Dispatcher
context switching이 일어나도록 환경을 만듦
Dispatch latency
= context switching delay
latency가 짧을 수록 시스템의 효율성은 빠르다.
이제 알고리즘...
SMP(멀티 프로세스 스케쥴링) 5.11
대기열을 만드는 방법(read queue)
두가지로 나눌수 있다
1. common ready queue
하나의 ready queue를 하나의 CPU서 처리
장점 : 1.분배할 필요없이 쭉~ load balance가 X
2.스케쥴링 오버헤드가 더 작아짐
3. A process is guarateed to be run on the same CPU.
단점 : 하나의 ready queue를 쓰다보니 캐시 hit ratio 감소
병목현상 가능성
2. pre-core run queue (Each processor may have its own private queue of threads.)
하나의 ready queue를 공유해서 처리
작업이 새로 생기면(new). 운영체제가
queue 개별적으로 적절히 분해하는 방식
장점 : 캐시 hit 성능이 좋음
단점 : load unbalanced가 발생
즉 ,한쪽이 끝나면 노는 CPU가 생긴다.
해결책 : 작업이 없는사람에게 일부 옮겨줌
process migration
PULL내보내 & PUSH갖고가 방법을 동시에 사용
_-------------------------------------------
6. 스케쥴링 알고리즘 [5. 스케쥴링]
알고리즘 선택기준
1. CPU utilization
정해진 시간동안 유용한작업을한 효율
2. Throughput :
waiting + service
3. waiting time :
하나의 process가 ready queue에서 기다리는 시간
4. turnaround time과 waiting time
반환시간과 준비완료큐 대기 시간은 최소화
5. Response time :
ready queue에 들어가서 반응이 나오기까지 걸린시간.
성능분석을 하는 목적
1. 선점평가 : selection evaluation
고객입장
2. 성능예측 :
개발자입장
3. 성능 모니터링 :
원하는 성능이 나오는지 계속 감시
운영자입장
알고리즘
1. FCFS (first com first serced)
들어온 순서대로
장점
1. non-preemptive
단점
1. non-preemptive
2. Convey effect
cpu양보 전까지는 모두 대기
2. SJF
서비스시간 짧은거부터
장점
1.non-preemptive
2. It gives an advantage for shorter job
3. It gives the minimum average waiting time.
단점
1.non-preemptive
2. 불공평한 스케쥴링
3. 다음것이 얼마나 걸리는지 알기 힘듬
It requires execution time estimation of processes.
4. 긴 서비스는 계속 밀린다.
3. SRTF
서비스시간 짧은거부터
장점
1. preemptive
2. It gives an advantage for shorter job
3. It gives the minimum average waiting time.
단점
1. preemptive
2. It requires execution time estimation of processes.
4. RR
장점
1. FCFS
2. Fair for ALL
3. 우선순위 높은순
4. 인터렉티브한 작업 처리가 좋음
단점
1. 오버헤드 큼
2. 타임퀀텀에 따라 퍼포먼스가 갈린다
5. 우선순위 스케듈링
우선순위가 높은 순서대로
동일하다면 FCFS
static, dynamic
단점
1. 새치기 당하기 starvation
낮은 우선순위는 영원히 밀리게된다.
해결책 : Aging
차근차근히 우선순위를 높여준다.
'PS > 자료구조' 카테고리의 다른 글
| 니앙팽이 - 자료구조| 3 | 트리, 이진트리 노트 (0) | 2022.03.13 |
---|---|
|자료구조| 3 | BinSearchTree | 이진 탐색 트리 (0) | 2022.03.13 |
| 니앙팽이 - 자료구조| 1 | 연결 리스트 노트 (0) | 2022.03.13 |
|자료구조| 1 | Double LinkedList_3 | 이중 연결 리스트 (0) | 2022.03.13 |
|자료구조| 1 | Circular LinkedList_2 | 원형 연결 리스트 (0) | 2022.03.13 |