전체 글 99

15. 스위칭과 포워딩 (Switching and Forwarding)

확장성 있는 네트워크 (Scalable Networks) 현실적으로 중간 연결자가 필요하다 (연결 한계가 존재하므로) 교환기 입력 포트에서 출력 포트로 패킷을 보낸다. 출력 포트는 패킷 헤더의 목적지 주소에 기초해서 선택됨 지리적으로 광범위한 네트워크 구성 가능 많은 수의 호스트를 지원하는 네트워크 구성 가능 기존 호스트들의 성능에 영향을 주지 않고 새로운 호스트 추가 가능 (스위치 용량의 한도 내에서만) 데이터그램 (Datagrams) 연결 설정 단계가 없다. 각각의 패킷은 독립적으로 포워드 단지 주소를 보고 주소로 가는 길로 간다. 항상 동일한 경로를 갖지는 않는다. 상황 정보를 보고 다른 경로로 갈 수도 있다. 우편 시스템과 유사한 형태 비연결성 (connectionless) 모델이라고도 불림 3 ..

[Docker] Dockerfile 설정

FROM openjdk:11-jdk EXPOSE 8080 CMD ["./mvnw", "clean", "package"] ARG JAR_FILE=./build/libs/*.jar COPY ${JAR_FILE} app.jar ENTRYPOINT ["java", "-Dspring.profiles.active=prod", "-jar", "-Xms4G", "-Xmx8G", "app.jar"] - spring.profiles.active = prod : 기본적으로 활성화할 profile을 prod로 설정. S3 버킷 설정 때문에 production profile을 생성하기 위해 설정을 추가했다. - Xms4G, Xmx8G : java heap space가 부족하다는 알림 때문에 docker에서는 설정을 추가해주었다..

3학년 2학기 회고

3학년 2학기... 진짜 하고 싶은 말이 많다 ^^ 3학년 1학기까지는 절평이었어서 첫 상대평가 수업이자 모든 강의가 대면 강의였던 첫 학기였다. OMS로 하고 싶은 정도로 할 말이 많은데 하나씩 이야기 해보도록 하겠다. 1. 3학년 여름방학 무엇보다 많이 두려웠던 것은 캡스톤과 코딩부트캠프 수업이었다. 그래서 여름방학 때는 캡스톤과 코부캠 준비를 많이 했던 것 같다. 수업을 같이 듣는 동기들과 코부캠 스터디를 만들고 약 5일동안 문제를 풀고 같이 문제 풀이법을 공유하는 방식으로 스터디를 진행했다. 그렇지만 중간에 알고리즘을 하다 번아웃이 와서.. 열심히 / 많이 공부는 못했던 것 같다. 캡스톤 준비는 분명 방학 때부터 했었는데, 처음에 우리가 냈던 아이디어가 구현하기에 애로사항이 많아서 중간에 엎다보니..

14. 네트워크 어댑터

개요 데이터 링크 기능이 구현되는 곳 프레이밍 (Framing) 오류 검출 (Error Detection) 매체 접근 제어 (Media Access Control) (MAC) adaptor : 2계층의 모든 일을 주관한다. (stop & wait, 재전송 제외) CSR : control register. 모드 제어 CSR과 memory는 특정 메모리 주소에 매핑되어 있다. Link interface와 Bus interface에 buffer가 존재하여 속도 완충 지대 역할 I/O가 느리기 때문에 비동기로 동작 Host I/O Bus와 Network link (port)는 따로 동작한다. 호스트의 관점 (제어) 상태 제어 레지스터 (Control Status Register) (CSR) 특정 메모리 주소로 ..

13. 무선 LAN

무선 (Wireless) LANs IEEE 802.11 대역폭 1 or 2 Mbps; 11M(802.11b, 가장 저렴한 장치), 54M(802.11g/a), 300M(802.11n), 1G+(802.11ac, 요즘은 이거 사용) 물리적 매체 확산 스펙트럼 (spread spectrum) radio : 2.4GHz, 5GHz 2.4GHz : 54M까지는 사용 가능. 붐비는 공용 주파수 그 이후로부터는 5GHz 나라마다 다르다. 발산 적외선 (diffused infrared) : 10m (요즘은 사용 X) 802.11 LAN architecture infrasturcture mode wireless host 가 base station과 통신 base station = access point (AP) Bas..

12. 토큰링 (802.5, FDDI)

개요 토큰링 네트워크 (Token Ring Networks) 16Mbps IEEE 802.5 / 토큰링 100Mbps Fiber Distributed Data Interface (FDDI) 현재는 많이 사용되지 않으나, 이더넷의 반대 정책 네트워크가 bus가 아닌 링 모양 토큰링의 연결 relay를 이용한 bypass 다중 접속 장치 외부에서 보면 HUB와 유사하다. 토큰링 MAC 기본 개념 프레임은 한 방향으로만 돈다. upstream to downstream 특별한 비트 패턴 (token)이 링을 회전한다. 전송하기 전에 토큰을 획득해야 보낼 수 있다. 전송을 마치면 토큰을 방출(release) 한다. (토큰 던지기) 프레임이 되돌아 오면 프레임을 제거한다. network가 ring 모양 이므로 프레..

11. 이더넷 (유선 LAN)

이더넷 (Ethernet) 개요 LAN (Local Area Network)의 대명사 ↔ WAN (Wide Area Network) CSMA / CD Carrier Sence → 반송 신호 감지 (CS) Multiple Access → 다중 접근 (MA) Collision Detection → 충돌 검출 (CD) 버스 토폴로지 : 다중 접근 연결 (리소스 절약할 수 있지만 충돌 방지가 필요함 → Network가 처리) 한 링크를 공유하기 때문에 충돌이 발생할 수 있다. 대역폭 : 10Mbps (100Mbps, 1Gbps) 당시 링크 대역폭이 64K였는데 이더넷은 10Mb 문제 : 공유 매체에 공평하게 접근할 수 있는 분산 알고리즘 즉, 매체접근제어 (MAC : Medium Access Control) 필..

9. Memory Management

중앙대학교 3-2 리눅스 응용 설계 (손용석 교수님) 과목 정리입니다. Memory Organization Shared-memory system shared memory system은 적어도 one multi-core CPU로 구성되어 있다. 가장 흔하게 사용되는 patterns Uniform memory access (UMA) Non-uniform memory access (NUMA) Two ways of managing physical memory UMA vs NUMA UMA 모든 core에게 동일한 access performance와 memory location을 single bus를 통해 제공한다. 주로 symmetric multiprocessing system으로 불린다. 흔히 single mu..

8. Linux Kernel Data Structure

8. Linux Kernel Data Structure 중앙대학교 3-2 리눅스 응용 설계 (손용석 교수님) 과목 정리입니다. Kernel Data Structure kernel data structure는 current state와 system의 정보를 저장할 때 매우 중요하다. Example Red-black tree는 scheduling entity 관리 Linked list는 file system의 transaction 관리 kernel data structure는 오직 kernel과 kernel의 subsystem에 의해서만 접근 가능하다. data structrue는 다른 data structure와 system data를 가리키는 pointer를 포함한다. 때때로, data structure..

7-4. Task Scheduling in Linux (4)

중앙대학교 3-2 리눅스 응용 설계 (손용석 교수님) 과목 정리입니다. __schedule() scheduling의 key function current task의 실행을 멈추고, 새롭게 실행될 next task가 선택된다. next task를 실행하기 위해 user address space information, register, 두 task의 kernel stack 이 전환된다. 이전 task의 state가 TASK_RUNNING이 아니고, preempt 값이 false인 경우 prev_task를 처리한다. Ex. task가 sleep API를 사용하는 경우 task는 run queue에서 dequeue 된다. signal_pending_state는 Task state가 TASK_INTERRUPTIB..