•Compter Science
[OS/OSTEP] 30.threads-condition variable, 쓰레드 컨디션 변수, 컨디션 변수 두개, 쓰레드 동기화 문제, 생산자/ 소비자, covering condition/broadcast,
30.threads-condition variable # 글을 시작하며 저번 포스팅까지는 락이라는 것이 무엇인지 알았고, lock() unlock()으로 단지 락을 사용해보기만 했고 그 락은 unlock()이 오면 리턴한다고만 알았던 것을 직접 어떻게 구현되는지를 살펴보았다. 그 과정에서 spin방식을 사용해 while루프를 돌며 계속해서 Test-And-Set과 같은 Atomic한 기법으로 락을 소유할 수 있는지를 검사하는 과정을 거쳐서 구현할 수 있다는 사실을 알았다. 그러나 그 사실에서 CPU낭비가 생기기 때문에 lock이 올때까지 대기할 수 있도록 하는 방법에 대해서 고민해봤고, 첫째로는 yiled()를 사용해서 락을 가질 수 없다는 즉시 CPU를 반환하는 방법을 알 수 있었다. 둘째는 락이 없다..
[OS/OSTEP] 28.threads-locks , 쓰레드 Spin, Test-And-Set, Comapre-And-Swap, futex, wait, park, unpark,
[OS/OSTEP] 27.threads-api , 쓰레드 락(lock), 컨디션 변수, 쓰레드 사용시 주의할점 [OS/OSTEP] 26.threads-intro - 쓰레드 개념 정리와 필요성, atomic, 전역변수 지난 게시글. [OS/OSTEP] 22.vm-beyondphys-policy : 메모리 교체 정책 - LRU,FIFO,OPTIMAL,RANDOM,CLOCK #16 22.vm-beyondphys-poli.. devforyou.tistory.com [OS/OSTEP] 28.threads-locks # 시작하며 저번 챕터에서는 락을 일단 사용해봤다. 락을 사용하면서 임계영역에 대해 동시접근을 막는 상호배제가 가능한 것을 알았고, 임계영역에 대한 접근을 할때 락을 가지지 못하면 리턴하지 않는다 했다..
[OS/OSTEP] 27.threads-api , 쓰레드 락(lock), 컨디션 변수, 쓰레드 사용시 주의할점
[OS/OSTEP] 26.threads-intro - 쓰레드 개념 정리와 필요성, atomic, 전역변수 지난 게시글. [OS/OSTEP] 22.vm-beyondphys-policy : 메모리 교체 정책 - LRU,FIFO,OPTIMAL,RANDOM,CLOCK #16 22.vm-beyondphys-policy # 시작하며 교체 정책의 핵심은 내보내도 될만한 페이지를 어떤 방식으로.. devforyou.tistory.com [OS/OSTEP] 27.threads-api # 시작하며 저번 챕터에서는 쓰레드에대한 전반적인 개념과 쓰레드가 어떻게 형성되고 사용되는지, 또 락은 무엇인지에 대한 간단한 개념을 배웠다. 이번장에서 또한 락, 컨디션 변수에 대해서 짚고 넘어간다. # 쓰레드 생성 - 쓰레드는 어떻게 구..
[OS/OSTEP] 26.threads-intro - 쓰레드 개념 정리와 필요성, atomic, 전역변수
지난 게시글. [OS/OSTEP] 22.vm-beyondphys-policy : 메모리 교체 정책 - LRU,FIFO,OPTIMAL,RANDOM,CLOCK #16 22.vm-beyondphys-policy # 시작하며 교체 정책의 핵심은 내보내도 될만한 페이지를 어떤 방식으로 선택하는 것인가이다. 생각보다 특이한 케이스들이 존재하고 공부하닥 랜덤이라는 방식이 어쩌면 devforyou.tistory.com [OS/OSTEP] 26.threads-intro # 글을 시작하며 얼마전에 운영체제 중간고사를 위해서 벼락치기로 글들을 정리했던 기억이 있다. 그때 3일만에 17개 글을쓰며 개념을 정리해나갔는데 큰 도움은 됐지만 정신적으로 너무 힘들었다. 그래서 이번에는 조금 시간적 여유를 두고 정리하려고 한다. 저번..
[OS/OSTEP] 22.vm-beyondphys-policy : 메모리 교체 정책 - LRU,FIFO,OPTIMAL,RANDOM,CLOCK #16
22.vm-beyondphys-policy # 시작하며 교체 정책의 핵심은 내보내도 될만한 페이지를 어떤 방식으로 선택하는 것인가이다. 생각보다 특이한 케이스들이 존재하고 공부하닥 랜덤이라는 방식이 어쩌면 가장 뛰어날 수 있다는 생각도 하게 됐다. 천천히 살펴보자 # 캐시 관리 페이지를 메모리와 디스크상에서 관리하면서 많이 쓰이는 페이지를 구별해내는 이 과정 또한 캐싱의 한 과정이라고 볼 수 있다. 캐싱의 모든 목적은 캐싱 된 것을 가장 많이 사용하게 해야한다. 그래야지 성능 향상이 있다. 지금의 문제에서는 디스크에서 가져오는 페이지를 최소화 해야한다. 즉 캐시 히트 횟수를 늘리는 것이다. 이 hit/miss 횟수를 안다면 평균 메모리 접근 시간(average memory access time, AMAT..
[OS/OSTEP] 21.vm-beyondphys : 스왑공간(swap space), 메모리스왑 - 메커니즘 #15
21.vm-beyondphys # 시작하며 지금까지의 전제는 주소공간(가상공간)의 크기가 비현실적으로 작아서 모두 물리메모리에 탑재가 가능한 상황이었다. 그러나 실제로는 다수의 프로세스들이 메모리를 사용하고 있다. 그리고 큰 주소공간(가상공간)을 지원하기 위해서는 현재는 사용되지 않는 것들에 대해서는 디스크에 보관해줘야 이 문제를 해결 할 수 있다. 그러나 하드디스크는 매우 느리다. 하드디스크에서 메모리공간으로 올리는거 자체가 많은 자원을 소모하기 때문에 신중해야 한다. 스왑공간(swap space)를 추가하여 큰 가상 메모리가 있는 것처럼 환상을 심어줄 수있다. # 스왑 공간 ( swap space) 가장 먼저 디스크에 페이지들을 저장할 수 있는 일정 공간을 확보해야한다. 이러한 공간을 스왑 공간( s..