MS-DOS [[MS도스,MS-DOS]]? { https://namu.wiki/w/MS-DOS } PC DOS - IBM OEM version of MS-DOS DR-DOS - incl. Novell DOS, OpenDOS FreeDOS - [[프리도스,FreeDOS]]? Bing:freedos Ggl:freedos Compatible: Windows 9x, ReactOS NTVDM - DOS for Windows NT? DOSEMU - DOS for Linux? DOSBox 도스용프로그램 { [[디제이지피피,djgpp]] } [[DOS_extender]] =,DOS_extender . DOS_extender { DOS/4GW - DOS/32 - DOS/4GW를 대체하기 위함, free, opensource REL [[DOS_memory]] WtEn:DOS_extender ? [[WpKo:도스_확장자]] = https://ko.wikipedia.org/wiki/도스_확장자 [[WpEn:DOS_extender]] = https://en.wikipedia.org/wiki/DOS_extender } VCPI virtual control program interface DPMI DOS protected mode interface { https://en.wikipedia.org/wiki/CWSDPMI } expanded memory EMS <> = 도스 멀티태스킹 = [[멀티태스킹,multitasking]] [[task_switching]] 태스크스위칭을 위한 소프트웨어로는 DESQview IBM TopView Windows 초기 버전 Concurrent DOS 4.1 with GEM (GEM desktop environment, Graphics Environment Manager) MS-DOS 4.0 (4.01과 다름) DOS Plus 가 있었다. TSR같은 테크닉이 쓰이기도 함. Borland Sidekick? 이야기 5,3은 다운로드 도중 다른 일을 하는 것을 지원했다. = DOS API = from WpEn:DOS_API { 대부분 int 21h. DOS extender + DPMI가 있으면 32비트에서도 DOS API 사용 가능. 처음에는 CP/M 호환으로 시작되었다. (86-DOS, MS-DOS 1.0) 파일은 [[FCB,file_control_block]]으로 액세스. } = DOS Subsystem for Linux = https://github.com/haileys/doslinux https://news.ycombinator.com/item?id=35675887 DOS에서 Linux프로그램을 실행 = DOS networking = [[DOS_networking]] Waterloo TCP (WatTCP) http://wiki.freedos.org/wiki/index.php/Networking_FreeDOS_-_WATTCP [[도스,DOS]] [[네트워킹,networking]] = 특수 파일 = [[파일,file]] > filename / file_name == CONFIG.SYS == http://wiki.freedos.org/wiki/index.php/Config.sys https://en.wikipedia.org/wiki/CONFIG.SYS == AUTOEXEC.BAT == = 자료구조 = == FCB == [[File_Control_Block]] =,File_Control_Block . File_Control_Block =,FCB . file control block (FCB): 열린 [[파일,file]]에 대한 정보가 저장된 data_structure. CP/M 에서 유래? mkl: [[file_descriptor]] [[file_handling]] [[file_handle]] bmks The MS-DOS Encyclopedia / Appendix G: File Control Block (FCB) Structure https://www.pcjs.org/documents/books/mspl13/msdos/encyclopedia/appendix-g/ //foldoc: 개수는 CONFIG.SYS 에서 `FCBS=x,y` 로 지정. x는 한번에 MS-DOS가 열 수 있는 파일 개수. 1~255(포함) 범위이며 기본값은 4. y는 모든 x개가 사용중일 경우 닫을 파일 개수. (DOS 5.0 이후에는 필요 없음) https://foldoc.org/file+control+block https://ko.wikipedia.org/wiki/파일_제어_블록 https://en.wikipedia.org/wiki/File_Control_Block Ndict:"file control block" Bing:"file control block FCB" Ggl:"file control block FCB" [[블록,block]] = DOS(-specific) file formats = Up: [[파일,file]] > [[파일형식,file_format]] [[포맷,format]] / [[형식,format]] > [[파일포맷,file_format]] .... (pagename not determined yet) Srch:file_format DOS_file_format == DOS executable file format == .SYS - driver ? // 이것도 executable로 분류? or 따로? .COM .EXE - MZ ? (Windows 는 PE ?) 였나... 가물.. 둘다 처음부분에 MZ로 magic number? header가 있고 PE portable_executable 는 Windows 전용이었나? chk 저걸 DOS에서 실행하면 This program cannot be run in DOS mode. ?를 출력해주는 것의 이름이 뭐였지 = 문제점/단점/비판/.... = [[memory_size]] [[메모리,memory]] [[크기,size]] Ggl:"DOS 640kb limit" 그래서 x86이 i386부터 [[보호모드,protected_mode]] 4GB까지 사용 가능하게 되었음에도 직접 제대로''(? 정확히 rewrite)'' 읽고 쓰지 못하고, [[DOS_extender]] { WtEn:DOS_extender WpEn:DOS_extender "도스 익스텐더" Naver:"도스 익스텐더" Ggl:"도스 익스텐더" Bing:"도스 익스텐더" "DOS extender" Ggl:"DOS extender" } [[오버레이,overlay]] { WtEn:overlay "도스 오버레이" Naver:"도스 오버레이" Ggl:"도스 오버레이" Bing:"도스 오버레이" "DOS overlay" Ggl:"DOS overlay" ... } ....(and?) 등의 복잡한/indirect/clumsy,,번거로운?,,/.... [[방법,method]]을 사용해야 큰 메모리를 쓸 수 있었던...??? chk 이것은 응용프로그램들이 IBM/PC architecture에 의존적이기 때문? chk (사실 dos application들은 속도를 위해 DOS가 제공하는 API를 의도적으로 무시하고 H/W에 (BIOS, I/O port, ....에) 직접 접근(direct access)하는 경우가 많았다 - 이것은 호환성 문제를 더 악화시킨?) 그러고보니 H/W에 대한 권한 제어를 손 놓고 있었던것도 DOS의 문제점/단점 중 하나. (이건 DOS 설계 잘못이라기보다는 당시 PC XT/AT 이때쯤의 PC architecture 자체의 문제.) 요새의 OS들은 거의 모두 safety때문에 ring ( [[WtEn:ring#Noun]] = https://en.wiktionary.org/wiki/ring#Noun 11. "(computing theory) A hierarchical level of [[privilege]] in a computer system, usually at hardware level, used to protect data and functionality (also protection_ring)." ) [[capability-based_security]] =,capability-based_security . capability-based_security { WtEn:capability-based_security } ... 등을 적극 활용하여 program과 kernel의 권한 차이를 명확히 한다. 당시에는 그런 거 없었다.