728x90

정글 128

24.01.19 CSAPP 3.4, 그래프, 위상정렬, 비트리, DFS, BFS

CSAPP 3.4 3.4 정보 접근하기 x86-64 주처리 장치 CPU는 64비트를 저장할 수 있는 범용 레지스터 16개를 보유한다 레지스터는 정수 데이터와 포인터를 저장하는데 사용한다. 인스트럭션들은 16개의 레지스터 하위 바이트들에 저장된 다양한 크기의 데이터에 대해 연산 할 수 있다. 바이트 수준 연산은 가장 덜 중요한 바이트에 대해 연산, 16비트 연산은 덜 중요한 2바이트, 32비트는 4바이트 , 64비트 연산은 레지스터 전체에 접근한다. 일반적인 프로그램에서 서로 다른 레지스터들은 서로 다른 목적으로 이용한다. 스택 포인터 %rsp는 런타임 스택 끝 부분을 가리키기 위해 사용된다. 일부 인스트럭션들은 특별히 이 레지스터를 읽고 쓴다. 다른 15개의 레지스터는 사용이 저금 더 자유롭다. 3.4...

크래프톤 정글 - 1Week 24.01.12 - 24.01.18

벌써 1주가 또 지났다. 배운 것, 공부한 것은 많은 느낌이지만 내 것이 안됐다. 지식들이 머리속에서 붕 떠있다는 느낌이 든다. 빠르게 캐치해서 내 것으로 만들지않는다면 그대로 날아가지 않을까 생각한다. 조금 더 공부할 때 집중해서, 효율을 늘려봐야겠다. 시간은 이미 많이 투자하고 있으니 집중의 정도를 늘려 효율의 향상을 기대해보는게 맞지 않을까..? CSAPP 정보는 비트와 컨텍스트로 이루어진다. 모든 시스템 내부의 정보 - 디스크 파일, 메모리 상의 프로그램 , 데이터, 네트워크를 통해 전송되는 데이터는 - 비트들로 표시된다. 서로 다른 객체들을 구분하는 방법은 이를 바라보는 컨텍스트에 의해서 결정된다. 다른 컨텍스트에서는 동일한 일련의 바이트가 정수, 부동소수, 문자열 또는 기계어 명령을 의미 할 ..

24.01.17 분할정복, 병합정렬, 코어타임

24.01.17 분할정복, 병합정렬, 코어타임 코테가 바로 내일이여서 백준 문제를 많이 풀려고 노력했다. 쉽지않다. 흑흑.. Algorithm 분할정복(Divide and Conquer) 그대로 해결할 수 없는 문제를 작은 문제로 분할하여 문제를 해결하는 방식 대표적인 예 퀵정렬 합병정렬 이진탐색 선택문제 고속 푸리에 변환 분할정복의 설계 Divide - 원래 문제가 분할하여 비슷한 유형의 더 작은 하위 문제로 분할 가능할때까지 나눈다. Conquer - 각 하위 문제를 재귀적으로 해결한다. 하위 문제의 규모가 나눌 수 없는 단위가 되면 탈출 조건을 설정하고 해결한다. Combine - Conquer한 문제들을 통합하여 원래 문제의 답을 얻어 해결한다. Divide를 제대로 나누면 Conquer 과정은 ..

24.01.15 CSAPP 3.1-3.3, 스택, 큐, 연결리스트,재귀, 정수론, 정렬, 검색

CSAPP 어셈블리 코드를 짤때 저급 인스트럭션을 명시해야 하는데, 대개의 경우 고급 언어가 제공하는 높은 수준의 추상화를 사용하는 것이 보다 더 생산적이고 안정적이다. 그렇다면 왜 WHY 기계어를 사용하고 공부할까? 컴파일러를 적절한 커맨드라인 인자와 함께 호출하면 컴파일러는 어셈블리 코드 형태의 파일로 출력을 생성한다. 이 코드를 이해하면 컴파일러의 최적화 성능을 알 수 있고, 코드에 내재된 비효율성을 분석할 수 있다. 프로그램이 얼마나 효율적으로 실행될지 이해하기 위해서 생성된 어셈블리 코드를 컴파일하고 분석해 보곤한다. 더욱이 고급언어에서 제공하는 추상화 계층 때문에 이해 가능한 프로그램의 런타임 동작이 감춰지는 경우도 종종 있다. 또 다른 예로 악성 프로그램이 시스템을 감염 시킬 수 있도록 프로..

24.01.13 CSAPP 1.7- 1.끝 Python

