hotchpotch/wikipedia-multilingual-ir-pairs huggingface dataset:
기후전환점 수학적 이론
이러한 EWS는 종종 과거의 티핑 사례를 관찰할 수 있는 퇴적물, 빙하, 나무 고리 등 고대 기록의 시계열을 사용하여 개발 및 테스트된다. AMOC 붕괴의 경우처럼 증가된 분산과 자기상관이 티핑의 전조인지 아니면 내부 변동성으로 인한 것인지 항상 말하기는 어렵다. 고대 데이터의 품질 제한은 EWS 개발을 더욱 복잡하게 만든다. 이들은 캘리포니아 숲의 가뭄으로 인한 티핑, 그리고 서남극의 파인 아일랜드 빙하의 해빙과 같은 다른 시스템들을 위해 개발되었다. 조기 경고 신호 (용융률 시계열의 증가된 자기상관 및 분산)를 사용하여 그린란드 빙상이 현재 탄력성을 잃고 있으며, 이는 빙상의 모델링된 조기 경고 신호와 일치한다는 제안이 있었다.
기후 시스템에서 인간에 의해 유발되는 변화는 너무 빨라서, 특히 관성이 있는 시스템에서는 조기 경고 신호가 명확하게 나타나지 않을 수 있다.
노이즈 유도 티핑은 시스템의 무작위 변동 또는 내부 변동성으로 인해 한 상태에서 다른 상태로 전환되는 것이다. 노이즈 유도 전환은 분기에서 발생하는 조기 경고 신호 중 어떤 것도 보여주지 않는다. 이는 근본적인 잠재력이 변하지 않기 때문에 예측할 수 없음을 의미한다. 예측할 수 없기 때문에 이러한 발생은 종종 "x년에 한 번" 발생하는 사건으로 설명된다. 예를 들어, 지난 빙하기 동안 발생한 단스가르트-외쉬거 사건은 500년 동안 25번의 급격한 기후 변동이 발생한 그린란드와 유럽의 급격한 온난화 기간이었다.
속도 유도 티핑은 환경 변화가 시스템을 안정 상태로 되돌리는 힘보다 빠를 때 발생한다. 예를 들어 이탄지에서는 수년간의 상대적 안정성 이후 속도 유도 티핑이 "이탄지에서 대기 중으로의 토양 탄소의 폭발적인 방출"로 이어질 수 있는데, 이는 때때로 "퇴비 폭탄 불안정성"으로 알려져 있다. AMOC도 속도 유도 티핑을 보일 수 있다. 해빙 속도가 너무 빨라지면, 시스템이 분기를 겪을 임계값에 도달하기 전에도 붕괴될 수 있다.
기후전환점 잠재적 영향
기후전환점은 매우 심각한 영향을 미칠 수 있다. 이는 현재 위험한 기후변화의 영향을 악화시키거나 새로운 영향을 일으킬 수 있다. 일부 잠재적 기후전환점은 인도 계절풍의 교란과 같이 수억 명의 식량 안보에 심각한 영향을 미 미치며 갑작스럽게 발생할 것이다. 다른 영향은 빙모의 해빙과 같이 더 긴 시간 척도에 걸쳐 발생할 가능성이 높다. 그린란드와 서남극의 결합된 해빙으로 인한 약 10 미터 (33 ft)의 해수면 상승은 수세기에 걸쳐 많은 도시를 내륙으로 이동시켜야 할 것이지만, 이번 세기 해수면 상승을 가속화할 것이며, 남극 빙상 불안정성은 중간 배출 시나리오에서 1억 2천만 명 이상의 사람들을 연간 홍수에 노출시킬 것으로 예상된다. 대서양 역전 순환의 붕괴는 유럽 일부 지역에서 10도 이상의 냉각을 유발하고, 유럽, 중앙아메리카, 서아프리카, 남아시아에서 건조화를 일으키며, 북대서양에서 약 1 미터 (3 1⁄2 ft)의 해수면 상승을 초래할 것이다. AMOC 붕괴의 영향은 식량 안보에 심각한 영향을 미칠 것이며, 한 예측에 따르면 대부분의 세계 지역에서 주요 작물 수확량이 감소하고, 예를 들어 영국에서는 경작 농업이 경제적으로 불가능해질 것이다. 이러한 영향은 연쇄적 기후전환점의 경우 동시에 발생할 수 있다. 지난 3만 년 동안의 급격한 변화에 대한 검토는 기후전환점이 기후, 생태 및 사회 시스템에 대한 광범위한 연쇄적 영향을 초래할 수 있음을 보여주었다. 예를 들어, 아프리카 습윤기의 급격한 종말은 연쇄 반응을 일으켜 사막화와 체제 변화로 이어져 북아프리카의 목축 사회의 후퇴와 고대 이집트의 왕조 변화를 초래했다.
기후전환점 잠재적 영향
일부 학자들은 임계점을 넘어서면 여러 기후전환점과 자가 강화 피드백 루프를 촉발하여 기후 안정을 막고, 훨씬 더 큰 온난화와 해수면 상승을 유발하며, 생태계, 사회, 경제에 심각한 혼란을 초래할 수 있는 임계값을 제안했다. 이 시나리오는 때때로 온실 지구 시나리오라고 불린다. 연구자들은 이 시나리오가 산업화 이전 수준보다 약 2°C를 넘는 임계점을 넘어설 때 전개될 수 있다고 제안했다. 그러나 이 시나리오의 존재와 이 임계값의 가치는 여전히 추측에 불과하며, 기후전환점이 단기적으로 훨씬 더 많은 온난화를 고정시킬지에 대한 의문이 제기되었다. 다음 10년간 내려지는 결정은 수십만 년 동안 지구의 기후에 영향을 미칠 수 있으며, 잠재적으로 현재 인류 사회에 부적합한 조건으로 이어질 수도 있다. 보고서는 또한 파리 협정에 명시된 온난화를 1.5–2.0 °C (2.7–3.6 °F)로 제한하는 목표가 달성되더라도 연쇄적 기후전환점이 촉발될 가능성이 있다고 명시한다.
기후전환점 지질학적 시간 척도
지질 기록은 기후전환점이 선사시대에 넘어섰을 수 있음을 시사하는 많은 급격한 변화를 보여준다. 예를 들어, 최종 빙기 동안 발생한 단스가르트-외쉬거 사건은 그린란드와 유럽에서 수십 년 내에 급격한 온난화 (수십 년 내)가 발생한 기간이었으며, 이는 주요 해류의 급격한 변화와 관련이 있을 수 있다. 초기 홀로세의 탈빙하화 동안 해수면 상승은 완만하지 않았고, 해빙수 펄스 동안 급격히 상승했다. 북아프리카 계절풍은 아프리카 습윤기 동안 수십 년 시간 척도에서 급격한 변화를 겪었다. 15,000년에서 5,000년 전까지 지속된 이 기간도 건조한 상태로 갑자기 끝났다.
폭주 온실 효과는 너무 극단적인 기후전환점으로 인해 바다가 증발하고 수증기가 우주로 탈출하여 금성에서 일어났던 돌이킬 수 없는 기후 상태가 된다. 폭주 온실 효과는 인간에 의해 발생할 가능성이 거의 없다. 지구에서 금성 같은 조건이 되려면 태양이 수십 퍼센트 더 밝아지는 큰 장기적 강제력이 필요하며, 이는 6억에서 7억 년이 걸릴 것이다.
칼싹두기
칼싹두기는 경기도 강화 지역의 향토음식으로, 메밀 반죽을 칼로 싹둑싹둑 잘라 면을 만들었다하여 칼싹두기라는 이름이 붙었다. 칼국수와 얼핏 비슷해보이지만, 점성이 떨어지는 메밀을 이용해서 면을 만들기 때문에 면이 뚝뚝 끊어져 길이와 두께가 들쭉날쭉하고 투박하다. 멸치와 바지락으로 우린 육수에 메밀면을 썰어 넣고 끓여 고명을 올려 먹는다. 메밀면에서 나오는 구수하고 걸쭉한 국물맛이 특징으로, 감칠맛이 넘치는 자극적 음식에 익숙한 요즘 사람들의 입맛에는 밍밍하다고 느낄 수 있다. 국물맛이 심심한 편이라서 김치와 함께 먹으면 맛있는데, 강화의 다른 향토음식인 알싸한 매운 맛의 개성강한 순무김치가 잘 어울린다.
강화도와 이웃한 경기도 개풍군 출신의 소설가 고 박완서의 산문집 《호미》에서 어린 시절 가족들과 먹던 칼싹두기에 대해 아래와 같이 추억하고 있다.
칼싹두기
우리 집에서 칼싹두기하면 으레 메밀로 하는 걸로 되어있었다. 밀가루로 하는 칼국수보다 면발이 넓고 두툼하고 짧아서 국수보다는 수제비에 가까웠다. 그건 아마 꼭 그렇게 해야 된다는 조리법이 있는 게 아니라 메밀가루가 밀가루보다 덜 차지기 때문에 저절로 그리 되었을 것이다. (중략) 메밀가루도 밀가루도 집에서 맷돌에 갈아 체로 친 거였으니까 요새 우리가 먹는 것보다 훨씬 거칠고 빛깔도 희지 않았다. 그 중에도 메밀은 더 누렇고 거뭇거뭇한 티도 많았다. 그걸 적당히 반죽해 다듬이 방망이로 안반에다 밀어서 칼로 썩둑썩둑 썰어서 맹물에 삶아서 약간 걸쭉해진 그 국물과 함께 한 대접씩 퍼 담는 것으로 요리 끝이었다. 따로 양념장을 곁들이지도 않고 꾸미를 얹지도 않았다. 따뜻하고 부드럽고 무던하고 구수한 메밀의 순수 그 자체였다.
주소 공간 배치 무작위화
주소 공간 배치 무작위화(address space layout randomization, ASLR)는 메모리 손상 취약점 공격을 방지하는 컴퓨터 보안 기술이다. 공격자가 예를 들어 메모리 내 특정 취약점 공격 함수로 코드 실행을 안정적으로 리디렉션하는 것을 방지하기 위해, ASLR은 실행 파일의 기반과 스택, 힙 및 라이브러리의 위치를 포함하여 프로세스의 주요 데이터 영역의 주소 공간 위치를 무작위로 배열한다. 커널에 적용될 때 이 기술은 커널 주소 공간 배치 무작위화(KASLR)라고 불린다.
주소 공간 배치 무작위화 역사
리눅스 PaX 프로젝트는 "ASLR"이라는 용어를 처음 만들었고, 2001년 7월에 리눅스 커널용 패치로 ASLR의 첫 번째 설계와 구현을 발표했다. 이는 2002년 10월부터 커널 스택 무작위화를 위한 패치를 제공하여 완전한 구현으로 평가된다.
ASLR을 기본적으로 지원한 첫 번째 주류 운영체제는 2003년의 OpenBSD 버전 3.4였고, 그 다음으로 2005년의 리눅스였다.
주소 공간 배치 무작위화 이점
주소 공간 무작위화는 공격자가 대상 주소를 예측하기 어렵게 만들어 일부 유형의 보안 공격을 방해한다. 예를 들어, Return-to-libc 공격을 실행하려는 공격자는 실행할 코드를 찾아야 하며, 스택에 삽입된 셸코드를 실행하려는 다른 공격자는 스택을 먼저 찾아야 한다. 두 경우 모두 시스템은 공격자의 관점에서 관련 메모리 주소를 예측할 수 없게 만든다. 이 값들은 추측해야 하며, 잘못된 추측은 일반적으로 애플리케이션 충돌로 인해 복구할 수 없다.
주소 공간 배치 무작위화는 공격자가 무작위로 배치된 영역의 위치를 추측할 가능성이 낮다는 점에 기반한다. 검색 공간을 늘림으로써 보안이 강화된다. 따라서 주소 공간 무작위화는 난수 오프셋에 더 많은 엔트로피가 존재할 때 더 효과적이다. 엔트로피는 무작위화가 발생하는 가상 메모리 영역 공간의 양을 늘리거나 무작위화가 발생하는 기간을 줄임으로써 증가한다. 기간은 일반적으로 가능한 한 짧게 구현되므로 대부분의 시스템은 VMA 공간 무작위화를 늘려야 한다.
주소 공간 배치 무작위화 이점
무작위화를 무력화하려면 공격자는 공격하려는 모든 영역의 위치를 성공적으로 추측해야 한다. 사용자 정의 코드나 유용한 데이터를 로드할 수 있는 스택 및 힙과 같은 데이터 영역의 경우, 코드에는 NOP 슬라이드를 사용하고 데이터에는 반복 복사본을 사용하여 둘 이상의 상태를 공격할 수 있다. 이렇게 하면 영역이 몇 가지 값 중 하나로 무작위화될 경우 공격이 성공할 수 있다. 반대로 라이브러리 기반 및 주 실행 파일과 같은 코드 영역은 정확히 발견되어야 한다. 종종 이러한 영역은 혼합되어 있으며, 예를 들어 스택 프레임이 스택에 삽입되고 라이브러리가 반환된다.
다음 변수들을 선언할 수 있다:
공격자가 성공할 확률을 계산하려면 시그니처 기반 IPS, 사법 기관 또는 다른 요인에 의해 중단되지 않고 수행된 시도 횟수 α를 가정해야 한다. 무차별 대입 공격의 경우 데몬을 다시 시작할 수 없다. 또한 관련 비트 수와 각 시도에서 공격되는 비트 수를 계산하여 공격자가 무력화해야 하는 비트 수를 남겨야 한다.
다음 공식은 N 비트 엔트로피에 대한 주어진 α 시도 집합의 성공 확률을 나타낸다.
주소 공간 배치 무작위화 이점
많은 시스템에서 은 수천 또는 수백만이 될 수 있다. 32비트 시스템에서 일반적인 엔트로피 양 N은 8비트이다. 2004년 컴퓨터 속도 기준으로 샤참(Shacham)과 동료들은 "... 16비트 주소 무작위화는 몇 분 내에 무차별 대입 공격으로 무력화될 수 있다."고 언급했다. (저자들의 주장은 지연 없이 동일한 애플리케이션을 여러 번 공격할 수 있는 능력에 따라 달라진다. grsecurity에 포함된 ASLR의 적절한 구현은 이러한 무차별 대입 공격을 불가능하게 만드는 여러 방법을 제공한다. 한 가지 방법은 실행 파일이 특정 횟수 이상 충돌한 경우 구성 가능한 시간 동안 실행을 방지하는 것이다.) 현대 64비트 시스템에서는 이 수치가 일반적으로 최소 수백만에 달한다.
주소 공간 배치 무작위화 이점
안드로이드 및 다른 시스템들은 ASLR의 한 형태인 라이브러리 로드 순서 무작위화를 구현하며, 이는 라이브러리가 로드되는 순서를 무작위화한다. 이는 매우 적은 엔트로피를 제공한다. 필요한 라이브러리당 제공되는 엔트로피 비트 수의 근사치는 아래에 나와 있으며, 이는 다양한 라이브러리 크기를 아직 고려하지 않았으므로 실제 얻는 엔트로피는 다소 더 높다. 공격자는 일반적으로 하나의 라이브러리만 필요하다. 여러 라이브러리의 경우 계산이 더 복잡하며 아래에도 나와 있다. 공격자가 하나의 라이브러리만 사용하는 경우는 일 때 더 복잡한 공식의 단순화이다.
이 값들은 l이 큰 경우에도 낮은 경향이 있는데, 가장 중요한 이유는 공격자가 일반적으로 C 표준 라이브러리만 사용할 수 있고 따라서 이라고 가정할 수 있기 때문이다. 그러나 적은 수의 라이브러리에도 불구하고 여기서 몇 비트의 엔트로피가 얻어진다. 따라서 라이브러리 로드 순서 무작위화를 VMA 주소 무작위화와 결합하여 몇 비트의 추가 엔트로피를 얻는 것은 잠재적으로 흥미롭다. 이 추가 엔트로피 비트는 다른 mmap() 세그먼트에는 적용되지 않고 라이브러리에만 적용된다.
주소 공간 배치 무작위화 이점
공격자는 단순한 정보 유출부터 공격당 여러 비트의 엔트로피를 공격하는 것(힙 스프레이 등)까지 다양한 방법을 사용하여 무작위화된 주소 공간에 존재하는 엔트로피를 감소시킬 수 있다. 이에 대해 할 수 있는 일은 거의 없다.
포맷 문자열 취약점을 이용하여 메모리 레이아웃에 대한 정보를 유출하는 것이 가능하다. printf와 같은 포맷 문자열 함수는 작업을 수행하기 위해 가변 인수 목록을 사용한다. 포맷 지정자는 인수 목록이 어떻게 생겼는지 설명한다. 인수가 일반적으로 전달되는 방식 때문에 각 포맷 지정자는 스택 프레임의 상단에 더 가까워진다. 결국 반환 포인터와 스택 프레임 포인터를 추출할 수 있으며, 이는 취약한 라이브러리의 주소와 알려진 스택 프레임의 주소를 드러내 공격자에게 장애물이었던 라이브러리 및 스택 무작위화를 제거할 수 있다.
주소 공간 배치 무작위화 이점
스택이나 힙의 엔트로피를 감소시킬 수도 있다. 스택은 일반적으로 16바이트에 정렬되어야 하므로 이것이 가능한 가장 작은 무작위화 간격이다. 반면 힙은 페이지 정렬되어야 하며, 일반적으로 4096바이트이다. 공격을 시도할 때 이러한 간격으로 중복 공격을 정렬할 수 있다. 셸코드 삽입 시 NOP 슬라이드가 사용될 수 있고, 시스템으로 반환을 시도할 때 '/bin/sh' 문자열은 임의의 개수의 슬래시로 '////////bin/sh'로 대체될 수 있다. 제거되는 비트 수는 공격된 n 간격에 대해 정확히 이다.
이러한 감소는 스택이나 힙의 데이터 양에 의해 제한된다. 예를 들어, 스택은 일반적으로 8 MB로 제한되며 훨씬 적게 증가한다. 이는 최대 19 비트를 허용하지만, 더 보수적인 추정치는 4–16 KB의 스택 스터핑에 해당하는 약 8–10 비트이다. 반면 힙은 메모리 할당자의 동작에 의해 제한된다. glibc의 경우 128KB 이상의 할당은 mmap을 사용하여 생성되므로 공격자는 5비트 감소로 제한된다. 이것은 무차별 대입 공격 시에도 제한 요인이 된다. 수행할 공격 횟수는 줄어들 수 있지만, 공격 크기가 증가하여 경우에 따라 침입 탐지 시스템에 동작이 드러날 수 있다.
ASLR로 보호되는 주소는 다양한 측면 채널을 통해 유출될 수 있어 완화 유틸리티를 제거한다. 최근 공격은 CPU 분기 예측 버퍼(BTB) 또는 메모리 관리 장치(MMU) 페이지 테이블 워킹에서 유출된 정보를 사용했다. 이러한 종류의 ASLR 공격이 완화될 수 있는지는 분명하지 않다. 완화할 수 없다면 ASLR의 이점은 감소하거나 사라진다.
2024년 8월, 리눅스, macOS, 윈도우를 포함한 주요 데스크톱 플랫폼에 대한 경험적 분석 논문이 발표되었는데, 이는 다양한 프로세스, 스레드 및 시스템 재시작에 걸쳐 메모리 객체 배치 가변성을 조사한 것이다. 결과에 따르면 2024년 현재 일부 시스템(리눅스 배포판 등)은 강력한 무작위화를 제공하지만, 윈도우 및 macOS와 같은 다른 시스템은 실행 코드 및 라이브러리와 같은 주요 영역을 적절히 무작위화하지 못하는 경우가 많다. 또한 리눅스 5.18 버전 이후 라이브러리의 엔트로피가 크게 감소했음을 발견했으며, 공격자가 공격 복잡도를 크게 줄이는 데 활용할 수 있는 상관 관계 경로를 식별했다.
주소 공간 배치 무작위화 구현
여러 주류 범용 운영체제가 ASLR을 구현하고 있다.
안드로이드 4.0 아이스크림 샌드위치는 메모리 관리 문제로 인한 취약점 공격으로부터 시스템 및 서드파티 애플리케이션을 보호하기 위해 주소 공간 배치 무작위화(ASLR)를 제공한다. 위치 독립 실행 파일 지원은 안드로이드 4.1에 추가되었다. 안드로이드 5.0은 비PIE 지원을 중단하고 모든 동적 링크 바이너리가 위치 독립적이어야 한다. 라이브러리 로드 순서 무작위화는 2015년 10월 26일 안드로이드 오픈 소스 프로젝트에 수용되었고, 안드로이드 7.0 릴리스에 포함되었다.
DragonFly BSD는 2010년에 추가된 OpenBSD 모델 기반의 ASLR을 구현하고 있다. 기본적으로 비활성화되어 있으며, sysctl vm.randomize_mmap을 1로 설정하여 활성화할 수 있다.
ASLR 지원은 FreeBSD 13.0에 등장했다. 13.2부터 기본적으로 활성화된다.
애플은 iOS 4.3(2011년 3월 출시)에 ASLR을 도입했다.
주소 공간 배치 무작위화 구현
KASLR은 iOS 6에 도입되었다. 무작위화된 커널 베이스는 0x01000000 + ((1+0xRR) * 0x00200000)이며, 여기서 0xRR은 iBoot(2단계 iOS 부트 로더)에 의해 생성된 SHA1(랜덤 데이터)의 랜덤 바이트이다.
리눅스 커널은 2005년 6월에 릴리스된 커널 버전 2.6.12부터 약한 형태의 ASLR을 기본으로 활성화했다. 리눅스 커널의 PaX 및 Exec Shield 패치셋은 더 완전한 구현을 제공한다. 리눅스용 Exec Shield 패치는 16바이트 주기의 19비트 스택 엔트로피와 4096바이트 1페이지 주기의 8비트 mmap 기반 무작위화를 제공한다. 이로 인해 스택 기반은 524,288개의 가능한 위치를 포함하는 8MB 너비의 영역에 배치되고, mmap 기반은 256개의 가능한 위치를 포함하는 1MB 너비의 영역에 배치된다.
주소 공간 배치 무작위화 구현
ASLR은 `personality(2)`를 사용하여 실행 도메인을 변경함으로써 특정 프로세스에 대해 비활성화할 수 있다. 여러 sysctl 옵션이 메인라인 ASLR의 동작을 제어한다. 예를 들어, kernel.randomize_va_space는 무작위화할 대상을 제어하며, 가장 강력한 옵션은 2이다. vm.mmap_rnd_bits는 mmap에 대해 무작위화할 비트 수를 제어한다.
위치 독립 실행 파일 (PIE)은 메인 실행 바이너리에 대한 무작위 기반 주소를 구현하며, 2004년 4월 18일부터 적용되었다. 이는 공유 라이브러리에 사용되는 것과 동일한 주소 무작위화를 메인 실행 파일에 제공한다. PIE 기능은 동일한 실행 파일에 대해 prelink 기능과 함께 사용할 수 없다. prelink 도구는 런타임이 아닌 prelink 시간에 무작위화를 구현하는데, 이는 설계상 prelink가 동적 링커가 처리하기 전에 라이브러리 재배치를 처리하여 프로그램의 여러 실행에 대해 한 번만 재배치가 발생하도록 하는 것을 목표로 하기 때문이다. 결과적으로 실제 주소 공간 무작위화는 prelink의 목적을 무효화한다.
주소 공간 배치 무작위화 구현
2014년에 마르코-기스베르트(Marco-Gisbert)와 리폴(Ripoll)은 PIE 실행 파일에 대한 리눅스 ASLR을 약화시키는 offset2lib 기술을 공개했다. 리눅스 커널은 PIE 실행 파일을 라이브러리 바로 다음에 로드한다. 결과적으로 실행 파일과 라이브러리 함수 사이에 고정된 오프셋이 존재한다. 공격자가 실행 파일 내 함수의 주소를 찾는 방법을 찾으면 라이브러리 주소도 알려지게 된다. 그들은 400번 미만의 시도로 주소를 찾는 공격을 시연했다. 그들은 실행 파일의 라이브러리 상대적 배치를 무작위화하기 위한 새로운 randomize_va_space=3 옵션을 제안했지만, 2024년 현재까지 업스트림에 통합되지 않았다.
주소 공간 배치 무작위화 구현
2022년 5월에 릴리스된 리눅스 커널 5.18은 32비트 및 64비트 구현의 효율성을 감소시켰다. 리눅스 파일 시스템은 파일 지원 mmap에 응답하기 위해 `thp_get_unmapped_area`를 호출한다. 5.18의 변경으로 2MB보다 큰 파일은 2MB 정렬 주소를 반환하도록 하여 거대 페이지에 의해 잠재적으로 지원될 수 있도록 했다. (이전에는 증가된 정렬이 DAX(Direct Access) 매핑에만 적용되었다.) 그동안 C 라이브러리(libc)는 시간이 지남에 따라 크기가 이 2MB 임계값을 초과하게 되었고, 이로 인해 이 라이브러리들은 이전처럼 (일반적으로) 4KB 페이지 경계에 정렬되는 대신 이제 2MB 정렬되어 9비트의 엔트로피 손실이 발생했다. 32비트 리눅스의 경우 많은 배포판에서 libc 배치에 무작위화가 전혀 나타나지 않는다. 64비트 리눅스의 경우 28비트의 엔트로피가 19비트로 감소했다. 이에 대응하여 우분투는 mmap_rnd_bits 설정을 늘렸다. 마틴 두샤(Martin Doucha)는 이 문제를 감지하기 위한 리눅스 테스트 프로젝트 테스트 케이스를 추가했다.
주소 공간 배치 무작위화 구현
커널 주소 공간 배치 무작위화(KASLR)는 부팅 시 커널 코드 배치 위치를 무작위화하여 리눅스 커널 이미지에 대한 주소 공간 무작위화를 가능하게 한다. KASLR은 2014년 3월 30일에 릴리스된 커널 버전 3.14에서 리눅스 커널 메인라인에 병합되었다. 컴파일되면 커널의 부트 매개변수 중 하나로 nokaslr을 지정하여 부팅 시 비활성화할 수 있다.
x86 프로세서에는 커널 주소를 유출할 수 있는 여러 부채널 공격이 존재한다. 2017년 말, 이러한 공격을 무력화하기 위해 커널 페이지 테이블 격리 (KPTI, 일명 KAISER)가 개발되었다. 그러나 이 방법은 분기 예측기 구조의 충돌을 이용하는 부채널 공격으로부터 보호할 수 없다.
2021년 기준, 세분화된 커널 주소 공간 배치 무작위화(또는 함수 단위 KASLR, FGKASLR)는 KASLR의 확장으로, 함수를 별도의 섹션에 배치하고 부팅 시 재정렬하여 함수 수준까지 무작위화하는 것을 계획하고 있다.
주소 공간 배치 무작위화 구현
마이크로소프트의 윈도우 비스타 (제조 출시 2006년 11월, 일반 출시 2007년 1월) 및 이후 버전은 ASLR을 ASLR 활성화에 특별히 링크된 실행 파일 및 동적 링크 라이브러리에만 활성화한다. 호환성을 위해 다른 애플리케이션에는 기본적으로 활성화되어 있지 않다. 일반적으로 오래된 소프트웨어만 호환되지 않으며, 레지스트리 항목 HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\MoveImages를 편집하거나, 마이크로소프트의 EMET을 설치하여 ASLR을 완전히 활성화할 수 있다.
힙, 스택, 프로세스 환경 블록, 그리고 Win32 스레드 정보 블록의 위치도 무작위화된다. 시만텍의 보안 백서에 따르면 32비트 윈도우 비스타의 ASLR은 예상만큼 강력하지 않을 수 있으며, 마이크로소프트는 구현상의 약점을 인정했다.
WehnTrust 및 Ozone과 같은 호스트 기반 침입 차단 시스템도 윈도우 XP 및 윈도우 서버 2003 운영체제에 ASLR을 제공한다. WehnTrust는 오픈 소스이다. Ozone의 구현에 대한 완전한 세부 정보는 제공되지 않는다.
주소 공간 배치 무작위화 구현
2012년 2월에 윈도우 8 이전의 32비트 윈도우 시스템에서 ASLR의 효과가 메모리 부족 상황에서 감소될 수 있다는 점이 지적되었다. 비슷한 효과가 동일한 연구에서 리눅스에서도 달성되었다. 테스트 코드는 Mac OS X 10.7.3 시스템에서 커널 패닉을 일으켰으므로 이 시나리오에서의 ASLR 동작은 불분명하게 남았다.
사용자 영역의 ASLR 지원은 NetBSD 5.0(2009년 4월 릴리스)에 나타났으며, 2016년 4월 NetBSD-current에서 기본으로 활성화되었다.
amd64의 커널 ASLR 지원은 2017년 10월 NetBSD-current에 추가되어, NetBSD는 KASLR을 지원하는 최초의 BSD 시스템이 되었다.
2003년, OpenBSD는 강력한 형태의 ASLR을 지원하고 기본적으로 활성화한 최초의 주류 운영체제가 되었다.
OpenBSD는 PIE 바이너리 지원을 추가하여 2008년에 ASLR 지원을 완료했다. OpenBSD 4.4의 malloc(3)은 OpenBSD의 `mmap` 시스템 호출의 일부로 구현된 ASLR 및 갭 페이지 기능을 활용하여 보안을 향상시키고 use-after-free 버그를 감지하도록 설계되었다. 2013년에 릴리스된 OpenBSD 5.3은 여러 하드웨어 플랫폼에서 기본적으로 위치 독립 실행 파일을 활성화한 최초의 주류 운영체제였으며, OpenBSD 5.7은 기본적으로 위치 독립 정적 바이너리(Static-PIE)를 활성화했다.
맥 OS X 레퍼드 10.5(2007년 10월 릴리스)에서 애플은 시스템 라이브러리에 대한 무작위화를 도입했다.
맥 OS X 라이언 10.7(2011년 7월 릴리스)에서 애플은 "모든 애플리케이션에 대해 주소 공간 배치 무작위화(ASLR)가 향상되었습니다. 이제 32비트 앱에도 (힙 메모리 보호와 함께) 사용할 수 있어 64비트 및 32비트 애플리케이션 모두 공격에 더욱 강력해졌습니다."라고 밝히며 구현을 모든 애플리케이션으로 확장했다.
OS X 마운틴 라이언 10.8(2012년 7월 릴리스)부터는 커널, kext 및 영역을 포함한 전체 시스템이 시스템 부팅 중에 무작위로 재배치된다.
ASLR은 솔라리스 11.1 (2012년 10월 릴리스)부터 솔라리스에 도입되었다. 솔라리스 11.1의 ASLR은 시스템 전체, 존별, 또는 바이너리별로 설정할 수 있다.
주소 공간 배치 무작위화 취약점 공격
분기 예측 버퍼를 활용한 부채널 공격이 ASLR 보호를 우회하는 것으로 시연되었다. 2017년에는 자바스크립트를 사용하여 웹 브라우저에서 ASLR을 무력화할 수 있는 "ASLR⊕Cache"라는 공격이 시연되었다.
초크랄스키법
초크랄스키법(Czochralski method) 또는 초크랄스키 공정(Czochralski process)은 단결정 (모노크리스탈)을 얻는 데 사용되는 결정 성장 방법이다. 반도체 (예: 규소, 저마늄, 비소화 갈륨), 금속 (예: 팔라듐, 백금, 은, 금), 염 및 합성 보석에 사용된다. 이 방법은 금속의 결정화 속도를 조사하던 중 1915년에 이 방법을 발명한 폴란드 과학자 얀 초크랄스키의 이름을 따서 명명되었다. 그는 우연히 이 발견을 했는데, 펜을 잉크병에 담그는 대신 녹은 주석에 담그어 주석 필라멘트를 만들었고, 이것이 나중에 단결정임이 밝혀졌다. 오늘날 모든 반도체 장치의 약 90%가 이 방법으로 얻은 재료를 사용하기 때문에 이 공정은 경제적으로 중요하다.
가장 중요한 응용 분야는 집적 회로와 같은 반도체 소자를 만드는 데 전자 산업에서 사용되는 대형 원통형 주괴 또는 볼의 단결정 실리콘을 성장시키는 것이다. 비소화 갈륨과 같은 다른 반도체도 이 방법으로 성장시킬 수 있지만, 이 경우 브리지만-스톡바거법의 변형을 사용하면 결함 밀도가 더 낮아질 수 있다. 탄화 규소와 같은 다른 반도체는 물리 증기 수송과 같은 다른 방법을 사용하여 성장시킨다.
초크랄스키법
이 방법은 금속 또는 준금속 결정 생산에만 국한되지 않는다. 예를 들어, 입자 물리학 실험에 사용하기 위해 동위원소 조성이 제어된 재료를 포함하여 매우 고순도의 염 결정을 제조하는 데 사용되며, 제조 과정에서 혼란을 야기하는 금속 이온과 흡수된 물에 대한 엄격한 제어(10억분의 1 측정)가 이루어진다.
초크랄스키법 역사
얀 초크랄스키는 1916년 독일 아에게에서 금속의 결정화 속도를 연구하던 중 자신의 방법을 발명했다. 1918년에 처음 보고된 그의 기술은 용융물에서 물질을 인출하여 단결정을 성장시키는 기초를 형성했다. 1923년까지 이 방법의 수정은 주로 베를린 기반 그룹에 국한되었다.
그 직후인 1925년, 아이오와 대학교의 E.P.T. 틴달 그룹은 초크랄스키법을 사용하여 거의 10년 동안 아연 결정을 성장시켰다. 이 초기 결정은 최대 직경 약 3.5mm, 길이 최대 35cm에 달했다.
기본 공정의 개발은 1937년 벨 전화 연구소의 헨리 월터에 의해 완료되었다. 월터는 열 비대칭을 보상하는 기술인 결정 회전을 도입하고 조절 가능한 가스 흐름을 통해 동적 냉각 제어를 구현했다. 그의 혁신은 결정 모양과 직경에 대한 정밀한 제어를 가능하게 했고, 염화나트륨과 같은 고융점 재료를 포함한 진정한 벌크 결정의 첫 성장을 허용했다. 월터의 작업은 현대 초크랄스키 공정의 토대를 마련했다.
초크랄스키법 역사
제2차 세계 대전 이후 반도체의 전략적 중요성으로 인해 당시 벨 연구소에 근무하던 고든 키드 틸은 단결정 성장을 위해 초크랄스키법을 부활시켰다. 1950년대 초, 트랜지스터 기술의 새로운 수요를 충족시키기 위해 고품질의 저마늄 결정이 성장되었고, 곧이어 규소 결정이 생산되었다. 이 재부상은 미국에서 이 기술의 사용이 급속히 확대되는 시작을 알렸다.
초크랄스키법의 채택은 1950년대 후반에 국제적으로 확대되었다. 유럽에서는 독일이 1952년에 반도체 결정에 이 기술을 사용했으며, 1953년 프랑스, 1956년 영국과 러시아, 1957년 체코, 그리고 마침내 1959년 스위스와 네덜란스가 뒤를 이었다. 일본에서는 1959년에 이 기술이 사용되기 시작했으며, 1960년대 동안 그 응용과 기술 개선이 가속화되었다.
초크랄스키법 역사
이 기간 동안 초크랄스키법을 더욱 개선한 몇 가지 주요 공정 수정이 도입되었다. • 핫월 기술 (약 1956년)은 용융물에서의 증발 손실을 줄였다. • 연속 용융 공급 방법 (약 1956년)은 용융물 조성을 안정화했다. • 액체 밀봉 초크랄스키(LEC) 기술 (1962년 도입)은 휘발성 성분의 증발을 억제하여 화합물 반도체 결정의 성장을 가능하게 했다. • 결정 또는 도가니 무게 측정을 이용한 자동 직경 제어 (1972-73년 도입)는 결정 치수의 보다 정밀한 조절을 가능하게 했다.
이러한 혁신은 초크랄스키 공정의 다용성을 확장하여 다양한 재료에 걸쳐 고품질 단결정의 산업 규모 생산을 위한 길을 열었다.
초크랄스키법 응용
초크랄스키법으로 성장시킨 단결정 실리콘 (단결정-Si)은 종종 단결정 초크랄스키 규소 (Cz-Si)라고 불린다. 이것은 컴퓨터, TV, 휴대폰 및 모든 유형의 전자 장비와 반도체 소자에 사용되는 집적 회로 생산의 기본 재료이다. 단결정 규소는 또한 태양광 산업에서 재래식 단결정-Si 태양 전지 생산을 위해 대량으로 사용된다. 거의 완벽한 결정 구조는 규소에 대해 가장 높은 빛-전기 변환 효율을 제공한다.
초크랄스키 공정의 사용은 반도체 재료에만 국한되지 않는다. 고품질 광학 결정 및 합성 보석 성장에도 광범위하게 활용된다. 이 방법은 다양한 광학 응용 분야에 적합한 크고 고순도의 결정을 생산할 수 있게 한다. 예를 들어, 알렉산드라이트의 일종인 합성 금록석은 일반적으로 이 기술을 사용하여 생산된다. 또한, 합성 사파이어 (강옥)도 초크랄스키 공정을 통해 자주 성장된다. 게다가 인공 석류석인 이트륨 알루미늄 석류석 (YAG)도 이 방법으로 합성되었다. YAG 결정은 다이아몬드 대체물로 그리고 다양한 광학 응용 분야에서 사용되며, 이 공정이 크고 고순도의 결정을 생산하는 능력에서 이점을 얻는다.
초크랄스키법 초크랄스키 규소 생산
반도체 등급의 규소(불순물이 백만분의 몇에 불과함)는 일반적으로 고순도 석영으로 만들어진 도가니에서 1,425 °C (2,597 °F; 1,698 K)로 녹인다. 도가니에는 고순도 폴리실리콘으로 구성된 충전물이 담긴다. 붕소 또는 인과 같은 도펀트 불순물 원자는 정확한 양으로 녹은 규소에 첨가되어 규소를 도핑하여 서로 다른 전자적 특성을 가진 p형 또는 n형 규소로 바꿀 수 있다. 정밀하게 정렬된 막대 장착 씨앗 결정이 녹은 규소에 담긴다. 씨앗 결정의 막대는 천천히 위로 당겨지고 동시에 회전한다. 온도 기울기, 당기는 속도 및 회전 속도를 정밀하게 제어함으로써 녹은 물질에서 크고 단일 결정의 원통형 주괴를 추출할 수 있다. 결정 성장 과정 중 온도 및 속도장을 조사하고 시각화함으로써 용융물에서 원치 않는 불안정성의 발생을 피할 수 있다. 이 과정은 일반적으로 아르곤과 같은 비반응성 기체 분위기에서 석영과 같은 비반응성 챔버에서 수행된다. 석영 도가니는 일반적으로 배치 공정이라고 알려진 단일 주괴가 생산된 후 공정이 종료되면 폐기되지만, 이 과정을 지속적으로 수행할 수도 있고 자기장을 적용하여 수행할 수도 있다.
초크랄스키법 결정 크기
규모의 효율성 때문에 반도체 산업은 종종 표준화된 치수, 즉 일반적인 웨이퍼 사양을 사용한다. 초창기에는 잉곳이 작아서 폭이 몇 센티미터에 불과했다. 첨단 기술로 인해 고급 장치 제조업체는 직경 200mm 및 300mm 웨이퍼를 사용한다. 폭은 온도, 회전 속도, 씨앗 홀더가 인출되는 속도를 정밀하게 제어하여 조절한다. 웨이퍼가 잘려지는 결정 잉곳은 길이가 최대 2미터에 달하고 무게는 수백 킬로그램에 이른다. 더 큰 웨이퍼는 제조 효율성을 향상시킨다. 각 웨이퍼에서 더 많은 칩을 제조할 수 있고 상대적 손실이 적기 때문에 규소 웨이퍼 크기를 늘리려는 꾸준한 노력이 있어왔다. 다음 단계인 450mm는 2018년에 도입될 예정이었다. 규소 웨이퍼는 일반적으로 두께가 약 0.2-0.75mm이며, 집적 회로를 만들기 위해 매우 평평하게 연마하거나 태양 전지를 만들기 위해 질감을 줄 수 있다.
초크랄스키법 불순물 혼입
규소는 초크랄스키법으로 성장시킬 때 녹은 물질은 실리카 (석영) 도가니에 담겨 있다. 성장하는 동안 도가니의 벽은 녹은 물질에 용해되어 초크랄스키 규소는 일반적으로 1018 cm−3의 농도로 산소를 포함한다. 산소 불순물은 유익하거나 해로운 영향을 미칠 수 있다. 신중하게 선택된 어닐링 조건은 산소 석출 형성을 유발할 수 있다. 이는 게터링으로 알려진 과정에서 원치 않는 전이 금속 불순물을 포착하여 주변 규소의 순도를 향상시키는 효과가 있다. 그러나 의도하지 않은 위치에 산소 석출이 형성되면 전기적 구조를 파괴할 수도 있다. 또한 산소 불순물은 소자 공정 중 도입될 수 있는 전위를 고정시켜 규소 웨이퍼의 기계적 강도를 향상시킬 수 있다. 1990년대에는 높은 산소 농도가 가혹한 방사선 환경(예: CERN의 LHC/HL-LHC 프로젝트)에서 사용되는 규소 입자 검출기의 방사선 내성에도 유익하다는 것이 실험적으로 입증되었다. 따라서 초크랄스키 및 자기 초크랄스키 규소로 만든 방사선 검출기는 많은 미래의 고에너지 물리 실험에 유망한 후보로 간주된다. 또한 규소 내 산소의 존재가 이온 주입 후 어닐링 과정에서 불순물 포획을 증가시킨다는 것이 밝혀졌다.
초크랄스키법 불순물 혼입
하지만 산소 불순물은 태양전지가 겪는 것과 같은 조명 환경에서 붕소와 반응할 수 있다. 이로 인해 전기적으로 활성인 붕소-산소 복합체가 형성되어 전지 성능을 저하시킨다. 모듈 출력은 빛 노출 후 처음 몇 시간 동안 약 3% 감소한다.
최종 고체 내 불순물 농도는  로 주어진다. 여기서 C와 C0는 (각각) 초기 농도와 최종 농도이고, V와 V0는 초기 부피와 최종 부피이며, k는 용융 상전이 시 불순물과 관련된 분리 계수이다. 이는 무한소 부피 dV가 얼어붙을 때  불순물이 녹은 물질에서 제거된다는 사실에서 비롯된다.
인라인 어셈블러
인라인 어셈블러(inline assembler)는 컴퓨터 프로그래밍에서 일부 컴파일러의 기능으로, 어셈블리어로 작성된 저수준 코드를 C 또는 에이다와 같은 고급 언어에서 컴파일된 코드 내부에 삽입할 수 있게 해준다.
인라인 어셈블러 동기 및 대안
어셈블리어 코드 삽입은 일반적으로 다음과 같은 이유 중 하나로 수행된다.
프로세서별 명령어에 대한 접근: 대부분의 프로세서는 비교와 교환 및 검사와 지정 명령어와 같은 특수 명령어를 제공하며, 이를 사용하여 세마포어 또는 기타 동기화 및 잠금 기본 요소를 구축할 수 있다. 거의 모든 현대 프로세서는 이러한 또는 유사한 명령어를 가지고 있는데, 이는 다중작업을 구현하는 데 필요하기 때문이다. 특수 명령어의 예로는 SPARC VIS, 인텔 MMX 및 SSE, 그리고 모토로라 Altivec 명령어 집합이 있다.
반면에 인라인 어셈블러는 각 변수에 대해 수행되는 작업의 분석을 복잡하게 만들어 레지스터 할당의 핵심 부분에 직접적인 문제를 제기한다. 이는 실제로 성능이 저하될 수 있음을 의미한다. 인라인 어셈블러는 또한 프로그램의 향후 포팅 및 유지 보수를 복잡하게 만든다.
컴파일러와 프로그래머 모두의 작업을 단순화하기 위한 대안적인 기능이 종종 제공된다. 특수 명령어를 위한 내장 함수는 대부분의 컴파일러에서 제공되며, 임의의 시스템 호출을 위한 C-함수 래퍼는 모든 유닉스 플랫폼에서 사용할 수 있다.
인라인 어셈블러 문법
ISO C++ 표준 및 ISO C 표준(부록 J)은 인라인 어셈블러에 대해 조건부로 지원되는 구문을 지정한다.
asm 선언은 다음 형식을 갖는다.
  asm-declaration:
     asm ( string-literal ) ;
