분류 전체보기
-
[Operating System] Deadlock운영체제 2023. 4. 22. 17:03
이번 포스팅에서는 Concurrency 하게 프로세스를 운영하면서 생길 수 있는 데드락 문제에 대해서 알아보겠습니다. 데드락이란 무엇인가? 사전 상으로 "교착 상태" 를 의미하며, OS 에서 이르는 데드락의 의미는 둘 이상의 프로세스가 서로를 기다리며 아무것도 할 수 없는 상태를 의미합니다. 다음 그림과 같은 상황이 그렇습니다. 위 상태를, 각 프로세스의 진행상황에 따라 어떤 상황이 발생할 수 있는지 그래프로 나타내면 다음과 같습니다. 회색 구역으로 진입하는 3, 4 번의 flow 는 deadlock 입니다. 서로가 서로에게 필요한 자원을 점유하고 있기 때문에 시간이 흐르더라도 각 프로세스는 더이상 진행할 수 없습니다. 그 외의 1,2,5,6 의 상황은 각 프로세스가 원하는 자원을 즉시 받지 못할 뿐, ..
-
[Data Communication] Encapsulation 시 Ethernet Header 의 Destination 이 어떻게 작성되는가?데이터 통신 2023. 4. 18. 23:57
오른쪽 Host 처럼 우리가 어떤 HTTP 요청을 보낸다고 하자. 그러면 이것이 Encapsulation 을 할 때 , TCP 계층에서 Destination 의 포트를 적고 IP 계층에서는 DNS 를 통해서 IP 주소를 받아온 뒤 IP Header 에 Destination IP 를 적을 수 있다고 생각했다. 그런데 Data Link 계층에서 Ethernet Header 에 Destination MAC Address 은 어떻게 적을 수 있을까? 내가 서버의 MAC 주소를 다 알고 있을리는 만무하다. 결론 : 도착지 IP 에 해당하는 머신의 MAC 을 직접 담을 수는 없다. 계속된 Routing 을 통해 목적지까지 보낼 수 있다. 찾아보았더니 ARP (Address Resoultion Protocol) 이라..
-
[Data Communication] IP 주소를 왜 쓸까?데이터 통신 2023. 4. 18. 19:30
이런 의문이 들었다. IP 주소도 어차피 router 거치면서 다 찾아가는데 그럴거면 MAC 주소를 다 등록해놓고 MAC 주소를 라우팅해서 찾아가면되는데 IP 주소를 왜 쓸까?? 이 부분에 대해 찾아본 결과 다음과 같이 정리할 수 있었다. 1. 일단 MAC 주소와 IP 주소는 용도가 다르다. 먼저, MAC 주소는 NIC 별로 조금 더 추상적으로는 컴퓨터나 스마트폰 같은 기기별로 고유한 값을 갖는다. 이 주소는 기기가 공장에서 만들어질 때 정해진다. 즉, 기기와 기기를 구분하기 위해 사용할 수 있다. 반면, IP 주소는 인터넷에 연결된 Host들이 서로 통신할 때 사용되는 주소다. MAC 주소의 구별단위는 기기였는데, IP 주소의 구별단위는 Host다. 즉 기기가 달라지더라도 Host 만 같으면 그만이다...
-
[Data Communication] Switching, 회선 교환과 패킷 교환데이터 통신 2023. 4. 15. 01:46
여러 대의 컴퓨터를 잇다보면 교차점 (Intersection) 이 생길 수 있습니다. 즉 A 컴퓨터에서 E 컴퓨터로 데이터를 전송하려 할 때 그 사이에 있는 B,C,D 컴퓨터 중 어떤 컴퓨터를 거치느냐에 따라 E 로 가는 Route 가 다릅니다. 이렇게 교차로에서 메세지를 교환하는 기술을 Switching 이라고합니다. 이번 포스팅에서는 스위칭에 대해 알아보겠습니다. 회선 교환 (Circuit Switching) 전화의 경우 Circuit Switching 방식을 사용합니다. 회선 교환 방식의 특징은 다음과 같습니다. 통신 시작 전에 연결 설정 필수 통신 종료 이후 연결 해지 필수 예전에는 위의 그림과 같은 Circuit Switch 를 사용했다고합니다. 즉, A 라는 전화기에서 E 라는 전화기로 연결할..
-
[Operating System] 동시성 제어 2운영체제 2023. 4. 15. 00:47
이전 포스팅에서 동시성 문제를 어떻게 해결할 수 있는가? 에 대한 소프트웨어적인 해결책에 대해 알아보았습니다. 이번 포스팅에서는 하드웨어의 Support 을 받아 동시성 문제를 해결하는 방법에 대해 알아봅시다. 먼저, 동시성 문제를 어떻게 해결할 수 있었는지 복습해봅시다. 동시성 문제의 해결책으로 두가지 방법이 있었습니다. 1. Critical Section 의 Code 를 실행할 때 Interrupt 를 Disable 해서 Atomic 하게 처리한다. 2. Critical Section 의 위/아래로 Entry Section/End Section 을 만들어 Critical Section 을 Fence 안에 두어 Mutual Exclusion 을 보장한다. 그리고 이 두가지 방법 중 2번째, Fence ..
-
Github Actions 에서 멀티 아키텍쳐 도커이미지 빌드 시 최적화삽질 2023. 4. 14. 01:00
문제점 핵심 : 하나의 머신에서 멀티 아키텍쳐 이미지 빌드하는 것은 에뮬레이터를 거쳐야 해서 매우 느리다. SW Academy 프로젝트를 React App 과 SpringBoot 를 Dockerize 한 뒤 Docker-Compose 를 통해 GCP 로 배포하기 위해 Github Action 으로 CI/CD 파이프라인을 구축하고자 했다. CI/CD 구축에 문외한인 나는 가장 빠른 방법인 ChatGPT 에게 파이프라인을 작성해달라고 했다. Github Action 을 정의하는 YAML 이 직관적이라서 이해하는데 어려움은 없었다. ChatGPT 로 얻은 초기 CI/CD 코드 더보기 name: CI/CD on: push: branches: - main - Refactoring_ilmo jobs: build_a..
-
[Lab - Data Over Sound] 모스부호로 데이터 전송하기데이터 통신 2023. 4. 5. 21:41
https://youtu.be/iKrzUMVWFtk 모스부호 인코딩 파이썬 코드 https://github.com/CNU-DataNetwork/3week_morse-OneEpitome 모스부호 디코딩 with Android Studio https://github.com/OneEpitome/DataComm_Lab_AndroidMorseCode 이 실습의 핵심 요소는 다음과 같습니다. 입력받은 문자열을 모스부호로 인코딩하기 인코딩 된 모스부호를 아날로그 신호 (소리) 로 변환 모스부호로 인코딩 된 아날로그 신호를 다시 텍스트로 디코딩 def start(self, text ='', test=False, filename = FILE_NAME): if test is False: while True: print('..
-
[Data Communication] 다중화 (Multiplexing)데이터 통신 2023. 4. 4. 20:35
사람이 많은 장소에서 대화를 하면, 대화의 소리가 잘 들리지 않을 때가 있습니다. 또, 유독 어느 사람의 목소리는 또 잘 들리는 경우가 있습니다. 지난 시간에 라인 코딩, 블록 코딩등을 통해 디지털 데이터를 디지털 신호로 만들어 전송하는 것을 배웠습니다. 그렇다면 케이블로 연결된 컴퓨터끼리 어떻게 통신할 수 있는지에 대한 감은 좀 옵니다. 하지만 일반적인 상황에서 여러대의 컴퓨터는 동시에 인터넷에 연결되어 작동합니다. 그러면 그 많은 컴퓨터 (케이블) 가 중앙의 어떤 서버로 모조리 연결되는 걸까요? 그것은 잠깐 생각해봐도 물리적으로 굉장히 어려울 것임을 쉽게 생각할 수 있습니다. "여러개의 케이블을 한 번에 모아 전송할 수 있는 방법이 있지 않을까?" 도 짐작해볼 수 있습니다. 그렇다면 여러대의 컴퓨터는..