운영체제
스케쥴링 시스템
배치처리 시스템
- Queue에 하나씩 프로세스를 넣듯 순차적으로 프로세스를 실행시키는 시스템. 먼저 요청이 들어온 프로세스부터 순서대로 실행한다.
- 따로 알고리즘이 필요없는 직관적인 시스템이지만 치명적인 단점이 있다.
- p1은 10분이 걸리고, p2는 3초가 걸린다고 해보자. 만약 p1, p2 순으로 요청이 들어왔다면 p1이 다 실행되는 10분동안 p2는 하염없이 기다릴수밖에 없다.
- 비록 2개의 프로세스가 모두 끝나는 시간은 10분 3초로 동일하겠지만, p2가 먼저 실행될 수 있다면 p1을 기다리는동안 p2라도 다 완료되었을테니 더 효율적이다. 이 문제는 물리적인 한계이기 때문에 처리 성능이 아무리 좋아진다 하더라도 어쩔수 없다.
- 여러 사용자가 하나의 컴퓨터에 접근하면 문제는 더 심각해진다. 순서대로 하나하나 응답해주면 어느 세월에 모든 사용자에게 응답이 될까..?
시분할 시스템
- 응용 프로그램이 CPU를 점유하는 시간을 잘게 쪼개서 실행할 수 있도록 하는 시스템.
- 시간을 쪼개서 분배했기 때문에 응답 시간이 짧아진다.
- 앞으로 나올 스케줄링 시스템들은 이 시분할 개념에서 출발한 것들이 많다.
멀티 태스킹
- 단일 CPU에서 여러 응용 프로그램이 동시에 실행되는 것처럼 보이도록 하는 시스템
- 실제로 동시에 실행되는 것은 아니다.

p1, p2, p3는 각각 다른 프로세스이고 동시에 실행되지도 않는다. 단 이 시간을 매우 짧게 잡아서 번갈아가면서 빠르게 실행시킨다면 모두 동시에 실행하는 것처럼 CPU 운영이 가능하다.
멀티 프로세싱
멀티 프로세싱은 멀티 태스킹과는 조금 다르다. 단일 CPU를 기준으로 설명한 멀티 태스킹과는 달리 멀티 프로세싱은 n개의 CPU가 1개 혹은 m개의 프로세스를 동시에 실행하는 방법이다.

멀티 프로그래밍
- 최대한 CPU를 많이 사용해 CPU 활용도를 극대화하자!
- 멀티 태스킹을 하면 CPU 자원을 잘게 쪼갠다. 그러나 잘게 쪼갠다고 그 자원을 100% 다 쓰지는 못한다. 중간에 자원이 놀아버리는 상황이 발생할 수 있다.
- CPU가 연산을 하다가 파일을 읽는 연산이 발생한다. 그렇다면?
- 파일을 읽기 위해서 디스크에 접근해야 하고, 그렇게 왔다갔다하는 시간은 CPU의 입장에서는 엄청나게 긴 시간이다. 그러나 이 시간동안 CPU는 다른 일을 처리할 수 없다. CPU 시간은 전산에서 매우 귀중한 자원이기 때문에 이런 낭비는 매우 아프다.
- 이 낭비되는 시간을 다른 프로세스가 사용할 수 있도록 분배하는 시스템이 멀티프로그래밍이다.
- 사실 요즘 CPU나 스케줄러에는 기본적으로 멀티 프로그래밍 방식이 적용되기 때문에 잘 쓰이지는 않는 말이다. 단일 CPU에서 작업하더라도 파일을 읽으면서 다른 작업을 할 수 없는 경우는 요즘 잘 없지 않는가?
패스트캠퍼스 강의는 내가 싫어하는게 하나 있는데 미리 공개 해놓고 정해진 날짜에 맞춰서 공개를 절대 안한다는 거다. 뭐 다른 강의들은 그렇게 했을지도 모르지만 내가 패캠 강의만 20개 정도가 있는데, 선공개로 구매했던 강의들은 모두 제때 오픈되지 않았다. (패캠은 선공개 강의들을 1차~4차로 두달정도에 나뉘어서 공개를하는데, 언제 공개할지 날짜를 알려준다)
부끄럽지만 구매했던 강의들을 다 듣지는 않아서 이때까지 공개날짜가 미뤄진다해도 별 타격이 없었지만, 이번엔 환급챌린지를 해서 원하는 강의들이 빨리 나왔으면 좋겠는데, 오늘 또 강의 공개일이 늦춰진다는 문자가 왔다. 내가 이강의를 컴퓨터공학생의 전공 모두 듣고싶어서 산게아니라 듣고싶은 일부 강의만 들으려고 산건데, 내가 듣고자 한 강의가 운영체제 말고 다 미공개이다.. 근데 미뤄진다고? 허.. 이벤트만 신나게 하지말고 이런 것좀 잘 지켜주라~~
구매해서 강의를 지금 당장 듣고싶은 사람은 그냥 기다렸다가 모두 공개되었을때 사는게 맘 편할듯!

https://bit.ly/3FVdhDa
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.