꾸준한 개발자

계속적인 성장을 추구하는 개발자입니다. 꾸준함을 추구합니다.

계속 쓰는 개발 노트

운영체제 28

스케줄링 알고림 (4) - 프로세스 상태와 스케줄링

CPU는 단순히 Ready State Queue에서 첫 번째로 들어온 프로그램을 가져와서 실행합니다. 해당 프로그램은 Running State Queue에 들어가게 됩니다. 만약 해당 프로그램이 계속해서 실행될 수 있는 프로그램이라면 다시 Ready State Queue에 들어가게 됩니다. 그 후 다시 Ready State Queue에서 두 번째로 들어온 프로그램을 꺼내서 Running State Queue에 들어가게 됩니다. 만약 해당 프로그램이 Wait 상태를 갖게 된다면 Block State Queue에 들어가게 됩니다. Block State Queue에서 Wait 작업이 끝나게 되면 Ready State Queue에 들어가게 됩니다. CPU는 다시 Ready State Queue에서 프로그램을 가..

운영체제 (OS) 2021.04.16

스케줄링 알고리즘 (3) - 프로세스 상태와 스케줄링

멀티 프로그래밍과 Wait 멀티 프로그래밍은 CPU 활용도를 극대화 하는 스케줄링 알고리즘입니다. 저장매체에서 파일을 읽는 것과 같이 소요시간이 긴 작업을 할 때 파일을 불러올 때까지 기다리면서 다른 응용 프로그램을 실행합니다. 프로세스 상태 스케줄러가 A가 Run 상태인 것을 알고 있어야 CPU에 넣어줄 수 있습니다. B와 C도 마찬가지입니다. 즉, 어느시점에 어떤 프로그램을 넣어줄까를 알아야 됩니다. running state: 현재 CPU에서 실행 상태밍과 Wait 멀티 프로그래밍은 CPU 활용도를 극대화 하는 스케줄링 알고리즘입니다. 저장매체에서 파일을 읽는 것과 같이 소요시간이 긴 작업을 할 때 파일을 불러올 때까지 기다리면서 다른 응용 프로그램을 실행합니다. 프로세스 상태 스케줄러가 A가 Run..

운영체제 (OS) 2021.04.16

스케줄링 알고리즘 (2)

RealTime OS (RTOS) 응용 프로그램 실시간 성능 보장을 목표로하는 OS입니다. 시간의 보장이 중요한 프로그램에서 사용합니다. General Purpose OS (GPOS) 프로세스 실행시간에 민감하지 않고, 일반적인 목적으로 사용되는 OS입니다. window, linux와 같은 일반 운영체제가 해당됩니다. 우선순위 기반 스케줄러 (Priority-Based) 우선 순위가 높은 것부터 실행합니다. 정적 우선순위: 프로세스마다 우선순위를 미리 정합니다. 만약 실행해야될 프로그램이 많다면 구현하기 어려워집니다. 동적 우선순위: 스케줄러가 상황에 따라 우선순위를 동적으로 변경합니다. Round Robin 스케줄러

운영체제 (OS) 2021.04.16

스케줄링 알고리즘 (1)

프로세스 실행 중인 프로그램을 프로세스라 합니다. 프로세스 메모리에 올려져서 실행이 됩니다. 코드 이미지는 일종의 실행 파일입니다. 예로 ELF_format이 있습니다. 우리는 프로세스를 작업이라고도 하고 task라고도 하고, job이라고 부르기도 합니다. 응용 프로그램이 프로세스인 것은 아닙니다. 응용 프로그램은 여러 개의 프로세스로 이루어집니다. 여러 개의 프로세스가 상호작용을 할 수 있습니다. 스케줄러와 프로세스 관계 스케줄러는 프로세스를 관리합니다. 스케줄링하는 단위가 프로세스가 됩니다. 스케줄링 알고리즘 어느 순서로 프로세스를 실행시킬까하는 고민을 합니다. FIFO 스케줄러 가장 간단한 스케줄러입니다. 배치 처리 시스템과 유사합니다. 들어온데로 실행이되고 완료될 때까지 기다려야 됩니다. 최단 작..

운영체제 (OS) 2021.04.15

프로세스 스케쥴링 (2)