24.01.13 CSAPP 1.7 - 1끝 운영체제는 하드웨어를 관리한다. 운영체제는 하드웨어와 소프트웨어 사이 소프트웨어 계층. 응용프로그램이 하드웨어를 제어하려면 언제나 운영체제를 통해서 해야 한다. 운영체제의 2가지 목적 제멋대로 동작하는 응용 프로그램들이 하드웨어를 잘못 사용하는 것을 막기 위해서 응용프로그램들이 단순하고 균일한 매커니즘을 사용하여 복잡하고 매우 다른 저수준 하드웨어 장치를 조작할 수 있게 이러한 두 가지 목적을 추상화를 통해 달성한다. 추상화에 대해서 여러가지 글들을 봤는데, 그것들이 가져야 할 핵심적인 특징을 가지는 모델을 만드는 것, 어떤 복잡한 것들을 단순화 시켜 표현한 것. 이런 설명들이 많았다. 프로세스 프로그램이 최신 시스템에서 실행될 때 운영체제는 시스템에서 이 한 ..

24.01.12 CSAPP, Python, Algorithm

24.01.12 정보는 비트와 컨텍스트로 이루어진다. 모든 시스템 내부의 정보 - 디스크 파일, 메모리상의 프로그램, 데이터, 네트워크를 통해 전송되는 데이터- 는 비트들로 표시된다. 서로 다른 객체들을 구분하는 방법은 이를 바라보는 컨텍스트에 의해서다. 다른 컨텍스트에서는 동일한 일련의 바이트가 정수, 부동소수, 문자열 또는 기계어 명령을 의미할 수 있다. 프로그램은 다른 프로그램에 의해 다른 형태로 번역된다. GCC 컴파일러 드라이버는 소스파일을 읽어서 실행파일로 번역한다. 번역은 4개의 단계를 거쳐서 실행된다. 이 네 단계를 실행하는 프로그램들(전처리기, 컴파일러 ,어셈블러, 링커)을 합쳐서 컴파일 시스템이라고 한다. 전처리 단계 : 전처리기(cpp)는 본래의 C프로그램을 #문자로 시작하는 디렉티브..

크래프톤 정글 - 천천히 나를 돌아보는 시간

크래프톤 정글의 특별한 과제가 나왔다. 에세이 제출 주제는 찬찬히 나를 돌아보는 시간이다. 사실 이런 주제로 글을 쓰거나 생각하는 것을 좋아하는 나이기에 왜인지 기분이 좋았다. 그럼 레츠꼬우 지나온 과거에 대한 성찰 지금까지 참 편하게 살았다. 나 자신 몰입한적이 없다 할 수는 없고, 노력한 적이 없다고 할 수는 없지만 딱.. 그 정도? 누군가 나는 다시 그 일을 그렇게 하라고 해도 하기 힘들어! 라고 말한다면 나는 10번도 더 하겠는데? 라고 할 정도로 흘러가듯이 살아왔다. 후회 한다는 그런 내용은 아니고, 그런 성장과정 그런 과거가 지금의 나 자신, 성격을 만들었다고 생각한다. 물흐르듯이 조금 더 자유로운. 바로 위에 후회 한다는 그런 내용이 아니라고 했지만 사실 가끔씩 후회하긴 한다. 조금 더 뭔가..

잡담 2024.01.12

크래프톤 정글 - 0Week 24.01.08 - 24.01.11

24.01.08 - 24.01.11 (3박4일) 말도 많고, 탈도 많았던 크래프톤 정글 0주차 미니 프로젝트가 끝났다. 거창하게도 아니고 소소하게 기획하고 출발했던 미니 프로젝트지만 여러가지 요소, 암초에 부딪쳐서 완성조차 하지 못했다. 완성을 하고 남는 시간에 컨텐츠를 좀 더 추가하고 싶었던 나의 계획은 물거품 마냥 꼬르르륵.. 사실 코드적인 그런 부분에서 문제가 많이 생긴게 아니라, 코드 외적인 부분에서 문제가 많이 발생했기 때문에 조금 더 아쉬웠다. 사실 아쉽다고는 말하지만 결과에 대한 부분이 아쉬웠지 나.. 정말 많이 정말 많이했다. 한계에 몰아붙인다고 표현할까? 몰입이라고 표현해야할까? 실시간으로 정말 생각한 코드들을 짜고, 점점 속도가 붙어가는 나의 모습에 기분이 좋았다. 내가 또 와도 이것보..

728x90