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 Schedulerdisk와 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. RAMmain memory의 공간을 늘린다는 것. 그만큼 한 번에 메모리에 적재시킨 후 처리할 수 있는 process의 양이 많아지고 컴퓨터 속도가 빨라짐26. 외부 단편화 / 내부 단편화외부 단편화 : 전체 메모리 공간은 충분한 공간을 가지지만 그것들이 연속적이지 않고 작은 공간들로 분산되어 있는 상태내부 단편화 : 프로세스에 할당된 메모리의 크기가 실제로 사용할 영역보다 커서 남은 공간이 생긴 상태압축 기술 사용 -> 시간이 오래 걸리고 성능이 저하됨 -> paging 기법 사용27. 가상 메모리 사용메모리가 부족하여 일어나는 예기치 않은 오류들을 가상메모리를 사용함으로써 일어나지 않고 정상적으로 프로세스가 진행할 수 있도록 도와줌28. Page Fault29. Belady's Anomaly30. Optimal Page Replacement31. LRU (Least Recently Used Algorithm)오버헤드가 큰 것이 단점이지만 가장 이상적