2강. Process
- process 구성 요소
- register → program counter, stack pointer
- memory → (address space)
- context switch
- kernel starck에 중요한 register 값을 저장
- General purpose of registers
- PC
- kernel stack pointer
- 곧 실행될 프로세스를 kernel stack에 담음
- 곧 실행될 kernel stack으로 switch
- kernel starck에 중요한 register 값을 저장
- Direct execution → Limited Direct Execution
- interrupt : OS는 concurrency 보장 위해 interrupt 차단하는 기능을 수행해줌
- user-kernel mode 분리: OS에게 precvilege 부여
3강. Scheduling Basics
- Metric
- Turnaround time: T_completion - T_arrival(프로세스 도착 시간)
- Response time: T_firststart - T_arrival
- Fairness: 단위 시간당 완료된 프로세스 수
- Deadline: Turnaround time < Completion time
- Non-preemptive scheduling
- FIFO
- SJF: 가장 짧은 job부터 → turnaround time good!
- preemptive scheduling
- STCF: 새 job들어온 시점에서 끝나는 시간을 다시 계산 (기존vs.new)→ preemptive하게 : turnaround time good!
- Round Robin → turnaround time bad
- Incorporate I/O
- I/O작업 수행시 프로세스가 running → blocked(sleep)
- MLFQ
- Rule 1: Priority(A) > Priority(B) : A 실행
- Rule 2: Priority(A) = Priority(B) : Round Robin
- Rule 3: 새 job 들어오면 가장 높은 priority 부여
- Rule 4: 할당 개수 다 쓰면 강등
- Rule 5: 일정 time peroid 지나면 system 모든 작업을 최상단 priority로 올려준다
4강. Advanced Scheduling Scheme
- Fair share scheduler → Lottery Scheduling
- ticket transer
- ticket inflation : CPU time 더 필요할 때 일시적으로 자신을 부풀리는 것을 의미
- Stride Scheduling : Stride = N / Ticket
- Cache Coherence : Cache 일관성을 위해 bus snoofing을 통해 process 별 cache 값을 변화시키는 것
- Cache Affinity : 동일 프로세스 → 동일 CPU
5강. Memory and Address Space
- Memory Leak : heap의 메모리 영역이 새는 것 → why? heap에서 사용 가능한 용량을 넘어버렸기 때문
- Dangling Pointer : Memory Freeing before it is finished using
- Dynamic allocation : base and bound register로 address translation진행
- address translation 실행 위치 : CPU 내 MMU
- base register & bound register → CPU 내 MMU에 위치 (hardware의 도움을 받는다)
- base register : process 가상 주소 공간에 매핑될 물리 주소 시작값 get
- bound register : 가상 주소 공간 상한을 담아두는 레지스터 (특정 값보다 크다? ERROR)
- Instruction Fetch
- Execute
- 주소 변환을 위해 Hardware가 지원하는 것
- Previleged mode : kernal, user mode
- base, bound register
- base, bound register로 가상 주소 변환, 잘못된 가상 주소 check
- 오류 발생했을 때 처리할 수 있는 능력
- raise exception 하는 능력
- OS가 주소 변환 시 해야 할 일
- 빈 공간 관리하기 → 프로세스의 새 주소 공간 위해 실제 메모리에서 공간 찾아야 함
- 프로세스 종료 → 프로세스가 사용하던 공간 회수
- context switch 일어날 때마다 프로세스의 base, bound 레지스터의 정보가 필요 (당연 실제 메모리 주소에서 매핑된 가상 주소 공간 찾아가려면 그러겠찌) → 프로세스 구조나 정보를 PCB에 저장해둠! (base and bound 역시 PCB에 저장해버리는겨)
- 프로세스 중지 시
- 프로세스의 스케줄링 취소
- 현재 위치에서 새 위치로 주소 공간 복사
- 저장해둔 base 레지스터 정보로 base레지스터 업데이트하여 새 위치 가리킴
- 프로세스 중지 시
- 예외발생했을 때 호출할 핸들러 or 함수
반응형