
2025.03.31
WEEK03 :
그래프(vertex, edge, node, arc), BFS, DFS, 위상정렬
컴퓨터시스템 ~1장 끝까지 읽어보았다.
최신 시스템들은 네트워크에 의해 다른 시스템과 종종 연결된다.
telnet 예시
- "hello" 스트링을 telnet 클라이언트에 입력하고 엔터 키를 누른 후, 클라이언트 프로그램은 이 스트링을 telnet 서버로 보낸다.
- telnet 서버가 네트워크에서 스트링을 받은 후에, 원격 쉘 프로그램에 이들을 전달한다.
- 원격 쉘은 hello 프로그램을 실행하고 출력을 다시 telnet 서버로 전달한다.
- telnet 서버는 네트워크를 거쳐 출력 스트링을 telnet 클라이언트로 전달하고, 클라이언트 프로그램은 출력 스트링을 자신의 로컬 터미널에 표시한다.
컴퓨터 시스템 전반을 아루르는 몇개의 중요한 개념들을 소개한다.
암달의 법칙(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−α)
- 동시성(concurrency) : 다수의 동시에 벌어지는 일을 갖는 시스템에 관한 일반적인 개념
- 병렬성(*parallelism) :* 동시성을 사용해서 시스템을 보다 빠르게 동작하도록 하는 것을 말함
- 컴퓨터 시스템의 다양한 수준의 추상화에서 활용 가능
| 동시성 | 병렬성 |
|---|---|
| 동시에 실행된 것 처럼 보이는 거 | 실제로 동시에 작업을 처리하는거 |
| 싱글 코어에서 멀티쓰레드를 동작시키는 방식 | 멀티 코어에서 멀티쓰레드를 동작시키는 방식 |
| 한번에 많은 것을 처리 | 한번에 많은 일을 처리 |
| 논리적인 개념 | 물리적인 개념 |

낮은 수준의 추상화 → 여러 개의 인스트럭션 한 번에 실행 가능.
최신 프로세서들은 SIMD 병렬성 (최하위 수준에서 싱글 인스트럭션, 다중 데이터)라는 모드로 한 개의 인스트럭션이 병렬로 다수의 연산을 수행할 수 있는 특수 하드웨어를 가짐.
→ 대개 영상, 소리, 동영상 데이터 처리를 위한 응용프로그램의 속도 개선 위해 제공.
추상화의 사용은 전산학에서 가장 중요한 개념
기계어 코드 프로그램은 마치 한 번에 하나의 인스트럭션을 실행하는 프로세서에서 실행되는 것처럼 동작
실제 하드웨어는 훨씬 더 정교해서 여러 개의 인스트럭션을 병렬로, 그러나 항상 간단한 순차적인 모델에 의거한 방식으로 실행한다. 동일한 실행모델을 유지하기 때문에 다른 프로세서에 구현될 때도 다양한 범위의 비용과 성능을 나타내지만, 동일한 기계어 코드를 실행할 수 있게 된다.
운영체제의 측면
- 파일: 입출력 장치의 추상화.
- 가상 메모리: 프로그램 메모리의 추상화.
- 가상머신: 운영체제, 프로세서, 프로그램 모두를 포함하는 컴퓨터 전체의 추상화.
컴퓨터 시스템으로의 여행을 본격적으로 떠나보자.