728x90

Study 383

크래프톤 정글 - 4Week 24.02.01 - 24.02.07

회고 4주차부터는 c언어가 시작됐고, rb트리 구현이 과제로 주어졌다. 아에 처음은 아니지만 python을 계속 써와서 다시 적응하는데 좀 시간이 걸렸다. 레드블랙 트리를 이해하고 구현하는데 좀 시간을 많이 사용했는데, 구현부분에서는 예림님과 재희님이 큰 도움을 주셔서 편하게 할 수 있었다. 뭔가 뭔가 더 잘할 수 있을 것 같은데 약간약간이 아쉬운 것 같다. 조금만 더 힘내봅시다룽 이제 5주차가 시작하고 설날 연휴가 껴있어서 생각보다 길게 진행이 된다. 쳐지지 않고 이 익스텐션을 잘 유지하면서 공부해보자 CSAPP 7. 링커 Linking 링킹(linking)은 여러개의 코드와 데이터를 모아서 연결하여 메모리에 로드 될 수 있고 실행 될 수 있는 한 개의 파일로 만드는 작업이다. 링킹은 컴파일 시에 수행..

24.02.07 C & C++

C & C++ 선언(declaration)과 정의(definition) 프로그래밍에서 선언(declaration)과 정의(definition)는 명백히 다른 역할을 하지만 혼동하여 사용하기 쉽다. 선언과 정의의 가장 큰 차이는 ‘메모리를 할당하는가’ 이다. 메모리를 할당하지 않고, 대상의 이름만 알려준다면 선언이고 대상의 메모리가 할당된다면 그것은 정의다. 선언 컴파일러가 참조할 식별자(identifier)와 이름을 알립니다. 식별자란 변수의 타입과 함수의 인수목록을 뜻하며 이름은 변수, 함수, 클래스의 이름, 네임 스페이스를 뜻합니다. 정의 정의는 식별자와 이름으로부터 코드를 생성하여, 함수가 호출되거나 변수를 사용할 때 생성된 코드를 참조한다. 정의는 고유 사양으로 프로그램에는 정의가 하나만 있어야 ..

24.02.06 퀴즈, CSAPP 9.9, 9.11

퀴즈 우리 인도 압둘바리 선생님과 특훈을 했던 것이 큰 도움이 된것같다. 오히려 이 인도 압둘바리 쌤의 강의를 정글러들은 무조건 수강하게 하는게 실력향상에 더 큰 도움이 되지않을까?..? 자막 이슈만 아니라면 저어어어어엉말 강추하고 싶은 강의다. 압두르알리 그는 신이야!! CSAPP 9.9.8 가용블록의 분할 할당기가 크기가 맞는 가용 블록을 찾은 후에 가용 블록의 어느정도를 할당할지에 대해 정책적 결정을 내려야 한다. 한 가지 옵션은 이 가용 블록 전체를 사용하는 것이다. 비록 간단하고 빠르지만, 큰 단점은 내부 단편화가 생긴다는 것이다. 만일 배치 정책으로 인해 크기가 잘 맞는다면, 일부 추가적인 내부 단편화는 수용할 수도 있다. 그렇지만 크기가 잘 안맞는다면, 할당기는 대개 가용 블록을 두 부분으로..

24.02.05 CSAPP 8.55, RB트리 구현

CSAPP 8.5.5 시그널 핸들러 작성하기 핸들러는 이해하기 어렵게 만드는 몇 가지 특성을 가진다. 핸들러는 메인프로그램과 동시적으로 돌아가고, 같은 전역변수를 공유하며, 그래서 메인 프로그램과 다른 핸들러들과 뒤섞일 수 있다. 어떻게 그리고 언제 시그널들이 수신 될 수 있는지는 종종 직관적이지 않다. 다른 시스템들은 다른 시그널 처리 방식을 갖는다. 안전한 시그널 처리 G0 핸들러는 가능한 한 간단하게 유지하라. 문제를 피하는 최상의 방법은 핸들러를 작고 단순하게 유지하는 것이다. G1 핸들러에서 비동시성-시그널-안전한 함수만 호출하라. 비동기성-시그널-안전한 또는 단순히 안전한 함수는 그것이 재진입 가능하거나 어떤 시그널 핸들러에 의해 중단 될 수 없기 때문에 어떤 시그널 핸들러로 부터 안전하게 호..

24.02.04 CSAPP 8.1.2 - 8.1.3, 8.5 - 8.5.4, C & C++

CSAPP 8.1.2 예외의 종류 예외상황은 네 가지 종류로 구분 할 수 있다. 인터럽트 트랩 오류 Fault 중단 abort 인터럽트 인터럽트는 프로세서 외부에 있는 입출력 디바이스로부터 시그널의 결과로 비동기적으로 발생한다. 하드웨어 인터럽트는 비동기적이며, 즉 특정 인스트럭션을 실행해서 발생하는 것이 아니라는 의미에서 그렇다. 하드웨어 인터럽트를 위한 예외 핸들러는 종종 인터럽트 핸들러 라고 부른다. 네트워크 어댑터, 디스크 컨트롤러, 타이머 칩 같은 입출력 디바이스들은 프로세서 칩의 핀에 시그널을 보내서 인터럽트를 발생시키고, 인터럽트를 발생시킨 디바이스를 식별하는 예외번호를 시스템 버스에 보낸다. 현재의 인스트럭션이 실행을 완료한 후에, 프로세서는 인터럽트 핀이 high로 올라갔다는 것을 발견하..

