혼공학습단 8기 혼공머신에 이어, 두 번째 혼공학습단에 지원했다. 이번엔 컴퓨터 구조와 운영체제였다. 언젠가는 꼭 한번 공부해보고 싶었지만 기회가 없었던 컴구OS, 좋은 기회다 싶어 도전했다. 어려웠다. 꽤 많이 어려웠다. 정확한 정의와 개념이 잡히지 않은 채로 주마간산 격으로 공부했다. 누군가가 뭘 배웠냐고, 기억나는 대로 말해보라고 하면 어버버버 할 것임에 분명하지만, 그래도 의미있는 시간이었다. 원래 공부라는 게 한번에 완벽히 이해하려고 하는 게 아니다. 나중에 기억을 떠올리기 위해, "어 나 이거 그때 봤었는데"를 위해 하는 게 공부다.책의 문장을 그대로 쓰고 싶지 않았다. 조금이라도 이해하고 나만의 언어로 쓰고 싶었다. 비유를 많이 들었다. 그래야 나 스스로에게 설명이 가능하기 때문이다. 왜인지..
제가 수포자였는데 수학을 좀 공부하려는데요. 기초가 아주 없는데 중학교 수학부터 보면 될까요?꽤 자주 듣는 질문이다. 결론부터 말하겠다. 그렇게 말한 사람 중에 수학 공부 진짜로 한 사람은 단 한 명도 못봤다. 그나마 비슷했던 사례가 딱 하나 있긴 하다. 고등학교 때 수포자였다가 친구가 멱살잡고 중학교 수학부터 가르쳐서 수직상승한 지인의 경우, 그 외에는 단 한 명도 없다. 기초가 약하니까 중학교 수학부터? 안 될 수밖에 없다. 구조적인 문제 때문이다.첫째, 그런 방식으로는 꾸준히 할 수 없다.공부가 본업인 고등학생이나 교수라면 모를까(초중학생의 본업은 노는 거지 공부가 아니다), 직장인이 일 마치고 집에 와서 수학 공부를 한다? 지속 불가능하다. 지겹기 때문이다. 왜 지겨울까? 재미도 없고 목표도 뚜..
얼마 전 계승혁 교수님의 집합론 영상을 끝까지 봤다. 마지막 챕터가 선택공리, 서수, 기수에 대한 내용이었는데, 서수와 기수를 먼저 이용해놓고는 막상 정의는 마지막에 가서 하는 것이 좀 의아했다. 예를 들어 전단사함수가 존재하는 두 집합 $X$와 $Y$는 대등하다(equipotent)고 말하며, 아래와 같이 쓰면서, $$X \approx Y \Leftrightarrow \mathrm{card}(X) = \mathrm{card}(Y)$$ "$\mathrm{card}(X)$"를 $X$의 기수라 부른다"고 적혀있다. 만족스럽지 않은 설명이라고 생각했는데, 정의를 보니까 왜 정의를 나중에 설명하는지 납득이 됐다. 솔직히 이 글을 쓰는 지금도 이해했다고는 말 못하겠는데, 감은 온 것 같아서 기록을 남겨둔다. 두..
Thm. Every vector space has a basis. (even in the case of infinite dimension) proof) Let $V$ be a vector space other than $\{0\}$. Pick a vector $x \neq 0$ from $V$. Consider the set $X = \{S \subseteq V | x \in S, S$ is linearly independent$\}.$ Then $(X, \subseteq)$ is an ordered set. Obviously $X$ is nonempty because $\{x\}\in X$. By Hausdorff maximal principle (see below), $X$ has a maximal..
꼬앵이 체중관리표를 보다가 문득 이런 생각이 들었다. 매일 똑같이 먹고 똑같이 움직이면 체중은 수렴할까? 그래서 아래와 같은 문제를 만들어보았다. 철수네 강아지 해피가 살이 너무 쪄서 체중관리에 들어가기로 했다. • 현재 해피 체중은 20 kg이다.• 사료는 1 g 당 3 kcal의 열량을 갖는다.• 현재 체중 기준, 먹은 사료 중 50%는 똥으로 나오고, 나머지 50%는 에너지로 전환 및 흡수된다. - 사료의 에너지 전환율은 체중이 1 kg 감소할 때마다 1%씩 증가한다. 예를 들어, - 20 kg일 때는 먹은 사료 중 50%가 에너지로 전환되지만, - 19 kg일 때는 먹은 사료 중 51%가 에너지로 전환된다.• 운동은 매일 1시간을 하는데, 현재 체중 기준, 300 kcal의 에너지를 ..
콰인은 자기 자신의 코드를 출력하는 코드이다. 즉, 실행 결과가 자신의 코드와 동일해야 한다. 생각보다 간단하지 않다. 무지성으로 아래처럼 짜면 disp('disp') 출력은 disp만 되므로, 다시 아래처럼 고쳐야 하고, disp('disp(''disp'')') 이렇게 해봤자 다시 코드가 늘어났으므로 다시 코드를 늘려야 한다. 아래는 chatGPT가 알려준 매트랩 콰인이다. quine = 'fprintf(''%s%s%s'', char(10), ''quine = '';, quine, char(10), quine);';fprintf('%s%s%s', char(10), 'quine = ', quine, char(10), quine); 그런데 틀렸다. 따옴표 2개는 따옴표 1개로 바뀌기 때문이다. 다시 물어..
15. 파일 시스템CPU, 메모리, OS의 동작원리 등을 공부하면서 느낀 것을 딱 하나 말하라면, 이렇게 말하겠다.이게 돌아간다고?!그것도 수 GHz의 속도로!?컴퓨터를 설계하는 사람들이 대단하다고는 생각하고 있었지만,그 존경심이 백 만 배만큼 더 커진 것 같다.마지막은 파일 시스템이다.파일 시스템이야 뭐 별거 있나...?그냥 폴더 있고 파일 있는게 전부 아닌가?...라고 생각하면 오산이다.15.1 파일과 디렉터리내가 생각했던 보조기억장치, 디렉터리, 파일의 구조는 아래 그림과 같았다.출처: https://wikidocs.net/223730책장이 보조기억장치이고, 책장 한 칸은 폴더, 상자는 파일이다.이 그림도 어쩌면 수정해야 할 수도 있겠다.파티션의 존재 때문인데... 조금 뒤에 설명하겠다.파일은 그 ..
14. 가상 메모리지금까지 OS가 프로세스를 어떻게 관리하는지 열심히 배웠다.핵심은 OS가 프로세스에게 자원을 어떻게 잘 배분하는가였다.그런데 프로세스는 메모리에 올라간다.프로세스를 메모리에 올리는 것도 분명히 OS가 관리해야 할 사항이다.그 과정에서 가상 메모리의 개념이 자연스럽게 등장하게 된다.14.1 연속 메모리 할당연속 메모리 할당(contiguous memory allocation)은 프로세스를 메모리에 올리는 가장 간단한 방법이다.가장 먼저 실행될 프로세스를 메모리에 올리고, 그 다음 실행될 프로세스를 바로 뒤에 올린다.다만, 인터넷을 찾아보면 연속 메모리 할당도 두 가지 방법으로 세분화된다.책에 있는 것과 같이 빈틈 없이 메모리가 채워지는 것을 variable-size allocation이라..
13. 교착 상태교착 상태는 아래 이미지 한 장으로 설명 가능하다.서로가 각자에게 필요한 것을 가지고 있다!어떡하지?13.1 교착 상태란OS, 프로세스, 자원의 관점으로 보자면 아래와 같은 상황이다.출처: https://www.geeksforgeeks.org/introduction-of-deadlock-in-operating-system/교착 상태(deadlock)가 성립하기 위한 조건은 네 가지가 있다.상호 배제: 하나의 자원은 한 번에 하나의 프로세스만 점유할 수 있다.점유와 대기: 프로세스가 자원 하나를 붙들고 다른 자원을 기다릴 수 있다.비선점: 프로세스가 다른 프로세스의 자원을 강제로 뺏을 수 없다.원형 대기: 위 그림처럼, 자원 할당 그래프가 루프를 만들 수 있다.13.2 교착 상태 해결 방법..