본문 바로가기

Computer Science/운영체제

(18)
[운영체제] CH9. Virtual Memory(3) * 다양한 캐싱 환경 캐싱 기법이란 한정된 빠른 공간(=Cache)에 요청된 데이터를 저장해 두었다가 후속 요청 시 캐시로부터 직접 서비스하는 방식이다. paging system 외에도 cache memory, buffer caching, web caching 등 다양한 분야에서 사용된다. 캐시 운영의 시간 제약 교체 알고리즘에서 삭제할 항목을 결정하는 일에 지나치게 많은 시간이 걸리는 경우 실제 시스템에서 사용할 수 없다. 대부분의 캐싱 환경에서는 O(1) ~ O(log n) 정도까지 허용한다. 그렇다면, Paging System에서 LRU, LFU와 같은 알고리즘을 사용할 수 있을까? 운영체제는 page table entry의 값이 valid인 경우에 주소 변환을 통해서 메모리에 접근한다. 하지만 i..
[운영체제] CH9. Virtual Memory(2) 그럼, 어떤 알고리즘이 가장 좋은 알고리즘일까? Page Replacement Algorithm Optimal Algorithm 이론적으로 가장 최적의 알고리즘이다. 가장 먼 미래에 참조되는 page를 victim으로 선정한다. 미래에 참조될 페이지를 모두 알고 있다는 가정을 하기 때문에 어떤 프레임을 쫓아내야 할지 알 수 있는 것이다. 따라서 실제 시스템에서는 사용될 수 없는 알고리즘이다. 다만, 다른 알고리즘의 성능에 대한 upper bound를 제공해준다. 9 page faults. -> 이보다 적게 page fault가 날 수 없다. 실제로 사용하는 알고리즘은 미래를 알 수 없기 때문에, 과거의 정보를 바탕으로 victim을 선정한다. FIFO(First In First Out) Algorithm..
[운영체제] CH9. Virtual Memory(1) Virtual Memory 멀티 프로그래밍을 위해서는 여러 개의 프로세스들을 동시에 메모리에 올려두어야 한다. 가상 메모리 기법은 프로세스 전체가 메모리 내에 올라오지 않더라도 실행이 가능하도록 하는 기법으로, 말 그대로 없는 것을 있는 것처럼 보이게 하는 기술이다. 하나의 프로그램은 실질적으로 사용하는 메모리가 그리 많지 않다. 따라서 프로그램을 실행할 때, 프로그램 전체를 메모리에 올리지 않고 일부분만 올림으로써 더 많은 프로그램을 메모리에 올릴 수 있는 것이다. -> 결국 이 역시도 리소스를 최대한 쥐어짜내기 위함이다. 물리적인 메모리의 주소 변환은 운영체제가 관여하지 않는다. 하지만 virtual memory 부분은 운영체제가 전적으로 관여한다. 이 챕터에서 다루는 내용은 Paging 기법을 사용..
[운영체제] CH8. Memory Management(4) Segmentation 프로그램에 있는 여러 의미 단위를 각각 세그먼트로 구성한다. 크게는 프로그램 전체를 하나의 세그먼트로 정의할 수도 있고, 작게는 프로그램을 구성하는 함수 하나 하나를 세그먼트로 정의할 수도 있다. 일반적으로는 code, data, stack 부분이 하나씩의 세그먼트로 정의된다. Segmentation Architecture 세그멘테이션에서의 주소 변환은 페이징 기법과 비슷한 면이 있다. Logical address는 으로 구성된다. 여기서 offset은 세그먼트 안에서의 위치를 나타낸다. 세그먼트 별로 서로 다른 physical memory 위치에 올라가 있기 때문에 세그먼트 별로 주소 변환을 해야 하므로 Segment table을 두고 있다. 주소 변환에 사용되는 기존의 두 레지..
[운영체제] CH8. Memory Management(3) Paging Process의 virtual memory를 동일한 크기의 page단위로 나눈다. Virtual memory의 내용은 page 단위로 불연속적으로 저장된다. 일부는 backing storage에, 일부는 physical memory에 저장될 수 있다. Physical memory를 동일한 크기의 frame으로 나누고, logical memory를 (frame과 )동일한 크기의 page로 나눈다. 주소 변환은 page table을 사용하여 logical address를 physical address으로 변환한다. External fragmentation은 발생하지 않는다. Internal fragmentation은 발생할 수 있다. (page frame의 크기 > 마지막 page의 크기) Pa..
[운영체제] CH8. Memory Management(2) Allocation of Physical Memory 물리적인 메모리를 어떻게 관리할 것인가? 메모리는 일반적으로 두 영역으로 나뉘어 사용된다. OS 상주 영역 - interrupt vector와 함께 낮은 주소의 영역을 사용한다. 사용자 프로세스 영역 - 높은 주소의 영역을 사용한다. 사용자 프로세스 영역의 할당 방법 Contiguous allocation -> 옛날 방식 각각의 프로세스가 메모리의 연속적인 공간에 적재(load)되도록 하는 방법이다. Fixed partition allocation (고정 분할 방식) Variable partition allocation (가변 분할 방식) Noncontiguous allocation 하나의 프로세스가 메모리의 여러 영역에 분산되어 올라갈 수 있도록 하..
[운영체제] CH8. Memory Management(1) Memory Management 메모리란 주소를 통해서 접근하는 매체이다. 주소는 두 가지로 나뉜다. Logical address (=virtual address) 프로그램이 실행되고 프로세스마다 독립적으로 갖게 되는 주소 공간이다. 각 프로세스마다 0번지부터 시작한다. CPU가 다루는 주소는 logical address이다. Physical address 물리적인 메모리 주소로, 메모리에 실제로 올라가는 위치이다. Symbolic address 변수나 함수 이름을 주고 그 변수에 어떠한 값을 넣거나 함수 이름을 통해서 함수 호출을 하는 것과 같이, 프로그래밍을 할 때 숫자로 된 주소가 아닌 symbol로 된 주소를 갖고 프로그래밍을 하게 된다. 이때 사용하는 주소가 symbolic address 이다...
[운영체제] CH7. Deadlock Deadlock (교착상태) 데드락이란 일련의 프로세스들이 서로가 가진 자원을 기다리며 block된 상태이다. 이때 말하는 자원(Resource)는 하드웨어, 소프트웨어 등을 포함하는 개념이다. 물리적인 것 뿐만 아니라 개념적인 것도 포함한다. e.g) I/O device, CPU cycle, memory space, semaphore, PID, 포트 번호, IP 주소, lock 등 그리고 프로세스가 자원을 사용하는 절차는 요청(Request), 할당(Allocate), 사용(Use), 반납(Release)과 같은 네 단계를 거친다. Deadlock 발생의 4가지 조건 데드락은 다음과 같은 네가지 경우에 반드시 발생한다. Mutual Exclusion (상호 배제) 매 순간 하나의 프로세스만이 자원을 사..