컴퓨터과학

운영체제 (3)

영웅*^%&$ 2018. 1. 19. 18:58
728x90

교착상태 Dead Lock 

둘 이상의 프로세스들이 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 현상


네가지조건(필요충분조건)
상호배제 (Mutual Exclusion) : 한 번에 한 개의 프로세스만 공유자원 사용
점유와 대기 (Hold and wait) : 최소한 하나의 자원 점유, 추가로 점유하기 위해 대기하는 프로세스
비선점 (Non-preemptive) : 다른 프로세스에 할당된 자원은 강제로 빼앗을 수 없음
환형 대기 (Circular wait) : 다른 프로세스들이 원형으로 공유자원을 사용하기 위해 구성되어 있음 
                                   앞이나 뒤에 있는 프로세스의 자원을 요구

교착상태 해결기법
1) 예방기법
사전에 시스템을 제어하여 4가지 조건 중 (적어도) 어느 하나를 부정함으로써 수행됨
상호배제 부정 : 한 번에 여러 개의 프로세스게 공유자원 사용
점유대기부정 : 프로세스대기를 없애거나 자원이 점유되지 않은 상태에서 자원 요구
비선점 부정 : 자원을 반납
환형대기 부정 : 어느 한 쪽으로만 자원을 요구
but 자원낭비가 가장 심하다
점유 및 대기 부정의 경우 각 프로세스는 한 꺼번에 자기에게 필요한 모든 자원 요구하거나 그렇지 않은 경우에 작업을 진행 x

2)회피기법 
교착상태가 발생하면 적절히 피해가는 방법
은행원 알고리즘 : Dijkstra가 제안 은행에서 모든 고객의 요구가 충족되도록 현금을 할당하는 데서 유래함
안전상태 교탁상태가 발생한느 것을 불안정상태 
1 자원의 양 사용자가 일정
2 프로세스의 모든 요구를 유한한 시간에 할당
3 대화식 시스템에 적용 불가

3)발견기법
교착상태가 발견했는지 점검
교착상태 발견 알고리즘, 자원할당그래프 사용 

4)회복기법 
프로세스를 종료, 자원선정, 자원 회복
프로세스 종료 : 교착상태에 있는 프로세스들을 하나씩 종료해가며 교착상태를 해결
자원 선점 : 우선순위가 낮은 프로세스, 수행된 정도가 적은 프로세스, 사용되는 자원이 적은 프로세스 등을 위주로
해당 프로세스의 자원 선정 





기억장치 개요 
레지스터: cpu 내에 존재하는 메모리(가장 빠르고 작다) 
캐시 기억장치: cpu와 주기억장치 속도차로 사용하는 메모리
주기억장치(RAM) : 실행중인 프로그램 적재하는 메모리 
보조기억장치:하드디스크 

레지스터, 캐시기억장치, 주기억장치의 프로그램과 데이터는 CPU가 직접 액세스 할 수 있으나 보조기억장치에 있는 데이터는 직접 액세스ACCESS 할 수 없다     (왜 직접 액세스 할 수 없냐면 보조기억장치와 CPU는 속도의 차이가 나기 때문에 그 속도를 유지하기 위해서 RAM을 중간매개자로 세웠기 떄문이다 그리고 속도의 차이가 나는 이유는 보조기억장치 메모리가 너무 크기 때문이다) 

기억장치의 관리전략
보조기억장치의 프로그램이나 데이터를 주기억장치에 적재시키는 시기, 적재위치등을 지정하여 주기억장치를 효과적으로 사용하기 위해서 반입전략, 배치전략, 교체전략이 있다 

1 반입전략
언제 주기억장치로 적재할 것인지 결정 
요구반입: 요구할 때 적재
예상반입: 미리 예상하여 적재 
2 교체전략 
FIFO, OPT, LRU, LFU, NUR, SCR
이미 사용하고 있는 메모리 중에서 어느 영역을 교체하여 사용할 것인지 결정하는 전략
3 배치전략
주기억장치의 어디에 위치시킬 것인지 결정하는 전략
최초 적합 : 빈 영역 중에서 첫 번째 분할 영역에 배치
최적 적합 : 빈 영역 중에서 단편화를 가장 적게 남기는 분할 영역에 배치
최악 적합 : 빈 영역 중에서 단편화를 가장 많이 남기는 분할영역에 배치

단편화 : 주기억장치의 분할된 영역에 프로그램이나 데이터를 할당할 경우 분할된 영역이 데이터보다 작거나 커서 생기는 빈공간을 의미함

기억장치할당기법
연속 할당기법
연속으로 할당하는 기법
단일 분할 할당기법 : 오버레이, 스와핑
다중분할할당기법 : 고정분할할당기법, 동적분할할당기법

분산할당기법
주기억장치내에 분산하여 할당하는 기법으로 페이징 기법과 세그멘테이션 기법으로 나눌 수 있다

단일 분할 할당 기법
: 한순간에는 오직 한 명의 사용자만이 주기억 장치의 사용자 영역을 사용

초기의 운영체제에서 많이 사용

