목록CS (31)
빙응의 공부 블로그

📝서론 지금까지 운영체제가 다루는 기본 개념들의 발전 과정을 살펴보았다. 하나의 물리적 CPU를 다수의 가상 CPU로 확장하여 마치 여러 개의 프로그램이 동시에 실행하는 듯한 착시를 만들었고 개별적인 프로세스가 모두 독립적으로 많은 가상 메모리를 가지는 것처럼 만들었다. 이번 장에서는 프로세스를 위한 새로운 개념인 쓰레드를 소개한다.프로그램에서 한 순간에 하나의 명령어만 실행하는 관점에서 벗어나 멀티 쓰레드 프로그램은 하나 이상의 실행 지점을 가진다. 차이점 1, 쓰레드의 주소 공간 공유와 동일한 값 접근 가능문맥 교환을 통해 실행중인 쓰레드가 교체할 때 쓰레드 제어 블록( thread control block, TCB)쓰레드 간의 문맥 교환은 주소 공간을 공유한다. 즉, 같은 주소 공간을 공유한 상태..

📝서론 페이징은 전에서 설명하듯이 상당한 성능 저하가 올 수 있다. 페이징은 페이지 테이블을 통해 매핑 저장 정보를 가져온다. 이것은 매번 메모리에 접근한다는 것으로 시간적으로나 공간적으로나 모두 손해가 심각한다.우리는 페이징의 주소 변환 속도를 향상 시켜야 한다.📝TLB운영체제의 실행 속도 개선을 위해 우리는 대부분의 경우 하드웨어로부터 도움을 받는다.주소 변환을 빠르게 하기 위해서 변환-색인 버퍼 또한 TLB라고 부르는 메모리 관리부(MMU)를 두기 시작한다. TLB의 기본 알고리즘TLB는 쉽게 말하면 캐시와 비슷하다. TLB에 변환 정보를 저장하여 만약 TLB에 들어있다면 메모리에 접근하지 않고 정보를 얻을 수 있다. 흐름을 살펴보자가상 주소에서 페이지 번호만 뽑아낸다.어느 페이지에 있지?TLB..

📝서론 운영체제는 거의 모든 공간 관리 문제를 해결할 때 두 가지 중 하나를 사용한다.가변 크기의 조각들로 분할하는 것(세그먼테이션)가변 크기로 분할하게 되면 공간 자체의 단편화가 발생메모리 할당이 점점 어려워진다.동일 크기의 조각들로 분할하는 것(페이징)유연성 개선 : 프로세스의 주소 공간 사용방식과는 상관없이 효율적인 주소 공간 개념 지원빈 공간 관리의 단순함운영체제는 모든 비어있는 페이지의 빈 공간 리스트만 유지하면 된다.운영체제는 페이지 테이블을 프로세스마다 유지 📝간단한 예제 및 개요페이징에 대해 명확히 이해하기 위해 간단한 예를 살펴보자아래 그림은 가상 메모리를 작은 단위로 쪼개서 페이지라 부르며 아래와 같이 구성된다. 물리 메모리는 아래 그림과 같이 고정 크기의 슬롯들로 이루어진다.물..

📝서론 : 세그먼트의 단점이번 장에서는 세그먼트에서 발생한 빈 공간인 외부 단편화 관리에 대해 알아볼 것이다. 빈 공간을 어떻게 관리할까?- 가변 크기의 요구를 충족시켜야 할 때, 빈 공간은 어떻게 관리하지?- 단편화를 최소하하기 위해 어떤 전략을 사용하지?- 여러 대안들의 시간과 공간적 오버헤드는 얼마지? 📝시작 전 가정malloc() 과 free() 에서 제공하는 것과 같은 기본 인터페이스를 가정한다.힙의 빈 공간을 관리하기 위해 링크드리스트를 사용한다.물론, 빈 공간을 표현할 수 있는 자료구조면 어떤 것이든 가능하다.클라이언트에게 할당된 메모리는 다른 위치로 재배치될 수 없다고 가정 한다. 📝20.2 저수준 기법들분할(splitting) 및 병합(coalescing)에 대해 알아보자 분할과 ..

📝서론 : 베이스와 바운드 방식의 단점전 시간에는 베이스와 바운드 방식을 배웠습니다. 하지만 이 방식에도 단점이 존재합니다.바로 비효율적인 메모리 사용에 있습니다. 아래 그림처럼 전통적인 주소 공간은 힙이 아래쪽으로 스택은 위쪽으로 자랍니다. 이 둘이 충돌하지 않도록 충분한 여유 공간을 남겨둡니다. 여기에서 문제가 발생합니다.베이스와 바운드 방식은 프로세스의 전체 주소 공간을 물리 메모리에 통째로 적재하기에 힙과 스택 사이의 미사용 공간까지 물리 메모리를 차지하게 됩니다.주소 공간이 물리 메모리보다 큰 경우 실행이 어렵다는 단점이 있습니다. 📝19.1 세그멘테이션 : 베이스/바운드의 일반화앞서 베이스와 바운드 레지스터는 하나로 프로세스 전체 주소 공간을 통제했습니다.이곳에서 스택과 힙 사이 미사용 ..

📝16 주소 공간의 개념 초기에는 컴퓨터 시스템 구현이 쉬웠다. 왜냐하면 사용자가 많은 것을 기대하지 않았기 때문이다.이 모든 문제를 만든 사람들은 바로 "사용의 편이", "고성능", "신뢰성" 등을 기대한 사용자이다. CPU에 대한 효율성 개선을 위한 시분할 시스템이 등장하면서 운영체제에서 새로운 요구 사항이 생기기 시작했다.여러 프로그램이 메모리에 동시에 존재하려면 보호가 중요한 문제가 된 것이다. 📝16.1 주소 공간운영체제는 사용하기 쉬운 메모리 개념을 만들어야 한다. 이 개념을 주소 공간이라 한다.실행 중인 프로그램이 가정하는 메모리의 모습이며 실행 프로그램의 모든 메모리 상태를 갖고 있다. (코드, 스택, 힙 등) 메모리를 어떻게 가상화할까?운영체제는 물리 메모리를 공유하는 다수의 ..