One of the defining features of UNIX and UNIX-like operating systems is that "everything is a file” (This is more correctly written as "everything is a file descriptor or a process”) Documents, directories, links, input and output devices and so on, are all just sinks for or sources of streams of bytes from the point of view of the OS(참고4)

유닉스(UNIX)(from1)에서는 터미널에 출력하는 작업(참고4)이나 디스크에 값을 쓰는 작업이나 모두 파일에 쓰는 작업으로 본다(참고1). 이 접근법과 그 장점은 1973년 톰프슨의 논문에서 찾을 수 있다(참고2,3).


parse me : 언젠가 이 글에 쓰이면 좋을 것 같은 재료들.

  1. 표에 있는 3가지 디스크립터(표준 입력, 표준 출력, 표준 에러)는 프로그램이 시작할때 셸의 디스크립터의 복사본을 상속 받는다. 셸은 보통 3가지 파일 디스크립터가 언제나 열린채로 동작 한다.
  2. Other common /dev files include /dev/zero which produces a constant stream of zeros, and /dev/null, which accepts all input and does nothing with it (think of it like a rubbish bin)
  3. bb8. [info] title: 껍데기를 의미하는 셸(Shell), 핵심을 의미하는 커널(Kernel), 과거의 유물 터미널(Terminal)

from : 과거의 어떤 생각이 이 생각을 만들었는가?

  1. bb8.1_1. title: 오늘날 모든 운영체제들의 근본이 되는 운영체제는 1970년대 어셈블리, B언어, C언어를 이용해 작성된 유닉스(UNIX)이다.

supplementary : 어떤 새로운 생각이 이 문서에 작성된 생각을 뒷받침하는가?

  1. bc9.3__1. title: TCP 클라이언트와 서버는 소켓이라는 별명을 가진 파일을 생성하고, 해당 파일에 값을 쓰거나 읽는 방식으로 통신한다는 착각하도록 만든다.

opposite : 어떤 새로운 생각이 이 문서에 작성된 생각과 대조되는가?

  1. None

to : 이 문서에 작성된 생각이 어떤 생각으로 발전되고 이어지는가?

  1. [bb8.1_1__2. title: 유닉스(UNIX) 시스템과 유닉스 계열(Unix-like) 시스템에서는 1973년부터 파일에 접근할 때 파일 디스크립터(File descriptor)라는 추상적인 핸들을 이용한다. 이를 기준삼아 다양한 추상화 수준을 엿볼 수 있다. 우리에게 가장 익숙한 파일 포인터는 파일 디스크립터를 애플리케이션 프로그래머가 사용하기 쉽도록 추상화한 것이다. 파일 디스크립터는 각 프로세스에 의해 열린 파일들을 저장하는 구조체 배열인 파일 디스크립터 테이블을 추상화한다. 파일 디스크립터 테이블은 모든 프로세스에 의해 열린 파일들은 저장하는 파일 테이블(File table)을 추상화한다. 파일 테이블은 실제로 파일의 내용을 포함하고 있는 아이노드 테이블(Inode table)을 추상화한다.](https://janghoo.notion.site/bb8-1_1__2-title-UNIX-1973-File-descriptor--a9ac224a116a44d78a9b98fd3a7c7421)
  2. bc9.3__1.1_1. title: 모든 것이 파일인 유닉스 시스템에서 read() 혹은 write() 작업을 수행할 때 EoF 이라는 개념이 있다는 사실에 주의하라.