CS/SystemSoftware

    Cache Lab trans.c #2

    Cache Lab trans.c #2

    cache lab에서 trans.c를 통해 행렬을 전치시키는 작업에 있어서 cache miss가 얼마나 달라지는지 시뮬레이션해보자! 이전 포스팅 Cache Lab csim.c #1 cache lab에서 csim.c를 통해 cache의 동작 방식을 시뮬레이션해보자! SystemSoftware - Cache Memory #1 cache memory에 대해서 알아보자 Locality Temporal locality(시간 지역성) : 최근에 접근했던 data나 명.. hyeo-noo.tistory.com 연관 포스팅 SystemSoftware - Cache Memory #3 SystemSoftware - Cache Memory #2 SystemSoftware - Cache Memory #1 cache memor..

    SystemSoftware - Cache Memory #3

    SystemSoftware - Cache Memory #3

    SystemSoftware - Cache Memory #2 SystemSoftware - Cache Memory #1 cache memory에 대해서 알아보자 Locality Temporal locality(시간 지역성) : 최근에 접근했던 data나 명령이 가까운 미래에 다시 사용될 가능성이 높다. (마지막으로 사용된 시.. hyeo-noo.tistory.com Cache 최적화에 대해서 알아보자 miss rate : cache에 찾고자 하는 정보가 없는경우. 예를 들어 hit 상태일 때 cache에서 정보를 가져오는 경우 1Cycle이 걸린다고 하면, miss 상태라면 memory를 참조해서 정보를 가져오게 되고, 이 때 약 100Cycle걸린다. (단순 비교를 위한 cycle 수) 따라서 hit가 ..

    SystemSoftware - Exceptional Control Flow #3

    SystemSoftware - Exceptional Control Flow #3

    SystemSoftware - Creating Processes #2 SystemSoftware - Creating Processes #1 OS에서 process를 만드는 방식에 대해서 알아보자 process는 fork()라는 syscall을 통해서 child process를 생성한다. fork를 호출한 process가 parent process가 되고,.. hyeo-noo.tistory.com 지난번에 이어서 Exceptional Control Flow에서의 Shells, Signals, Nonlocal jumps에 대해서 알아보자 Shell : processor를 생성해 주는 역할 shell의 종류 sh shell csh/tcsh bash shell : default Linux shell shell의..

    Cache Lab  csim.c  #1

    Cache Lab csim.c #1

    cache lab에서 csim.c를 통해 cache의 동작 방식을 시뮬레이션해보자! SystemSoftware - Cache Memory #1 cache memory에 대해서 알아보자 Locality Temporal locality(시간 지역성) : 최근에 접근했던 data나 명령이 가까운 미래에 다시 사용될 가능성이 높다. (마지막으로 사용된 시간이 오래될수록 다시 사용될 hyeo-noo.tistory.com cache lab을 하기 위해서 반드시 이해해야 할 개념이 있다. cache에 접근하기 위한 address bit의 구조 cache 메모리 자체의 구조 cache에 data를 mapping 하는 방식 해당 개념에 대해서 알쏭달쏭하다면 위 링크를 통해서 이해하고 오자! cache lab tar 파일..

    SystemSoftware - Cache Memory #2

    SystemSoftware - Cache Memory #2

    SystemSoftware - Cache Memory #1 cache memory에 대해서 알아보자 Locality Temporal locality(시간 지역성) : 최근에 접근했던 data나 명령이 가까운 미래에 다시 사용될 가능성이 높다. (마지막으로 사용된 시간이 오래될수록 다시 사용될 hyeo-noo.tistory.com cache write방식에 대해서 알아보자 Cache Write는 어떤 방식으로 동작할까? 만약 cache에 write를 했는데 hit가 발생한 경우 Write-through : cache에 데이터를 입력하고 메모리에 바로 작성한다. (cache와 메모리의 정보는 항상 같음) 비용이 많이 든다는 단점이 존재. Write-back : 일단 cache에 수정사항을 입력하고 메모리에는..

    SystemSoftware - Cache Memory #1

    SystemSoftware - Cache Memory #1

    cache memory에 대해서 알아보자 Locality Temporal locality(시간 지역성) : 최근에 접근했던 data나 명령이 가까운 미래에 다시 사용될 가능성이 높다. (마지막으로 사용된 시간이 오래될수록 다시 사용될 가능성이 낮아짐) Spatial locality(공간 지역성) : 최근에 접근했던 주소와 가까운 data가 미래에 다시 사용될 가능성이 높다. 아래로 갈수록 느리면서 용량이 크고 가격이 싼 저장공간이 위치한다. 위로 갈 수록 용량은 적지만 속도가 빠르고 비싼 저장공간이 위치한다. cache의 메모리 공간은 일정한 크기의 blocks으로 나뉘어진다. cache에서 읽어 들일 수 있는 크기를 일정한 단위로 지정하는 것이다. 위 그림을 보면 CPU가 14번 블럭을 요청했고 cac..

    SystemSoftware - Creating Processes #2

    SystemSoftware - Creating Processes #2

    SystemSoftware - Creating Processes #1 OS에서 process를 만드는 방식에 대해서 알아보자 process는 fork()라는 syscall을 통해서 child process를 생성한다. fork를 호출한 process가 parent process가 되고, 새로 생긴 process가 child가 process이다... hyeo-noo.tistory.com int wait(int *child_status) child를 reaping하기 위해서 명시적으로 child가 종료할 때까지 기다리는 syscall return : child의 pid 값 만약 int *child_status 가 null이 아니라면 문제가 발생한 것이다. 이때 여러개의 매크로를 통해서 어떤 문제가 발생했는지..

    SystemSoftware - Creating Processes #1

    SystemSoftware - Creating Processes #1

    OS에서 process를 만드는 방식에 대해서 알아보자 process는 fork()라는 syscall을 통해서 child process를 생성한다. fork를 호출한 process가 parent process가 되고, 새로 생긴 process가 child가 process이다. int fork(void) return을 2번 한다. parent에서 fork를 호출하면 child에서 return 하고 parent에서도 return 한다. 이때 return 값에 따라서 parent인지 child인지를 구분할 수 있다. 0을 return 하면 child이고, child의 PID를 return 하면 parent이다. child는 parent의 모든 부분이 복제되어 생성된다. (가상 주소, parent에서 open ..

    SystemSoftware - Exceptional Control Flow #2

    SystemSoftware - Exceptional Control Flow #2

    SystemSoftware - Exceptional Control Flow #1 예외상황(예외처리)에 관해서 알아보자 예외 상황 : Segmentation Fault, Hardware Interrupt 등을 예외 상황이라고 한다 CPU는 명령어 주소에 있는 레지스터에 적혀있는 메모리에 가서 명령을 수행하고, 다 hyeo-noo.tistory.com 이전 포스팅에 이어서 Process와 context switch에 대해서 알아보자 Process : 실행중인 Program에서의 instace (Program : class, Process : object 라고 하기도 한다) Process의 추상화를위한 2개의 중요한 key 가 있다. 1. Logical control flow : 각각의 program이 cpu..

    SystemSoftware - Exceptional Control Flow #1

    SystemSoftware - Exceptional Control Flow #1

    예외상황(예외처리)에 관해서 알아보자 예외 상황 : Segmentation Fault, Hardware Interrupt 등을 예외 상황이라고 한다 CPU는 명령어 주소에 있는 레지스터에 적혀있는 메모리에 가서 명령을 수행하고, 다음 명령어를 받고 메모리에 가서 명령을 수행하는 반복적인 작업을 컴퓨터가 꺼질 때까지 반복한다. 이러한 시퀀스를 Control Flow라고 한다. 일반적으로 코드는 연속적으로 실행된다. 하지만 jump와 branch 같은 제어문(if, for loop)을 통해서 control flow를 바꿀 수 있다. 그리고 함수 호출을 통해서도 control flow를 제어할 수 있다. 하지만 위와 같이 일반적으로 제어할 수 없는 부분(system 상태의 변화)이 존재한다. 하드디스크, 네트..