목록전체 글 (75)
Arthur's Blog
단순한 네트워크 두 개의 컴퓨터가 통신이 필요할 때, 다른 컴퓨터와 물리적으로(이더넷 케이블) 또는 무선(WiFi)으로 연결되어야 한다. 모든 현대 컴퓨터들은 이러한 연결 중 하나를 이용하여 연결을 지속할 수 있다. 이런 네트워크는 두 대의 컴퓨터로 제한되지 않는다. 원하는 만큼의 컴퓨터를 연결할 수 있다. 그러나 이렇게 연결할수록 매우 복잡해진다. 예를 들어 10대의 컴퓨터를 연결하려는 경우 컴퓨터 당 9개의 플로그가 달린 45개의 케이블이 필요하다. 이 문제를 해결하기위해 네트워크의 각 컴퓨터는 라우터라고하는 특수한 소형 컴퓨터에 연결된다. 이 라우터에는 단 하나의 적업만 있다. 주어진 컴퓨터에서 보낸 메시지가 올바른 대상 컴퓨터에 도착하는지 확인한다. 컴퓨터 B에게 메시지를 보내려면 컴퓨터 A가 메..

병행프로세스란? 병행프로세스 개념 프로세스들이 독립적으로 작업을 수행하거나 또는 다른 프로세스와 협력하며 특정 기능 수행 상호작용 필요 - 제한된 자원을 공유하지 위해서는 프로세스는 서로 동기화되어야 함 비동기 병행 프로세스 : (비동기) 다른 프로세스들의 진행상태를 전혀 모르고 각기 독립적으로 수행하면서 (병행) 다수의 프로세스들이 동시에 존재하며 공유자원에 접근할 수 있는 프로세스 -> 프로세스들이 동시에 자원 및 데이터에 접근할 수 있으므로 동기화 알고리즘이 필요 병행프로세스 과제 공유자원을 서로 베타적으로 사용 병행프로세스 사이에는 협력 또는 동기화가 이루어져야 한다. 두 프로세스 사이에는 데이터 교환을 위한 통신이 이루어져야 한다. 프로세스는 동시에 실행되는 프로세스의 속도와 관계없이 일정한 실..
1. 교착상태란? 둘 이상의 프로세스들이 다른 프로세스가 차지하고 있는 자원을 서로 무한정 기다리고 있어 프로세스의 진행이 중단된 상태를 의미한다. 1. 교착상태의 필수 조건 상호 배제(mutual exclusion) 조건 : 프로세스들이 그들이 필요로 하는 자원에 대해 베타적인 통제권을 요구하는 것으로, 한 프로세스가 사용 중이면 다른 프로세스는 반드시 기다려야 하는 경우이다. -> 동시 사용 불가 점유와 대기(hold and wait) 조건 : 프로세스가 적어도 하나 이상의 자원을 할당받은 채로 다른 프로세스의 자원이 해제되기를 기다리는 경우이다. 비선점 조건(nonpreemption) : 프로세스가 점유한 자원은 사용이 끝날 때까지 해제할 수 없는 경우이다. 환형 대기 조건(circular wait..
HTTP 개요 HTTP는 HTML문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜이다. HTTP는 웹에서 이루어지는 모든 데이터 교환의 기초이며, 클라이언트-서버 프로토콜이기도하다. 클라이언트-서버 프로토콜이란 수신자 측에 의해 요청이 초기화되는 프로토콜을 의미한다. 하나의 완전한 문서는 텍스트, 레이아웃 설명, 이미지, 비디오, 스크립트 등을 불러온 하위 문서들로 재구성된다. 클라이언트와 서버들은 개별적인 메시지 교환에 의해 통신한다. 보통 브라우저인 클라이언트에 의해 전송되는 메시지를 요청(request)이라고 부르며, 그에 대해 서버에서 응답으로 전송되는 메시지를 응답(response)이라고 부른다. 1990년대 초에 설계된 HTTP는 거듭하여 진화해온 확장 가능한 프로토콜이다. HTTP는 ..
깃허브 액션(GitHub Actions) GitHub Actions은 GitHub 저장소를 기반으로 소프트웨어 개발 워크플로우를 자동화 할 수 있는 도구이다. 간단하게 GitHub에서 직접 제공하는 CI/CD도구라고 할 수 있다. 워크플로우는 GitHub 저장소에서 발생하는 build, test, package, release, deploy 등 다양한 이벤트를 기반으로 직접 원하는 워크플로우를 만들 수 있다. 워크 플로우는 Runner라고 불리는 GitHub에서 호스팅 하는 Linux, macOs, Windows환경에서 실행된다. 그리고 이 Runners를 사용자가 직접 호스팅하는 환경에서 직접 구동시킬 수도 있다. 그것을 self-hosted runner라고 한다. 여러 사람이 공유한 워크플로우는 Gi..

컨테이너란? 컨테이너란 호스트 OS상에 논리적인 구획을 만들고, 어플리케이션을 작동시키기 위해 필요한 라이브러리나 어플리케이션 등을 하나로 모아, 마치 별도의 서버인 것처럼 사용할 수 있게 만든 것이다. 호스트 OS의 리소스를 논리적으로 분리시키고, 여러 개의 컨테이너가 공유하여 사용한다. 컨테이너는 오버헤드가 적기 때문에 가볍고 고속으로 작동하는 것이 특징이다. Docker 개요 Docker를 사용하면 컨테이너를 매우 가벼운 모듈식 가상머신처럼 다룰 수 있다. 또한 컨테이너를 구축, 배포, 복사하고 한 환경에서 다른 환경으로 이동하는 등 유연하게 사용할 수 있어, 애플리케이션을 클라우드에 최적화하도록 지원한다. Docker의 작동 Docker를 포함한 컨테이너 툴은 이미지 기반 배포 모델을 제공하므로 ..

문맥교환 문맥교환이 필요한 이유 하나의 Task만 처리한다면 다음 Task는 끝날 때까지 기다려야한다. 빠른 속도로 Task를 바꿔가며 실행해 사람에게는 실시간처럼 보이게 된다. 문맥교환이란? 현재 진행중인 Task(Process, Thread)의 상태를 저장하고 다음 진행할 task의 상태값을 읽어와 실행하는 것. 동작 중인 프로세스가 대기를 하면서 해당 프로세스의 상태(Context)를 보관하고, 대기하고 있던 다음 순서의 프로세스가 동작하면서 이전에 보관했던 프로세스의 상태를 복구하는 작업을 말한다. PCB(Process Control Block) 구조 process state : 프로세스 상태 process counter : 다음 실행할 명령어 주소 값 CPU registers 문맥교환 절차 인터..

Text 텍스트 영역은 아주 쉽게 말하면 코드를 실행하기 위해 저장되어있는 영역이다. 흔히 코드 영역이라고도 하는데, 프로그램을 실행시키기 위해 구성되는 것들이 저장되는 영역이다. 명령문들이 저장되는 것인데, 제어문, 함수, 상수들이 이 영역에 저장된다. Data 데이터 영역은 작성한 코드에서 전역변수, 정적변수 등이 저장되는 공간이다. 이들의 특징을 보면 보통 메인함수 전에 선언되어 프로그램이 끝날 때 까지 메모리에 남아있는 변수들이라는 특징이 있다. Data영역은 크게 두 가지로 나뉜다 초기화 된 변수 영역(initialized dadta segment) 초기화되지 않은 변수 영역(uninitialized data segent) 초기화되지 않은 변수 영역은 BBS(Block Started by Sym..