전체 글

좋은 영향력을 전파하기 위해 노력하는 엔지니어 리오입니다.
· CS
CPU의 진화CPU 관점의 프로그램포토샵, 크롬, helloWorld 출력 등 cpu 입장에서는 기계 명령어일 뿐이다. 명령어의 양이 다를 뿐기계어는 실행 파일에 저장된다. 프로그램이 실행되면 실행 파일에 있는 명령어들을 메모리에 적재하고 CPU가 실행한다.프로그래머 관점에서 CPU의 역활은 아주 단순하다고 생각해볼 수 있습니다.CPU에게 명령어 집합이란?CPU에게 명령어 집합(ISA: Instruction Set Architecture)은 CPU가 이해하고 실행할 수 있는 모든 기본 명령어들의 목록입니다. 요리사에게 레시피북이 있듯이, CPU에게는 수행 가능한 모든 동작이 정의된 명령어 집합이 있습니다.예를 들어, CPU는 다음과 같은 기본 명령어들을 가지고 있습니다:ADD: 두 숫자를 더하기MOV: ..
· CS
프로그래밍의 기본 동기와 비동기프로그래밍을 시작하면서 가장 많이 듣는 개념 중 하나인 동기와 비동기에 대해 알아봅시다. 동기 개념은 일상 속에서도 쉽게 접할 수 있습니다. 여러분이 건강검진을 하면서 엑스레이와 의사와 상담을 받아야 된다고 가정해봅시다. 여러분은 엑스레이를 촬영 후 엑스레이 결과가 나올 때까지 기다릴 것입니다. 엑스레이 결과가 나오고 나서야 여러분은 의사에게 상담을 받으러 움직이게 될 것입니다. 이처럼 저희가 작업을 요청하고 완료할 때 까지 기다리는 시나리오를 동기라고 합니다.위의 그림은 비동기의 과정입니다. 여러분이 채혈 검사를 받고 검사지가 완성되는 것에 오래걸리기 때문에 따로 기다리지 않고 바로 시력검사를 받으러 갔습니다. 그 뒤에 검사지가 작성되어 전달 받았고 의사에게 상담을 받아 ..
· CS
링커란링커는 컴파일러가 생성한 여러 개의 오브젝트 파일과 라이브러리를 하나로 묶어주는 프로그램입니다. 마치 음식에서 여러 명의 쉐프들이 여러 개의 요리를 만들면 그걸 하나의 접시에 담아 확인하는 헤드쉐프라고 볼 수 있습니다. 링커의 동작 과정심벌 해석: 링커가 여러 개의 오브젝트 파일을 연결할 때 각 심벌의 참조를 정확히 하나의 심벌로 연결하는 과정입니다. 주요 대상은 전역 심벌과 외부 심벌입니다. 심벌 수집: 오브젝트 파일에 정의된 심벌 테이블에서 전역 변수와 외부 변수를 수집합니다.심벌 매칭: 각 심벌 참조(예: extern 변수, 다른 파일의 함수 호출)를 해당 정의와 연결합니다. 정의가 없는 참조는 링커 오류를 발생시킨다.중복 심벌 처리: 동일한 이름의 심벌이 여러 파일에 정의된 경우, 링커는 s..
· CS
1. 매우 빠른 스위치 CPU위의 사진은 삼체에 한장면 중 하나입니다. 장면에 대해 간단하게 설명드리자면 3개의 태양으로 인해 발생하는 운동 원칙을 계산하기 위해 사람들을 일렬로 쭉 세워놓고 수많은 사람들이 깃발을 오르락 내리락하면서 마치 하나의 회로판처럼 움직이는데 이건 마치 CPU가 동작하는 모습을 떠올리게 합니다. 삼체에 한 장면처럼 CPU는 매우 많은 스위치를 가지고 있고 전기 신호를 통해 동작하기 때문에 각각의 스위치는 사람이 깃발을 올리고 내리는 속도보다 훨씬 더 빠르게 동작합니다. 그 덕에 사람들은 주판, 계산기보다 훨씬 빠른 연산장치를 가질 수 있게 되었습니다. 하지만 초기의 컴퓨터는 CPU가 이해할 수 있는 언어가 0, 1 뿐이라 천공 카드(paunched card)에 하나하나 구멍을 ..
· 일상
커뮤니티에 대한 편견가끔 커뮤니티나 링크드인, 세미나에서 활발히 활동하는 개발자들을 볼 때면 문득 이런 생각을 합니다. '저렇게 열정적으로 말하는 만큼 정말 일을 잘하는 사람일까?' 하는 의심과 함께, 한편으로는 '저런 사람과 함께 일하면 즐겁게 더 많이 성장할 수 있을까?' 하는 기대감도 품었던 적이 있었습니다. 물론 직접 일을 해보기 전까진 알 수 없겠지만, 중요한 건 커뮤니티나 세미나를 통해 서로 정보를 나누고 도우며 만들어지는 문화가 서로에게 다가가고 함께 성장할 수 있는 환경을 만드는 데 큰 역할을 한다는 것입니다.커뮤니티를 시작하게 된 이유 2021년 12월 지방에서 혼자 서울로 올라왔을 때, 지방에 오랜 기간에 살았기 때문에 회사 외에는 특별한 인맥이나 인연이 없었고 회사 내에서도 개발자가 ..
· devops
배경  회사에 장애가 발생했었을 때 K8s로 돌아가고 있는 서비스들에 대해 가설을 나눴는데 제가 K8s에 대한 기본적인 개념들과 지식들이 얕다보니 잘못된 이야기들을 하는 순간들이 있었습니다. 쿠버네티스를 공부하기 위해서 강의까지 구매 했었지만 바쁜 일정들이 있어 미뤄두고 있었고 그렇게 계속 미뤄지다가 결국 문제가 생겼을 때까지 미뤄지게 되었습니다. 입사한 지 오래되지 않았지만 경력 개발자로서 제대로 대처하지 못한 점이 큰 충격이었고 이를 계기로 쿠버네티스의 핵심 개념과 동작 원리를 정리하여, 유사한 문제가 발생했을 때 효과적으로 대응할 수 있도록 필수 개념을 숙지하려고 합니다.   기본 아키텍처1. Control Plane클러스터 중앙 제어 시스템과 같은 역활을 하는 노드로 클러스터의 전반적인 상태를 유..
ri5
리오의 개발일지