반응형

Software Courses/Operating System 23

[Memory] Segmentation system

Segmentation system - 프로그램을 논리적 block으로 분할 - Segment : 논리적으로 분할된 block - 논리적으로 분할하기 때문에 block의 크기가 다름 특징 - Block의 크기가 다르므로 메인 메모리를 미리 분할하기 않음 - VPM과 유사 - 공유와 보호에 용이 - block의 크기가 달라서 관리하기 힘들기 때문에 overhead가 큼 - 내부 단편화 발생하지 않음 - 외부 단편화 발생 Address mapping - 가상 주소 : v = (s, d) - SMT(segment map table) 사용 - 동작 * paging system과 유사 -> 프로세스의 SMT가 저장되어 있는 주소 b에 접근 -> SMT에서 segment s의 entry를 찾음(위치 : b + s ..

[Memory] Paging system

Paging system - 프로그램을 같은 크기의 블록으로 분할하여 관리 - 필요한 page만 page frame에 적재하여 사용 용어 표현 - page : 프로그램의 분할된 block - page frame : page 크기로 분할된 메모리 영역 특징 - 논리적 분할이 아닌 단지 크기로 분할 - segmentation 대비 page 공유 및 보호 과정이 복잡 - segmentation 대비 simple 및 efficient - 내부 단편화 발생 : 프로그램을 page로 잘랐을 때, 마지막 꼬투리는 page의 크기보다 작을 수 있으므로 page frame에 넣으면 내부 단편화 발생 - 외부 단편화 발생 안함 : 메인 메모리와 프로그램 모두 page 크기로 분할되어 있기 때문에 문제점 - 단지 크기로 분..

[Memory] Memory allocation : Non-continuous memory allocation

Non-continuous memory allocation - 사용자 프로그램을 여러 개의 block으로 분할 - 실행 시, 필요한 block들만 메모리에 적재 - 나머지 block들은 swap device에 적재 Address mapping - 가상 주소와 실제 주소 연결 - 가상 주소 : 연속된 메모리 할당을 가정한 주소 - 실제 메모리에 적재된 주소 - Block mapping * 사용자 프로그램을 block 단위로 분할하여 mapping * 가상 주소 : v =(b, d) + b : block number + d : displacement(offset) in a block * BMT(block map table) + address mapping 정보 관리 + kernel 공간에 프로세스마다 하나의..

[Memory] Memory allocation : Continuous memory allocation

Continuous memory allocation - 프로세스(context)를 하나의 연속된 메모리 공간에 할당하는 정책 1. Uni-programming - 하나의 프로세스만 메모리 상에 할당하는 방법 - 문제점과 해결 * 문제점 1 : 프로그램의 크기 > 메모리 크기 * 해결 1: 프로그램을 잘라서 필요한 부분만 적재, 하지만 사용자가 프로그램의 흐름과 자료구조를 모두 알아야 함 * 문제점 2 : kernel 보호 * 해결 2 : 경계 레지스터(boundary register) 사용 * 문제점 3 : 낮은 자원 활용도, 하나의 프로세스만 사용하므로 낮은 수행능력 2. Multi-programming Fixed partition multiprogramming - 메모리 공간을 고정된 크기로 분할 -..

[Memory] Memory Basic

메모리를 배우는 이유? - 본인이 직접 OS를 설계할 일은 거의 없다. 그러나 배운 내용을 본인이 개발한 프로그램 내부에 설계한다면 어떨까? 예를 들어, 디스크에서 데이터를 그대로 가져와서 프로그램에 넣지 않고, 본인이 직접 설계한 메모리 형식에 디스크에서 가져온 데이터들을 먼저 넣는다. 그리고 프로그램의 성격에 맞게 데이터를 어떻게 가져올지 결정하면 프로그램의 성능이 높아질 것이다. 메모리의 종류 용어 표현 - Block : 보조기억장치와 주기억장치 사이의 데이터 전송 단위 * size : 1 ~ 4kb - Word : 주기억장치와 레지스터 사이의 전송 단위 * size : 16 ~ 64kb * 예시 : windows 64 bits 운영체제 - Address binding : 프로그램의 논리 주소와 실..

[Deadlock] Deadlock Solutions

Deadlock prevention methods - 4개의 deadlock 발생 필요 조건 중 하나를 제거 1) Exclusive use of resources 조건 제거 - 모든 자원을 공유 자원으로 사용 - 독립적 실행이 불가능 - 비현실적 2) Non-preemptible resources 조건 제거 - 모든 자원을 선점 가능하게 사용 - 선점 당할 경우 모든 자원 반납하고 다시 처음부터 시작 -> 비효율 - 선점 당할 경우 모든 자원 반납하고 그 지점 저장 -> 복잡해짐 - 비현실적 3) Hold and wait 조건 제거 - 필요한 자원을 한 번에 할당 받기 - 필요하지 않는 상황에도 자원을 가지고 있음 - 자원 낭비 4) Circular wait 조건 제거 - 자원들에게 순서를 부여하여 순서..

