Context Switching이 무엇인가? 멀티프로세스 환경에서 CPU가 어떤 하나의 프로세스를 실행하고 있는 상태에서 인터럽트 요청에 의해 다음 우선 순위의 프로세스가 실행되어야 할 때 기존의 프로세스의 상태 또는 레지스터 값(Context)을 저장하고 CPU가 다음 프로세스를 수행하도록 새로운 프로세스의 상태 또는 레지스터 값(Context)를 교체하는 작업을 Context Switch(Context Switching)라고 한다. 질문에 대한 답변은 이정도로 하고 좀 더 명확하게 이해해본다. * Context Switching을 문맥 교환으로 번역하지 말자. Context는 무엇인가? 사용자와 다른 사용자, 사용자와 시스템 또는 디바이스간의 상호작용에 영향을 미치는 사람, 장소, 개체등의 현재 상황..
[Spin Lock] Lock과 Unlock을 busy-waiting 방식으로 하는 것. 단일 프로세서의 경우 비지웨이팅에 들어가면 임계영역에 존재하는 프로세스들이 작업을 할 수 없기 때문에 무한루프에 빠지게 된다. 스핀락은 멀티프로세서 시스템의 운영체제에서 내부적으로 임계영역 문제를 해결하기 위해 수행한다. CPU를 선점하고 있는 비지웨이팅 상태로 대기하기 때문에 권한이 해제되는 대로 빨리 작업을 수행할 수 있는 장점이 있지만, 선점 기간동안 다른 프로세스 작업이 지연될 수 있는 오버헤드도 존재한다. 그래서 짧게 수행할 수 있는 작업에 주로 사용된다. 스핀락은 크리티컬 섹션처럼 스레드가 임계 영역을 획득하지 못하게 되면(Lock을 획득하지 못하게 되면) 스레드가 블로킹 되는 것을 극복하기 위해 착안된 ..
[선택 정렬] 현재 위치의 값과 비교 값의 크기를 비교하여 크냐 작냐에 따라 정렬 우선순위가 정해지며, 정렬을 수행하는 알고리즘. 크기가 크냐에 따라 최소 선택 정렬과 최대 선택 정렬로 구분할 수 있다. 최소 선택 정렬은 오름차순으로 정렬되며, 최대 선택 정렬은 내림차순으로 정렬이 된다. 시간 복잡도 : O(n^2) 공간 복잡도 : O(n) 수행 과정 : 오름차순으로 정렬 i번째 인덱스에 가장 작은 값을 저장하기 위해 i + 1번째 인덱스부터 n번째 인덱스까지 i번째 인덱스와 비교하여 가장 작은 값의 위치 j를 탐색한다. 가장 작은 값이 위치한 j번째 인덱스와 i번째 인덱스의 값을 스왑해준다. i를 1 증가시켜 다음 인덱스에 저장될 값을 구해준다. i가 n-1일때 까지 반복. void selection_..
SOLID 원칙 SRP 단일 책임 원칙 OCP 개방-폐쇄 원칙 LSP 리스코프 치환 원칙 ISP 인터페이스 분리 원칙 DIP 의존 역전 원칙 = Single Responsiblity Principle 단일 책임 원칙 = 소프트웨어의 설계 부품(클래스, 함수 등)은 단 하나의 책임(기능)만을 가져야 한다. 응집도는 높고 결합도는 낮은 프로그램을 목표. 클래스가 수행할 수 있는 기능, 즉 책임이 많아지면 클래스 내부 함수끼리 강한 결합을 발생할 가능성이 높아진다. 이는 유지보수에 어려움이 따르므로 분리시킬 필요가 있다. class cSocket { ... } class cBind { ... } class cServer { cSocket m_socket; cBind m_bind; ... } =Open-Clos..
PC는 DNS 서버의 IP주소가 설정되어 있어야 한다. 보통 DHCP 프로토콜로 IP 주소를 할당 받으면서 DNS 서버 IP 주소를 DHCP Option 6을 통해 함께 받는다. 이렇게 받은 DNS를 Local DNS라 칭한다. 보통 2개의 IP 주소를 받게 되는데, 하나가 죽었을 때를 대비하기 위해서이다. 위의 주소는 LG U+ DNS 서버 주소이다. 동작 과정 웹 브라우저 주소 창에 www.naver.com 입력. PC는 미리 설정되어 있는 DNS(Local DNS)에게 www.naver.com 이라는 Hostname에 대한 IP 주소를 물어본다. Local DNS에는 www.naver.com에 대한 주소가 있을 수도 없을 수도 있다. 만약 있다면 Local DNS가 바로 PC에 IP 주소를 넘겨주고..
인적성 준비 - 2019 하반기 아모레퍼시픽그룹 인적성검사 통합편 =========================================================================== NC Soft = 기업 개요 = 설립일 : 1997년 3월 대표이사 : 김택진 글로벌 네트워크 : 한국, 북미, 유럽, 일본, 대만 2000년 7월 7일 코스닥 등록 2003년 5월 22일 거래소 이전 상장 자본금 : 약 100억원 = 기업문화 = Mission 즐거움으로 연결된 새로운 세상을 만드는 것 Format 작고, 강하고, 알찬 기업 더보기 작다 - 존중을 바탕으로 하나의 팀으로서의 커뮤니케이션이 이루어지는 회사 [Collaboration & Teamwork] 강하다 - 바르게 결정하고 전체가 움..
gcc에서 라이브러리 파일을 사용하여 실행파일을 만들때는 -l과 -L 옵션을 사용하여 만드는 방법이 있다. -l 라이브러리의 이름을 적어주는 옵션 -L 라이브러리가 포함된 디렉토리를 적어주는 옵션 예를 들어 라이브러리의 이름이 libtest.a이고 위치가 libs 폴더에 있다면, (1)$ g++ -o out main.cpp -ltest.a -Llibs (2)$ g++ -o out main.cpp -ltest -L. 이런 형식으로 사용을 하면 된다. (1) 리눅스에서 라이브러리는 반드시 lib 로 시작이 되며, 옵션에 라이브러리 이름을 적을 때, lib는 생략하고 이름을 적으면 된다. 즉, libtest.a는 test.a라고 적으면 된다. (2) 현재 폴더에 있는 라이브러리를 쓴다는 말이다.
1. 설치 코드 다운로드 주소 : https://github.com/gperftools/gperftools/releases gperftools/gperftools Main gperftools repository. Contribute to gperftools/gperftools development by creating an account on GitHub. github.com 다운로드 후 순서대로 명령어 수행 $ tar -zxvf gperftools-2.7.tar.gz $ cd gperftools-2.7 $ sudo ./configure $ sudo make $ sudo make install 빌드가 끝나면, 기본 위치인 /usr/local/lib 폴더에 라이브러리 파일이 생성된다. 이 문서에서 링킹 할..
■ EPOLL ? Epoll은 리눅스에서 select의 단점을 보완하여 사용할 수 있도록 만든 I/O통지 모델이다. 파일 디스크립터를 사용자가 아닌 커널이 관리를 하며, 그만큼 CPU는 계속해서 파일 디스크립터의 상태 변화를 감시할 필요가 없다. 즉, select처럼 어느 파일 디스크립터에 이벤트가 발생하였는지 찾기 위해 전체 파일디스크립터에 대해서 순차검색을 위한 FD_ISSET 루프를 돌려야 하지만, Epoll의 경우 이벤트가 발생한 파일 디스크립터들만 구조체 배열을 통해 넘겨주므로 메모리 카피에 대한 비용이 줄어든다. ■ EPOLL 함수#incude int epoll_create(int size) fd들의 입출력 이벤트 저장을 위한 공간을 만들어야 하는데, epoll_create는 size만큼의 입..