이때 Card Reader와 Line Printer는 기계적 시스템이고 Job은 전자적 시스템인데,
CPU나 메모리와 같은 전자적 요소가 아무리 빨리도 기계가 이 속도를 따라 잡는 것이 쉽지 않다.
따라서 현재까지도 시스템의 수행속도는 I/O Device의 속도에 따라 결정된다.
cf. 스풀링(SPOOLing)과 버퍼링(Buffering)
- 목적
두 방법 모두 CPU의 처리속도와 입출력 장치의 속도 차이를 보완하기 위한 방법이다. 즉, I/O time를 줄이기 위한 방법이다.
- 스풀링
스풀링은 디스크의 일부를 스풀공간이라는 큰 버퍼로 사용하는 것이다.
입력 장치가 수정한 파일을 출력장치가 그것을 받을 수 있을 때까지 일시적으로 저장함으로써,
프린터를 통해서 출력하는 동안에 다른 입력을 읽어들일 수 있으며, 이 시간 동안에도 또 다른 작업이 수행될수 있다.
즉, 많은 작업의 계산과 입출력을 중복할 수 있다.
- 버퍼링
한 레코드가 읽혀 CPU가 그것에 대해 연산을 시작함과 동시에 입출력 장치는 곧 다음에 필요한 레코드를 미리 읽어서 주기억장치에
저장함으로써 CPU가 필요로하는 레코드를 기다림 없이 전달해 줄 수 있다.
버퍼링은 한 작업의 계산과 입출력만을 중복할 수 있다.
PC가 등장하기 이전에는 서버와 온라인 프로세싱으로 상호작용을 했다.
그런데 이때 서버를 많은 사람들이 함께 사용했기 때문에 서버 컴퓨터의 CPU 시간을 나눠서 사용하기 시작했다. 예를 들어, 10초가 걸리는 작업이 있다면 한 컴퓨터에서 작업을 끝낸 후 다음 컴퓨터의 작업이 시작 되는 것이 아니라, 한 대 당 1초씩 CPU를 번갈아가며 사용하여 대기 시간을 줄여준다.
* Time slice : 한 번 CPU를 받아서 쓸 수 있는 시간
* Round Robin Scheduling: 각 태스크에 균등하게 실행권을 부여. '공평성'에 초점을 맞춘 스케쥴링 기법
< 메모리 보틀넥(Memory Bottleneck)의 해결 >
메모리 보틀넥을 해결하기 위한 것이 바로 '캐시 메모리'
미리 예측하여 캐시 메모리에 가져다놓고, 이를 가져와서 작업한다.
캐시는 메모리 크기가 작고 SRAM으로 만들어져 속도가 빠르므로 CPU마다 캐시를 주면 충돌이 줄어든다.
< 캐시 메모리에서 주의할 점>
CPU1과 CPU2가 메모리의 같은 내용을 가져와서 캐시에 담아두고,
CPU1에서 이 캐시에 어떤 내용을 작성한다면 CPU2도 그것을 감지하고 캐시를 수정할 수 있어야 한다.
-> 이때 필요한 것이 'Cache Consistency Protocol'이다.
NUMA(Non-Uniform Memory Access)
: 메모리를 공유하되, CPU 별로 자기 메모리와 남의 메모리가 나누어져 있다. 어떤 CPU에서 메모리를 쓰든 접근 시간이 동일하다.
UMA(Uniform Memory Access)
: 하나의 메모리를 모든 CPU가 공유한다. 어떤 CPU에서 메모리를 쓰든 접근 시간이 동일하다.
cf. 분산 시스템
:각각의 CPU가 자신만의 메모리를 갖는다. 다른 CPU가 지닌 메모리에 access하려면 그만큼 시간이 더 소요된다.
: 서로 물리적으로 떨어져있는 컴퓨터들이 하나의 컴퓨터처럼 동작할 수 있도록 클라이언트/서버 사이에서 교량적인 역할을 하는 소프트웨어 서비스
: 클라우드 서비스에서 사용자들에게 제공하는 OS는 Virtual Machine, 즉 CPU를 소프트웨어로 만든 것이지, 실제 CPU는 아니다. 클라우드 서비스에서 이렇게 VM을 만들어서 사용자에게 제공하는 OS를 게스트 OS라고 한다.
그런데, 사용자가 임대한 서버 컴퓨터에 어떤 내용을 저장하려고 한다면, 이때 디스크는 실제 디스크여야 한다. 이를 위해 사용자에게 디스크 일부를 떼어서 주고, 호스트 컴퓨터에서 다수의 OS를 실행하기 위한 논리적 플랫폼 역할을 하는 것이 Hypervisor(혹은 Virtual Machine Manager)이다.
ex.
SaaS(Software as a Service), IaaS(Infrastructure as a Service),
PaaS(Platform as a Service), DaaS(Desktop as a Service)
컨테이너(Container)
- 경량급 가상화
- 격리된 공간에서 프로세스가 동작하는 기술
- 프로세스 그룹