운영체제 12

[운영체제] 페이지 교체 (Page replacement)

위 그림은 메모리 초과 할당(over-allocating memory) 상황을 나타내고 있다. 프로세스가 실행되는 동안 페이지 폴트가 발생한다. 운영체제는 필요로 하는 페이지가 보조저장장치에 저장된 위치를 알아내지만 valid한 프레임이 없음을 발견한다(모든 메모리 사용중). 이 상황에서 대부분의 운영체제는 스와핑과 페이지 교체를 함께 사용한다. Basic Page Replacement Demanding Paging은 요구되는 페이지만 backing store에서 가져온다. 하지만 프로그램들을 계속 실행함에 따라 요구 페이지가 계속 늘어나고, 언젠가는 메모리가 가득 차게 될 수 있다(memory full). 여기서 다른 프로그램이 새로 실행되거나 실행중인 프로세스가 다른 페이지를 요구한다면 이미 메모리에..

운영체제 2021.10.20

[운영체제] 가상 메모리, 요구 페이징

가상 메모리(Virtual Memory) 가상 메모리는 물리 메모리 크기의 한계를 극복하기 위해 나온 기술이다. 즉, 물리 메모리보다 큰 프로세스를 수행하기 위해 가상 메모리를 사용한다. 실제 프로그램들을 살펴보면 많은 경우에 프로그램 전체가 메모리에 늘 올라와 있어야 하는 것은 아니라는 것을 알 수 있다. 오류 처리 코드, 옵션, 사용 되지 않는 배열 등은 실질적으로 거의 발생하지 않는다. 프로세스는 실행에 필요한 부분만 메모리에 올림으로써 메인 메모리에 올라가는 프로세스의 크기를 줄일 수 있다. 요구 페이징(Demand Paging) 필요한 페이지만 적재하는 방법을 요구 페이징(Demand Paging)이라고 하며 가상 메모리 시스템에서 가장 일반적으로 사용된다(가상 메모리를 만드는 방법은 두가지가 ..

운영체제 2021.10.18

[운영체제] 페이징(Paging), TLB

Paging? contiguous allocation(연속 메모리 할당)을 사용하면 외부 단편화가 발생한다. Compaction을 사용하면 외부 단편화는 해결할 수 있지만, 오버헤드가 발생하기 때문에 비효율적이다. 이를 해결하기 위해 나온 방법이 페이징(paging)이다. 페이징은 프로세스가 차지하는 물리적 메모리 공간이 비연속적이 되도록 허용하는 메모리 관리 기법을 말한다. 페이징은 외부 단편화가 발생하지 않으며, 따라서 별도의 Compaction이 필요하지 않다(단, 내부 단편화는 발생할 수 있다). 논리적인 분할이 아닌 크기에 따른 분할이며 간단하다. 이러한 이점 때문에 대형 서버용 시스템에서 모바일 장치용 시스템에 이르기가지 대부분의 운영체제에서 페이징을 사용되고 있다. 페이징을 구현하는 기본적인..

운영체제 2021.09.27

[운영체제] 연속 메모리 할당

배경 지식 Basic Hardware Block: 보조기억장치와 주기억장치 사이의 데이터 전송 단위. 1~4KB Word: 주기억장치와 레지스터 사이의 데이터 전송 단위. 16~64bits 레지스터와 캐시는 HW가 관리(CPU)하고, 메인 메모리와 보조기억장치는 SW가 관리한다(OS). CPU는 레지스터를 참조하며, 레지스터 정보는 PCB에 담겨있다. 각각의 프로세스가 독립된 메모리 공간을 가지도록 보장해야 한다. 개별적인 메모리 공간을 분리하여 보호하기 위해 레지스터는 base와 limit으로 나뉘진다. base는 프로세스가 메모리에서 사용할 수 있는 가장 작은 physical address를 의미하며,limit은 사용할 수 있는 주소의 크기를 의미한다. 즉, 프로세스가 사용할 수 있는 가장 큰 주소는..

운영체제 2021.09.22

[운영체제] 교착상태 (Deadlock, 데드락)

교착상태(deadlock)는 프로세스가 리소스를 점유하고 놓아주지 않거나, 어떠한 프로세스도 리소스를 점유하지 못하는 상태가 되어 프로그램이 멈추는 현상을 말한다. 시스템 모델 시스템은 경쟁하는 프로세스들 사이에 분배되어야 할 유한한 자원들로 구성이되며, 여러 프로세스들을 해당 자원을 점유하기 위해 서로 경쟁 구도에 놓여있다. 메모리 공간, CPU 주기, 파일, 입출력 장치 등이 이러한 자원 유형이 예이다. 동기화 도구들(mutex, semaphore)도 시스템 자원 이다. 스레드는 다른 프로세스의 자원을 사용할 수 있으며 이러한 자원 사용으로 인해 교착 상태가 발생할 수 있다. 단. 이는 커널의 문제가 아니다(OS측에서 감시를 대신 한다). 스레드가 자원을 사용하기 위해서는 반드시 요청을 해야 하고 사..

운영체제 2021.09.14

[운영체제] 동기화 도구들 (뮤텍스, 세마포어, 모니터)

프로세스는 동시에 실행될 수 있으며, 여러 개의 프로세스가 협력할 때는 프로세스 사이에 데이터가 동기화되지 않는 문제가 발생할 수 있다. 만약 두 프로세스가 동시에 어떤 변수의 값을 바꾼다면 프로그래머의 의도와는 다른 결과가 나올 것이다. 이처럼 프로세스가 어떤 순서로 데이터에 접근하느냐에 따라 결과 값이 달라질 수 있는 상황을 경쟁 상태(race condition)라고 한다. 임계구역 (Critical Section) 코드상에서 경쟁 조건이 발생할 수 있는 특정 부분을 임계구역(critical section)이라고 부른다. 임계 구역은 둘 이상의 스레드가 동시에 접근해서는 안 되는 공유 자원이다. critical section problem를 해결하기 위해서는 몇가지 조건을 충족해야 한다. 1. 상호 ..

운영체제 2021.09.08

[운영체제] CPU 스케줄링

기본 개념 CPU - I/O 버스트 사이클 (CPU - I/O Burst Cycle) 프로세스 실행은 CPU 실행과 I/O 대기의 사이클로 구성된다. 프로세스의 실행은 CPU Burst로 시작된다. 뒤이어 I/O Burst가 발생하고, 그 뒤를 이어 또 다른 CPU Burst가 발생하며, 이어 또 다른 I/O Burst 등등으로 진행된다. 결국 아래의 그림처럼 마지막 CPU Burst는 실행을 종료하기 위한 시스템 요청과 함께 끝난다. 선점/비선점 스케줄링 (Preemptive/Nonpreemptive Scheduling) CPU 스케줄링 결정은 다음의 네 가지 상황에서 발생할 수 있다. 한 프로세스가 실행 상태에서 대기 상태로 전환될 때 (I/O 발생) 프로세스가 실행 상태에서 준비 완료 상태로 전환될..

운영체제 2021.09.06

[운영체제] 스레드(Thread), 스레드 모델

스레드(Thread) 스레드는 프로세스가 할당받은 자원을 이용하는 실행의 단위이다. 하나의 프로세스가 한 번에 하나의 작업만 수행하는 것은 싱글스레드(Single thread)이며, 하나의 프로세스가 동시에 여러 작업을 수행하는 것은 멀티스레드(Multi thread)라고 한다. 프로세서와 메모리가 발전하며 가능해진 기술이다. 멀티 스레드(Multi Thread) 하나의 프로세스를 다수의 실행 단위로 구분하여 자원을 공유하고 자원의 생성과 관리의 중복성을 최소화하여 수행 능력을 향상 시킨다. 하나의 프로그램에서 동시에 여러 개의 일을 수행할 수 있도록 해줌 (분산처리를 통해 동시에 실행되는 것 처럼 보이는 것) 장점 응답성(responsiveness): 프로그램의 일부분(스레드)이 중단되거나 긴 작업을 ..

운영체제 2021.09.01

[운영체제] 프로세스 구조, 생성, 종료, 통신

프로세스 구조 프로세스는 실행 중에 프로세스 생성 시스템 호출을 이용하여 새로운 프로세스를 생성할 수 있다. 이때 프로세스 생성 순서를 저장하고 부모-자식 관계를 유지하여 계층적으로 생성한다(트리구조). 프로세스를 생성하는 프로세스를 부모 프로세스라 하고, 생성되는 프로세스를 자식 프로세스(또는 서브 프로세스)라 한다. 대부분의 운영체제는 프로세스를 식별할 때 process id(pid) 로 구분하는데 보통 정수값이다. pid가 1인 init프로세스가 루트 부모 프로세스 역할을 수행하며, 시스템이 부팅되면 init프로세스는 다양한 사용자 프로세스를 생성한다. 보통 ps -ef 명령이나 ps aux 명령을 사용해서 현재 돌아가고 있는 프로세스를 확인할 수 있다. 프로세스 생성 시스템 콜의 fork() 함수..

운영체제 2021.08.27

[운영체제] 프로세스 스케줄링

프로세스 스케줄링? 프로세스 스케줄링이란 프로세스가 생성되어 실행될 때 필요한 시스템의 여러자원을 해당 프로세스에게 할당하는 작업을 뜻 하며, 대기 시간은 최소화 하고 최대한 공평하게 처리하는 것을 목적으로한다. 스케줄링 목적/평가기준 CPU 이용률(CPU utilization) : CPU를 얼마나 바쁘게 하는가. 높을수록 좋다. 처리율(Throughput) : 단위시간당 얼마나 많은 프로세스들이 완료되는가. 클 수록 좋다. 소요시간(Turnaround time) : 프로세스가 요청된 후 완료하기까지 얼마나 걸리는가. 메모리 접근 시간, 대기 큐에서의 대기 시간, CPU에서의 실행 시간, I/O 시간 등의 합으로 계산한다. 짧을수록 좋다. 대기시간(Waiting time) : 프로세스가 대기 큐에서 기다..

운영체제 2021.08.27
반응형