CS

    객체[Object]와 인스턴스[Instance]

    객체와 인스턴스는 객체지향 프로그래밍에서는 거의 비슷한 개념으로 사용되지만 엄밀히 말하면 조금은 차이가 있는 개념이다. 객체지향 프로그래밍이 생성된 원인이 사람의 사고와 가장 비슷하게 프로그래밍을 하기 위해서라고 할 수 있다. 즉 우리 실생활의 모든 것들이 전부 객체로 이루어진 것이다. 넓은 의미에서의 객체라는 것은 보고 만질 수 있고, 이해할 수 있으며 생각이나 행동이 추구하는 바를 의미한다. 즉 객체라는 것은 우리가 인지 하고 있는 구체적인 사물이나 시스템이 될 수도 있고, 구체적이지만 물리적으로 경계가 모호한 강, 안개 등도 객체라 할 수 있는 것이다. 인스턴스란, 예로 우리는 하나의 청사진이 되는 클래스를 정의하면 이 클래스에서 각각 구별이 되는 인스턴스를 얼마든지 만들어 낼 수 있는 것이다. 사..

    데드 레커닝 (Dead Reckoning) 개념

    분산 네트워크 기반 실시간 시뮬레이션 환경에서 트래픽 데이터(traffic data)를 감소시키기 위해 사용하는 기법. 데드(dead)라는 말은 신호를 받지 못하고 있는 상태를 말하며 레커닝(reckoning)은 추산한다는 의미로 신호가 없는 동안에는 추측하여 상태 정보를 갱신하는 것을 말한다. 영어로 찾아보니 추측 항법이라는 용어를 찾을 수 있었다. 배의 방향, 여행 경로를 추측하는데 쓰이는 방법이라고 한다. 게임에 적용하면 캐릭터의 이동경로를 예측하는 방법이라고 할 수 있겠다. 현재 위치 = 이전위치 + (속도\*시간) + (1/2\*가속도\*시간^2) 이동 패킷을 1초 간격이라고 했을 때, 이전 패킷의 위치와 현재 패킷의 위치를 빼면 간격이 1초이므로 속도이자 예상 초당 이동 거리가 된다. 거기에 ..

    깃(Git) 한글 깨짐 현상 해결

    이 파일을 메모장으로 열어보니 인코딩이 ANSI로 되어있는 것을 확인할 수 있었다 1. 기존 파일 인코딩 변경 변경하고자 하는 파일 선택 후, 파일 -> 다른 이름으로 저장 을 통해 그 파일의 인코딩을 저장할 수 있다. [참고] 2. editorconfig 파일을 이용해 새 파일 생성 시 utf-8로 생성하도록 설정 이미 만들어진 기존 파일은 위와 같이 직접 변경할 수 밖에 없었지만... 앞으로 파일 생성시에도 utf-8로 생성해주는 것이 좋을 것 같아 이를 위해서 editorconfig 파일을 이용한다. 방법은 간단하다! editorconfig란? 코딩 스타일을 일관되게 설정할 수 있게 해주는 설정파일이다. 이를 통해 indentation(들여쓰기) 스타일과 같은 다를 수 있는 설정들을 미리 지정해 둘..

    Visual Studio 한글 사용 시 오류 발생

    1. 오류가 발생하는 코드 Visual Studio 2017의 최신 업데이트를 받고 아래와 같이 소스에서 한글 코드를 사용하면 오류가 발생한다. 이 오류는 소스 파일의 인코딩 옵션 때문에 발생하는 것이라서 인코딩 옵션만 수정해주면 문제를 해결할 수 있다. 2. 한글 관련 오류를 수정하는 방법 소스 파일의 인코딩 옵션을 수정하려면 아래와 같이 '파일' 메뉴의 '다른 이름으로 ... 저장'을 선택하여 '다른 이름으로 파일 저장' 대화 상자를 실행시켜야 된다. '다른 이름으로 파일 저장' 대화 상자가 화면에 나타나면 '저장' 버튼 옆에 있는 화살표를 선택하여 '인코딩하여 저장'을 선택한다. '인코딩하여 저장'을 선택하면 아래와 같이 확인창이 나오는데 '예'를 눌러서 진행하면 된다. 그러면 아래와 같이 '고급 ..

    시스템 구조와 프로그램 실행 2

    동기식 입출력과 비동기식 입출력 동기식 입출력(synchronous I/O) I / O 요청 후 입출력 작업이 완료된 후에야 제어가 사용자 프로그램에 넘어감 구현 방법 1 I/O가 끝날 때 까지 CPU를 낭비시킴 매시점 하나의 I/O만 일어날 수 있음 구현 방법 2 I/O가 완료될 때까지 해당 프로그램에게서 CPU를 빼앗음 I/O 처리를 기다리는 줄에 그 프로그램을 줄 세움 다른 프로그램에게 CPU를 줌 비동기식 입출력 (asynchronous I/O) I/O가 시작된 후 입출력 작업이 끝나기를 기다리지 않고 제어가 사용자 프로그램에 즉시 넘어감 두 경우 모두 I/O의 완료는 인터럽트로 알려준다. DMA(Direct Memory Access) DMA(Direct Memory Access) 빠른 입출력 장..

    시스템 구조와 프로그램 실행 1

    시스템 구조 CPU : 매 클럭 사이클 마다 메모리에서 인스트럭션을 읽어 실행 registers : 메모리보다 더 빠르면서 저장할 수 있는 공간 mode bit : CPU에서 실행되는 것이 운영체제인지 사용자의 프로그램인지 구분해주는 bit Interrupt line : I/O device의 신호를 전달해주는 통로. 인스트럭션이 끝날 때마다 CPU가 체크한다. 들어온 신호가 있다면 운영체제에게 CPU가 넘어감. 메모리 : CPU의 작업공간 I/O device : 별개의 입출력 장치. 프로그램은 접근을 못하고 운영체제를 통해서만 접근할 수 있다. device controller : I/O device를 전담하는 컨트롤러. 디스크의 내부를 통제 local buffer : device contoller의 작업..

    PCB(Process Control Block)란?

    PCB는 운영체제가 프로세스를 제어하기 위해 정보를 저장해 놓는 곳으로, 프로세스의 상태 정보를 저장하는 자료구조다. 운영체제에서 프로세스는 PCB로 표현된다. 프로세스가 생성될 때마다 고유의 PCB가 생성되고, 주기억장치에 유지되며, 프로세스가 완료되면 PCB도 함께 제거된다. 프로세스 상태 관리와 문맥 교환(Context switch)을 위해서 필요하다. 운영체제에 따라 PCB에 포함되는 항목이 다를 수 있지만, 일반적으로 다음과 같은 정보가 포함되어 있다. PCB에 포함되는 정보 포인터 : 부모프로세스에 대한 포인터, 자식 프로세스에 대한 포인터, 프로세스가 위치한 메모리 주소에 대한 포인터, 할당된 자원에 대한 포인터 정보 등. 프로세스 상태(Process State) : 생성(create), 준..

    문맥 교환 Context Switching

    하나의 프로세스가 CPU를 사용 중인 상태에서 다른 프로세스가 CPU를 사용하도록 하기 위해, 이전의 프로세스의 상태(문맥)를 보관하고 새로운 프로세스의 상태를 적재하는 작업 프로세스의 문맥(context)은 PCB에 저장된다. 인터럽트(interrupt)가 발생하면 시스템은 현재 수행 중인 프로세스의 문맥을 저장하고, 이후 해당 프로세스가 재개될 때 복원한다. CPU 코어를 다른 프로세스로 교환 현재 프로세스의 상태를 저장 다른 프로세스의 상태를 복원하는 작업(task)를 말한다. 교환 시점 멀티태스킹 인터럽트 핸들링 사용자 모드와 커널 모드 간의 전환 준비 → 실행, 실행 → 준비, 실행 → 대기 전환 시 문맥 교환 발생 교환 필요한 상황 교환 과정 문맥 교환과 오버헤드 문맥을 교환하는 동안에는 유용..

    캐시가 동작하는 아주 구체적인 원리

    Principle of Locality 지역성에는 시간적 지역성과 공간적 지역성, 순차적 지역성이 있다. 시간적 지역성 : 최근에 액세스 된 프로그램이나 데이터가 가까운 미래에 다시 액세스 될 가능성이 높음을 의미한다. 반복루프, 서브루틴 호출, 공통 변수가 대표적인 예시다. 공간적 지역성 : 기억장치 내에 인접하여 저장된 데이터들이 연속적으로 액세스될 가능성이 높음을 의미한다. 표, 배열의 데이터가 그 대표적 예시다. 순차적 지역성 : 분기가 발생하지 않는 이상 명령어들이 기억장치에 저장된 순서대로 인출되어 실행됨을 의미한다. 이는 공간적 지역성에 편입되어 설명되기도 한다. 한 프로세스 안에도 자주 사용하는 부분과 그렇지 않은 부분이 있기 때문에 운영체제는 프로세스를 페이지(Page)라는 단위로 나눠 ..

    캐시 히트율/메모리 적중률 (Hit Rate)

    캐시 메모리는 CPU의 처리 속도와 주기억장치의 접근 속도 차이를 줄이기 위해 사용하는 고속 Buffer Memory이다. ※ 캐시 메모리 이용 효과 프로그램의 실행과정을 분석해 보면, 주어진 시간 동안에 참조하는 메모리 영역은 국한된다는 사실을 알 수 있다.(메모리 참조의 국부성) 따라서 자주 참조되는 프로그램의 일부를 속도가 빠른 기억장치에 저장해 놓고 실행시키면 프로그램의 총 실행시간을 단축시킬 수 있다. 이때 이용하는 기억장치를 캐시 메모리라고 한다. 캐시 메모리의 특징 캐시는 주기억장치와 CPU사이에 위치하며, 자주 사용하는 프로그램과 데이터를 기억한다. 캐시 메모리는 메모리 계층 구조에서 가장 빠른 소자이며, 처리 속도가 거의 CPU의 속도와 비슷할 정도이다. 캐시를 사용하면 주기억장치를 접근..