일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- springwebmvc
- 자바
- 클린코드
- hibernate
- DesignPattern
- gradle
- 빌드툴
- JPA
- 프록시
- 토비의스프링3.1
- Kotlin for Java Developers
- Immutable
- ORM
- 컴퓨터시스템
- java
- 링킹
- exception
- Spring
- beanfactory
- 메이븐
- String
- 토비의스프링
- AutoConfiguration
- ApplicationContext
- IOC
- FunctionalInterfaces
- DispatcherServlet
- lambda
- springboot
- 링커
- Today
- Total
목록컴퓨터시스템 (2)
엔지니어로 가는 길
우리는 편의상 메모리를 단순히 바이트들의 선형 배열로 여기고, CPU가 각 메모리 위치에 상수 시간 안에 접근할 수 있다고 생각한다. 하지만 실제 메모리는 조금 복잡하다. 메모리 계층구조 메모리는 다음과 같이 계층구조를 갖는다. 메모리는 왜 계층구조일까? 우리는 속도가 빠르면서 용량이 큰 메모리를 원한다. 속도와 용량은 trade-off 관계에 있다. 속도를 빠르게 하면 용량이 떨어지기 마련이고, 용량을 키우면 속도가 떨어지기 마련이다. 그러나 계층구조를 이용하면 속도도 빠르고 용량도 큰 마법같은 메모리를 사용하는 것 같은 착각을 얻을 수 있다. 이게 어떻게 가능한걸까? 먼저 캐시와 지역성을 이해해야 한다. 캐시 '캐싱한다'는 말이 있다. 이 말은 무언가를 저장한다는 말이고, 그 무언가는 당연히 앞으로 ..
이번에는 링킹이 무엇인지, 링커란 무엇인지에 대해 간략히 알아보도록 한다. Linking(링킹)은 여러 개의 코드와 데이터를 모아서 연결하여 메모리에 로드될 수 있고 실행될 수 있는 한 개의 파일로 만드는 작업이다. 이 파일이 메모리에 로딩되어 실행된다. 링크는 컴파일시에 수행되는 경우도 있고, 로딩시에 수행되는 경우도 있고, 실행시에 수행되는 경우도 있다. Linker(링커)란 링킹을 담당하는 프로그램이다. 링커는 소프트웨어 개발에서 독립적인 컴파일을 가능하게 하는 아주 중요한 역할을 담당한다. 링커 덕분에 큰 규모의 응용프로그램을 한 개의 소스 파일로 구성하는 대신 별도로 수정할 수 있고, 컴파일할 수 있는 보다 관리할 만한 규모의 더 작은 모듈들로 나눌 수 있다. 즉, 아주 거대한 프로그램을 하나의..