본문 바로가기

Programming II52

[코딩 테스트를 위한 자료 구조와 알고리즘 with C++] 2장 트리, 힙, 그래프 참고 자료 : 코딩 테스트를 위한 자료 구조와 알고리즘 with C++ -  존캐리, 파야스라잔, 셰리안도시 저# 2장 트리, 힙, 그래프2.1 들어가며2.2 비선형 문제더보기- 선형 자료 구조로 표현할 수 없는 대표적인 문제로는 계층적 문제와 순환 종속성 문제가 있다.2.2.1 계층적 문제- 조직 구성은 계층적으로 표현되며, 이러한 데이터는 배열, 벡터, 연결 리스트 같은 자료 구조로는 표현하기 어렵다.- 고급 수학을 배우기 위해 어떤 과목을 미리 배워하는지를 알아낼 수 있어야 한다.- 위의 문제를 풀기 위해서는 트리라고 부르는 자료 구조를 사용해야 한다.   - 데이터가 저장된 부분을 보통 노드라고 부르고, 노드와 노드 사이를 잇는 선을 에지라고 한다. 계층적 문제는 어떤 시스템이 위계적 구조를 가지.. 2025. 3. 24.
[시스템] 15장. 쓰레드 풀링 01. 쓰레드 풀에 대한 이해 479- 빈번한 쓰레드의 생성과 소멸은 피해야한다. 은행 창구 앞에 앉아서 업무를 보는 행원들은 쓰레드에 비유할 수 있다. 이들은 계속해서 밀려오는 고객들의 업무를 처리를 해준다. 서너 명의 은행 직원이 수십, 수백 명이나 되는 고객의 업무를 처리하는 것이다. 이것이 쓰레드 풀 모델이다.- 시스템 모델이란 처리해야 할 일이 있을 때마다 새로운 쓰레드를 생성해서 할당하는 시스템 모델이다. - 쓰레드 풀의 기본 원리는 쓰레드의 재활용이다. 할당된 일을 마친 쓰레드를 소멸시키지 않고, 쓰레드 풀에 저장해뒀다가 필요할 때 다시 꺼내 쓰는 개념이다. 즉 쓰레드의 생성과 소멸에 필요한 비용을 지불하지 않겠다는 것이다.    - 쓰레드 풀은 처리해야 할 일이 등록되기 전에 생성되는데, .. 2025. 3. 19.
[시스템] 14장. 쓰레드 동기화 기법2 01. 실행순서에 있어서의 동기화 453- 쓰레드의 실행순서를 동기화한다는 것은 메모리에 접근하는 쓰레드의 실행순서를 동기화한다.+ 생산자/ 소비자 모델- 생산자는 문자열을 생성한다(입력받는다). 반면에 소비자는 생성된 문자열을 소비한다(출력한다)   - 이때 출력속도가 입력속도를 따라가지 못하는 등의 문제가 발생할 수 있다.      - 이때 두 개의 쓰레드를 활용해서 하나는 입력을, 또 하나는 출력을 담당하게 하는 것이다. 그리고 그 사이에 메모리 버퍼를 둬서 두 개의 쓰레드가 입력 및 출력속도에 상관없이 독립적으로 실행되도록 한다.+ 이벤트 기반 동기화- Windows 개발자들은 쓰레드의 실행순서를 동기화한다고 하면, 가장 먼저 떠올리는 것이 이벤트 기반 동기화 기법이다.   - 세마포어나 뮤텍스와.. 2025. 3. 19.
[시스템] 10장. 컴퓨터 구조에 대한 세 번째 이야기 - 함수가 호출되는 원리와 호출이 될 때마다 할당되는 메모리 관리 방식에 대해서 이야기함.01. 절차적 함수 호출(Procedure) 지원 CPU 모델- 함수 호출도 CPU의 도움을 받아야만 가능한 일이다. 함수 호출이라는 기능은 하드웨어 종속적인 부분이 상당수 존재.- 함수가 호출되는 방식은 CPU에 따라서 차이를 보인다.   - 예로 ARM 코어에서는 ATPCS라는 것을 정의하였는데, 이는 함수의 전달인자와 리턴 어드레스(함수 호출이 완료되고 나면 되돌아 갈 주소)를 레지스터에 저장하기로 결정하고, 그 저장 방식에 대한 표준을 정의한 것.+ 스택 프레임 구조- 함수 내에 선언된 변수는 스택에 할당된다.- 스택 프레임 : 함수 호출 과정에서 할당되는 메모리 블록(지역변수의 선언으로 인해 할당되는 메모리.. 2025. 3. 13.
[시스템] 9장. 스케줄링 알고리즘과 우선순위 01. 프로세스의 스케줄링(Scheduling)- 실행 중인 모든 프로세스들에게 골고루 CPU를 할당하는 일이 필요한데, 이 일은 멀티 프로세스를 지원하는 운영체제에서 담당하는 일이다. 운영체제 일부분에 해당하는 스케줄러가 담당하는 일이다.+ 일반 OS와 리얼타임 OS의 차이점- OS 는 운영체제를 뜻하고 RTOS는 실시간 운영체제를 뜻한다.- RTOS와 일반 OS의 차이는 응답성(응답속도)에 있다. RTOS는 응답성이 Windows와 같은 일반 OS보다 좋다. 따라서 우리가 명령하는 일들을 신속히 처리한다.- 일반 OS는 범용적인 사용을 위해 디자인되어 있다.- 반면에 RTOS는 사용하는 영역이 제한적이라 범용적인 OS보다 하는 일이 적다. 프로그래머가 시키지 않은 일은 아예 할 생각도 안한다. - R.. 2025. 3. 9.
[시스템] 8장. 프로세스간 통신(IPC) 2 01. 핸들 테이블과 오브젝트 핸들의 상속+ 도입 배경(Introduction to Jeffery Richter)- 미국의 유명한 저자 Jeffrey Richter의 설명은 Windows가 핸들 테이블을 관리하는 실질적인 방법과는 다소 차이를 보이는데 그럴 수밖에 없는 데이는 두 가지 이유가 있다.   - 1. 마이크로소프트에서 Windows 운영체제를 공개하지 않고 있다. 소스 코드를 공개하지 않는 한 프로세스 핸들 테이블이 어떻게 관리되는지를 아주 세밀한 부분까지 정확히 알 방법은 없다.   - 2. Windows 운영체제의 종류 및 버전마다 핸들 테이블이 관리되는 방법에 다소 차이가 있다.-> 이러한 어려움 때문에 Jeffrey Richter는 가장 일반적인 형태로 프로세스 핸들 테이블이 관리되는 .. 2025. 3. 9.