시스템 핵심정리 미리보기-시스템 메모리 사용량 확인하기
시스템 핵심 정리 수업에 대해서 커리큘럼 한번 설명 들어보도록 하겠습니다
시스템 핵심 정리는 이전 수업으로는 온라인 리눅스 온라인 기본 수업에 있는 내용들이 조금 같이 포함이 되어 있는데 약간 이게 이제 신 버젼이라고 보실 수가 있겠고요
서버엔지니어를 위한 커리큘럼 안에 포함이 되어 있는 거기 때문에
임베디드쪽을 하시는 분들도 물론 도움이 되는 내용이기는 해요
하지만 조금 더 서버를 다뤄야 되는 분들을 위해서 타겟팅이 조금 더 되어 있다 라고 보시면 좋을 것 같고요
리눅스에 대한 어떤 구조 리눅스 커널에 굉장히 깊은 내용을 다루는 것은 우리가 중급A/B반이 있어요
리눅스 수업에 거기서 이제 좀 다루고요
여기서는 그 정도까지 레벨은 아니지만 그래도 리눅스 안에서 정말 기본적인 프로세스적인 부분이라든지 그리고 또 메모리 ,네트워크,파일 시스템
이런 네 가지 파트에 대한 가장 기본적인 동작원리를 이해를 하고
그래도 간단하게 추적도 조금 해보고 이런 부분들을 진행을 하는것이 시스템 핵심정리에 굉장히 중요한 내용들이라고 보시면 되겠고요
메모리 파트 쪽에서는 정말 중요한 우리 가상 메모리 대한 개념이 있어요 정말 중요하거든요
가상 메모리에 대한 개념은 완전히 하나에서 열까지 다 쓸 수 있어야 돼요
그런데 써야 된다라고 얘기하는 거는 어디 OS책에 있는 이론을 가지고 얘기하는 게 아니라 실제로 가상 메모리를 제대로 이해하기 위해서는 컴퓨터 구조적인 부분하고 컴파일러 운영체제 부분들이 다 섞여져 있습니다
같이 결국에는 A/B규칙하에서 또 가상메모리에 대한 개념이 같이 나오는
거기 때문에 이 부분이 같이 연결되서 정리가 되야 하거든요
그래서 제가 정리들이 있는 내용들에 대해서 공부를 꼭 하시고
그 부분을 다 복습을 하셔야 되요
그래서 A4용지에다 가상 메모리 에 대해서 처음부터 끝까지 다 써내려갈 수 있는 그 내용을 압축적으로 정리를 해놨습니다
그래서 그런 부분들도 공부하는 굉장히 중요한 부분이고요
또 이제 프로세스를 이해를 하고 TOP 같은 것을 통해서 시스템
전반적인 걸 보면서도 프로세스가 전체적으로 어떻게 스케쥴링 이 되고 시그널처리가 어떻게 되는 이런 부분들도 좀 정확하게 이해하는게 중요하거든요 그래서 그런 부분들도 다루게 되고요
그 다음에 파일I/O관련된 부분은 VFS 제가 생각했을 때 이 시스템
엔지니어를 위한 커리큘럼 중에서 이 시스템 핵심정리 수업이 제일 중요하지 않나 라고 생각을 하거든요
정말 기초가 필요하신 분들은 기초서 부터 시작을 해야겠지만
리눅스를 어느 정도 사용을 하신다면 이 핵심 정리 수업만큼은 꼭 마스터를 하시는 걸 추천드려요
그리고 이 내용만큼은 또 다른곳에서 결코 얻기 힘든 내용으로 많이 구성이 되어 있습니다
만족도가 굉장히 높고요
VFS관련해서도 그냥 말로만 VFS아니라 직접 이거를 추적해 보고 이 내부도 이해를 해보고 정리를 해보고 이런 식으로 좀 실습을 통해서 내가 사용하고 있는 리눅스를 실제로 추적해 보면서 이해하는 게 굉장히 중요하거든요 그런 내용들로 많이 구성이 되어 있습니다.
네트워크도 마찬가지로네트워크에 대한 부분을 공부를 할 때 우리가 http,ICMP,DNS,TCP이런 것들은 공부할 수 있는데 이론적으로만 공부하고 끝나게 되면 이걸 실제로 적용을 못해요. 중요한 건 뭐냐면 이런 이론을 당연히 공부를 해야겠지만 이거를 실제로 리눅스 안에서 확인할 수 있고 증명할 수 있고 추적할 수 있고 이런 것들을 해볼 수 있어야 되거든요
그래서 이런 실습들을 같이 넣어서 정리를 하고 그래서 네트워크를 실전적으로 리눅스 환경 안에서 이제 다룰 수 있도록 하는 거를 많이 정리하게 됩니다
그래서 여기까지 시스템 핵심정리 커리큘럼내용을 정리했습니다
시스템 전체적으로 메모리에 대해서
한번 상태를 파악해보고 시스템 전체적인 메모리 부분을 파악하는 부분 명령어가 free라는 명령을 있습니다
free 한번 입력을 해보도록 할게요
free 이라고 하면은 일단 명령어를 모르게 되면 이렇게 볼 수 있죠
디스플레이 해가지고 지금 현재 메모리 상태에 대한 부분을 파악할 수 있는
그런 명령을 하는 거를 체크해 볼 수가 있겠습니다
밑에는 그냥 라이브러리 함수라고 보시면 되겠고요
프로그램을 실행을 해본다면
일단은 직관적으로 볼 수 있는 건 휴먼리더블 이라고 해서 -h 옵션을 주게 되면 일단 토탈 메모리공간 부터 시작해서 used, free이런 것들을 체크해 보시면서 파악해 볼 수가 있어요
파악해 볼 수가 있는데 자 여기서 이제 중요한 것은 free라는 명령을 하게 되면 바이트 단위로 보게 되거든요
단위로 봤을 때 이 숫자값이 딱 떨어지게 정리를 할 수가 있어야 ehl요
자 total을 한번 만들어 볼 건데요
상식적으로 used하고 free를 더하면 어떻게 되죠?
total이 나올 수 있다라고 생각할 수 있단말이에요
한번 해볼게요
used+free를 하면요
이게 total 숫자값하고 달라요 다릅니다
그렇죠 잠깐만 영상을 멈춰주시고요 이 total 한번 맞춰보세요
total 숫자값이 딱 떨어질 수 있도록 나머지 요소들있잖아요
이용해서 total을 만들어 주시면 되요
직접 해봐야 돼요
그러니까 실수가 나오는 것도 공부가 되는 거예요
이제 중요한 포인트 여기서
가장 많이 하는 실수 여기서 더 하긴 더 해야 되는데
shared공유하는 거니까 available를 이용가능한 거니까
이거 아닐까? 하지만 지금 total 보다 넘어서 버리죠 그러니까 이게 숫자까지 안 맞아요
그걸 다 더하면 또 더 넘쳐나게 되고 그래서 좀 대충 찍어보니까
buff/cache를 더 하니까 나온다라는 거를 그냥 추측해서 알아내신 분들도 있을 거예요
어쨌든 정답은 used+free+buff/cache=total
왜 그럴까요?
일단은 free는 말 그대로 안 쓰고 있는 공간이에요
used 쓰고 있는 공간이라고 해석을 하는 거는 굉장히 그냥 초보적으로 해석을 하는 거고요
여기서 말하는 used 진짜로 그냥 배열,스택,힙처럼 순수하게
메모리 공간을 쓰는 거를 얘기하게 됩니다
그러면 이 used 전체적으로 사용 중인 거를 전체를 뜻하는게 아닙니다.
순수하게 그냥 배열이라든지스택,힙처럼 프로그램이 구동 도중 메모리를 사용하는 부분이 유지되고요
그러면 buff/cache 는 뭐냐 메모리를 쓰긴 쓰는 거예요
사실상 이것도 used입니다
그래서 사용을 하고 있는 거예요
그런데 다만 이거하고의 차이점은 파일 내용이 메모리 상이 유지되면서
메모리를 쓸 때 메모리상에 있는 내용이 파일 내용인가요
배열 이라든지 전역 변수,스택,힙 이런 식으로 프로그램이 순수하게 쓰는
메모리공간이라고 볼 수가 없고 이거는 메모리 공간을 차지하기 차지하는데
디스크에 있는 내용이 유지가 되고 있을 때 buff/cache 이라고 얘기할 수가 있겠습니다.
그러면은 사실상 total로
진짜로 쓰고 있는 거는 buff/cache+used 이거예요
그럼 나머지 중 shared는공유하는 거니까 이제 스킵하면 되겠고요 available 이제 우리가 개념 정리를 해야 되는 요소인데요
availabled은 무엇일까요?
결론부터 얘기하면 free+buff/cache 일부에요
왜 그런 값이 나오게 됐냐면 실제로 지금 남아도는 거를 그냥 바로 측정해서 나오는 값이라기 보다는 available라는 뜻자체가 프로세스가 최초의 실행됐을 때 영혼까지 끌어모아서 최대치로 쓸 수 있는게 얼마인지 계산해서
그냥 적어놓은 것 뿐입니다
그래서 free는 당연히 쓸 수 있는 거잖아요
그러니까 프로세스가 최초 실행됐을 때 되게 된다면 가정을 해서 영혼까지 끌어모아서 최대치를 얼마나 쓸 수 있을까의 대한 답변이라고 보시면 돼요