멀티 프로그래밍 응용 프로그램은 최대한 CPU를 많이 활용하도록 하는 시스템입니다. 시간 대비 CPU 활용도를 높일 수 있습니다. 응용 프로그램이 시스템 콜을 통해 다른 동작을 하는 동안 다음 프로그램을 실행하고 동작합니다. 정리 실제로는 시분할 시스템, 멀티 프로그래밍, 멀티 태스킹이 유사한 의미로 응용됩니다. 여러 응용 프로그램을 실행 가능하도록 해줍니다. 응용 프로그래밍이 동시에 실행되는 것처럼 보이게 합니다. 또한 CPU를 쉬지 않고 응용 프로그램을 실행하도록 해서, 짧은 시간 안에 응용 프로르램이 실행완료될 수 있도록 합니다. 다중 사용자도 지원합니다. 시분할 시스템: 다중 사용자 지원, 컴퓨터 응답시간 최소화 멀티 태스킹: 단일 CPU에서 여러 응용 프로그램을 동시에 실행되는 것처럼 보이는 시..

운영체제 (OS) 2021.04.14

프로세스 스케쥴링 (1)

배치 처리 시스템 자동으로 다음 응용 프로그램이 이어서 실행될 수 있도록 하는 시스템입니다. 알고리즘에서 큐 방식과 비슷합니다. 배치 처리 시스템과 시분할 시스템/멀티 프로그래밍 배치 처리 시스템이 더이상 안 쓰이고 시분할 및 멀티 프로그래밍이 사용됩니다. 배치 처리 시스템에서 프로그램 별로 걸리는 시간이 다릅니다. 그러다보니 시간이 오래 걸리는 프로그램이 실행되는 동안은 오랫동안 기다려야 됩니다. 그리고 멀티태스킹이 되지 않았기 때문에 동영상을 보면서 문서 작성을 할 수 없습니다. 또 여러 사용자가 동시에 하나의 컴퓨터를 사용할 수 없습니다. 즉, 동시성과 다중 사용자 지원이 안됩니다. 이러한 단저들 때문에 멀티 프로그래밍/시분할 시스템이 나왔습니다. 시분할 시스템 다중 사용자 자원을 위해 컴퓨터 응답..

운영체제 (OS) 2021.04.14

운영체제 구조 (2)

1. CPU Protection Rings CPU도 권한 모드라는 것을 가지고 있습니다. 대표적으로 사용자 모드와 커널 모드가 있습니다. 사용자 모드는 일반적인 명령을 실행할 수 있는 것이고, 커널 명령은 특권 명령과 원하는 작업 수행을 위한 자원 접근을 가능케 하도록 실행할 수 있습니다. 대부분의 운영체제는 Ring0과 Ring3을 사용합니다. Ring3을 사용자 모드라고 지칭하고 Ring0을 커널 모드라고 지칭합니다. 여기서 커널 모드란 뭘까요? OS가 CPU를 쓸 때 사용하는 모드입니다. 즉, 응용 프로그램이 Ring3을 사용하고 OS가 Ring0을 사용합니다. 커널 모드에서만 실행 가능한 기능들이 있습니다. 커널 모드로 실행하려면 반드시 시스템 콜을 거쳐야 됩니다. 시스템 콜은 운영체제가 제공합니..

운영체제 (OS) 2021.04.13

운영체제 구조 (1)

1. 응용 프로그램, 운영체제, 컴퓨터 하드웨어(시스템 리소스) 관계 도서관에 비유하면 운영체제는 도서관, 응용 프로그램은 시민, 컴퓨터 하드웨어는 책이 됩니다. 이때 운영체제의 역할을 보자면, 시민이 도서관에서 원하는 책을 요청합니다. 그러면 도서관은 적절한 책을 찾아서 시민에게 빌려줍니다. 대출 기한이 다 되면, 도서관이 해당 책을 회수합니다. 운영체제는 응용 프로그램이 요청하는 메모리를 허가하고 분배합니다. 그리고 응용 프로그램이 요청하는 CPU 시간을 제공하고, IO Devices 사용을 허가하거나 제어합니다. 2. 사용자, 응용 프로그램, 운영체제, 컴퓨터 하드웨어 관계 3. 사용자 인터페이스 운영체제는 사용자 인터페이스를 제공합니다. 그 인터페이스를 쉘(shell)이라 합니다. 쉘도 하나의 응..

운영체제 (OS) 2021.04.13