이거는 좀 많이 선 넘은거겠지??



그러니까 나는


tty 얘네를 보면


멀티플렉싱이 아주 잘 이루어져있고,

내부 버퍼도 잘 주어져있고,


명령어를 기반으로 시그널을 전달하는 일반적인 체계가 형성되어있고,



아니 걍 난 이 프로세스 그룹이라던지 세션이라던지


그리고 각 세션별로 하나의 포트를 담당하는거라던지 (일부러 포트라고 표현했음. 원래는 문자디바이스가 맞는표현)



난 걍 이게 존나 마음에 들어.


어쩌면 내가 아직 네트워크를 공부를 안했으니까, 네트워크가 무거울거라고 겁을 먹고


tty 와 세션,

pgrp 과 parent 에 관계에 의한 시그널 전달체계 및 tty 와 소통을 멀티플렉싱하는것


이걸 잘 본따면... 뭔가 재밌는걸 할 수 있지 않을까??


하는 심정이란 말임.




근데, 이게 생각보다

생각보다 뭔가 깔끔하지가 않네


한번에 확 정리된다는 그런 느낌이 좀 없음.



문자 그대로, 콘솔에서 프로세스들 제어하기 위해서 만든거 같고,

좀 뭐랄까... 흠.... 그러니까 일반적인 용법이 아니면 사실상 사용하기 애매하네.




예를 들자면,


새로만든 프로세스를 다른 이미 존재하는 백그라운드 pgrp으로 옮겨담는다던지 이런 행위들이라던지,

같은 pgrp같에 멀티플렉싱이 되는건 좋은데, 걔네들간엔 다시 규칙이 좀 애매하다던지



음 잘 모르겠네

솔직히 깊게 파면 뭔가 해볼만한건 맞는데


이건 좀 과하게 낭비같다.



좀 뭐랄까 일단 깔끔하지가 않음.


내가 공부가 덜되어서 그런게 맞을텐데, 솔직히 그정도까지 하고싶진 않다.



예시로, 두개의 세션리더가 서로 부모관계로 연결되어있다던지... 기타 등등


아니 이런 경우는 솔직히 그냥 "너 뭐하냐? 그거하라고 만든게 아닐텐데?" 소리 나오는거같은데

이걸 굳이 뜯어보고 싶지가 않음.



무슨 보니까, 세션이 "자신이 선택 가능한 프로세스 그룹"의 리스트를 따로 저장하는것 같지도 않음.


그냥, Ctrl + Z 했을 당시의 프로세스 그룹을 기억하는거 같음.


그 말은, Ctrl + Z 라던지, 아니면 아예 처음부터 백그라운드로 실행시키고 (&를 이용해서), 해당 프로세스가 자신의 프로세스 그룹을 없애버리고 몽땅 다 다른 프로세스 그룹으로 이주해버리고 나면,


다시 fg 로 해당 그룹에 대해서 포어그라운드로 돌아오라는 이야기가 가능하던데 (이거 존나 웃긴상황이잖아)


그러면 이 웃긴상황이 실제로 어떤 작용을 일으키는지 보면



걍 없는 프로세스그룹이 혼자 tty를 점유하고, 없는 프로세스다보니까

해당 프로세스 그룹한테 종료 인터럽트를 아무리 보내봤자 종료 되는 프로세스도 없고,

그냥 뭐 시발 그렇게 먹통됨.



이거 보면, 이게 흠.... 여하튼 창의적인 용법이라던지 에러처리 이런거 제대로 안해놓은거 같고



프로세스 그룹의 용도

세션의 용도

이런게 약간 뻔한거같음. "아니 너 병신도 아니고 그걸 왜 그렇게 옮겨?" 싶을 만한 상황이 많은거 같은데,



여하튼 내가 지금 뭔 생각을 하는지도 모르겠다.



그냥 네트워크는 포트단위로 생각하고 TCP 쓰면 되지? 씨... 발....




솔직히 말할게.



내가 지금 하고 있는 고민, 아마


"어 tty는 대충만들어도 되는데, 너 말대로 네트워크는 중요하거든? 그래서 그걸 더 다듬어서 머리 굴려서 포트라는것을 만든거야"


하면서


내가 지금 tty 보면서 어 이거 잘만하면.... 포트를 만들수있겠는데


하는 그 논리로


포트를 만들었을거같기는 해 ㅇㅇㅇㅇㅇ



아마 맞을거야.



그리고, tty를 세션과 pgrp 단위로 분배하는것보다


포트 하나하나당 read/write 를 주고 상시 접근 가능하도록 했을거야.

(tty는 상시 접속이 안됨. tty->pgrp 이외의 pgrp들은 전부 read가 막힘. 그게 백그라운드가 하는 일이고)







