[ 시스템 프로그래밍 ] fork()와 execve()의 차이를 알아보자 포스팅 썸네일 이미지

프로그래밍

[ 시스템 프로그래밍 ] fork()와 execve()의 차이를 알아보자

1. fork()란 무엇인가 - 새로운 프로세스를 생성한 뒤에 현재 프로세스의 메모리 상태를 새로운 프로세스에 그대로 복사하는 것이다. - 부모 프로세스의 메모리 상태에서 몇 가지를 제외하고 그대로 복사하는데 이 중에 부모 프로세스와 다른 것은 pid이다. - 아래 결과를 보면 부모 프로세스와 자식프로세스는 독립된 메모리 주소를 사용한다. ( Code 영역은 공유함 ) - 아래 출력 결과를 보면 자식 프로세스에서 printf를 찍어도 stdout으로 출력된다. 즉, 부모 프로세스의 파일 디스크럽터를 자식프로세스에서 복사한다. - fork로 만들어진 자식 프로세스 부모 프로세스 사이의 통신은 IPC통신을 한다. 대표적으로는 PIPE통신이 있다. - return값은 2개이고, 0과 프로세스 id이다. 0은 ..

2022.04.14 게시됨

[ Docker ] 도커로 로드밸런싱한 서비스 배포하기 포스팅 썸네일 이미지

프로그래밍

[ Docker ] 도커로 로드밸런싱한 서비스 배포하기

1. 로드밸런싱이란? - 로드밸런싱이란 클라이언트가 많아졌을 때를 대비해 하나의 대표 서버를 두고, 대표 서버 뒤에서는 각자의 역할만을 하는 서버를 여러대 두는 것입니다. - 아래의 gif를 보시면 한번에 이해될 것 입니다.(gif설명이 너무 좋아서 가져왔습니다) - 즉, 하나의 서버만을 이용하면 과부하가 걸려 요청을 받을 수 없게 되거나 서비스가 느려집니다. 이를 방지하기 위해 로드밸런서가 요청을 분담하거나 구별해 일을 나누어 처리하는 것입니다. 2. 도커를 이용한 로드밸런싱 실습 - 먼저 저는 Windows에서 로드밸런싱을 실습하기 위해 Docker Desktop과 node.js을 이용하였습니다. - "npm init"을 하여 package.json을 생성한 뒤에 웹 페이지와 도커 컨테이너를 만들어 ..

2022.03.24 게시됨

[ AWS ] 도커를 이용해 AWS에서 배포하기 포스팅 썸네일 이미지

프로그래밍

[ AWS ] 도커를 이용해 AWS에서 배포하기

AWS 계정 및 인스턴스 접속 - 처음 AWS에 가입하게 되면 Free Tier요금제를 이용해 무료에 가까운 저렴한 가격에 이용할 수 있다. - 가입을 해준 다음 EC2를 이용해 가상 서버를 만든다. 이후에는 우측에 인스턴스 시작에서 Free tier용 원하는 이미지를 선택한다. 나는 ubuntu18.04 LTS x86을 선택했다. 키페어는 ssh접속 시에 사용하는 private key이다. 다운로드 받아 리얼 해커들이 못 털어가게 꼭꼭 숨겨놓자 인스턴스 선택 후 연결 버튼을 누르면 ssh로 어떻게 접속하는지 나온다. ex) ssh -i ~~~ 인스턴스를 ssh로 할시에 vi를 써야 하는데 렉이 많이 걸리니까 vscode로 연결해서 작업할 예정이다. 연결 방법은 아래 블로그를 참고했다. https://k..

2022.01.21 게시됨

[ Network ] PC에서 모바일 패킷 캡쳐 방법 포스팅 썸네일 이미지

프로그래밍

[ Network ] PC에서 모바일 패킷 캡쳐 방법

항상 컴퓨터 패킷만 캡쳐하고 분석하다가 이번 주부터는 모바일 앱에서 이용하는 패킷을 캡쳐를 해야했다. 하지만 모바일에서는 wireshark도 안 깔리는데 어떻게 하는지 궁금했는데 조교님이 친절하게 링크도 보내주셨다. https://domdom.tistory.com/221 요약하자면 이렇다. 1. wifi가 되는 컴퓨터/노트북에서 핫스팟 공유 키기 2. 휴대폰으로 핫스팟에 연결 3. 로컬 영역 연결 10에서 핸드폰이 주고 받는 캡쳐 내용이 뜬다. 유투브 정지 누를 때 오고 가는 패킷이 멈추는 것을 보니 제대로 동작한다

2022.01.06 게시됨

[Network] STUN이란 포스팅 썸네일 이미지

프로그래밍

[Network] STUN이란

STUN이란 VoIP (보이스톡, 화상통화..)등등 실시간 통신을 위한 프로토콜이다. P2P통신시에 NAT를 탐색하기 위해 사용한다. P2P방식에서는 public ip를 사용해야 하는데 NAT를 사용한다면 P2P통신 시에 상대방의 public IP를 알지 못해 STUN프로토콜을 이용해 public IP와 port번호를 알아낸다. UDP, TCP, TLS등 다양한게 이용한다. 참고문헌 및 힘들었던 부분 1. https://velog.io/@doontagi/STUN%EC%9D%B4%EB%9E%80 2. https://ko.wikipedia.org/wiki/STUN 3. https://gh402.tistory.com/45

2021.07.08 게시됨

[Network] NAT란 포스팅 썸네일 이미지

프로그래밍

[Network] NAT란

NAT란? NAT(Network Address Translation)란 공유기(라우터)를 통해 하나의 공인 IP를 많은 기기들이 공유하는 것을 도와주는 기술이다. 만약 1.1.1.1이라는 공인 IP를 사용한다면 각각의 PC에 부여 받는 IP들은 사설 IP인 192.168.xxx.xxx라는 IP 주소를 부여 받는다. 하지만 외부에서 볼 때는 1.1.1.1이라는 IP를 사용하는 것처럼 보인다. NAT등장 이유 IP v4의 주소 고갈 IP하나를 여러 기기가 공유하기 때문에 비용 절감 실습 실제로 집에서 공유기를 이용할 때 NAT를 통해 사설 IP를 할당 받는지 공유기 설정을 열어서 확인해보았다 집에서 Tab, PC, SmartPhone 3개의 장비를 이용해서 192.168.1.~~라는 사설 IP주소를 각각 할..

2021.07.08 게시됨

[ncurses] linux ui library 포스팅 썸네일 이미지

프로그래밍

[ncurses] linux ui library

linux UI library 다른 언어를 이용하면 더 쉽게 할 수 있었을텐데 하필 왜 C언어로ㅠㅠㅠ ncurses를 이용해 c언어로 ui 프로그래밍을 할 수 있다. gtk를 이용하면 더 세련되게 프로그래밍을 만들 수 있을 것이다. 학교 실전설계 프로젝트를 진행하면서 너무 힘들었다ㅠㅠㅠ 아래는 2개월동안 UI프로젝트의 결과물 소스코드이다 정말 헤더파일 나누고 Makefile작성하고 좋은 경험을 많이 했던 것 같았다. 특히 영어로된 문서들 읽고 코드 짜는게 젤 어려웠다 https://github.com/Psj0221/ddokddok Psj0221/ddokddok 숭실대학교 겨울방학 실전 프로젝트 멘토링 4조 레퍼지토리. Contribute to Psj0221/ddokddok development by cr..

2021.05.16 게시됨