-
OS - Process SchedulingProgramming/CS 2021. 11. 9. 20:00
안녕하세요 BeePeach입니다 :)
오늘은 Process scheduling에 대해서 공부해보도록 하겠습니다.
여기서 process란 간단하게 하나의 실행 중인 프로그램(응용프로그램)으로 이해해주시면 됩니다.
(자세히 들어가면 하나의 프로그램에 여러개의 프로세스가 존재할 수 있는데 이해하기 쉽도록 프로세스란 실행 중인 프로그램으로 설명했습니다.)
그리고 기본적으로 CPU에서 한번에 하나의 프로세스만 실행할 수 있다고 가정하겠습니다.
(지금의 CPU는 여러개의 코어가 있고 하나의 프로세스에서도 여러 스레드로 나뉘지만 여기서는 특별한 말이 없다면 1개의 코어를 가진 CPU를 사용하고 프로세스도 1개의 스레드만 가진다고 생각해주세요.)
Process Scheduling
Process Scheduling는 OS에 중요한 역할 중에 하나입니다.
여러 응용 프로그램을 CPU에 배치하는 방법을 말합니다.
그럼 이게 왜 중요할까요?
CPU는 한번에 하나의 프로세스만 실행할 수 있습니다.
한 개의 프로세스만 돌릴 거라면 스케쥴링은 필요하지 않습니다.
하지만 만약 여러개의 프로세스를 실행시킬 거라면 중요해지게 됩니다.
CPU가 한 번에 한 개의 프로세스만 처리할 수 있으니 여러 개의 프로세스를 사용하려 한다면 뒤에 등록된 프로세스는 먼저 등록된 프로세스가 끝날 때까지 기다려야 합니다.
그런데 프로세스가 항상 CPU를 사용하는 것은 아닙니다.
예를 들어서 저장공간에 접근한다면 해당 프로세스는 데이터를 가져 올 동안 기다려야 합니다.
이 시간 동안 해당 프로세스가 계속 CPU를 점유하고 있다면 매우 비효율적입니다.
그럼 이 시간동안 다른 프로세스를 실행시킨다면 효율적으로 CPU를 사용할 수 있겠죠??
위 그림은 메모리 계층과 각 계층마다 걸리는 시간을 나태고 있습니다.
Register 혹은 메모리까지는 ns 단위이지만 Storage로 가게 되면 단위가 바뀝니다.
1000000배 차이가 나게 되네요.
우리에게는 ms도 짧은 시간이지만 CPU입장에서는 매우 긴 시간입니다.
이렇기 때문에 process scheduling에 대해서 이해하고 있어야 합니다.
Batch Processing System (배치 처리 시스템)
1960년대 초에 등장한 개념은 배치 처리 시스템입니다.
배치 처리 시스템은 여러 프로세스를 Queue방식으로 등록하는 것입니다.
하지만 이 시스템은 딱 봐도 해결해야 할 문제가 많습니다.
먼저 등록된 프로세스가 끝날 때까지 뒤에 있는 프로세스는 실행되지 않습니다.
B처럼 오랜 시간이 걸리는 프로세스가 먼저 오게 되면 그 긴 시간 동안 C는 실행되지 못하고 기다려야 합니다.
그럼 응답 시간이 매우 길어지게 됩니다.
프로세스를 하나 실행시켰는데 10분 뒤에 실행된다면 정말 짜증 나겠죠..
심지어 만약 프로세스 중간에 CPU를 점유하고 있지 않는 시간이 있더라도 그 시간 동안 다른 프로세스를 실행하지 않습니다.
그리고 가장 치명적인 것은 프로세스를 동시에 진행할 수 없습니다.
예를 들어서 ProcessA는 인터넷이고 ProcessB는 음악프로그램입니다.
그럼 인터넷을 사용하는 동안에는 음악을 들을 수 없습니다.
이러한 단점을 보안하기 위해서 나온 방식이 바로 Time Sharing System과 Multi Tasking입니다.
Time Sharing System (시분할 시스템)과 Multi Tasking
1970년대에 들어서 나온 Time Sharing System과 Multi Tasking은 개념이 유사하니 묶어서 설명하겠습니다.
시분할 시스템과 멀티태스킹의 개념은 프로세스가 CPU를 점유하는 시간을 우리가 인지하지 못할 정도로 잘게 쪼개서 동시에 실행되는 것처럼 보이게 하는 기술입니다.
실제로는 CPU는 한 번에 하나의 프로세스만 실행하지만 매우 빠르게 프로세스를 전환하면서 우리에게는 동시에 여러 프로세스를 처리하는 것처럼 느껴지게 만듭니다.
이 개념 하나로 배치 처리 시스템의 단점을 모두 보완했습니다.
그럼 이제 우리가 프로그램을 하나 실행시킨다면 바로바로 실행되므로 응답 시간이 매우 줄어들게 됩니다.
그리고 어떤 프로세스가 중간에 CPU를 점유하지 않는 상황일 때 다른 프로세스들을 실행시킬 수 있습니다.
Multi Processing
이후에 등장하게 된 개념이 이제 Multi Processing입니다.
여러 개의 CPU로 하나의 프로세스를 동시에 실행하거나 여러개의 CPU로 여러개의 프로세스를 나눠서 실행하는 하는 기술입니다.
즉, Multi tasking과 Multi Processing의 차이는 CPU(프로세서)가 한 개냐 여러 개냐의 차이입니다.
728x90'Programming > CS' 카테고리의 다른 글
OS - Scheduling Algorithm (0) 2021.11.18 OS - Kernel (0) 2021.11.07 OS - 운영체제 기본 (0) 2021.11.05 Compile이란?? (1) 2020.09.15