본문 바로가기

OS

[OS][운영체제] 9. Virtual Memory / 가상 메모리 1. Background 2. Demand Paging 3. Page Replacement Background 가상 메모리는 logical 메모리를 physical 메모리와 구분한다. 이는 다음과 같은 특징을 가진다. 실행에 필요한 일부 파트만 메모리로 가져와 실행 한정적인 physical 메모리 주소 공간과 별개로 더 큰 logical 주소 공간 주소공간을 공유함으로써 프로세스 생성이 효율적 (메모리 오버헤드 X) Demand paging 혹은 Demand segmentation 방식으로 구현된 Demand Paging 가상 메모리를 구현할 때 가장 중요한 기법이다. 특정 페이지가 필요할 때만 메모리로 가져와 실행한다. 이는 다음과 같은 장점이 있다. I/O 필요 적음 메모리 필요 적음 반응시간 빨라 .. 더보기
[OS][운영체제] 8. Memory Management / 메모리 관리 1. Background 2. Swapping 3. Contiguous Allocation 4. Paging 5. Segmentation 6. Segmentation with Paging 1. Background - 모든 프로그램은 실행하기 위해 디스크(Input queue)에서 메모리로 올라와야 한다. - 메모리로 올리기 위해 주소 바인딩(binding) 작업이 이뤄져야 한다. 이는 다음과 같은 세가지 경우가 있다. Compile-time : 메모리 위치를 안다면 absolute code 생성 : 시작 위치가 변경되면 recompile Load-time : relocatable code(재배치 코드) 생성 : 이는 임시 코드이므로 바인딩 작업이 지연이 됨 Execution-time : 프로세스가 다른 .. 더보기
[OS][운영체제] 7. Deadlocks / 데드락 The Deadlock 문제 Deadlock Characterization (빠지기 위한 4가지 조건) 시스템 모델 데드락 Handling 방법 데드락 Prevention 데드락 Avoidance 데드락 Detection 데드락 Recovery 1. The Deadlock 문제 The Deadlock: 각각 하나의 자원을 가지고 있고, 상대의 자원을 기다리고 있는 상황을 말한다. 이는 서로 양보를 하지 않아 계속 기다리는 상황이다. - Bridge Crossing: 누군가 후진을 해야 (preempt resources and rollback) 풀리는 문제 상황이다. -> Starvation 문제도 생길 수 있다 2. Deadlock Characterization (4가지 조건) Mutual Exclusi.. 더보기
[OS][운영체제] 6. Process Synchronization / 프로세스 동기화(순서화) Background The Critical-Section Problem Peterson’s Solution + 동기화 하드웨어 기법 Semaphores Classic Problems of Synchronization Synchronization Examples 1. Background 공유 데이터에 대한 동시 접근은 데이터 불일치가 일어나게 된다. 이를 막기 위해 Cooperating 프로세스들을 순서를 정해 실행해야 한다. 예를 들어, Consumer, Producer의 경우(Cooperating Processes)에 ‘buffer’ 데이터 인덱스에 접근하는 ‘count’ 전역 변수를 공유한다. 위와 같이, counter++(파란색)과 counter--(빨간색) 명령이 Interleaving하여 데이터.. 더보기
[OS][운영체제] 5. CPU Scheduling / CPU 스케줄링 스케줄링의 개념 스케줄링의 기준 스케줄링 알고리즘 Issues OS 예시 알고리즘 평가 1. 스케줄링의 개념 CPU Scheduling 메모리의 프로세스 중 하나를 실행 준비를 위해 CPU로 골라 할당한다. 멀티프로그래밍(I/O 작업 시에 CPU는 다른 프로세스를 잡는 시스템)을 포함하는 CPU 활용을 최대화하며, CPU burst, I/O burst(CPU wait)의 순환이 짧게짧게 이뤄진다. *CPU Utilization = CPU 활용시간(I/O or CPU) / CPU 활용시간 + 오버헤드 - 스케줄링 하는 프로세스는 다음과 같다: non-preemptive(interrupt 될 수 없음) 방식은 중단되었거나, 실행되다가 waiting(I/O 작업) 할 때 preemptive(새로운 프로세스의 .. 더보기