CS 89

Virtual Memory: 가상 메모리 (1/2)

프로그램이 실행되기 위해 그 프로세스의 주소 공간 전체가 메모리에 올라와 있어야 하는 것은 아니다. 운영체제는 cpu에서 당장 수행해야 하는 부분만을 메모리에 올려두고 나머지는 디스크의 스왑 영역(swap area)에 올려둔다. 프로그램은 0번지부터 시작하는 자기 자신만의 메모리 주소 공간을 가정할 수 있는데, 이러한 공간을 가상 메모리(virtual memeory)라고 부른다. 가상 메모리는 모든 프로세스가 가지고 있으며 이들 공간 중 일부는 물리적 메모리에 올라가고 일부는 디스크의 스왑 영역에서 준비하고 있는다. 프로세스 주소 공간을 메모리로 적재하는 단위에 따라 가상 메모리 기법은 요구 페이징(demand paging)과 요구 세그먼테이션(demand segmentation)으로 나뉜다. 대부분 요..

CS/operating system 2021.02.19

Memory Management: 메모리 관리 (3/3)

5. Segmentation (세그먼테이션) segment란? / segmentation이란? 프로그램의 의미(기능) 단위 / 프로그램을 세그먼트로 나누어 물리적 메모리에 올리는 기법 하나의 프로세스를 구성하는 주소 공간은 일반적으로 코드, 데이터, 스택 등의 의미있는 단위들로 구성된다. 세그먼트는 이와 같이 주소 공간을 기능 단위 또는 의미 단위로 나눈 것을 뜻한다. 프로세스의 주소 공간 전체를 하나의 세그먼트로 볼 수도 있으며, 일반적으로는 코드, 데이터, 스택 등의 기능 단위로 세그먼트를 정의한다. 작게는 프로그램을 구성하는 함수 하나하나를 세그먼트로 정의할 수도 있다. 세그먼트는 의미 단위로 잘랐기 때문에 크기가 균열하지 않다. 크기가 균열하지 않은 세그먼트들을 메모리에 적재하는 부가적인 오버헤드..

CS/operating system 2021.02.18

Memory Management: 메모리 관리 (2/3)

3. 물리적 메모리의 할당 방식 Allocation of Physical Memory 메모리는 일반적으로 두 영역으로 나뉘어 사용한다. * OS 상주 영역 interrupt vector 와 함께 낮은 주소 영역 사용 * 사용자 프로세스 영역 높은 주소 영역 사용 사용자 프로세스 영역의 관리 방법은 프로세스를 메모리에 올리는 방식에 따라 연속 할당 (contiguous allocation) 방식과 불연속할당 (noncountiguous allocation) 방식으로 나뉜다. - 연속 할당(contiguous allocation) 연속 할당 방식은 프로세스를 메모리에 올릴 때 그 주소 공간을 여러 개로 분할하지 않고 물리적 메모리의 한 곳에 연속적으로 적재하는 방식이다. 이 방식은 물리적 메모리를 고정된 크..

CS/operating system 2021.02.17

Memory Management: 메모리 관리 (1/3)

컴퓨터에서는 byte단위로 메모리 주소를 부여하기 때문에 32비트 주소 체계를 사용하면 2^32바이트 만큼의 메모리 공간에 서로 다른 주소를 할당할 수 있다. 컴퓨터 상의 주소는 32비트를 그대로 사용하지 않고 효율적인 운영을 위해 일련의 영역을 행정구역처럼 묶어서 사용한다. 보통 4kb(=2^12byte) 단위로 묶어서 페이지(page)를 만든다. 하나의 페이지 크기가 2^12이므로 페이지 내에서 바이트별 위치 구분을 위해서는 12비트가 필요하다. 따라서 총 32비트 주소 중 하위 12비트는 페이지 내에서의 주소를 나타내게 된다. * Logical Address( = virtual address) - 프로세스마다 독립적으로 가지는 주소 공간 - 각 프로세스마다 0번지부터 시작 - CPU가 보는 주소는 ..

CS/operating system 2021.02.16

CPU Scheduling: CPU 스케줄링 (2/2)

1) FCFS (First Come First Served) 프로세스가 준비 큐에 도착한 시간 순서대로 cpu를 할당하는 방식. 비선점형이라 cpu를 차지한 프로세스가 내놓기 전까지는 cpu를 선점당하지 않는다. 효율적이지 않은 알고리즘임 cpu 버스트가 긴 프로세스 하나가 cpu 버스트가 짧은 여러개보다 먼저 도착했다고 한다면 cpu 버스트가 짧은 프로세스들이 cpu 버스트가 긴 프로세스 하나 때문에 오래 기다려야 해서 평균 대기 시간(average waiting time)이 길어진다. FCFS 스케줄링에서는 먼저 도착한 프로세스의 성격에 따라 평균 대기시간이 크게 달라진다. 즉 CPU 버스트가 긴 프로세스가 먼저 도착한 경우 평균 대기 시간이 길어지는 반면, CPU 버스트가 짧은 프로세스가 먼저 도착..

CS/operating system 2021.02.13

리스트(list)

