---
description: '윤초(leap second)를 FreeBSD에서 조절하는 방법에 대한 간단한 설명'
tags: ["Leap Seconds", "Support", "Verification", "FreeBSD"]
title: '윤초에 대한 FreeBSD의 지원'
---

= 윤초에 대한 FreeBSD의 지원
:doctype: article
:toc: macro
:toclevels: 1
:icons: font
:sectnums:
:sectnumlevels: 6
:source-highlighter: rouge
:experimental:
:images-path: articles/leap-seconds/

ifdef::env-beastie[]
ifdef::backend-html5[]
include::shared/authors.adoc[]
include::shared/mirrors.adoc[]
include::shared/releases.adoc[]
include::shared/attributes/attributes-{{% lang %}}.adoc[]
include::shared/{{% lang %}}/teams.adoc[]
include::shared/{{% lang %}}/mailing-lists.adoc[]
include::shared/{{% lang %}}/urls.adoc[]
:imagesdir: ../../../images/{images-path}
endif::[]
ifdef::backend-pdf,backend-epub3[]
include::../../../../shared/asciidoctor.adoc[]
endif::[]
endif::[]

ifndef::env-beastie[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]

'''

toc::[]

[[leapseconds-definition]]
== 소개

윤초는 실제 지구의 공전(1년)과 원자시계에 의해 동기화된 UTC간에 발생하는 특징적인 초 단위 오차입니다. 이 문서는 윤초에 대해 FreeBSD가 어떻게 대응하는지에 대해 설명하고 있습니다.

기록에 따르면, 다음 윤초는 2015년 1월 30일 23:59:60 UTC에 있을 예정입니다. 이 윤초는 전체 아메리카 대륙과 아시아 태평양 지역의 업무일 중에 발생할 것입니다.

윤초는 https://datacenter.iers.org/data/latestVersion/16_BULLETIN_C16.txt[Bulletin C]의 https://www.iers.org/IERS/EN/Home/home_node.html[IERS]에서 발표하고 있습니다.

표준적인 윤초에 대한 처리는 https://datatracker.ietf.org/doc/html/rfc7164#section-3[RFC 7164]에서 설명하고 있습니다. man:time2posix[3]를 확인해주세요.

[[leapseconds-posix]]
== FreeBSD에서 윤초의 디폴트 관리

윤초를 처리하는 가장 쉬운 방법은 extref:{handbook}[NTP, network-ntp]와 FreeBSD에서 디폴트로 사용하는 POSIX time rules FreeBSD을 병합하는 것입니다. man:ntpd[8]가 동작하고 있고 윤초를 수정하고 있는 업스트림 NTP 서버와 동기화 되어 있다면 시스템은 자동으로 하루의 마지막 날에 1초를 추가할 것입니다. 추가적으로 어떤 수정도 필요하지 않습니다.

만약 업스트림 NTP서버가 윤초를 제대로 처리하지 못한다면 man:ntpd[8]는 오류가 발생한 업스트림 서버가 인식하고 자체 단계를 밟는 것을 따라 시간을 1초씩 단축합니다.

NTP를 사용하지 않는 경우 윤초가 경과한 후 시스템 시계를 수동으로 조정해야 합니다.

[[leapseconds-cautions]]
== 주의

윤초는 전 세계적으로 UTC 자정에 동시에 삽입됩니다. 시기로는 일본은 아침, 태평양은 낮, 아메리카는 오후 늦게, 유럽은 밤에 추가됩니다.

우리는 NTP 서비스가 정확하고 안정적으로 유지되고 있다면 이전 윤초가 있었던 시기와 마찬가지로 FreeBSD 역시 윤초 동안 설계된 대로 작동할 것이라고 믿고 있습니다.

그러나 현실적으로는 어떤 응용프로그램도 커널에 윤초에 대해 요청한 적이 없다는 것을 주의해야 합니다. 우리의 경험에 따르면, 윤초는 본질적으로 윤초 전의 초를 한번 더 재생하는 것이며, 이것은 대부분 응용프로그램 개발자들에게 놀라운 일입니다.

다른 운영 체제와 컴퓨터는 FreeBSD와 동일한 방식으로 윤초를 처리할 수도 있고 그렇지 않을 수도 있으며, 정확하고 안정적인 NTP 서비스가 없는 시스템은 윤초에 대해 전혀 모를 것입니다.

윤초 때문에 컴퓨터가 충돌하는 것은 전례가 없는 일이 아니며, 경험에 따르면 모든 공용 NTP 서버 중 상당수가 윤초를 잘못 처리하고 전달할 수 있습니다.

윤초 때문에 끔찍한 일이 일어나지 않도록 주의해주세요.

[[leapseconds-testing]]
== 테스트

윤초가 사용되는지에 대한 여부는 테스트를 통해 알 수 있습니다. 이 테스트는 NTP의 특성으로 인해 윤초의 발생까지 24시간이 걸릴 수 있습니다. 몇몇 주요 기준시계의 소스는 윤초 발생 1시간 전에만 윤초를 알립니다. NTP 데몬에 다음을 질의해보세요:

[source, shell]
....
% ntpq -c 'rv 0 leap'
....

`leap_add_sec`를 포함하는 출력은 윤초를 적절하게 지원하고 있다는 것을 나타냅니다. 윤초까지 24시간 전이거나 윤초가 지났다면 `leap_none`가 표시됩니다.

[[leapseconds-conclusion]]
== 결론

일반적으로 FreeBSD에서는 윤초가 문제가 되지는 않습니다. 우리는 이 개요가 윤초 발생시 어떤 일이 있을지 예상하고 어떻게 해야 보다 부드럽게 처리할 수 있는지에 대해 도움이 되기를 바랍니다.
