1.9 중요한 주제들
시스템은 단순한 하드웨어 그 이상이다.
하드웨어와 소프트웨어가 서로 얽혀, "프로그램을 실행시킨다"는 궁극적인 목표를 달성한다.
아래에서는 몇가지 중요한 컨셉을 소개한다. 중요성은 책의 다른 부분에서 더 소개한다.
시스템의 특정 부분의 발달이 전체 시스템에 끼치는 영향은
해당 시스템을 차지하는 비율과 성능 향샹 폭이다.
즉, 해당 부분은 기존에
따라서 성능 향상 이후 걸리는 시간은
성능 향상폭은
실질적인 성능 향상이 존재할 경우,
간단하게,
재미있는 특이 케이스로는
이 때,
(여러 오작동을 일으킬 소지가 있다는 의미같다)
아래에서는 3가지 단계로 살펴보며, 시스템 계층 상 높은 것에서 낮은 것순으로 살펴본다.
스레드를 통해, 하나의 단일 프로세스에서 여러 개의
이러한 기능은 단일 컴퓨터가 빠르게 여러개의 컨택스트를 오가며 실행하는 것으로
이는 여러 유저가 하나의 웹 서버에 접근하고, 여러 작업을 동시에 하는 등 큰 역할을 한다.
최근까지는 실제로는 단일 프로세서로 구성되어
여러개의 프로세서를 단일 OS 커널로 다루게 되면서, 현대에는
멀티 코어 시스템이 발달하면서,
멀티 코어 프로세서는 여러개의 CPU(cores 라고 지칭되는) 이 하나의 단일 칩에 포함된다.
각 코어별로 각자만의 별도의 cache 가 존재하기도 하며, 코어간에 공유하는 cache도 존재한다.
이는 단일 CPU가 여러 개의
멀티프로세싱은 2가지 측면에서 성능 향상을 이뤄냈다.
현대 프로세서는 여러개의
최근의 프로세서는 한 클럭에 2~4개의
프로세서는
하나의 명령어(
잘 정렬한 후, 병렬적으로 실행한다.
하나의 사이클(
현대 프로세서는 특별한 하드웨어가 존재한다.
이 하드웨어는 단일 명령어(
예를 들어, 8 쌍의 float 더하기 연산을 병렬적으로 한번에 처리한다.
이미지, 소리, 영상 등의 처리에서 최적화에 사용된다.
일부 컴파일러는 자동적으로 해당 최적화를 시도하지만,
더 좋은 방법은 특별한
추상화는 컴퓨터 과학 전반에서 중요한 역할을 한다.
API(Application Program Interface) 는 좋은 예시 중 하나이다.
API 는 프로그래머가 내부 구현을 모르는 채로, 해당 코드를 사용할 수 있도록 해준다.
각 언어는 다양한 형태와 레벨의 추상화를 지원한다.
자바의 경우 class 가 있으며, C언어에서는 함수 프로토타입이 있다.
PARA/Project/CS_APP_organize/chapter1/1.7-OS_manage_Hardware
에서 이미 다양하면서 중요한 추상화의 예시를 살펴보았다.
ISA(
ISA 를 이용한 코드는 실제 프로세서와 무관하게 실행가능하며,
구현된 프로세서에 따라 다른 비용과 성능을 낼 수 있다.
OS에서 3가지의 추상화를 살펴보았다.
그리고, 여기에 한가지를 추가해서
즉, OS, 프로세서, 프로그램 모두를 아우른다.
VM은 여러 OS(window, mac OS, Linux) 에서 똑같이 돌아갈 수 있도록 설계된다.