Computer Science/Operating System
-
Operating System - 페이지 교체 알고리즘Computer Science/Operating System 2022. 1. 27. 12:57
가상 메모리(Virtual Memory) 가상 메모리(Virtual Memory)의 필요성 프로그램이 CPU에서 실행되기 위해서는 실행에 필요한 부분이 메모리에 올라와 있어야 한다. 또한, 여러 프로그램이 동시에 수행되는 환경에서는 한정된 메모리 공간을 여러 프로그램이 조금씩 나누어서 사용해야 하는데, 이를 위해서는 운영 체제가 적절히 프로세스에 메모리를 할당해야 한다. 운영체제는 CPU에서 당장 수행해야 하는 부분만 메모리에 올리고, 나머지는 디스크의 swap 영역에 저장해 두었다가 다시 필요해지면 기존에 메모리에 있었던 부분과 교체하는 방식을 사용한다. 이처럼, 메모리의 연장 공간으로 디스크의 swap 영역을 사용하게 된다면 메모리의 물리적인 크기에 대한 제약을 고려할 필요가 없어진다. 즉, 가상 메..
-
Operating System - 페이징(Paging) & 세그멘테이션(Segmentation)Computer Science/Operating System 2022. 1. 26. 13:36
메모리 메인 메모리(Main Memory)의 문제점 CPU가 직접 접근할 수 있는 기억 장치로, 프로세스가 실행되기 위해서는 프로그램 코드를 메인 메모리에 적재해 두어야 한다. 그런데, 만약 프로그램 용량이 메인 메모리보다 크면 어떤 일이 발생할까? 가상 메모리(Virtual Memory)의 등장 실제 물리 메모리 개념과 사용자의 논리 메모리 개념을 분리한 것이다. 메모리 공간은 한정적이기 때문에 사용자에게 더 많은 메모리를 제공하기 위해 가상 주소를 사용한다. 메모리 관리 장치는 가상 주소를 이용해 실제 데이터가 담겨있는 주소로 변환해 준다. 여기서 가상 주소 공간은 하나의 프로세스가 메모리에 저장되는 논리적인 모습을 가상 메모리에 구현한 공간이며, 가상 주소는 이러한 가상 주소 공간을 가리키는 주소이..
-
Operating System - 세마포어(Semaphore) & 뮤텍스(Mutex)Computer Science/Operating System 2022. 1. 25. 13:30
세마포어(Semaphore)와 뮤텍스(Mutex) 임계 구역(Critical Section)이란? 프로세스 혹은 스레드가 작업을 수행하면서 공유된 자원에 접근하게 되는데, 이때 동기화 처리를 제대로 해주지 않은 문제가 발생한다. 이렇듯 공유되는 부분은 굉장히 중요한데, 프로그램 코드 상에서 공유 자원에 접근하는 부분을 임계 구역(Critical Section)이라고 한다. 이렇게 임계 구역에 여러 프로세스 및 스레드가 함부로 접근할 수 없도록 관리를 잘해줘야 하는데, 이를 위해 사용하는 방식이 대표적으로 세마포어(Semaphore)와 뮤텍스(Mutex)가 있다. 세마포어(Semaphore)의 동작 과정 세마포어를 이용하는 레스토랑의 화장실에는 여러 개의 칸이 있다. 그리고 화장실 입구에는 현재 화장실의 ..
-
Operating System - 경쟁 상태(Race Condition)Computer Science/Operating System 2022. 1. 24. 13:00
경쟁 상태(Race Condition) 경쟁 상태란? ㆍ 프로세스가 어떤 순서로 데이터에 접근하느냐에 따라 결괏값이 달라질 수 있는 상황을 말한다. ㆍ 둘 이상의 입력이나 조작이 동시에 일어나 의도하지 않은 결과를 가져오는 경우를 말한다. ㆍ 공유 자원에 여러 프로세스가 동시에 접근할 때 자료의 일관성을 해치는 결과가 나타날 수 있다. ㆍ 경쟁 상태로 교착상태의 종류 중에 하나이다. 경쟁 상태가 발생하는 상황 커널 작업을 수행하는 중에 인터럽트가 발생하는 경우 ㆍ 문제점 : 커널 모드에서 데이터를 로드하여 작업을 수행하다가 인터럽트가 발생하여 같은 데이터를 조작하는 경우에 발생한다. ㆍ 해결법 : 커널 모드에서 작업을 수행하는 동안, 인터럽트를 disable 시켜 CPU 제어권을 가져가지 못하게 한다. ..
-
Operating System - 데드락(DeadLock)Computer Science/Operating System 2022. 1. 24. 12:39
데드락(DeadLock) 데드락이란? ㆍ 둘 이상의 프로세스가 다른 프로세스가 점유하고 있는 자원을 서로 기다릴 때 무한 대기에 빠지는 현상을 말하며, 교착 상태라고도 부른다. ㆍ 시스템적으로 한정된 자원을 여러 곳에서 사용하려고 할 때 발생한다. ㆍ Process 1과 Process 2가 Resource 1, 2 둘 다 얻어야 한다고 가정해본다. ㆍ Process 1이 Resource 1을 얻고 Process 2가 Resource 2를 얻은 상태에서, Process 1은 Resource 2를 기다리고 Process 2는 Resource 1을 기다리게 된다. ㆍ 하지만, 서로 원하는 자원이 상대방에게 할당되어 있기 때문에 두 프로세스는 무한정 기다리게 되는데 이러한 상태를 데드락(DeadLock) 상태라..
-
Operating System - CPU SchedulingComputer Science/Operating System 2022. 1. 14. 14:30
CPU Scheduling CPU Scheduling이란? ㆍ 프로세스가 생성되어 실행될 때 필요한 시스템의 여러 자원을 해당 프로세스에게 할당하는 작업을 의미한다. CPU Scheduling의 목적 ㆍ 공정한 스케줄링, 처리량의 극대화, 응답 시간의 최소화 ㆍ 균형 있는 자원의 사용, 프로세스 실행의 무한한 연기를 배제, 반환시간 예측 가능 Scheduling Criteria 스케줄링의 척도 1. CPU Utilization(CPU 이용률) : CPU가 얼마나 놀지 않고 부지런히 일하는가 2. Throughput(처리율) : 시간 단위당 실행을 완료한 프로세스의 수 (시간당 몇 개의 작업을 처리하였는가) 3. Turnaround Time(반환시간) : 작업이 Ready Queue에 처음 들어갔을 때부터..