asm 선언은 조건부로 지원되며, 그 의미는 구현 정의이다.
그러나 이 정의는 실제 C에서 거의 사용되지 않는데, 이는 동시에 너무 자유롭고(해석에 있어서) 너무 제한적이기(하나의 문자열 리터럴만 사용) 때문이다.
실제로 값에 대해 작동하는 인라인 어셈블리는 자유롭게 떠다니는 코드로는 거의 독립적으로 존재하지 않는다. 프로그래머는 변수가 어떤 레지스터에 할당될지 예측할 수 없으므로, 컴파일러는 일반적으로 확장 기능을 통해 변수를 대체하는 방법을 제공한다.
일반적으로 C/C++ 컴파일러에서 지원하는 인라인 어셈블리에는 두 가지 유형이 있다.
인라인 어셈블러 문법
Microsoft 비주얼 C++ (MSVC), Borland/Embarcadero C 컴파일러 및 그 파생 제품의 __asm. 이 구문은 ISO 규칙에 전혀 기반하지 않는다. 프로그래머는 C 언어의 문법에 따를 필요 없이 블록 내부에 ASM을 작성한다. 변수는 레지스터처럼 사용 가능하며 일부 C 표현식이 허용된다. ARM 컴파일러도 유사한 기능을 가지고 있었다.
두 가지 확장 패밀리는 인라인 어셈블리를 처리하는 노동 분할에 대한 다른 이해를 나타낸다. GCC 형식은 언어의 전체 구문을 보존하고 컴파일러가 알아야 할 것(무엇이 필요하고 무엇이 변경되는지)을 구획화한다. 컴파일러는 레지스터 할당과 몇 가지 mov 작업만 대체하여 입력 요구 사항을 처리하면 되므로, 명령어 이름을 명시적으로 이해할 것을 요구하지 않는다. 그러나 사용자가 클로버된 레지스터를 잘못 지정하기 쉽다. 포함된 도메인 특화 언어인 MSVC 형식은 작성하기 쉽지만, 컴파일러 자체가 opcode 이름과 그 클로버링 속성에 대해 알아야 하므로 유지 보수 및 포팅에 추가적인 주의가 필요하다. 명령어 집합에 대한 지식으로 GCC 스타일 어셈블리의 클로버 오류를 확인하는 것은 여전히 가능하다.
인라인 어셈블러 문법
GNAT (GCC 스위트의 에이다 언어 프론트엔드)와 LLVM은 GCC 구문을 사용한다. D 프로그래밍 언어는 x86_64에 대해 공식적으로 MSVC 확장과 유사한 DSL을 사용하지만, LLVM 기반 LDC는 모든 아키텍처에서 GCC 스타일 구문도 제공한다. MSVC는 32비트 X86에서만 인라인 어셈블러를 지원한다.
러스트 언어는 LLVM (GCC 스타일) 버전보다 인라인 어셈블리 옵션을 더욱 추상화하는 구문으로 마이그레이션했다. 백엔드가 내장 어셈블리를 처리할 수 없는 경우 블록을 외부에서 어셈블된 함수로 변환할 수 있도록 충분한 정보를 제공한다.
인라인 어셈블러 예시
보호된 메모리를 사용하는 시스템에서는 운영 체제를 직접 호출하는 것이 일반적으로 불가능하다. OS는 사용자(사용자 모드)보다 더 특권이 있는 수준(커널 모드)에서 실행되며, 운영 체제에 요청을 하기 위해 (소프트웨어) 인터럽트가 사용된다. 이는 고급 언어에서는 드문 기능이므로, 시스템 호출을 위한 래퍼 함수는 인라인 어셈블러를 사용하여 작성된다.
다음 C 코드 예시는 GNU 어셈블러를 사용하여 AT&T 어셈블러 문법으로 작성된 X86 시스템 호출 래퍼를 보여준다. 이러한 호출은 일반적으로 매크로의 도움을 받아 작성되지만, 명확성을 위해 전체 코드가 포함되었다. 이 특정 경우에 래퍼는 호출자가 지정한 번호의 시스템 호출을 세 개의 피연산자와 함께 수행하고 결과를 반환한다.
인라인 어셈블러 예시
요약하자면, GCC는 기본 어셈블리와 확장 어셈블리 모두를 지원한다. 전자는 텍스트를 어셈블러에 그대로 전달하는 반면, 후자는 레지스터 위치에 대한 일부 대체 작업을 수행한다.
D 프로그래밍 언어의 인라인 어셈블리 예시는 X86의 FPU (X87) 명령어를 사용하여 x의 탄젠트를 계산하는 코드를 보여준다.
fstsw-sahf 뒤에 조건 점프 관용구를 사용하여 x87 FPU 상태 워드 비트 C0 및 C2에 접근한다. fstsw는 상태를 범용 레지스터에 저장하고, sahf는 FLAGS 레지스터를 레지스터의 상위 8비트로 설정하며, 점프는 FPU 상태 비트에 해당하는 플래그 비트를 판단하는 데 사용된다.
얀 초크랄스키
얀 초크랄스키(Jan Czochralski, 1885년 10월 23일 – 1953년 4월 22일)는 단결정 성장 및 반도체 웨이퍼 생산에 사용되는 초크랄스키법을 발명한 폴란드의 화학자이다. 이 방법은 현재 전 세계 반도체를 사용하는 모든 전자 제품의 90% 이상에서 여전히 사용되고 있다. 그는 가장 많이 인용된 폴란드 학자이다.
초크랄스키가 바르샤바 봉기 때까지 두 명의 유대인 여성을 독일인으로부터 구하기 위해 자신의 집에 숨겨주었다는 증거가 있으며, 그가 게토의 이전에 유대인이 소유했던 사업체를 재정적으로 돕는 데 중요한 역할을 했다는 증거도 있다.
얀 초크랄스키 삶과 경력
초크랄스키는 당시 독일 제국 프로이센 포젠주의 크치니아 (현재 폴란드 크치니아)에서 태어났다. 1900년경 그는 베를린으로 이주하여 약학 분야에서 일했다. 그는 샤를로텐부르크의 베를린 공과대학교에서 교육을 받았으며, 그곳에서 금속 화학을 전공했다. 초크랄스키는 1907년 아에게에서 공학자로 일하기 시작했다.
얀 초크랄스키 삶과 경력
그는 1916년에 잉크병 대신 녹은 주석 도가니에 실수로 펜을 담그면서 초크랄스키법을 발견했다. 그는 즉시 펜을 빼내어 펜촉에서 얇은 응고된 금속 실이 매달려 있는 것을 발견했다. 펜촉은 모세관으로 대체되었고, 초크랄스키는 결정화된 금속이 단결정임을 확인했다. 초크랄스키의 실험은 직경 1mm, 길이 최대 150cm의 단결정을 생산했다. 그는 1918년 독일 화학 저널인 Zeitschrift für Physikalische Chemie에 "Ein neues Verfahren zur Messung der Kristallisationsgeschwindigkeit der Metalle" [금속의 결정화 속도 측정에 대한 새로운 방법]이라는 제목으로 자신의 발견에 대한 논문을 발표했다. 당시 이 방법은 주석, 아연, 납과 같은 금속의 결정화 속도를 측정하는 데 사용되었기 때문이다. 1948년, 벨 연구소의 미국인 고든 K. 티얼과 J.B. 리틀은 이 방법을 사용하여 단일 저마늄 결정을 성장시켜 반도체 생산에 사용하게 되었다.
얀 초크랄스키 삶과 경력
1917년 초크랄스키는 연구소 "Metallbank und Metallurgische Gesellschaft"를 설립하여 1928년까지 운영했다. 1919년 그는 독일 금속학회(Deutsche Gesellschaft für Metallkunde)의 창립 회원 중 한 명이었으며, 1925년까지 회장을 역임했다. 1924년 초크랄스키는 B-메탈로 알려진 합금에 대한 특허를 냈는데, 이는 값비싼 주석을 포함하지 않아 철도 차량용 베어링 제조에 완벽했다. 독일 철도청이 이 특허를 처음으로 구매한 기관이었다. B-메탈은 열차가 더 빠른 속도로 이동할 수 있게 해주었으며, 독일, 폴란드, 미국, 영국, 소련의 철도 운송 발전에 중요한 역할을 했다. 초크랄스키의 업적은 그에게 국제적인 인정을 가져다주었다. 1925년 그는 독일 금속학자 협회의 회장이 되었다. 그는 또한 헨리 포드의 초청으로 그의 공장을 방문하고 새로운 알루미늄 공장의 이사직을 제안받았지만, 초크랄스키는 거절했다.
1928년 폴란드 대통령 이그나치 모시치츠키의 요청으로 그는 폴란드로 이주하여 바르샤바 공과대학교 화학과의 금속공학 및 금속 연구 교수로 임명되었다. 그는 또한 그 대학의 명예 학위를 받은 최초의 인물 중 한 명이 되었다. 1930년대 그의 연구소는 군사 무기 및 일부 민간용 재료 연구에 사용되는 새로운 장비와 시설을 확보했다. 독일의 폴란드 침공 이후, 고위 독일 관리들이 그의 시설을 자신들의 목적으로 사용하기를 희망하며 그를 방문했다. 독일의 바르샤바 점령 기간 동안 인구에 대한 일상생활 제한이 더욱 강화되었지만, 초크랄스키는 대체로 방해받지 않고 살 수 있었다.
제2차 세계 대전 이후, 그는 전쟁 중 독일에 협력했다는 이유로 공산 정권에 의해 교수직을 박탈당했지만, 나중에 폴란드 법원에 의해 어떠한 불법 행위도 없었음이 밝혀졌다. 그는 고향인 크치니아로 돌아와 1953년 사망할 때까지 작은 화장품 및 가정용 화학 제품 회사를 운영했다.
얀 초크랄스키 기념
그를 기념하기 위해 폴란드 여러 곳이 초크랄스키의 이름을 따서 명명되었는데, 그단스크, 포즈난, 비드고슈치, 브로츠와프와 같은 도시의 학교와 거리들이 그 예이다.
2004년 유럽 재료 연구 학회는 폴란드 과학자를 기리기 위해 재료과학 공헌자에게 수여하는 얀 초크랄스키 금메달을 제정했다.
2009년 포츠카 폴스카는 4종의 기념 우표를 발행했다. PLN 1.55권의 우표에는 초크랄스키가 그려져 있었다.
2012년 폴란드 하원은 2013년을 "얀 초크랄스키의 해"로 지정하는 결의안을 통과시켰다.
2016년 카토비체 실레시아 대학교의 우카시 카르보프스키와 아담 미츠키에비치 대학교의 안제이 무신스키가 이끄는 폴란드 광물학자 팀은 새로 발견된 광물인 초크랄스키석을 폴란드 화학자의 이름을 따서 명명했다. 이 광물은 모라스코 운석 자연 보호 구역에서 과학 연구 중에 발견되었다.
얀 초크랄스키 기념
2018년 마체이 야신스키와 야첵 미할스키의 만화책 "얀 초크랄스키. 세상을 바꾼 사람 (폴란드어: "Jan Czochralski. Człowiek, który zmienił świat")"이 공식 출판되었다.
2019년 초크랄스키의 과학적 업적을 기리는 기념 IEEE 마일스톤 명판이 바르샤바 공과대학교에서 공식적으로 공개되었다.
2019년 토룬의 지식 혁신 센터 앞 광장이 초크랄스키를 기리기 위해 명명되었다.
얀 초크랄스키 시민권
얀 초크랄스키는 독일 시민권을 포기했다. 그의 형은 제2차 세계 대전 초기에 독일인들에게 살해당했다.
공리적 의미론
공리적 의미론(axiomatic semantics)은 수리논리학을 기반으로 컴퓨터 프로그램의 정확성을 증명하는 접근 방식이다. 이는 호어 논리와 밀접하게 관련되어 있다.
공리적 의미론은 프로그램 상태에 대한 단언에 미치는 영향을 기술함으로써 프로그램 내 명령의 의미를 정의한다. 단언은 논리적 진술, 즉 변수가 있는 술어이며, 변수는 프로그램의 상태를 정의한다.
데일리 빌드
데일리 빌드(daily build), 일일 빌드 또는 나이틀리 빌드(nightly build), 야간 빌드는 소프트웨어 시스템의 최신 버전에 대한 빌드로, 매일/야간 자동으로 실행된다.
이는 모든 필수 의존성이 존재하는지 확인하기 위해 먼저 컴파일될 수 있도록 하며, 버그가 발생하지 않았음을 보여주기 위해 테스트될 수도 있다. 데일리 빌드는 또한 최신 기능에 대한 피드백을 제공하기 위해 종종 공개적으로 제공된다.
이러한 맥락에서 빌드는 컴파일 및 링킹을 통해 프로그램을 구성하는 모든 파일을 합쳐서 만든 결과물이다. 데일리 빌드와 같은 규율적인 절차의 사용은 많은 프로그래머가 하나의 소프트웨어를 개발하는 대규모 조직에서 특히 필요하다. 데일리 빌드를 수행하면 개발자는 지난 하루 동안 자신의 작업으로 인해 새로운 버그가 발생했음을 합리적인 확실성으로 알면서 작업할 수 있다.
데일리 빌드에는 일반적으로 "스모크 테스트"라고 불리는 일련의 테스트가 포함된다. 이러한 테스트는 최신 빌드에 포함된 변경 사항으로 인해 무엇이 손상되었는지 파악하는 데 도움이 된다. 이 과정의 중요한 부분은 프로젝트가 진행됨에 따라 새롭고 수정된 테스트를 포함하는 것이다.
데일리 빌드 지속적 통합 빌드
1990년대에는 데일리 빌드가 소프트웨어 개발의 모범 사례로 간주되었지만, 이제는 구식으로 여겨진다. 지속적 통합은 이제 거의 지속적으로 실행되며, 소스 코드의 마지막 변경 이후 일반적인 주기 시간은 약 20-30분이다. 지속적 통합 서버는 소스 코드 관리 시스템을 지속적으로 모니터링한다. 이러한 서버는 새로운 변경 사항을 감지하면 빌드 도구를 사용하여 소프트웨어를 재구축한다. 오늘날의 좋은 관행은 지속적 통합을 지속적 테스트의 일부로 사용하는 것이므로, 각 빌드마다 단위 테스트를 다시 실행하고, 빌드보다 시간이 더 오래 걸리는 광범위한 기능 테스트는 허용되는 빈도로 자주 수행한다.