#noindex ##====입출력,IO =,IO 입출력 IO '''IO, I/O, input/output, 입력/출력''' [[입력,input]] 그리고 [[출력,output]]. = CS 일반적으로 = asyncio asynchronous_IO non-sequential_IO "비동기 입출력(asynchronous I/O) 또는 비순차 입출력(non-sequential I/O)은..."(wk) https://ko.wikipedia.org/wiki/비동기_입출력 [[WpEn:Asynchronous_I/O]] = https://en.wikipedia.org/wiki/Asynchronous_I/O Windows(NT API ... [[WinAPI]])에서는 [[WpEn:Overlapped_I/O]] = https://en.wikipedia.org/wiki/Overlapped_I/O 라는 명칭을 쓴다. .NET : System.IO 파일 및 스트림 I/O - .NET | Microsoft Learn https://learn.microsoft.com/ko-kr/dotnet/standard/io/ = computer architecture 분야에서 = [[컴퓨터,computer]]의 component들끼리 data/information/bits..를 주고 받는 것? hardware IO 를 위해 [[하드웨어레지스터,hardware_register]]를 사용함. Sub: Programmed I/O, PIO https://ko.wikipedia.org/wiki/프로그램_입출력 https://en.wikipedia.org/wiki/Programmed_input–output DMA,direct_memory_access https://ko.wikipedia.org/wiki/직접_메모리_접근 general-purpose IO, GPIO { http://www.ktword.co.kr/test/view/view.php?m_temp1=5385&id=1394 ... Ndict:GPIO } memory-mapped I/O (MMIO) https://ko.wikipedia.org/wiki/메모리_맵_입출력 port-mapped I/O (PMIO) https://ko.wikipedia.org/wiki/입출력_맵_입출력 위 둘 we: https://en.wikipedia.org/wiki/Memory-mapped_I/O_and_port-mapped_I/O IOMMU =,iommu . IOMMU { http://emal.iptime.org/noriwiki/index.php/IOMMU { [[DMA]] 가능한 입출력버스(I/O bus = [[IO_bus]] Up: [[버스,bus]])와 주기억장치(Ggl:주기억장치 [[main_memory]])를 접속하는 메모리관리장치([[MMU]]). (비유) MMU가 (CPU 입장인) [[가상주소,virtual_address]]를 [[물리주소,physical_address]]로 변환(주소변환 Ggl:주소변환 Naver:주소변환 WtEn:address_translation ? WpSp:address_translation WpEn:address_translation ?? )하듯이, '''IOMMU'''는 주변기기(peripheral_device s ?)에서 보이는 가상주소(장치주소 or 입출력주소 라고 부름)을 물리주소로 변환한다. // Ggl:장치주소 Ggl:입출력주소 Ggl:"device address io address" ? (명칭들) 주변기기의 오동작에서 메모리를 지키기 위해 [[메모리보호,memory_protection]]기능도 제공. AMD에서는 Ggl:AMD-VD 라고 부르며 Intel은 Ggl:VT-d 라고 부른다 // Ggl:"amd-vd vt-d" Bing:"amd-vd vt-d" Ndict:"amd-vd vt-d" Naver:"amd-vd vt-d" Ggl:PCI-SIG 에서는 이런 부분을 I/O 가상화, IOV라고 부르며 // [[IO_virtualization]]? Ggl:"i/o virtualization" Ggl:"i/o 가상화" 다른 이름으로는 Address Translation Services (ATS)라고도 부른다. // Ggl:"Address Translation Services" Address_Translation_Services =,ATS . ([[Date(2023-09-27T08:12:21)]]에 대충 요약.) } Ndict:IOMMU Ggl:IOMMU Bing:IOMMU } I/O bus [[버스,bus]] ''WpEn:I/O_bus is redir.'' I/O port [[포트,port]] ''WpEn:I/O_port is redir.'' ''WpKo:입출력_포트 redir to WpKo:컴퓨터_하드웨어_포트 ... 즉 컴퓨터 내부 port가 아닌 h/w port (꽂는, 어댑터, 단자)'' ''WpKo:컴퓨터_소프트웨어_포트 redir to [[WpKo:포트_(컴퓨터_네트워킹)]] ... 즉 네트워크 포트 얘기만'' https://wiki.osdev.org/I/O_Ports I/O base address x86_architecture 얘기. https://en.wikipedia.org/wiki/Input/output_base_address I/O address ''WpEn:I/O_address is redir.'' I/O controller [[제어기,controller]] - does [[제어,control]] IRQ interrupt_request https://en.wikipedia.org/wiki/Interrupt_request PnP plug and play (PnP) https://ko.wikipedia.org/wiki/플러그_앤_플레이 https://simple.wikipedia.org/wiki/Plug_and_play https://en.wikipedia.org/wiki/Plug_and_play 그 전엔 manual하게 WpEn:DIP_switch [[WpEn:Jumper_(computing)]]로 세팅 Cmp: memory-mapped file (memory-mapped I/O와 다름) (IO보다는 메모리관리쪽에 가까운 얘기) https://ko.wikipedia.org/wiki/메모리_맵_파일 https://en.wikipedia.org/wiki/Memory-mapped_file mmap (memory-mapped I/O와 다름) (memory-mapped file I/O 방법) https://en.wikipedia.org/wiki/Mmap MKLINK: [[포트,port]] [[스트림,stream]] { 자료의 흐름, stdin stdout stderr } [[버퍼,buffer]] =버퍼,buffer =,buffer . 버퍼 buffer { Twin https://ko.wikipedia.org/wiki/버퍼_%28컴퓨터_과학%29 https://en.wikipedia.org/wiki/Data_buffer MKL [[스풀링,spooling]] [[스풀러,spooler]] [[스풀,spool]] 용도는 data 를 임시로 담는 ... 따라서 [[메모리,memory]에 위치.... [[스트림,stream]] esp data_stream 을 안정적으로 처리하기 위해 필수? ... [[큐,queue]] / FIFO data_structure / ADT 와 밀접... ... tbw single_buffer double_buffer triple_buffer 그리고 -ing: single_buffering double_buffering triple_buffering single 빼고 즉 double 이후부터는 multiple_buffer / multiple_buffering 임. WpEn:Multiple_buffering = https://en.wikipedia.org/wiki/Multiple_buffering //mv to double_buffer: 더블은 computer_graphics 에 매우 자주 쓰임. [[WpEn:Multiple_buffering#Double_buffering_in_computer_graphics]] = https://en.wikipedia.org/wiki/Multiple_buffering#Double_buffering_in_computer_graphics └▶(Redirected from Ping-pong buffer) ... WpEn:Ping-pong_buffer { 더블버퍼 이중버퍼 [[Wiki:DoubleBuffer]] = http://wiki.c2.com/?DoubleBuffer 특히 deferred_update 에 효과적. { http://wiki.c2.com/?DeferredUpdate deferred+update Up: [[업데이트,update]] or [[갱신,update]] or 경신? } [[wait-free_synchronization]] { wait-free synchronization [[Wiki:WaitFreeSynchronization]] = http://wiki.c2.com/?WaitFreeSynchronization Cmp these: lock-free wait-free non-blocking { ... Ggl:lock-free+wait-free+non-blocking Up: concurrency ? } Up: [[동기화,synchronization]] Google:wait-free+synchronization wait-free+synchronization }의 특별화된/특수화된 형식/형태(specialized form). Wiki:ReadWriteLock 이 아닌. } //mv to triple: [[Wiki:TripleBuffer]] = http://wiki.c2.com/?TripleBuffer 트리플버퍼 삼중버퍼 [[circular_buffer]] =,circular_buffer =,circular_buffer . circular_buffer { AKA: circular_queue , cyclic_buffer , ring_buffer (we) 환형버퍼 원형버퍼 ...등이 보이고 내 brainstorm: 고리형버퍼 고리모양버퍼 둥근버퍼 ....최적의 번역은? ... cf. NdEn:circular NdEn:cyclic single, fixed-size [[버퍼,buffer]]인데, 마치 처음과 끝이 연결된 것 처럼 사용하는. [[data_stream]]{ WpEn:Data_stream Up: data [[스트림,stream]] }을 [[버퍼링,buffering]]하기 쉽게 만드는 구조. (we) REL: [[큐,queue]] > bounded_queue https://en.wiktionary.org/wiki/circular_buffer [[WpEn:Circular_buffer]] = https://en.wikipedia.org/wiki/Circular_buffer "'''circular buffer, circular queue, cyclic buffer''' or '''ring buffer''' is..." [[Wiki:CircularBuffer]] = http://wiki.c2.com/?CircularBuffer 생각 특히 [[하드웨어,hardware]] [[입출력,IO]] or [[device_driver]] { 장치드라이버 ? MKL[[driver_wrapper]] ... [[Wiki:DeviceDriver]] = http://wiki.c2.com/?DeviceDriver [[WpEn:Device_driver]] = https://en.wikipedia.org/wiki/Device_driver } 에서 자주 쓰임새를 본 듯 일단 [[메모리,memory]] 다른 곳에 영향을 끼치지는 않는다는 점에서는 안정적이다 (dynamic_memory_allocation 이 없이 고정된 위치에 있어서) bounded_queue - fixed size - [[오버플로,overflow]]에 취약할텐데 Up: data_structure (we) circular_data_structure ? (내생각) { circular data structure circular+data+structure Ggl:circular+data+structure } OR cyclic_data_structure ? (내생각) { cyclic data structure cyclic+data+structure Ggl:cyclic+data+structure } [[버퍼,buffer]] circular+buffer } [[프레임버퍼,framebuffer]] =프레임버퍼,framebuffer =,framebuffer . 프레임버퍼 framebuffer { Twins: https://ko.wikipedia.org/wiki/프레임버퍼 https://en.wikipedia.org/wiki/Framebuffer AKA frame_buffer sometimes framestore .... =,frame_buffer =,framestore . mentions: screen buffer = video buffer = regeneration buffer = regen buffer (이건 video memory = video_memory 에 있지 않다. 그래서 off-screen buffer 라고도 한다) screen_buffer = video_buffer = regeneration_buffer = regen_buffer (regen은 그냥 regeneration의 줄임인듯) ... Ndict:프레임버퍼 Ggl:프레임버퍼 Bing:프레임버퍼 } // 프레임버퍼 rel [[스풀,spool]] / [[스풀링,spooling]] / [[스풀러,spooler]] [[버퍼링,buffering]] [[WtEn:buffer]] = https://en.wiktionary.org/wiki/buffer Inter: [[WpKo:버퍼_(컴퓨터_과학)]] = https://ko.wikipedia.org/wiki/버퍼_(컴퓨터_과학) = https://ko.wikipedia.org/wiki/버퍼_%28컴퓨터_과학%29 Ndict:버퍼+buffer Ggl:버퍼+buffer 버퍼+buffer } [[캐시,cache]] =,cache . cache { 캐시 Sub: [[cache_memory]] - [[메모리,memory]] Sub: cache-only_memory_architecture (COMA) WpEn:Cache-only_memory_architecture = https://en.wikipedia.org/wiki/Cache-only_memory_architecture cache } [[버스,bus]] [[스풀링,spooling]] - rel. [[스풀,spool]] [[폴링,polling]] [[하드웨어,hardware]] esp peripheral [[장치,device]] [[device_driver]] [[접근,access]] or [[액세스,access]] =,access . { memory 접근, io 접근, .... [[WpKo:액세스_(마이크로프로세서)]] = https://ko.wikipedia.org/wiki/액세스_(마이크로프로세서) = https://ko.wikipedia.org/wiki/액세스_%28마이크로프로세서%29 } [[memory_map]] = software/programming 분야에서 = [[콘솔,console]] [[redirection]] [[셸,shell]] stdin - standard_input [[입력,input]] stdout - standard_output [[출력,output]] stderr - standard_error [[에러,error]] ... C++ IO Input/output library - cppreference.com https://en.cppreference.com/w/cpp/io .NET : System.IO namespace System.IO 네임스페이스 | Microsoft Learn https://learn.microsoft.com/ko-kr/dotnet/api/system.io?view=net-8.0 = 신호/통신 분야에서 = 여기선 보통 시간 $t$ 에 따라 [[입력,input]]을 $x(t),x[n]$ [[출력,output]]을 $y(t),y[n]$ 으로 하는 notation이 있으며 ... SISO : single input single output ... [[WpEn:Single-input_single-output_system]] MIMO : multiple input multiple output ... [[WpEn:MIMO]] 물론 같은 식으로 SIMO MISO 도 있음 ... Google:SISO+MIMO BIBO_stability - [[bound]] [[bounded]] [[안정성,stability]] 여기선 입출력을 bounded_input bounded_output unbounded_input unbounded_output 으로 나눌 수 있다. 기타 GIGO (이건 신호/통신 분야에 넣기보다는 정보처리쪽에서, 쓰레기정보가 입력되면 출력도 시원찮다 대충 그런 뜻... Google:GIGO+meaning ) garbage in garbage out 나쁜 데이터에선 나쁜 결과가 나온다 [[신호및시스템,signals_and_systems]] [[신호,signal]] [[통신,communication]] = IO 없는 experimental/esoteric PL = Category: No IO - Esolang https://esolangs.org/wiki/Category:No_IO ---- https://gunkies.org/wiki/Input/output https://ko.wikipedia.org/wiki/입출력 https://simple.wikipedia.org/wiki/Input/output https://en.wikipedia.org/wiki/Input/output [[분류필요]]