운영체제(OS)

    [운영체제] 메인 메모리

    [운영체제] 메인 메모리

    CPU는 레지스터, 캐쉬, 메인 메모리에만 접근이 가능하다. 따라서 프로그램을 실행하기 위해선 메인 메모리에 프로그램을 적재해야한다. 메인 메모리의 데이터를 읽어서 조작하는 과정은 CPU에 있는 레지스터를 동작하는 것보다 느린데, CPU가 메인 메모리에서 데이터를 읽어오기를 기다리는 것을 stall이라고 한다. 따라서 이런 대기 시간을 줄이기 위해서 캐쉬에 일부 내용을 저장함으로써 속도 문제를 어느정도 해결한다. 프로세스가 실행될 때 실행 중인 프로세스는 메모리의 보호를 위해 os와 서로 다른 프로세스에 접근이 불가능해야 한다. → base와 limit registers 페어를 정의함으로써 프로세스 범위 만큼만 접근 가능하게 한다. → base ≤ x < base + limit [주소 할당] 프로그램은 ..

    [운영체제] 교착상태(Deadlock) 회복

    교착상태를 탐지하는 알고리즘은 언제 써야하나? 1 ) CPU 속도가 느려질 때 (시스템의 성능이 떨어질 때) 2 ) 특정 시간 마다 반복 이번에는 교착상태가 발생했을 때 사용되는 방법에 대해 알아보자. 1 ) 프로그램 종료 모두 종료 데드락이 풀릴 때 까지 하나하나씩 제거 -> 어떤 순서로 프로그램을 하나씩 제거해야 할까? 낮은 우선순위부터 제거한다. 계산한 시간이 짧은 것 부터 제거한다. 자원 많이 안쓰는 애부터 제거한다. 2 ) 자원 뺏기 - 희생양을 정한다. - 희생양의 자원을 모두 회수한다. -> 이 경우 기아 상태가 발생할 수 있다.

    [운영체제] 자원할당 그래프

    [운영체제] 자원할당 그래프

    [자원 할당 그래프] 자원 할당 그래프는 간선과 노드로 구성됨. 노드 → 프로세스 노드 / 자원 타입 노드 간선 → 요청 간선 / 할당 간선 / Claim edge(점선) → 자원 할당 그래프에서 싸이클이 생기면 데드락이 생길 수 있음. (항상 그런건 아님)

    [운영체제] 교착상태(Deadlock) 회피

    [운영체제] 교착상태(Deadlock) 회피

    [데드락 회피] 데드락을 회피하기 위해선 사전 정보가 필요하다. → 1 ) 얼마나 많은 자원을 이용할 것인지 → 2 ) 할당 된 자원의 수 → 3 ) 이용 가능한 자원의 수 [안전한 상태] 데드락이 발생하지 않는 상태를 안전한 상태라고 한다. → 모든 프로세스가 실행 후 끝날 수 있는 상태 → safe 상태에서 unsafe상태가 되는 요청을 승인하지 않고 대기시킴으로써 데드락을 회피한다. [데드락 회피 알고리즘] 1 ) 자원 할당 그래프(O(n^2)) : 타입당 자원의 개수가 하나일 때 사용 → 모든 간선을 지우고 프로세스 노드들을 연결함 → 만약 싸이클이 생기면 데드락! 2 ) 뱅크 알고리즘 : 타입당 여러개의 자원을 요구할 때 사용 → 최대 몇 개의 자원을 사용하는지에 대한 사전 정보 필요 → 프로세..

    [운영체제] 교착상태(DeadLock) 예방법

    [운영체제] 교착상태(DeadLock) 예방법

    이번 글에서는 데드락이 무엇인지 그리고 그 데드락을 예방 및 회피하는 방법에 대해서 공부한다. 데드락이란? 여러 프로세스들이 실행되면서 서로가 서로를 끝날 때까지 기다리면서 결국 모두 실행되지 못하는 상황을 말한다. [데드락이 걸리는 조건] 데드락을 방지하기 위해 먼저 데드락이 걸리는 조건을 알아보자. 1 ) Mutual exclusion : 자원을 상호배타적으로 사용한다. → 최소한 하나의 자원이 비공유 모드로 점유되어야 함. (비공유 모드에서는 한 번에 한 스레드만이 그 자원을 사용할 수 있음.) 2 ) Hold and wait : 자원을 가지고 있으면서 다른 자원을 기다리는 프로세스로 구성됨. 3 ) No preemption : 강제로 자원을 뺏는 선점을 하지 않는다. 4 ) Circulalr wa..