•Compter Science/Operating System

    [OS/OSTEP] 27.threads-api , 쓰레드 락(lock), 컨디션 변수, 쓰레드 사용시 주의할점

    [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] 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

    [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

    [OS/OSTEP] 21.vm-beyondphys : 스왑공간(swap space), 메모리스왑 - 메커니즘 #15

    21.vm-beyondphys # 시작하며 지금까지의 전제는 주소공간(가상공간)의 크기가 비현실적으로 작아서 모두 물리메모리에 탑재가 가능한 상황이었다. 그러나 실제로는 다수의 프로세스들이 메모리를 사용하고 있다. 그리고 큰 주소공간(가상공간)을 지원하기 위해서는 현재는 사용되지 않는 것들에 대해서는 디스크에 보관해줘야 이 문제를 해결 할 수 있다. 그러나 하드디스크는 매우 느리다. 하드디스크에서 메모리공간으로 올리는거 자체가 많은 자원을 소모하기 때문에 신중해야 한다. 스왑공간(swap space)를 추가하여 큰 가상 메모리가 있는 것처럼 환상을 심어줄 수있다. # 스왑 공간 ( swap space) 가장 먼저 디스크에 페이지들을 저장할 수 있는 일정 공간을 확보해야한다. 이러한 공간을 스왑 공간( s..

    [OS/OSTEP] 20.vm-smalltables : 더 작은 테이블, 하이브리드 테이블, 멀티레벨페이지 #14

    [OS/OSTEP] 20.vm-smalltables : 더 작은 테이블, 하이브리드 테이블, 멀티레벨페이지 #14

    20.vm-smalltables # 시작하며 페이징의 문제점이 하나 더 생겼다. 페이지 테이블이 크면 많은 메모리 공간을 가져야하는데, 그 메모리 공간은 선형 페이지 테이블구조이기때문에 연속된 공간을 가져야한다. 또 많은 프로세스가 존재하기 때문에 페이지 테이블의 크기도 커진다. 이 문제를 이번장에서 해결해 보도록 하자 # 더 큰 페이지 페이지 테이블을 줄이기 위해서 어떻게 해야할까? PTE의 개수를 줄이면 될 것이다. 그걸 줄이기 위해서는 페이지 자체의 크기를 키우면 페이지의 개수가 줄어든다. 당연한 결과이다 가상주소 예를들어 8비트를 사용중이라면 offset을 사용하는 만큼 page를 표현하는 vpn의 몫은 작아진다. 그러나 페이지가 커지면 내부 단편화(internal fragmentation)문제..

    [OS/OSTEP] 19.vm-tlb : 더 빠른 변환을 위한 TLB와 구조#13

    [OS/OSTEP] 19.vm-tlb : 더 빠른 변환을 위한 TLB와 구조#13

    19.vm-tlb # 시작하며 이전 포스팅에서 정리했던거와 같이 페이징(paging)은 메모리접근을 두번 더 해야하는 성능저하가 발생한다. 이 단점을 하드웨어의 도움을 받아서 성능향상을 일으킬 것이다. TLB(Translation Lookaside Buffer)가 바로 그 주인공이다. TLB는 MMU의 일부이다. 간단하게 말하면 페이지(page)를 캐싱하는 역할을 한다. # TLB의 기본 알고리즘 지금까지 사용했었던 선형 페이지 테이블과 하드웨어로 관리되는 TLB가 어떻게 주소변환을 빠르게 수행하기 위해서 작업하는지를 알 수 있는 제어 흐름 알고리즘이다. 가상주소에서부터 모든 것이 시작된다. 순서대로 코드를 읽어보자 가상주소에서 비트 마스킹을 통하여 VPN을 추출한다. 그리고 TLB에서 해당 VPN이 캐..