1. 알고리즘
- 백준 1043번
- https://ahlight.tistory.com/145
백준 1043번 자바 ☆
1. 문제 https://www.acmicpc.net/problem/1043 1043번: 거짓말 지민이는 파티에 가서 이야기 하는 것을 좋아한다. 파티에 갈 때마다, 지민이는 지민이가 가장 좋아하는 이야기를 한다. 지민이는 그 이야기를
ahlight.tistory.com
2. 운영체제(공룡책)
*챕터2 - 운영체제 구조 (Operating System Structures)
2.7 운영체제 설계 및 구현 (Operating-System Design and Implementation)
2.7.1 설계 목표 (Design Goals)
시스템 설계에서 가장 어려운점 중 하나는 시스템의 목표와 명세를 정의하는 일이다. 최상위 설계 수준(일괄처리, 시분할 등)을 넘어서는 요구조건은 근본적으로 사용자 목적, 시스템 목적 두가지로 나눌 수 있다.
- 사용자 목적 : 시스템은 사용성, 편리성, 학습성, 신뢰성, 안전성, 신속성이 보장되어야 한다.
- 시스템 목적 : OS는 설계, 구현, 유지 보수가 용이하며 적응성, 신뢰성, 효율성을 보장해야 한다.
OS에 대한 요구를 정의하는 문제를 해결하는 유일한 해법은 없다. 하지만 소프트웨어 공학 분야에 의해 개발된, 특별히 OS에 적용 가능한 일반적인 원칙들이 존재 한다.
2.7.2 기법과 정책(Mechanisms and Policies)
한 가지 중요한 원칙은 기법(어떻게)으로부터 정책(무엇을)을 분리하는 것이다. 정책은 시간과 장소의 변경에 따라 바뀔 수 있다. 그렇기 때문에 여러 정책을 아우를 수 있는 충분히 융통성있는 일반적인 기법이 바람직하다. 마이크로 커널 기반 운영체제는 프리미티브 빌딩 블록의 기본 집합을 구현함으로써 기법과 정책의 분리를 극단적으로 추구한다. 반면 Windows OS는 모든 장치에서 전체적인 모양과 느낌을 통일하기 위해 기법과 정책이 밀접해지도록 코딩했다.
2.7.3 구현(Implementation)
초기 운영체제는 어셈블리어로 작성되었다. 현재는 커널의 최하위 레벨은 어셈블리언어 + C언어, 상위 레벨 루틴은 C + C++, 시스템 라이브러리는 C++로 작성되곤 한다.
OS 구현 시 고급언어 또는 최소한 시스템 구현언어를 사용하면 신속성, 간결성, 이해도, 이식성이 높고 디버깅이 용이한 장점이 있다. 하지만 컴파일 및 기타 추가적인 작업에 속도가 떨어지고, 저장장치가 많이 소요되는 단점이 존재한다. 다만 현시대에서 저장장치 자원의 사용의 제한이 줄어들고 기술의 발전으로 신속성이 보장되기 때문에 단점과 장점의 트레이드오프에서 장점이 훨씬 우세하다.
운영체제의 주요 성능 향상은 우수한 어셈블리어 코드보다 좋은 자료구조와 알고리즘의 결과일 가능성이 크다. 또한 OS크기에 비해 단지 소량의 코드만이 고성능이 요구된다.
2.8 운영체제 구조(OS Structures)
운영체제의 구조는 크게 단일 구조의 모놀리식 구조 및 나머지의 모듈방식 구조로 나뉜다.
2.8.1 모놀리식 구조(Monolithic Structures)
가장 간단한 구조는 구조가 아예 없는 것이다. 즉 커널의 모든 기능을 단일 주소 공간에서 실행되는 단일 정적 이진 파일에 넣는 것이다. 현대의 운영체제 기능은 하나의 주소공간으로 결합하기엔 너무 많다.
모놀리식 커널의 명백한 단순성에도 불구하고 구현 및 확장이 어렵다. 하지만 시스템 콜 인터페이스에는 오버헤드가 거의 없고, 커널안에서 통신속도가 빠른 장점이 명확하다.
2.8.2 계층적 접근(Layered Approach)
모놀리식 접근법은 종종 밀접하게 결합된 시스템으로 불린다. 위에서 설명한 단점에 대한 대안으로 느슨하게 결합된 모듈형 방식의 시스템 구조가 있다. 이러한 시스템 구조의 특징은 특정 기능 및 한정된 기능을 가진 개별적이며 작은 구성요소를 결합하는 형태이다. 이는 한 구성요소의 변경이 다른 구성요소에 영향을 끼치지 않으므로 시스템 구현자가 시스템 내부 작동을 더 자유롭게 생성하고 변경할 수 있는 장점을 제공한다.
이러한 모듈형 방식 중 하나는 계층적 접근 방식이다. 계층적 접근 방식은 운영체제를 여러개의 층으로 나눈다. 최하위층인 하드웨어부터 최상위층의 UI로 나뉜다. 계층적 접근 방식은 해당 층이 자신보다 하위층들의 서비스와 기능들만 사용하도록 선택되므로 시스템의 검증과 디버깅 작업을 단순화시킨다. 따라서 시스템을 계층으로 나누면 시스템의 설계나 구현이 간단해진다.
각 층은 자신보다 하위 수준의 층에 의해 제공된 연산들만 사용해 구현한다. 그러므로 각 층은 특정 데이터 구조, 연산 그리고 하드웨어의 존재를 상위층에 대해 숨기게 된다. 이런 구조의 시스템은 컴퓨터 네트워크(TCP/IP) 및 웹 응용에서 성공적으로 사용되었다. 다만 각 계층의 기능을 적절히 정의 해야 하고, 오버헤드의 발생이 크기 때문에 대다수의 운영체제에서의 사용성이 작다.
3. 후니의 쉽게 쓴 시스코 네트워킹
* Part 6
Section 5-8
루트 브리지 선정
- 첫 부팅시 BPDU에 상대에게 자신의 BID를 담아서 보낸다.
- 이 때 상대의 BID가 자신의 BID보다 낮은 경우 무시, 반대인 경우 루트 브리지로 선정
Non Root Bridge의 루트 포트 선정
- path cost가 가장 작은 포트가 루트포트가 된다. -> 일반적으로 루트 브리지에 가장 가까운 포트들
Designated Port 선정
- 누구의 root path cost가 더 작은지
- 누가 더 작은 Root BID를 가졌는지
- 루트 브리지까지의 Path Cost는 누가 더 작은지
- 누구의 BID(Sender BID)가 더 낮은지
- 누구의 포트 ID가 더 낮은지
위의 순서를 거쳐 선정한다.
STP의 상태변화
- Disabled : 포트의 고장으로 사용 불가 상태이거나 포트를 일부러 Shut down시킨 경우 - 전송x / MAC x / BPDU x
- Blocking : 스위치 또는 브리지가 처음 켜지거나 diabled상태를 다시 살린 경우 - BPDU만 가능
- Listening : blocking 상태에 있는 포트가 root port 또는 designated port가 되는 경우 - BPDU만 가능
- Learning : listening상태에 있는 포트가 Forwarding Delay 디폴트 시간인 15초를 유지하는 경우 - MAX,BPDU O
- Forwarding : learning상태에서 Forwarding Delay를 유지하는 경우 - 데이터,MAC,BPDU O
Listening, Learning, Forwarding상태에 있는 포트도 Root, Designated 포트에서 탈락되면 Blocking상태로 전환
고장또는 사용자에 의한 Shut Down시에는 Disabled상태로 전환
4. 김영한의 Spring 로드맵
AOP : 관점지향 프로그래밍
- 핵심 로직과 공통사항의 로직을 분리시키고자 할 때 적용
- 예를 들어 각 메소드의 실행시간을 알고 싶을 때 각 메소드마다 해당 로직을 추가하는 것이 아니라 AOP를 적용해 해결
- AOP를 적용하게 되면 실제 의존관계에 있는 클래스를 바라보는 것이 아닌 AOP에 의해 생성된 가짜클래스를 바라보게 된다.
'TIL' 카테고리의 다른 글
TIL - 0328 (0) | 2023.03.28 |
---|---|
TIL - 0325 (0) | 2023.03.25 |
TIL - 0322 (0) | 2023.03.22 |
TIL - 0321 (0) | 2023.03.21 |
TIL - 0320 (0) | 2023.03.20 |