[Deadlock] Deadlock and Resources types

Deadlock의 개념 - blcoked : 프로세스가 특정 이벤트를 기다리는 상태 - asleep : 프로세스가 필요한 자원(메모리 등)을 기다리는 상태 - deadlock : 프로세스가 발생 가능성이 없는 이벤트를 기다리는 상태 - starvation과 deadlock의 차이 * deadlock은 사용할 수 없는 자원을 기다리는 상태 * starvation은 사용할 수 있는 자원(CPU)를 기다리는 상태 * 발생하는 상황이 다름 Deadlock 발생 - 2개의 프로세스(P1, P2)와 2개의 자원(R1, R2) - ① P1이 자원 R2 요청 - ② P2가 자원 R1 요청 - ③ P1이 자원 R1 요청했으나 자원이 없음, 아직 deadlock이 아닌 상태, 왜냐하면 P2가 R1 사용하고 반납하면 되기 ..

Process Synchronization and Mutual Exclusion

다중 프로그래밍 시스템 - 여러 개의 프로세스 존재 - 프로세스들은 서로 독립적으로 동작 - 공유 자원 또는 데이터가 있을 때, 문제 발생 동기화 - 프로세스들이 서로 동작을 맞추는 것 - 프로세스들이 서로 정보를 공유하는 것 용어 표현 - Shared data(공유 데이터) : 여러 프로세스들이 공유하는 데이터 - Critical section(임계 영역) : 공유 데이터를 접근하는 코드 영역 - Mutual exclusion(상호 배제) : 둘 이상의 프로세스가 동시에 임계 영역에 진입을 막는 것 Critical section에서의 문제 과정 1. 공유 데이터를 Register에 저장 2. 저장된 데이터에 1 더하기 3. 저장된 값을 공유 데이터에 저장 - 문제 : 일관된 답을 주지 않음 상호 배제 ..

Process Scheduling

다중 프로그래밍(Multi Programming) - 여러 개의 프로세스가 시스템 내 존재 - 자원을 할당할 프로세스를 선택해야 함 => 스케줄링 - 자원 관리 * 시간 분할 관리 + 프로세스 스케줄링 : 프로세서 사용시간을 프로세스에게 분배 * 공간 분할 관리 + 하나의 자원을 분할하여 동시에 사용 => 메모리 스케줄링 목적 - 시스템 성능 향상 - 성능 지표 * 응답시간 * 작업 처리량 * 자원 활용도 용어 표현 스케줄링 기준 및 단계 1. 스케줄링 기준 - 프로세스의 특성 : I/O-bounded, compute-bounded - 시스템 특성 : 일괄 시스템(Batch system), 대화형 시스템(interactive system) - 프로세스의 긴급성 : Hard real-time, Soft r..

Thread 관리

Thread - 자원을 공유하지만 각자의 제어 요소를 갖는 것 - 자원을 공유하기 때문에 작업을 효율적으로 진행 - Processor 활용의 기본 단위로 CPU 병렬처리가 가능 Thread 구성요소 - Thread ID - Register set(PC, SP 등) - Stack(i.e. local data) Thread의 장점 - 사용자 응답성 : 일부 Thread의 처리가 지연되어도, 다른 Thread는 작업을 계속 처리 - 자원 공유 : 효율성 증가 - 경제성 : Context Switch가 발생하지 않아서 비용 경제적 - 멀티 프로세서 활용 : CPU 병렬처리 가능으로 작업 효율 증대 예시 FPS게임을 한다고 하자. 모니터와 마우스, 키보드 I/O가 존재한다. 이 3개는 Thread가 하나씩 담당하..

반응형