728x90

크래프톤 129

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 단편화 나븐 힙 이용도의 주요 이유는 단편화라고 알려진 현상이다. 이것은 가용 메모리가 할당 요청을 만족시키기에는 가용하지 않았을 때 일어난다. 단편화에는 두 종류의 단편화가 있..

24.01.30 퀴즈, CSAPP 9.8 - 9.9.3, 백준

퀴즈 꼬리 재귀 최적화라는 새로운 알고리즘을 들었다. 뭔가 CSAPP책에서 놓친 것이 있었나하고 아차 내가 읽었던것을 까먹었던가 빼놓고 읽었구나 라고 생각했다. 하지만 다행? 다행일까? 새로운 부분이 나온걸 보아하니 그런건 아니구라 라고 생각도 한번씩하고, 하지만 내가 지금까지 알았던걸로 충분히 유추해서 풀 수 있었던 것을 생각하면 아쉽기도 한것같다. 그리고 내 지식의 구멍을 좀 느낄 수 있었다. 제대로 공부했다면 퀴즈라고 많은 시간을 소모하는 게 아니라 간단하게 복습하는것으로 기억을 되살려 문제를 풀 것이라고 생각하면 아직은 많이 모자란 것 같다. 그럼 이제 다시 배우거나 애매하게 있었던 것 레쓰꼬! 1. 스택과 레지스터가 어떤 것인지 설명하고, 용도와 장점을 설명하세요. 스택(stack)은 프로시저 ..

24.01.29 CSAPP 9.6 - 9.7, 백준, 코어타임

CSAPP 9.6 주소의 번역 주소 번역은 N원소 가상주소 공간(Virtual Address Space : VAS)과 M - 원소 물리주소 공간(Physical Address Space : PAS)의 원소들 간의 매핑이다. MAP : VAS → PAS U Ø MAP(A) A’ : 가상 주소 A의 데이터가 PAS의 물리주소 A’에 존재한다면 Ø : 가상 주소 A의 데이터가 PAS의 물리메모리에 존재하지 않다면 CPU내에 있는 제어 레지스터인 페이지 테이블 베이스 레지스터(Page table base register : PTBR)는 현재 페이지테이블을 가리킨다. n 비트 가상주소는 두 개의 컴포넌트를 가진다. p비트 가상페이지 오프셋(virtual page offset : VPO)과 (n-p) 비트 가상페이..

24.01.28 CSAPP 9 - 9.5, 백준

CSAPP 9 가상메모리 한 시스템의 프로세스들은 CPU와 메인메모리를 다른 프로세스들과 공유한다. 메모리를 보다 효율적이고 더 적은 에러를 갖도록 관리하기 위해서 현대의 시스템은 가상메모리 VM이라고 알려진 메인메모리의 추상화를 제공한다. 가상메모리는 각 프로세스에 하나의 크고 통합된 사적 주소공간을 제공한다. 이것은 하드웨어 예외, 하드웨어 주소번역, 메인메모리, 디스크파일, 커널 소프트웨어들 사이의 상호작용이다. 가상메모리는 한 개의 깔끔한 매커니즘을 사용해 세 주요 기능을 제공한다. 메인메모리를 디스크에 저장 된 주소공간에 대한 캐시로 취급해서 메인메모리내 활성화 영역만 유지하고, 데이터를 디스크와 메모리간에 필요에 따라 전송하는 방법으로 메인 메모리를 효율적으로 사용한다. 각 프로세스에 통일된 ..

24.01.27 CSAPP, 백준

24.01.27 CSAPP, 백준 CSAPP 3장을 다 읽어버렸다. 물론 코어타임을 할 대 한 번씩 복습하고 코어타임을 진행하겠지만 이제는 어디를 읽어야 할까 고민이 된다. 정해진 건 아직 없우니꼬ㅏ…. 다음 배우는곳이 C언어와 malloc rb트리 구현이다 보니 malloc과 관련된 9장을 미리 경험하려고 생각했다. 뭐 다음에 읽을 곳이 아니라면 다시 그 곳을 읽으면 되는것이고, 읽으면 좋은거지 읽는다고 나쁜건 없으니까. 왜.. 재미있을까 CSAPP .. 3.11 부동소수점 코드 프로세서의 부동소수점 아키텍처의 여러가지 개념 부동소수점 값들이 저장되고 접근되는 방법, 이것은 대개 레지스터들의 일부 형태로 이뤄진다. 부동소수점 데이터로 연산하는 인스트럭션 함수들의 인자와 리턴값으로 부동소수점 값들을 전달..

728x90