목록전체 글 (12)
seven05
기간: 2024.09.24~2024.09.30정글의 가장 큰 시련이자 과제인 핀토스 과제를 시작했다. 핀토스의 첫번째 과제인 Threads를 진행하였는데 한주동안 무엇을 배웠는지 어떻게 과제를 해쳐나갔는지 WIL을 정리해보고자한다. (주로 시행착오에 가까운 이야기들) 1. Alarm Clock이 과제에서 첫번째로 만났던 고난은 thread.h 에 선언되어있던 thread 구조체 안에 wake_time 이라는 변수를 넣고 sleep_list를 관리할 생각이였는데 sleep_list에 쓰레드를 list_push 하는 과정에서 자꾸 커널 패닉 에러를 일으켰던 순간이다. 처음에는 기본으로 되어있는 thead 구조체를 건드려서 thread의 magic_number를 건드려서 overflow를 일으키는줄 알았으나 ..
(전과 마찬가지로 단원 전체를 볼수있으면 당연히 좋지만 시간이 모자라는 관계로 일단은 코치님이 강조하신 부분들만 볼수밖에없었다. 다음에 시간이 생기면 다시 추가로 공부해보자!) 프로세서는 실행하는 명령어에 대응되는 주소값을 PC에 가지고있는데 실행하는 명령어에 따라 PC의 값이 변해가는 흐름을 제어 흐름(Control Transfer)이라고 한다. 제어흐름의 양상은 크게 3종류인데메모리에 할당된 명령어를 순차적으로 처리 (대부분의 시간동안 이 제어 흐름을 따른다)프로그램 상태 변화에 반응하여 제어 흐름이 변하는 경우(jump, call, return 등의 명령어를 수행하는 경우)예외적인 제어 흐름(Exceptional Control Flow, ECF) (프로그램의 실행과 관련이 있거나 없거나) 시스템 변..
(7단원 전체를 볼수있으면 당연히 좋지만 시간이 모자라는 관계로 일단은 코치님이 강조하신 부분들만 볼수밖에없었다.다음에 시간이 생기면 다시 추가로 공부해보자!) 링킹이란?: 링킹(Linking)이란 프로그램 코드 및 데이터의 조각들을 결합하여 메모리에 로드되어 실행될 수 있는 하나의 실행 파일을 만드는 과정링커(Linker)는 링킹을 수행하는 프로그램, 각 모듈의 독립적인 컴파일을 가능하게 함 링킹을 공부해야하는이유?큰 규모의 프로그램을 개발하면서 링킹과 관련된 에러를 많이 만나기때문프로그래밍 언어의 스코프규칙이 어떻게 구현되는지 이해(지역변수와 전역변수의 차이 static의 의미)공유 라이브러리를 활용할줄 알아야하기때문링킹과 관련된 많은 시스템 개념들을 이해하기위해링킹 종류컴파일 타임에 이뤄지는 정적..