[CSAPP] Chapter 01.

Y_Y·2023년 5월 3일
0

CSAPP

목록 보기
1/4

컴퓨터 시스템으로의 여행

시스템이란? 프로세서란? 컨텍스트란? 쓰레드란? 레지스터란? 이해가 먼저다. 암기는 이후

1.1 정보는 비트와 컨텍스트로 이루어진다.

context (컨텍스트) : 어떠한 행위를 할 때 필요한 정보
1 byte = 8 bit
참조 참조2

1.5 캐시가 중요하다

캐시의 주요 목적은 복사 과정들을 가능한 한 빠르게 동작하도록 하는 것이다.

  • 프로세서가 단기간에 필요로 할 가능성이 높은 정보를 임시로 저장할 목적으로 사용한다. (프로세서-메모리 간 속도 읽는 속도 격차에 대응하기 위해 사용한다.)
  • 프로세서에서 데이터 읽는 속도 : 용량이 더 큰 저장장치 > 작은 저장장치
    (디스크 >>> 메모리 >> 레지스터)

  • 기계어 인스트럭션들은 본래 하드디스크에 저장되어 있었다.
  • 프로그램이 로딩될 때 : 하드 디스크 -> 메인 메모리
  • 프로그램이 실행될 때 : 메인 메모리 -> 프로세서

캐시 메모리를 이해하는 응용 프로그래머는 자신의 프로그램 성능을 10배 이상 개선시킬 수 있다.

1.6 저장장치들은 계층구조를 이룬다.

  • 레지스터 파일은 L0, 캐시는 L1 ~ L3, 메인 메모리(DRAM)은 L4
  • 한 레벨의 저장장치가 다음 하위레벨 저장장치의 캐시 역할을 한다는 것이다.
  • L3는 메인 메모리의 캐시이고, 디스크의 캐시 역할을 한다.

1.7 운영체제는 하드웨어를 관리한다.

  • 프로그램이 직접 엑세스하지 않고, 운영체제 (OS) 서비스를 활용한다.
  • 프로그램이 하드웨어를 제어하려면 언제나 운영체제를 통해서 해야 한다.
  • 운영체제의 두 가지 주요 목적
  1. 제멋대로 동작하는 응용프로그램들이 하드웨어를 잘못 사용하는 것을 막기 위해
  2. 응용프로그램들이 단순하고 균일한 메커니즘을 사용하여 복잡하고 매우 다른 저수준 하드웨어 장치들을 조작할 수 있도록 하기 위해

그림 1.10 하드웨어와 소프트웨어 사이에 OS가 존재한다.
그림 1.11을 통해 OS의 두 가지 목적 달성을 추상화 하여 표현한다.

⭐️ 1.7.1 프로세스

  • hello 같은 프로그램이 실행될 때 운영체제
  1. 시스템에서 이 한 개의 프로그램만 실행되는 것 같은 착각에 빠지도록 해준다.
  2. 프로그램이 프로세서, 메인 메모리, 입출력장치를 모두 독차지 하고 있는 것처럼 보인다.
  3. 프로세서는 프로그램 내의 인스트럭션들을 다른 방해 없이 순차적으로 실행하는 것처럼 보인다.
  4. 프로그램의 코드와 데이터가 시스템 메모리의 유일한 객체인 것처럼 보인다.

    프로세스에 의해서 이렇게 만들어진다

  • 프로세스는 실행 중인 프로그램에 대한 운영체제의 추상화이다.
    • (추상화는 복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념 또는 기능을 간추려 내는 것을 말한다.)
  • concurrently (동시성) : 한 프로세스의 인스트럭션들이 다른 프로세스의 인스트럭션들과 섞인다는 것을 의미한다. (멀티코어 프로세서로 인해 한 개의 CPU가 다수의 프로세스를 동시에 실행하는 것처럼 보이게 해준다.)
  • context switching (문맥 전환)
  • system call (시스템 콜) : 쉘 -> OS로 제어권 양도, OS는 쉘의 컨텍스트를 저장하고 새로운 프로세스와 컨텍스트를 생성한 뒤, 새 프로세스가 종료되면 쉘 프로세스의 컨텍스트를 복구시키고 제어권을 넘겨주면서 다음 명령 줄을 기다린다.

kernel

  • 하나의 프로세스에서 다른 프로세스로의 전환을 관리한다.
  • OS 코드의 일부분으로 메모리에 상주한다.
  • 커널은 별도의 프로세스가 아니다.
  • 커널은 모든 프로세스를 관리하기 위해 시스템이 이용하는 코드와 자료구조의 집합이다.

  • 빨간 선이 System Call을 의미한다.

⭐️ 1.7.2 쓰레드 (Thread)

  • 프로세스는 실제로 쓰레드라고 하는 다수의 실행 유닛으로 구성되어 있다.
profile
남을 위해(나를 위해) 글을 쓰는 Velog

0개의 댓글