CS/OS

    [운영체제] Locks #1

    [운영체제] Locks #1

    Lock에 대해서 알아보자 Lock이 필요한 이유 2개 이상의 thread가 동시에 공유 자원에 접근할 경우 race condition(병행성 문제)이 발생해서 결과를 예측할 수 없다. 따라서 공유 자원에 대한 동기화 메커니즘이 필요한데 그중 가장 일반적인 메커니즘이 Lock이다. Critical Section 공유자원에 접근하는 코드의 조각이다. Mutual Exclusion(병행성 해결) Critical Section은 하나의 부분인 것처럼 실행되어야 한다.(Atomically) Critical Section은 한 번에 하나의 쓰레드만 실행 가능하다. 다른 모든 쓰레드들은 Critical Section에 진입하기 위해서 현재 사용 중인 쓰레드가 종료될 때까지 entry에서 기다려야 한다. Lock의 ..

    [운영체제] Page Replacement Policy (페이지 교체 알고리즘)

    [운영체제] Page Replacement Policy (페이지 교체 알고리즘)

    [운영체제] Swapping #1 메모리 swapping에 대해서 알아보자 Swap : 필요한 주소공간 전체를 메모리에 올려 두는것이 아니라 그때 그때 필요한 것들만 메모리에 올리고, 필요없어지면 하드디스크로 내보내는 동작 Swap을 구 hyeo-noo.tistory.com Swap과 관련된 메커니즘에 이어서 page replacement policy에 대해서 알아보자 replacement의 목적은 Cache miss를 최소화하기 위함이다. Cache가 여기서 왜 나왔을까? > 메모리는 하드디스크의 cache역할을 하기 때문이다. Average Memory access time(AMAT) - 평균 메모리 접근 시간 AMAT = (Phit * Tm) + (Pmiss * Td) Tm : 메모리에 접근하는 시..

    [운영체제] Swapping (가상 메모리)

    [운영체제] Swapping (가상 메모리)

    메모리 Swapping에 대해서 알아보자 Swap : 필요한 주소 공간 전체를 메모리에 올려 두는 것이 아니라 그때그때 필요한 것들만 메모리에 올리고, 필요 없어지면 하드디스크로 내보내는 동작 Swap을 구현하는 방법들 Overlays : 코드의 일부분, 데이터의 일부분을 가져오고 내보내는 동작을 프로그래머가 수동으로 구현하는 방법 Process-level swapping : Process의 주소공간 전체가 메모리에 올라왔다가, 다른 process가 동작할 때 다시 제자리로 돌아가는 방법. Page-level swapping : Page단위로 디스크에서 가져왔다가 내려보내는 방법 Swap을 하기위한 공간 : swap space 디스크의 일부분을 swap space로 미리 설정을 해줌 swap space의..

    [XV-6 운영체제] Copy-on-Write #2  구현

    [XV-6 운영체제] Copy-on-Write #2 구현

    [XV-6 운영체제] Copy-on-Write #1 Copy-on-Write가 어떤 기능을 하는지 알아보자 Copy on Write는 기본적으로 forks 기능과 관련이 있다. forks는 parent process를 이용해서 child process를 만들어 내는 것으로 볼 수 있다. (기본적으로 복제를.. hyeo-noo.tistory.com 이전 포스팅인 Copy-on-Write에 대한 설명에 이어서 Copy-on-Write를 구현해 보겠다. 1. vm.c 수정 page table entry(PTE)에 writeable flag(PTE_W)를 disable (read-only 상태로 만들어준다) 새로운 page 할당없이 parent process의 page를 child process의 mapping..

    [XV-6 운영체제] Copy-on-Write #1

    [XV-6 운영체제] Copy-on-Write #1

    Copy-on-Write가 어떤 기능을 하는지 알아보자 Copy on Write는 기본적으로 forks 기능과 관련이 있다. forks는 parent process를 이용해서 child process를 만들어 내는 것으로 볼 수 있다. (기본적으로 부모 프로세스를 복제함) 대부분의 자식 프로세스들은 이후에 exec을 이용해서 새로운 process로 Overwite한다. 그러면 부모로부터 복사해온 페이지들은 다 쓸모없는 것들이 되고 만다. 복사를 하고 바로 exec을 통해서 새로운 process를 만들어 낼 텐데 굳이 복사를 할 필요가 있는가? 라는 의문에 의해서 탄생한 것이 Copy on Write 라는 방법이다. Copy on Write : parent process의 이미지를 child에 복사하지 않..