분류 전체보기 141

[JPA] MyBatis와 JPA, 도대체 뭐가 다를까?

✔️ 들어가기 전... 왜 이 포스팅을 작성하나? (긴 글 주의) 먼저 난, MyBatis와 JPA에 한이 맺힌 사람이다. 국비학원에서 배운 MyBatis... 모든 걸 처음 배웠던 때이기도 했다. 그리고 국비학원 후기에도 올렸듯이, 규모가 큰 국비학원 과정이었던지라 당연히 취업깡패 커리큘럼인지 알았다. 이때까지만 해도, 힘들었던 내 인생 드디어 보상받는 줄 알았다. 왜 힘들었는지는 '국비학원 후기'에 대략 적혀있음. (아, 취업깡패 커리큘럼 맞긴 맞다. 다만 SI 깡패라서 그렇지.) 따라서 난, 학원 과정을 성실히 밟아가면 취업이 원활하게 될 수 있을 줄 알았다. (나름 학원에서 우수 학생 선정도 되고 그랬었음) 그리고 학원에서 누구보다 더 열심히 할 자신이 있었던 게, 좀 거만한 얘기일수도 있지만....

Spring/JPA 2023.02.06

[운영체제] 페이지 교체 알고리즘

✔️ 페이지 교체 알고리즘이란? 페이징 기법으로 메모리를 관리하는 운영체제에서, 페이지 부재가 발생하여 새로운 페이지를 할당하기 위해 현재 할당된 페이지 중 어느 것과 교체할지를 결정하는 방법이다. 메모리는 한정되어 있기 때문에 스와핑이 많이 일어난다. 따라서 스와핑은 많이 일어나지 않도록 설계되어야 하며, 이는 페이지 교체 알고리즘을 기반으로 스와핑이 일어난다. 이 알고리즘이 사용되는 시기는 페이지 부재가 발생해 새로운 페이지를 적재 해야하나, 페이지를 적재할 공간이 없어 이미 적재되어 있는 페이지 중 교체할 페이지를 정할 때 사용된다. 빈 페이지가 없는 상황에서, 메모리에 적재된 페이지와 적재할 페이지를 교체함으로써 페이지 부재 문제를 해결할 수 있다. 페이지 교체 알고리즘은 '온라인 알고리즘'이다...

CS/운영체제 2023.02.05

[운영체제] 메모리 관리, 페이징 & 세그멘테이션

운영체제의 대표적인 할일 중 하나가 메모리 관리이다. (CPU 관리, 메모리 관리, I/O 장치 관리) 컴퓨터 내의 한정된 메모리를 극한으로 활용해야 하는 것이다. ※ 메모리란? 더보기 프로그램과 프로그램 수행에 필요한 데이터 및 코드를 저장하는 장치이다. 즉, 작업을 위해 사용되는 공간이다. 컴퓨터 메모리의 내용은 보조기억장치로 전송할 수 있는데, 이는 가상 메모리라 불리는 메모리 관리 기법을 통해 가능하다. ※ 운영체제의 역할 더보기 실행파일이 로더에 의해 메모리에 올라오고, 운영체제는 이 실행 파일을 메모리에 어느 부분에 올릴지 결정한다. ※ 자바는 OS 메모리 영역에 직접적으로 접근하지 않고, JVM이라는 가상 머신을 이용해서 간접적으로 접근한다. ✔️ 메모리 관리가 필요한 이유는? 프로그램의 실..

CS/운영체제 2023.02.04

[운영체제] 메모리 계층 구조

✔️ 메모리 계층 구조(Memory Hierachy)란? 메모리 계층은 레지스터, 캐시(L1, L2), 메모리(주기억장치), 하드디스크(보조기억장치)로 구성되어 있다. 명칭 위치 접근 속도 레지스터 CPU 내부 빠름 (휘발) 캐시(L1, L2 캐시) CPU 내부 빠름 (휘발) 메모리(RAM) CPU 외부 레지스터와 캐시보다 느림 (휘발) 하드디스크(HDD, SDD) CPU 직접 접근 불가 데이터를 메모리로 이동시켜 접근 가능 (비휘발) 램은 하드디스크로부터 일정량의 데이터를 복사해서 임시 저장하고, 이를 필요 시마다 CPU에 빠르게 전달한다. 이러한 계층이 있는 이유는, 경제성과 캐시 때문이다. ✔️ 캐시(Cache) 메모리 주기억장치에 저장된 내용의 일부를 임시로 저장해두는 기억 장치이다. CPU와 주..

CS/운영체제 2023.02.04

[운영체제] 세마포어(Semaphore) & 뮤텍스(Mutex)

✔️ 들어가기 전... 뮤텍스와 세마포어를 알아보기 전, 임계구역(Critical Section)에 대해 먼저 정리하자. 💡 임계구역(Critical Section)이란? 여러 프로그램 혹은 쓰레드가 작업을 수행하면서 공유된 자원을 건드리게 될 수 있는데, 이때 프로그램 코드 상에서 공유 자원에 접근하는 부분을 임계구역이라고 한다. 이렇게 임계 구역에 여러 프로세스 및 스레드가 함부로 접근할 수 없도록 데이터를 한 번에 하나의 프로세스만 접근할 수 있도록 제한을 두는 동기화 방식을 취해야 한다. 동기화 도구에는 대표적으로 세마포어(Semaphore)와 뮤텍스(Mutex)가 있다. 🔒 이들은 모두 공유된 자원의 데이터를 여러 스레드/프로세스가 접근하는 것을 막는 역할을 한다. 세마포어는 일반화된 뮤텍스이다..

