반효경 운영체제15 [OS] Virtual Memory - 2 본 글은 반효경 교수님의 운영체제 강의를 들으며 정리하는 글 입니다. 3. 다양한 캐싱 환경 ▶ 캐싱 기법 한정된 빠른 공간(=캐시)에 요청된 데이터를 저장해 두었다가 후속 요청시 캐시로부터 직접 서비스하는 방식이다. 페이징 시스템 외에도 캐시 메모리, 버퍼 캐싱, 웹 캐싱 등 다양한 분야에서 사용한다. ▶ 캐시 운영의 시간 제약 교체 알고리즘에서 삭제할 항목을 결정하는 일에 지나치게 많은 시간이 거리는 경우 실제 시스템에서 사용할 수 없다. 버퍼 캐싱이나 웹 캐싱의 경우 O(1)에서 O(log N)까지 허용한다. 페이징 시스템의 경우 Page Fault의 경우에만 OS가 관여한다. 페이지가 이미 메모리에 존재하는 경우 참조 시각 등의 정보를 OS가 알 수 없다. 즉 반쪽짜리 정보를 알게된다. O(1)인.. CS/OS (2022-1) 2022. 11. 30. [OS] Virtual Memory - 1 본 글은 반효경 교수님의 운영체제 강의를 들으며 정리하는 글 입니다. 1. Demand Paging 프로그램 실행 시 프로세스를 구성하는 모든 페이지를 한꺼번에 메모리에 올리는 것이 아니라 당장 사용될 페이지만을 올리는 방식 얻는 장점 : I/O 양의 감소, Memory 사용량 감소, 빠른 응답 시간, 더 많은 사용자 수용 ▶ Valid-Invalid bit 사용 무효(invalid)의 의미 사용되지 않는 주소 영역인 경우 페이지가 물리적 메모리에 없는 경우 처음에는 모든 페이지의 유효-무효 비트가 무효 값으로 초기화된다. 특정 페이지가 참조되어 메모리에 적재되는 경우 해당 페이지의 무효 비트가 유효 값으로 바뀐다. CPU 참조하려는 페이지가 현재 메모리에 올라와 있지 않아 무효 비트로 세팅되어 있는 경.. CS/OS (2022-1) 2022. 11. 30. [OS] Memory Management - 3 본 글은 반효경 교수님의 운영체제 강의를 들으며 정리하는 글 입니다. 2. Segmentation 프로그램은 의미 단위인 여러 개의 segmentation으로 구성될 수 있다. 작게는 프로그램을 구성하는 하나 하나를 세그먼트로 정의 크게는 프로그램 전체를 하나의 세그먼트로 정의 가능 일반적으로는 code, data, stack 부분이 하나씩의 세그먼트로 정의됨 의미를 어떻게 나누는지에 따라 달라짐 세그먼트는 다음과 같은 logical unit이다. main() function global variables stack symbol table arrays 2 - 1) Segmentation 기법 논리적 주소는 으로 나뉘어 사용된다. 세그먼트 번호(s)는 해당 논리적 주소가 프로세스 주소 공간 내에서 몇 번째.. CS/OS (2022-1) 2022. 11. 30. [OS] Memory Management - 2 본 글은 반효경 교수님의 운영체제 강의를 들으며 정리하는 글 입니다. 1. Paging logical memory는 페이지 단위로 분할이 되고, 물리적 메모리는 프레임 단위로 분할이 되어 서로 매칭된다. 이때 논리적 주소를 물리적 주소로 변환하기 위해 페이지 테이블을 활용한다. 1 - 1) 주소 변환 기법 페이징 기법에서는 CPU가 사용하는 논리적 주소를 페이지 번호(p)와 페이지 오프셋(d)으로 나누어 주소 변환에 사용한다. 페이지 번호는 각 페이지별 주소 변환 정보를 담고 있는 페이지 테이블 접근 시 인덱스로 사용되고, 해당 인덱스의 항목에는 그 페이지의 물리적 메모리 상의 기준 주소, 즉 시작 위치가 저장된다. 따라서 특정 프로세스의 p번째 페이지가 위치한 물리적 메모리의 시작 위치를 알고 싶다면 .. CS/OS (2022-1) 2022. 11. 30. [OS] Deadlock 본 글은 반효경 교수님의 운영체제 강의를 들으며 정리하는 글 입니다. 이번 시간에는 서로가 필요로 하는 자원을 가지고 있어 어느 한쪽도 실행되지 못하고 기다리는 DeadLock에 대하여 알아보자. 1. DeadLock 일련의 프로세스들이 서로가 가진 자원을 기다리며 block된 상태를 말한다. 예를 들면 다음 그림과 같다. 1 - 1) Resource (자원) 하드웨어, 소프트웨어 등을 포함하는 개념으로, 다음과 같은 예시들이 있다. ex) I/O device, CPU cycle, memory space, semaphore 등 프로세스가 자원을 사용하는 절차는 우측과 같다 -> Request, Allocate, Use, Release 1 - 2) 예시 1번째 예시 시스템에 2개의 tape drive가 있.. CS/OS (2022-1) 2022. 11. 29. [OS] Process Synchronization - 3 본 글은 반효경 교수님의 운영체제 강의를 들으며 정리하는 글 입니다. 이번 시간에는 Process 동기화와 관련된 고전적인 3가지 문제에 대하여 학습해보자! 3. Bounded-Buffer-Problem (Producer-Consumer Problem) 생상자, 소비자 문제에 대하여 알아보자. 공유 데이터 buffer 자체 및 buffer 조작 변수 (empty / full buffer의 시작 위치) Producer (생산자) 생산자는 여러개가 있을 수 있다. 하는 역할은 공유 Buffer에 데이터를 삽입하는 역할을 한다. Empty 버퍼가 있는지 확인한다. (없으면 기다림) 공유 데이터에 lock을 건다. Empty 버퍼에 데이터를 입력하고 버퍼를 조작한다. lock을 푼다. Full 버퍼가 하나 증가.. CS/OS (2022-1) 2022. 11. 28. [OS] Process Synchronization - 2 본 글은 반효경 교수님의 운영체제 강의를 들으며 정리하는 글 입니다. 이번 시간에 배웠던 세마포어는 추상 자료형(ADT)이다, Java로 생각하면 interface 정도가 될것 같다. 즉, 구현 세부사항이 아닌, 인터페이스를 생각하면 된다. 1. 세마포어 (Semaphore) 우선 세마포어 변수 S에 대하여 알아보자! Integer variable : S를 사용함. 쉽게 생각하면 사용 가능한 자원의 수 라고 생각하면 된다. 세마포어 연산은 아래의 두 가지 atomic 연산에 의해서만 접근이 가능 ▶ P(S): 공유 데이터를 획득하는 과정 (lock)으로 S가 양수이어야 한다. // P(S) while (S CS/OS (2022-1) 2022. 11. 25. [OS] Process Synchronization - 1 본 글은 반효경 교수님의 운영체제 강의를 들으며 정리하는 글 입니다. 1. Critical Section 문제를 해결하기 위한 충족 조건 ▶ 상호 배제 (Mutual Exclusion) 어떤 프로세스가 임계 구역 부분을 수행 중이면 다른 모든 프로세스는 그의 임계 구역에 들어가면 안 된다. 즉, 상호 배타적이여야 한다. ▶ 진행 (Progress) 아무도 임계 구역에 있지 않은 상태에서 임계 구역에 들어가고자 하는 프로세스가 있으면 임계 구역에 들어가게 해 주어야 한다. ▶ 유한 대기 (Bounded Waiting) 프로세스가 임계 구역에 들어가려고 요청한 후부터 그 요청이 허용될 때까지 다른 프로세스들이 임계 구역에 들어가는 횟수에 한계가 있어야 한다. ex) 세 개의 프로세스가 있을 때 두 개의 프로.. CS/OS (2022-1) 2022. 11. 25. [OS] CPU Scheduling - 2 & Process Synchronization 도입 본 글은 반효경 교수님의 운영체제 강의를 들으며 정리하는 글 입니다. 3 - 5) 멀티 레벨 큐 (Multi-Level Queue) 우선 순위에 따라 여러 개의 Ready Queue로 분할하는 방식이다. 어느 줄에게 Process를 집어넣을지 결정하고, 줄이 결정되면 그 줄 안에서 누구에게 CPU를 줄지 결정하게 된다. 예를 들어 다음과 같이 level을 2개 갖도록 만들수가 있다. 다음을 살펴보자! Ready Queue를 foreground와 background 큐로 나눌 수 있다. (누구에게 CPU를 줄지) foreground(interactive) background(batch) Ex) 백그라운드 큐는 FCFS 알고리즘에 의해 스케줄 되는 반면, 포그라운드 큐는 RR 알고리즘에 의해 스케줄 될 수 .. CS/OS (2022-1) 2022. 11. 24. [OS] CPU Scheduling - 1 본 글은 반효경 교수님의 운영체제 강의를 들으며 정리하는 글 입니다. 1. CPU burst와 I/O burst 일반적으로 다음과 같아 cpu burst 와 I/O burst가 번갈아 가면서 CPU가 사용된다. 이처럼 사용자 프로그램이 수행되는 과정은 CPU 작업과 I/O 작업의 반복으로 구성된다. 1 - 1) CPU burst CPU burst는 사용자 프로그램이 CPU를 가지고 빠른 명령을 수행하는 단계이다. 이 단계에서 사용자 프로그램은 CPU 내에서 일어나는 명령 (ex. Add)이나 메모리(ex. Store, Load)에 접근하는 일반 명령등 을 사용할 수 있다. 1 - 2) I/O burst I/O burst는 커널에 의해 입출력 작업을 진행하는 비교적 느린 단계이다. 이 단계에서는 모든 입출.. CS/OS (2022-1) 2022. 11. 23. [OS] Process Management 본 글은 반효경 교수님의 운영체제 강의를 들으며 정리하는 글 입니다. 1. Process의 관리 1 - 1) 프로세스 생성 운영체제가 최초의 프로세스를 생성하면, 이미 존재하는 프로세스가 다른 프로세스를 복제 생성한다. 이때 기존 프로세스를 부모 프로세스라 하고, 새로 생긴 프로세스를 자식 프로세스라고 부른다. 프로세스의 트리 (계층 구조)를 형성한다. 프로세스는 자원을 필요로 한다. 운영체제에게 받는다. 부모와 공유한다. 자원의 공유 (3가지 모델이 가능하다) 부모와 자식이 모든 자원을 공유하는 모델 일부를 공유하는 모델 전혀 공유하지 않는 모델 수행 (Execution) 부모와 자식이 공존하며 수행하는 모델 (이때는 부모와 자식이 CPU를 획득하기 위해 경쟁하는 관계가 됨) 자식이 종료(termina.. CS/OS (2022-1) 2022. 11. 22. [OS] Process - 1 본 글은 반효경 교수님의 운영체제 강의를 들으며 정리하는 글 입니다. 1. Process란? Process is a program in execution 즉, Process는 실행 중인 프로그램이다! 디스크에 실행 파일 형태로 존재하던 프로그램이 메모리에 올라가서 실행되기 시작하면 비로소 실행 가능한 프로세스가 되는 것이다. 2. 프로세스의 문맥(context) 프로세스가 시작해서 종료될 때 까지 CPU에서 명령을 한꺼번에 수행하면 좋겠지만, 여러 프로세스가 함께 수행되는 시분할 환경에서는 프로세스는 CPU를 빼앗기고 획득하는 과정을 반복하게 된다. 따라서 CPU를 빼았겻따가 다시 획득해 이전에 수행하던 일을 재개하는 시점이 되면, 이전 CPU 보유 시기에 어느 부분까지 명령을 수행했는지 정확한 상태를 .. CS/OS (2022-1) 2022. 11. 21. 이전 1 2 다음