분류 전체보기

· 운영체제
개요 운영체제는 공간 관리 문제를 해결하기 위해 1)세그멘테이션 2)페이징 기법을 사용함 세그멘테이션은 공간을 다양한 크기로 분할 할때 공간 자체가 fragmentation 될 수 있고, 할당은 점점 어려워짐 페이징은 동일 크기의 조각으로 분할하여 메모리를 할당하고 상응하는 물리메모리도 페이지 프레임이라고 불리는 고정 크기의 슬롯의 배열이라고 생각함 핵심 질문: 페이지를 사용하여 어떻게 메모리를 가상화 할 수 있을까 세그멘테이션의 문제점을 해결하기 위해 페이지를 사용하여 어떻게 메모리를 가상화 할 수 있는가 기본적인 기법은 무엇인가? 공간과 시간 오버헤드를 최소로 하면서 그 기법을 잘 동작하게 만들기 위한 방법은 무엇인가. 간단한 예제 및 개요 총 크기가 64 바이트며 16바이트 페이지로 구성된 작은 주..
· 운영체제
개요 메모리 관리 시스템의 근본적인 측면을 논의한다 힙의 페이지를 관리하는 malloc 프로세스 주소 공간의 일부분을 관리하는 운영체제 자체 관리하는 공간이 가변-크기 빈 공간들의 집합이면 메모리를 관리하는 것이 어려울 수 있음 malloc() 과 free() 에서처럼 사용자-수준 메모리-할당 라이브러리에서, 세그멘테이션으로 물리 메모리를 관리하는 운영체제에서 발생함 어떠한 경우에도 외부 단편화가 존재함 핵심 질문: 빈 공간을 어떻게 관리하는가 가변 크기의 요구를 충족시켜야 할 때, 빈 공간은 어떻게 관리가 되어야 하는가? 단편화를 최소화하기 위해 어떤 전략을 사용할 수 있는가? 여러 대안들의 시간과 공간의 오버헤드는 어떻게 되는가 가정 malloc() 과 free() 에서 제공하는 것과 같은 기본 인터..
· 운영체제
개요 스택과 힙 사이의 공간은 사용되지 않더라도 주소 공간을 물리 메모리에 재배치 할때 물리 메모리를 차지함 베이스와 바운드 레지스터 방식은 메모리 낭비가 심하고 주소 공간이 물리 메모리 보다 큰 경우 실행이 매우 어려움 (유연성 😵 세그멘테이션: Base / Bound 의 일반화 MMU 안에 오직 하나의 베이스와 바운드 쌍만 존재하는 것이 아니라, 주소 공간의 논리적인 세그먼트(코드, 스택, 힙) 마다 베이스와 바운드 쌍이 존재함 세그먼트는 특정 길이를 가지는 연속적인 주소 공간임 세그멘테이션을 사용하면 운영체제는 각 세그멘트(코드, 스택, 힙)를 물리 메모리의 각기 다른 위치에 제공할 수 있음) 예시 위 그림에서는 사용 중인 메모리에만 물리 공간이 할당 되고, 사용되지 않은 영역이 많은 대형 주소 공..
· 운영체제
주소 변환의 원리 대부분의 경우 프로그램은 하드웨어에서 직접 실행되지만, 프로세스가 시스템 콜을 호출하거나 타이머 인터럽트가 발생할 때 운영체제가 개입함 (LED: 제한적 직접 실행) 운영체제는 약간의 하드웨어의 지원을 받아 효율적인 가상화를 제공하기 위해 최선을 다함 가상화를 제공하는 동시에 효율성 (efficiency) 와 제어 (control) 을 모두 추구함 핵심 질문. 어떻게 효율적이고 유연하게 메모리를 가상화 할까 하드웨어 기반 주소 변환 제한적 직접 실행 방식에 부가적으로 사용되는 기능 주소 변환을 통해 하드웨어는 명령어 반입, 탑재, 저장 등의 가상 주소를 물리 주소로 변환 하드웨어에 의해 제공되는 저수준(low level) 기능들은 변환을 가속화 시키는데 도움을 주지만, 하드웨어만으로는 ..
· 운영체제
메모리 관리 API 핵심 질문: 어떻게 메모리를 할당하고 관리해야 하는가 UNIX/C 프로그램에서 메모리를 할당하고 관리하는 방법을 이해하는 것은 강력하고 안정적인 소프트웨어를 구축하는데 중요하다. 일반적으로 어떤 인터페이스가 사용되는가. 메모리 공간의 종류 C 프로그램이 실행되면. 스택, 힙 메모리 공간이 할당됨 스택: 함수의 지역 변수, 인자 값들이 저장되고 함수가 반환되면 메모리도 반환됨 힙: 모든 할당과 반환이 프로그래머에의해 명시적으로 처리됨 malloc() 함수 힙에 요청할 공간의 크기를 넘겨주고, 성공했을 때 공간에 대한 포인터, 실패했을 때 NULL 반환 double *d = (double *) malloc(sizeof(double)); malloc() 호출에서 정확한 크기의 공간을 요청하..
· 운영체제
개요 초기에는 사용자가 많은 것을 기대하지 않았기 때문에 컴퓨터 시스템을 구성하는것이 어렵지 않았음 하지만 “사용자 편이”, “고성능”, “신뢰성“ 을 기대하는 사용자의 증가로 인해 시스템을 구성하는게 어려워짐 초기 시스템 운영체제는 메모리에 상주하는 루틴의 집합이였음 멀티프로그래밍과 시분할 시간이 흐른후, 사람들이 더 효과적으로 컴퓨터를 공유하기 시작함 멀티프로그래밍 시대가 도래하며 여러 프로세스가 실행 준비 상태에 있고, 운영체제는 그들을 전환하며 프로세스를 실행함 이런 전환은 CPU의 이용률을 증가시킴. 당시에는 특히 이러한 효율성의 개선이 중요하였음. 많은 사용자가 동시에 컴퓨터를 사용하고, 현재 실행중인 작업으로 부터 즉시 응답을 원하기 때문에 대화식 이용의 개념이 중요하게 됨. 시분할 시스템이..
· 운영체제
배경 고사양 컴퓨터에만 존재하던 멀티 프로세서 시스템은 일반적이게 되었으며 심지어 모바일 장치에도 사용되고 있음 여러개의 CPU 코어가 하나의 칩에 내장된 멀티코어 프로세서가 대중화의 근본 원인임 다중 CPU 시대가 오면서 많은 문제가 발생했는데 더 많은 CPU 를 추가해도 빨리 실행되지 않는다는 점이였음 이 문제를 해결하기위해 응용 프로그램을 병렬로 실행되도록 다시 작성함 여러 CPU 에 작업을 어떻게 스케줄 해야 하는가. 운영체제는 어떻게 작업을 여러 CPU 에 스케줄 해야하는가? 어떤 새로운 문제가 등장하는가? 배경: 멀티 프로세서 구조 멀티 프로세서 스케줄링에 대한 문제점을 이해하기 위해서는 멀티 CPU 하드웨어와 단일 CPU 하드웨어의 근본적인 차이에 대해 알고 있어야 함 다수의 프로세서간의 데..
· 운영체제
개요 비례 배분 스케줄러 혹은 공정 배분 스케줄러는 각 작업에 대해 CPU 의 일정 비율을 보장하는 것이 목적임 비례 배분 스케줄링의 좋은 예가 Lottery Scheduling(추첨 스케줄링) 이며 다음 실행될 프로세스를 추첨을 통해 결정함 특정 비율로 CPU 를 배분하는 스케줄러를 어떻게 설계할 수 있는가? 그렇게 하기 위해서 중요한 기법은 무엇인가 기본 개념: 추첨권이 당신의 몫을 나타낸다. 추첨권이라는 기본적인 개념이 추첨 스케줄링의 근간을 이룸 추첨권은 프로세스가 받아야 할 자원의 몫을 나타내는데 사용됨 추첨권 스케줄링의 큰 장점 중 하나는 무작위성임. 결정이 필요할 때, 이러한 무작위 방식은 강력하고 쉬운 방식임 1. LRU는 좋은 교체 알고리즘이지만 반복되는 순차적인 접근 패턴을 보이는 오버..
파커초
'분류 전체보기' 카테고리의 글 목록 (11 Page)