본문 바로가기

학부_대학원/운영체제

(21)
스레싱[Thrashing]과 작업세트[Working Set] 스레싱[Thrashing]이란?어떤 프로세스가 너무 적은 양의 페이지 할당이 되어 있다고 생각해보자.그러면 해당 프로세스를 실행 할 때마다 Page Fault가 발생될 것이다.이로 인해 페이지 교체하는데 많은 자원과 시간이 소모 될 것이다.실행시간보다 페이지 찾는데 시간과 자원이 소비되는 현상이 스레싱이라고 한다. 이러한 스레싱을 보완하기 위한? 생각중 하나가 작업세트[Working Set] 이다.프로세스 당 메인 메모리에 유지 할 수있는 페이지의 양을 작업 세트라고 한다.그러면 작업세트의 크기를 결정하는 방법에는 무엇이 있을까?1. 고정 크기 할당 정책모든 프로세스마다 동일한 페이지 수를 할당 시켜준다.2. 가변 크기 할당 정책각 프로세스 마다 다르게 페이지 수를 할당 시키는 방식이다.페이지 부제가 자..
페이지 교체 정책[Page Replacement Policy] 페이지 교체란?프로세서가 프로그램을 실행하기 위해서 필요한 페이지 A가 필요하다고 가정하자.그래서 해당 페이지가 메모리에 존재하는지 확인하는데... 없다!!그러면 찾아서 메모리에 올려야 할 것이다. 하지만 물리 메모리가 가득 차있다면?4G중 4G가 가득 차있다면 ... 그러면 가장 필요없다고 생각되는 친구를 디스크로 쫓아내고 공간을 마련해야 할것이다.그러면 어떤 페이지를 디스크로 쫓아 낼 것인가? 고민을 해보자..그냥 내맘대로?... 쫓아 냈다고 가정하자. 그런데 막상 쫓아 내고 보니까.. 다음에 또 필요한 친구였다. 그러면 또 이를 해결하기 위해서 과정이 필요 할 것이다. 최대한 효율적으로 미래를 알순 없지만 미래를 예상해서 쫓아 내야 할것이다.그러면 가장 효율적인 쫓아냄 == 가장 효율적인 페이지 교..
Component[컴포넌트] Window에 관련된 문서나 인터널 책을 읽다보면Component라는 용어가 많이나온다. 이를 모르고 책을 읽다보면신경쓰여서 진행 할 수가 없던거 같다.Component란 영어로 일단 구성요소이다.그럼 무엇인가를 구성하는 요소인것을 알수 있다.그런데 컴퓨터에서 많이 사용하는 컴포너트라는 개념은독립적인 단위의 소프트웨어 모듈이라고 한다.독립적이란 의미에서 다른것에 큰 영향을 받지 않는다는 의미를 해석 할수 있다.해당 모듈 하나는 맡은 역할이 있다는 것을 알수있다.이를 좀 더 잘설명한 글이 있어 가져왔다.컴포넌트를 한마디로 표현하자면 소프트웨어 시스템에서 독립적인 업무 또는 독립적인 기능을 수행하는 모듈로서 이후 시스템을 유지보수 하는데 있어서 교체가 가능한 부품이다. 이 정의를 하드웨어 부품과 관련시켜 보..
Deadlock Deadlock이라 하면 교착상태라고 해서 운영체제를 공부하다보면 심심치 않게 들을 수있다. 대표적으로 4가지 경우가 있고 etc... 그럼 설명하면... 교착상태는 동일한 자원을 공유하고 있는 두 개의 컴퓨터 프로그램들이, 상대방이 자원에 접근하는 것을 사실상 서로 방해함으로써, 두 프로그램 모두 기능이 중지되는 결과를 낳는 상황 말로 설명하면 이런데 밑의 그림을 보고 이해하면 무엇보다 편한다. Thread1이 Resource1 코드를 실행 하기 위해서 해당 자원을 잠근다. 그리고 Thread2는 Resource2 코드를 실행 하기 위해서 해당 자원을 잠근다. 만약에 Resource1 코드에서 Resource2를 접근 하는 코드가 있을 경우 Resource2 코드에서 Resource1를 접근하는 코드가..
가상 메모리 to 물리 메모리[3] 앞에 설명한 내용을 통해서 Linear Address를 구했다. 이제 Paging을 통해서 최종 목표인 Physical Address를 구하도록 한다. Paging이라고 하면 무엇을 의미하는가? 가상 주소를 블록 단위[Page]로 메모리를 관리하는 방식을 의미한다. 바꿔 말하면 Linear Address[선형주소]룰 물리주소를 바꿔서 관리하는 방식? 그러면 왜 이런 Paging 이라는 기법을 사용하는가. 무슨 이득이 있길레? 단편화[Fragmentation]의 발생을 줄여 메모리를 효과적으로 사용한다. 내부 단편화, 외부 단편화 설명 [http://richong.tistory.com/admin/entry/post/?id=44] 그리고 메모리를 페이지 단위로 사용 하기 때문에, 해당 페이지 번호만 알면 메..
크리티컬 섹션 vs 뮤텍스 vs 세마포어 스레드 동기화 방법 User Mode Synchronization[유저모드 동기화] 동기화를 하는 과정에서 커널의 자원을 이용하지 않고 수행 --> 커널모드로 전환이 이루어 지지 않기 때문에, 성능상의 이점 Kernel Mode Synchronization[커널모드 동기화]동기화가 진행되는 과정에서 커널의 자원을 이용 --> 커널모드로 전환이 이루어 지기 때문에, 성능상의 저하가 발생유저 모드에서 제공하지 못하는 기능 제공 임계영역이란?두개 이상의 스레드가 동시에 접근해서는 안되는 공유 자원 영역두개의 스레드가 동시에 임계영역에 접근할 경우 문제가 발생할 수 있음 EX)하나의 변수에 10이라는 값이 저장A 스레드는 하나의 변수에 값을 더하기 하는 역할B 스레드는 하나의 변수에 값을 빼기 하는 역할 만약에..
가상 메모리 to 물리 메모리[용어] 보호되어 있는 글입니다.
가상 메모리 to 물리 메모리[2] Segment 기법이 가상 메모리 관리에서 사용된다. Segment라고 하면 단편화? 라고 해석이 된다. 무엇을 단편화 한다는 것인가? 내용은 논리적 의미에 부합하도록 연속적인 공간을 할당 하는 것이라고 한다. 이게 무슨 의미인가? 하나의 process에서 code 영역과 데이터 영역, 스택 영역 등 여러가지 부분이 있을 것이다. 이러한 부분을 각각 분할 해서 메모리에 배열 한다는 것이다. 이러한 세그먼트를 찾아가기 위해서 segment table이 존재한다. 대표적인 segment table은 커널에 존재하는 Global Descriptor Table[GDT]와 Local Descriptor Table[LDT]가 존재 한다. 그전에 Descriptor라는 용어에 대해서 설명 하고자 한다. Descrip..