본문 바로가기

전체 글57

태스크 관리 1. 프로세스와 스레드 그리고 태스크 program : 디스크에 저장되어 있는 실행 가능한 파일 process : running or runnable program task : 자원 소유권의 단위 2. 사용자 입장에서의 프로세스 구조 32bit CPU의 경우 운영체제는 각 프로세스에게 총 4GB 크기의 가상공간을 할당 0~3GB 사용자 3~4GB 커널 사용자공간에서는 text, data, heap stack 총 4가지 region으로 구분가능 text : cpu에서 직접 수행되는 명령어(instructions) data : 전역변수 stack : 지역변수와 인자 그리고 함수의 리턴주소 heap : 동적할당 영역 각 영역을 segment 또는 vm_area_struct 라고도 부름. 3. 프로세스와 쓰레드.. 2023. 4. 19.
저널링 파일 시스템 jffs2 https://m.blog.naver.com/PostView.nhn?blogId=msnayana&logNo=80161719646&proxyReferer=https:%2F%2Fwww.google.com%2F 저널링 과 JFFS, JFS2 저널링 과 JFFS , JFS2 저널링(Journalling)이라는 용어는 매혹적이다. 저널(Journal)은 정기적으... blog.naver.com 2020. 6. 10.
항목 55. Boo子有親! 부스트를 늘 여러분 가까이에 이번장은 저자가 Boost와 친해지라는 내용의 항목이다. 부스트는 C++ 개발자들의 단체이자 무료 다운로드가 가능한 C++라이브러리 집합을 동시에 일컫는 고유명사이다. 웹사이트 주소 http://boost.org 에서 확인할 수 있다. 부스트외에도 여러 단체 및 웹사이트가 있으나, 부스트는 C++ 표준화 위원회와 밀접한관계에 있으며, 실제로 Boost에서 사용되던 것이 c++표준으로 추가된 실례도 있다. 시간내서 한번확인해보자. Boost C++ Libraries Welcome to Boost.org! Boost provides free peer-reviewed portable C++ source libraries. We emphasize libraries that work well with the C+.. 2020. 5. 12.
항목 54. TR1을 포함한 표준 라이브러리 구성요소와 편안한 친구가 되자 현 항목이 쓰여진 시점은 C++11(C++0x) 표준이 나오기 이전이다. 따라서 당시에는 C++98이후 C++표준이 2000년대의 한 시점에 공개될 것으로 예상해 C++0x으로 불려 왔으나, 2010년이 되면서 아무리 늦어도 2010년대의 한 시점에 공개될 것으로 예상해 C++1x로 변경되었고 2011년 8월 12일에 들어서야 국제표준으로 확정되면서 C++1x는 최종적으로 C++11이 되었다. (참고 - https://ko.wikipedia.org/wiki/C%2B%2B11) C++ 11에서는 Boost에서 사용되던 기능들이 대거 편입되었다. C++98의 기존기능에 대해 알아보자. 1. 표준 템플릿 라이브러리(STL) - Container(vector, string, map ..) - iterator -.. 2020. 5. 12.
항목 53. 컴파일러 경고를 지나치지 말자. class B{ public : virtual void f() const; }; class D: public B { public : virtual void f(); }; * 풀이 : 가상함수인 B::f 를 D::f에서 재정의하겠다는 의도인데, const가 빠짐으로서 컴파일러는 다음과 같은 경고를 띄워준다. warning: D::f() hides virtual B::f() 말그대로 D::f가 B::f를 가려버렸다. 우리는 우리가 사용하고 있는 컴파일러가 띄워주는 에러미시지들에 어느정도 익숙해지고 나면, 이 외의 다른메시지들의 뜻도 이해하게 되는 수준이 오게된다. (어떤것은 넘어가도 되고, 어떤것은 없애주어야 하는지) 우리는 경고메시지의 참 뜻을 명확하게 이해해야하며, 지워나가는 습관을 들어야 한다. 이것만.. 2020. 5. 12.
항목 52. 위치지정 new를 작성한다면 위치치정 delete도 같이 준비하자 Widget *pw = new Widget; 함수 두개가 호출된다. 1. operator new 2. Widget 생성자 만약 1번 operator new에서 메모리 할당후 2번 생성자에서 에러 발생시 2번 생성자에서 메모리 해제역할을 할 수 없다. 이 메모리 해제 역할을 C++ 런타임 시스템에서 맡는다. 런타임 시스템의 역할은 1번에서 호출한 operator new와 짝이되는 버전의 operator delete를 호출하는것이다. 여태까지 우리가 상대했던 기본형 new. delete를 대수로운 사안이 아니다. void operator delete(void *rawMemory) throw(); // 전역 유효범위의 기본형 시그너처 void operator delete(void *rawMemory, std:.. 2020. 5. 12.