1. Program과 Process의 차이
program
은 작업을 위해 실행할 수 있는 파일
의 단위, process
는 메모리에 적재되어 CPU를 할당받아 현재 실행 중
인 프로그램2. Process와 Thread의 차이
process를 구성
하는 실행 단위
3. Process가 도중에 중지되는 경우, 그 원인과 다시 실행할 수 있는 방법
interrup
혹은 system call
등에 의해 process가 중지될 수 있음, PCB안에 해당 process정보가 저장되어 있기 때문에 추후에 실행 가능한 상태가 되면 PCB를 통해
다시 실행4. Process의 Heap, Stack 영역에 들어있는 정보
Heap
: 동적 할당되는 모든 요소들Stack
: 매개변수, 로컬변수, 리턴값, 복귀주소 등5. Stack을 Thread마다 독립적으로 할당하는 이유
독립적인 실행 흐름
을 갖기 위해서는 독립적이 함수 호출이 보장
되어야 하기 때문6. Thread와 Multi-thread의 차이, Multi-thread의 장단점
Thread
: 할당 받은 자원을 이용한 프로세스의 실행 흐름 단위
Multi-thread
: 한 프로세스 내에 이러한 thread가 여러 개
동작하는 방식7. Multi-thread, Multi-process의 차이
Multi-thread
: 적은 메모리
공간 차지, 빠른 context switch, 동기화 문제, 하나의 thread가 종료되면 전체 thread 종료
Muti-Process
: 하나의 process가 죽더라도 다른 process에는 영향을 끼치지 않음
. 메모리 공간 차지, CPU 점유 시간을 많이 차지함8. Context Switching 이란?
CPU사용/제어권이 이전
되는 것9. Scheduling이 필요한 이유?
공정성
을 주기 위해 필요10. Scheduler / CPU Scheduler
disk와 memory
간 Scheduling 담당memory와 CPU
간 Scheduling 담당 11. 중기 스케줄러에서 suspended 상태와 blocked 상태의 다른 점?
blocked
는 다른 I/O 작업을 기다리는 상태이기 때문에 스스로 ready queue
로 돌아갈 수 있음suspened
는 외부적인 이유로 유예됐기 때문에 스스로 돌아갈 수 없음
12. FCFS Scheduling 을 개선한 방식
FCFS
는 먼저 도착한 Process에게 CPU를 할당하는 기법Convoy Efeect
라는 문제점이 있음SJF (Shortest Job First)
기법 사용 - 짧은 실행 시간을 갖는 프로세스에게 CPU먼저 할당Starvation 현상
나타날 수 있음13. Round Robin Scheduling 방식에서 time quantum 설정에 따른 결과
FCFS
과 다를 바 없음Context Switching
이 자주 일어나 overhead
발생14. Overhead?
추가적으로 시간, 메모리, 자원이 사용
되는 현상15. Synchronous / Asynchronous
호출한 쪽
에서 확인호출받은 쪽
에서 확인16. Blocking / Non-Blocking
제어권을 들고
있음바로 return
을 해주어 다른 일을 할 수 있음17. Race Condition (경쟁상태)
공유 자원에 접근
하려고 할 때, 동기화 매커니즘 없이 접근하여 그 순서에 따라 결과가 달라지는 문제18. Critical Section
공유 데이터를 접근하는 프로그램 코드
영역다른 process가 접근하지 못하도록
해야함19. Critical Section을 Process들이 같이 쓸 수 있는 조건
상호 배타(Mutual Exclusion)
: 어떤 task가 critical section을 사용 중이면 다른 task는 사용 불가Progress
: 현재 critical section을 사용 중인 task가 없고, 들어가길 원하는 task가 있다면 바로 들여보냄한정된 대기 (Bounded Waiting)
: Process가 진입 가능한 횟수에는 제한이 있어서 특정한 process만 계속 진입하는 것을 방지20. Thread-safe
여러 thread가 동시에 공유 자원에 접근
할 때, 의도한대로 동작하는 것 Mutex, Semaphore
등의 동기화 기법으로 제어해주어야 함21. Reentrant
동시에 접근해도 언제나 같은 실행 결과
를 반환22. Mutex Lock / Semaphore
동기화 대상이 하나
, Semaphore는 하나 이상
23. Memory 구조의 순서 - CPU에서 가까운 순
24. 메모리 관리
실행되어야 하는 모든 process
가 필요한 시기에 적절하게 memory의 할당
을 받을 수 있도록 memory 관리 필요25. RAM
main memory의 공간을 늘린다
는 것. 그만큼 한 번에 메모리에 적재시킨 후 처리할 수 있는 process의 양이 많아지고 컴퓨터 속도가 빨라짐26. 외부 단편화 / 내부 단편화
외부 단편화
: 전체 메모리 공간은 충분한 공간을 가지지만 그것들이 연속적이지 않고 작은 공간들로 분산되어 있는 상태내부 단편화
: 프로세스에 할당된 메모리의 크기가 실제로 사용할 영역보다 커서 남은 공간이 생긴 상태압축 기술
사용 -> 시간이 오래 걸리고 성능이 저하됨 -> paging 기법
사용27. 가상 메모리 사용
메모리가 부족하여 일어나는 예기치 않은 오류
들을 가상메모리를 사용함으로써 일어나지 않고 정상적으로 프로세스가 진행할 수 있도록 도와줌28. Page Fault
29. Belady's Anomaly
30. Optimal Page Replacement
31. LRU (Least Recently Used Algorithm)
오버헤드가 큰
것이 단점이지만 가장 이상적