CS/Operating System
-
[OS] Virtual Memory (2/2)CS/Operating System 2022. 1. 25. 12:02
앞선 포스트에서 가상 메모리(Virtual Memory)는 논리적 메모리와 물리적 메모리을 분리해 실제 메모리 크기와 상관 없이 가상의 메모리를 사용하는 것이 장점 이라고 설명했다. 그렇다면 가상 메모리에서 프로세스의 크기가 남은 물리적 메모리의 크기보다 더 클 경우 어떻게 할까? Swapping swapping이란 main memory에 있는 일부 프로세스를 secondary memory(HDD, SSD, Flash 등)으로 내보내고 실행할 프로세스를 secondary memory에서 main memory로 불러오는 작업을 말한다. swap out: secondary memory로 내보내는 과정 swap in: main memory로 불러오는 과정 swap time: swap out time + swa..
-
[OS] Virtual Memory (1/2)CS/Operating System 2022. 1. 23. 09:54
🔍 Backgroud 프로그램을 실행하기 위해서는 프로그램 코드를 디스크에서 메모리로 가져와야 한다. 만약 물리적인 메모리의 크기보다 프로그램의 크기가 더 크다면 이 프로그램은 실행할 수 없을 것이다. 하지만 실제 프로그램을 보면, 많은 경우에 프로그램 전체가 메모리에 올라갈 필요가 없다는 것을 알 수 있다. 이러한 생각으로 메모리에 프로그램의 일부를 로딩해 실행할 수 있는 가상메모리(Virtual Memory) 개념이 등장했다. Virtual Memory(가상 메모리)란 ? 가상 메모리는 논리적 메모리와 물리적 메모리을 분리해 실제 메모리 크기와 상관 없이 가상의 메모리를 사용하는 방법을 말한다. 가상 메모리를 사용함으로써 다음과 같은 이점들을 제공한다. 프로그램은 사용 가능한 물리적 메모리 크기에 제..
-
[OS] Cache LocalityCS/Operating System 2022. 1. 22. 18:24
캐시 지역성(Cache Locality) 캐시 지역성 원리 캐시 메모리는 속도가 빠른 장치와 느린 장치간의 속도차에 따른 병목 현상을 줄이기 위한 범용 메모리이다. 이러한 역할을 수행하기 위해서는 CPU 가 어떤 데이터를 원할 것인가를 어느 정도 예측할 수 있어야 한다. 캐시의 성능은 작은 용량의 캐시 메모리에 CPU 가 이후에 참조할, 쓸모 있는 정보가 어느 정도 들어있느냐에 따라 좌우되기 때문이다. 적중률(Hit rate)을 극대화 시키기 위해 데이터 지역성(Locality)의 원리를 사용한다. 지역성의 전제조건으로 프로그램은 모든 코드나 데이터를 균등하게 Access 하지 않는다는 특성을 기본으로 한다. 즉, Locality란 기억 장치 내의 정보를 균일하게 Access하는 것이 아닌 어느 한 순간..
-
[OS] Deadlock은 무엇인가? 해결 방법은? - Detection, RecoveryCS/Operating System 2021. 12. 2. 21:31
이번 포스팅은 이전에 다뤘던 deadlock 해결방법 포스팅에 이어 Deadlock Recovery에 대해서 알아보자~ Deadlock Detection deadlock 방지를 위한 사전 작업을 하지 않기 때문에 deadlock이 발생할 수 있다. 주기적으로 deadlock이 발생하는지 확인해야 한다. 👉 이를 확인하기 위해 Resource Allocation Graph(RAG)를 사용한다. Resource Allocation Graph (RAG) deadlock detection을 위해 사용한다. directed(방향성을 가지고), bipatite(이분) graph를 사용한다. 용어 그래프 G = (N,E), N = {Np, Nr} Np는 프로세스의 집합 = {P1, P2, ..., Pn} Nr는 리소..
-
[OS] Deadlock은 무엇인가? 해결 방법은? - Prevention, AvoidanceCS/Operating System 2021. 12. 2. 19:25
Deadlock이란 ?? Deadlock은 두 개 이상의 작업이 서로 상대방의 작업이 끝나기 만을 기다리고 있기 때문에 결과적으로 아무것도 완료되지 못하는 상태를 말한다. Deadlock은 왜 일어날까 ❔❔ Deadlock은 critical section의 기본조건인 progress를 보장하지 못해 발생하는 문제이다. Critical section의 기본 조건 1. Mutual Exclusion 어떤 프로세스가 Critical section을 실행 중이라면, 다른 프로세스는 Critical section을 실행할 수 없다! 2. Progress 어떠한 프로세스도 critical section을 실행하지 않고, critical section을 실행하려는 프로세스가 있다면, 다음 critical sectio..
-
[OS] Synchronization ProblemCS/Operating System 2021. 12. 1. 23:07
Semaphore를 사용하여 race condition이 발생할 수 있는 문제들을 해결해보자!!!!!! Bounded-Buffer Problem Bounded-Buffer Problem은 앞의 포스팅에서 봤던 Producer-Consumer Problem을 말한다. 이때 아이템을 생성하고 소비하는 데이터가 공유되기 때문에 race condition이 발생했다. 👉 Semaphore를 사용하여 해결한다. 조건 Producer와 Consumer 스레드를 가진다. N 크기의 buffer를 가진다. 공유 데이터 Semaphore mutex = 1 → critical section Semaphore full = 0 → buffer 안의 아이템의 수 Semaphore empty = N → buffer 안의 빈 슬롯..
-
[OS] Critical Section Problem H/W Solution - Mutex Locks & SemaphoreCS/Operating System 2021. 12. 1. 21:46
앞의 Synchronization과 Critical-Section Problem에서 설명했던 critical section problem의 solution에 대해 알아보자! Critical section의 기본 조건 1. Mutual Exclusion 어떤 프로세스가 Critical section을 실행 중이라면, 다른 프로세스는 Critical section을 실행할 수 없다! 2. Progress 어떠한 프로세스도 critical section을 실행하지 않고, critical section을 실행하려는 프로세스가 있다면, 다음 critical section을 실행하는 프로세스가 무기한 연기되어선 안 된다! 👉 deadlock 방지 3. Bounded Waiting 각 프로세스는 유한한 횟수의 시도 ..
-
[OS] Critical Section Problem S/W Solution - Peterson's SolutionCS/Operating System 2021. 12. 1. 19:53
앞의 Synchronization과 Critical-Section Problem에서 설명했던 critical section problem의 solution에 대해 알아보자! Critical section의 기본 조건 1. Mutual Exclusion 어떤 프로세스가 Critical section을 실행 중이라면, 다른 프로세스는 Critical section을 실행할 수 없다! 2. Progress 어떠한 프로세스도 critical section을 실행하지 않고, critical section을 실행하려는 프로세스가 있다면, 다음 critical section을 실행하는 프로세스가 무기한 연기되어선 안 된다! 👉 deadlock 방지 3. Bounded Waiting 각 프로세스는 유한한 횟수의 시도 ..