Daehong TIL Blog
Algorithm - Sieve of Eratosthenes
Algorithm - Factorial
Algorithm - Fibonacci ( Memoization )
Algorithm - BinaryTree ( DFS )
Algorithm - Find Subset ( DFS )
Algorithm - BinaryTree ( BFS )
Algorithm - Find Calf ( BFS )
Algorithm - Shortest Distance ( DFS, BFS )
Algorithm - Route Navigation ( Graph / DFS )
Algorithm - Route Navigation2 ( Graph List / DFS )
Algorithm - Graph Shortest Distance ( Graph / BFS )
Algorithm - String CodingTest Tip
Algorithm - Find Subsets Same Sum ( DFS )
Algorithm - Baduki Riding ( DFS )
Algorithm - Hash CodingTest Tip
Algorithm - ETC CodingTest Tip
Algorithm - Two Pointers Algorithm
Algorithm - Sliding Window
Algorithm - Sum Of Consecutive Natural Numbers
Algorithm - Stack and Queue CodingTest Tip
Algorithm - Sort Algorithm
Algorithm - Maximum Score ( DFS )
Algorithm - String CodingTest Tip
Algorithm - Finding Duplicate Permutations ( DFS )
Algorithm - Coin Exchange ( DFS )
Algorithm - Number of Combinations Memoization ( DFS )
Algorithm - Finding Permutations ( DFS )
Algorithm - Guess Sequence ( DFS )
Algorithm - Finding Combinations ( DFS )
Algorithm - Maze Navigation ( DFS )
Algorithm - Maze Navigation ( BFS )
Algorithm - Tomato ( BFS )
Algorithm - Island ( DFS )
Algorithm - Mischief
Algorithm - Island ( BFS )
Algorithm - Wrestler ( Greedy )
Algorithm - Pizza Delivery Distance ( DFS )
Algorithm - MeetingRoom Assignment ( Greedy )
Algorithm - Wedding Ceremony ( Greedy )
Algorithm - Maximum Earnings Schedule ( Greedy )
Algorithm - Dijkstra_Algorithm
Algorithm - Union&Find
Algorithm - Wonderland ( Union&Find )
Algorithm - Wonderland ( Prim Algorithm )
Algorithm - TwoDimensional Array Sorting
Algorithm - Climbing Stairs
Algorithm - Cross Stone Bridge
Algorithm - Maximum Partially Increasing Sequence
Algorithm - Build Tallest Tower
Algorithm - Knapsack Algorithm
Algorithm - Maximum Score
Algorithm - Binary Search
Algorithm - Binary Search
Algorithm - Binary Search
Algorithm - DFS(Recursive Function)
ETL vs CDC
Development Book - Computer structure and operating system for self-study
CS - Early Return Pattern
CS - Layered Architecture
CS - UML Basic
CS - Process vs Thread Deep
CS - Design Pattern Basic
CS - Singleton Pattern
CS - Why computers use binary numbers
CS - Interrupt
CS - Ram vs Disk and Cache
CS - System Bus
CS - File writing process in Java (OS, interrupt, I/O perspective)
CS - Process vs Thread Basic
CS - TCP vs UDP
High Availability (HA)
Directed Acyclic Graph (DAG)
Git - Git & Github Basic
Git - Git Rollback
Git - Branch & Interaction
Important Study - Mutex & Semaphore
Important Study - Concurrency issues And Lock
Important Study - DB index to improve performance
Important Study - Redis Cache & Update Strategy
Important Study - Very Important Transaction
Important Study - DB Lock
Java - OOP and SOLID
Java - Error in Floating Point
Java - Short Circuit vs Eager Operator
Java - Static ?
Java - Immutable Class vs Mutable Class
Java - Operators, TypeConversion, and MemoryOverflow
Java - String
Java - Java Basic JDK, JRE, JVM & JVM WarmUp
Java - Java Etc Study
Java - Libraries vs Frameworks
Java - Final
Java - Multithread Synchronization Issues Basic
Java - Method Dispatch
Java - Inner Class
Java - Exception
Java - Collection Basic & Hash Basic
Java - Annotation
Java - Java Version
Java - Generic
Java - GC (Garbage Collection)
Java - Shallow Copy vs Deep Copy
Java - Daemon Thread
Java - Assignment vs Equality vs Equals
Java - IO & NIO ( Blocking vs Non-Blocking )
Java - JSP & Servlet
Java - JDBC & Connection Pool
Java - JVM Stack and Stack Frame
Java - Blocking IO, Non Blocking IO, Sync, Async
Java - Equals & HashCode
Java - Call By Value vs Call By Reference
Java - 7 features of Java
Java - Classes, Objects and Instances
Spring - IoC & DI
Spring - DTO vs VO vs Entity
Spring - IoC Container & DI Container
Spring - Why use springs?
Spring - Spring Etc Study
Spring - Autowired
Spring - Quilifier vs Primary
Spring - Spring Bean
Spring - POJO
Spring - Filter vs Interceptor
Development Tip - Lock
Development Tip - Iamge Upload
Development Tip - When modifying a session in a hurry
Development Tip - How to prepare for high volume traffic
Development Tip - Transactional(readOnly = true)
Development Tip - Why you should avoid NoArgsConstructor and AllArgsConstructor
Web - GET, POST, PUT, PATCH, DELETE
Web - URL vs URI
Web - API vs RestAPI
Web - Web internal operation
Web - Cookie vs Session
Java - Primitive vs Wrapper
Java - Abstract Class vs Interface
Fork it Now!
CS - System Bus
1. 시스템 버스란 무엇인가?
쉽게 말해, CPU가 연산한 걸 메모리로 가져가거나, 메모리에 있는걸 연산하기 위해 CPU로 가져오거나 등 이렇게 데이터를 옮겨주는 통로의 이름을 시스템 버스(System Bus)라고 한다.
기본 동작으로는 버스 사용권을 획독한 후 주소와 데이터 및 쓰기 신호를 전송하는 것을 하는 쓰기 동작이 있고, 버스 사용권을 획득한 후 주소와 읽기 신호를 보내고 데이터가 전송되어 오기를 기다리는 읽기 동작이 있다.
아무튼 쓰거나 읽기 위해서, 버스 사용권은 획득해야 하고 주소는 꼭 보내야한다.
버스에 실리는 신호 종류에 따라 데이터 버스, 어드레스(주소) 버스, 컨트롤(제어) 버스로 나뉘며,
CPU를 기점으로 버스의 위치에 따라서는 내부 버스와 외부 버스로 나뉜다. 즉, CPU 내부에 있는 통로는 내부버스 CPU 외부에 있는 통로는 외부버스라고 한다. 그리고 시간당 전송하는 데이터의 크기를 버스의 대역폭이라 하는데 내부 버스는 대역폭이 크고, 외부 버스는 비교적 대역폭이 낮다.
1.1. 데이터 버스
데이터 버스는 메인 메모리와 CPU 사이, I/O와 메인 메모리 사이, CPU 내부의 모듈들 간의 데이터가 이동하는 경로이며, 데이터 버스의 크기는 CPU가 한 번에 전송 가능한 데이터의 크기와 같다. 데이터를 주고 받을 수 있는 양방향 버스이다.
1.2. 주소 버스
CPU가 메모리나 I/O 장치로 기억장치 주소를 전달하는 통로를 말한다. 우리가 데이터를 정확하기 전달하기 위해서는 주소를 정해줘야 한다. 주소 버스는 주소를 전달만 하면 되기 때문에 단방향 버스이다.
예를 들어 우리가 데이터를 받고자 할 때도, 어디로부터 데이터를 받을 지 주소를 보내야하고, 데이터를 보낼 때에도 어디로 데이터를 보낼 지 주소는 전송을 해야한다.
1.3. 제어 버스
CPU에서 발생하는 제어 명령이나 상태 신호들이 이동하는 경로이며, 데이터 버스와 주소 버스를 제어하기 위해 제어 신호들을 전송하는 통로를 말한다. 양방향 버스이다.
2. 버스 역할 수행 ( 읽기, 쓰기 경우 )
CPU가 RAM에서 데이터를 읽고 쓰기를 진행할 때 버스는 다음과 같은 역할을 수행한다.
CPU가 버스에 데이터를 싣는다.
주소 버스는 데이터를 쓰거나 읽고자 하는 주기억 장치의 주소값을 적고, 데이터 버스에는 쓰고자 하는경우에만 쓰고자 하는 데이터 값을 적는다. 제어 버스에는 기억장치 읽기 신호인지 쓰기 신호인지에 맞춰서 싣는다.
주기억장치에서는 제어 버스에 실린 제어 신호를 확인한다.
읽기의 경우에는 주소 버스에 실린 주소 값의 데이터 값을 읽어서 데이터 버스에 싣는다. 만약 쓰기 신호의 경우에는 주소 버스의 해당하는 주소값에 데이터 버스에 담겨온 값을 쓴다.
쓰기일 경우 여기서 끝나지만, 읽기인 경우 일정 시간 후 데이터 버스에 실린 값을 CPU가 받는다.
3. 버스 중재 방식
버스 중재란, 버스에 접속 된 두 개 이상의 모듈들이 동시에 버스를 이용하고자 할 때 순서대로 한 개씩 버스를 사용할 수 있게 해주는 제어를 의미한다.
버스의 종류나 구조는 다향하고, 다양한 모듈들이 버스를 공유하기에 버스 중재 방식도 다양하다.
버스 요구 신호(Bus Request): 특정 장치가 버스 사용을 요구했음을 알리는 신호
버스 승인 신호(Bus Grant): 버스 사용을 요구하는 장치에게 사용을 허가하는 신호
버스 사용 중 신호(Bus Busy): 현재 버스가 사용되고 있는 중임을 나타내는 신호