Ch 1.1 ~ 1.4 는 여기에서 확인할 수 있습니다.
컴퓨터 시스템 Ch 1
1.1 정보는 비트와 컨텍스트로 이루어진다.개발자가 작성한 소스 프로그램은 텍스트 파일의 아스키 문자로 변환되고, 아스키 문자는 비트값이므로 비트로 저장이 된다. 같은 비트열도 컨텍스트
skylarcoding.tistory.com

1.5 캐시가 중요하다
시스템은 정보를 한 곳에서 다른 곳으로 이동시키는 일에 많은 시간을 쓴다. 이러한 여러 복사과정들이 프로그램의 실제 작업을 느리게 하는 오버헤드다. 시스템 설계자들의 주요 목적은 이러한 복사과정들을 가능한 빠르게 동작하도록 하는 것이다.

캐시 메모리라는 작고 빠른 저장장치를 고안하여 프로세서가 단기간에 필요로 할 가능성이 높은 정보를 임시로 저장할 목적으로 사용한다. 프로그램이 지엽적인 영역의 코드와 데이터를 액세스하는 경향인 지역성을 활용하여 시스템이 매우 빠른 메모리 효과를 얻을 수 있다.
* 캐시라는 단어가 메모이제이션에서도 나와서 너무 헷갈렸는데, 캐시는 특정 자료구조가 아니라 한 번 계산하거나 가져온 결과를 나중에 다시 쓰려고 저장해두는 것 이라는 개념이다.
* 지역성의 원리 : 잘 작성된 프로그램은 최근에 참조했던 데이터 근처의 데이터를 참조하거나, 최근에 참조했던 데이터를 다시 참조하려는 경향이 있다. 자주 쓰는 데이터를 어떻게 예측하지? → 지역성
* 캐시는 누가 관리하는가?
L1/L2/L3 같은 하드웨어 캐시는 캐시 컨트롤러 하드웨어가 자동으로, 프로그래머 개입 없이 관리한다.
1.6 저장장치들은 계층구조를 이룬다
메모리 계층 구조의 레벨이 작을수록 빠르고, 클수록 더 느리고 크고 바이트당 가격이 싸진다. 한 레벨의 저장장치가 다음 하위레벨 저장장치의 캐시 역할을 한다.

CPU 속도와 메인메모리/디스크의 속도 사이에 격차가 발생하였고, 이 격차를 메우기 위해 중간중간 저장장치(캐시) 를 끼워넣은 구조이다.
1.7 운영체제는 하드웨어를 관리한다
운영체제는 하드웨어와 스프트웨어 사이에 위치한 소프트웨어 계층이다. 응용프로그램이 하드웨어를 제어하려면 항상 운영체제를 통해서 해야한다.
운영체제는 두가지 목적을 가지고 있다.
- 제멋대로 동작하는 응용프로그램들이 하드웨어를 잘못 사용하는 것을 막기 위해
- 응용 프로그램들이 단순하고 균일한 메커니즘을 사용하여, 복잡한 다른 저수준 하드웨어 장치들을 조작할 수 있도록 하기 위해

프로세스는 실행중인 프로그램에 대한 운영체제의 추상화다. 다수의 프로세스들은 동일한 시스템에서 동시에 실행될 수 있으며, 각 프로세스는 하드웨어를 배타적으로 사용하는 것처럼 느껴진다. 동시에라는 말은 한 프로세스의 인스트럭션들이 다른 프로세스의 인스트럭션들과 섞인다는 것을 의미한다.
* 우리가 컴퓨터를 사용할 때, 크롬, 스포티파이, 등 여러 프로그램을 동시에 띄워놓는 상황을 생각해보면 된다.
프로세서가 프로세스들을 바꿔주는 방식을 통해 한 개의 CPU가 다수의 프로세스를 동시에 실행하는 것처럼 보이게 해준다. 운영체제는 문맥 전환이라는 방법을 사용해서 이러한 교차실행을 수행한다.
단일 프로세서 시스템
단일 프로세서 시스템에서 운영체제는 프로세스가 실행하는데 필요한 모든 상태정보의 변화를 추적한다. 이 컨텍스트라고 부르는 상태정보는 PC, 레지스터 파일, 메인 메모리의 현재 값을 포함하고 있다. 특정한 시간동안에 단일 프로세서 시스템은 한 개의 프로세스 코드만을 실행할 수 있다.
문맥전환
운영체제는 현재 프로세스에서 다른 새로운 프로세스로 제어를 옮기려고 할 때 현재 프로세스의 컨텍스트를 저장하고 새 프로세스의 컨텍스트를 복원시키는 문맥전환을 실행하여 제어권을 넘겨준다.
커널
전환은 메모리에 상주하는 운영체제 커널에 의해 관리된다. 응용프로그램이 운영체제에 의한 어떤 작업을 요청하면, 컴퓨터는 특정 시스템 콜을 실행해서 커널에 제어를 넘겨준다. 커널은 요청된 작업을 수행하고 응용프로그램으로 리턴한다. 커널은 별도의 프로세스가 아닌, 모든 프로세스를 관리하기 위해 시스템이 이용하는 코드와 자료구조의 집합이다.
응용프로그램 요청 → 커널 → 작업수행 → 응용프로그램 리턴
쓰레드
최근의 시스템에서는 프로세스가 쓰레드라는 다수의 실행 유닛으로 구성되어 있다. 쓰레드는 다수의 프로세스들에서보다 데이터의 공유가 더 쉽고, 더 효율적이다.
다중 쓰레딩도 다중 프로세서를 활용할 수 있다면 프로그램의 실행속도를 빠르게 하는 한 가지 방법이다.
가상메모리
가상메모리는 각 프로세스들이 메인 메모리 전체를 독점적으로 사용하고 있는 것 같은 환상을 제공하는 추상화이다. 최상위 영역은 모든 프로세스들이 공통으로 사용하는 운영체제의 코드와 데이터를 위한 공간이다. 하위 영역은 사용자 프로세스의 코드와 데이터를 저장한다.