전체 글

전체 글

    컴파일에 대해서

    본 강의를 보고 정리한 내용이다. 인터프리터 코드 -> 이해(분석) -> 실행 컴파일러와 달리 목적파일이 없고, 소스코드를 분석하여 바로 실행한다. 컴파일 사람이 이해하기 쉬운 언어를 기계가 이해할 수 있는 언어로 변경해 준다. 즉, 프로그래머가 작성한 코드를 분석하여 이해한 뒤, 이를 기계가 이해할 수 있도록 기계어로 변경한다. 코드 -> 이해(분석) -> 목적파일 생성 -> 실행파일 -> 실행 Java, C 로 작성된 코드를 이해(분석)하는 과정을 거쳐 기계어로 작성된 목적파일을 생성. 이후, 운영체제의 요건에 맞게 또는 여러 라이브러리를 목적파일에 코드를 추가하여 실행파일을 만든다. 목적파일을 실행파일로 만드는 것을 링크라고 한다. 목적파일은 여러 개가 존재할 수 있으며, 이를 하나의 실행파일로 만..

    전송 계층 보안 프로토콜 SSL/TLS

    SSL은 웹 브라우저를 위한 보안 프로토콜로 처음 제안되어 현재 SSL 3.0 버전까지 나왔다. SSL 3.0을 기반으로 표준화한 것이 TLS이다. 통상적으로 SSL과 TLS을 같은 말로 부르는듯하다. SSL/TLS는 클라이언트/서버 환경에서 TCP 기반의 어플리케이션에 대한 종단 간 보안 서비스를 제공하기 위해 만들어진 전송계층 보안 프로토콜이다. 각 애플리케이션 프로토콜이 SSL을 이용할 경우 이를 구분하기 위해 고유한 well-know 포트를 할당한다. 가장 대표적인 예는 아래와 같다. HTTPS(443/tcp) SMTPS(465/tcp) FTPS(990/tcp) TELNETS(992/tcp) SSL/TLS 가 제공하는 보안 서비스 1. 기밀성(Confidentiality) 대칭 암호를 이용한 송수..

    FQDN과 PQDN에 대해 다시 한번 고민하기

    이 글에서 이 주제로 정리를 하였지만, 기억이 잘 안나기도 하고, 다시 공부할 겸 정리를 하려고 한다. 전체 주소 도메인 네임(FQDN, Fully Qualified Domain Name) 최상위 도메인 A의 하위 도메인 B가 있고, B의 하위 도메인 C가 있으면 전체 도메인 네임은 "C.B.A"이다. 특정 도메인의 위치를 정확하게 알려주기 때문에 완전한 도메인 네임이다. 부분 주소 도메인 네임과 구분하기 위해 가장 상위 도메인에 "."을 붙인다. 생략을 할 수 있지만 DNS 마스터 파일에서는 FQDN과 PQDN을 명확하게 구분하기 위해서 생략하지 않는다. 부분 주소 도메인 네임(PQDN, Partially Qualified Domain Name) FQDN이 완전한 도메인 네임이라면 PQDN은 불완전한 ..

    멀티 스레드에 대한 이해 with 자바

    멀티 스레드란? 멀티 스레드란 한 응용 프로그램에 여러 스레드를 갖고 있는 것을 말한다. 스레드는 CPU가 처리하는 작업 단위를 말하며, 따라서 멀티 스레드는 CPU가 주어진 시간 동안 스레드를 전환하며 실행하는 것을 말한다. 만약, CPU의 코어가 여러 개라면 한 응용 프로그램 내에 코드의 다른 부분을 여러 개의 CPU 코어에서 실행할 수 있게 된다. 이를 그림으로 표현하면 아래와 같다. 왜 멀티스레드를 사용할까? 1. 단일 CPU일 때 CPU의 효율을 극대화할 수 있다. CPU의 작업은 매우 비싼 작업이기 때문에 CPU를 잠시라도 쉬게 해서는 안된다. 예를 들어, 한 스레드가 네트워크를 통해 전송된 요청의 응답을 기다리고 있는 상황이라면, CPU도 어떠한 작업을 하지 않고 대기 중이 된다. 이때는 다..

    Redis의 동시성 문제와 Lock 구현

    프로젝트 기능 중 지도에 표시되는 마커를 누르면 게임이 진행되는데, 이 마커에 대한 접근은 단 한 명만 가능해야 한다. 이를 구현하기 위해 동시성 문제를 고려해야 하는데, 운영체제를 공부하며 이론적으로 배운 내용을 직접 적용해 볼 수 있는 기능이기 때문에 재미있을 거 같아 내가 맡겠다고 하였다. 마커는 레디스에 저장되어있기 때문에 레디스를 사용하여 동시성 문제를 해결하고자 했다. 레디스 Lock 구현 레디스는 싱글 스레드 기반이다. 즉, 스프링에서 멀티스레드로 개발을 해도 레디스는 싱글 스레드이기 때문에 레디스 내에서는 한번에 하나의 스레드만 실행된다. 그래서 레디스를 사용하면 어려운 동시성 문제를 쉽게 해결할 수 있다. 싱글 스레드면 동시성 이슈가 발생하지 않을거 같지만, 레디스의 연산은 반환 값이 있..