리스트란 순서를 가진 데이터의 집합을 가리키는 추상자료형이다.(abstract data type) 동일한 데이터를 가지고 있어도 상관 없고, 순서 또는 위치를 가진다. 구현 방법에 따라 크게 두 가지로 나뉜다. 1) 순차 리스트: 배열을 기반으로 구현된 리스트 1차원 배열에 항목들을 순서대로 저장한다. 데이터의 종류와 구조에 따라 구조화된 자료구조를 만들어 배열로 만들 수도 있다. 데이터 접근은 배열의 인덱스를 이용해 원하는 위치의 데이터에 접근할 수 있다. 단순 배열을 이요해 순차리스트를 구현하는 경우, 자료의 삽입/삭제 연산 과정에서 연속적인 메모리 배열을 위해 원소들을 하나씩 미는 작업이 필요하다. 따라서 원소의 개수가 많고 삽입/삭제 연산이 빈번하게 일어날수록 작업에 소요되는 시간이 크게 증가한다..

CS/data structure 2021.02.12

CPU Scheduling: CPU 스케줄링 (1/2)

CPU는 프로그램의 기계어 명령을 실제로 수행하는 중앙처리장치이다. 프로그램이 시작되어 메모리에 올라가면 pc(레지스터의 일종)가 cpu가 실행해야 할 명령의 메모리 주소값을 가리키고 있다. cpu는 컴퓨터 내부에 하나밖에 없기 때문에 매우 효율적으로 사용하여야 하는 하드웨어 자원이다. - 일반명령 1. cpu 내부에서 수행되는 명령 ex) add 연산 (레지스터에 있는 두 값을 더해 레지스터에 저장하는 명령. cpu 내에서만 수행되므로 정말 빠르다) 2. 메모리 접근을 필요로 하는 명령 ex) load, store (load : 메모리 데이터 -> cpu / store : 계산된 결과값 -> 메모리 둘 다 cpu 내에서만 수행된느 것보단 느리지만 비교적 짧은 시간이 걸림) - 특권 명령 1. 입출력을 ..

CS/operating system 2021.02.12

큐 (Queue)

큐는 선형 자료구조로 먼저 들어온 데이터가 먼저 나가는 선입선출(FIFO: First In First Out)의 구조를 가지고 있다. 큐는 뒤에서 새로운 원소가 추가되고 앞에서 새로운 데이터가 하나씩 삭제되는 구조를 가지고 있다. 구조상으로 큐가 스택과 다른 점은 스택의 경우, 삽입과 삭제가 같은 쪽에서 일어나지만 큐에서는 삽입과 삭제가 다른 쪽에서 일어난다는 것이다. 큐의 연산 큐의 삽입 연산은 enqueue연산이라고 불리우며, 큐에 요소를 추가하는 연산으로서 큐의 맨 뒤에 원소를 추가한다. 이때 큐의 제일 뒤를 가리키는 용어를 rear이라고 한다. 큐의 삭제 연산은 dequeue연산이라고 불리우며, 큐에 요소를 삭제하는 연산으로서 큐의 제일 앞의 원소를 삭제한다. 이때 큐의 제일 앞을 가리키는 용어를..

CS/data structure 2021.02.11

스택(Stack)

스택이란 물건을 쌓아 올리듯 자료를 쌓아올린 형태의 자료구조이다. 선형 자료구조(자료 간의 관계가 1대 1인 관계)를 가지며 후입선출(LIFO: Last In First Out) 의 특성을 가진다. 즉 제일 나중에 들어온 데이터가 제일 먼저 나가게 된다. 스택에서 입출력이 이루어지는 부분을 스택 상단(top)이라고 하고 아랫 부분을 스택 하단(bottom)이라고 한다. 자료가 하나도 들어있지 않은 스택을 공백 스택(empty stack)이라고 하며, 스택에 저장되는 데이터를 요소(element)라고 부른다. 스택은 자료의 출력 순서가 입력 순서의 역순으로 이루어져야 할 경우 매우 요긴하다. 시스템 스택을 이용한 함수 호출 함수는 실행이 끝나면 자신을 호출한 함수로 돌아가야 한다. 이 때, 스택은 복귀할 ..

CS/data structure 2021.02.11

Process Management: 프로세스 관리 (3/3)

7. 프로세스의 생성(Process Creation) 프로세스 생성은 어려운 거라서 시스템이 부팅되고 난 최초의 프로세스는 운영체제가 생성하지만 그 이후 존재하는 프로세스가 다른 프로세스를 복재 생성하게 된다. 부모 프로세스(parent process)가 자식 프로세스(child process)를 생성한다. 이러한 방식을 통해 프로세스는 족보와 같은 계층을 생성하게 된다. 현실 세계에서는 부모가 먼저 죽고 자식이 죽지만 프로세스 세계에서는 자식이 먼저 죽고 부모가 죽는다. 왜냐하면 부모 프로세스는 자식 프로세스의 죽음에 대한 처리를 담당해야 하기 때문이다. 불효가 아닐 수 없다. 프로세스는 자원을 필요로 하는데 어떻게 자원을 공급받을까? 그 방법은 1. 운영체제로부터 공급받는다. 2. 부모와 공유하여 사..

CS/operating system 2021.02.10