본문 바로가기

Computer Science/OS7

캐시의 지역성 캐시의 지역성 원리 내시 메모리는 속도가 빠른 장치와 느린 장치간의 속도차에 따른 병목 현상을 줄이기 위한 범용 메모리이다. 이러한 역할을 수행하기 위해서는 CPU가 어떤 데이터를 원할 것인가를 어느 정도 예측할 수 있어야 한다. 캐시의 성능은 작은 용량의 캐시 메모리에 CPU가 이후에 참조할, 쓸모 있는 정보가 어느 정도 들어있느냐에 따라 좌우되기 때문이다. 이때 적중율(Hit rate)을 극대화시키기 위해 데이터 지역성(Locality)의 원리를 사용한다. 지역성의 전제조건으로 프로그램은 모든 코드나 데이터를 균등하게 Access하지 않는다는 특성을 기본으로 한다. 즉, Locality란 기억 장치 내의 정보를 균일하게 Access 하는 것이 아닌 어느 한 순간에 특정 부분을 집중적으로 참조하는 특성.. 2021. 10. 29.
메모리 관리 각각의 프로세스는 독립된 메모리 공간을 갖고, 운영체제 혹은 다른 프로세스의 메모리 공간에 접근할 수 없는 제한이 걸려있다. 단지, 운영체제만이 운영체제 메모리 영역과 사용자 메모리 영역의 접근에 제약을 받지 않는다. Swapping 메모리의 관리를 위해 사용되는 기법. 표준 Swapping 방식으로는 RR과 같은 스케줄링의 다중 프로그래밍 환경에서 CPU 할당 시간이 끝난 프로세스의 메모리를 보조 기억장치(e.g. 하드디스크)로 보내고 다른 프로세스의 메모리를 불러 들일 수 있다. Fragmentation(단편화) 프로세스들이 메모리에 적재되고 제거되는 일이 반복되다보면, 프로세스들이 차지하는 메모리 틈 사이에 사용하지 못할 만큼의 작은 자유 공간들이 늘어나게 되는데, 이것이 단편화이다. 단편화는 2가.. 2021. 10. 29.
프로세스 동기화 Critical Section(임계영역) 멀티 스레딩의 문제점에서 나오듯, 동일한 자원을 동시에 접근하는 작업을 실행하는 코드 영역을 Critical Section이라한다. Semaphores(세마포어) 소프트웨어상에서 Critical Section 문제를 해결하기 위한 동기화 도구 카운팅 세마포어 - 가용한 개수를 가진 자원에 대한 접근 제어용으로 사용되며, 세마포어는 그 가용한 자원의 개수로 초기화 된다. 자원을 사용하면 세마포어가 감소, 방출하면 증가된다. 이진 세마포어 - MUTEX라고도 불린다. 0과 1의 값만 가능하며 다중 프로세스들 사이에서 Critical Section 문제를 해결하기 위해 사용한다. Busy Waiting(바쁜 대기) Busy Waiting은 세마포어의 단점이다. Spin.. 2021. 10. 29.
CPU 스케줄러 CPU 스케줄러의 스케줄링 대상은 Ready Queue에 있는 프로세스들이다. FCFS(First Come First Served) 특징 먼저 온 고객을 먼저 서비스해주는 방식, 즉 먼저 온 순서대로 처리 비선점형(Non-Preemptive) 스케줄링 - 일단 CPU를 잡으면 CPU burst가 완료될 때까지 CPU를 반환하지 않는다. 할당되었던 CPU가 반활될 때만 스케줄링이 이루어진다. 문제점 convoy effect - 소요시간이 긴 프로세스가 먼저 도달하여 효율성을 낮추는 현상이 발생한다. SJF(Shortest Job First) 특징 다른 프로세스가 먼저 도착했어도 CPU burst time이 짧은 프로세스에게 선 할당 비선점형(Non-Preemptive) 스케줄링 문제점 starvation .. 2021. 10. 22.
스케줄러 프로세스를 스케줄링하기 위한 Queue에는 세 가지 종류가 존재한다. Job Queue : 현재 시스템 내에 있는 모든 프로세스의 집합 Ready Queue : 현재 메모리 내에 있으면서 CPU를 잡아서 실행되기를 기다리는 프로세스의 집합 Device Queue : Device I/O 작업을 대기하고 있는 프로세스의 집합 각각의 Queue에 프로세스들을 넣고 빼주는 스케줄러에도 크게 세 가지 종류가 존재한다. 장기스케줄러(Long-term scheduler or job scheduler) 메모리는 한정되어 있는데 많은 프로세스들이 한꺼번에 메모리에 올라올 경우, 대용량 메모리(일반적으로 디스크)에 임시로 저장된다. 이 pool 에 저장되어 있는 프로세스 중 어떤 프로세스에 메모리를 할당하여 ready q.. 2021. 10. 22.
멀티 스레드 멀티 스레딩의 장점 프로세스를 이용하여 동시에 처리하던 일을 스레드로 구현할 경우 메모리 공간과 시스템 자원 소모가 줄어들게 된다. 스레드 간의 통신이 필요한 경우에도 별도의 자원을 이용하는 것이 아니라 전역 변수의 공간 또는 동적으로 할당된 공간인 Heap 영역을 이용하여 데이터를 주고 받을 수 있다. 그렇기 때문에 프로세스 간 통신 방법에 비해 스레드 간의 통신 방법이 훨씬 간단하다. 심지어 스레드의 context switch는 프로세스의 context switch와는 달리 캐시 메모리를 비울 필요가 없기 때문에 더 빠르다. 따라서 시스템의 throughput이 향상되고 자원 소모가 줄어들며 자연스럽게 프로그램의 응답 시간이 단축된다. 이러한 장점때문에 여러 프로세스로 할 수 있는 작업들을 하나의 프.. 2021. 10. 22.