초기에는 주기억장치보다 큰 사용자 프로그램은 실행할 수 없었으나 오버레이 기법을 사용하면서 이 문제가 해결
(오버레이 기법 1) 여러 개의 조각으로 분할한 후 필요한 조각을 차례대로 주기억장치에 적재 2) 적재된 프로그램의 조각 중 불필요한 조각이 위치한 장소에 새로운 프로그램의 조각을 중첩하여 적재한다)
프로그램크기가 작을 경우 사용자 영역이 낭비될 수 있음
스와핑 기법
1)전체를 주기억장치에 할당하여 사용하다 필요에 따라 다른 프로그램과 교체하는 기법이다
2)SWAP OUT : 주기억장치에 있는 프로그램이 보조기억장치로 이동
   SWAP IN : 보조기억장치에 있는 프로그램이 주기억장치로 이동
3)교체 과정을 여러 번 수행할 수 있다
4) 페이징 기법으로 발전되었다

다중분할 할당기법
1) 고정분할할당기밥 = 정적할당기법
주기억장치의 사용자 영역을 여러 개의 고정된 크기로 분할하고 프로그램을 각 영역에 할당하여 수행하는 기법
전체가 주기억장치에 위치해야만 함
프로그램이 분할된 영역보다 커서 영역 안에 들어갈 수 없는 경우가 발생할 수 있다
크기를 미리 알고 있어야 한다
현재는 사용되지 않는다
(너무 비효율적이기 때문에 현재는 사용되지 않는다 왜 비효율적인가? 일정된 크기로 나누기 때문에 프로그램이 너무 크면 들어가지 않고 너무 작으면
그만큼 단편화가 생기기 때문이다)
2) 가변분할할당기법 = 동적할당기법
프로그램램으을 주기억장치에 적재하면서 필요한 만큼의 크기로 영역을 분할함
주기억장치를 효율적으로 사용할 수 있으며, 다중프로그래밍의 정도를 높일 수 있다
실행될 프로세스 크기에 대한 제약이 적다
단편화를 상당부분 해결할 수 있으나 영역과 영역 사이에 단편화가 발생할 수 있다

단편화 Fragmentation
1)내부 단편화
: 분할된 영역이 할당된 프로그램의 크기보다 크기 때문에 프로그램이 할당된 후 사용되지 않고 남아있는 빈 공간
(주기억장치 메모리 > 적재될 프로그램)
2) 외부 단편화
: 분할된 영역이 할당된 프로그램의 크기보다 작기 때문에 프로그램이 할당될 수 없어 사용되지 않고 빈공간으로 남아있는 분할된 전체영역
(주기억장치 메모리 < 적재될 프로그램)

단편화 해결방법(단편화 최소화) -> 주기억장치 재사용??
1)통합기법
주기억장친치내에 인접해 있는 단편화된 공간을 하나로 통합하는 작업
빈 공간이 다른 빈공간과 인접되어 있는지 점검한 후 결합하여 사용한다
2)압축기법
주기억장치내에 분산되어 있는 단편화된 빈공간을 결합하여 하나의 큰 가용공간을 만든다
쓰레기 수집이라고도 한다 -> 티끌모아 태산
주기억 장치의 한쪽 끝으로 옮겨서 큰 가용공간을 만든다
압축이 실행되는 동안 모든 일을 일시 중단한다

가상기억장치
:보조기억장치처럼 사용하는 것으로 용량이 적은 주기억장치를 마치 큰 용량을 가진 것처럼 사용하는 기법

주기억장치의 용량보다 큰 프로그램을 실행행하기 위해 사용한다
가상기억장치 주소를 주기억장치의 주소로 변환하는 주소변환 작업이 필요하다
연속적인 주소가 실제 기억장치에서는 연속적일 필요가 없다
연속할당 방식에서 발생할 수 있는 단편화를 해결할 수 있다
주기억장치의 이용률과 다중 프로그래밍의 효율을 높일 수 있다
*구현이 어렵다
*가상기억장치의 일반적인 구현 방법에는 페이징 기법과 세그멘테이션 기법이 있다
<페이징 기법 : 고정된 블록단위 , 세그멘테이션 기법 : 가변적인 블록단위 >

페이징 기법
:주기억장치의 영역을 동일한 크기로 나누어 나누어진 프로그램을(=페이지) 주기억장치의 영역에 적재시켜 실행한다

주소 변환을 위해서 맵 테이블 필요
동일한 크기로 나누므로 외부 단편화는 발생하지 않으나 내부단편화는 발생할 수 있음
*맵 테이블 사용으로 비용이 증가되고 처리속도는 감소
*페이지 부재 : 프로그램 실행시 참조한 페이지가 주기억 장치에 없는 현상을 의미한다

세그멘테이션 기법
:다양한 크기의 논리적인 단위로 나눈 후 주기억장치에 적재해서 실행

논리적인 크기로 나눈단위를 세그먼트라 하며, 각 세그먼트는 고유한 이름과 크기를 갖는다
다른 세그먼트에게 할당된 영역을 침범할 수 없으며, 기억 장치 보호키가 필요하다
주소변환을 위해서 세그먼트 맵테이블 필요
기억장치의 사용자 관점을 보존하는 기억 장치 관리 기법
논리적인 크기로 나누므로 내부단편화는 발생하지 않으나 외부단편화는 발생할 수 있음    


728x90

'컴퓨터과학' 카테고리의 다른 글

간단한 데이터 압축   (0) 2018.10.08
인공지능의 사기적인 능력  (0) 2018.08.27
빅데이터   (0) 2018.03.07
운영체제 (2)   (0) 2018.01.18
운영체제 (1)   (0) 2018.01.18