입출력,IO

IO, I/O, 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..를 주고 받는 것?


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 .

(2023-09-27에 대충 요약.)
}
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
I/O address
WpEn:I/O_address is redir.
I/O controller
IRQ interrupt_request
PnP
Cmp:
memory-mapped file (memory-mapped I/O와 다름) (IO보다는 메모리관리쪽에 가까운 얘기)
mmap (memory-mapped I/O와 다름) (memory-mapped file I/O 방법)
MKLINK:
포트,port
스트림,stream { 자료의 흐름, stdin stdout stderr }
버퍼,buffer =버퍼,buffer =,buffer . 버퍼 buffer
{




용도는 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


WpEn:Circular_buffer
= https://en.wikipedia.org/wiki/Circular_buffer
"circular buffer, circular queue, cyclic buffer or ring buffer is..."


생각
특히 하드웨어,hardware 입출력,IO or device_driver { 장치드라이버 ? MKLdriver_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://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:프레임버퍼


} // 프레임버퍼




Inter:


Ndict:버퍼 buffer
Ggl:버퍼 buffer
버퍼+buffer
}
캐시,cache =,cache . cache
{
캐시




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

신호/통신 분야에서

여기선 보통 시간 $\displaystyle t$ 에 따라
입력,input$\displaystyle x(t),x[n]$
출력,output$\displaystyle 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
나쁜 데이터에선 나쁜 결과가 나온다