CS/운영체제 2023.02.03

[에러] Thymeleaf가 PUT method를 지원하지 않는 현상

회원 정보 수정 코드를 짜다가 아주 삽질 삽질 개삽질을 했음. 일단 문제가 크게 3가지가 있었는데, Serivce 코드 문제 Controller 코드 문제 Thymeleaf 코드 문제 나름대로 코드를 짜보았으나... 계속되는 update 쿼리 실패. 왜 계속 select 쿼리만 나가는 거니ㅠ 아무래도 제일 먼저 Service 코드가 잘못됐다고 생각해서 그거부터 고치기 시작함. 그 다음은 Controller. 어찌저찌 고쳐도 계속 update 쿼리가 나가지 않는 것이었다. 난 viewPage 문법에 문제 있어도, Service랑 Controller 코드 잘 짜면 DB는 수정되는 줄 알았지. 근데 계속 안 되길래, Serivce랑 Controller 코드만 계속 수정하고 있었음. 설마 Thymeleaf 때문..

에러 2023.02.03

[운영체제] 동기화(Synchronization)와 경쟁상태(Race Condition), 임계영역(Critical Section)

✔️ 동기 (Synchronous)와 비동기(Asynchronous) 데이터 처리 방식 💡 동기 (Synchronous) 서버에서 요청을 보냈을 때, 응답이 돌아와야 다음 동작을 수행할 수 있다. 즉, A 작업이 모두 진행될 때까지 B 작업은 대기해야 한다. 간단하고 직관적임 어떠한 일을 처리하는 동안, 다른 일을 하지 못함 작업 완료 여부를 호출한 쪽에서 신경을 씀 💡 비동기 (Asynchronous) 동기와 반대로, 요청을 보냈을 때 응답 상태와 상관 없이 다음 동작을 수행할 수 있다. 즉, A 작업이 시작하면 동시에 B 작업도 실행된다. A 작업은 결과값이 나오는대로 출력된다. 동기보다 복잡함 어떠한 일을 처리하는 동안 다른 일을 할 수 있어 자원을 효율적으로 사용 가능함 작업 완료 여부를 호출된 ..

CS/운영체제 2023.02.02

[운영체제] 데드락 (DeadLock, 교착 상태)

✔️ 교착 상태 (DeadLock)란? 두 개 이상의 프로세스들이 서로가 가진 자원을 기다리며(wait) 중단된 상태이다. 즉, 두 개 이상의 작업이 서로 상대방의 작업이 끝나기 만을 기다리고 있기 때문에 결과적으로 아무것도 완료되지 못하는 상태이다. 💡 예를 들어, Resource 1(자원)을 가진 Process 1(프로세스)과 Resource 2를 가진 Process 2가 있다. 이때 Process1은 Resource2를 필요로 하고, Process2는 Resource1을 필요로 한다면 두 프로세스는 서로의 자원을 얻기 위해 무한정 기다리게 되는 것이다. ✔️ 주로 언제 발생할까? 멀티 프로그래밍 환경에서 한정된 자원을 얻기 위해 서로 경쟁하는 상황 발생 한 프로세스가 자원을 요청했을 때, 동시에 그..

CS/운영체제 2023.02.01

[운영체제] CPU 스케줄링 알고리즘

✔️ CPU 스케줄링이란? CPU를 잘 사용하기 위해 프로세스를 잘 배정하는 것이다. CPU 스케줄러는 CPU 스케줄링 알고리즘에 따라 프로세스에서 해야 하는 일을 스레드 단위로 CPU에 할당한다. 프로그램이 실행될 때는 CPU 스케줄링 알고리즘이 어떤 프로그램에 CPU 소유권을 줄 것인지 결정한다. ✔️ CPU 알고리즘의 조건과 목표 조건 오버헤드 ↓ 이용률 ↑ 기아 현상 ↓ 목표 가능하면 많은 일을 수행. 시간(time)보단 처리량(throughtout)이 중요 빠른 응답 시간. 적은 대기 시간. 기한(deadline) 맞추기 ✔️ 선점 / 비선점 스케줄링 선점(preemptive) 지금 사용하고 있는 프로세스를 알고리즘에 의해 중단시켜 버리고, 다른 프로세스에 CPU 소유권을 할당하는 방식 현대 운..

CS/운영체제 2023.02.01

[Java] JVM과 Garbage Collection 동작 원리

이번 포스팅은 JVM 동작 원리와 GC 동작원리에 관한 내용이다. JVM과 GC 동작원리 역시 근본 중의 근본인 내용이지만, 이제야 정리한다. 먼저 들어가기 전... ✔️ JVM, JRE, JDK 정리 JVM (Java Virtual Machine) 자바 프로그램이 어느 기기, 어느 운영체제에서도 실행될 수 있게 만들어준다. 자바 프로그램의 메모리를 효율적으로 관리 & 최적화 해준다. JRE (Java Runtime Environment) JVM이 원활하게 잘 작동될 수 있도록 환경을 맞춰주는 역할을 한다. (JRE에 클래스 로더도 포함됨) JDK (Java Development Kit) JDK 에는 JRE에 없는 자바 컴파일러를 포함하고 있다. 자바로 개발을 하고 싶다면, 설치해야 한다. ✔️ JVM ..

CS/Java (CS) 2023.01.29