[TIL/크래프톤 정글] DAY 22

배재준·2025년 3월 31일

크래프톤 정글 - TIL

목록 보기
15/93
post-thumbnail

2025.03.31

TIL(TODAY I LEARN)


  • WEEK03 :
    그래프(vertex, edge, node, arc), BFS, DFS, 위상정렬

  • 컴퓨터시스템 ~1장 끝까지 읽어보았다.


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

  • 최신 시스템들은 네트워크에 의해 다른 시스템과 종종 연결된다.

  • telnet 예시

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

1.9 중요한 주제들

컴퓨터 시스템 전반을 아루르는 몇개의 중요한 개념들을 소개한다.

1.9.1 Amdhal의 법칙

암달의 법칙(Amdahl's Law): 컴퓨터 시스템에서 일부를 개선(병렬화 등)했을 때, 전체 성능 향상이 어느 정도까지 가능한지를 예측하는 법칙

Told :어떤 응용을 실행하는 데 걸리는 시간
a: 시스템의 어떤 부분(개선 대상)이 소모하는 시간의 비율
k: 해당 부분의 개선하는 성능의 배수
S: 개선 후의 전체 성능 향샹 배수

Tnew = (1−α)∗Told + (α*Told)/k  
이것으로부터 개선된 속도 S = Told/Tnew
S = Told/Tnew를 다음과 같이 구한다
S = 1/((1−α)+α/k)

특별한 경우, k를 ∞로 설정하는 효과에 대해 생각해보자

S∞ = 1 / (1−α)
  • 예를 들어, 우리가 시스템으 60%를 시간이 거의 걸리지 않는 지점까지 속도를 올릴 수 있다면, 총 속도 개선율은 2.5배 밖에 되지 않음. Amdahl의 법칙은 모든 작업을 개선하기 위한 일반적인 원칙을 설명한다.


1.9.2 동시성과 병렬성

  • 동시성(concurrency) : 다수의 동시에 벌어지는 일을 갖는 시스템에 관한 일반적인 개념
  • 병렬성(*parallelism) :* 동시성을 사용해서 시스템을 보다 빠르게 동작하도록 하는 것을 말함
    • 컴퓨터 시스템의 다양한 수준의 추상화에서 활용 가능
동시성병렬성
동시에 실행된 것 처럼 보이는 거실제로 동시에 작업을 처리하는거
싱글 코어에서 멀티쓰레드를 동작시키는 방식멀티 코어에서 멀티쓰레드를 동작시키는 방식
한번에 많은 것을 처리한번에 많은 일을 처리
논리적인 개념물리적인 개념

쓰레드 수준 동시성

  • 단일 프로세서 시스템 - 한 개의 프로세서에 의해 실질적 계산이 이루어짐.
    • 시간공유(time sharing) 기법 등
  • 멀티 프로세서 시스템 - 여러 개의 프로세서를 가지고 하나의 운영체제 커널의 제어 하에 동작
    • 멀티코어 프로세서 시스템, 하이퍼쓰레딩(Hyperthreading) 기법 등
  • 멀티코어 프로세서 시스템 - 여러 개의 CPU(코어)가 하나의 칩에 내장
  • 멀티쓰레딩(=하이퍼 쓰레딩) - 하나의 CPU가 여러 개의 제어 흐름을 실행할 수 있게 해주는 기술
  • 멀티 프로세싱의 장점
    1. 다수의 태스크 실행 → 동시성을 시뮬레이션 할 필요 감소
    2. 한 개의 응용 프로그램 → 멀티 쓰레드 형태로 표현된 경우 병렬 처리를 통해 더 빠르게 실행

인스트럭션 수준 동시성

낮은 수준의 추상화 → 여러 개의 인스트럭션 한 번에 실행 가능.

  • 파이프라이닝(Pipelining): 하나의 인스트럭션을 실행하기 위해 요구되는 일들을 여러 개로 나누고 프로세서 하드웨어가 일련의 단계로 구성되어 이들 단계를 하나씩 수행.
  • 슈퍼 스케일러(Super-Scalar): 사이클 당 한 개 이상의 인스트럭션을 수행할 수 있는 프로세서.

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

최신 프로세서들은 SIMD 병렬성 (최하위 수준에서 싱글 인스트럭션, 다중 데이터)라는 모드로 한 개의 인스트럭션이 병렬로 다수의 연산을 수행할 수 있는 특수 하드웨어를 가짐.

→ 대개 영상, 소리, 동영상 데이터 처리를 위한 응용프로그램의 속도 개선 위해 제공.



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

추상화의 사용은 전산학에서 가장 중요한 개념

기계어 코드 프로그램은 마치 한 번에 하나의 인스트럭션을 실행하는 프로세서에서 실행되는 것처럼 동작

 실제 하드웨어는 훨씬 더 정교해서 여러 개의 인스트럭션을 병렬로, 그러나 항상 간단한 순차적인 모델에 의거한 방식으로 실행한다. 동일한 실행모델을 유지하기 때문에 다른 프로세서에 구현될 때도 다양한 범위의 비용과 성능을 나타내지만, 동일한 기계어 코드를 실행할 수 있게 된다.

운영체제의 측면

  • 파일: 입출력 장치의 추상화.
  • 가상 메모리: 프로그램 메모리의 추상화.
  • 가상머신: 운영체제, 프로세서, 프로그램 모두를 포함하는 컴퓨터 전체의 추상화.

1.10 요약

  • 하드웨어와 소프트웨어로 구성된 시스템이 우리의 응용프로그램을 잘 돌릴 수 있도록 도와준다.
  • ASCII text로 시작해, 컴파일러와 링커가 binary-executable로 만들어 주는 과정 까지 보았다.
  • 메모리 hierachy가 있었으며, OS의 커널, 파일과 같은 추상화 등을 살펴보았다.
  • 마지막으로, 네트워크를 통해 다른곳과 소통, 시스템관점으로 보았을 때 이는 그저 다른 I/O디바이스와 소통하는것과 같다.

컴퓨터 시스템으로의 여행을 본격적으로 떠나보자.

0개의 댓글