[ch.01] 함수형 프로그래밍 소개
·
함수형 프로그래밍
함수형프로그래밍 언어가 추상 함수를 생성하고 조합함으로써 논리 연산을 표현할 수 있을 때 함수형 언어로 간주람다익명 함수를 지칭하는 용어수학에서 사용하는 함수를 보다 단순하게 표현하는 방법익명 함수공통으로 일급 객체라는 특징을 가지고 있다.일급 객체?다른 객체들에 적용 가능한 연산을 모두 지원하는 개체함수를 값으로 사용할 수도, 인자로 전달 및 변수로 사용하는 등의 연산들 가능하다.람다 대수추상화단일 입력을 받는 익명 함수, 즉 람다응용값에 추상화가 적용되어 결과를 생성개발자의 관점에서는 함수나 메서드 호출을 의미베타 축약추상된 변수를 적요된 인수로 대체수학적 함수 선언식을 의미연산의 놀리를 선언적 문장으로 표현할 수 있어야 하며, 표현식을 사용하여 결과와 프로그램이 작동하는 방식을 설명한다.함수형 프로..
동기화 문제
·
CS/OS
동기화? 한정적인 시스템 자원에 여러 스레드가 동시에 접근해서 사용하면 문제가 발생할 수 있다. 이 문제를 방지하기 위해 여러 스레드에게 하나의 자원에 대한 처리 권한을 주거나 순서를 조정하는 기법이다. 스레드 동기화 실행 순서의 동기화 스레드의 실행 순서를 정의하고, 이 순서를 반드시 따르도록 하는 것. 메모리 접근에 대한 동기화 실행 순서가 중요한 것이 아니라 한 순간에 하나의 스레드만 해당 자원에 접근하도록 하는 것. 동기화 기법 1. 유저 모드의 동기화 커널의 힘을 빌리지 않는 동기화 기법 성능상 이점이 있으나, 기능상의 제한점이 존재 임계 구역 기반의 동기화 임계 구역(Critical Section) 집입을 위해 크리티컬 섹션 오브젝트를 얻는다. 열쇠를 얻은 프로세스만 임계 구역에 들어갈 수 있..
퀵 정렬(Quick Sort)
·
CS/Algorithm
퀵 정렬 Quick Sort는 분할 정복 방법을 통해 주어진 배열을 정렬한다. 분할 정복 : 문제를 작은 2개의 문제로 분리하고 각각을 해결한 다음, 결과를 모아서 원래의 문제를 해결하는 전략이다. Quick Sort는 불안정 정렬에 속하며, 다른 원소와의 비교만으로 정렬을 수행하는 비교 정렬에 속한다. Merge Sort(병합 정렬)와는 달리 Quick Sort는 배열을 비균등하게 분할한다. 개념 배열 가운데서 하나의 원소를 고른다. 이렇게 고른 원소를 피벗(pivot) 이라고 한다. 피벗 앞에는 피벗보다 값이 작은 모든 원소들이 오고, 피벗 뒤에는 피벗보다 값이 큰 모든 원소들이 오도록 피벗을 기준으로 배열을 둘로 나눈다. 이렇게 배열을 둘로 나누는 것을 분할(Divide)이라고 한다. 분할을 마친 ..
인터럽트(interrupt)
·
CS/OS
인터럽트(interrupt) 프로세스 실행 도중에 예기치 않은 상황이 발생할 때 발생한 상황을 처리한 후 실행 중인 작업으로 복귀하는 것 하드웨어 장치가 CPU에게 어떤 사실을 알려주거나 CPU의 서비스를 요청해야 할 경우, CPU 내에 있는 인터럽트 라인을 세팅하여 인터럽트를 발생시킨다. 프로그램이 명령을 수행하기 위해서는 CPU를 할당받아야 함. CPU는 매번 프로그램 카운터가 가리고 있는 곳의 명령을 수행한 뒤, 다음 명령을 수행하기 직전에 인터럽트 라인 세팅되었는지를 체크한다. 이를 통해 인터럽트가 발생했으면 CPU는 현재 수행 중이던 프로세스를 멈추고 운영 체제의 인터럽트 처리 루틴으로 이동하여 인터럽트 처리를 수행한다. 인터럽트의 종류 1.하드웨어 인터럽트 일반적인 하드웨어 인터럽트 하드웨어 ..