CS
1.3 The Network Core
network edge 다음으로 이번에는 network core에 대해서 다루어보려고 한다. mesh of interconnected routers(정형화된 구조가 아닌 그물망으로 되어 있음) 네트워크 코어는 서로서로 연결되어 있는 라우터들의 집합체이다. 네트워크 코어에서, router들은 interconnected되어 end system간의 데이터 교환을 돕는다. 데이터들이 방문하는 네트워크상의 모든 장치들은 각각의 internet protocol stack을 가지고 있는데 internet protocol stack의 application layer에서 생성되는 message들은 호스트들에 의해 여러 개의 패킷으로 쪼개진다. 호스트에 의해 쪼개진 패킷들은 network core에 위치한 router를 ..
1.2 The Network Edge
네트워크는 크게 3가지로 구성되어 있다. 네트워크 엣지(Network edge) 엑세스 네트워크(Access network) 네트워크 코어(Network core) end system들을 core쪽으로 어떻게 옮기는 지에 대한 엑세스 네트워크의 방식들과 Link를 구성하는 physical media에 대한 포스팅이다. 1. 네트워크 엣지는 인터넷의 가장자리이다. 여기에는 수많은 end systems이 존재한다. End system은 host이다. host는 클라이언트나 서버를 뜻한다. 서버는 data senter에 있는 서버로 생각하면 된다. 2. 엑세스 네트워크는 네트워크에 접근하기 위한 네트워크이다. end system들이 인터넷을 사용할 수 있도록 도와주는 네트워크라고 보면 된다. 스마트폰에서 와이..
1.1. What Is the Internet?
1. 1 What Is the Internet? Internet : Nuts-and-Bolts 관점 / a networking infrastructure(서비스 관점) 1.1.1 A Nuts-and-Bolts View (Bottom-up) Nuts-and-Bolts 관점으로 인터넷을 설명한다면 이는 기본적 하드웨어 및 소프트웨어가 인터넷을 구성하고 있다는 것이다. laptops, smartphones, tablets, TVs, gaming consoles 등과 같은 모든 디바이스들은 호스트(hosts) 또는 엔드 시스템(end systems)라고 불린다. host = end systems end systems : 인터넷에 직접 연결되어 개별 사용자가 액세스 할 수있는 인터페이스를 만드는 장치 (= hos..
[운영체제] Chapter7. Synchronization Examples
1. Classic Problems of Synchronization The bounded-buffer problem The readers-writers problem The dining-philosophers problem 1) The Bounded-Buffer Problem 두 종류의 프로세스가 있다. 하나는 Producer, 또 다른 하나는 Consumer이다. 이는 생산자-소비자 문제(Producer-Consumer Problem)이라고도 불린다. 여기서 발생할 수 있는 문제점은 어느 producer가 버퍼 중 빈 곳에 데이터를 쓰려고 할 때, interrupt가 발생하여 다른 프로세스한테 공유자원이 넘어가서 다른 프로세스가 해당하는 빈 곳에 데이터를 쓸 때 나타날 수 있다. 그렇게 되면 둘 중 ..
[운영체제] Chapter6. Synchronization Tools(동기화)
1. Background 이 장에서는 프로세스가 병행 또는 병렬로 실행될 때 여러 프로세스가 공유하는 데이터의 무결성에 어떤 문제를 일으키는 지에 관해 설명한다. Process communication method 인 1)message passing 2)Shared memory가 이루어 질때 충돌이 일어날 수 있다. 예) Producer-consumer problem - 공유메모리(shared memory)를 사용할 때 Producer와 Consumer의 과정이 이루어 지면서 Buffer가 이용되는데 이때 충돌이 발생할 수 있다. : Concurrent Access of Shared Data(공유데이터로의 동시접근) 자세하게 설명을 하자면, size가 5인 buffer(circular queue)가 있다..
[Python] 딥러닝을 위한 파이썬 기초 - 3) 자료구조(Data Structure)
딥러닝에서는 데이터를 저장하는 자료가 필요하다. 어떤 자료구조가 딥러닝에 사용되는지 살펴볼 것이다. ▶ List(리스트) 리스트는 여러 데이터들을 잘 관리하기 위해 순서를 정해 묶어서 관리할 수 있는 자료형 중 하나이다. 하나의 변수로 데이터를 저장해놓는다면 몇백개의 데이터를 다룰 때는 정말 힘든 과정을 겪어야 할 것이다. 그렇기 때문에 리스트는 데이터를 관리하기 위해서 유용하다. : 대괄호에 요소를 입력하여 선언해주면 된다. list1 = [1, 2, 3] list2 = ['a', 'b', 'c'] print(list1) print(list2) [1, 2, 3] ['a', 'b', 'c'] : 리스트의 길이는 len()함수를 사용하여 확인할 수 있다. length = len(list1) print(le..
[Python] 딥러닝을 위한 파이썬 기초 - 2) Library
공부중인 학생입니다. 틀린 부분이 있다면 꼭 댓글로 남겨주세요 :) 파이썬으로 딥러닝을 다룰 때 유용하게 사용되는 Library들이 존재한다. 하나하나씩 차근차근 보자. 어떤 라이브러리가 있는 지 살펴보는 것이기 때문에 사용방법은 나중에 자세히 다뤄보도록 한다. ▶ Numpy Numpy는 과학 계산을 위한 라이브러리로 다차원 배열을 처리하는데 필요한 여러 유용한 기능을 제공하고 있다. : Mac 사용자라면 터미널에서 쉽게 설치가 가능하다. $ pip install numpy import numpy as np # numpy를 사용할 때 np로 사용하면 된다. import numpy as np list1 = np.array([[1, 2, 3],[4, 5, 6]]) print(list1) print(type(..
[MacOS] gcc 컴파일 옵션 정리
프로그램을 작성하고 컴파일을 하기 위해선 컴파일 옵션을 이용한 명령어가 필요하다. 아무런 옵션 없이 c++로 컴파일하는 방법은 아래 게시글에 설명해 놓았다. 2022.02.19 - [Language/C++] - [C++/MacOS] 터미널에서 c++ 컴파일하기 [C++/MacOS] 터미널에서 c++ 컴파일하기 공부중인 학부생입니다. 틀린 부분이 있다면 꼭 댓글로 남겨주세요 :) 맥에서 소스파일을 컴파일하기 위해서는 GCC컴파일러가 필요하다. GCC 컴파일러는 c, c++ 컴파일러이다. Xcode를 이용하면 저절 world-developer.tistory.com 윗글에 정리해 놓은 내용과 더불어 컴파일을 할 때 사용하는 옵션들을 정리해보려고 한다. ▶ gcc 컴파일 (윗 게시글) 1. gcc 파일명(.c)..
[c++/MacOS] Namespace란? using namespace std가 뭘까?
공부중인 학부생입니다. 틀린 부분이 있다면 꼭 댓글로 남겨주세요 :) c++ 코드를 짜보면 아래와 같은 코드를 많이 봤을 것이다. using namespace std; 저 줄은 무엇이고 왜 사용하는 것일까? ▶ c++ Namespace란? 간단하게 namespace란 이름 공간이라고 생각하면 된다. 보통 프로그램을 짤 때 여러 파일들이 생기기 마련이다. 그 파일들을 한꺼번에 컴파일하려고 할 때 같은 이름의 함수나 구조체가 존재한다면 컴퓨터는 이에 대한 오류를 낸다. 같은 이름의 변수나 함수, 구조체가 있을 때 오류가 발생하는 것은 당연한 일이다. 이름 충돌이 일어났기 때문이다. Namespace는 이러한 이름충돌을 방지하기 위해서 만들어진 것이다. Namespace는 변수, 함수, 구조체 등의 소속을 정..