반응형

발단

왜 프로세스와 스레드를 배우는지는 알겠다. 한정된 리소스를 효율적으로 관리하고, 최상의 아웃풋을 내기 위해서이다.

그런데 ENIAC 시절부터 프로세스와 쓰레드가 있었을까?

그건 아닐 것이다. 그러면 어떠한 이슈때문에 프로세스 쓰레드가 탄생하게 됐을까?

 

전개

사실 처음 공부한 자료에서는 이에 대해 잘 안나와있었는데, 공룡책을 참고하다보니 이에 대해 나와있었다.

 

프로세스 탄생 배경

 초기의 컴퓨터 시스템은 한번에 하나의 프로그램만을 실행하도록 허용했다. 따라서 프로그램이 시스템을 완전히 제어하고, 모든 자원에 접근해도 됐다. 그런데 메모리에 다수의 프로그램이 적재되어 병행실행되는 것이 허용되면서 다양한 프로그램을 보다 견고하게 제어하고 구획화할 필요가 생기면서 프로세스라는 개념이 탄생하게 되었다.
-운영체제 Abraham Silberschatz (공룡책) 10판, 117pg

 

 

쓰레드 탄생 배경

하나의 응용프로그램이 여러개의 비슷한 작업을 수행할 필요가 있는 상황들이 존재한다. 이때 각각의 프로세스를 생성하고 컨텍스트 스위칭을 한다면, 많은 오버헤드를 감수해야한다.

따라서 스택만 따로 할당받고, 코드,데이터, 힙영역은 공유하는 쓰레드가 탄생하게 되었다.

반응형
반응형

발단

docker에 대해 공부하다가, Yaml 파일 형식에 대해 처음 접하게 되었다.

그런데 문득 왜 yaml파일이라는 것이 생긴거지?라는 생각이 들었다.

 

전개

인터넷에 검색해봤는데, yaml파일을 만들게 된 이유에 대해서는 설명이 없었다.

그래서 yaml 공식문서에 있는 사람에게 메일을 보내 물어보기로 했다.

https://yaml.org/spec/1.0/#id2488873

 

YAML Ain't Markup Language (YAML) 1.0

YAML Ain't Markup Language (YAML™) 1.0 Final Draft 2004-JAN-29 Brian Ingerson Copyright © 2001-2004 Oren Ben-Kiki, Clark Evans, Brian Ingerson This document may be freely copied provided it is not modified. Status of this Document This is an intermediat

yaml.org

보낸 메일과 답장

결론

오렌은 친절하게 답변을 해줬는데, 답변내용은 아래와 같다.

2004년 당시 어떠한 프로그래밍 언어에서도 사용 가능한 data structure를 de/seriallizing 가능한 포맷을 찾고 있었다.

그런데 그때 당시 XML은 이것이 불가능햇고, 우리가 새로 만들게 되었다.

 

 

 

+ 궁금했던 것.

1. Yaml의 장단점은 무엇인가?

 

장점: 주석 사용가능, 한글을 그대로 사용해도됨

단점: 개행, 공백으로 블록 인식. 이에 따라 한줄로 작성 불가함.

(사실 이는 단점이라기보다는 특징에 가까운 것 같다.)

 

https://yaml.org/spec/1.2-old/spec.html#id2759572

공식문서에 따르면, JSON의 최우선 디자인 목표는 간단함과 보편성이고 이에 따라 가독성을 조금 포기하는 대신에 생성과 파싱이 용이하게끔 한것이다.

반면에 YAML의 최우선 설계 목표는 가독성과 데이터구조 serialization이다. 따라서 가독성이 매우좋지만, 생성하고파싱하는데 약간 더 시간이 걸린다.

 

2. Yaml을 restful api에서 데이터 전송형식으로 쓸 순 없을까?

일단 앞서 언급했듯이, json이 좀더 생성과 파싱에 용이하다.

그리고 yaml은 공백으로 구분하는데, 이것은 json파일보다 크게 만들고, json보다 복자하다.

그리고 브라우저들은 json을 natively 제공한다 

하지만 위와 같은 복잡한 구조 떄문에 configuration file로는 yaml이 적합하다.

https://www.quora.com/Why-isnt-YAML-used-instead-of-JSON-for-the-web-as-its-easier-to-read-for-both-humans-and-machines

https://www.quora.com/Will-YAML-replace-JSON

 

Will YAML replace JSON?

Answer: JSON is actually a subset of YAML 1.2. YAML supports more “features” than JSON (comments, sets, ordered maps, timestamps, user defined types etc.), so it might as well gain more traction in the future, but I don’t think it will replace JSON.

www.quora.com

https://stackoverflow.com/questions/1726802/what-is-the-difference-between-yaml-and-json

 

What is the difference between YAML and JSON?

What are the differences between YAML and JSON, specifically considering the following things? Performance (encode/decode time) Memory consumption Expression clarity Library availability, ease of ...

stackoverflow.com

 

반응형

+ Recent posts