CS
-
[Network] 라우터 내부에선 무슨 일이 일어날까?CS/Network 2021. 12. 12. 16:53
Overview 앞선 포스팅에서 말한 것과 같이 라우터는 두가지 기능을 한다. 하나는 routing algorithm을 수행하여 출발지에서 도착지까지 패킷의 route(전체 경로)를 결정하는 routing, 다른 하나는 라우터로 들어온 패킷을 적절한 아웃풋 링크로 보내는 forwarding이다. Decentralized switching: 라우터는 인풋 포트 메모리에 있는 데이터그램의 헤더 값을 확인하여 forwarding table을 사용해 아웃풋 포트를 찾는다. - destination-based forwarding: 도착지 IP 주소만을 확인해 forward함 - generalized forwarding: 도착지 주소뿐만 아니라 다른 헤더 정보를 포함해 forward함 Datagram forward..
-
[Network] IPv6과 TunnelingCS/Network 2021. 12. 11. 21:22
IPv6 IPv4는 32 bits 주소 공간을 가지고 있다. IPv4의 총 개수는 2^32=43억 정도로 전세계 사람들이 가지고 있는 PC, 모바일, IoT 등을 따져보았을 때 이미 완전히 할당된 상태이다. IPv4의 부족 문제를 해결하기 위해 IPv6 주소 체계를 도입했다. IPv6는 128 bits 주소 공간을 가지기 때문에 전세계의 원자 수보다 많다고 한다~ IPv6는 16진수로 8개의 그룹으로 이루어져 있고, 앞의 네 그룹은 subnet prefix로 고정되어 있다. Tunneling IPv4 체계에서 IPv6 체계로 전환되어야 하지만 전세계에는 너무나도 많은 네트워크 장비가 있다. 이 모든 네트워크 장비를 동시에 IPv6 주소 체계가 가능하도록 업데이트 하는 것은 불가능하다. 👉 이를 해결하기 ..
-
[Network] Dynamic Host Configuration Protocol(DHCP)CS/Network 2021. 12. 11. 20:38
어떻게 호스트가 처음에 네트워크 부팅을 할까 ❔❔ *부트스트랩(bootstrap): 한 번 시작되면 알아서 진행되는 일련의 과정을 뜻한다. 호스트가 처음 네트워크에 연결하기 위해서는 자신의 IP 주소, 로컬 DNS 서버의 주소, 게이트웨이(first-hop router)의 주소 등을 알아야 한다. 이는 호스트가 직접 설정할 수 있지만, 보통 우리는 자동으로 설정되는 것을 기대한다. 👉 이를 해결해 주는 것이 Dynamic Host Configuration Protocol(DHCP)다!!! DHCP DHCP란 ❔❔ DHCP란 호스트의 IP주소와 각종 TCP/IP 프로토콜의 기본 설정을 클라이언트에게 자동적으로 제공해주는 프로토콜을 말한다. DHCP는 네트워크에 사용되는 IP주소를 DHCP서버가 중앙집중식으..
-
[Network] IP 주소 체계와 SubnetCS/Network 2021. 12. 11. 18:17
Network-layer의 Data plane에서는 무슨 일이 일어나는지 알아보자! Network-layer의 역할 network-layer는 들어오는 패킷을 어떤 링크로 내보낼지 결정하는 역할을 한다. 이러한 기능을 라우터가 담당한다. 라우터는 들어오는 모든 IP 데이터그램의 헤더를 보고 어떤 output port로 내보낼지 결정하고 전송한다. 이를 Routing과 Forwarding이라고 말한다. Routing & Forwarding Routing(control plane) 라우팅은 출발지에서 도착지까지 패킷의 route(전체 경로)를 결정하는 역할을 한다. 라우팅은 네트워크 전역에서 일어나며, routing algorithm을 통해 이루어진다. Control plane은 두가지 approach가 있..
-
[OS] Deadlock은 무엇인가? 해결 방법은? - Detection, RecoveryCS/Operating System 2021. 12. 2. 21:31
이번 포스팅은 이전에 다뤘던 deadlock 해결방법 포스팅에 이어 Deadlock Recovery에 대해서 알아보자~ Deadlock Detection deadlock 방지를 위한 사전 작업을 하지 않기 때문에 deadlock이 발생할 수 있다. 주기적으로 deadlock이 발생하는지 확인해야 한다. 👉 이를 확인하기 위해 Resource Allocation Graph(RAG)를 사용한다. Resource Allocation Graph (RAG) deadlock detection을 위해 사용한다. directed(방향성을 가지고), bipatite(이분) graph를 사용한다. 용어 그래프 G = (N,E), N = {Np, Nr} Np는 프로세스의 집합 = {P1, P2, ..., Pn} Nr는 리소..
-
[OS] Deadlock은 무엇인가? 해결 방법은? - Prevention, AvoidanceCS/Operating System 2021. 12. 2. 19:25
Deadlock이란 ?? Deadlock은 두 개 이상의 작업이 서로 상대방의 작업이 끝나기 만을 기다리고 있기 때문에 결과적으로 아무것도 완료되지 못하는 상태를 말한다. Deadlock은 왜 일어날까 ❔❔ Deadlock은 critical section의 기본조건인 progress를 보장하지 못해 발생하는 문제이다. Critical section의 기본 조건 1. Mutual Exclusion 어떤 프로세스가 Critical section을 실행 중이라면, 다른 프로세스는 Critical section을 실행할 수 없다! 2. Progress 어떠한 프로세스도 critical section을 실행하지 않고, critical section을 실행하려는 프로세스가 있다면, 다음 critical sectio..
-
[OS] Synchronization ProblemCS/Operating System 2021. 12. 1. 23:07
Semaphore를 사용하여 race condition이 발생할 수 있는 문제들을 해결해보자!!!!!! Bounded-Buffer Problem Bounded-Buffer Problem은 앞의 포스팅에서 봤던 Producer-Consumer Problem을 말한다. 이때 아이템을 생성하고 소비하는 데이터가 공유되기 때문에 race condition이 발생했다. 👉 Semaphore를 사용하여 해결한다. 조건 Producer와 Consumer 스레드를 가진다. N 크기의 buffer를 가진다. 공유 데이터 Semaphore mutex = 1 → critical section Semaphore full = 0 → buffer 안의 아이템의 수 Semaphore empty = N → buffer 안의 빈 슬롯..
-
[OS] Critical Section Problem H/W Solution - Mutex Locks & SemaphoreCS/Operating System 2021. 12. 1. 21:46
앞의 Synchronization과 Critical-Section Problem에서 설명했던 critical section problem의 solution에 대해 알아보자! Critical section의 기본 조건 1. Mutual Exclusion 어떤 프로세스가 Critical section을 실행 중이라면, 다른 프로세스는 Critical section을 실행할 수 없다! 2. Progress 어떠한 프로세스도 critical section을 실행하지 않고, critical section을 실행하려는 프로세스가 있다면, 다음 critical section을 실행하는 프로세스가 무기한 연기되어선 안 된다! 👉 deadlock 방지 3. Bounded Waiting 각 프로세스는 유한한 횟수의 시도 ..