24.02.03 CSAPP 8.1.1, AVL트리

CSAPP 8.1 예외상황 예외 상황은 부분적으로는 하드웨어와 운영체제에 의해서 구현된 예외적인 제어흐름의 한 가지 형태다. 예외상황은 어떤 프로세서 상태의 변화에 대한 대응으로, 제어 흐름의 갑작스런 변화다. 예를 들어, 가상 메모리 페이지 오류, 산술 오버플로우가 발생하거나 어떤 인스트럭션이 divide by zero를 시도하는 경우다. 프로세서가 이벤트가 발생했다는 것을 감지하면, 예외 테이블 이라고 하는 점프 테이블을 통해서 이 특정 종류의 이벤트를 처리하기 위해 특별히 설계된 운영체제 서브루틴(예외처리 핸들러)으로 간접 프로시저 콜을 하게 된다. 예외 처리 핸들러가 처리를 끝 마치면, 예외상황을 발생 시킨 이벤트의 종류에 따라서 다음과 같은 세 가지 중의 한 가지 일이 발생한다. 핸들러는 제어를..

24.02.02 CSAPP, C언어, 가상화

CSAPP 7.4 재배치 가능한 목적파일 컴파일 파이프라인에서 어셈블리 단계의 결과물 C 언어 프로젝트의 임시 결과물로 간주, 이후 최종 결과물을 만드는 주 재료다. 링커가 수행하는 과정에서 비롯된다. 링커는 재배치 가능한 목적 파일 여러개를 모아서 더 큰 목적파일을 형성하는데, 하나의 재배치 가능한 목적 파일에서 나타나는 기계 수준의 명령어는 다른 재배치 가능한 목적 파일에서 나온 기계 수준의 명령어 다음에 위치한다. (즉, 명령어가 이동할 수 있거나 재배치 가능하다는 점을 의미한다) 따라서, 재배치 가능한 목적 파일에서 명령어는 주소를 갖지 않는다. 링크 단계를 거치고나서 명령어는 주소를 갖는다. 7.9 실행 가능 목적 파일의 로딩 실행 가능 목적파일 prog를 실행하기 위해서, 리눅스 쉘의 명령줄에..

24.02.01 CSAPP 7, 7.1, 7.4

CSAPP 7. 링커Linking 링킹(linking)은 여러개의 코드와 데이터를 모아서 연결하여 메모리에 로드 될 수 있고 실행 될 수 있는 한 개의 파일로 만드는 작업이다. 링킹은 컴파일 시에 수행 할 수 있으며, 이때 소스코드는 머신코드로 번역된다. 프로그램이 메모리에 로드되고, 로더에 의해서 실행될 때는 로드타임에 응용 프로그램에 의해서 심지어 실행시에도 수행될 수 있다. 링커는 독립적인 컴파일을 가능하게 한다. 큰 규모의 응용 프로그램을 한 개의 소스 파일로 구성하는 대신 별도로 수정할 수 있고, 컴파일 할 수 있는 보다 관리할 만한 규모의 더 작은 모듈들로 나눌 수 있다. 이 모듈 중에 한 개를 변경할 때, 이 파일만을 간단히 재 컴파일하고 다른 파일들을 재 컴파일할 필요 없이 이 응용을 다시..

크래프톤 정글 - 3Week 24.01.25 - 24.01.31 부제 : 새로운 시작

회고 3주차가 벌써 지나갔다. 너무 빠른 것 같기도 하고, 뭔가 쉴 틈 없이 몰아치니 더 빠른 것 같기도 하고.. 어렵다! 매주 더 어려워 질 수 있나? 더 힘들어 질 수 있나? 생각 하는데, 그 생각을 관통하듯이 점점 더 어려워진다. 내가 성장할수록 적이 강해진다니 소년만화의 왕도일지도 파워 인플레이션이 일어난 장기연재 만화마냥 해결해야할 문제가 점점 강해지는 것을 보니 골치가 아프다. 하지만 내가 더 강해질거니까. 대체 불가능한 개발자가 되려면 이 정도는 해결할 수 있어야지. 제일 중요한 건 나만 힘든게 아니고, 나만 힘들었던게 아니니까. 그리고 내가 선발자로 걸어가는게 아닌 남들이 걸어갔던 그 길을 걸어가고 있는거니까 덜 힘들다고 생각한다. 그리고 사실 아직 숨 쉴만하다. 막막해서 울고 싶지는 않으..

24.01.31 CSAPP 9.9.4, 백준

아니 세상에 마상에나 벌써 1월의 마지막이다. 내가 점점 발전을 하고 있다는 생각은 들지만 음.. 빠른가? 라고 누군가 물어본다면 그거에 대해서 확실하게 대답은 못할 것 같다. 그럼에도 그렇게 불안에 떨지 않는건 나는 잘할 것이라는걸 알기 때문이 아닐까? 더 어려워도 뭐 사람이 하는거고 앞 선배들이 해왔던건데 불가능한 것을 내놓진 않겠지 라는 마인드로 살아가고 있다. 내일 WIL 회고에다가 적을말을 TIL에 적고 있는 것 같은데, 아무튼!!! 나는 하루하루 성장하고 있다. 곧 초사이어인의 반열에 오를지도.. CSAPP 9.9.4 단편화 나븐 힙 이용도의 주요 이유는 단편화라고 알려진 현상이다. 이것은 가용 메모리가 할당 요청을 만족시키기에는 가용하지 않았을 때 일어난다. 단편화에는 두 종류의 단편화가 있..

728x90