TIL 1/22 (2/2)

김주민·2024년 1월 22일

csapp

목록 보기
5/8
post-thumbnail

1.8 시스템은 네트워크를 사용하여 다른 시스템과 통신

  • 네트워크는 단지 또 다른 입출력 장치로 볼 수 있다

  • 인터넷과 같은 글로벌 네트워크의 출현으로 하나의 컴퓨터에서 다른 컴퓨터로 복사하는 것이 가장 중요한 컴퓨터의 응용이 되었음.

  • hello 프로그램의 원격 실행

  1. hello 스트링을 telnet 클라이언트에 입력 후 엔터키 누름
  2. 클라이언트 프로그램은 이 스트링을 telnet 서버로 보냄
  3. telnet 서버는 받은 스트링을 원격 쉘 프로그램에 전달
  4. 원격 쉘은 hello 프로그램을 실행 후 출력은 다시 telnet 서버로 전달.
  5. telnet 서버는 네트워크를 거쳐서 출력 스트링을 telnet 클라이언트로 전달하고 클라이언트 프로그램은 출력 스트링을 자신의 로컬 터미널에 표시.

  • telnet : 네트워크 프로토콜. 프로토콜의 클라이언트 일부 기능이 추가된 소프트웨어를 일컬음

1.9 중요한 주제들

1.9.2 Amdahl의 법칙

  • 우리가 어떤 시스템의 한 부분의 성능을 개선할 때, 전체 시스템 성능에 대한 효과는 그 부분의 중요도와 얼마나 속도가 빨라졌는 지가 관계 있음.

a : 시간의 소모 비율, k : 개선하려는 성능 배수, aTold : 원래의 소모 시간
aTold/k : 개선 후 소모 시간, S : 개선된 속도

  • 비록 시스템의 주요 부분에 대해 실질적 개선을 하여도, 총 속도 향상은 매우 적다.
    Amdahl 법칙의 주요 통찰

1.9.3 동시성과 병렬성

  • 동시성(concurrency) : 다수로 동시에 벌어지는 일을 갖는 시스템에 관한 일반적인 개념을 말할 때 사용.
  • 병렬성(parallelism) : 동시성을 사용해서 시스템을 보다 빠르게 동작하도록 하는 것. 컴퓨터 시스템의 다양한 수준의 추상화에서 활용 가능.

쓰레드 수준 동시성

-- 프로세스 추상화 개념의 이용 -> 다수의 프로그램이 동시에 실행되는 시스템 -> 동시성
-- 쓰레드를 이용하면 하나의 프로세스 내에서 실행되는 다수의 제어흐름을 가질 수도 있음.
ex) 여러 명이 한 개의 웹 서버로부터 페이지를 사용하고자 할 때 처럼 다수의 사용자들이 시스템을 동시에 교신할 수 있게 함.
ex) 윈도우 하나에 웹 브라우저, 다른 윈도우에 문서 편집기, 동시에 스트리밍 음악 플레이를 실행

  • 실질적 계산은 하나의 프로세서 : 단일 프로세서 시스템

  • 여러 개의 프로세서로 하나의 운영체제 커널의 제어 하에 동작 : 멀티 프로세서 시스템
    -- 최근에는 멀티코어 프로세서와 하이퍼 쓰레딩 기법의 출현으로 흔해짐

  • 하이퍼 쓰레딩 : CPU 코어 수의 쓰레드를 2배로 보이게 해서 처리 성능을 향상시킨다.

  • 멀티코어 프로세서 : 여러 개의 CPU(코어라는)를 하나의 집적화돈 칩에 내장.

  • 하이퍼 쓰레딩(멀티 쓰레딩): 하나의 CPU가 여러 개의 제어흐름을 실행

  • 멀티 프로세싱은.

  1. 다수의 태스크에서 동시성을 시뮬레이션할 필요를 줄여줌.
  2. 한 개의 응용프로그램을 빠르게 실행할 수 있지만, 프로그램이 병렬로, 효율적으로 실행할 수 있는 멀티 쓰레드 형태에만 가능.

인스트럭션 수준 병렬성

  • 최근의 프로세서들은 더 낮은 수준에서의 추상화로 여러 개의 인스트럭션을 한 번에 실행 가능. -> 이를 병렬성이라 한다.

싱글 인스트럭션. 다중 데이터 병렬성(SIMD)

  • 한 개의 인스트럭션이 병렬로 다수의 연산을 수행할 수 있는 특수 하드웨어를 가짐.

1.9.3 컴퓨터 시스템에서 추상화의 중요성

  • java 에서의 class, C에서의 함수 프로토 타입
  • 갖다 끌어쓸 수 있다고 생각.

0개의 댓글