hotchpotch/wikipedia-multilingual-ir-pairs huggingface dataset:
듀이 십진분류 목록 분류 200 – 종교
280 기독교 교파
280 기독교 교회의 기독교의 교파 및 분파
281 초기 기독교 및 동방 기독교
282 로마 가톨릭교회
283 성공회 교회
284 대륙 기원의 개신교 교파 (루터교회, 개혁 교회)
285 장로교 교회, 아메리카 중심의 개혁 교회, 회중 교회
286 침례교, 성경 복귀 운동, 재림주의 교회
287 감리교 교회; 감리교 관련 교회
288 더 이상 사용되지 않음 — 이전에는 유니테리언주의
289 기타 교파 및 분파
290 기타 종교
290 기타 종교
291 더 이상 사용되지 않음 — 이전에는 비교 종교
292 고전 종교 (고대 그리스 종교 및 고대 로마의 종교)
293 게르만 이교
294 인도 기원 종교
295 조로아스터교 (마즈다교, 파르세이교)
296 유대교
297 이슬람교, 바브교, 바하이 신앙
298 더 이상 사용되지 않음 — 이전에는 모르몬교
299 그 외 분류되지 않은 종교
듀이 십진분류 목록 분류 300 – 사회 과학
300 사회과학, 사회학 및 인류학
300 사회과학
301 사회학 및 인류학
302 사회적 상호작용
303 사회 과정
304 사회행동에 영향을 미치는 요인
305 사회 집단
306 문화 및 제도 (사회)
307 공동체
308 더 이상 사용되지 않음 — 이전에는 거짓말 탐지기
309 더 이상 사용되지 않음 — 이전에는 사회학의 역사
310 통계
310 일반 통계 모음
311 더 이상 사용되지 않음 — 이전에는 이론 및 방법
312 더 이상 사용되지 않음 — 이전에는 인구
313 더 이상 사용되지 않음 — 이전에는 특별 주제
314 유럽의 일반 통계
315 아시아의 일반 통계
316 아프리카의 일반 통계
317 북아메리카의 일반 통계
318 남아메리카의 일반 통계
319 오스트랄라시아, 태평양 제도, 대서양 제도, 북극 제도, 남극의 일반 통계
320 정치학
320 정치학 (정치 및 정부)
321 정부형태 및 국가 체계
322 주권국과 조직화된 집단 및 그 구성원 간의 관계
323 민권 및 정치적 권리
324 정치 과정
325 국제 이주 및 식민지화
326 노예제 및 정치적 해방
327 국제 관계
328 입법 과정
329 더 이상 사용되지 않음 — 이전에는 정당
듀이 십진분류 목록 분류 300 – 사회 과학
340 법
340 법
341 국제법
342 헌제성 법률 및 행정법
343 군법, 방어, 공공 재산, 재정, 세법, 상업 (무역법), 산업법
344 노동법, 사회 서비스, 교육, 문화법
345 형법
346 사법 (법률)
347 민사소송법 및 법원
348 법, 규제, 사례
349 특정 관할 구역, 지역, 사회경제 지역, 지역 정부간 기구의 법
390 세관, 예의 및 민속
390 세관, 예의, 민속
391 코스튬 및 개인 외모
392 인생 주기 및 가정학 관습
393 장례 관습
394 일반 관습
395 예의 (매너)
396 더 이상 사용되지 않음 — 이전에는 여성의 지위 및 대우
397 더 이상 사용되지 않음 — 이전에는 아웃캐스트 연구
398 민속
399 전쟁 및 외교 관습
듀이 십진분류 목록 분류 400 – 언어
420 영어 및 고대 영어
420 영어 및 고대 영어
421 표준 영어의 문자, 음운론, 음성학
422 표준 영어의 어원학
423 표준 영어 사전
424 더 이상 사용되지 않음 — 이전에는 영어 시소러스
425 표준 영어 문법
426 더 이상 사용되지 않음 — 이전에는 영어 운율
427 영어의 역사적 및 지리적 변형, 현대 비지리적 변형
428 표준 영어 사용법 (규범 언어학)
429 고대 영어
430 독일어 및 관련 언어
430 독일어 및 관련 언어
431 표준 독일어의 문자, 음운론, 음성학
432 표준 독일어의 어원학
433 표준 독일어 사전
434 할당되지 않거나 더 이상 사용되지 않음
435 표준 독일어 문법
436 할당되지 않거나 더 이상 사용되지 않음
437 독일어의 역사적 및 지리적 변형, 현대 비지리적 변형
438 표준 독일어 사용법 (규범 언어학)
439 기타 게르만어파
듀이 십진분류 목록 분류 400 – 언어
440 프랑스어 및 관련 언어
440 프랑스어 및 관련 로망스어군
441 표준 프랑스어의 문자, 음운론, 음성학
442 표준 프랑스어의 어원학
443 표준 프랑스어 사전
444 할당되지 않거나 더 이상 사용되지 않음
445 표준 프랑스어 문법
446 할당되지 않거나 더 이상 사용되지 않음
447 프랑스어의 역사적 및 지리적 변형, 현대 비지리적 변형
448 표준 프랑스어 사용법 (규범 언어학)
449 오크어, 카탈루냐어, 프랑코프로방스어
450 이탈리아어, 루마니아어 및 관련 언어
450 이탈리아어, 달마티아어, 루마니아어, 레토로망스어, 사르데냐어, 코르시카어
451 표준 이탈리아어의 문자, 음운론, 음성학
452 표준 이탈리아어의 어원학
453 표준 이탈리아어 사전
454 할당되지 않거나 더 이상 사용되지 않음
455 표준 이탈리아어 문법
456 할당되지 않거나 더 이상 사용되지 않음
457 이탈리아어의 역사적 및 지리적 변형, 현대 비지리적 변형
458 표준 이탈리아어 사용법 (규범 언어학)
459 루마니아어, 레토로망스어, 사르데냐어, 코르시카어
듀이 십진분류 목록 분류 400 – 언어
460 스페인어, 포르투갈어, 갈리시아어
460 스페인어, 포르투갈어, 갈리시아어
461 표준 스페인어의 문자, 음운론, 음성학
462 표준 스페인어의 어원학
463 표준 스페인어 사전
464 할당되지 않거나 더 이상 사용되지 않음
465 표준 스페인어 문법
466 할당되지 않거나 더 이상 사용되지 않음
467 스페인어의 역사적 및 지리적 변형, 현대 비지리적 변형
468 표준 스페인어 사용법 (규범 언어학)
469 포르투갈어
470 라틴어 및 이탈리아어파
470 라틴어 및 관련 이탈리아어파
471 고전 라틴어의 문자, 음운론, 음성학
472 고전 라틴어의 어원학
473 고전 라틴어 사전
474 할당되지 않거나 더 이상 사용되지 않음
475 고전 라틴어 문법
476 할당되지 않거나 더 이상 사용되지 않음
477 고대 라틴어, 후기 고전 라틴어, 속라틴어
478 고전 라틴어 사용법 (규범 언어학)
479 기타 이탈리아어파
듀이 십진분류 목록 분류 400 – 언어
480 고전 그리스어 및 현대 그리스어
480 고전 그리스어 및 관련 그리스어파
481 고전 그리스어의 문자, 음운론, 음성학
482 고전 그리스어의 어원학
483 고전 그리스어 사전
484 할당되지 않거나 더 이상 사용되지 않음
485 고전 그리스어 문법
486 할당되지 않거나 더 이상 사용되지 않음
487 전고전 및 후고전 그리스어
488 고전 그리스어 사용법 (규범 언어학)
489 기타 그리스어파
490 기타 언어
490 기타 언어
491 동인도유럽어 및 켈트어파
492 아프리카아시아어족
493 비셈족 아프리카아시아어족
494 알타이어족, 우랄어족, 휘페르보레아, 드라비다어족, 기타 남아시아 언어
495 동아시아 언어 및 동남아시아 언어
496 아프리카의 언어
497 북아메리카 원주민 언어
498 남아메리카 원주민 언어
499 오세아니아 비오스트로네시아 언어, 오스트로네시아어족, 기타 언어
듀이 십진분류 목록 분류 500 – 과학
550 지구과학 및 지질학
550 지구과학
551 지질학, 수문학, 기상학
552 암석학
553 광상학
554 유럽의 지구과학
555 아시아의 지구과학
556 아프리카의 지구과학
557 북아메리카의 지구과학
558 남아메리카의 지구과학
559 오스트랄라시아, 태평양 제도, 대서양 제도, 북극 제도, 남극, 외계 세계의 지구과학
570 생물학
570 생물학
571 생리학 및 관련 주제
572 생화학
573 동물의 특정 생리 시스템, 동물의 지역 조직학 및 생리학
574 할당되지 않거나 더 이상 사용되지 않음
575 식물의 특정 부분 및 생리 시스템
576 유전학 및 진화
577 생태학
578 생물의 박물학 및 관련 주제
579 미생물, 균계, 조류 (수생 생물)의 박물학
듀이 십진분류 목록 분류 600 – 기술
610 의학 및 건강
610 의학 및 건강
611 인체 해부학, 세포생물학, 조직학
612 인체생리학
613 개인 건강 및 안전
614 법의학; 부상, 창상, 질병 발생률; 공공 예방 의학
615 약리학 및 치료학
616 질병
617 외과, 지역 의학, 치의학, 안과, 이과학, 청각학
618 산부인과, 산과, 소아청소년과, 노인의학
619 더 이상 사용되지 않음 — 이전에는 실험 의학
680 특정 용도 제조
680 특정 용도 제품 제조
681 계측기 및 기타 장치
682 작은 대장간 작업 (대장장이)
683 철물 및 가전제품
684 가구 및 가정용 공방
685 가죽 및 모피 제품, 관련 제품
686 인쇄 및 관련 활동
687 옷 및 액세서리
688 기타 최종 제품 및 포장 기술
689 할당되지 않거나 더 이상 사용되지 않음
듀이 십진분류 목록 분류 700 – 예술 및 레크리에이션
700 예술
700 예술활동
701 예술 철학 및 순수 예술 및 장식 예술 이론
702 순수 예술 및 장식 예술 잡다한 것
703 순수 예술 및 장식 예술 사전, 백과사전, 용어 색인
704 순수 예술 및 장식 예술 특별 주제
705 순수 예술 및 장식 예술 연속 간행물
706 순수 예술 및 장식 예술 조직 및 관리
707 순수 예술 및 장식 예술 교육, 연구, 관련 주제
708 순수 예술 및 장식 예술 갤러리, 박물관, 개인 소장품
709 미술사, 지리적 취급, 전기
720 건축
720 건축
721 건축 재료 및 구조 요소
722 초기부터  300c.까지의 건축
723  300c.부터 1399년까지의 건축
724 1400년부터의 건축
725 공공 구조물
726 종교 및 관련 목적을 위한 건물
727 교육 및 연구 목적을 위한 건물
728 주거 및 관련 건물
729 구조물 및 액세서리 디자인 및 장식
듀이 십진분류 목록 분류 700 – 예술 및 레크리에이션
730 조각, 세라믹 및 금속 세공
730 조각 및 관련 예술
731 조각의 과정, 형태, 주제
732 초기부터  500c.까지의 조각, 비문해 민족의 조각
733 그리스, 에트루리아, 로마 조각
734 서기 500년부터 1399년까지의 조각
735 1400년부터의 조각
736 석각 및 조각품
737 화폐학 및 인장학
738 세라믹 예술
739 예술 금속가공
760 판화 제작 및 판화
760 판화제작 및 판화
761 구호 공정 (목판 인쇄)
762 할당되지 않거나 더 이상 사용되지 않음
763 석판 인쇄 공정 (평판 인쇄 공정)
764 다색 석판 및 세리그래피
765 금속 조각
766 메조틴트, 아쿼틴트, 관련 공정
767 식각 및 드라이포인트
768 할당되지 않거나 더 이상 사용되지 않음
769 판화
770 사진술, 컴퓨터 아트, 영화, 비디오
770 사진술, 컴퓨터 아트, 시네마토그래피, 비디오그래피
771 기법, 절차, 장치, 장비, 재료
772 금속 염 공정
773 안료 인쇄 공정
774 더 이상 사용되지 않음 — 이전에는 홀로그래피
775 더 이상 사용되지 않음 — 이전에는 디지털 사진
776 컴퓨터 아트 (디지털 아트)
777 시네마토그래피 및 비디오그래피
778 특정 분야 및 특수 사진
779 사진 이미지
듀이 십진분류 목록 분류 800 – 문학
800 문학, 수사학 및 문학평론
800 문학 (아름다운 문학) 및 수사학
801 철학 및 이론
802 잡다한 것
803 사전, 백과사전, 용어 색인
804 할당되지 않거나 더 이상 사용되지 않음
805 문예지
806 조직 및 관리
807 교육, 연구, 관련 주제
808 수사학 및 두 가지 이상 문학의 문학 텍스트 모음
809 문학사, 두 가지 이상 문학의 설명, 비판적 평가
810 영어 미국 문학
810 미국 문학 (영어)
811 미국 시 (영어)
812 미국 희곡 (영어)
813 미국 소설 (영어)
814 미국 수필 (영어)
815 미국 연설 (영어)
816 미국 편지 (영어)
817 미국 유머 및 풍자 (영어)
818 미국 잡문 (영어)
819 더 이상 사용되지 않음 — 이전에는 퍼즐 활동
듀이 십진분류 목록 분류 800 – 문학
850 이탈리아어, 루마니아어 및 관련 문학
850 이탈리아어, 달마티아어, 루마니아어, 레토로망스어, 사르데냐어, 코르시카어 문학
851 이탈리아 시
852 이탈리아 희곡
853 이탈리아 소설
854 이탈리아 수필
855 이탈리아 연설
856 이탈리아 편지
857 이탈리아 유머 및 풍자
858 이탈리아 잡문
859 루마니아어, 레토로망스어, 사르데냐어, 코르시카어 문학
880 고전 그리스어 및 현대 그리스어 문학
880 고전 그리스 문학 및 관련 그리스어파 문학
881 고전 그리스 시
882 고전 그리스 희곡
883 고전 그리스 서사시 및 소설
884 고전 그리스 서정시
885 고전 그리스 연설
886 고전 그리스 편지
887 고전 그리스 유머 및 풍자
888 고전 그리스 잡문
889 근대 그리스 문학
890 기타 문학
890 기타 특정 언어 및 언어족 문학
891 동인도유럽어 및 켈트 문학
892 아프리카아시아어족 문학
893 비셈족 아프리카아시아어족 문학
894 알타이어족, 우랄어족, 휘페르보레아, 드라비다어족 문학; 남아시아의 기타 언어 문학
895 동아시아 및 동남아시아 문학
896 아프리카 문학
897 북아메리카 원주민 언어 문학
898 남아메리카 원주민 언어 문학
899 오세아니아 비오스트로네시아 언어, 오스트로네시아어족, 기타 언어 문학
듀이 십진분류 목록 분류 900 – 역사 및 지리
910 지리 및 여행
910 지리 및 여행
911 역사지리학
912 지구 표면 및 외계 세계의 도해적 표현
913 고대 세계의 지리 및 여행
914 유럽의 지리 및 여행
915 아시아의 지리 및 여행
916 아프리카의 지리 및 여행
917 북아메리카의 지리 및 여행
918 남아메리카의 지리 및 여행
919 오스트랄라시아, 태평양 제도, 대서양 제도, 북극 제도, 남극, 외계 세계의 지리 및 여행
930 고대 세계의 역사 ( 499c.까지)
930  499c.까지의 고대 세계 역사
931 중국부터 420년까지
932 이집트부터 640년까지
933 팔레스타인부터 70년까지
934 남아시아부터 647년까지
935 메소포타미아 및 이란고원부터 637년까지
936 이탈리아반도 북서부 유럽부터  499c.까지
937 이탈리아 및 인접 영토부터 476년까지
938 그리스부터 323년까지
939 고대 세계의 기타 지역
듀이 십진분류 목록 분류 900 – 역사 및 지리
940 유럽 역사
940 유럽의 역사
941 브리튼 제도의 역사
942 잉글랜드의 역사 및 웨일스의 역사
943 독일의 역사 및 이웃 중앙유럽 국가
944 프랑스의 역사 및 모나코의 역사
945 이탈리아의 역사, 산마리노의 역사, 바티칸 시국의 역사, 몰타의 역사
946 스페인의 역사, 안도라의 역사, 지브롤터의 역사, 포르투갈의 역사
947 러시아의 역사 및 이웃 동유럽 국가
948 스칸디나비아의 역사
949 유럽의 기타 지역
960 아프리카 역사
960 아프리카의 역사
961 튀니지의 역사 및 리비아의 역사
962 이집트의 역사, 수단의 역사, 남수단의 역사
963 에티오피아의 역사 및 에리트레아의 역사
964 모로코의 역사, 세우타의 역사, 멜리야의 역사, 서사하라의 역사, 카나리아 제도
965 알제리의 역사
966 서아프리카의 역사 및 연안 섬
967 중앙아프리카의 역사 및 연안 섬
968 남아프리카 공화국의 역사 및 남아프리카
969 남인도양 제도
듀이 십진분류 목록 분류 900 – 역사 및 지리
970 북아메리카 역사
970 북아메리카의 역사
971 캐나다의 역사
972 멕시코의 역사, 중앙아메리카의 역사, 서인도 제도의 역사, 버뮤다의 역사
973 미국의 역사
974 미국 북동부 (뉴잉글랜드 및 중부 대서양 주)
975 미국 남동부 (남부 대서양 주)
976 미국 남중부
977 미국 북중부
978 미국 서부
979 미국 대분지 및 태평양 경사 지역
990 기타 지역 역사
990 오스트랄라시아의 역사, 태평양 제도, 대서양 제도, 북극 제도, 남극, 외계 세계
991–992 할당되지 않거나 더 이상 사용되지 않음
993 뉴질랜드의 역사
994 오스트레일리아의 역사
995 파푸아뉴기니의 역사 및 이웃 멜라네시아 국가
996 폴리네시아의 역사 및 기타 태평양 제도
997 대서양 제도
998 북극 제도 및 남극
999 외계 세계
텔레겐 정리
텔레겐 정리(Tellegen's theorem)는 네트워크 이론에서 가장 강력한 정리 중 하나이다. 네트워크 이론의 대부분의 에너지 분배 정리와 극점 원리는 이 정리에서 파생될 수 있다. 이 정리는 1952년 베르나르드 텔레겐에 의해 발표되었다. 근본적으로 텔레겐 정리는 전기 키르히호프의 전기회로 법칙을 만족하는 크기들 간의 간단한 관계를 제공한다.
텔레겐 정리는 다양한 네트워크 시스템에 적용할 수 있다. 시스템의 기본 가정은 세기 성질과 크기 성질의 흐름 보존(키르히호프의 전류 법칙, KCL)과 네트워크 노드에서의 전위의 고유성(키르히호프의 전압 법칙, KVL)이다. 텔레겐 정리는 전기 회로, 망생물학, 대사망, 파이프라인 수송 네트워크, 화학적 과정 네트워크를 포함한 복잡계 네트워크 시스템을 분석하는 데 유용한 도구를 제공한다.
텔레겐 정리 정리
개의 가지와 개의 노드를 가진 임의의 집중 상수 모델 네트워크를 고려해보자. 전기 네트워크에서 가지는 2단자 부품이고 노드는 상호 연결 지점이다. 각 가지에 에 대해 임의로 가지 전위차 와 가지 전류 를 할당하고, 임의로 선택된 관련 기준 방향에 대해 측정된다고 가정한다. 만약 가지 전위차 가 KVL에 의해 부과된 모든 제약 조건을 만족하고 가지 전류 가 KCL에 의해 부과된 모든 제약 조건을 만족한다면,
텔레겐 정리는 매우 일반적이다. 선형 또는 비선형, 수동 또는 능동, 시간 가변 또는 시간 불변의 모든 요소를 포함하는 모든 집중 네트워크에 유효하다. 와 가 전위차 세트와 가지 전류 세트에 대한 선형 연산(각각)일 때 일반성은 확장되는데, 이는 선형 연산이 KVL과 KCL에 영향을 미치지 않기 때문이다. 예를 들어, 선형 연산은 평균 또는 라플라스 변환일 수 있다. 더 일반적으로, KVL을 보존하는 연산자를 키르히호프 전압 연산자라고 부르고, KCL을 보존하는 연산자를 키르히호프 전류 연산자라고 부르며, 둘 다 보존하는 연산자를 단순히 키르히호프 연산자라고 부른다. 이러한 연산자는 텔레겐 정리가 성립하기 위해 반드시 선형일 필요는 없다.
텔레겐 정리 정리
전류 세트는 KVL과 KCL이 모든 순간에 참이므로 전위차 세트와 다른 시간에 샘플링될 수도 있다. 또 다른 확장은 전위차 세트 가 한 네트워크에서 온 것이고 전류 세트 가 완전히 다른 네트워크에서 온 경우인데, 두 네트워크가 동일한 토폴로지(동일한 인접 행렬)를 가지는 한 텔레겐 정리는 참으로 유지된다. 텔레겐 정리의 이러한 확장은 2포트 네트워크와 관련된 많은 정리로 이어진다.
텔레겐 정리 정의
간결한 증명을 제공하기 위해 몇 가지 필요한 네트워크 정의를 도입해야 한다.
인접 행렬:
 행렬 는 행렬 요소 에 대해 노드-가지 인접 행렬이라고 불린다.
환경을 나타내고 모든 동적 노드와 터미널에 연결되는 기준 또는 기준 노드 가 도입된다. 참조 노드 의 요소 를 포함하는 행이 제거된  행렬 는 축소된 인접 행렬이라고 불린다.
벡터-행렬 형식의 보존 법칙(KCL):
벡터-행렬 형식의 전위 고유성 조건(KVL):
여기서 는 기준 노드 에 대한 노드들의 절대 전위이다.
텔레겐 정리 증명
KVL을 사용하면:
왜냐하면 KCL에 의해 이기 때문이다. 따라서:
텔레겐 정리 응용
다양한 물리 시스템에 대한 네트워크 아날로그가 구축되었으며, 동적 거동을 분석하는 데 매우 유용하다는 것이 입증되었다. 네트워크 이론과 텔레겐 정리의 고전적인 응용 분야는 전기 회로 이론이다. 주로 신호 처리 응용 분야에서 필터를 설계하는 데 사용된다.
텔레겐 정리의 더 최근 응용은 화학 및 생물학적 과정 분야이다. 전기 회로에 대한 가정(키르히호프 법칙)은 비가역적 열역학 법칙을 따르는 동적 시스템에 대해 일반화된다. 반응 네트워크(반응 메커니즘, 대사 네트워크)의 토폴로지와 구조는 텔레겐 정리를 사용하여 분석할 수 있다.
텔레겐 정리의 또 다른 응용은 화학 공장이나 석유 생산 시스템과 같은 복잡한 공정 시스템의 안정성과 최적성을 결정하는 것이다. 텔레겐 정리는 공정 노드, 터미널, 흐름 연결을 사용하고 광범위한 양의 생산 또는 파괴를 위한 흡수원과 공급원을 허용하여 공정 시스템에 대해 공식화할 수 있다.
공정 시스템에 대한 텔레겐 정리 공식화:
여기서 는 생산 항, 는 터미널 연결, 는 광범위한 변수에 대한 동적 저장 항이다.
마이크로소프트 기본 데이터 파티션
마이크로소프트 운영체제에서 GUID 파티션 테이블 (GPT) 레이아웃으로 파티션된 기본 디스크를 사용할 때, 기본 데이터 파티션(basic data partition, BDP)은 GUID EBD0A0A2-B9E5-4433-87C0-68B6B72699C7로 식별되는 모든 파티션이다.
마이크로소프트에 따르면, 기본 데이터 파티션은 마스터 부트 레코드 (MBR) 파티션 타입 0x06 (FAT16B), 0x07 (NTFS 또는 ExFAT), 그리고 0x0B (FAT32)와 동일하다. 실제로는 0x01 (FAT12), 0x04 (FAT16), 0x0C (논리 블록 주소 지정을 사용하는 FAT32), 그리고 0x0E (논리 블록 주소 지정을 사용하는 FAT16) 타입과도 동일하다.
기본 데이터 파티션은 어떤 파일 시스템으로든 포맷될 수 있지만, 일반적으로 BDP는 NTFS, ExFAT 또는 FAT32 파일 시스템으로 포맷된다. BDP에 어떤 파일 시스템이 포함되어 있는지 프로그래밍 방식으로 확인하려면 마이크로소프트는 BDP의 볼륨 부트 레코드에 포함된 BIOS 파라미터 블록을 검사해야 한다고 명시하고 있다.
마이크로소프트 기본 데이터 파티션
마이크로소프트 운영체제가 GPT로 파티션된 기본 디스크를 동적 디스크로 변환할 때, 모든 BDP는 단일 논리 디스크 관리자 데이터 파티션으로 결합되고 변환되며 GUID AF9B60A0-1431-4F62-BC68-3311714A69AD로 식별된다. 이는 MBR 파티션 디스크에서 파티션 타입 0x01, 0x04, 0x06, 0x07, 0x0B, 0x0C, 및 0x0E를 파티션 타입 0x42로 변환하는 것과 유사하다.
리눅스는 리눅스 전용 데이터 파티션 GUID 0FC63DAF-8483-4772-8E79-3D69D8477DE4가 도입되기 전까지 윈도우와 동일한 기본 데이터 파티션 GUID를 사용했다.
보안 서술자
보안 서술자(security descriptor)는 보호 가능한 윈도우 객체 즉 고유한 이름으로 식별할 수 있는 객체에 대한 보안 정보의 데이터 구조이다. 보안 서술자는 파일, 폴더, 공유, 레지스트리 키, 프로세스, 스레드, 명명된 파이프, 서비스, 작업 객체 및 기타 리소스를 포함하여 모든 명명된 객체와 연결할 수 있다.
보안 서술자는 사용자 또는 그룹과 같은 수탁자에 대한 접근을 허용하거나 거부하는 접근 제어 엔트리(ACE)를 포함하는 재량적 접근 제어 목록(DACL)을 포함한다. 또한 객체 접근 감사를 제어하는 시스템 접근 제어 목록(SACL)을 포함한다. ACE는 객체에 명시적으로 적용되거나 부모 객체로부터 상속될 수 있다. ACL에서 ACE의 순서는 중요하며, 접근 허용 ACE보다 접근 거부 ACE가 더 높은 순서로 나타난다. 보안 서술자에는 객체 소유자도 포함된다.
보안 서술자
필수 무결성 제어는 보안 서술자의 새로운 유형의 ACE를 통해 구현된다.
파일 및 폴더 권한은 파일 탐색기, WMI, Cacls, XCacls, ICacls, SubInACL과 같은 명령줄 도구, 프리웨어 Win32 콘솔 FILEACL, 자유 소프트웨어 유틸리티 SetACL 및 기타 유틸리티를 포함한 다양한 도구로 편집할 수 있다. 보안 서술자를 편집하려면 사용자에게 객체에 대한 WRITE_DAC 권한이 필요하며, 이 권한은 일반적으로 기본적으로 관리자 및 객체 소유자에게 위임된다.
보안 서술자 NTFS 권한
다음 표는 NTFS 권한과 그 역할을 요약한 것이다(개별 행). 이 표는 다음 정보를 보여준다.
의미: 각 권한 코드는 파일 또는 폴더에 적용되는지에 따라 의미가 다르다. 예를 들어, 파일의 코드 0x01은 파일을 읽을 권한을 나타내지만, 폴더의 코드 0x01은 폴더 내용을 나열할 권한을 나타낸다. 그러나 의미만 아는 것은 소용이 없다. ACE는 또한 누구에게 권한이 적용되는지, 그리고 그 권한이 부여되는지 또는 거부되는지를 지정해야 한다.
포함된 권한: 개별 권한 외에도 ACE는 "일반 접근 권한"으로 알려진 특별 권한을 지정할 수 있다. 이러한 특별 권한은 여러 개별 권한의 동등한 것이다. 예를 들어, GENERIC_READ(또는 GR)는 "데이터 읽기", "속성 읽기", "확장 속성 읽기", "권한 읽기" 및 "동기화"와 동등하다. 이 다섯 가지를 동시에 요청하는 것이 타당하므로 "GENERIC_READ"를 요청하는 것이 더 편리하다.
대부분의 권한은 자명하지만, 다음은 예외이다.
C++ 클래스
C++에서 클래스는 class, struct 또는 union 키워드 중 하나로 선언된 사용자 정의 자료형 또는 자료 구조이며 (처음 두 개는 비-유니온 클래스라고 총칭함) 데이터와 함수(또한 멤버 변수와 멤버 함수라고도 함)를 멤버로 가지며, 이들의 접근은 private, protected 또는 public 세 가지 접근 지정자에 의해 관리된다. 기본적으로 class 키워드로 선언된 C++ 클래스의 멤버에 대한 접근은 private이다. private 멤버는 클래스 외부에서 접근할 수 없으며, 클래스의 멤버 함수를 통해서만 접근할 수 있다. public 멤버는 클래스에 대한 인터페이스를 형성하며 클래스 외부에서 접근할 수 있다.
클래스 자료형의 인스턴스는 객체로 알려져 있으며, 프로그래머가 정의한 멤버 변수, 상수, 멤버 함수, 오버로드된 연산자를 포함할 수 있다.
C++ 클래스 C++에서 struct와 class의 차이
C++에서 class 키워드로 정의된 클래스는 기본적으로 private 멤버와 기본 클래스를 가진다. 구조체는 struct 키워드로 정의된 클래스이다. 그 멤버와 기본 클래스는 기본적으로 public이다. 실제로는 구조체는 일반적으로 함수가 없는 데이터에 사용된다. 클래스/구조체로부터 구조체를 파생시킬 때, 기본 클래스/구조체에 대한 기본 접근 지정자는 public이다. 그리고 클래스를 파생시킬 때는 기본 접근 지정자는 private이다.
C++ 클래스 집합 클래스
집합 클래스는 사용자 선언 생성자, private 또는 protected 비정적 데이터 멤버, 기본 클래스, 가상 함수가 없는 클래스이다. 이러한 클래스는 중괄호로 묶인 쉼표로 구분된 초기화 구문 목록으로 초기화할 수 있다. 다음 코드는 C와 C++ 모두에서 동일한 의미를 가진다.
POD-구조체 (Plain Old Data Structure)는 비-POD-구조체, 비-POD-유니온(또는 그러한 유형의 배열) 또는 참조 유형의 비정적 데이터 멤버가 없고, 사용자 정의 대입 연산자 및 사용자 정의 소멸자가 없는 비-유니온 집합 클래스이다. POD-구조체는 C++에서 C의 struct에 해당한다고 할 수 있다. 대부분의 경우, POD-구조체는 C에서 선언된 해당 구조체와 동일한 메모리 레이아웃을 가진다. 이러한 이유로 POD-구조체는 때때로 구어적으로 "C-스타일 구조체"라고 불린다.
C++ 클래스 선언 및 사용법
C++ 클래스는 자체 멤버를 가진다. 이 멤버에는 변수(다른 구조체 및 클래스 포함), 멤버 함수로 알려진 함수(특정 식별자 또는 오버로드된 연산자), 생성자 및 소멸자가 포함된다. 멤버는 public: 및 private: 접근 지정자를 사용하여 공개적으로 또는 비공개적으로 접근 가능하도록 선언된다. 지정자 다음에 나오는 모든 멤버는 다른 지정자가 나올 때까지 해당 접근 권한을 가진다. 클래스 간에는 protected: 지정자를 사용할 수 있는 상속도 있다.
클래스가 자신을 참조할 수 있는 기능을 용이하게 하기 위해 C++은 모든 멤버 함수에 대해 this 키워드를 구현한다. this 키워드는 현재 객체에 대한 포인터 역할을 한다. 그 유형은 현재 객체에 대한 포인터이다.
this 키워드는 클래스 자체가 반환 값인 멤버 함수에 특히 중요하다.
위에서 언급했듯이, this는 포인터이므로 반환할 참조로 변환하려면 별표 (*)를 사용하는 것이 필요하다.
모든 함수 외부에서 정의된 클래스는 전역 클래스이다. 객체가 프로그램의 어디에서든 생성될 수 있기 때문이다. 함수 본문 내에서 정의되면 지역 클래스이다. 해당 클래스의 객체는 함수 범위에 지역적이기 때문이다.
C++ 클래스 선언 및 사용법
비-유니온 클래스는 class 또는 struct 키워드로 선언된다. 멤버 선언은 이 선언 내에 위치한다.
위 정의들은 기능적으로 동일하다. 두 코드 모두 Person 유형의 객체가 두 개의 public 데이터 멤버, name과 age를 가지도록 정의한다. 닫는 중괄호 뒤의 쌍반점은 필수이다.
이 선언들 중 하나(둘 다 아님) 후에, Person은 다음과 같이 사용하여 Person 데이터 유형의 새로 정의된 변수를 생성할 수 있다.
위 코드를 실행하면 다음이 출력된다.
C++ 클래스의 중요한 특징은 멤버 함수이다. 각 자료형은 자체 내장 함수(멤버 함수라고 함)를 가질 수 있으며, 이 함수는 자료형의 모든(public 및 private) 멤버에 접근할 수 있다. 이러한 비정적 멤버 함수의 본문에서는 this 키워드를 사용하여 함수가 호출된 객체를 참조할 수 있다. 이는 일반적으로 객체의 주소를 함수의 암시적 첫 번째 인수로 전달함으로써 구현된다. 위 Person 유형을 다시 예로 들어보자.
C++ 클래스 선언 및 사용법
위 예제에서 printData 메서드는 클래스 본문에 선언되어 있으며 클래스 이름 뒤에 ::를 붙여 한정함으로써 정의된다. name과 age는 모두 private(클래스의 기본값)이며 printData는 클래스 외부에서 사용하려면 public으로 선언되어야 한다.
멤버 함수 printData를 사용하면 출력은 다음으로 간소화될 수 있다.
여기서 위에서 a와 b는 송신자라고 불리며, printData() 함수가 실행될 때 각자는 자신의 멤버 변수를 참조한다.
모듈이 도입되기 전(즉, 헤더를 사용하던 시점)에는 일반적으로 클래스 또는 구조체 선언(인터페이스라고 함)과 정의(구현이라고 함)를 별도의 단위로 분리했다. 사용자가 필요로 하는 인터페이스는 헤더 파일에 보관하고 구현은 소스 또는 컴파일된 형태로 별도로 보관했다.
C++ 표준은 비POD 클래스의 메모리 레이아웃을 지정하지 않는다. 예를 들어, 많은 인기 있는 C++ 컴파일러는 부모 클래스 필드와 자식 클래스 필드를 연결하여 단일 상속을 구현하지만, 이는 표준에서 요구하는 바가 아니다. 이러한 레이아웃 선택은 부모 클래스 유형에 대한 포인터를 통해 파생 클래스를 참조하는 것을 간단한 작업으로 만든다.
C++ 클래스 선언 및 사용법
예를 들어 다음을 고려해 보자.
P* p가 가리키는 P의 인스턴스는 메모리에서 다음과 같이 보일 수 있다.
P* p가 가리키는 C의 인스턴스는 다음과 같이 보일 수 있다.
따라서 P 객체의 필드를 조작하는 모든 코드는 C의 필드 정의에 대해 아무것도 고려할 필요 없이 C 객체 내부의 P 필드를 조작할 수 있다. 어떠한 경우에도 올바르게 작성된 C++ 프로그램은 상속된 필드의 레이아웃에 대해 어떠한 가정도 하지 않아야 한다. static_cast 또는 dynamic_cast 형 변환 연산자를 사용하면 포인터가 한 유형에서 다른 유형으로 올바르게 변환되도록 보장한다.
다중 상속은 그렇게 간단하지 않다. 클래스 D가 P와 C를 상속하는 경우, 두 부모의 필드가 어떤 순서로든 저장되어야 하지만, (최대) 하나의 부모 클래스만 파생 클래스의 시작 부분에 위치할 수 있다. 컴파일러가 포인터를 D 유형에서 P 또는 C로 변환해야 할 때마다 컴파일러는 파생 클래스의 주소에서 기본 클래스 필드의 주소로 자동 변환을 제공한다 (일반적으로 이는 간단한 오프셋 계산이다).
다중 상속에 대한 자세한 내용은 가상 상속을 참조하세요.
C++ 클래스 선언 및 사용법
final 키워드는 클래스가 하위 클래스로 만들어지는 방식을 제한한다. 클래스의 하위 클래스는 부모 클래스에 의해 final로 표시된 메서드를 재정의할 수 없도록 방지된다. final 클래스는 상속될 수 없다. 이를 통해 데비추얼라이제이션(가상화 제거), 즉 메서드 조회를 위해 vtable 사용을 제거하여 최종 클래스에서 메서드 호출을 인라인화할 수 있다.
final은 C++의 예약어가 아니라, 기존 코드베이스에서 'final' 식별자의 사용과 충돌하지 않도록 문맥 의존적 키워드로 정의된다.
C++에서 + - * /와 같은 연산자는 프로그래머의 필요에 맞게 오버로드될 수 있다. 이러한 연산자를 오버로드 가능한 연산자라고 한다.
관례적으로 오버로드된 연산자는 내장 자료형(int, float 등)과 거의 동일하게 동작해야 하지만, 이는 필수 사항은 아니다. 프로그래머는 변수가 실제로 정수를 저장하는 Integer라는 구조체를 선언할 수 있지만, Integer * Integer를 호출하면 정수의 곱이 아닌 합이 반환될 수 있다.
C++ 클래스 선언 및 사용법
위 코드는 반환 값을 "구성"하기 위해 생성자를 사용했다. 더 명확한 표현을 위해 (컴파일러가 이 문장을 위의 동일한 문장으로 최적화할 수 없다면 프로그램 효율성이 저하될 수 있지만), 위 코드는 다음과 같이 다시 작성할 수 있다.
프로그래머는 또한 struct 선언에 연산자의 프로토타입을 넣고 전역 범위에서 연산자의 함수를 정의할 수 있다.
위의 i는 발신자의 자체 멤버 변수를 나타내고, k.i는 인수 변수 k의 멤버 변수를 나타낸다.
const 키워드는 위 코드에 두 번 나타난다. 첫 번째 발생인 인수 const integer& k는 인수 변수가 함수에 의해 변경되지 않음을 나타낸다. 선언 끝의 두 번째 발생은 컴파일러에게 함수 실행에 의해 발신자가 변경되지 않을 것을 약속한다.
const integer& k에서 앰퍼샌드(&)는 "참조에 의한 전달"을 의미한다. 함수가 호출될 때 변수 값 대신 변수에 대한 참조가 함수에 전달된다.
연산자의 결합성과 연산의 우선순위는 변경할 수 없다는 점에 유의해야 한다.
C++ 클래스 선언 및 사용법
이항 연산자(두 개의 인수를 갖는 연산자)는 하나의 단일 인수를 호출하는 "식별자" 연산자(무엇인가)를 사용하여 함수를 선언함으로써 오버로드된다. 연산자의 왼쪽에 있는 변수는 발신자이고 오른쪽에 있는 변수는 인수이다.
'3'이 출력될 것이다.
다음은 이항 오버로드 가능 연산자 목록이다.
동일한 구조체 유형의 두 변수 사이의 '=' (대입) 연산자는 기본적으로 한 변수에서 다른 변수로 변수 전체 내용을 복사하도록 오버로드된다. 필요한 경우 다른 것으로 덮어쓸 수 있다.
연산자는 하나씩 오버로드해야 한다. 다시 말해, 어떤 오버로딩도 서로 관련되어 있지 않다. 예를 들어, <가 >의 반대인 것은 아니다.
위에서 명시된 일부 연산자는 왼쪽에 발신자, 오른쪽에 인수를 취하는 두 항을 가지지만, 일부 연산자는 발신자라는 하나의 인수만 가지며 "단항"이라고 불린다. 예를 들어 음수 부호(왼쪽에 아무것도 없을 때)와 "논리 NOT" (느낌표, !)가 있다.
단항 연산자의 발신자는 연산자의 왼쪽 또는 오른쪽에 있을 수 있다. 다음은 단항 오버로드 가능 연산자 목록이다.
발신자가 오른쪽에 있는 단항 연산자의 오버로딩 구문은 다음과 같다.
C++ 클래스 선언 및 사용법
return_type operator@ ()
발신자가 왼쪽에 있을 때 선언은 다음과 같다.
return_type operator@ (int)
위의 @는 오버로드될 연산자를 나타낸다. return_type을 반환 값의 자료형(int, bool, 구조체 등)으로 대체한다.
int 매개변수는 본질적으로 아무 의미가 없으며, 발신자가 연산자의 왼쪽에 있음을 보여주는 관례일 뿐이다.
해당하는 경우 선언 끝에 const 인수를 추가할 수 있다.
C++ 클래스에서는 대괄호 []와 소괄호 ()를 오버로드할 수 있다. 대괄호는 정확히 하나의 인수, 초기화 목록(C++11 이후), 또는 임의의 매개변수 팩(C++23 이후)을 포함해야 하며, 소괄호는 특정 개수의 인수 또는 인수를 포함하지 않을 수 있다.
다음 선언은 대괄호를 오버로드한다.
return_type operator[] (arg1, arg2, ...))
괄호 안의 내용은 argument 부분에 지정된다.
소괄호는 비슷한 방식으로 오버로드된다.
return_type operator() (arg1, arg2, ...)
연산자 호출에서 괄호의 내용은 두 번째 괄호 안에 지정된다.
C++ 클래스 선언 및 사용법
위에서 명시된 연산자 외에 화살표 연산자(->), 별표 화살표(->*), new 키워드, delete 키워드도 오버로드될 수 있다. 이 메모리 또는 포인터 관련 연산자들은 오버로드 후 메모리 할당 함수를 처리해야 한다. 대입(=) 연산자처럼, 특별한 선언이 없으면 기본적으로 오버로드된다.
때때로 프로그래머는 변수가 선언될 때 기본값 또는 특정 값을 가지도록 원할 수 있다. 이는 생성자를 선언하여 수행할 수 있다.
아래 예와 같이 콜론을 사용하여 초기화 목록에서 멤버 변수를 초기화할 수 있다. 이는 위와는 달리 대입 연산자를 사용하는 것이 아니라 (생성자를 사용하여) 초기화하는 방식이다. 클래스 유형의 경우 직접 구성되기만 하면 되므로 더 효율적이다. 반면 대입의 경우 기본 생성자를 사용하여 먼저 초기화한 다음 다른 값을 대입해야 한다. 또한 일부 유형(참조 및 const 유형 등)은 대입할 수 없으므로 초기화 목록에서 초기화해야 한다.
중괄호는 비어 있어도 생략할 수 없다는 점에 유의해야 한다.
기본값 초기화를 돕기 위해 마지막 인수에 기본값을 지정할 수 있다.
C++ 클래스 선언 및 사용법
위 예시의 생성자에 인수가 주어지지 않으면, 인수가 없는 다음 생성자(기본 생성자)를 호출하는 것과 동일하다.
생성자 선언은 자료형과 이름이 같은 함수처럼 보인다. 실제로 생성자 호출은 함수 호출 형태를 취할 수 있다. 이 경우 초기화된 Person 유형 변수는 반환 값으로 생각할 수 있다.
위 예제와 동일한 작업을 수행하는 다른 구문은 다음과 같다.
변수와 관련이 있거나 없을 수 있는 특정 프로그램 동작을 생성자의 일부로 추가할 수 있다.
위 생성자를 사용하면 기본 Person 생성자가 호출될 때 "Hello!"가 출력된다.
클래스에 생성자가 정의되지 않았을 때 기본 생성자가 호출된다.
그러나 클래스에 사용자 정의 생성자가 정의된 경우, 위의 두 선언 모두 이 사용자 정의 생성자를 호출하여 정의된 코드가 실행되지만, 변수 b에 기본값은 할당되지 않는다.
소멸자는 생성자의 역이다. 클래스 인스턴스가 소멸될 때 호출된다. 예를 들어, 블록(중괄호 "{}" 집합) 내에서 생성된 클래스 객체가 닫는 중괄호 다음에 삭제되면 소멸자가 자동으로 호출된다. 변수를 저장하는 메모리 위치가 비워질 때 호출된다. 소멸자는 해당 클래스 인스턴스가 소멸될 때 힙 할당 메모리 및 열린 파일과 같은 리소스를 해제하는 데 사용될 수 있다.
소멸자를 선언하는 구문은 생성자와 유사하다. 반환 값이 없으며 함수 이름은 클래스 이름과 동일하고 앞에 물결표(~)가 붙는다.
C++ 클래스 클래스 템플릿
C++에서는 클래스 템플릿으로부터 클래스 선언을 생성할 수 있다. 이러한 클래스 템플릿은 클래스들의 패밀리를 나타낸다. 실제 클래스 선언은 하나 이상의 템플릿 인수를 사용하여 템플릿을 인스턴스화함으로써 얻어진다. 특정 인수 집합으로 인스턴스화된 템플릿은 템플릿 특수화라고 불린다.
C++ 클래스 속성
C++ 구문은 클래스의 모든 측면이 기본 자료형과 같아 보이도록 노력한다. 따라서 오버로드된 연산자는 클래스를 정수 및 부동 소수점 숫자처럼 조작할 수 있도록 하고, 클래스 배열은 대괄호 구문(some_structure variable_name[size])으로 선언할 수 있으며, 클래스 포인터는 내장 자료형 포인터와 같은 방식으로 역참조될 수 있다.
구조체의 메모리 소비는 최소한 구성 변수들의 메모리 크기 합계이다. 아래 TwoNums 구조체를 예로 들어보자.
이 구조체는 두 개의 정수로 구성된다. 현재 많은 C++ 컴파일러에서 정수는 기본값으로 32비트 정수이므로 각 멤버 변수는 4바이트의 메모리를 소비한다. 따라서 전체 구조체는 최소한 (또는 정확히) 8바이트의 메모리를 소비하며, 다음과 같다.
그러나 컴파일러는 주어진 컴퓨터 아키텍처에 대한 적절한 데이터 정렬을 보장하기 위해 변수 사이에 또는 구조체 끝에 패딩을 추가할 수 있으며, 종종 변수를 32비트 정렬로 패딩한다. 예를 들어, 구조체
는 메모리에서 다음과 같이 보일 수 있다.
여기서 X는 4바이트 정렬을 기반으로 하는 패딩 바이트를 나타낸다.
C++ 클래스 속성
구조체는 멤버 변수를 선언하고 초기화하기 위해 포인터와 배열을 사용할 수 있으므로 구조체의 메모리 소비는 반드시 상수가 아니다. 비상수 메모리 크기의 또 다른 예는 템플릿 구조체이다.
비트 필드는 정수형보다 적은 저장 공간을 차지할 수 있는 클래스 멤버를 정의하는 데 사용된다. 이 필드는 정수형(int, char, short, long 등)과 열거형(예: std::byte)에만 적용되며 float 또는 double은 제외된다.
공용체도 비트 필드 멤버를 가질 수 있다.
많은 프로그래머는 구조체를 포함하는 함수의 인수를 선언할 때 앰퍼샌드(&)를 사용하는 것을 선호한다. 이는 역참조 앰퍼샌드를 사용하면 변수의 메모리 위치, 즉 단어 하나(일반적으로 32비트 머신에서는 4바이트, 64비트 머신에서는 8바이트)만 함수에 전달하면 되기 때문이다. 그렇지 않으면 값으로 전달을 사용하면 함수가 호출될 때마다 인수를 복사해야 하는데, 이는 큰 구조체의 경우 비용이 많이 든다.
참조에 의한 전달은 원래 구조체가 함수에 의해 수정될 수 있도록 노출시키므로, 의도하지 않은 경우에는 const 키워드를 사용하여 함수가 매개변수를 수정하지 않음을 보장해야 한다(const-정확성 참조).
Cacls
마이크로소프트 윈도우에서 cacls와 그 대체제인 icacls는 컴퓨터 파일과 폴더의 보안 디스크립터를 표시하고 수정할 수 있는 기본 명령줄 유틸리티이다. 접근 제어 목록은 파일이나 폴더와 같은 보안 가능한 개체에 대한 권한 목록으로, 누가 해당 개체에 접근할 수 있는지 제어한다. cacls 명령어는 ReactOS에서도 사용할 수 있다.
Cacls cacls
cacls.exe 유틸리티는 윈도우 NT 3.5 및 이후 윈도우 NT 계열 운영체제에서 디렉터리 및 파일 보안 디스크립터의 사용이 중단된 명령줄 편집기이다. 마이크로소프트는 NTFS 파일 시스템 버전 3.0에서 도입된 변경 사항을 지원하기 위한 향상된 기능을 제공하는 다음과 같은 최신 유틸리티를 제작했으며, 일부는 나중에 사용이 중단되었다.
ReactOS 버전은 토마스 바이덴뮐러가 개발했으며 GNU 약소 일반 공중 사용 허가서에 따라 라이선스가 부여된다.
Cacls icacls
Integrity Control Access Control List의 약자이다. 윈도우 서버 2003 서비스 팩 2 이상에는 icacls가 포함되어 있으며, 이는 파일 및 폴더의 ACL을 표시, 수정, 백업 및 복원하고 비스타 및 이후 버전에서 무결성 수준 및 소유권을 설정할 수 있는 기본 제공 명령줄 유틸리티이다. 그러나 cacls를 완전히 대체하는 것은 아니다. 예를 들어, 명령줄 매개변수를 통해 보안 서술자 정의 언어 (SDDL) 구문을 직접 지원하지 않는다 (오직 /restore 옵션을 통해서만).
파일 연결
컴퓨팅에서 파일 연결(file association)은 파일을 해당 파일을 열 수 있는 응용 프로그램과 연결하는 것을 말한다. 더 일반적으로, 파일 연결은 파일 클래스(일반적으로 .txt와 같은 파일 확장자로 결정됨)를 해당 응용 프로그램(예: 문서 편집기)과 연결한다.
파일 연결 연결 및 동사
단일 파일 확장자는 다양한 작업을 수행하기 위한 여러 연결, 즉 동사를 가질 수 있다. 일반적인 동사는 다음과 같다.
예를 들어, 사진은 이러한 단어와 연결될 수 있는데, 열기는 이미지 뷰어에서 사진을 열고, 편집은 이미지 편집 프로그램을 열며, 인쇄는 사진을 프린터로 보낸다.
파일 연결 구현
대부분의 운영체제는 어떤 형태로든 파일 연결을 지원한다. 예를 들어, 파일 관리자에서 파일을 열면 일반적으로 해당 파일이 연결된 응용 프로그램으로 열기 동사가 호출된다. "열기" 동사는 연결된 응용 프로그램을 호출하여 파일을 읽거나 문서를 사용자에게 표시하여 보거나 편집하거나 다른 작업을 수행할 수 있도록 한다.
인쇄와 같은 추가 작업은 일반적으로 마우스 오른쪽 버튼 콘텍스트 메뉴를 통해 액세스한다. 연결을 수정하는 메커니즘도 일반적으로 존재한다. 이에 대한 예로는 윈도우 셸의 "연결 프로그램" 옵션이 있다.
윈도우 3.x부터 시작하는 마이크로소프트 윈도우 계열의 운영체제는 파일 확장자 기반 연결을 지원한다. 연결은 각 파일 확장자에 대한 동사 집합으로 레지스트리에 저장된다. 이전 버전은 WIN.INI에 저장된 열기 연결을 지원했다.
파일 연결은 assoc 명령어를 사용하여 표시하고 편집할 수 있으며, ftype 명령어를 통해 파일 형식과 해당 파일을 여는 응용 프로그램 간의 연결을 생성할 수 있다.
파일 연결 구현
윈도우 셸은 COM, 드래그 앤 드롭, 명령줄 호출 또는 동적 데이터 교환을 통해 파일 연결 작업을 호출한다. 마이크로소프트 윈도우 파일 연결의 고급 기능에는 임의의 수의 연결된 작업, 기본 기본 작업, 특정 파일 형식에 대해서만 확장자 표시, 파일 형식 아이콘 및 설명 사용자 지정, 연결된 MIME 형식 및 해당 처리(인터넷 익스플로러 브라우저 내에서 다운로드되거나 직접 열린 파일의 파일 형식을 처리하는 방법) 사용자 지정이 포함되었다. 그러나 고급 파일 연결 기능을 구성하는 기능은 윈도우 비스타 및 이후 운영체제에서 제거되었다.
KDE 및 그놈과 같은 리눅스 기반 GUI는 MIME 유형 기반 연결을 지원한다. 예를 들어, MIME 유형 text/plain은 문서 편집기와 연결될 수 있다. 이 연결은 일반적으로 freedesktop.org 공유 MIME 데이터베이스(파일의 MIME 유형을 결정하기 위해) 및 데스크톱 항목 규격(파일을 열 응용 프로그램을 결정하기 위해)을 통해 이루어진다.
파일 연결 구현
클래식 Mac OS는 파일 확장자와 관계없이 각 파일을 해당 응용 프로그램과 연결하기 위해 유형 코드와 생성자 코드를 사용했다. 최신 macOS도 파일 확장자 기반 연결을 지원한다.
macOS의 응용 프로그램 번들은 Info.plist 파일에서 지원되는 파일 유형을 선언한다. 이들 지정된 유형 각각에 대해 Uniform Type Identifier가 제공되며, 이 유형의 파일 또는 데이터를 식별하는 방법을 정의하는 '태그' 목록이 함께 제공된다. 예를 들어, JPEG 유형은 'public.jpeg' UTI로 정의되며, 확장자 'jpg' 및 'jpeg', MIME 유형 'image/jpeg', 유형 코드 'JPEG'로 태그가 지정된다.
운영체제는 이 정보를 사용하여 각 유형을 열 수 있는 응용 프로그램 목록을 생성한다. 파인더 (소프트웨어) 내에서 각 파일은 UTI로 식별되며 해당 유형의 기본 응용 프로그램으로 열린다. 사용자는 해당 유형을 지원하는 다른 응용 프로그램 목록에서 선택할 수도 있다.
이 시스템을 사용하면 파일 이름이 없거나 파일 확장자가 없는 데이터와도 유형이 연결된다. 여기에는 붙여넣기 데이터와 MIME 유형이 제공된 HTTP와 같은 프로토콜을 통해 스트리밍되는 데이터가 포함된다.
아사나하로
아사나하로(중국어: 阿史那賀魯, 병음: āshǐnà hèlǔ, ? ~ 659), 아시나 허루는 서돌궐의 카간이다. 당나라 태종 사후에 이쉬바라 카간(Ishbara Khagan, 중국어: 沙鉢略可汗, 병음: shābōlüè kěhàn, 한자음: 사발략가한)을 칭하며 당에 대항하였으나, 당의 세 차례 원정을 맞아 658년 소정방에게 생포되어 장안으로 압송되었다.
부트 플래그
부트 플래그(boot flag)는 마스터 부트 레코드 내의 비확장 파티션 레코드에 있는 1바이트 값이다. 이것은 파티션 레코드의 시작 부분에 0x80 값으로 나타난다. 0x00 값은 파티션에 부트 플래그가 설정되어 있지 않음을 나타낸다. 다른 모든 값은 유효하지 않다.
그 주요 기능은 MS-DOS/마이크로소프트 윈도우 유형의 부트 로더에 부팅할 파티션을 나타내는 것이다. 어떤 경우에는 Windows XP/2000에서 활성 파티션에 "C:" 문자를 할당하는 데 사용된다. 활성 파티션은 부트 플래그가 설정된 파티션이다. DOS와 Windows는 부트 플래그로 하나의 부트 파티션만 설정할 수 있도록 허용한다.
부트 플래그
타사 부트 관리자(예: GRUB 또는 XOSL)에서 사용하는 다른 부트 로더는 마스터 부트 레코드에 설치될 수 있으며, 부트 플래그가 설정되지 않은 기본 또는 확장 부트 레코드 파티션을 부팅할 수 있다.
Windows의 디스크 관리, 리눅스의 GPartEd, Fdisk와 같이 부트 플래그를 수정할 수 있는 많은 디스크 편집기가 있다.
일부 바이오스는 적어도 하나의 파티션에 부트 플래그가 설정되어 있는지 테스트하며, 그렇지 않으면 부트 순서에서 해당 장치를 무시한다. 따라서 부트 로더가 플래그를 필요로 하지 않더라도 바이오스에서 부트 코드를 시작하려면 플래그를 설정해야 한다.