내 명령은 너한테 보낼게


를 지정해주는게 세션과 pgrp의 역할이라고 생각하는데,



그냥 네트워크는 그걸 전부 포트로 처리했나보다. ㅇㅇㅇㅇ

그렇게 생각하고나니까 마음이 편해졌음.



그리고 나 네트워크는 걍 공부 스킵한다.



대충 tty랑 비슷할거라고 생각중임.



너희 한번도



뭐야 이거 파일인거야?? 왜 파일임??


그러면


내가 여기에 write 하고 쟤가 read 하면


어 뭐임 왜 내가 write 한건 쟤만 read 가능하고

쟤가 write 한건 나만 read 가능하고


왜 내가 fd 에 write 해놓고

같은 fd에 read 하는데 이걸 못읽지?? 뭐 그런 경험 안해봤냐??



뭐 여하튼 나는 그 의문만 풀리고 나니까 딱히 네트워크를 공부하고 싶은 마음은 사라졌다.




나중에 대충 tcp와 udp의 차이라던지 그 이상한 세팅들 사용법만 익히면 되지 않을까??



이거 구현체를 뜯어보고싶지는 않다. 그래서 앞으로 1주일정도 시간이 붕 뜨는거 같은데... 흠...


그동안 걍 쿠버네티스랑 aws 끝내놓을까 싶음.



뭔가



생각보다 많이 천천히갔거든?? CS app 끝난 이후부터는 이게 책을 따라가는 진도가 아니라 코드를 탐색하는 진도다보니까

놀면서 하게 된거같은데


이상하게 시간이 남네... 왜그러지..



나 계획을 많이 삭제한건가.



여튼, 그냥 이쯤 해 두고(시스템프로그래밍하는데에는 문제 없어보이는 수준에 온거같음)


쿠버 aws 공부하고 6월부터 ㄹㅇ로 프로그래밍 시작하면 되겠지?


한 반년간 퓨어공부만 한거같다. (러스트부터 시작해서)

코드안짠지 오래됨. 아니 뭐 러스트로 웹서버만들어보기 프로젝트 그런거는 해봤지만, 그것도 공부용이었으니.




aws 쿠버

그리고 hyper 조금만 알아보고,


정 안되면 걍 일단 노드 쓰지 뭐. (예전에는 노드/디노 이쪽 레이어가 중요해보였는데, 지금은 걍 뭐 언제든지 후딱 갈아치워도 문제 없는, 문자 그대로 단지 http 서버일 뿐이라고 생각한다. 데이터센터가 핵심이고 쟤들은 걍 light weight 한거같음. 막말로 걍 일단 돈이 생기고 나면 "아 그쪽은 뭐 일단 대충하셔도 됩니다. 님들 하고싶은대로 대충 웹땔감하십쇼" 하고 맡겨버려도 한동안 노상관인 영역임.)



aws 쿠버 hyper 1주일이면 충분할거고,



그러면 6월부터 뭘 할거냐인데


일단, 뭐 걍 기획서 쓰고 외주맡겨버리는건 어때요? 싶었지만 그것보다 내가 직접 리액트를 공부해서 그림그리는게 더 빠를거같고 (난 말로 설명하는거 존나 귀찮으니까)

일단 대충만들고서 나중에 "어 너희 뭐 무슨 도구를 써도 상관없고 니들 알아서 디자인해서 ui 싹 바까라~" 하면 그만인거고

기획도 내가 하기 싫으니까 디자이너한테 맡기면 되는거고


딱 그 전까지만 내가 혼자 리액트로 그림그릴정도로만 리액트 쓸거고 (이제까진 바닐라 자스썼었는데, 그거 걍 공부용이었다고 치고 생산성이 존나게 낮으니까 그지랄 그만하려고.)




여하튼 내가 뭐 이제까지는 진짜 집중해야할 대상이 안보여서 그런지,

윗 레이어단계부터 뭔가 제대로 해보려는 생각을 가지고 있었음. 리액트보다 먼저 바닐라자스를 써본다던지, 노드 vs 디노의 선택이 중요하다던지 뭐 그런식으로


근데 지금은 뭐 거기는 내가 힘써야 하는 영역은 아닌거 같고,


대충 aws + 쿠버 파놓고, DB 뭐 걍 아무거나 하나 쓰고 , 리액트 + 노드(디노/하이퍼) 건 쓰면서

대충 일단 껍데기 만들어 놓은 다음에


드디어 "프. 로. 그. 래. 밍." 시작하면 될 거 같은데


아마 일단은 C로 할듯???




아 근데 껍데기에서 오래걸릴수도 있겠다. 웹소켓쪽으로 "코딩"해야하는게 좀 많아보임